@covalent/highlight 6.3.0 → 7.0.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/esm2022/lib/copy-code-button/copy-code-button.component.mjs +94 -0
- package/esm2022/lib/highlight.component.mjs +222 -0
- package/{esm2020 → esm2022}/lib/highlight.module.mjs +17 -17
- package/{fesm2020 → fesm2022}/covalent-highlight.mjs +79 -67
- package/{fesm2020 → fesm2022}/covalent-highlight.mjs.map +1 -1
- package/lib/copy-code-button/copy-code-button.component.d.ts +1 -1
- package/lib/highlight.component.d.ts +1 -1
- package/package.json +10 -16
- package/esm2020/lib/copy-code-button/copy-code-button.component.mjs +0 -91
- package/esm2020/lib/highlight.component.mjs +0 -213
- package/fesm2015/covalent-highlight.mjs +0 -345
- package/fesm2015/covalent-highlight.mjs.map +0 -1
- /package/{esm2020 → esm2022}/covalent-highlight.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { Component, Input, ViewChild, HostListener, EventEmitter, Output, } from '@angular/core';
|
|
2
|
+
import { MatButtonToggle } from '@angular/material/button-toggle';
|
|
3
|
+
import { MatTooltip } from '@angular/material/tooltip';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "@angular/cdk/clipboard";
|
|
7
|
+
import * as i3 from "@angular/material/icon";
|
|
8
|
+
import * as i4 from "@angular/material/button-toggle";
|
|
9
|
+
import * as i5 from "@angular/material/button";
|
|
10
|
+
import * as i6 from "@angular/material/tooltip";
|
|
11
|
+
export class TdCopyCodeButtonComponent {
|
|
12
|
+
// private _copyCodeTooltips: ICopyCodeTooltips = {};
|
|
13
|
+
copiedContent;
|
|
14
|
+
copyCodeToClipboard = false;
|
|
15
|
+
/**
|
|
16
|
+
* copyCodeTooltips?: ICopyCodeTooltips
|
|
17
|
+
*
|
|
18
|
+
* Tooltips for copy button to copy and upon copying.
|
|
19
|
+
*/
|
|
20
|
+
copyCodeTooltips = {};
|
|
21
|
+
toggleRawButton = false;
|
|
22
|
+
rawToggleLabels = {};
|
|
23
|
+
rawToggle = false;
|
|
24
|
+
toggleRaw = new EventEmitter();
|
|
25
|
+
copyButton;
|
|
26
|
+
rawButton;
|
|
27
|
+
get copyTooltip() {
|
|
28
|
+
return (this.copyCodeTooltips && this.copyCodeTooltips.copy) || 'Copy';
|
|
29
|
+
}
|
|
30
|
+
get copiedTooltip() {
|
|
31
|
+
return (this.copyCodeTooltips && this.copyCodeTooltips.copied) || 'Copied';
|
|
32
|
+
}
|
|
33
|
+
get rawToggleText() {
|
|
34
|
+
if (this.rawToggle) {
|
|
35
|
+
return this.rawToggleLabels?.viewCode || 'View code';
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
return this.rawToggleLabels?.viewRaw || 'Raw';
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
tooltip;
|
|
42
|
+
textCopied(event) {
|
|
43
|
+
if (event) {
|
|
44
|
+
this.tooltip.hide();
|
|
45
|
+
this.tooltip.message = this.copiedTooltip;
|
|
46
|
+
this.tooltip.show();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
initializeTooltip() {
|
|
50
|
+
setTimeout(() => {
|
|
51
|
+
this.tooltip.message = this.copyTooltip;
|
|
52
|
+
}, 200);
|
|
53
|
+
}
|
|
54
|
+
toggleRawClicked() {
|
|
55
|
+
this.rawToggle = !this.rawToggle;
|
|
56
|
+
this.toggleRaw.emit();
|
|
57
|
+
this.rawButton.checked = false;
|
|
58
|
+
}
|
|
59
|
+
copyClicked() {
|
|
60
|
+
console.log('copyClicked');
|
|
61
|
+
this.copyButton.checked = false;
|
|
62
|
+
}
|
|
63
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TdCopyCodeButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
64
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TdCopyCodeButtonComponent, selector: "td-copy-code-button", inputs: { copiedContent: "copiedContent", copyCodeToClipboard: "copyCodeToClipboard", copyCodeTooltips: "copyCodeTooltips", toggleRawButton: "toggleRawButton", rawToggleLabels: "rawToggleLabels" }, outputs: { toggleRaw: "toggleRaw" }, host: { listeners: { "mouseleave": "initializeTooltip()" } }, viewQueries: [{ propertyName: "copyButton", first: true, predicate: ["copyButton"], descendants: true }, { propertyName: "rawButton", first: true, predicate: ["rawButton"], descendants: true }, { propertyName: "tooltip", first: true, predicate: ["tooltip"], descendants: true }], ngImport: i0, template: "<mat-button-toggle-group\n multiple\n class=\"raw-and-copy-buttons\"\n *ngIf=\"toggleRawButton; else button\"\n>\n <mat-button-toggle (click)=\"toggleRawClicked()\" #rawButton>{{\n rawToggleText\n }}</mat-button-toggle>\n <mat-button-toggle\n [cdkCopyToClipboard]=\"copiedContent\"\n [matTooltip]=\"copyTooltip\"\n #tooltip=\"matTooltip\"\n #copyButton\n (click)=\"copyClicked()\"\n (cdkCopyToClipboardCopied)=\"textCopied($event)\"\n >\n <mat-icon width>content_copy</mat-icon>\n </mat-button-toggle>\n</mat-button-toggle-group>\n\n<ng-template #button>\n <button\n mat-icon-button\n [cdkCopyToClipboard]=\"copiedContent\"\n class=\"copy-button\"\n [matTooltip]=\"copyTooltip\"\n #tooltip=\"matTooltip\"\n (cdkCopyToClipboardCopied)=\"textCopied($event)\"\n >\n <mat-icon role=\"img\">content_copy</mat-icon>\n </button>\n</ng-template>\n", styles: ["mat-button-toggle-group.raw-and-copy-buttons{margin-top:-8px;margin-right:-8px;margin-left:8px}mat-button-toggle-group.raw-and-copy-buttons ::ng-deep .mat-button-toggle-label-content{font-size:12px;line-height:28px}mat-button-toggle-group.raw-and-copy-buttons ::ng-deep .mat-button-toggle-label-content mat-icon{width:16px;height:16px;font-size:16px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.CdkCopyToClipboard, selector: "[cdkCopyToClipboard]", inputs: ["cdkCopyToClipboard", "cdkCopyToClipboardAttempts"], outputs: ["cdkCopyToClipboardCopied"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i4.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
|
|
65
|
+
}
|
|
66
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TdCopyCodeButtonComponent, decorators: [{
|
|
67
|
+
type: Component,
|
|
68
|
+
args: [{ selector: 'td-copy-code-button', template: "<mat-button-toggle-group\n multiple\n class=\"raw-and-copy-buttons\"\n *ngIf=\"toggleRawButton; else button\"\n>\n <mat-button-toggle (click)=\"toggleRawClicked()\" #rawButton>{{\n rawToggleText\n }}</mat-button-toggle>\n <mat-button-toggle\n [cdkCopyToClipboard]=\"copiedContent\"\n [matTooltip]=\"copyTooltip\"\n #tooltip=\"matTooltip\"\n #copyButton\n (click)=\"copyClicked()\"\n (cdkCopyToClipboardCopied)=\"textCopied($event)\"\n >\n <mat-icon width>content_copy</mat-icon>\n </mat-button-toggle>\n</mat-button-toggle-group>\n\n<ng-template #button>\n <button\n mat-icon-button\n [cdkCopyToClipboard]=\"copiedContent\"\n class=\"copy-button\"\n [matTooltip]=\"copyTooltip\"\n #tooltip=\"matTooltip\"\n (cdkCopyToClipboardCopied)=\"textCopied($event)\"\n >\n <mat-icon role=\"img\">content_copy</mat-icon>\n </button>\n</ng-template>\n", styles: ["mat-button-toggle-group.raw-and-copy-buttons{margin-top:-8px;margin-right:-8px;margin-left:8px}mat-button-toggle-group.raw-and-copy-buttons ::ng-deep .mat-button-toggle-label-content{font-size:12px;line-height:28px}mat-button-toggle-group.raw-and-copy-buttons ::ng-deep .mat-button-toggle-label-content mat-icon{width:16px;height:16px;font-size:16px}\n"] }]
|
|
69
|
+
}], propDecorators: { copiedContent: [{
|
|
70
|
+
type: Input
|
|
71
|
+
}], copyCodeToClipboard: [{
|
|
72
|
+
type: Input
|
|
73
|
+
}], copyCodeTooltips: [{
|
|
74
|
+
type: Input
|
|
75
|
+
}], toggleRawButton: [{
|
|
76
|
+
type: Input
|
|
77
|
+
}], rawToggleLabels: [{
|
|
78
|
+
type: Input
|
|
79
|
+
}], toggleRaw: [{
|
|
80
|
+
type: Output
|
|
81
|
+
}], copyButton: [{
|
|
82
|
+
type: ViewChild,
|
|
83
|
+
args: ['copyButton']
|
|
84
|
+
}], rawButton: [{
|
|
85
|
+
type: ViewChild,
|
|
86
|
+
args: ['rawButton']
|
|
87
|
+
}], tooltip: [{
|
|
88
|
+
type: ViewChild,
|
|
89
|
+
args: ['tooltip']
|
|
90
|
+
}], initializeTooltip: [{
|
|
91
|
+
type: HostListener,
|
|
92
|
+
args: ['mouseleave']
|
|
93
|
+
}] } });
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29weS1jb2RlLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItaGlnaGxpZ2h0L3NyYy9saWIvY29weS1jb2RlLWJ1dHRvbi9jb3B5LWNvZGUtYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1oaWdobGlnaHQvc3JjL2xpYi9jb3B5LWNvZGUtYnV0dG9uL2NvcHktY29kZS1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7O0FBaUJ2RCxNQUFNLE9BQU8seUJBQXlCO0lBQ3BDLHFEQUFxRDtJQUM1QyxhQUFhLENBQVU7SUFDdkIsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQ3JDOzs7O09BSUc7SUFDTSxnQkFBZ0IsR0FBdUIsRUFBRSxDQUFDO0lBRTFDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDeEIsZUFBZSxHQUFzQixFQUFFLENBQUM7SUFFakQsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUVSLFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBRXpCLFVBQVUsQ0FBbUI7SUFDOUIsU0FBUyxDQUFtQjtJQUVwRCxJQUFJLFdBQVc7UUFDYixPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUM7SUFDekUsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLFFBQVEsQ0FBQztJQUM3RSxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxRQUFRLElBQUksV0FBVyxDQUFDO1NBQ3REO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsT0FBTyxJQUFJLEtBQUssQ0FBQztTQUMvQztJQUNILENBQUM7SUFFcUIsT0FBTyxDQUFjO0lBRTNDLFVBQVUsQ0FBQyxLQUFjO1FBQ3ZCLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDMUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDbEMsQ0FBQzt1R0E5RFUseUJBQXlCOzJGQUF6Qix5QkFBeUIsNG5CQzFCdEMsaTRCQWdDQTs7MkZETmEseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLHFCQUFxQjs4QkFNdEIsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBTUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFJSSxTQUFTO3NCQUFsQixNQUFNO2dCQUVrQixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQ0MsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQWtCQSxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBVXBCLGlCQUFpQjtzQkFEaEIsWUFBWTt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgVmlld0NoaWxkLFxuICBIb3N0TGlzdGVuZXIsXG4gIEV2ZW50RW1pdHRlcixcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvblRvZ2dsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDb3B5Q29kZVRvb2x0aXBzIHtcbiAgY29weT86IHN0cmluZztcbiAgY29waWVkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElSYXdUb2dnbGVMYWJlbHMge1xuICB2aWV3UmF3Pzogc3RyaW5nO1xuICB2aWV3Q29kZT86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGQtY29weS1jb2RlLWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3B5LWNvZGUtYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29weS1jb2RlLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBUZENvcHlDb2RlQnV0dG9uQ29tcG9uZW50IHtcbiAgLy8gcHJpdmF0ZSBfY29weUNvZGVUb29sdGlwczogSUNvcHlDb2RlVG9vbHRpcHMgPSB7fTtcbiAgQElucHV0KCkgY29waWVkQ29udGVudCE6IHN0cmluZztcbiAgQElucHV0KCkgY29weUNvZGVUb0NsaXBib2FyZCA9IGZhbHNlO1xuICAvKipcbiAgICogY29weUNvZGVUb29sdGlwcz86IElDb3B5Q29kZVRvb2x0aXBzXG4gICAqXG4gICAqIFRvb2x0aXBzIGZvciBjb3B5IGJ1dHRvbiB0byBjb3B5IGFuZCB1cG9uIGNvcHlpbmcuXG4gICAqL1xuICBASW5wdXQoKSBjb3B5Q29kZVRvb2x0aXBzPzogSUNvcHlDb2RlVG9vbHRpcHMgPSB7fTtcblxuICBASW5wdXQoKSB0b2dnbGVSYXdCdXR0b24gPSBmYWxzZTtcbiAgQElucHV0KCkgcmF3VG9nZ2xlTGFiZWxzPzogSVJhd1RvZ2dsZUxhYmVscyA9IHt9O1xuXG4gIHJhd1RvZ2dsZSA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSB0b2dnbGVSYXcgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQFZpZXdDaGlsZCgnY29weUJ1dHRvbicpIGNvcHlCdXR0b24hOiBNYXRCdXR0b25Ub2dnbGU7XG4gIEBWaWV3Q2hpbGQoJ3Jhd0J1dHRvbicpIHJhd0J1dHRvbiE6IE1hdEJ1dHRvblRvZ2dsZTtcblxuICBnZXQgY29weVRvb2x0aXAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRoaXMuY29weUNvZGVUb29sdGlwcyAmJiB0aGlzLmNvcHlDb2RlVG9vbHRpcHMuY29weSkgfHwgJ0NvcHknO1xuICB9XG5cbiAgZ2V0IGNvcGllZFRvb2x0aXAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRoaXMuY29weUNvZGVUb29sdGlwcyAmJiB0aGlzLmNvcHlDb2RlVG9vbHRpcHMuY29waWVkKSB8fCAnQ29waWVkJztcbiAgfVxuXG4gIGdldCByYXdUb2dnbGVUZXh0KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucmF3VG9nZ2xlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yYXdUb2dnbGVMYWJlbHM/LnZpZXdDb2RlIHx8ICdWaWV3IGNvZGUnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5yYXdUb2dnbGVMYWJlbHM/LnZpZXdSYXcgfHwgJ1Jhdyc7XG4gICAgfVxuICB9XG5cbiAgQFZpZXdDaGlsZCgndG9vbHRpcCcpIHRvb2x0aXAhOiBNYXRUb29sdGlwO1xuXG4gIHRleHRDb3BpZWQoZXZlbnQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIHRoaXMudG9vbHRpcC5oaWRlKCk7XG4gICAgICB0aGlzLnRvb2x0aXAubWVzc2FnZSA9IHRoaXMuY29waWVkVG9vbHRpcDtcbiAgICAgIHRoaXMudG9vbHRpcC5zaG93KCk7XG4gICAgfVxuICB9XG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxuICBpbml0aWFsaXplVG9vbHRpcCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMudG9vbHRpcC5tZXNzYWdlID0gdGhpcy5jb3B5VG9vbHRpcDtcbiAgICB9LCAyMDApO1xuICB9XG5cbiAgdG9nZ2xlUmF3Q2xpY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLnJhd1RvZ2dsZSA9ICF0aGlzLnJhd1RvZ2dsZTtcbiAgICB0aGlzLnRvZ2dsZVJhdy5lbWl0KCk7XG4gICAgdGhpcy5yYXdCdXR0b24uY2hlY2tlZCA9IGZhbHNlO1xuICB9XG5cbiAgY29weUNsaWNrZWQoKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ2NvcHlDbGlja2VkJyk7XG4gICAgdGhpcy5jb3B5QnV0dG9uLmNoZWNrZWQgPSBmYWxzZTtcbiAgfVxufVxuIiwiPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwXG4gIG11bHRpcGxlXG4gIGNsYXNzPVwicmF3LWFuZC1jb3B5LWJ1dHRvbnNcIlxuICAqbmdJZj1cInRvZ2dsZVJhd0J1dHRvbjsgZWxzZSBidXR0b25cIlxuPlxuICA8bWF0LWJ1dHRvbi10b2dnbGUgKGNsaWNrKT1cInRvZ2dsZVJhd0NsaWNrZWQoKVwiICNyYXdCdXR0b24+e3tcbiAgICByYXdUb2dnbGVUZXh0XG4gIH19PC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgPG1hdC1idXR0b24tdG9nZ2xlXG4gICAgW2Nka0NvcHlUb0NsaXBib2FyZF09XCJjb3BpZWRDb250ZW50XCJcbiAgICBbbWF0VG9vbHRpcF09XCJjb3B5VG9vbHRpcFwiXG4gICAgI3Rvb2x0aXA9XCJtYXRUb29sdGlwXCJcbiAgICAjY29weUJ1dHRvblxuICAgIChjbGljayk9XCJjb3B5Q2xpY2tlZCgpXCJcbiAgICAoY2RrQ29weVRvQ2xpcGJvYXJkQ29waWVkKT1cInRleHRDb3BpZWQoJGV2ZW50KVwiXG4gID5cbiAgICA8bWF0LWljb24gd2lkdGg+Y29udGVudF9jb3B5PC9tYXQtaWNvbj5cbiAgPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbjwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG5cbjxuZy10ZW1wbGF0ZSAjYnV0dG9uPlxuICA8YnV0dG9uXG4gICAgbWF0LWljb24tYnV0dG9uXG4gICAgW2Nka0NvcHlUb0NsaXBib2FyZF09XCJjb3BpZWRDb250ZW50XCJcbiAgICBjbGFzcz1cImNvcHktYnV0dG9uXCJcbiAgICBbbWF0VG9vbHRpcF09XCJjb3B5VG9vbHRpcFwiXG4gICAgI3Rvb2x0aXA9XCJtYXRUb29sdGlwXCJcbiAgICAoY2RrQ29weVRvQ2xpcGJvYXJkQ29waWVkKT1cInRleHRDb3BpZWQoJGV2ZW50KVwiXG4gID5cbiAgICA8bWF0LWljb24gcm9sZT1cImltZ1wiPmNvbnRlbnRfY29weTwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import { Component, ElementRef, Input, Output, EventEmitter, Renderer2, SecurityContext, ViewChild, ChangeDetectorRef, } from '@angular/core';
|
|
2
|
+
import { DomSanitizer } from '@angular/platform-browser';
|
|
3
|
+
import { MatTooltip } from '@angular/material/tooltip';
|
|
4
|
+
import hljs from 'highlight.js';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/platform-browser";
|
|
7
|
+
import * as i2 from "@angular/common";
|
|
8
|
+
import * as i3 from "./copy-code-button/copy-code-button.component";
|
|
9
|
+
export class TdHighlightComponent {
|
|
10
|
+
_renderer;
|
|
11
|
+
_elementRef;
|
|
12
|
+
_domSanitizer;
|
|
13
|
+
cdr;
|
|
14
|
+
_initialized = false;
|
|
15
|
+
_content;
|
|
16
|
+
_lang = 'typescript';
|
|
17
|
+
_showRaw = false;
|
|
18
|
+
/**
|
|
19
|
+
* content?: string
|
|
20
|
+
*
|
|
21
|
+
* Code content to be parsed as highlighted html.
|
|
22
|
+
* Used to load data dynamically.
|
|
23
|
+
*
|
|
24
|
+
* e.g. `.html`, `.ts` , etc.
|
|
25
|
+
*/
|
|
26
|
+
set content(content) {
|
|
27
|
+
this._content = content;
|
|
28
|
+
console.log(this._content);
|
|
29
|
+
if (this._initialized) {
|
|
30
|
+
this._loadContent(this._content);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* copyCodeToClipboard?: boolean
|
|
35
|
+
*
|
|
36
|
+
* Display copy button on code snippets to copy code to clipboard.
|
|
37
|
+
*/
|
|
38
|
+
copyCodeToClipboard = false;
|
|
39
|
+
/**
|
|
40
|
+
* copyCodeTooltips?: ICopyCodeTooltips
|
|
41
|
+
*
|
|
42
|
+
* Tooltips for copy button to copy and upon copying.
|
|
43
|
+
*/
|
|
44
|
+
copyCodeTooltips = {};
|
|
45
|
+
/**
|
|
46
|
+
* toggleRawButton?: boolean
|
|
47
|
+
*
|
|
48
|
+
* Display button to toggle raw code.
|
|
49
|
+
*/
|
|
50
|
+
toggleRawButton = false;
|
|
51
|
+
/**
|
|
52
|
+
* rawToggleLabels?: IRawToggleLabels
|
|
53
|
+
*
|
|
54
|
+
* Labels for raw toggle button.
|
|
55
|
+
*/
|
|
56
|
+
rawToggleLabels = {};
|
|
57
|
+
/**
|
|
58
|
+
* lang?: string
|
|
59
|
+
*
|
|
60
|
+
* Language of the code content to be parsed as highlighted html.
|
|
61
|
+
* Defaults to `typescript`
|
|
62
|
+
*
|
|
63
|
+
* e.g. `typescript`, `html` , etc.
|
|
64
|
+
*/
|
|
65
|
+
set codeLang(lang) {
|
|
66
|
+
this.setLanguage(lang);
|
|
67
|
+
}
|
|
68
|
+
/** @deprecated - removed completely @4.0.0 */
|
|
69
|
+
set lang(lang) {
|
|
70
|
+
// tslint:disable-next-line: no-console
|
|
71
|
+
console.warn('DEPRECATION WARNING: switch to codeLang attribute as lang attribute is deprecated.');
|
|
72
|
+
this.setLanguage(lang);
|
|
73
|
+
}
|
|
74
|
+
copyContent;
|
|
75
|
+
/**
|
|
76
|
+
* contentReady?: function
|
|
77
|
+
* Event emitted after the highlight content rendering is finished.
|
|
78
|
+
*/
|
|
79
|
+
contentReady = new EventEmitter();
|
|
80
|
+
highlightComp;
|
|
81
|
+
copyComp;
|
|
82
|
+
tooltip;
|
|
83
|
+
constructor(_renderer, _elementRef, _domSanitizer, cdr) {
|
|
84
|
+
this._renderer = _renderer;
|
|
85
|
+
this._elementRef = _elementRef;
|
|
86
|
+
this._domSanitizer = _domSanitizer;
|
|
87
|
+
this.cdr = cdr;
|
|
88
|
+
}
|
|
89
|
+
ngAfterViewChecked() {
|
|
90
|
+
this.cdr.detectChanges();
|
|
91
|
+
}
|
|
92
|
+
ngAfterViewInit() {
|
|
93
|
+
if (!this._content) {
|
|
94
|
+
this._content =
|
|
95
|
+
this.highlightComp.nativeElement.textContent || '';
|
|
96
|
+
}
|
|
97
|
+
this._loadContent(this._content);
|
|
98
|
+
this._initialized = true;
|
|
99
|
+
}
|
|
100
|
+
setLanguage(lang) {
|
|
101
|
+
if (!lang) {
|
|
102
|
+
throw new Error('Error: language attribute must be defined in TdHighlightComponent.');
|
|
103
|
+
}
|
|
104
|
+
this._lang = lang;
|
|
105
|
+
if (this._initialized) {
|
|
106
|
+
this._loadContent(this._content);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
toggleRawClicked() {
|
|
110
|
+
this._showRaw = !this._showRaw;
|
|
111
|
+
this._elementRef.nativeElement.querySelector('pre').style.display = this
|
|
112
|
+
._showRaw
|
|
113
|
+
? 'none'
|
|
114
|
+
: 'block';
|
|
115
|
+
this._elementRef.nativeElement.querySelector('.raw').style.display = this
|
|
116
|
+
._showRaw
|
|
117
|
+
? 'block'
|
|
118
|
+
: 'none';
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* General method to parse a string of code into HTML Elements and load them into the container
|
|
122
|
+
*/
|
|
123
|
+
_loadContent(code) {
|
|
124
|
+
if (code && code.trim().length > 0) {
|
|
125
|
+
// Clean container
|
|
126
|
+
this._renderer.setProperty(this._elementRef.nativeElement, 'innerHTML', '');
|
|
127
|
+
this._elementFromString(code);
|
|
128
|
+
if (this.copyCodeToClipboard) {
|
|
129
|
+
this._renderer.appendChild(this._elementRef.nativeElement, this.copyComp.nativeElement);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
this.contentReady.emit();
|
|
133
|
+
}
|
|
134
|
+
_elementFromString(codeStr) {
|
|
135
|
+
// Renderer2 doesnt have a parsing method, so we have to sanitize and use [innerHTML]
|
|
136
|
+
// to parse the string into DOM element for now.
|
|
137
|
+
const preElement = this._renderer.createElement('pre');
|
|
138
|
+
this._renderer.appendChild(this._elementRef.nativeElement, preElement);
|
|
139
|
+
const codeElement = this._renderer.createElement('code');
|
|
140
|
+
this._renderer.appendChild(preElement, codeElement);
|
|
141
|
+
// Set .highlight class into <code> element
|
|
142
|
+
this._renderer.addClass(codeElement, 'highlight');
|
|
143
|
+
const highlightedCode = this._render(codeStr);
|
|
144
|
+
codeElement.innerHTML =
|
|
145
|
+
this._domSanitizer.sanitize(SecurityContext.HTML, highlightedCode) ?? '';
|
|
146
|
+
if (this.toggleRawButton) {
|
|
147
|
+
const divElement = this._renderer.createElement('div');
|
|
148
|
+
divElement.className = 'raw';
|
|
149
|
+
this._renderer.appendChild(this._elementRef.nativeElement, divElement);
|
|
150
|
+
divElement.innerHTML =
|
|
151
|
+
this._domSanitizer.sanitize(SecurityContext.HTML, codeStr) ?? '';
|
|
152
|
+
this._renderer.setStyle(divElement, 'display', 'none');
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
_render(contents) {
|
|
156
|
+
// Trim leading and trailing newlines
|
|
157
|
+
contents = contents
|
|
158
|
+
.replace(/^(\s|\t)*\n+/g, '')
|
|
159
|
+
.replace(/(\s|\t)*\n+(\s|\t)*$/g, '');
|
|
160
|
+
// Split markup by line characters
|
|
161
|
+
let lines = contents.split('\n');
|
|
162
|
+
// check how much indentation is used by the first actual code line
|
|
163
|
+
const firstLineWhitespaceMatch = lines[0].match(/^(\s|\t)*/);
|
|
164
|
+
const firstLineWhitespace = firstLineWhitespaceMatch
|
|
165
|
+
? firstLineWhitespaceMatch[0]
|
|
166
|
+
: null;
|
|
167
|
+
// Remove all indentation spaces so code can be parsed correctly
|
|
168
|
+
const startingWhitespaceRegex = new RegExp('^' + firstLineWhitespace);
|
|
169
|
+
lines = lines.map(function (line) {
|
|
170
|
+
return line
|
|
171
|
+
.replace('=""', '') // remove empty values
|
|
172
|
+
.replace(startingWhitespaceRegex, '')
|
|
173
|
+
.replace(/\s+$/, ''); // remove trailing white spaces
|
|
174
|
+
});
|
|
175
|
+
const codeToParse = lines
|
|
176
|
+
.join('\n')
|
|
177
|
+
.replace(/\{ \{/gi, '{{')
|
|
178
|
+
.replace(/\} \}/gi, '}}')
|
|
179
|
+
.replace(/</gi, '<')
|
|
180
|
+
.replace(/>/gi, '>'); // replace with < and > to render HTML in Angular
|
|
181
|
+
this.copyContent = codeToParse;
|
|
182
|
+
// Parse code with highlight.js depending on language
|
|
183
|
+
const highlightedCode = hljs.highlight(this._lang, codeToParse, true);
|
|
184
|
+
highlightedCode.value = highlightedCode.value
|
|
185
|
+
.replace(/=<span class="hljs-value">""<\/span>/gi, '')
|
|
186
|
+
.replace('<head>', '')
|
|
187
|
+
.replace('<head/>', '');
|
|
188
|
+
return highlightedCode.value;
|
|
189
|
+
}
|
|
190
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TdHighlightComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.DomSanitizer }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
191
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TdHighlightComponent, selector: "td-highlight", inputs: { content: "content", copyCodeToClipboard: "copyCodeToClipboard", copyCodeTooltips: "copyCodeTooltips", toggleRawButton: "toggleRawButton", rawToggleLabels: "rawToggleLabels", codeLang: "codeLang", lang: "lang" }, outputs: { contentReady: "contentReady" }, viewQueries: [{ propertyName: "highlightComp", first: true, predicate: ["highlightComponent"], descendants: true }, { propertyName: "copyComp", first: true, predicate: ["copyComponent"], descendants: true }, { propertyName: "tooltip", first: true, predicate: ["tooltip"], descendants: true }], ngImport: i0, template: "<div>\n <div #highlightComponent>\n <ng-content></ng-content>\n </div>\n\n <div #copyComponent *ngIf=\"copyCodeToClipboard\">\n <td-copy-code-button\n [toggleRawButton]=\"toggleRawButton\"\n [rawToggleLabels]=\"rawToggleLabels\"\n (toggleRaw)=\"toggleRawClicked()\"\n [copiedContent]=\"copyContent\"\n [copyCodeToClipboard]=\"copyCodeToClipboard\"\n [copyCodeTooltips]=\"copyCodeTooltips\"\n ></td-copy-code-button>\n </div>\n</div>\n", styles: [":host ::ng-deep{overflow-x:auto;padding:16px;display:flex;position:relative}:host ::ng-deep pre,:host ::ng-deep code,:host ::ng-deep .highlight{font-family:Menlo,Monaco,Andale Mono,lucida console,Courier New,monospace}:host ::ng-deep pre{display:block;overflow-x:auto;padding:0;margin:0;background:transparent;font-family:Menlo,Monaco,Andale Mono,lucida console,Courier New,monospace;line-height:1.45;tab-size:2;-webkit-font-smoothing:auto;-webkit-text-size-adjust:none;text-size-adjust:none;position:relative;border-radius:2px;font-size:.8rem;width:100%}:host ::ng-deep code{margin:0;padding:0;overflow-wrap:break-word;white-space:pre-wrap}:host ::ng-deep div.raw{flex-grow:1}:host ::ng-deep .highlight{display:block;overflow-wrap:break-word;line-height:1.5;margin:0}:host ::ng-deep .copy-button{border:none;background:inherit;margin-top:-8px;margin-right:-8px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.TdCopyCodeButtonComponent, selector: "td-copy-code-button", inputs: ["copiedContent", "copyCodeToClipboard", "copyCodeTooltips", "toggleRawButton", "rawToggleLabels"], outputs: ["toggleRaw"] }] });
|
|
192
|
+
}
|
|
193
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TdHighlightComponent, decorators: [{
|
|
194
|
+
type: Component,
|
|
195
|
+
args: [{ selector: 'td-highlight', template: "<div>\n <div #highlightComponent>\n <ng-content></ng-content>\n </div>\n\n <div #copyComponent *ngIf=\"copyCodeToClipboard\">\n <td-copy-code-button\n [toggleRawButton]=\"toggleRawButton\"\n [rawToggleLabels]=\"rawToggleLabels\"\n (toggleRaw)=\"toggleRawClicked()\"\n [copiedContent]=\"copyContent\"\n [copyCodeToClipboard]=\"copyCodeToClipboard\"\n [copyCodeTooltips]=\"copyCodeTooltips\"\n ></td-copy-code-button>\n </div>\n</div>\n", styles: [":host ::ng-deep{overflow-x:auto;padding:16px;display:flex;position:relative}:host ::ng-deep pre,:host ::ng-deep code,:host ::ng-deep .highlight{font-family:Menlo,Monaco,Andale Mono,lucida console,Courier New,monospace}:host ::ng-deep pre{display:block;overflow-x:auto;padding:0;margin:0;background:transparent;font-family:Menlo,Monaco,Andale Mono,lucida console,Courier New,monospace;line-height:1.45;tab-size:2;-webkit-font-smoothing:auto;-webkit-text-size-adjust:none;text-size-adjust:none;position:relative;border-radius:2px;font-size:.8rem;width:100%}:host ::ng-deep code{margin:0;padding:0;overflow-wrap:break-word;white-space:pre-wrap}:host ::ng-deep div.raw{flex-grow:1}:host ::ng-deep .highlight{display:block;overflow-wrap:break-word;line-height:1.5;margin:0}:host ::ng-deep .copy-button{border:none;background:inherit;margin-top:-8px;margin-right:-8px}\n"] }]
|
|
196
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.DomSanitizer }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { content: [{
|
|
197
|
+
type: Input
|
|
198
|
+
}], copyCodeToClipboard: [{
|
|
199
|
+
type: Input
|
|
200
|
+
}], copyCodeTooltips: [{
|
|
201
|
+
type: Input
|
|
202
|
+
}], toggleRawButton: [{
|
|
203
|
+
type: Input
|
|
204
|
+
}], rawToggleLabels: [{
|
|
205
|
+
type: Input
|
|
206
|
+
}], codeLang: [{
|
|
207
|
+
type: Input
|
|
208
|
+
}], lang: [{
|
|
209
|
+
type: Input
|
|
210
|
+
}], contentReady: [{
|
|
211
|
+
type: Output
|
|
212
|
+
}], highlightComp: [{
|
|
213
|
+
type: ViewChild,
|
|
214
|
+
args: ['highlightComponent']
|
|
215
|
+
}], copyComp: [{
|
|
216
|
+
type: ViewChild,
|
|
217
|
+
args: ['copyComponent']
|
|
218
|
+
}], tooltip: [{
|
|
219
|
+
type: ViewChild,
|
|
220
|
+
args: ['tooltip']
|
|
221
|
+
}] } });
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlnaGxpZ2h0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1oaWdobGlnaHQvc3JjL2xpYi9oaWdobGlnaHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWhpZ2hsaWdodC9zcmMvbGliL2hpZ2hsaWdodC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEVBQ1QsZUFBZSxFQUNmLFNBQVMsRUFDVCxpQkFBaUIsR0FFbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQU12RCxPQUFPLElBQUksTUFBTSxjQUFjLENBQUM7Ozs7O0FBT2hDLE1BQU0sT0FBTyxvQkFBb0I7SUF5RnJCO0lBQ0E7SUFDQTtJQUNBO0lBM0ZGLFlBQVksR0FBRyxLQUFLLENBQUM7SUFFckIsUUFBUSxDQUFVO0lBQ2xCLEtBQUssR0FBRyxZQUFZLENBQUM7SUFFckIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUV6Qjs7Ozs7OztPQU9HO0lBQ0gsSUFDSSxPQUFPLENBQUMsT0FBZTtRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNNLG1CQUFtQixHQUFJLEtBQUssQ0FBQztJQUV0Qzs7OztP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O3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEFmdGVyVmlld0luaXQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgUmVuZGVyZXIyLFxuICBTZWN1cml0eUNvbnRleHQsXG4gIFZpZXdDaGlsZCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEFmdGVyVmlld0NoZWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBNYXRUb29sdGlwIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQge1xuICBJQ29weUNvZGVUb29sdGlwcyxcbiAgSVJhd1RvZ2dsZUxhYmVscyxcbn0gZnJvbSAnLi9jb3B5LWNvZGUtYnV0dG9uL2NvcHktY29kZS1idXR0b24uY29tcG9uZW50JztcblxuaW1wb3J0IGhsanMgZnJvbSAnaGlnaGxpZ2h0LmpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGQtaGlnaGxpZ2h0JyxcbiAgc3R5bGVVcmxzOiBbJy4vaGlnaGxpZ2h0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9oaWdobGlnaHQuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBUZEhpZ2hsaWdodENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWQge1xuICBwcml2YXRlIF9pbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2NvbnRlbnQhOiBzdHJpbmc7XG4gIHByaXZhdGUgX2xhbmcgPSAndHlwZXNjcmlwdCc7XG5cbiAgcHJpdmF0ZSBfc2hvd1JhdyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBjb250ZW50Pzogc3RyaW5nXG4gICAqXG4gICAqIENvZGUgY29udGVudCB0byBiZSBwYXJzZWQgYXMgaGlnaGxpZ2h0ZWQgaHRtbC5cbiAgICogVXNlZCB0byBsb2FkIGRhdGEgZHluYW1pY2FsbHkuXG4gICAqXG4gICAqIGUuZy4gYC5odG1sYCwgYC50c2AgLCBldGMuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgY29udGVudChjb250ZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9jb250ZW50ID0gY29udGVudDtcbiAgICBjb25zb2xlLmxvZyh0aGlzLl9jb250ZW50KTtcbiAgICBpZiAodGhpcy5faW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuX2xvYWRDb250ZW50KHRoaXMuX2NvbnRlbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBjb3B5Q29kZVRvQ2xpcGJvYXJkPzogYm9vbGVhblxuICAgKlxuICAgKiBEaXNwbGF5IGNvcHkgYnV0dG9uIG9uIGNvZGUgc25pcHBldHMgdG8gY29weSBjb2RlIHRvIGNsaXBib2FyZC5cbiAgICovXG4gIEBJbnB1dCgpIGNvcHlDb2RlVG9DbGlwYm9hcmQ/ID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIGNvcHlDb2RlVG9vbHRpcHM/OiBJQ29weUNvZGVUb29sdGlwc1xuICAgKlxuICAgKiBUb29sdGlwcyBmb3IgY29weSBidXR0b24gdG8gY29weSBhbmQgdXBvbiBjb3B5aW5nLlxuICAgKi9cbiAgQElucHV0KCkgY29weUNvZGVUb29sdGlwcz86IElDb3B5Q29kZVRvb2x0aXBzID0ge307XG5cbiAgLyoqXG4gICAqIHRvZ2dsZVJhd0J1dHRvbj86IGJvb2xlYW5cbiAgICpcbiAgICogRGlzcGxheSBidXR0b24gdG8gdG9nZ2xlIHJhdyBjb2RlLlxuICAgKi9cbiAgQElucHV0KCkgdG9nZ2xlUmF3QnV0dG9uID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIHJhd1RvZ2dsZUxhYmVscz86IElSYXdUb2dnbGVMYWJlbHNcbiAgICpcbiAgICogTGFiZWxzIGZvciByYXcgdG9nZ2xlIGJ1dHRvbi5cbiAgICovXG4gIEBJbnB1dCgpIHJhd1RvZ2dsZUxhYmVscz86IElSYXdUb2dnbGVMYWJlbHMgPSB7fTtcblxuICAvKipcbiAgICogbGFuZz86IHN0cmluZ1xuICAgKlxuICAgKiBMYW5ndWFnZSBvZiB0aGUgY29kZSBjb250ZW50IHRvIGJlIHBhcnNlZCBhcyBoaWdobGlnaHRlZCBodG1sLlxuICAgKiBEZWZhdWx0cyB0byBgdHlwZXNjcmlwdGBcbiAgICpcbiAgICogZS5nLiBgdHlwZXNjcmlwdGAsIGBodG1sYCAsIGV0Yy5cbiAgICovXG5cbiAgQElucHV0KClcbiAgc2V0IGNvZGVMYW5nKGxhbmc6IHN0cmluZykge1xuICAgIHRoaXMuc2V0TGFuZ3VhZ2UobGFuZyk7XG4gIH1cbiAgLyoqIEBkZXByZWNhdGVkIC0gcmVtb3ZlZCBjb21wbGV0ZWx5IEA0LjAuMCAqL1xuICBASW5wdXQoKVxuICBzZXQgbGFuZyhsYW5nOiBzdHJpbmcpIHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICAnREVQUkVDQVRJT04gV0FSTklORzogc3dpdGNoIHRvIGNvZGVMYW5nIGF0dHJpYnV0ZSBhcyBsYW5nIGF0dHJpYnV0ZSBpcyBkZXByZWNhdGVkLidcbiAgICApO1xuICAgIHRoaXMuc2V0TGFuZ3VhZ2UobGFuZyk7XG4gIH1cblxuICBjb3B5Q29udGVudCE6IHN0cmluZztcblxuICAvKipcbiAgICogY29udGVudFJlYWR5PzogZnVuY3Rpb25cbiAgICogRXZlbnQgZW1pdHRlZCBhZnRlciB0aGUgaGlnaGxpZ2h0IGNvbnRlbnQgcmVuZGVyaW5nIGlzIGZpbmlzaGVkLlxuICAgKi9cbiAgQE91dHB1dCgpIGNvbnRlbnRSZWFkeTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAVmlld0NoaWxkKCdoaWdobGlnaHRDb21wb25lbnQnKSBoaWdobGlnaHRDb21wITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnY29weUNvbXBvbmVudCcpIGNvcHlDb21wITogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCd0b29sdGlwJykgdG9vbHRpcCE6IE1hdFRvb2x0aXA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgX2RvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHt9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2NvbnRlbnQpIHtcbiAgICAgIHRoaXMuX2NvbnRlbnQgPVxuICAgICAgICAoPEhUTUxFbGVtZW50PnRoaXMuaGlnaGxpZ2h0Q29tcC5uYXRpdmVFbGVtZW50KS50ZXh0Q29udGVudCB8fCAnJztcbiAgICB9XG4gICAgdGhpcy5fbG9hZENvbnRlbnQodGhpcy5fY29udGVudCk7XG5cbiAgICB0aGlzLl9pbml0aWFsaXplZCA9IHRydWU7XG4gIH1cblxuICBzZXRMYW5ndWFnZShsYW5nOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWxhbmcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0Vycm9yOiBsYW5ndWFnZSBhdHRyaWJ1dGUgbXVzdCBiZSBkZWZpbmVkIGluIFRkSGlnaGxpZ2h0Q29tcG9uZW50LidcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuX2xhbmcgPSBsYW5nO1xuICAgIGlmICh0aGlzLl9pbml0aWFsaXplZCkge1xuICAgICAgdGhpcy5fbG9hZENvbnRlbnQodGhpcy5fY29udGVudCk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlUmF3Q2xpY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zaG93UmF3ID0gIXRoaXMuX3Nob3dSYXc7XG4gICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3ByZScpLnN0eWxlLmRpc3BsYXkgPSB0aGlzXG4gICAgICAuX3Nob3dSYXdcbiAgICAgID8gJ25vbmUnXG4gICAgICA6ICdibG9jayc7XG4gICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5yYXcnKS5zdHlsZS5kaXNwbGF5ID0gdGhpc1xuICAgICAgLl9zaG93UmF3XG4gICAgICA/ICdibG9jaydcbiAgICAgIDogJ25vbmUnO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYWwgbWV0aG9kIHRvIHBhcnNlIGEgc3RyaW5nIG9mIGNvZGUgaW50byBIVE1MIEVsZW1lbnRzIGFuZCBsb2FkIHRoZW0gaW50byB0aGUgY29udGFpbmVyXG4gICAqL1xuICBwcml2YXRlIF9sb2FkQ29udGVudChjb2RlOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKGNvZGUgJiYgY29kZS50cmltKCkubGVuZ3RoID4gMCkge1xuICAgICAgLy8gQ2xlYW4gY29udGFpbmVyXG4gICAgICB0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eShcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnaW5uZXJIVE1MJyxcbiAgICAgICAgJydcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuX2VsZW1lbnRGcm9tU3RyaW5nKGNvZGUpO1xuXG4gICAgICBpZiAodGhpcy5jb3B5Q29kZVRvQ2xpcGJvYXJkKSB7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLmFwcGVuZENoaWxkKFxuICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICB0aGlzLmNvcHlDb21wLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jb250ZW50UmVhZHkuZW1pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZWxlbWVudEZyb21TdHJpbmcoY29kZVN0cjogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gUmVuZGVyZXIyIGRvZXNudCBoYXZlIGEgcGFyc2luZyBtZXRob2QsIHNvIHdlIGhhdmUgdG8gc2FuaXRpemUgYW5kIHVzZSBbaW5uZXJIVE1MXVxuICAgIC8vIHRvIHBhcnNlIHRoZSBzdHJpbmcgaW50byBET00gZWxlbWVudCBmb3Igbm93LlxuICAgIGNvbnN0IHByZUVsZW1lbnQ6IEhUTUxQcmVFbGVtZW50ID0gdGhpcy5fcmVuZGVyZXIuY3JlYXRlRWxlbWVudCgncHJlJyk7XG4gICAgdGhpcy5fcmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBwcmVFbGVtZW50KTtcbiAgICBjb25zdCBjb2RlRWxlbWVudDogSFRNTEVsZW1lbnQgPSB0aGlzLl9yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdjb2RlJyk7XG4gICAgdGhpcy5fcmVuZGVyZXIuYXBwZW5kQ2hpbGQocHJlRWxlbWVudCwgY29kZUVsZW1lbnQpO1xuICAgIC8vIFNldCAuaGlnaGxpZ2h0IGNsYXNzIGludG8gPGNvZGU+IGVsZW1lbnRcbiAgICB0aGlzLl9yZW5kZXJlci5hZGRDbGFzcyhjb2RlRWxlbWVudCwgJ2hpZ2hsaWdodCcpO1xuXG4gICAgY29uc3QgaGlnaGxpZ2h0ZWRDb2RlID0gdGhpcy5fcmVuZGVyKGNvZGVTdHIpO1xuXG4gICAgY29kZUVsZW1lbnQuaW5uZXJIVE1MID1cbiAgICAgIHRoaXMuX2RvbVNhbml0aXplci5zYW5pdGl6ZShTZWN1cml0eUNvbnRleHQuSFRNTCwgaGlnaGxpZ2h0ZWRDb2RlKSA/PyAnJztcblxuICAgIGlmICh0aGlzLnRvZ2dsZVJhd0J1dHRvbikge1xuICAgICAgY29uc3QgZGl2RWxlbWVudDogSFRNTERpdkVsZW1lbnQgPSB0aGlzLl9yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIGRpdkVsZW1lbnQuY2xhc3NOYW1lID0gJ3Jhdyc7XG4gICAgICB0aGlzLl9yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGRpdkVsZW1lbnQpO1xuICAgICAgZGl2RWxlbWVudC5pbm5lckhUTUwgPVxuICAgICAgICB0aGlzLl9kb21TYW5pdGl6ZXIuc2FuaXRpemUoU2VjdXJpdHlDb250ZXh0LkhUTUwsIGNvZGVTdHIpID8/ICcnO1xuICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUoZGl2RWxlbWVudCwgJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3JlbmRlcihjb250ZW50czogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBUcmltIGxlYWRpbmcgYW5kIHRyYWlsaW5nIG5ld2xpbmVzXG4gICAgY29udGVudHMgPSBjb250ZW50c1xuICAgICAgLnJlcGxhY2UoL14oXFxzfFxcdCkqXFxuKy9nLCAnJylcbiAgICAgIC5yZXBsYWNlKC8oXFxzfFxcdCkqXFxuKyhcXHN8XFx0KSokL2csICcnKTtcbiAgICAvLyBTcGxpdCBtYXJrdXAgYnkgbGluZSBjaGFyYWN0ZXJzXG4gICAgbGV0IGxpbmVzOiBzdHJpbmdbXSA9IGNvbnRlbnRzLnNwbGl0KCdcXG4nKTtcblxuICAgIC8vIGNoZWNrIGhvdyBtdWNoIGluZGVudGF0aW9uIGlzIHVzZWQgYnkgdGhlIGZpcnN0IGFjdHVhbCBjb2RlIGxpbmVcbiAgICBjb25zdCBmaXJzdExpbmVXaGl0ZXNwYWNlTWF0Y2ggPSBsaW5lc1swXS5tYXRjaCgvXihcXHN8XFx0KSovKTtcbiAgICBjb25zdCBmaXJzdExpbmVXaGl0ZXNwYWNlID0gZmlyc3RMaW5lV2hpdGVzcGFjZU1hdGNoXG4gICAgICA/IGZpcnN0TGluZVdoaXRlc3BhY2VNYXRjaFswXVxuICAgICAgOiBudWxsO1xuXG4gICAgLy8gUmVtb3ZlIGFsbCBpbmRlbnRhdGlvbiBzcGFjZXMgc28gY29kZSBjYW4gYmUgcGFyc2VkIGNvcnJlY3RseVxuICAgIGNvbnN0IHN0YXJ0aW5nV2hpdGVzcGFjZVJlZ2V4ID0gbmV3IFJlZ0V4cCgnXicgKyBmaXJzdExpbmVXaGl0ZXNwYWNlKTtcbiAgICBsaW5lcyA9IGxpbmVzLm1hcChmdW5jdGlvbiAobGluZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBsaW5lXG4gICAgICAgIC5yZXBsYWNlKCc9XCJcIicsICcnKSAvLyByZW1vdmUgZW1wdHkgdmFsdWVzXG4gICAgICAgIC5yZXBsYWNlKHN0YXJ0aW5nV2hpdGVzcGFjZVJlZ2V4LCAnJylcbiAgICAgICAgLnJlcGxhY2UoL1xccyskLywgJycpOyAvLyByZW1vdmUgdHJhaWxpbmcgd2hpdGUgc3BhY2VzXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb2RlVG9QYXJzZTogc3RyaW5nID0gbGluZXNcbiAgICAgIC5qb2luKCdcXG4nKVxuICAgICAgLnJlcGxhY2UoL1xceyBcXHsvZ2ksICd7eycpXG4gICAgICAucmVwbGFjZSgvXFx9IFxcfS9naSwgJ319JylcbiAgICAgIC5yZXBsYWNlKC8mbHQ7L2dpLCAnPCcpXG4gICAgICAucmVwbGFjZSgvJmd0Oy9naSwgJz4nKTsgLy8gcmVwbGFjZSB3aXRoIDwgYW5kID4gdG8gcmVuZGVyIEhUTUwgaW4gQW5ndWxhclxuICAgIHRoaXMuY29weUNvbnRlbnQgPSBjb2RlVG9QYXJzZTtcbiAgICAvLyBQYXJzZSBjb2RlIHdpdGggaGlnaGxpZ2h0LmpzIGRlcGVuZGluZyBvbiBsYW5ndWFnZVxuICAgIGNvbnN0IGhpZ2hsaWdodGVkQ29kZTogYW55ID0gaGxqcy5oaWdobGlnaHQodGhpcy5fbGFuZywgY29kZVRvUGFyc2UsIHRydWUpO1xuICAgIGhpZ2hsaWdodGVkQ29kZS52YWx1ZSA9IGhpZ2hsaWdodGVkQ29kZS52YWx1ZVxuICAgICAgLnJlcGxhY2UoLz08c3BhbiBjbGFzcz1cImhsanMtdmFsdWVcIj5cIlwiPFxcL3NwYW4+L2dpLCAnJylcbiAgICAgIC5yZXBsYWNlKCc8aGVhZD4nLCAnJylcbiAgICAgIC5yZXBsYWNlKCc8aGVhZC8+JywgJycpO1xuICAgIHJldHVybiBoaWdobGlnaHRlZENvZGUudmFsdWU7XG4gIH1cbn1cbiIsIjxkaXY+XG4gIDxkaXYgI2hpZ2hsaWdodENvbXBvbmVudD5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuXG4gIDxkaXYgI2NvcHlDb21wb25lbnQgKm5nSWY9XCJjb3B5Q29kZVRvQ2xpcGJvYXJkXCI+XG4gICAgPHRkLWNvcHktY29kZS1idXR0b25cbiAgICAgIFt0b2dnbGVSYXdCdXR0b25dPVwidG9nZ2xlUmF3QnV0dG9uXCJcbiAgICAgIFtyYXdUb2dnbGVMYWJlbHNdPVwicmF3VG9nZ2xlTGFiZWxzXCJcbiAgICAgICh0b2dnbGVSYXcpPVwidG9nZ2xlUmF3Q2xpY2tlZCgpXCJcbiAgICAgIFtjb3BpZWRDb250ZW50XT1cImNvcHlDb250ZW50XCJcbiAgICAgIFtjb3B5Q29kZVRvQ2xpcGJvYXJkXT1cImNvcHlDb2RlVG9DbGlwYm9hcmRcIlxuICAgICAgW2NvcHlDb2RlVG9vbHRpcHNdPVwiY29weUNvZGVUb29sdGlwc1wiXG4gICAgPjwvdGQtY29weS1jb2RlLWJ1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -9,23 +9,23 @@ import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
|
|
9
9
|
import { TdCopyCodeButtonComponent } from './copy-code-button/copy-code-button.component';
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
11
|
export class CovalentHighlightModule {
|
|
12
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CovalentHighlightModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
13
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: CovalentHighlightModule, declarations: [TdHighlightComponent, TdCopyCodeButtonComponent], imports: [CommonModule,
|
|
14
|
+
ClipboardModule,
|
|
15
|
+
MatIconModule,
|
|
16
|
+
MatButtonToggleModule,
|
|
17
|
+
MatButtonModule,
|
|
18
|
+
MatTooltipModule,
|
|
19
|
+
MatButtonModule], exports: [TdHighlightComponent] });
|
|
20
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CovalentHighlightModule, imports: [CommonModule,
|
|
21
|
+
ClipboardModule,
|
|
22
|
+
MatIconModule,
|
|
23
|
+
MatButtonToggleModule,
|
|
24
|
+
MatButtonModule,
|
|
25
|
+
MatTooltipModule,
|
|
26
|
+
MatButtonModule] });
|
|
12
27
|
}
|
|
13
|
-
|
|
14
|
-
CovalentHighlightModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.5", ngImport: i0, type: CovalentHighlightModule, declarations: [TdHighlightComponent, TdCopyCodeButtonComponent], imports: [CommonModule,
|
|
15
|
-
ClipboardModule,
|
|
16
|
-
MatIconModule,
|
|
17
|
-
MatButtonToggleModule,
|
|
18
|
-
MatButtonModule,
|
|
19
|
-
MatTooltipModule,
|
|
20
|
-
MatButtonModule], exports: [TdHighlightComponent] });
|
|
21
|
-
CovalentHighlightModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentHighlightModule, imports: [CommonModule,
|
|
22
|
-
ClipboardModule,
|
|
23
|
-
MatIconModule,
|
|
24
|
-
MatButtonToggleModule,
|
|
25
|
-
MatButtonModule,
|
|
26
|
-
MatTooltipModule,
|
|
27
|
-
MatButtonModule] });
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentHighlightModule, decorators: [{
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CovalentHighlightModule, decorators: [{
|
|
29
29
|
type: NgModule,
|
|
30
30
|
args: [{
|
|
31
31
|
imports: [
|
|
@@ -41,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
|
|
|
41
41
|
exports: [TdHighlightComponent],
|
|
42
42
|
}]
|
|
43
43
|
}] });
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlnaGxpZ2h0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1oaWdobGlnaHQvc3JjL2xpYi9oaWdobGlnaHQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDOztBQWUxRixNQUFNLE9BQU8sdUJBQXVCO3VHQUF2Qix1QkFBdUI7d0dBQXZCLHVCQUF1QixpQkFIbkIsb0JBQW9CLEVBQUUseUJBQXlCLGFBUjVELFlBQVk7WUFDWixlQUFlO1lBQ2YsYUFBYTtZQUNiLHFCQUFxQjtZQUNyQixlQUFlO1lBQ2YsZ0JBQWdCO1lBQ2hCLGVBQWUsYUFHUCxvQkFBb0I7d0dBRW5CLHVCQUF1QixZQVhoQyxZQUFZO1lBQ1osZUFBZTtZQUNmLGFBQWE7WUFDYixxQkFBcUI7WUFDckIsZUFBZTtZQUNmLGdCQUFnQjtZQUNoQixlQUFlOzsyRkFLTix1QkFBdUI7a0JBYm5DLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixhQUFhO3dCQUNiLHFCQUFxQjt3QkFDckIsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLGVBQWU7cUJBQ2hCO29CQUNELFlBQVksRUFBRSxDQUFDLG9CQUFvQixFQUFFLHlCQUF5QixDQUFDO29CQUMvRCxPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztpQkFDaEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENsaXBib2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jbGlwYm9hcmQnO1xuaW1wb3J0IHsgVGRIaWdobGlnaHRDb21wb25lbnQgfSBmcm9tICcuL2hpZ2hsaWdodC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xuaW1wb3J0IHsgVGRDb3B5Q29kZUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vY29weS1jb2RlLWJ1dHRvbi9jb3B5LWNvZGUtYnV0dG9uLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQ2xpcGJvYXJkTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbVGRIaWdobGlnaHRDb21wb25lbnQsIFRkQ29weUNvZGVCdXR0b25Db21wb25lbnRdLFxuICBleHBvcnRzOiBbVGRIaWdobGlnaHRDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBDb3ZhbGVudEhpZ2hsaWdodE1vZHVsZSB7fVxuIl19
|