@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.
Files changed (27) hide show
  1. package/README.md +36 -43
  2. package/covalent-flavored-markdown.d.ts +1 -1
  3. package/esm2020/covalent-flavored-markdown.mjs +2 -2
  4. package/esm2020/lib/cfm-list/cfm-list.component.mjs +60 -0
  5. package/esm2020/lib/flavored-markdown-loader/flavored-markdown-loader.component.mjs +104 -0
  6. package/esm2020/lib/flavored-markdown.component.mjs +501 -0
  7. package/esm2020/lib/flavored-markdown.module.mjs +69 -0
  8. package/esm2020/public_api.mjs +4 -4
  9. package/fesm2015/covalent-flavored-markdown.mjs +80 -49
  10. package/fesm2015/covalent-flavored-markdown.mjs.map +1 -1
  11. package/fesm2020/covalent-flavored-markdown.mjs +76 -49
  12. package/fesm2020/covalent-flavored-markdown.mjs.map +1 -1
  13. package/{cfm-list → lib/cfm-list}/cfm-list.component.d.ts +1 -1
  14. package/{flavored-markdown-loader → lib/flavored-markdown-loader}/flavored-markdown-loader.component.d.ts +5 -5
  15. package/{flavored-markdown.component.d.ts → lib/flavored-markdown.component.d.ts} +2 -2
  16. package/{flavored-markdown.module.d.ts → lib/flavored-markdown.module.d.ts} +0 -0
  17. package/package.json +20 -23
  18. package/public_api.d.ts +3 -3
  19. package/cfm-list/cfm-list.component.scss +0 -0
  20. package/esm2020/cfm-list/cfm-list.component.mjs +0 -60
  21. package/esm2020/flavored-markdown-loader/flavored-markdown-loader.component.mjs +0 -102
  22. package/esm2020/flavored-markdown.component.mjs +0 -476
  23. package/esm2020/flavored-markdown.module.mjs +0 -69
  24. package/esm2020/index.mjs +0 -2
  25. package/flavored-markdown-loader/flavored-markdown-loader.component.scss +0 -28
  26. package/flavored-markdown.component.scss +0 -33
  27. package/index.d.ts +0 -1
@@ -54,8 +54,8 @@ class TdFlavoredListComponent {
54
54
  this.dense = false;
55
55
  }
56
56
  }
