@covalent/flavored-markdown 4.0.0-beta.2 → 4.1.0-develop.10
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/README.md +36 -43
- package/covalent-flavored-markdown.d.ts +1 -1
- package/esm2020/covalent-flavored-markdown.mjs +2 -2
- package/esm2020/lib/cfm-list/cfm-list.component.mjs +60 -0
- package/esm2020/lib/flavored-markdown-loader/flavored-markdown-loader.component.mjs +104 -0
- package/esm2020/lib/flavored-markdown.component.mjs +501 -0
- package/esm2020/lib/flavored-markdown.module.mjs +69 -0
- package/esm2020/public_api.mjs +4 -4
- package/fesm2015/covalent-flavored-markdown.mjs +80 -49
- package/fesm2015/covalent-flavored-markdown.mjs.map +1 -1
- package/fesm2020/covalent-flavored-markdown.mjs +76 -49
- package/fesm2020/covalent-flavored-markdown.mjs.map +1 -1
- package/{cfm-list → lib/cfm-list}/cfm-list.component.d.ts +1 -1
- package/{flavored-markdown-loader → lib/flavored-markdown-loader}/flavored-markdown-loader.component.d.ts +5 -5
- package/{flavored-markdown.component.d.ts → lib/flavored-markdown.component.d.ts} +2 -2
- package/{flavored-markdown.module.d.ts → lib/flavored-markdown.module.d.ts} +0 -0
- package/package.json +20 -23
- package/public_api.d.ts +3 -3
- package/cfm-list/cfm-list.component.scss +0 -0
- package/esm2020/cfm-list/cfm-list.component.mjs +0 -60
- package/esm2020/flavored-markdown-loader/flavored-markdown-loader.component.mjs +0 -102
- package/esm2020/flavored-markdown.component.mjs +0 -476
- package/esm2020/flavored-markdown.module.mjs +0 -69
- package/esm2020/index.mjs +0 -2
- package/flavored-markdown-loader/flavored-markdown-loader.component.scss +0 -28
- package/flavored-markdown.component.scss +0 -33
- package/index.d.ts +0 -1
|
@@ -54,8 +54,8 @@ class TdFlavoredListComponent {
|
|
|
54
54
|
this.dense = false;
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
TdFlavoredListComponent.ɵfac = function TdFlavoredListComponent_Factory(t) { return new (t || TdFlavoredListComponent)(); };
|
|
58
|
+
TdFlavoredListComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TdFlavoredListComponent, selectors: [["td-cfm-list"]], inputs: { lines: "lines", dense: "dense" }, decls: 2, vars: 2, consts: [["ngFor", "", 3, "ngForOf"], ["matLine", ""], ["matLine", "", 4, "ngFor", "ngForOf"], [4, "ngIf"]], template: function TdFlavoredListComponent_Template(rf, ctx) { if (rf & 1) {
|
|
59
59
|
i0.ɵɵelementStart(0, "mat-list");
|
|
60
60
|
i0.ɵɵtemplate(1, TdFlavoredListComponent_ng_template_1_Template, 5, 3, "ng-template", 0);
|
|
61
61
|
i0.ɵɵelementEnd();
|
|
@@ -66,7 +66,7 @@ class TdFlavoredListComponent {
|
|
|
66
66
|
} }, directives: [i1.MatList, i2.NgForOf, i1.MatListItem, i3.MatLine, i2.NgIf, i4.MatDivider], styles: [""] });
|
|
67
67
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TdFlavoredListComponent, [{
|
|
68
68
|
type: Component,
|
|
69
|
-
args: [{ selector: 'cfm-list', template: "<mat-list [attr.dense]=\"dense ? true : null\">\n <ng-template let-line let-last=\"last\" ngFor [ngForOf]=\"lines\">\n <mat-list-item>\n <h4 matLine>\n {{ line.line }}\n </h4>\n <p *ngFor=\"let subline of line.sublines\" matLine>\n {{ subline }}\n </p>\n <mat-divider *ngIf=\"!last\"></mat-divider>\n </mat-list-item>\n </ng-template>\n</mat-list>\n", styles: [""] }]
|
|
69
|
+
args: [{ selector: 'td-cfm-list', template: "<mat-list [attr.dense]=\"dense ? true : null\">\n <ng-template let-line let-last=\"last\" ngFor [ngForOf]=\"lines\">\n <mat-list-item>\n <h4 matLine>\n {{ line.line }}\n </h4>\n <p *ngFor=\"let subline of line.sublines\" matLine>\n {{ subline }}\n </p>\n <mat-divider *ngIf=\"!last\"></mat-divider>\n </mat-list-item>\n </ng-template>\n</mat-list>\n", styles: [""] }]
|
|
70
70
|
}], null, { lines: [{
|
|
71
71
|
type: Input
|
|
72
72
|
}], dense: [{
|
|
@@ -120,8 +120,8 @@ class TdFlavoredMarkdownTableComponent {
|
|
|
120
120
|
this.dataSource.sort = this.sort;
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
|
-
|
|
124
|
-
|
|
123
|
+
TdFlavoredMarkdownTableComponent.ɵfac = function TdFlavoredMarkdownTableComponent_Factory(t) { return new (t || TdFlavoredMarkdownTableComponent)(); };
|
|
124
|
+
TdFlavoredMarkdownTableComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TdFlavoredMarkdownTableComponent, selectors: [["ng-component"]], viewQuery: function TdFlavoredMarkdownTableComponent_Query(rf, ctx) { if (rf & 1) {
|
|
125
125
|
i0.ɵɵviewQuery(MatSort, 5);
|
|
126
126
|
} if (rf & 2) {
|
|
127
127
|
let _t;
|
|
@@ -149,7 +149,9 @@ class TdFlavoredMarkdownTableComponent {
|
|
|
149
149
|
<!-- Column Definition -->
|
|
150
150
|
<ng-template ngFor let-column [ngForOf]="columnDefs">
|
|
151
151
|
<ng-container [matColumnDef]="column.name">
|
|
152
|
-
<mat-header-cell *matHeaderCellDef mat-sort-header>{{
|
|
152
|
+
<mat-header-cell *matHeaderCellDef mat-sort-header>{{
|
|
153
|
+
column.label
|
|
154
|
+
}}</mat-header-cell>
|
|
153
155
|
<mat-cell *matCellDef="let row">{{ row[column.name] }}</mat-cell>
|
|
154
156
|
</ng-container>
|
|
155
157
|
</ng-template>
|
|
@@ -178,8 +180,8 @@ class TdFlavoredMarkdownButtonComponent {
|
|
|
178
180
|
this.clicked.emit({ text: this.text, data: this.data });
|
|
179
181
|
}
|
|
180
182
|
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
+
TdFlavoredMarkdownButtonComponent.ɵfac = function TdFlavoredMarkdownButtonComponent_Factory(t) { return new (t || TdFlavoredMarkdownButtonComponent)(); };
|
|
184
|
+
TdFlavoredMarkdownButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TdFlavoredMarkdownButtonComponent, selectors: [["ng-component"]], hostVars: 2, hostBindings: function TdFlavoredMarkdownButtonComponent_HostBindings(rf, ctx) { if (rf & 2) {
|
|
183
185
|
i0.ɵɵstyleProp("display", ctx.display);
|
|
184
186
|
} }, inputs: { text: "text", data: "data" }, outputs: { clicked: "clicked" }, decls: 2, vars: 1, consts: [["mat-raised-button", "", 3, "click"]], template: function TdFlavoredMarkdownButtonComponent_Template(rf, ctx) { if (rf & 1) {
|
|
185
187
|
i0.ɵɵelementStart(0, "button", 0);
|
|
@@ -219,8 +221,8 @@ class TdFlavoredMarkdownContainerDirective {
|
|
|
219
221
|
this.viewContainerRef.clear();
|
|
220
222
|
}
|
|
221
223
|
}
|
|
222
|
-
|
|
223
|
-
|
|
224
|
+
TdFlavoredMarkdownContainerDirective.ɵfac = function TdFlavoredMarkdownContainerDirective_Factory(t) { return new (t || TdFlavoredMarkdownContainerDirective)(i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i0.Renderer2)); };
|
|
225
|
+
TdFlavoredMarkdownContainerDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: TdFlavoredMarkdownContainerDirective, selectors: [["", "tdFlavoredMarkdownContainer", ""]] });
|
|
224
226
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TdFlavoredMarkdownContainerDirective, [{
|
|
225
227
|
type: Directive,
|
|
226
228
|
args: [{
|
|
@@ -301,7 +303,10 @@ class TdFlavoredMarkdownComponent {
|
|
|
301
303
|
}
|
|
302
304
|
ngOnChanges(changes) {
|
|
303
305
|
// only anchor changed
|
|
304
|
-
if (changes
|
|
306
|
+
if (changes['anchor'] &&
|
|
307
|
+
!changes['content'] &&
|
|
308
|
+
!changes['simpleLineBreaks'] &&
|
|
309
|
+
!changes['hostedUrl']) {
|
|
305
310
|
scrollToAnchor(this._elementRef.nativeElement, this._anchor, false);
|
|
306
311
|
}
|
|
307
312
|
else {
|
|
@@ -310,7 +315,8 @@ class TdFlavoredMarkdownComponent {
|
|
|
310
315
|
}
|
|
311
316
|
ngAfterViewInit() {
|
|
312
317
|
if (!this._content) {
|
|
313
|
-
this._loadContent(this.container.viewContainerRef.element.nativeElement
|
|
318
|
+
this._loadContent(this.container.viewContainerRef.element.nativeElement
|
|
319
|
+
.textContent ?? '');
|
|
314
320
|
Promise.resolve().then(() => {
|
|
315
321
|
this._viewInit = true;
|
|
316
322
|
this._changeDetectorRef.markForCheck();
|
|
@@ -322,18 +328,24 @@ class TdFlavoredMarkdownComponent {
|
|
|
322
328
|
this._loadContent(this._content);
|
|
323
329
|
}
|
|
324
330
|
else if (this._viewInit) {
|
|
325
|
-
this._loadContent(this.container.viewContainerRef.element.nativeElement
|
|
331
|
+
this._loadContent(this.container.viewContainerRef.element.nativeElement
|
|
332
|
+
.textContent ?? '');
|
|
326
333
|
}
|
|
327
334
|
this._changeDetectorRef.markForCheck();
|
|
328
335
|
}
|
|
329
336
|
_loadContent(markdown) {
|
|
330
337
|
if (markdown && markdown.trim().length > 0) {
|
|
331
338
|
this.container.clear();
|
|
332
|
-
markdown = markdown
|
|
339
|
+
markdown = markdown
|
|
340
|
+
.replace(/^(\s|\t)*\n+/g, '')
|
|
341
|
+
.replace(/(\s|\t)*\n+(\s|\t)*$/g, '');
|
|
333
342
|
// Split markdown by line characters
|
|
334
343
|
let lines = markdown.split('\n');
|
|
335
344
|
// check how much indentation is used by the first actual markdown line
|
|
336
|
-
const
|
|
345
|
+
const firstLineWhitespaceMatch = lines[0].match(/^(\s|\t)*/);
|
|
346
|
+
const firstLineWhitespace = firstLineWhitespaceMatch
|
|
347
|
+
? firstLineWhitespaceMatch[0]
|
|
348
|
+
: null;
|
|
337
349
|
// Remove all indentation spaces so markdown can be parsed correctly
|
|
338
350
|
const startingWhitespaceRegex = new RegExp('^' + firstLineWhitespace);
|
|
339
351
|
lines = lines.map(function (line) {
|
|
@@ -367,9 +379,8 @@ class TdFlavoredMarkdownComponent {
|
|
|
367
379
|
if (key && markdown.indexOf(key) > -1) {
|
|
368
380
|
const markdownParts = markdown.split(key);
|
|
369
381
|
keys.shift();
|
|
370
|
-
this._render(markdownParts[0],
|
|
382
|
+
this._render(markdownParts[0], '', []);
|
|
371
383
|
this.container.viewContainerRef.insert(this._components[key].hostView, this.container.viewContainerRef.length);
|
|
372
|
-
this._components[key] = undefined;
|
|
373
384
|
delete this._components[key];
|
|
374
385
|
this._render(markdownParts[1], keys[0], keys);
|
|
375
386
|
}
|
|
@@ -390,7 +401,11 @@ class TdFlavoredMarkdownComponent {
|
|
|
390
401
|
const componentFactory = this._componentFactoryResolver.resolveComponentFactory(type);
|
|
391
402
|
const componentRef = componentFactory.create(this._injector);
|
|
392
403
|
replacerFunc(componentRef, ...args);
|
|
393
|
-
const key = '[' +
|
|
404
|
+
const key = '[' +
|
|
405
|
+
componentFactory.selector +
|
|
406
|
+
'-placeholder-' +
|
|
407
|
+
componentIndex++ +
|
|
408
|
+
']';
|
|
394
409
|
this._components[key] = componentRef;
|
|
395
410
|
return key;
|
|
396
411
|
});
|
|
@@ -401,14 +416,17 @@ class TdFlavoredMarkdownComponent {
|
|
|
401
416
|
componentRef.instance.checked = !!checked.trim();
|
|
402
417
|
componentRef.instance.disabled = true;
|
|
403
418
|
componentRef.instance.labelPosition = 'after';
|
|
404
|
-
this._renderer.setProperty(componentRef.instance._elementRef.nativeElement.getElementsByClassName('mat-checkbox-label')[0], 'innerHTML', label);
|
|
419
|
+
this._renderer.setProperty((componentRef.instance._elementRef.nativeElement).getElementsByClassName('mat-checkbox-label')[0], 'innerHTML', label);
|
|
405
420
|
});
|
|
406
421
|
}
|
|
407
422
|
_replaceButtons(markdown) {
|
|
408
|
-
const buttonRegExp = /\[([
|
|
423
|
+
const buttonRegExp = /\[([^[]+)\](\(#data=(.*)\))/i;
|
|
409
424
|
const globalButtonRegExp = new RegExp(buttonRegExp.source, buttonRegExp.flags + 'g');
|
|
410
425
|
return this._replaceComponent(markdown, TdFlavoredMarkdownButtonComponent, globalButtonRegExp, (componentRef, match) => {
|
|
411
426
|
const matches = buttonRegExp.exec(match);
|
|
427
|
+
if (!matches) {
|
|
428
|
+
return;
|
|
429
|
+
}
|
|
412
430
|
const text = matches[1];
|
|
413
431
|
const data = matches[3];
|
|
414
432
|
componentRef.instance.text = text;
|
|
@@ -430,7 +448,9 @@ class TdFlavoredMarkdownComponent {
|
|
|
430
448
|
_replaceTables(markdown) {
|
|
431
449
|
const tableRgx = /^ {0,3}\|?.+\|.+\n[ \t]{0,3}\|?[ \t]*:?[ \t]*(?:-|=){2,}[ \t]*:?[ \t]*\|[ \t]*:?[ \t]*(?:-|=){2,}[\s\S]+?(?:\n\n|~0)/gm;
|
|
432
450
|
return this._replaceComponent(markdown, TdFlavoredMarkdownTableComponent, tableRgx, (componentRef, match) => {
|
|
433
|
-
const dataTableLines = match
|
|
451
|
+
const dataTableLines = match
|
|
452
|
+
.replace(/(\s|\t)*\n+(\s|\t)*$/g, '')
|
|
453
|
+
.split('\n');
|
|
434
454
|
const columns = dataTableLines[0]
|
|
435
455
|
.split('|')
|
|
436
456
|
.filter((col) => {
|
|
@@ -471,7 +491,7 @@ class TdFlavoredMarkdownComponent {
|
|
|
471
491
|
componentRef.instance.columnDefs = columns.map((col, index) => {
|
|
472
492
|
return {
|
|
473
493
|
label: col,
|
|
474
|
-
name: col.toLowerCase().trim()
|
|
494
|
+
name: col ? col.toLowerCase().trim() : `column ${index}`,
|
|
475
495
|
numeric: /^--*[ \t]*:[ \t]*$/.test(alignment[index]),
|
|
476
496
|
};
|
|
477
497
|
});
|
|
@@ -479,16 +499,25 @@ class TdFlavoredMarkdownComponent {
|
|
|
479
499
|
});
|
|
480
500
|
}
|
|
481
501
|
_replaceLists(markdown) {
|
|
482
|
-
const listRegExp = /(?:^|\n)((
|
|
502
|
+
const listRegExp = /(?:^|\n)(( *(\+|-))[ |\t](.*)\n)+/g;
|
|
503
|
+
const listCharRegExp = new RegExp(/\+|-/);
|
|
483
504
|
return this._replaceComponent(markdown, TdFlavoredListComponent, listRegExp, (componentRef, match) => {
|
|
484
|
-
const
|
|
505
|
+
const matchIndex = match.indexOf('+') !== -1 ? match.indexOf('+') : match.indexOf('-');
|
|
506
|
+
const lineTexts = match.split(new RegExp('\\n {' + (matchIndex - 1).toString() + '}(\\+|-)[ |\\t]'));
|
|
485
507
|
lineTexts.shift();
|
|
486
508
|
const lines = [];
|
|
487
|
-
lineTexts.forEach((text
|
|
488
|
-
const sublineTexts = text.split(/\n
|
|
509
|
+
lineTexts.forEach((text) => {
|
|
510
|
+
const sublineTexts = text.split(/\n *(\+|-) /);
|
|
511
|
+
const lineText = sublineTexts.shift() ?? '';
|
|
512
|
+
if (listCharRegExp.test(lineText)) {
|
|
513
|
+
return;
|
|
514
|
+
}
|
|
489
515
|
lines.push({
|
|
490
|
-
line:
|
|
516
|
+
line: lineText,
|
|
491
517
|
sublines: sublineTexts.map((subline) => {
|
|
518
|
+
if (listCharRegExp.test(subline)) {
|
|
519
|
+
return '';
|
|
520
|
+
}
|
|
492
521
|
return subline.trim();
|
|
493
522
|
}),
|
|
494
523
|
});
|
|
@@ -497,8 +526,8 @@ class TdFlavoredMarkdownComponent {
|
|
|
497
526
|
});
|
|
498
527
|
}
|
|
499
528
|
}
|
|
500
|
-
|
|
501
|
-
|
|
529
|
+
TdFlavoredMarkdownComponent.ɵfac = function TdFlavoredMarkdownComponent_Factory(t) { return new (t || TdFlavoredMarkdownComponent)(i0.ɵɵdirectiveInject(i0.ComponentFactoryResolver), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i0.ElementRef)); };
|
|
530
|
+
TdFlavoredMarkdownComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TdFlavoredMarkdownComponent, selectors: [["td-flavored-markdown"]], viewQuery: function TdFlavoredMarkdownComponent_Query(rf, ctx) { if (rf & 1) {
|
|
502
531
|
i0.ɵɵviewQuery(TdFlavoredMarkdownContainerDirective, 7);
|
|
503
532
|
} if (rf & 2) {
|
|
504
533
|
let _t;
|
|
@@ -508,22 +537,18 @@ class TdFlavoredMarkdownComponent {
|
|
|
508
537
|
i0.ɵɵelementStart(0, "div", 0);
|
|
509
538
|
i0.ɵɵprojection(1);
|
|
510
539
|
i0.ɵɵelementEnd();
|
|
511
|
-
} }, directives: [TdFlavoredMarkdownContainerDirective], styles: ["[_nghost-%COMP%] td-markdown:first-of-type>div:first-of-type>h1:first-of-type, [_nghost-%COMP%] td-markdown:first-of-type>div:first-of-type>h2:first-of-type{margin-top:0}[_nghost-%COMP%]
|
|
540
|
+
} }, directives: [TdFlavoredMarkdownContainerDirective], styles: ["[_nghost-%COMP%] td-markdown:first-of-type>div:first-of-type>h1:first-of-type, [_nghost-%COMP%] td-markdown:first-of-type>div:first-of-type>h2:first-of-type{margin-top:0}[_nghost-%COMP%] mat-checkbox{display:block}[_nghost-%COMP%] td-highlight, [_nghost-%COMP%] mat-table, [_nghost-%COMP%] mat-checkbox:last-of-type{margin-bottom:16px}[_nghost-%COMP%] :not(pre)>code{font-family:Menlo,Monaco,Andale Mono,lucida console,Courier New,monospace;padding-left:2px;padding-right:2px}[_nghost-%COMP%] td-highlight{display:flex;flex-direction:row;justify-content:space-between}"], changeDetection: 0 });
|
|
512
541
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TdFlavoredMarkdownComponent, [{
|
|
513
542
|
type: Component,
|
|
514
|
-
args: [{ selector: 'td-flavored-markdown', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div tdFlavoredMarkdownContainer>\n <ng-content></ng-content>\n</div>\n", styles: [":host ::ng-deep td-markdown:first-of-type>div:first-of-type>h1:first-of-type,:host ::ng-deep td-markdown:first-of-type>div:first-of-type>h2:first-of-type{margin-top:0}:host ::ng-deep
|
|
543
|
+
args: [{ selector: 'td-flavored-markdown', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div tdFlavoredMarkdownContainer>\n <ng-content></ng-content>\n</div>\n", styles: [":host ::ng-deep td-markdown:first-of-type>div:first-of-type>h1:first-of-type,:host ::ng-deep td-markdown:first-of-type>div:first-of-type>h2:first-of-type{margin-top:0}:host ::ng-deep mat-checkbox{display:block}:host ::ng-deep td-highlight,:host ::ng-deep mat-table,:host ::ng-deep mat-checkbox:last-of-type{margin-bottom:16px}:host ::ng-deep :not(pre)>code{font-family:Menlo,Monaco,Andale Mono,lucida console,Courier New,monospace;padding-left:2px;padding-right:2px}:host ::ng-deep td-highlight{display:flex;flex-direction:row;justify-content:space-between}\n"] }]
|
|
515
544
|
}], function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: i0.ElementRef }]; }, { content: [{
|
|
516
|
-
type: Input
|
|
517
|
-
args: ['content']
|
|
545
|
+
type: Input
|
|
518
546
|
}], simpleLineBreaks: [{
|
|
519
|
-
type: Input
|
|
520
|
-
args: ['simpleLineBreaks']
|
|
547
|
+
type: Input
|
|
521
548
|
}], hostedUrl: [{
|
|
522
|
-
type: Input
|
|
523
|
-
args: ['hostedUrl']
|
|
549
|
+
type: Input
|
|
524
550
|
}], anchor: [{
|
|
525
|
-
type: Input
|
|
526
|
-
args: ['anchor']
|
|
551
|
+
type: Input
|
|
527
552
|
}], copyCodeToClipboard: [{
|
|
528
553
|
type: Input
|
|
529
554
|
}], copyCodeTooltips: [{
|
|
@@ -549,7 +574,9 @@ function TdFlavoredMarkdownLoaderComponent_td_flavored_markdown_1_Template(rf, c
|
|
|
549
574
|
i0.ɵɵelementEnd();
|
|
550
575
|
} if (rf & 2) {
|
|
551
576
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
552
|
-
|
|
577
|
+
let tmp_1_0;
|
|
578
|
+
let tmp_2_0;
|
|
579
|
+
i0.ɵɵproperty("content", ctx_r1.content)("hostedUrl", (tmp_1_0 = ctx_r1.url) !== null && tmp_1_0 !== undefined ? tmp_1_0 : "")("anchor", (tmp_2_0 = ctx_r1.anchor) !== null && tmp_2_0 !== undefined ? tmp_2_0 : "")("copyCodeToClipboard", ctx_r1.copyCodeToClipboard)("copyCodeTooltips", ctx_r1.copyCodeTooltips);
|
|
553
580
|
} }
|
|
554
581
|
// TODO: make a td-markdown-loader component
|
|
555
582
|
class TdFlavoredMarkdownLoaderComponent {
|
|
@@ -583,7 +610,7 @@ class TdFlavoredMarkdownLoaderComponent {
|
|
|
583
610
|
this.loading = true;
|
|
584
611
|
}
|
|
585
612
|
ngOnChanges(changes) {
|
|
586
|
-
if (changes
|
|
613
|
+
if (changes['url'] || changes['httpOptions']) {
|
|
587
614
|
this.loadMarkdown();
|
|
588
615
|
}
|
|
589
616
|
}
|
|
@@ -591,7 +618,7 @@ class TdFlavoredMarkdownLoaderComponent {
|
|
|
591
618
|
this.loading = true;
|
|
592
619
|
this._changeDetectorRef.markForCheck();
|
|
593
620
|
try {
|
|
594
|
-
this.content = await this._markdownUrlLoaderService.load(this.url, this.httpOptions);
|
|
621
|
+
this.content = await this._markdownUrlLoaderService.load(this.url ?? '', this.httpOptions);
|
|
595
622
|
}
|
|
596
623
|
catch (error) {
|
|
597
624
|
this.loadFailed.emit(error);
|
|
@@ -602,18 +629,18 @@ class TdFlavoredMarkdownLoaderComponent {
|
|
|
602
629
|
}
|
|
603
630
|
}
|
|
604
631
|
}
|
|
605
|
-
|
|
606
|
-
|
|
632
|
+
TdFlavoredMarkdownLoaderComponent.ɵfac = function TdFlavoredMarkdownLoaderComponent_Factory(t) { return new (t || TdFlavoredMarkdownLoaderComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1$2.TdMarkdownLoaderService)); };
|
|
633
|
+
TdFlavoredMarkdownLoaderComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TdFlavoredMarkdownLoaderComponent, selectors: [["td-flavored-markdown-loader"]], inputs: { url: "url", httpOptions: "httpOptions", anchor: "anchor", copyCodeToClipboard: "copyCodeToClipboard", copyCodeTooltips: "copyCodeTooltips" }, outputs: { contentReady: "contentReady", loadFailed: "loadFailed", buttonClicked: "buttonClicked" }, features: [i0.ɵɵNgOnChangesFeature], decls: 2, vars: 2, consts: [["mode", "indeterminate", "color", "accent", "class", "sticky", 3, "ngClass", 4, "ngIf"], [3, "content", "hostedUrl", "anchor", "copyCodeToClipboard", "copyCodeTooltips", "contentReady", "buttonClicked", 4, "ngIf"], ["mode", "indeterminate", "color", "accent", 1, "sticky", 3, "ngClass"], [3, "content", "hostedUrl", "anchor", "copyCodeToClipboard", "copyCodeTooltips", "contentReady", "buttonClicked"]], template: function TdFlavoredMarkdownLoaderComponent_Template(rf, ctx) { if (rf & 1) {
|
|
607
634
|
i0.ɵɵtemplate(0, TdFlavoredMarkdownLoaderComponent_mat_progress_bar_0_Template, 1, 1, "mat-progress-bar", 0);
|
|
608
635
|
i0.ɵɵtemplate(1, TdFlavoredMarkdownLoaderComponent_td_flavored_markdown_1_Template, 1, 5, "td-flavored-markdown", 1);
|
|
609
636
|
} if (rf & 2) {
|
|
610
637
|
i0.ɵɵproperty("ngIf", ctx.loading);
|
|
611
638
|
i0.ɵɵadvance(1);
|
|
612
639
|
i0.ɵɵproperty("ngIf", !ctx.loading);
|
|
613
|
-
} }, directives: [i2.NgIf, i3$1.MatProgressBar, i2.NgClass, TdFlavoredMarkdownComponent], styles: ["[_nghost-%COMP%]{display:block}.sticky[_ngcontent-%COMP%]{position:absolute;top:0}.delay[_ngcontent-%COMP%]{
|
|
640
|
+
} }, directives: [i2.NgIf, i3$1.MatProgressBar, i2.NgClass, TdFlavoredMarkdownComponent], styles: ["[_nghost-%COMP%]{display:block}.sticky[_ngcontent-%COMP%]{position:absolute;top:0}.delay[_ngcontent-%COMP%]{animation:delay-animation;animation-duration:.6s}@keyframes delay-animation{0%{opacity:0}99%{opacity:0}to{opacity:1}}"], changeDetection: 0 });
|
|
614
641
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TdFlavoredMarkdownLoaderComponent, [{
|
|
615
642
|
type: Component,
|
|
616
|
-
args: [{ selector: 'td-flavored-markdown-loader', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-progress-bar\n [ngClass]=\"'delay'\"\n *ngIf=\"loading\"\n mode=\"indeterminate\"\n color=\"accent\"\n class=\"sticky\"\n></mat-progress-bar>\n<td-flavored-markdown\n *ngIf=\"!loading\"\n [content]=\"content\"\n [hostedUrl]=\"url\"\n [anchor]=\"anchor\"\n [copyCodeToClipboard]=\"copyCodeToClipboard\"\n [copyCodeTooltips]=\"copyCodeTooltips\"\n (contentReady)=\"contentReady.emit()\"\n (buttonClicked)=\"buttonClicked.emit($event)\"\n></td-flavored-markdown>\n", styles: [":host{display:block}.sticky{position:absolute;top:0}.delay{
|
|
643
|
+
args: [{ selector: 'td-flavored-markdown-loader', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-progress-bar\n [ngClass]=\"'delay'\"\n *ngIf=\"loading\"\n mode=\"indeterminate\"\n color=\"accent\"\n class=\"sticky\"\n></mat-progress-bar>\n<td-flavored-markdown\n *ngIf=\"!loading\"\n [content]=\"content\"\n [hostedUrl]=\"url ?? ''\"\n [anchor]=\"anchor ?? ''\"\n [copyCodeToClipboard]=\"copyCodeToClipboard\"\n [copyCodeTooltips]=\"copyCodeTooltips\"\n (contentReady)=\"contentReady.emit()\"\n (buttonClicked)=\"buttonClicked.emit($event)\"\n></td-flavored-markdown>\n", styles: [":host{display:block}.sticky{position:absolute;top:0}.delay{animation:delay-animation;animation-duration:.6s}@keyframes delay-animation{0%{opacity:0}99%{opacity:0}to{opacity:1}}\n"] }]
|
|
617
644
|
}], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1$2.TdMarkdownLoaderService }]; }, { url: [{
|
|
618
645
|
type: Input
|
|
619
646
|
}], httpOptions: [{
|
|
@@ -634,9 +661,9 @@ class TdFlavoredMarkdownLoaderComponent {
|
|
|
634
661
|
|
|
635
662
|
class CovalentFlavoredMarkdownModule {
|
|
636
663
|
}
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
664
|
+
CovalentFlavoredMarkdownModule.ɵfac = function CovalentFlavoredMarkdownModule_Factory(t) { return new (t || CovalentFlavoredMarkdownModule)(); };
|
|
665
|
+
CovalentFlavoredMarkdownModule.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: CovalentFlavoredMarkdownModule });
|
|
666
|
+
CovalentFlavoredMarkdownModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [[
|
|
640
667
|
CommonModule,
|
|
641
668
|
MatCheckboxModule,
|
|
642
669
|
MatListModule,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"covalent-flavored-markdown.mjs","sources":["../../../../src/platform/flavored-markdown/cfm-list/cfm-list.component.html","../../../../src/platform/flavored-markdown/cfm-list/cfm-list.component.ts","../../../../src/platform/flavored-markdown/flavored-markdown.component.ts","../../../../src/platform/flavored-markdown/flavored-markdown.component.html","../../../../src/platform/flavored-markdown/flavored-markdown-loader/flavored-markdown-loader.component.html","../../../../src/platform/flavored-markdown/flavored-markdown-loader/flavored-markdown-loader.component.ts","../../../../src/platform/flavored-markdown/flavored-markdown.module.ts","../../../../src/platform/flavored-markdown/covalent-flavored-markdown.ts"],"sourcesContent":["<mat-list [attr.dense]=\"dense ? true : null\">\n <ng-template let-line let-last=\"last\" ngFor [ngForOf]=\"lines\">\n <mat-list-item>\n <h4 matLine>\n {{ line.line }}\n </h4>\n <p *ngFor=\"let subline of line.sublines\" matLine>\n {{ subline }}\n </p>\n <mat-divider *ngIf=\"!last\"></mat-divider>\n </mat-list-item>\n </ng-template>\n</mat-list>\n","import { Component, Input } from '@angular/core';\n\nexport interface IFlavoredListItem {\n line: string;\n sublines?: string[];\n}\n\n@Component({\n selector: 'cfm-list',\n styleUrls: ['./cfm-list.component.scss'],\n templateUrl: './cfm-list.component.html',\n})\nexport class TdFlavoredListComponent {\n @Input() lines: IFlavoredListItem[];\n @Input() dense: boolean = false;\n}\n","import {\n Component,\n Directive,\n AfterViewInit,\n Input,\n Renderer2,\n Type,\n ComponentFactory,\n ChangeDetectorRef,\n EventEmitter,\n Output,\n ViewContainerRef,\n ComponentFactoryResolver,\n Injector,\n ComponentRef,\n ViewChild,\n ChangeDetectionStrategy,\n OnChanges,\n SimpleChanges,\n ElementRef,\n HostBinding,\n OnInit,\n} from '@angular/core';\n\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatSort } from '@angular/material/sort';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { TdFlavoredListComponent, IFlavoredListItem } from './cfm-list/cfm-list.component';\nimport { TdHighlightComponent, ICopyCodeTooltips } from '@covalent/highlight';\nimport { TdMarkdownComponent, scrollToAnchor } from '@covalent/markdown';\n\nexport interface ITdFlavoredMarkdownButtonClickEvent {\n text: string;\n data: string;\n}\n\nexport interface ITdFlavoredMarkDownTableColumn {\n label: string;\n name: string;\n numeric: boolean;\n}\n\n@Component({\n template: `\n <mat-table [dataSource]=\"dataSource\" matSort>\n <!-- Column Definition -->\n <ng-template ngFor let-column [ngForOf]=\"columnDefs\">\n <ng-container [matColumnDef]=\"column.name\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{ column.label }}</mat-header-cell>\n <mat-cell *matCellDef=\"let row\">{{ row[column.name] }}</mat-cell>\n </ng-container>\n </ng-template>\n <!-- Header and Row Declarations -->\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns\"></mat-row>\n </mat-table>\n `,\n})\nexport class TdFlavoredMarkdownTableComponent implements OnInit, AfterViewInit {\n @Input() columnDefs: ITdFlavoredMarkDownTableColumn[] = [];\n @Input() data: unknown[];\n @ViewChild(MatSort) sort: MatSort;\n\n displayedColumns: string[];\n dataSource: MatTableDataSource<unknown>;\n\n ngOnInit(): void {\n this.displayedColumns = this.columnDefs.map((c: ITdFlavoredMarkDownTableColumn) => c.name);\n this.dataSource = new MatTableDataSource(this.data);\n }\n\n ngAfterViewInit(): void {\n this.dataSource.sort = this.sort;\n }\n}\n\n@Component({\n template: `\n <button mat-raised-button (click)=\"emitClick()\">\n {{ text }}\n </button>\n `,\n})\nexport class TdFlavoredMarkdownButtonComponent {\n @HostBinding('style.display') display: string = 'inline-block';\n @Input() text: string = '';\n @Input() data: string = '';\n @Output()\n clicked: EventEmitter<ITdFlavoredMarkdownButtonClickEvent> = new EventEmitter<ITdFlavoredMarkdownButtonClickEvent>();\n emitClick(): void {\n this.clicked.emit({ text: this.text, data: this.data });\n }\n}\n\n@Directive({\n selector: '[tdFlavoredMarkdownContainer]',\n})\nexport class TdFlavoredMarkdownContainerDirective {\n constructor(public viewContainerRef: ViewContainerRef, private _renderer: Renderer2) {}\n\n clear(): void {\n this._renderer.setProperty(this.viewContainerRef.element.nativeElement, 'innerHTML', '');\n this.viewContainerRef.clear();\n }\n}\n\nexport type IReplacerFunc<T> = (componentRef: ComponentRef<T>, ...args: any[]) => void;\n\n@Component({\n selector: 'td-flavored-markdown',\n styleUrls: ['./flavored-markdown.component.scss'],\n templateUrl: './flavored-markdown.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdFlavoredMarkdownComponent implements AfterViewInit, OnChanges {\n private _content: string;\n private _simpleLineBreaks: boolean = false;\n private _hostedUrl: string;\n private _anchor: string;\n\n private _components: {} = {};\n private _viewInit: boolean = false;\n /**\n * content?: string\n *\n * Markdown format content to be parsed as material/covalent markup.\n *\n * e.g. README.md content.\n */\n @Input('content')\n set content(content: string) {\n this._content = content;\n }\n\n /**\n * simpleLineBreaks?: string\n *\n * Sets whether newline characters inside paragraphs and spans are parsed as <br/>.\n * Defaults to false.\n */\n @Input('simpleLineBreaks')\n set simpleLineBreaks(simpleLineBreaks: boolean) {\n this._simpleLineBreaks = simpleLineBreaks;\n }\n\n /**\n * hostedUrl?: string\n *\n * If markdown contains relative paths, this is required to generate correct urls\n *\n */\n @Input('hostedUrl')\n set hostedUrl(hostedUrl: string) {\n this._hostedUrl = hostedUrl;\n }\n\n /**\n * anchor?: string\n *\n * Anchor to jump to\n *\n */\n @Input('anchor')\n set anchor(anchor: string) {\n this._anchor = anchor;\n }\n\n /**\n * copyCodeToClipboard?: boolean\n *\n * Display copy button on code snippets to copy code to clipboard.\n *\n */\n @Input() copyCodeToClipboard: boolean = false;\n\n /**\n * copyCodeTooltips?: ICopyCodeTooltips\n *\n * Tooltips for copy button to copy and upon copying.\n */\n @Input() copyCodeTooltips: ICopyCodeTooltips = {};\n /**\n * contentReady?: function\n * Event emitted after the markdown content rendering is finished.\n */\n @Output() contentReady: EventEmitter<undefined> = new EventEmitter<undefined>();\n\n /**\n * buttonClicked?: ITdFlavoredMarkdownButtonClickEvent\n * Event emitted when a button is clicked\n * Is an object containing text and data of button\n */\n @Output()\n buttonClicked: EventEmitter<ITdFlavoredMarkdownButtonClickEvent> = new EventEmitter<ITdFlavoredMarkdownButtonClickEvent>();\n\n @ViewChild(TdFlavoredMarkdownContainerDirective, { static: true }) container: TdFlavoredMarkdownContainerDirective;\n\n constructor(\n private _componentFactoryResolver: ComponentFactoryResolver,\n private _renderer: Renderer2,\n private _changeDetectorRef: ChangeDetectorRef,\n private _injector: Injector,\n private _elementRef: ElementRef,\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n // only anchor changed\n if (changes.anchor && !changes.content && !changes.simpleLineBreaks && !changes.hostedUrl) {\n scrollToAnchor(this._elementRef.nativeElement, this._anchor, false);\n } else {\n this.refresh();\n }\n }\n\n ngAfterViewInit(): void {\n if (!this._content) {\n this._loadContent((<HTMLElement>this.container.viewContainerRef.element.nativeElement).textContent);\n Promise.resolve().then(() => {\n this._viewInit = true;\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n\n refresh(): void {\n if (this._content) {\n this._loadContent(this._content);\n } else if (this._viewInit) {\n this._loadContent((<HTMLElement>this.container.viewContainerRef.element.nativeElement).textContent);\n }\n this._changeDetectorRef.markForCheck();\n }\n\n private _loadContent(markdown: string): void {\n if (markdown && markdown.trim().length > 0) {\n this.container.clear();\n markdown = markdown.replace(/^(\\s|\\t)*\\n+/g, '').replace(/(\\s|\\t)*\\n+(\\s|\\t)*$/g, '');\n // Split markdown by line characters\n let lines: string[] = markdown.split('\\n');\n\n // check how much indentation is used by the first actual markdown line\n const firstLineWhitespace: string = lines[0].match(/^(\\s|\\t)*/)[0];\n\n // Remove all indentation spaces so markdown can be parsed correctly\n const startingWhitespaceRegex: RegExp = new RegExp('^' + firstLineWhitespace);\n lines = lines.map(function (line: string): string {\n return line.replace(startingWhitespaceRegex, '');\n });\n\n // Join lines again with line characters\n markdown = [...lines, '', ''].join('\\n');\n markdown = this._replaceCodeBlocks(markdown);\n markdown = this._replaceCheckbox(markdown);\n markdown = this._replaceTables(markdown);\n markdown = this._replaceLists(markdown);\n markdown = this._replaceButtons(markdown);\n const keys: string[] = Object.keys(this._components);\n // need to sort the placeholders in order of encounter in markdown content\n keys.sort((compA: string, compB: string) => {\n return markdown.indexOf(compA) > markdown.indexOf(compB) ? 1 : -1;\n });\n this._render(markdown, keys[0], keys);\n // TODO: timeout required since resizing of html elements occurs which causes a change in the scroll position\n setTimeout(() => scrollToAnchor(this._elementRef.nativeElement, this._anchor, false), 250);\n this.contentReady.emit();\n Promise.resolve().then(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n\n private _render(markdown: string, key: string, keys: string[]): void {\n if (!markdown) {\n return;\n }\n if (key && markdown.indexOf(key) > -1) {\n const markdownParts: string[] = markdown.split(key);\n keys.shift();\n this._render(markdownParts[0], undefined, undefined);\n this.container.viewContainerRef.insert(this._components[key].hostView, this.container.viewContainerRef.length);\n this._components[key] = undefined;\n delete this._components[key];\n this._render(markdownParts[1], keys[0], keys);\n } else {\n const contentRef: ComponentRef<TdMarkdownComponent> = this._componentFactoryResolver\n .resolveComponentFactory(TdMarkdownComponent)\n .create(this._injector);\n contentRef.instance.content = markdown;\n contentRef.instance.hostedUrl = this._hostedUrl;\n contentRef.instance.simpleLineBreaks = this._simpleLineBreaks;\n contentRef.instance.refresh();\n this.container.viewContainerRef.insert(contentRef.hostView, this.container.viewContainerRef.length);\n }\n }\n\n private _replaceComponent<T>(\n markdown: string,\n type: Type<T>,\n regExp: RegExp,\n replacerFunc: IReplacerFunc<T>,\n ): string {\n let componentIndex: number = 0;\n return markdown.replace(regExp, (...args: any[]) => {\n const componentFactory: ComponentFactory<T> = this._componentFactoryResolver.resolveComponentFactory(type);\n const componentRef: ComponentRef<T> = componentFactory.create(this._injector);\n replacerFunc(componentRef, ...args);\n const key: string = '[' + componentFactory.selector + '-placeholder-' + componentIndex++ + ']';\n this._components[key] = componentRef;\n return key;\n });\n }\n\n private _replaceCheckbox(markdown: string): string {\n const checkboxRegExp: RegExp = /(?:^|\\n)- \\[(x| )\\](.*)/gi;\n return this._replaceComponent(\n markdown,\n MatCheckbox,\n checkboxRegExp,\n (componentRef: ComponentRef<MatCheckbox>, match: string, checked: string, label: string) => {\n componentRef.instance.checked = !!checked.trim();\n componentRef.instance.disabled = true;\n componentRef.instance.labelPosition = 'after';\n this._renderer.setProperty(\n (<HTMLElement>componentRef.instance._elementRef.nativeElement).getElementsByClassName(\n 'mat-checkbox-label',\n )[0],\n 'innerHTML',\n label,\n );\n },\n );\n }\n\n private _replaceButtons(markdown: string): string {\n const buttonRegExp: RegExp = /\\[([^\\[]+)\\](\\(#data=(.*)\\))/i;\n const globalButtonRegExp: RegExp = new RegExp(buttonRegExp.source, buttonRegExp.flags + 'g');\n return this._replaceComponent(\n markdown,\n TdFlavoredMarkdownButtonComponent,\n globalButtonRegExp,\n (componentRef: ComponentRef<TdFlavoredMarkdownButtonComponent>, match: string) => {\n const matches: RegExpExecArray = buttonRegExp.exec(match);\n const text: string = matches[1];\n const data: string = matches[3];\n componentRef.instance.text = text;\n componentRef.instance.data = data;\n componentRef.instance.clicked.subscribe((clickEvent: ITdFlavoredMarkdownButtonClickEvent) =>\n this.buttonClicked.emit(clickEvent),\n );\n },\n );\n }\n\n private _replaceCodeBlocks(markdown: string): string {\n const codeBlockRegExp: RegExp = /(?:^|\\n)```(.*)\\n([\\s\\S]*?)\\n```/g;\n return this._replaceComponent(\n markdown,\n TdHighlightComponent,\n codeBlockRegExp,\n (componentRef: ComponentRef<TdHighlightComponent>, match: string, language: string, codeblock: string) => {\n if (language) {\n componentRef.instance.codeLang = language;\n }\n componentRef.instance.copyCodeToClipboard = this.copyCodeToClipboard;\n componentRef.instance.copyCodeTooltips = this.copyCodeTooltips;\n componentRef.instance.content = codeblock;\n },\n );\n }\n\n private _replaceTables(markdown: string): string {\n const tableRgx: RegExp =\n /^ {0,3}\\|?.+\\|.+\\n[ \\t]{0,3}\\|?[ \\t]*:?[ \\t]*(?:-|=){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*:?[ \\t]*(?:-|=){2,}[\\s\\S]+?(?:\\n\\n|~0)/gm;\n return this._replaceComponent(\n markdown,\n TdFlavoredMarkdownTableComponent,\n tableRgx,\n (componentRef: ComponentRef<TdFlavoredMarkdownTableComponent>, match: string) => {\n const dataTableLines: string[] = match.replace(/(\\s|\\t)*\\n+(\\s|\\t)*$/g, '').split('\\n');\n const columns: string[] = dataTableLines[0]\n .split('|')\n .filter((col: string) => {\n return col;\n })\n .map((s: string) => {\n return s.trim();\n });\n const alignment: string[] = dataTableLines[1]\n .split('|')\n .filter((v: string) => {\n return v;\n })\n .map((s: string) => {\n return s.trim();\n });\n\n const data: any[] = [];\n for (let i: number = 2; i < dataTableLines.length; i++) {\n const rowSplit: string[] = dataTableLines[i]\n .split('|')\n .filter((cell: string) => {\n return cell;\n })\n .map((s: string) => {\n return s.trim();\n });\n const row: any = {};\n columns.forEach((col: string, index: number) => {\n const rowSplitCell: string = rowSplit[index];\n if (rowSplitCell) {\n row[col.toLowerCase().trim()] = rowSplitCell.replace(/`(.*)`/, (m: string, value: string) => {\n return value;\n });\n }\n });\n data.push(row);\n }\n componentRef.instance.columnDefs = columns.map((col: string, index: number) => {\n return {\n label: col,\n name: col.toLowerCase().trim(),\n numeric: /^--*[ \\t]*:[ \\t]*$/.test(alignment[index]),\n };\n });\n componentRef.instance.data = data;\n },\n );\n }\n\n private _replaceLists(markdown: string): string {\n const listRegExp: RegExp = /(?:^|\\n)(( *\\+)[ |\\t](.*)\\n)+/g;\n return this._replaceComponent(\n markdown,\n TdFlavoredListComponent,\n listRegExp,\n (componentRef: ComponentRef<TdFlavoredListComponent>, match: string) => {\n const lineTexts: string[] = match.split(\n new RegExp('\\\\n {' + (match.indexOf('+') - 1).toString() + '}\\\\+[ |\\\\t]'),\n );\n lineTexts.shift();\n const lines: IFlavoredListItem[] = [];\n lineTexts.forEach((text: string, index: number) => {\n const sublineTexts: string[] = text.split(/\\n *\\+ /);\n lines.push({\n line: sublineTexts.shift(),\n sublines: sublineTexts.map((subline: string) => {\n return subline.trim();\n }),\n });\n });\n componentRef.instance.lines = lines;\n },\n );\n }\n}\n","<div tdFlavoredMarkdownContainer>\n <ng-content></ng-content>\n</div>\n","<mat-progress-bar\n [ngClass]=\"'delay'\"\n *ngIf=\"loading\"\n mode=\"indeterminate\"\n color=\"accent\"\n class=\"sticky\"\n></mat-progress-bar>\n<td-flavored-markdown\n *ngIf=\"!loading\"\n [content]=\"content\"\n [hostedUrl]=\"url\"\n [anchor]=\"anchor\"\n [copyCodeToClipboard]=\"copyCodeToClipboard\"\n [copyCodeTooltips]=\"copyCodeTooltips\"\n (contentReady)=\"contentReady.emit()\"\n (buttonClicked)=\"buttonClicked.emit($event)\"\n></td-flavored-markdown>\n","import {\n Component,\n Input,\n ChangeDetectorRef,\n SimpleChanges,\n OnChanges,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { TdMarkdownLoaderService } from '@covalent/markdown';\nimport { ITdFlavoredMarkdownButtonClickEvent } from '../flavored-markdown.component';\nimport { ICopyCodeTooltips } from '@covalent/highlight';\n\n// TODO: make a td-markdown-loader component\n\n@Component({\n selector: 'td-flavored-markdown-loader',\n styleUrls: ['./flavored-markdown-loader.component.scss'],\n templateUrl: './flavored-markdown-loader.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdFlavoredMarkdownLoaderComponent implements OnChanges {\n /**\n * url: string\n * The url of the markdown file.\n */\n @Input() url: string;\n\n /**\n * httpOptions: object\n * HTTP options that can be part of the request.\n */\n @Input() httpOptions: object;\n\n /**\n * anchor: string\n * Anchor to jump to.\n */\n @Input() anchor: string;\n\n /**\n * copyCodeToClipboard?: boolean\n *\n * Display copy button on code snippets to copy code to clipboard.\n *\n */\n @Input() copyCodeToClipboard: boolean = false;\n\n /**\n * copyCodeTooltips?: ICopyCodeTooltips\n *\n * Tooltips for copy button to copy and upon copying.\n */\n @Input() copyCodeTooltips: ICopyCodeTooltips = {};\n\n /**\n * contentReady: void\n * Emitted when markdown rendering is finished.\n */\n @Output() contentReady: EventEmitter<void> = new EventEmitter();\n\n /**\n * loadFailed: Error\n * Emitted when loading of markdown file fails.\n */\n @Output() loadFailed: EventEmitter<Error> = new EventEmitter();\n\n @Output() buttonClicked: EventEmitter<ITdFlavoredMarkdownButtonClickEvent> = new EventEmitter();\n\n content: string;\n loading: boolean = true;\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _markdownUrlLoaderService: TdMarkdownLoaderService,\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.url || changes.httpOptions) {\n this.loadMarkdown();\n }\n }\n\n async loadMarkdown(): Promise<void> {\n this.loading = true;\n this._changeDetectorRef.markForCheck();\n try {\n this.content = await this._markdownUrlLoaderService.load(this.url, this.httpOptions);\n } catch (error) {\n this.loadFailed.emit(error);\n } finally {\n this.loading = false;\n this._changeDetectorRef.markForCheck();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatListModule } from '@angular/material/list';\nimport { CovalentHighlightModule } from '@covalent/highlight';\nimport { CovalentMarkdownModule } from '@covalent/markdown';\n\nimport { TdFlavoredListComponent } from './cfm-list/cfm-list.component';\nimport {\n TdFlavoredMarkdownComponent,\n TdFlavoredMarkdownContainerDirective,\n TdFlavoredMarkdownButtonComponent,\n TdFlavoredMarkdownTableComponent,\n} from './flavored-markdown.component';\nimport { TdFlavoredMarkdownLoaderComponent } from './flavored-markdown-loader/flavored-markdown-loader.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatCheckboxModule,\n MatListModule,\n MatProgressBarModule,\n CovalentHighlightModule,\n CovalentMarkdownModule,\n MatButtonModule,\n MatTableModule,\n MatSortModule,\n ],\n declarations: [\n TdFlavoredListComponent,\n TdFlavoredMarkdownComponent,\n TdFlavoredMarkdownContainerDirective,\n TdFlavoredMarkdownLoaderComponent,\n TdFlavoredMarkdownButtonComponent,\n TdFlavoredMarkdownTableComponent,\n ],\n exports: [TdFlavoredMarkdownComponent, TdFlavoredMarkdownLoaderComponent],\n})\nexport class CovalentFlavoredMarkdownModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"covalent-flavored-markdown.mjs","sources":["../../../../libs/markdown-flavored/src/lib/cfm-list/cfm-list.component.html","../../../../libs/markdown-flavored/src/lib/cfm-list/cfm-list.component.ts","../../../../libs/markdown-flavored/src/lib/flavored-markdown.component.ts","../../../../libs/markdown-flavored/src/lib/flavored-markdown.component.html","../../../../libs/markdown-flavored/src/lib/flavored-markdown-loader/flavored-markdown-loader.component.html","../../../../libs/markdown-flavored/src/lib/flavored-markdown-loader/flavored-markdown-loader.component.ts","../../../../libs/markdown-flavored/src/lib/flavored-markdown.module.ts","../../../../libs/markdown-flavored/src/covalent-flavored-markdown.ts"],"sourcesContent":["<mat-list [attr.dense]=\"dense ? true : null\">\n <ng-template let-line let-last=\"last\" ngFor [ngForOf]=\"lines\">\n <mat-list-item>\n <h4 matLine>\n {{ line.line }}\n </h4>\n <p *ngFor=\"let subline of line.sublines\" matLine>\n {{ subline }}\n </p>\n <mat-divider *ngIf=\"!last\"></mat-divider>\n </mat-list-item>\n </ng-template>\n</mat-list>\n","import { Component, Input } from '@angular/core';\n\nexport interface IFlavoredListItem {\n line: string;\n sublines?: string[];\n}\n\n@Component({\n selector: 'td-cfm-list',\n styleUrls: ['./cfm-list.component.scss'],\n templateUrl: './cfm-list.component.html',\n})\nexport class TdFlavoredListComponent {\n @Input() lines!: IFlavoredListItem[];\n @Input() dense = false;\n}\n","import {\n Component,\n Directive,\n AfterViewInit,\n Input,\n Renderer2,\n Type,\n ComponentFactory,\n ChangeDetectorRef,\n EventEmitter,\n Output,\n ViewContainerRef,\n ComponentFactoryResolver,\n Injector,\n ComponentRef,\n ViewChild,\n ChangeDetectionStrategy,\n OnChanges,\n SimpleChanges,\n ElementRef,\n HostBinding,\n OnInit,\n} from '@angular/core';\n\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatSort } from '@angular/material/sort';\nimport { MatTableDataSource } from '@angular/material/table';\nimport {\n TdFlavoredListComponent,\n IFlavoredListItem,\n} from './cfm-list/cfm-list.component';\nimport { TdHighlightComponent, ICopyCodeTooltips } from '@covalent/highlight';\n\nimport { TdMarkdownComponent, scrollToAnchor } from '@covalent/markdown';\n\nexport interface ITdFlavoredMarkdownButtonClickEvent {\n text: string;\n data: string;\n}\n\nexport interface ITdFlavoredMarkDownTableColumn {\n label: string;\n name: string;\n numeric: boolean;\n}\n\n@Component({\n template: `\n <mat-table [dataSource]=\"dataSource\" matSort>\n <!-- Column Definition -->\n <ng-template ngFor let-column [ngForOf]=\"columnDefs\">\n <ng-container [matColumnDef]=\"column.name\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{\n column.label\n }}</mat-header-cell>\n <mat-cell *matCellDef=\"let row\">{{ row[column.name] }}</mat-cell>\n </ng-container>\n </ng-template>\n <!-- Header and Row Declarations -->\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns\"></mat-row>\n </mat-table>\n `,\n})\nexport class TdFlavoredMarkdownTableComponent implements OnInit, AfterViewInit {\n @Input() columnDefs: ITdFlavoredMarkDownTableColumn[] = [];\n @Input() data!: unknown[];\n @ViewChild(MatSort) sort!: MatSort;\n\n displayedColumns!: string[];\n dataSource!: MatTableDataSource<unknown>;\n\n ngOnInit(): void {\n this.displayedColumns = this.columnDefs.map(\n (c: ITdFlavoredMarkDownTableColumn) => c.name\n );\n this.dataSource = new MatTableDataSource(this.data);\n }\n\n ngAfterViewInit(): void {\n this.dataSource.sort = this.sort;\n }\n}\n\n@Component({\n template: `\n <button mat-raised-button (click)=\"emitClick()\">\n {{ text }}\n </button>\n `,\n})\nexport class TdFlavoredMarkdownButtonComponent {\n @HostBinding('style.display') display = 'inline-block';\n @Input() text = '';\n @Input() data = '';\n @Output()\n clicked: EventEmitter<ITdFlavoredMarkdownButtonClickEvent> = new EventEmitter<ITdFlavoredMarkdownButtonClickEvent>();\n emitClick(): void {\n this.clicked.emit({ text: this.text, data: this.data });\n }\n}\n\n@Directive({\n selector: '[tdFlavoredMarkdownContainer]',\n})\nexport class TdFlavoredMarkdownContainerDirective {\n constructor(\n public viewContainerRef: ViewContainerRef,\n private _renderer: Renderer2\n ) {}\n\n clear(): void {\n this._renderer.setProperty(\n this.viewContainerRef.element.nativeElement,\n 'innerHTML',\n ''\n );\n this.viewContainerRef.clear();\n }\n}\n\nexport type IReplacerFunc<T> = (\n componentRef: ComponentRef<T>,\n ...args: any[]\n) => void;\n\n@Component({\n selector: 'td-flavored-markdown',\n styleUrls: ['./flavored-markdown.component.scss'],\n templateUrl: './flavored-markdown.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdFlavoredMarkdownComponent implements AfterViewInit, OnChanges {\n private _content!: string;\n private _simpleLineBreaks = false;\n private _hostedUrl!: string;\n private _anchor!: string;\n\n private _components: { [key: string]: ComponentRef<unknown> } = {};\n private _viewInit = false;\n /**\n * content?: string\n *\n * Markdown format content to be parsed as material/covalent markup.\n *\n * e.g. README.md content.\n */\n @Input()\n set content(content: string) {\n this._content = content;\n }\n\n /**\n * simpleLineBreaks?: string\n *\n * Sets whether newline characters inside paragraphs and spans are parsed as <br/>.\n * Defaults to false.\n */\n @Input()\n set simpleLineBreaks(simpleLineBreaks: boolean) {\n this._simpleLineBreaks = simpleLineBreaks;\n }\n\n /**\n * hostedUrl?: string\n *\n * If markdown contains relative paths, this is required to generate correct urls\n *\n */\n @Input()\n set hostedUrl(hostedUrl: string) {\n this._hostedUrl = hostedUrl;\n }\n\n /**\n * anchor?: string\n *\n * Anchor to jump to\n *\n */\n @Input()\n set anchor(anchor: string) {\n this._anchor = anchor;\n }\n\n /**\n * copyCodeToClipboard?: boolean\n *\n * Display copy button on code snippets to copy code to clipboard.\n *\n */\n @Input() copyCodeToClipboard? = false;\n\n /**\n * copyCodeTooltips?: ICopyCodeTooltips\n *\n * Tooltips for copy button to copy and upon copying.\n */\n @Input() copyCodeTooltips?: ICopyCodeTooltips = {};\n /**\n * contentReady?: function\n * Event emitted after the markdown content rendering is finished.\n */\n @Output() contentReady: EventEmitter<undefined> =\n new EventEmitter<undefined>();\n\n /**\n * buttonClicked?: ITdFlavoredMarkdownButtonClickEvent\n * Event emitted when a button is clicked\n * Is an object containing text and data of button\n */\n @Output()\n buttonClicked: EventEmitter<ITdFlavoredMarkdownButtonClickEvent> = new EventEmitter<ITdFlavoredMarkdownButtonClickEvent>();\n\n @ViewChild(TdFlavoredMarkdownContainerDirective, { static: true })\n container!: TdFlavoredMarkdownContainerDirective;\n\n constructor(\n private _componentFactoryResolver: ComponentFactoryResolver,\n private _renderer: Renderer2,\n private _changeDetectorRef: ChangeDetectorRef,\n private _injector: Injector,\n private _elementRef: ElementRef\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n // only anchor changed\n if (\n changes['anchor'] &&\n !changes['content'] &&\n !changes['simpleLineBreaks'] &&\n !changes['hostedUrl']\n ) {\n scrollToAnchor(this._elementRef.nativeElement, this._anchor, false);\n } else {\n this.refresh();\n }\n }\n\n ngAfterViewInit(): void {\n if (!this._content) {\n this._loadContent(\n (<HTMLElement>this.container.viewContainerRef.element.nativeElement)\n .textContent ?? ''\n );\n Promise.resolve().then(() => {\n this._viewInit = true;\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n\n refresh(): void {\n if (this._content) {\n this._loadContent(this._content);\n } else if (this._viewInit) {\n this._loadContent(\n (<HTMLElement>this.container.viewContainerRef.element.nativeElement)\n .textContent ?? ''\n );\n }\n this._changeDetectorRef.markForCheck();\n }\n\n private _loadContent(markdown: string): void {\n if (markdown && markdown.trim().length > 0) {\n this.container.clear();\n markdown = markdown\n .replace(/^(\\s|\\t)*\\n+/g, '')\n .replace(/(\\s|\\t)*\\n+(\\s|\\t)*$/g, '');\n // Split markdown by line characters\n let lines: string[] = markdown.split('\\n');\n\n // check how much indentation is used by the first actual markdown line\n const firstLineWhitespaceMatch = lines[0].match(/^(\\s|\\t)*/);\n const firstLineWhitespace = firstLineWhitespaceMatch\n ? firstLineWhitespaceMatch[0]\n : null;\n\n // Remove all indentation spaces so markdown can be parsed correctly\n const startingWhitespaceRegex = new RegExp('^' + firstLineWhitespace);\n lines = lines.map(function (line: string): string {\n return line.replace(startingWhitespaceRegex, '');\n });\n\n // Join lines again with line characters\n markdown = [...lines, '', ''].join('\\n');\n markdown = this._replaceCodeBlocks(markdown);\n markdown = this._replaceCheckbox(markdown);\n markdown = this._replaceTables(markdown);\n markdown = this._replaceLists(markdown);\n markdown = this._replaceButtons(markdown);\n const keys: string[] = Object.keys(this._components);\n // need to sort the placeholders in order of encounter in markdown content\n keys.sort((compA: string, compB: string) => {\n return markdown.indexOf(compA) > markdown.indexOf(compB) ? 1 : -1;\n });\n this._render(markdown, keys[0], keys);\n // TODO: timeout required since resizing of html elements occurs which causes a change in the scroll position\n setTimeout(\n () =>\n scrollToAnchor(this._elementRef.nativeElement, this._anchor, false),\n 250\n );\n this.contentReady.emit();\n Promise.resolve().then(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n\n private _render(markdown: string, key: string, keys: string[]): void {\n if (!markdown) {\n return;\n }\n if (key && markdown.indexOf(key) > -1) {\n const markdownParts: string[] = markdown.split(key);\n keys.shift();\n this._render(markdownParts[0], '', []);\n this.container.viewContainerRef.insert(\n this._components[key].hostView,\n this.container.viewContainerRef.length\n );\n delete this._components[key];\n this._render(markdownParts[1], keys[0], keys);\n } else {\n const contentRef: ComponentRef<TdMarkdownComponent> =\n this._componentFactoryResolver\n .resolveComponentFactory(TdMarkdownComponent)\n .create(this._injector);\n contentRef.instance.content = markdown;\n contentRef.instance.hostedUrl = this._hostedUrl;\n contentRef.instance.simpleLineBreaks = this._simpleLineBreaks;\n contentRef.instance.refresh();\n this.container.viewContainerRef.insert(\n contentRef.hostView,\n this.container.viewContainerRef.length\n );\n }\n }\n\n private _replaceComponent<T>(\n markdown: string,\n type: Type<T>,\n regExp: RegExp,\n replacerFunc: IReplacerFunc<T>\n ): string {\n let componentIndex = 0;\n return markdown.replace(regExp, (...args: any[]) => {\n const componentFactory: ComponentFactory<T> =\n this._componentFactoryResolver.resolveComponentFactory(type);\n const componentRef: ComponentRef<T> = componentFactory.create(\n this._injector\n );\n replacerFunc(componentRef, ...args);\n const key: string =\n '[' +\n componentFactory.selector +\n '-placeholder-' +\n componentIndex++ +\n ']';\n this._components[key] = componentRef;\n return key;\n });\n }\n\n private _replaceCheckbox(markdown: string): string {\n const checkboxRegExp = /(?:^|\\n)- \\[(x| )\\](.*)/gi;\n return this._replaceComponent(\n markdown,\n MatCheckbox,\n checkboxRegExp,\n (\n componentRef: ComponentRef<MatCheckbox>,\n match: string,\n checked: string,\n label: string\n ) => {\n componentRef.instance.checked = !!checked.trim();\n componentRef.instance.disabled = true;\n componentRef.instance.labelPosition = 'after';\n this._renderer.setProperty(\n (<HTMLElement>(\n componentRef.instance._elementRef.nativeElement\n )).getElementsByClassName('mat-checkbox-label')[0],\n 'innerHTML',\n label\n );\n }\n );\n }\n\n private _replaceButtons(markdown: string): string {\n const buttonRegExp = /\\[([^[]+)\\](\\(#data=(.*)\\))/i;\n const globalButtonRegExp = new RegExp(\n buttonRegExp.source,\n buttonRegExp.flags + 'g'\n );\n return this._replaceComponent(\n markdown,\n TdFlavoredMarkdownButtonComponent,\n globalButtonRegExp,\n (\n componentRef: ComponentRef<TdFlavoredMarkdownButtonComponent>,\n match: string\n ) => {\n const matches = buttonRegExp.exec(match);\n if (!matches) {\n return;\n }\n const text: string = matches[1];\n const data: string = matches[3];\n componentRef.instance.text = text;\n componentRef.instance.data = data;\n componentRef.instance.clicked.subscribe(\n (clickEvent: ITdFlavoredMarkdownButtonClickEvent) =>\n this.buttonClicked.emit(clickEvent)\n );\n }\n );\n }\n\n private _replaceCodeBlocks(markdown: string): string {\n const codeBlockRegExp = /(?:^|\\n)```(.*)\\n([\\s\\S]*?)\\n```/g;\n return this._replaceComponent(\n markdown,\n TdHighlightComponent,\n codeBlockRegExp,\n (\n componentRef: ComponentRef<TdHighlightComponent>,\n match: string,\n language: string,\n codeblock: string\n ) => {\n if (language) {\n componentRef.instance.codeLang = language;\n }\n componentRef.instance.copyCodeToClipboard = this.copyCodeToClipboard;\n componentRef.instance.copyCodeTooltips = this.copyCodeTooltips;\n componentRef.instance.content = codeblock;\n }\n );\n }\n\n private _replaceTables(markdown: string): string {\n const tableRgx =\n /^ {0,3}\\|?.+\\|.+\\n[ \\t]{0,3}\\|?[ \\t]*:?[ \\t]*(?:-|=){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*:?[ \\t]*(?:-|=){2,}[\\s\\S]+?(?:\\n\\n|~0)/gm;\n return this._replaceComponent(\n markdown,\n TdFlavoredMarkdownTableComponent,\n tableRgx,\n (\n componentRef: ComponentRef<TdFlavoredMarkdownTableComponent>,\n match: string\n ) => {\n const dataTableLines: string[] = match\n .replace(/(\\s|\\t)*\\n+(\\s|\\t)*$/g, '')\n .split('\\n');\n const columns: string[] = dataTableLines[0]\n .split('|')\n .filter((col: string) => {\n return col;\n })\n .map((s: string) => {\n return s.trim();\n });\n const alignment: string[] = dataTableLines[1]\n .split('|')\n .filter((v: string) => {\n return v;\n })\n .map((s: string) => {\n return s.trim();\n });\n\n const data: any[] = [];\n for (let i = 2; i < dataTableLines.length; i++) {\n const rowSplit: string[] = dataTableLines[i]\n .split('|')\n .filter((cell: string) => {\n return cell;\n })\n .map((s: string) => {\n return s.trim();\n });\n const row: any = {};\n columns.forEach((col: string, index: number) => {\n const rowSplitCell: string = rowSplit[index];\n if (rowSplitCell) {\n row[col.toLowerCase().trim()] = rowSplitCell.replace(\n /`(.*)`/,\n (m: string, value: string) => {\n return value;\n }\n );\n }\n });\n data.push(row);\n }\n componentRef.instance.columnDefs = columns.map(\n (col: string, index: number) => {\n return {\n label: col,\n name: col ? col.toLowerCase().trim() : `column ${index}`,\n numeric: /^--*[ \\t]*:[ \\t]*$/.test(alignment[index]),\n };\n }\n );\n componentRef.instance.data = data;\n }\n );\n }\n\n private _replaceLists(markdown: string): string {\n const listRegExp = /(?:^|\\n)(( *(\\+|-))[ |\\t](.*)\\n)+/g;\n const listCharRegExp = new RegExp(/\\+|-/);\n return this._replaceComponent(\n markdown,\n TdFlavoredListComponent,\n listRegExp,\n (componentRef: ComponentRef<TdFlavoredListComponent>, match: string) => {\n const matchIndex =\n match.indexOf('+') !== -1 ? match.indexOf('+') : match.indexOf('-');\n const lineTexts: string[] = match.split(\n new RegExp('\\\\n {' + (matchIndex - 1).toString() + '}(\\\\+|-)[ |\\\\t]')\n );\n lineTexts.shift();\n const lines: IFlavoredListItem[] = [];\n lineTexts.forEach((text: string) => {\n const sublineTexts: string[] = text.split(/\\n *(\\+|-) /);\n const lineText = sublineTexts.shift() ?? '';\n\n if (listCharRegExp.test(lineText)) {\n return;\n }\n\n lines.push({\n line: lineText,\n sublines: sublineTexts.map((subline: string) => {\n if (listCharRegExp.test(subline)) {\n return '';\n }\n return subline.trim();\n }),\n });\n });\n\n componentRef.instance.lines = lines;\n }\n );\n }\n}\n","<div tdFlavoredMarkdownContainer>\n <ng-content></ng-content>\n</div>\n","<mat-progress-bar\n [ngClass]=\"'delay'\"\n *ngIf=\"loading\"\n mode=\"indeterminate\"\n color=\"accent\"\n class=\"sticky\"\n></mat-progress-bar>\n<td-flavored-markdown\n *ngIf=\"!loading\"\n [content]=\"content\"\n [hostedUrl]=\"url ?? ''\"\n [anchor]=\"anchor ?? ''\"\n [copyCodeToClipboard]=\"copyCodeToClipboard\"\n [copyCodeTooltips]=\"copyCodeTooltips\"\n (contentReady)=\"contentReady.emit()\"\n (buttonClicked)=\"buttonClicked.emit($event)\"\n></td-flavored-markdown>\n","import {\n Component,\n Input,\n ChangeDetectorRef,\n SimpleChanges,\n OnChanges,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { TdMarkdownLoaderService } from '@covalent/markdown';\nimport { ITdFlavoredMarkdownButtonClickEvent } from '../flavored-markdown.component';\nimport { ICopyCodeTooltips } from '@covalent/highlight';\n\n// TODO: make a td-markdown-loader component\n\n@Component({\n selector: 'td-flavored-markdown-loader',\n styleUrls: ['./flavored-markdown-loader.component.scss'],\n templateUrl: './flavored-markdown-loader.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TdFlavoredMarkdownLoaderComponent implements OnChanges {\n /**\n * url: string\n * The url of the markdown file.\n */\n @Input() url?: string;\n\n /**\n * httpOptions: object\n * HTTP options that can be part of the request.\n */\n @Input() httpOptions?: object;\n\n /**\n * anchor: string\n * Anchor to jump to.\n */\n @Input() anchor?: string;\n\n /**\n * copyCodeToClipboard?: boolean\n *\n * Display copy button on code snippets to copy code to clipboard.\n *\n */\n @Input() copyCodeToClipboard? = false;\n\n /**\n * copyCodeTooltips?: ICopyCodeTooltips\n *\n * Tooltips for copy button to copy and upon copying.\n */\n @Input() copyCodeTooltips?: ICopyCodeTooltips = {};\n\n /**\n * contentReady: void\n * Emitted when markdown rendering is finished.\n */\n @Output() contentReady: EventEmitter<void> = new EventEmitter();\n\n /**\n * loadFailed: Error\n * Emitted when loading of markdown file fails.\n */\n @Output() loadFailed: EventEmitter<Error> = new EventEmitter();\n\n @Output() buttonClicked: EventEmitter<ITdFlavoredMarkdownButtonClickEvent> =\n new EventEmitter();\n\n content!: string;\n loading = true;\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _markdownUrlLoaderService: TdMarkdownLoaderService\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['url'] || changes['httpOptions']) {\n this.loadMarkdown();\n }\n }\n\n async loadMarkdown(): Promise<void> {\n this.loading = true;\n this._changeDetectorRef.markForCheck();\n try {\n this.content = await this._markdownUrlLoaderService.load(\n this.url ?? '',\n this.httpOptions\n );\n } catch (error) {\n this.loadFailed.emit(error as Error);\n } finally {\n this.loading = false;\n this._changeDetectorRef.markForCheck();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatListModule } from '@angular/material/list';\nimport { CovalentHighlightModule } from '@covalent/highlight';\n\nimport { CovalentMarkdownModule } from '@covalent/markdown';\nimport { TdFlavoredListComponent } from './cfm-list/cfm-list.component';\nimport {\n TdFlavoredMarkdownComponent,\n TdFlavoredMarkdownContainerDirective,\n TdFlavoredMarkdownButtonComponent,\n TdFlavoredMarkdownTableComponent,\n} from './flavored-markdown.component';\nimport { TdFlavoredMarkdownLoaderComponent } from './flavored-markdown-loader/flavored-markdown-loader.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatCheckboxModule,\n MatListModule,\n MatProgressBarModule,\n CovalentHighlightModule,\n CovalentMarkdownModule,\n MatButtonModule,\n MatTableModule,\n MatSortModule,\n ],\n declarations: [\n TdFlavoredListComponent,\n TdFlavoredMarkdownComponent,\n TdFlavoredMarkdownContainerDirective,\n TdFlavoredMarkdownLoaderComponent,\n TdFlavoredMarkdownButtonComponent,\n TdFlavoredMarkdownTableComponent,\n ],\n exports: [TdFlavoredMarkdownComponent, TdFlavoredMarkdownLoaderComponent],\n})\nexport class CovalentFlavoredMarkdownModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -7,5 +7,5 @@ export declare class TdFlavoredListComponent {
|
|
|
7
7
|
lines: IFlavoredListItem[];
|
|
8
8
|
dense: boolean;
|
|
9
9
|
static ɵfac: i0.ɵɵFactoryDeclaration<TdFlavoredListComponent, never>;
|
|
10
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<TdFlavoredListComponent, "cfm-list", never, { "lines": "lines"; "dense": "dense"; }, {}, never, never>;
|
|
10
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TdFlavoredListComponent, "td-cfm-list", never, { "lines": "lines"; "dense": "dense"; }, {}, never, never>;
|
|
11
11
|
}
|
|
@@ -10,30 +10,30 @@ export declare class TdFlavoredMarkdownLoaderComponent implements OnChanges {
|
|
|
10
10
|
* url: string
|
|
11
11
|
* The url of the markdown file.
|
|
12
12
|
*/
|
|
13
|
-
url
|
|
13
|
+
url?: string;
|
|
14
14
|
/**
|
|
15
15
|
* httpOptions: object
|
|
16
16
|
* HTTP options that can be part of the request.
|
|
17
17
|
*/
|
|
18
|
-
httpOptions
|
|
18
|
+
httpOptions?: object;
|
|
19
19
|
/**
|
|
20
20
|
* anchor: string
|
|
21
21
|
* Anchor to jump to.
|
|
22
22
|
*/
|
|
23
|
-
anchor
|
|
23
|
+
anchor?: string;
|
|
24
24
|
/**
|
|
25
25
|
* copyCodeToClipboard?: boolean
|
|
26
26
|
*
|
|
27
27
|
* Display copy button on code snippets to copy code to clipboard.
|
|
28
28
|
*
|
|
29
29
|
*/
|
|
30
|
-
copyCodeToClipboard
|
|
30
|
+
copyCodeToClipboard?: boolean | undefined;
|
|
31
31
|
/**
|
|
32
32
|
* copyCodeTooltips?: ICopyCodeTooltips
|
|
33
33
|
*
|
|
34
34
|
* Tooltips for copy button to copy and upon copying.
|
|
35
35
|
*/
|
|
36
|
-
copyCodeTooltips
|
|
36
|
+
copyCodeTooltips?: ICopyCodeTooltips;
|
|
37
37
|
/**
|
|
38
38
|
* contentReady: void
|
|
39
39
|
* Emitted when markdown rendering is finished.
|
|
@@ -88,13 +88,13 @@ export declare class TdFlavoredMarkdownComponent implements AfterViewInit, OnCha
|
|
|
88
88
|
* Display copy button on code snippets to copy code to clipboard.
|
|
89
89
|
*
|
|
90
90
|
*/
|
|
91
|
-
copyCodeToClipboard
|
|
91
|
+
copyCodeToClipboard?: boolean | undefined;
|
|
92
92
|
/**
|
|
93
93
|
* copyCodeTooltips?: ICopyCodeTooltips
|
|
94
94
|
*
|
|
95
95
|
* Tooltips for copy button to copy and upon copying.
|
|
96
96
|
*/
|
|
97
|
-
copyCodeTooltips
|
|
97
|
+
copyCodeTooltips?: ICopyCodeTooltips;
|
|
98
98
|
/**
|
|
99
99
|
* contentReady?: function
|
|
100
100
|
* Event emitted after the markdown content rendering is finished.
|
|
File without changes
|