57
- /** @nocollapse */ /** @nocollapse */ TdFlavoredListComponent.ɵfac = function TdFlavoredListComponent_Factory(t) { return new (t || TdFlavoredListComponent)(); };
58
- /** @nocollapse */ /** @nocollapse */ TdFlavoredListComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: TdFlavoredListComponent, selectors: [["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) {
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
- /** @nocollapse */ /** @nocollapse */ TdFlavoredMarkdownTableComponent.ɵfac = function TdFlavoredMarkdownTableComponent_Factory(t) { return new (t || TdFlavoredMarkdownTableComponent)(); };
124
- /** @nocollapse */ /** @nocollapse */ TdFlavoredMarkdownTableComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: TdFlavoredMarkdownTableComponent, selectors: [["ng-component"]], viewQuery: function TdFlavoredMarkdownTableComponent_Query(rf, ctx) { if (rf & 1) {
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>{{ column.label }}</mat-header-cell>
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
- /** @nocollapse */ /** @nocollapse */ TdFlavoredMarkdownButtonComponent.ɵfac = function TdFlavoredMarkdownButtonComponent_Factory(t) { return new (t || TdFlavoredMarkdownButtonComponent)(); };
182
- /** @nocollapse */ /** @nocollapse */ TdFlavoredMarkdownButtonComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: TdFlavoredMarkdownButtonComponent, selectors: [["ng-component"]], hostVars: 2, hostBindings: function TdFlavoredMarkdownButtonComponent_HostBindings(rf, ctx) { if (rf & 2) {
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
- /** @nocollapse */ /** @nocollapse */ TdFlavoredMarkdownContainerDirective.ɵfac = function TdFlavoredMarkdownContainerDirective_Factory(t) { return new (t || TdFlavoredMarkdownContainerDirective)(i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i0.Renderer2)); };
223
- /** @nocollapse */ /** @nocollapse */ TdFlavoredMarkdownContainerDirective.ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: TdFlavoredMarkdownContainerDirective, selectors: [["", "tdFlavoredMarkdownContainer", ""]] });
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.anchor && !changes.content && !changes.simpleLineBreaks && !changes.hostedUrl) {
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.textContent);
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.textContent);
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.replace(/^(\s|\t)*\n+/g, '').replace(/(\s|\t)*\n+(\s|\t)*$/g, '');
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 firstLineWhitespace = lines[0].match(/^(\s|\t)*/)[0];
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], undefined, undefined);
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 = '[' + componentFactory.selector + '-placeholder-' + componentIndex++ + ']';
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 = /\[([^\[]+)\](\(#data=(.*)\))/i;
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.replace(/(\s|\t)*\n+(\s|\t)*$/g, '').split('\n');
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)(( *\+)[ |\t](.*)\n)+/g;
502
+ const listRegExp = /(?:^|\n)(( *(\+|-))[ |\t](.*)\n)+/g;
503
+ const listCharRegExp = new RegExp(/\+|-/);
483
504
  return this._replaceComponent(markdown, TdFlavoredListComponent, listRegExp, (componentRef, match) => {
484
- const lineTexts = match.split(new RegExp('\\n {' + (match.indexOf('+') - 1).toString() + '}\\+[ |\\t]'));
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, index) => {
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: sublineTexts.shift(),
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
- /** @nocollapse */ /** @nocollapse */ 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)); };
501
- /** @nocollapse */ /** @nocollapse */ TdFlavoredMarkdownComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: TdFlavoredMarkdownComponent, selectors: [["td-flavored-markdown"]], viewQuery: function TdFlavoredMarkdownComponent_Query(rf, ctx) { if (rf & 1) {
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%] td-data-table, [_nghost-%COMP%] mat-checkbox{display:block}[_nghost-%COMP%] td-data-table, [_nghost-%COMP%] td-highlight, [_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:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:justify;justify-content:space-between}"], changeDetection: 0 });
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 td-data-table,:host ::ng-deep mat-checkbox{display:block}:host ::ng-deep td-data-table,:host ::ng-deep td-highlight,: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:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:justify;justify-content:space-between}\n"] }]
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
- i0.ɵɵproperty("content", ctx_r1.content)("hostedUrl", ctx_r1.url)("anchor", ctx_r1.anchor)("copyCodeToClipboard", ctx_r1.copyCodeToClipboard)("copyCodeTooltips", ctx_r1.copyCodeTooltips);
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.url || changes.httpOptions) {
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
- /** @nocollapse */ /** @nocollapse */ TdFlavoredMarkdownLoaderComponent.ɵfac = function TdFlavoredMarkdownLoaderComponent_Factory(t) { return new (t || TdFlavoredMarkdownLoaderComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1$2.TdMarkdownLoaderService)); };
606
- /** @nocollapse */ /** @nocollapse */ TdFlavoredMarkdownLoaderComponent.ɵcmp = /** @pureOrBreakMyCode */ 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) {
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%]{-webkit-animation:delay-animation;animation:delay-animation;-webkit-animation-duration:.6s;animation-duration:.6s}@-webkit-keyframes delay-animation{0%{opacity:0}99%{opacity:0}to{opacity:1}}@keyframes delay-animation{0%{opacity:0}99%{opacity:0}to{opacity:1}}"], changeDetection: 0 });
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{-webkit-animation:delay-animation;animation:delay-animation;-webkit-animation-duration:.6s;animation-duration:.6s}@-webkit-keyframes delay-animation{0%{opacity:0}99%{opacity:0}to{opacity:1}}@keyframes delay-animation{0%{opacity:0}99%{opacity:0}to{opacity:1}}\n"] }]
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
- /** @nocollapse */ /** @nocollapse */ CovalentFlavoredMarkdownModule.ɵfac = function CovalentFlavoredMarkdownModule_Factory(t) { return new (t || CovalentFlavoredMarkdownModule)(); };
638
- /** @nocollapse */ /** @nocollapse */ CovalentFlavoredMarkdownModule.ɵmod = /** @pureOrBreakMyCode */ i0.ɵɵdefineNgModule({ type: CovalentFlavoredMarkdownModule });
639
- /** @nocollapse */ /** @nocollapse */ CovalentFlavoredMarkdownModule.ɵinj = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjector({ imports: [[
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":";;;;;;;;;;;;;;;;;;;;;;IAMM,4BAAiD;IAC/C,YACF;IAAA,iBAAI;;;IADF,eACF;IADE,2CACF;;;IACA,8BAAyC;;;IAP3C,qCAAe;IACb,6BAAY;IACV,YACF;IAAA,iBAAK;IACL,kFAEI;IACJ,sGAAyC;IAC3C,iBAAgB;;;;IANZ,eACF;IADE,6CACF;IACuB,eAAgB;IAAhB,0CAAgB;IAGzB,eAAW;IAAX,+BAAW;;MCGlB,uBAAuB;IALpC;QAOW,UAAK,GAAG,KAAK,CAAC;KACxB;;8FAHY,uBAAuB;0EAAvB,uBAAuB;QDZpC,gCAA6C;QAC3C,wFAUc;QAChB,iBAAW;;QAZD,gDAAkC;QACE,eAAiB;QAAjB,mCAAiB;;uFCWlD,uBAAuB;cALnC,SAAS;2BACE,aAAa;gBAKd,KAAK;kBAAb,KAAK;YACG,KAAK;kBAAb,KAAK;;;;ICsCE,0CAAmD;IAAA,YAEjD;IAAA,iBAAkB;;;IAF+B,eAEjD;IAFiD,qCAEjD;;;IACF,gCAAgC;IAAA,YAAsB;IAAA,iBAAW;;;;IAAjC,eAAsB;IAAtB,4CAAsB;;;IAJxD,gCAA2C;IACzC,uHAEoB;IACpB,yGAAiE;IACnE,0BAAe;;;IALD,6CAA4B;;;IAQ5C,iCAAqE;;;IACrE,0BAAmE;;;MAI5D,gCAAgC;IAlB7C;QAmBW,eAAU,GAAqC,EAAE,CAAC;KAiB5D;IAVC,QAAQ;QACN,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CACzC,CAAC,CAAiC,KAAK,CAAC,CAAC,IAAI,CAC9C,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACrD;IAED,eAAe;QACb,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;KAClC;;gHAjBU,gCAAgC;mFAAhC,gCAAgC;uBAGhC,OAAO;;;;;QAnBhB,oCAA6C;QAE3C,iGAOc;QAEd,uGAAqE;QACrE,yFAAmE;QACrE,iBAAY;;QAbD,2CAAyB;QAEJ,eAAsB;QAAtB,wCAAsB;QASnC,eAAiC;QAAjC,sDAAiC;QACpB,eAAyB;QAAzB,uDAAyB;;uFAIhD,gCAAgC;cAlB5C,SAAS;eAAC;gBACT,QAAQ,EAAE;;;;;;;;;;;;;;;GAeT;aACF;gBAEU,UAAU;kBAAlB,KAAK;YACG,IAAI;kBAAZ,KAAK;YACc,IAAI;kBAAvB,SAAS;mBAAC,OAAO;;MAwBP,iCAAiC;IAP9C;QAQgC,YAAO,GAAG,cAAc,CAAC;QAC9C,SAAI,GAAG,EAAE,CAAC;QACV,SAAI,GAAG,EAAE,CAAC;QAEnB,YAAO,GAAsD,IAAI,YAAY,EAAuC,CAAC;KAItH;IAHC,SAAS;QACP,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;KACzD;;kHARU,iCAAiC;oFAAjC,iCAAiC;;;QAL1C,iCAAgD;QAAtB,8GAAS,eAAW,IAAC;QAC7C,YACF;QAAA,iBAAS;;QADP,eACF;QADE,yCACF;;uFAGS,iCAAiC;cAP7C,SAAS;eAAC;gBACT,QAAQ,EAAE;;;;GAIT;aACF;gBAE+B,OAAO;kBAApC,WAAW;mBAAC,eAAe;YACnB,IAAI;kBAAZ,KAAK;YACG,IAAI;kBAAZ,KAAK;YAEN,OAAO;kBADN,MAAM;;MAUI,oCAAoC;IAC/C,YACS,gBAAkC,EACjC,SAAoB;QADrB,qBAAgB,GAAhB,gBAAgB,CAAkB;QACjC,cAAS,GAAT,SAAS,CAAW;KAC1B;IAEJ,KAAK;QACH,IAAI,CAAC,SAAS,CAAC,WAAW,CACxB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,aAAa,EAC3C,WAAW,EACX,EAAE,CACH,CAAC;QACF,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;KAC/B;;wHAbU,oCAAoC;uFAApC,oCAAoC;uFAApC,oCAAoC;cAHhD,SAAS;eAAC;gBACT,QAAQ,EAAE,+BAA+B;aAC1C;;MA4BY,2BAA2B;IAqFtC,YACU,yBAAmD,EACnD,SAAoB,EACpB,kBAAqC,EACrC,SAAmB,EACnB,WAAuB;QAJvB,8BAAyB,GAAzB,yBAAyB,CAA0B;QACnD,cAAS,GAAT,SAAS,CAAW;QACpB,uBAAkB,GAAlB,kBAAkB,CAAmB;QACrC,cAAS,GAAT,SAAS,CAAU;QACnB,gBAAW,GAAX,WAAW,CAAY;QAxFzB,sBAAiB,GAAG,KAAK,CAAC;QAI1B,gBAAW,GAA6C,EAAE,CAAC;QAC3D,cAAS,GAAG,KAAK,CAAC;;;;;;;QAoDjB,wBAAmB,GAAI,KAAK,CAAC;;;;;;QAO7B,qBAAgB,GAAuB,EAAE,CAAC;;;;;QAKzC,iBAAY,GACpB,IAAI,YAAY,EAAa,CAAC;;;;;;QAQhC,kBAAa,GAAsD,IAAI,YAAY,EAAuC,CAAC;KAWvH;;;;;;;;IA5EJ,IACI,OAAO,CAAC,OAAe;QACzB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;KACzB;;;;;;;IAQD,IACI,gBAAgB,CAAC,gBAAyB;QAC5C,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;KAC3C;;;;;;;IAQD,IACI,SAAS,CAAC,SAAiB;QAC7B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;KAC7B;;;;;;;IAQD,IACI,MAAM,CAAC,MAAc;QACvB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;KACvB;IA0CD,WAAW,CAAC,OAAsB;;QAEhC,IACE,OAAO,CAAC,QAAQ,CAAC;YACjB,CAAC,OAAO,CAAC,SAAS,CAAC;YACnB,CAAC,OAAO,CAAC,kBAAkB,CAAC;YAC5B,CAAC,OAAO,CAAC,WAAW,CAAC,EACrB;YACA,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SACrE;aAAM;YACL,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;KACF;IAED,eAAe;QACb,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,YAAY,CACD,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,aAAc;iBACjE,WAAW,IAAI,EAAE,CACrB,CAAC;YACF,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;gBACrB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;aACxC,CAAC,CAAC;SACJ;KACF;IAED,OAAO;QACL,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAClC;aAAM,IAAI,IAAI,CAAC,SAAS,EAAE;YACzB,IAAI,CAAC,YAAY,CACD,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,aAAc;iBACjE,WAAW,IAAI,EAAE,CACrB,CAAC;SACH;QACD,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KACxC;IAEO,YAAY,CAAC,QAAgB;QACnC,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1C,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACvB,QAAQ,GAAG,QAAQ;iBAChB,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;iBAC5B,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;;YAExC,IAAI,KAAK,GAAa,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;;YAG3C,MAAM,wBAAwB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC7D,MAAM,mBAAmB,GAAG,wBAAwB;kBAChD,wBAAwB,CAAC,CAAC,CAAC;kBAC3B,IAAI,CAAC;;YAGT,MAAM,uBAAuB,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,mBAAmB,CAAC,CAAC;YACtE,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,IAAY;gBACtC,OAAO,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;aAClD,CAAC,CAAC;;YAGH,QAAQ,GAAG,CAAC,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAC7C,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAC3C,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACzC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC1C,MAAM,IAAI,GAAa,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;YAErD,IAAI,CAAC,IAAI,CAAC,CAAC,KAAa,EAAE,KAAa;gBACrC,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;aACnE,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;;YAEtC,UAAU,CACR,MACE,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EACrE,GAAG,CACJ,CAAC;YACF,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YACzB,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;gBACrB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;aACxC,CAAC,CAAC;SACJ;KACF;IAEO,OAAO,CAAC,QAAgB,EAAE,GAAW,EAAE,IAAc;QAC3D,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;SACR;QACD,IAAI,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;YACrC,MAAM,aAAa,GAAa,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CACpC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,QAAQ,EAC9B,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CACvC,CAAC;YACF,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;SAC/C;aAAM;YACL,MAAM,UAAU,GACd,IAAI,CAAC,yBAAyB;iBAC3B,uBAAuB,CAAC,mBAAmB,CAAC;iBAC5C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5B,UAAU,CAAC,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC;YACvC,UAAU,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;YAChD,UAAU,CAAC,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC;YAC9D,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CACpC,UAAU,CAAC,QAAQ,EACnB,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CACvC,CAAC;SACH;KACF;IAEO,iBAAiB,CACvB,QAAgB,EAChB,IAAa,EACb,MAAc,EACd,YAA8B;QAE9B,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,IAAW;YAC7C,MAAM,gBAAgB,GACpB,IAAI,CAAC,yBAAyB,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAC/D,MAAM,YAAY,GAAoB,gBAAgB,CAAC,MAAM,CAC3D,IAAI,CAAC,SAAS,CACf,CAAC;YACF,YAAY,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,CAAC;YACpC,MAAM,GAAG,GACP,GAAG;gBACH,gBAAgB,CAAC,QAAQ;gBACzB,eAAe;gBACf,cAAc,EAAE;gBAChB,GAAG,CAAC;YACN,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;YACrC,OAAO,GAAG,CAAC;SACZ,CAAC,CAAC;KACJ;IAEO,gBAAgB,CAAC,QAAgB;QACvC,MAAM,cAAc,GAAG,2BAA2B,CAAC;QACnD,OAAO,IAAI,CAAC,iBAAiB,CAC3B,QAAQ,EACR,WAAW,EACX,cAAc,EACd,CACE,YAAuC,EACvC,KAAa,EACb,OAAe,EACf,KAAa;YAEb,YAAY,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACjD,YAAY,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;YACtC,YAAY,CAAC,QAAQ,CAAC,aAAa,GAAG,OAAO,CAAC;YAC9C,IAAI,CAAC,SAAS,CAAC,WAAW,CACV,CACZ,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,EAC9C,sBAAsB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAClD,WAAW,EACX,KAAK,CACN,CAAC;SACH,CACF,CAAC;KACH;IAEO,eAAe,CAAC,QAAgB;QACtC,MAAM,YAAY,GAAG,8BAA8B,CAAC;QACpD,MAAM,kBAAkB,GAAG,IAAI,MAAM,CACnC,YAAY,CAAC,MAAM,EACnB,YAAY,CAAC,KAAK,GAAG,GAAG,CACzB,CAAC;QACF,OAAO,IAAI,CAAC,iBAAiB,CAC3B,QAAQ,EACR,iCAAiC,EACjC,kBAAkB,EAClB,CACE,YAA6D,EAC7D,KAAa;YAEb,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,CAAC,OAAO,EAAE;gBACZ,OAAO;aACR;YACD,MAAM,IAAI,GAAW,OAAO,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,IAAI,GAAW,OAAO,CAAC,CAAC,CAAC,CAAC;YAChC,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;YAClC,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;YAClC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CACrC,CAAC,UAA+C,KAC9C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CACtC,CAAC;SACH,CACF,CAAC;KACH;IAEO,kBAAkB,CAAC,QAAgB;QACzC,MAAM,eAAe,GAAG,mCAAmC,CAAC;QAC5D,OAAO,IAAI,CAAC,iBAAiB,CAC3B,QAAQ,EACR,oBAAoB,EACpB,eAAe,EACf,CACE,YAAgD,EAChD,KAAa,EACb,QAAgB,EAChB,SAAiB;YAEjB,IAAI,QAAQ,EAAE;gBACZ,YAAY,CAAC,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;aAC3C;YACD,YAAY,CAAC,QAAQ,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;YACrE,YAAY,CAAC,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAC/D,YAAY,CAAC,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC;SAC3C,CACF,CAAC;KACH;IAEO,cAAc,CAAC,QAAgB;QACrC,MAAM,QAAQ,GACZ,wHAAwH,CAAC;QAC3H,OAAO,IAAI,CAAC,iBAAiB,CAC3B,QAAQ,EACR,gCAAgC,EAChC,QAAQ,EACR,CACE,YAA4D,EAC5D,KAAa;YAEb,MAAM,cAAc,GAAa,KAAK;iBACnC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;iBACpC,KAAK,CAAC,IAAI,CAAC,CAAC;YACf,MAAM,OAAO,GAAa,cAAc,CAAC,CAAC,CAAC;iBACxC,KAAK,CAAC,GAAG,CAAC;iBACV,MAAM,CAAC,CAAC,GAAW;gBAClB,OAAO,GAAG,CAAC;aACZ,CAAC;iBACD,GAAG,CAAC,CAAC,CAAS;gBACb,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;aACjB,CAAC,CAAC;YACL,MAAM,SAAS,GAAa,cAAc,CAAC,CAAC,CAAC;iBAC1C,KAAK,CAAC,GAAG,CAAC;iBACV,MAAM,CAAC,CAAC,CAAS;gBAChB,OAAO,CAAC,CAAC;aACV,CAAC;iBACD,GAAG,CAAC,CAAC,CAAS;gBACb,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;aACjB,CAAC,CAAC;YAEL,MAAM,IAAI,GAAU,EAAE,CAAC;YACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC9C,MAAM,QAAQ,GAAa,cAAc,CAAC,CAAC,CAAC;qBACzC,KAAK,CAAC,GAAG,CAAC;qBACV,MAAM,CAAC,CAAC,IAAY;oBACnB,OAAO,IAAI,CAAC;iBACb,CAAC;qBACD,GAAG,CAAC,CAAC,CAAS;oBACb,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;iBACjB,CAAC,CAAC;gBACL,MAAM,GAAG,GAAQ,EAAE,CAAC;gBACpB,OAAO,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,KAAa;oBACzC,MAAM,YAAY,GAAW,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAC7C,IAAI,YAAY,EAAE;wBAChB,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,YAAY,CAAC,OAAO,CAClD,QAAQ,EACR,CAAC,CAAS,EAAE,KAAa;4BACvB,OAAO,KAAK,CAAC;yBACd,CACF,CAAC;qBACH;iBACF,CAAC,CAAC;gBACH,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAChB;YACD,YAAY,CAAC,QAAQ,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,CAC5C,CAAC,GAAW,EAAE,KAAa;gBACzB,OAAO;oBACL,KAAK,EAAE,GAAG;oBACV,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,GAAG,UAAU,KAAK,EAAE;oBACxD,OAAO,EAAE,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;iBACrD,CAAC;aACH,CACF,CAAC;YACF,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;SACnC,CACF,CAAC;KACH;IAEO,aAAa,CAAC,QAAgB;QACpC,MAAM,UAAU,GAAG,oCAAoC,CAAC;QACxD,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,iBAAiB,CAC3B,QAAQ,EACR,uBAAuB,EACvB,UAAU,EACV,CAAC,YAAmD,EAAE,KAAa;YACjE,MAAM,UAAU,GACd,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACtE,MAAM,SAAS,GAAa,KAAK,CAAC,KAAK,CACrC,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,UAAU,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,iBAAiB,CAAC,CACtE,CAAC;YACF,SAAS,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,KAAK,GAAwB,EAAE,CAAC;YACtC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAY;gBAC7B,MAAM,YAAY,GAAa,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBACzD,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;gBAE5C,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;oBACjC,OAAO;iBACR;gBAED,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,QAAQ;oBACd,QAAQ,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,OAAe;wBACzC,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;4BAChC,OAAO,EAAE,CAAC;yBACX;wBACD,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;qBACvB,CAAC;iBACH,CAAC,CAAC;aACJ,CAAC,CAAC;YAEH,YAAY,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;SACrC,CACF,CAAC;KACH;;sGAlaU,2BAA2B;8EAA3B,2BAA2B;uBAkF3B,oCAAoC;;;;;;QCtNjD,8BAAiC;QAC/B,kBAAyB;QAC3B,iBAAM;sBDuGO,oCAAoC;uFA2BpC,2BAA2B;cANvC,SAAS;2BACE,sBAAsB,mBAGf,uBAAuB,CAAC,MAAM;mLAkB3C,OAAO;kBADV,KAAK;YAYF,gBAAgB;kBADnB,KAAK;YAYF,SAAS;kBADZ,KAAK;YAYF,MAAM;kBADT,KAAK;YAWG,mBAAmB;kBAA3B,KAAK;YAOG,gBAAgB;kBAAxB,KAAK;YAKI,YAAY;kBAArB,MAAM;YASP,aAAa;kBADZ,MAAM;YAIP,SAAS;kBADR,SAAS;mBAAC,oCAAoC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;;IEtNnE,sCAMoB;;IALlB,iCAAmB;;;;IAMrB,+CASC;IAFC,2NAAgB,0BAAmB,IAAC,sNACnB,iCAA0B,IADP;IAErC,iBAAuB;;;;;IAPtB,wCAAmB,sFAAA,sFAAA,mDAAA,6CAAA;;ACKrB;MAQa,iCAAiC;IAoD5C,YACU,kBAAqC,EACrC,yBAAkD;QADlD,uBAAkB,GAAlB,kBAAkB,CAAmB;QACrC,8BAAyB,GAAzB,yBAAyB,CAAyB;;;;;;;QA7BnD,wBAAmB,GAAI,KAAK,CAAC;;;;;;QAO7B,qBAAgB,GAAuB,EAAE,CAAC;;;;;QAMzC,iBAAY,GAAuB,IAAI,YAAY,EAAE,CAAC;;;;;QAMtD,eAAU,GAAwB,IAAI,YAAY,EAAE,CAAC;QAErD,kBAAa,GACrB,IAAI,YAAY,EAAE,CAAC;QAGrB,YAAO,GAAG,IAAI,CAAC;KAKX;IAEJ,WAAW,CAAC,OAAsB;QAChC,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE;YAC5C,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;KACF;IAED,MAAM,YAAY;QAChB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;QACvC,IAAI;YACF,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,IAAI,CACtD,IAAI,CAAC,GAAG,IAAI,EAAE,EACd,IAAI,CAAC,WAAW,CACjB,CAAC;SACH;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAc,CAAC,CAAC;SACtC;gBAAS;YACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC;KACF;;kHA7EU,iCAAiC;oFAAjC,iCAAiC;QDtB9C,4GAMoB;QACpB,oHASwB;;QAdrB,kCAAa;QAMb,eAAc;QAAd,mCAAc;;uFCcJ,iCAAiC;cAN7C,SAAS;2BACE,6BAA6B,mBAGtB,uBAAuB,CAAC,MAAM;4GAOtC,GAAG;kBAAX,KAAK;YAMG,WAAW;kBAAnB,KAAK;YAMG,MAAM;kBAAd,KAAK;YAQG,mBAAmB;kBAA3B,KAAK;YAOG,gBAAgB;kBAAxB,KAAK;YAMI,YAAY;kBAArB,MAAM;YAMG,UAAU;kBAAnB,MAAM;YAEG,aAAa;kBAAtB,MAAM;;;MC1BI,8BAA8B;;4GAA9B,8BAA8B;gFAA9B,8BAA8B;oFArBhC;YACP,YAAY;YACZ,iBAAiB;YACjB,aAAa;YACb,oBAAoB;YACpB,uBAAuB;YACvB,sBAAsB;YACtB,eAAe;YACf,cAAc;YACd,aAAa;SACd;uFAWU,8BAA8B;cAtB1C,QAAQ;eAAC;gBACR,OAAO,EAAE;oBACP,YAAY;oBACZ,iBAAiB;oBACjB,aAAa;oBACb,oBAAoB;oBACpB,uBAAuB;oBACvB,sBAAsB;oBACtB,eAAe;oBACf,cAAc;oBACd,aAAa;iBACd;gBACD,YAAY,EAAE;oBACZ,uBAAuB;oBACvB,2BAA2B;oBAC3B,oCAAoC;oBACpC,iCAAiC;oBACjC,iCAAiC;oBACjC,gCAAgC;iBACjC;gBACD,OAAO,EAAE,CAAC,2BAA2B,EAAE,iCAAiC,CAAC;aAC1E;;wFACY,8BAA8B,mBATvC,uBAAuB;QACvB,2BAA2B;QAC3B,oCAAoC;QACpC,iCAAiC;QACjC,iCAAiC;QACjC,gCAAgC,aAhBhC,YAAY;QACZ,iBAAiB;QACjB,aAAa;QACb,oBAAoB;QACpB,uBAAuB;QACvB,sBAAsB;QACtB,eAAe;QACf,cAAc;QACd,aAAa,aAUL,2BAA2B,EAAE,iCAAiC;;ACxC1E;;;;;;"}
@@ -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: string;
13
+ url?: string;
14
14
  /**
15
15
  * httpOptions: object
16
16
  * HTTP options that can be part of the request.
17
17
  */
18
- httpOptions: object;
18
+ httpOptions?: object;
19
19
  /**
20
20
  * anchor: string
21
21
  * Anchor to jump to.
22
22
  */
23
- anchor: string;
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: boolean;
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: ICopyCodeTooltips;
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: boolean;
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: ICopyCodeTooltips;
97
+ copyCodeTooltips?: ICopyCodeTooltips;
98
98
  /**
99
99
  * contentReady?: function
100
100
  * Event emitted after the markdown content rendering is finished.