@covalent/markdown 6.3.0 → 6.4.1

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.
@@ -33,9 +33,9 @@ export class TdMarkdownLoaderService {
33
33
  }
34
34
  }
35
35
  }
36
- TdMarkdownLoaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: TdMarkdownLoaderService, deps: [{ token: i1.HttpClient }, { token: i2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Injectable });
37
- TdMarkdownLoaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: TdMarkdownLoaderService });
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: TdMarkdownLoaderService, decorators: [{
36
+ TdMarkdownLoaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TdMarkdownLoaderService, deps: [{ token: i1.HttpClient }, { token: i2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Injectable });
37
+ TdMarkdownLoaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TdMarkdownLoaderService });
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TdMarkdownLoaderService, decorators: [{
39
39
  type: Injectable
40
40
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.DomSanitizer }]; } });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24tbG9hZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21hcmtkb3duL3NyYy9saWIvbWFya2Rvd24tbG9hZGVyL21hcmtkb3duLWxvYWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFnQixNQUFNLHNCQUFzQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7QUFHL0UsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQyxZQUFvQixLQUFpQixFQUFVLFVBQXdCO1FBQW5ELFVBQUssR0FBTCxLQUFLLENBQVk7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFjO0lBQUcsQ0FBQztJQUUzRSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQVcsRUFBRSxjQUFzQixFQUFFO1FBQzlDLE1BQU0sWUFBWSxHQUNoQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzRCxJQUFJLFFBQVEsR0FBVyxZQUFZLENBQUM7UUFDcEMsSUFBSSxZQUFZLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDOUIsUUFBUSxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN4QztRQUVELE1BQU0sUUFBUSxHQUFxQyxNQUFNLElBQUksQ0FBQyxLQUFLO2FBQ2hFLEdBQUcsQ0FBQyxRQUFRLEVBQUU7WUFDYixHQUFHLFdBQVc7WUFDZCxZQUFZLEVBQUUsTUFBTTtZQUNwQixPQUFPLEVBQUUsVUFBVTtTQUNwQixDQUFDO2FBQ0QsU0FBUyxFQUFFLENBQUM7UUFDZixNQUFNLFdBQVcsR0FBVyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEUsSUFDRSxXQUFXLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztZQUNsQyxXQUFXLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUNyQztZQUNBLE9BQU8sUUFBUSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7U0FDN0I7YUFBTTtZQUNMLE1BQU0sS0FBSyxDQUFDLEdBQUcsV0FBVyxnQ0FBZ0MsQ0FBQyxDQUFDO1NBQzdEO0lBQ0gsQ0FBQzs7b0hBM0JVLHVCQUF1Qjt3SEFBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBTZWN1cml0eUNvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaXNHaXRodWJIcmVmLCByYXdHaXRodWJIcmVmIH0gZnJvbSAnLi4vbWFya2Rvd24tdXRpbHMvbWFya2Rvd24tdXRpbHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGRNYXJrZG93bkxvYWRlclNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9odHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIF9zYW5pdGl6ZXI6IERvbVNhbml0aXplcikge31cblxuICBhc3luYyBsb2FkKHVybDogc3RyaW5nLCBodHRwT3B0aW9uczogb2JqZWN0ID0ge30pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHNhbml0aXplZFVybDogc3RyaW5nID1cbiAgICAgIHRoaXMuX3Nhbml0aXplci5zYW5pdGl6ZShTZWN1cml0eUNvbnRleHQuVVJMLCB1cmwpID8/ICcnO1xuICAgIGxldCB1cmxUb0dldDogc3RyaW5nID0gc2FuaXRpemVkVXJsO1xuICAgIGlmIChpc0dpdGh1YkhyZWYoc2FuaXRpemVkVXJsKSkge1xuICAgICAgdXJsVG9HZXQgPSByYXdHaXRodWJIcmVmKHNhbml0aXplZFVybCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzcG9uc2U6IEh0dHBSZXNwb25zZTxzdHJpbmc+IHwgdW5kZWZpbmVkID0gYXdhaXQgdGhpcy5faHR0cFxuICAgICAgLmdldCh1cmxUb0dldCwge1xuICAgICAgICAuLi5odHRwT3B0aW9ucyxcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCcsXG4gICAgICAgIG9ic2VydmU6ICdyZXNwb25zZScsXG4gICAgICB9KVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICAgIGNvbnN0IGNvbnRlbnRUeXBlOiBzdHJpbmcgPSByZXNwb25zZT8uaGVhZGVycy5nZXQoJ0NvbnRlbnQtVHlwZScpID8/ICcnO1xuICAgIGlmIChcbiAgICAgIGNvbnRlbnRUeXBlLmluY2x1ZGVzKCd0ZXh0L3BsYWluJykgfHxcbiAgICAgIGNvbnRlbnRUeXBlLmluY2x1ZGVzKCd0ZXh0L21hcmtkb3duJylcbiAgICApIHtcbiAgICAgIHJldHVybiByZXNwb25zZT8uYm9keSA/PyAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgRXJyb3IoYCR7Y29udGVudFR5cGV9IGlzIG5vdCBhIGhhbmRsZWQgY29udGVudCB0eXBlYCk7XG4gICAgfVxuICB9XG59XG4iXX0=
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24tbG9hZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21hcmtkb3duL3NyYy9saWIvbWFya2Rvd24tbG9hZGVyL21hcmtkb3duLWxvYWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFnQixNQUFNLHNCQUFzQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7QUFHL0UsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQyxZQUFvQixLQUFpQixFQUFVLFVBQXdCO1FBQW5ELFVBQUssR0FBTCxLQUFLLENBQVk7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFjO0lBQUcsQ0FBQztJQUUzRSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQVcsRUFBRSxjQUFzQixFQUFFO1FBQzlDLE1BQU0sWUFBWSxHQUNoQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzRCxJQUFJLFFBQVEsR0FBVyxZQUFZLENBQUM7UUFDcEMsSUFBSSxZQUFZLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDOUIsUUFBUSxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN4QztRQUVELE1BQU0sUUFBUSxHQUFxQyxNQUFNLElBQUksQ0FBQyxLQUFLO2FBQ2hFLEdBQUcsQ0FBQyxRQUFRLEVBQUU7WUFDYixHQUFHLFdBQVc7WUFDZCxZQUFZLEVBQUUsTUFBTTtZQUNwQixPQUFPLEVBQUUsVUFBVTtTQUNwQixDQUFDO2FBQ0QsU0FBUyxFQUFFLENBQUM7UUFDZixNQUFNLFdBQVcsR0FBVyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEUsSUFDRSxXQUFXLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztZQUNsQyxXQUFXLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUNyQztZQUNBLE9BQU8sUUFBUSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7U0FDN0I7YUFBTTtZQUNMLE1BQU0sS0FBSyxDQUFDLEdBQUcsV0FBVyxnQ0FBZ0MsQ0FBQyxDQUFDO1NBQzdEO0lBQ0gsQ0FBQzs7cUhBM0JVLHVCQUF1Qjt5SEFBdkIsdUJBQXVCOzRGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBTZWN1cml0eUNvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaXNHaXRodWJIcmVmLCByYXdHaXRodWJIcmVmIH0gZnJvbSAnLi4vbWFya2Rvd24tdXRpbHMvbWFya2Rvd24tdXRpbHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGRNYXJrZG93bkxvYWRlclNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9odHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIF9zYW5pdGl6ZXI6IERvbVNhbml0aXplcikge31cblxuICBhc3luYyBsb2FkKHVybDogc3RyaW5nLCBodHRwT3B0aW9uczogb2JqZWN0ID0ge30pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHNhbml0aXplZFVybDogc3RyaW5nID1cbiAgICAgIHRoaXMuX3Nhbml0aXplci5zYW5pdGl6ZShTZWN1cml0eUNvbnRleHQuVVJMLCB1cmwpID8/ICcnO1xuICAgIGxldCB1cmxUb0dldDogc3RyaW5nID0gc2FuaXRpemVkVXJsO1xuICAgIGlmIChpc0dpdGh1YkhyZWYoc2FuaXRpemVkVXJsKSkge1xuICAgICAgdXJsVG9HZXQgPSByYXdHaXRodWJIcmVmKHNhbml0aXplZFVybCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzcG9uc2U6IEh0dHBSZXNwb25zZTxzdHJpbmc+IHwgdW5kZWZpbmVkID0gYXdhaXQgdGhpcy5faHR0cFxuICAgICAgLmdldCh1cmxUb0dldCwge1xuICAgICAgICAuLi5odHRwT3B0aW9ucyxcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCcsXG4gICAgICAgIG9ic2VydmU6ICdyZXNwb25zZScsXG4gICAgICB9KVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICAgIGNvbnN0IGNvbnRlbnRUeXBlOiBzdHJpbmcgPSByZXNwb25zZT8uaGVhZGVycy5nZXQoJ0NvbnRlbnQtVHlwZScpID8/ICcnO1xuICAgIGlmIChcbiAgICAgIGNvbnRlbnRUeXBlLmluY2x1ZGVzKCd0ZXh0L3BsYWluJykgfHxcbiAgICAgIGNvbnRlbnRUeXBlLmluY2x1ZGVzKCd0ZXh0L21hcmtkb3duJylcbiAgICApIHtcbiAgICAgIHJldHVybiByZXNwb25zZT8uYm9keSA/PyAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgRXJyb3IoYCR7Y29udGVudFR5cGV9IGlzIG5vdCBhIGhhbmRsZWQgY29udGVudCB0eXBlYCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -4,22 +4,41 @@ import { scrollToAnchor, genHeadingId, isAnchorLink, removeTrailingHash, rawGith
4
4
  import * as showdown from 'showdown';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@angular/platform-browser";
7
+ function isAbsoluteUrl(currentHref) {
8
+ // Regular Expression to check url
9
+ const RgExp = new RegExp('^(?:[a-z]+:)?//', 'i');
10
+ return RgExp.test(currentHref);
11
+ }
7
12
  // TODO: assumes it is a github url
8
- // allow override somehow
9
- function generateAbsoluteHref(currentHref, relativeHref) {
13
+ // handles absolute and relative URLs
14
+ function generateHref(currentHref, relativeHref) {
10
15
  if (currentHref && relativeHref) {
11
- const currentUrl = new URL(currentHref);
12
- const path = currentUrl.pathname.split('/').slice(1, -1).join('/');
13
- const correctUrl = new URL(currentHref);
14
- if (relativeHref.startsWith('/')) {
15
- // url is relative to top level
16
- const orgAndRepo = path.split('/').slice(0, 3).join('/');
17
- correctUrl.pathname = `${orgAndRepo}${relativeHref}`;
16
+ if (isAbsoluteUrl(currentHref)) {
17
+ const currentUrl = new URL(currentHref);
18
+ const path = currentUrl.pathname
19
+ .split('/')
20
+ .slice(1, -1)
21
+ .join('/');
22
+ const correctUrl = new URL(currentHref);
23
+ if (relativeHref.startsWith('/')) {
24
+ // url is relative to top level
25
+ const orgAndRepo = path.split('/').slice(0, 3).join('/');
26
+ correctUrl.pathname = `${orgAndRepo}${relativeHref}`;
27
+ }
28
+ else {
29
+ correctUrl.pathname = `${path}/${relativeHref}`;
30
+ }
31
+ return correctUrl.href;
18
32
  }
19
33
  else {
20
- correctUrl.pathname = `${path}/${relativeHref}`;
34
+ const path = currentHref.split('/').slice(0, -1).join('/');
35
+ if (relativeHref.startsWith('/')) {
36
+ return `${path}${relativeHref}`;
37
+ }
38
+ else {
39
+ return `${path}/${relativeHref}`;
40
+ }
21
41
  }
22
- return correctUrl.href;
23
42
  }
24
43
  return '';
25
44
  }
@@ -43,11 +62,13 @@ function normalizeHtmlHrefs(html, currentHref) {
43
62
  if (url.pathname.endsWith('.md')) {
44
63
  // only check .md urls
45
64
  const hrefWithoutHash = removeTrailingHash(link.getAttribute('href'));
46
- url.href = generateAbsoluteHref(currentHref, hrefWithoutHash);
65
+ // since this might be a relative path, don't assign it to url.href
66
+ // relative path won't be a valid href to assign to URL
67
+ const newHref = generateHref(currentHref, hrefWithoutHash);
47
68
  if (originalHash) {
48
69
  url.hash = genHeadingId(originalHash);
49
70
  }
50
- link.href = url.href;
71
+ link.href = newHref;
51
72
  }
52
73
  link.target = '_blank';
53
74
  }
@@ -81,7 +102,7 @@ function normalizeImageSrcs(html, currentHref) {
81
102
  }
82
103
  }
83
104
  catch {
84
- image.src = generateAbsoluteHref(isGithubHref(currentHref)
105
+ image.src = generateHref(isGithubHref(currentHref)
85
106
  ? rawGithubHref(currentHref)
86
107
  : currentHref, src);
87
108
  }
@@ -271,9 +292,9 @@ export class TdMarkdownComponent {
271
292
  return converter.makeHtml(markdownToParse);
272
293
  }
273
294
  }
274
- TdMarkdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: TdMarkdownComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.DomSanitizer }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
275
- TdMarkdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: TdMarkdownComponent, selector: "td-markdown", inputs: { content: "content", simpleLineBreaks: "simpleLineBreaks", hostedUrl: "hostedUrl", anchor: "anchor" }, outputs: { contentReady: "contentReady" }, host: { properties: { "class": "this.class" } }, usesOnChanges: true, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host.td-markdown::ng-deep a{background-color:transparent}:host.td-markdown::ng-deep a:active,:host.td-markdown::ng-deep a:hover{outline-width:0}:host.td-markdown::ng-deep strong{font-weight:inherit;font-weight:bolder}:host.td-markdown::ng-deep h1{font-size:2em;margin:.67em 0}:host.td-markdown::ng-deep img{border-style:none}:host.td-markdown::ng-deep svg:not(:root){overflow:hidden}:host.td-markdown::ng-deep code,:host.td-markdown::ng-deep kbd,:host.td-markdown::ng-deep pre{font-family:monospace;font-size:1em}:host.td-markdown::ng-deep hr{box-sizing:content-box;height:0;overflow:visible}:host.td-markdown::ng-deep input{font:inherit;margin:0;overflow:visible}:host.td-markdown::ng-deep button:-moz-focusring,:host.td-markdown::ng-deep [type=button]:-moz-focusring,:host.td-markdown::ng-deep [type=reset]:-moz-focusring,:host.td-markdown::ng-deep [type=submit]:-moz-focusring{outline:1px dotted ButtonText}:host.td-markdown::ng-deep [type=checkbox]{box-sizing:border-box;padding:0}:host.td-markdown::ng-deep table{border-spacing:0;border-collapse:collapse}:host.td-markdown::ng-deep td,:host.td-markdown::ng-deep th{padding:0}:host.td-markdown::ng-deep *{box-sizing:border-box}:host.td-markdown::ng-deep input{font:13px/1.4 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol}:host.td-markdown::ng-deep a{text-decoration:none}:host.td-markdown::ng-deep a:hover,:host.td-markdown::ng-deep a:active{text-decoration:underline}:host.td-markdown::ng-deep hr{height:0;margin:15px 0;overflow:hidden;background:transparent;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep hr:before{display:table;content:\"\"}:host.td-markdown::ng-deep hr:after{display:table;clear:both;content:\"\"}:host.td-markdown::ng-deep h1,:host.td-markdown::ng-deep h2,:host.td-markdown::ng-deep h3,:host.td-markdown::ng-deep h4,:host.td-markdown::ng-deep h5,:host.td-markdown::ng-deep h6{margin-top:0;margin-bottom:0;line-height:1.5}:host.td-markdown::ng-deep h1{font-size:30px}:host.td-markdown::ng-deep h2{font-size:21px}:host.td-markdown::ng-deep h3{font-size:16px}:host.td-markdown::ng-deep h4{font-size:14px}:host.td-markdown::ng-deep h5{font-size:12px}:host.td-markdown::ng-deep h6{font-size:11px}:host.td-markdown::ng-deep p{margin-top:0;margin-bottom:10px}:host.td-markdown::ng-deep blockquote{margin:0}:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol{padding-left:0;margin-top:0;margin-bottom:0}:host.td-markdown::ng-deep ol ol,:host.td-markdown::ng-deep ul ol{list-style-type:lower-roman}:host.td-markdown::ng-deep ul ul ol,:host.td-markdown::ng-deep ul ol ol,:host.td-markdown::ng-deep ol ul ol,:host.td-markdown::ng-deep ol ol ol{list-style-type:lower-alpha}:host.td-markdown::ng-deep dd{margin-left:0}:host.td-markdown::ng-deep code{font-family:Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px}:host.td-markdown::ng-deep pre{margin-top:0;margin-bottom:0;font:12px Consolas,Liberation Mono,Menlo,Courier,monospace}:host.td-markdown::ng-deep .pl-0{padding-left:0!important}:host.td-markdown::ng-deep .pl-1{padding-left:3px!important}:host.td-markdown::ng-deep .pl-2{padding-left:6px!important}:host.td-markdown::ng-deep .pl-3{padding-left:12px!important}:host.td-markdown::ng-deep .pl-4{padding-left:24px!important}:host.td-markdown::ng-deep .pl-5{padding-left:36px!important}:host.td-markdown::ng-deep .pl-6{padding-left:48px!important}:host.td-markdown::ng-deep .form-select::-ms-expand{opacity:0}:host.td-markdown::ng-deep a:not([href]){color:inherit;text-decoration:none}:host.td-markdown::ng-deep h1,:host.td-markdown::ng-deep h2,:host.td-markdown::ng-deep h3,:host.td-markdown::ng-deep h4,:host.td-markdown::ng-deep h5,:host.td-markdown::ng-deep h6{margin-top:1em;margin-bottom:16px;font-weight:700;line-height:1.4}:host.td-markdown::ng-deep h1 .octicon-link,:host.td-markdown::ng-deep h2 .octicon-link,:host.td-markdown::ng-deep h3 .octicon-link,:host.td-markdown::ng-deep h4 .octicon-link,:host.td-markdown::ng-deep h5 .octicon-link,:host.td-markdown::ng-deep h6 .octicon-link{color:#000;vertical-align:middle;visibility:hidden}:host.td-markdown::ng-deep h1:hover .anchor,:host.td-markdown::ng-deep h2:hover .anchor,:host.td-markdown::ng-deep h3:hover .anchor,:host.td-markdown::ng-deep h4:hover .anchor,:host.td-markdown::ng-deep h5:hover .anchor,:host.td-markdown::ng-deep h6:hover .anchor{text-decoration:none}:host.td-markdown::ng-deep h1:hover .anchor .octicon-link,:host.td-markdown::ng-deep h2:hover .anchor .octicon-link,:host.td-markdown::ng-deep h3:hover .anchor .octicon-link,:host.td-markdown::ng-deep h4:hover .anchor .octicon-link,:host.td-markdown::ng-deep h5:hover .anchor .octicon-link,:host.td-markdown::ng-deep h6:hover .anchor .octicon-link{visibility:visible}:host.td-markdown::ng-deep h1{padding-bottom:.3em;font-size:2.25em;line-height:1.2;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep h1 .anchor{line-height:1}:host.td-markdown::ng-deep h2{padding-bottom:.3em;font-size:1.75em;line-height:1.225;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep h2 .anchor{line-height:1}:host.td-markdown::ng-deep h3{font-size:1.5em;line-height:1.43}:host.td-markdown::ng-deep h3 .anchor{line-height:1.2}:host.td-markdown::ng-deep h4{font-size:1.25em}:host.td-markdown::ng-deep h4 .anchor{line-height:1.2}:host.td-markdown::ng-deep h5{font-size:1em}:host.td-markdown::ng-deep h5 .anchor{line-height:1.1}:host.td-markdown::ng-deep h6{font-size:1em}:host.td-markdown::ng-deep h6 .anchor{line-height:1.1}:host.td-markdown::ng-deep p,:host.td-markdown::ng-deep blockquote,:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol,:host.td-markdown::ng-deep dl,:host.td-markdown::ng-deep table,:host.td-markdown::ng-deep pre{margin-top:0;margin-bottom:16px}:host.td-markdown::ng-deep hr{margin:16px 0}:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol{padding-left:2em}:host.td-markdown::ng-deep ul ul,:host.td-markdown::ng-deep ul ol,:host.td-markdown::ng-deep ol ol,:host.td-markdown::ng-deep ol ul{margin-top:0;margin-bottom:0}:host.td-markdown::ng-deep li>p{margin-top:16px}:host.td-markdown::ng-deep dl{padding:0}:host.td-markdown::ng-deep dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}:host.td-markdown::ng-deep dl dd{padding:0 16px;margin-bottom:16px}:host.td-markdown::ng-deep blockquote{padding:0 15px;border-left-width:4px;border-left-style:solid}:host.td-markdown::ng-deep blockquote>:first-child{margin-top:0}:host.td-markdown::ng-deep blockquote>:last-child{margin-bottom:0}:host.td-markdown::ng-deep table{display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}:host.td-markdown::ng-deep table th{font-weight:700}:host.td-markdown::ng-deep table th,:host.td-markdown::ng-deep table td{padding:6px 13px;border-width:1px;border-style:solid}:host.td-markdown::ng-deep table tr{border-top-width:1px;border-top-style:solid}:host.td-markdown::ng-deep img{max-width:100%;box-sizing:content-box}:host.td-markdown::ng-deep code{padding:.2em 0;margin:0;font-size:85%;border-radius:3px}:host.td-markdown::ng-deep code:before,:host.td-markdown::ng-deep code:after{letter-spacing:-.2em}:host.td-markdown::ng-deep pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:transparent;border:0}:host.td-markdown::ng-deep .highlight{margin-bottom:16px}:host.td-markdown::ng-deep .highlight pre,:host.td-markdown::ng-deep pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;border-radius:3px}:host.td-markdown::ng-deep .highlight pre{margin-bottom:0;word-break:normal}:host.td-markdown::ng-deep pre{word-wrap:normal}:host.td-markdown::ng-deep pre code{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}:host.td-markdown::ng-deep pre code:before,:host.td-markdown::ng-deep pre code:after{content:normal}:host.td-markdown::ng-deep kbd{display:inline-block;padding:3px 5px;font-size:11px;line-height:10px;vertical-align:middle;border-style:solid;border-width:1px;border-radius:3px}:host.td-markdown::ng-deep .pl-c{color:#969896}:host.td-markdown::ng-deep .pl-c1,:host.td-markdown::ng-deep .pl-s .pl-v{color:#0086b3}:host.td-markdown::ng-deep .pl-e,:host.td-markdown::ng-deep .pl-en{color:#795da3}:host.td-markdown::ng-deep .pl-s .pl-s1,:host.td-markdown::ng-deep .pl-smi{color:#333}:host.td-markdown::ng-deep .pl-ent{color:#63a35c}:host.td-markdown::ng-deep .pl-k{color:#a71d5d}:host.td-markdown::ng-deep .pl-pds,:host.td-markdown::ng-deep .pl-s,:host.td-markdown::ng-deep .pl-s .pl-pse .pl-s1,:host.td-markdown::ng-deep .pl-sr,:host.td-markdown::ng-deep .pl-sr .pl-cce,:host.td-markdown::ng-deep .pl-sr .pl-sra,:host.td-markdown::ng-deep .pl-sr .pl-sre{color:#183691}:host.td-markdown::ng-deep .pl-v{color:#ed6a43}:host.td-markdown::ng-deep .pl-id{color:#b52a1d}:host.td-markdown::ng-deep .pl-ii{background-color:#b52a1d;color:#f8f8f8}:host.td-markdown::ng-deep .pl-sr .pl-cce{color:#63a35c;font-weight:700}:host.td-markdown::ng-deep .pl-ml{color:#693a17}:host.td-markdown::ng-deep .pl-mh,:host.td-markdown::ng-deep .pl-mh .pl-en,:host.td-markdown::ng-deep .pl-ms{color:#1d3e81;font-weight:700}:host.td-markdown::ng-deep .pl-mq{color:teal}:host.td-markdown::ng-deep .pl-mi{color:#333;font-style:italic}:host.td-markdown::ng-deep .pl-mb{color:#333;font-weight:700}:host.td-markdown::ng-deep .pl-md{background-color:#ffecec;color:#bd2c00}:host.td-markdown::ng-deep .pl-mi1{background-color:#eaffea;color:#55a532}:host.td-markdown::ng-deep .pl-mdr{color:#795da3;font-weight:700}:host.td-markdown::ng-deep .pl-mo{color:#1d3e81}:host.td-markdown::ng-deep kbd{display:inline-block;padding:3px 5px;font:11px Consolas,Liberation Mono,Menlo,Courier,monospace;line-height:10px;vertical-align:middle;background-color:#fcfcfc;border:solid 1px #cccccc;border-bottom-color:#bbb;border-radius:3px;box-shadow:inset 0 -1px #bbb}:host.td-markdown::ng-deep .full-commit .btn-outline:not(:disabled):hover{color:#4078c0;border:1px solid #4078c0}:host.td-markdown::ng-deep :checked+.radio-label{position:relative;z-index:1;border-color:#4078c0}:host.td-markdown::ng-deep .octicon{display:inline-block;vertical-align:text-top;fill:currentColor}:host.td-markdown::ng-deep .task-list-item{list-style-type:none}:host.td-markdown::ng-deep .task-list-item+.task-list-item{margin-top:3px}:host.td-markdown::ng-deep .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}\n"] });
276
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: TdMarkdownComponent, decorators: [{
295
+ TdMarkdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TdMarkdownComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.DomSanitizer }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
296
+ TdMarkdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TdMarkdownComponent, selector: "td-markdown", inputs: { content: "content", simpleLineBreaks: "simpleLineBreaks", hostedUrl: "hostedUrl", anchor: "anchor" }, outputs: { contentReady: "contentReady" }, host: { properties: { "class": "this.class" } }, usesOnChanges: true, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host.td-markdown::ng-deep a{background-color:transparent}:host.td-markdown::ng-deep a:active,:host.td-markdown::ng-deep a:hover{outline-width:0}:host.td-markdown::ng-deep strong{font-weight:inherit;font-weight:bolder}:host.td-markdown::ng-deep h1{font-size:2em;margin:.67em 0}:host.td-markdown::ng-deep img{border-style:none}:host.td-markdown::ng-deep svg:not(:root){overflow:hidden}:host.td-markdown::ng-deep code,:host.td-markdown::ng-deep kbd,:host.td-markdown::ng-deep pre{font-family:monospace;font-size:1em}:host.td-markdown::ng-deep hr{box-sizing:content-box;height:0;overflow:visible}:host.td-markdown::ng-deep input{font:inherit;margin:0;overflow:visible}:host.td-markdown::ng-deep button:-moz-focusring,:host.td-markdown::ng-deep [type=button]:-moz-focusring,:host.td-markdown::ng-deep [type=reset]:-moz-focusring,:host.td-markdown::ng-deep [type=submit]:-moz-focusring{outline:1px dotted ButtonText}:host.td-markdown::ng-deep [type=checkbox]{box-sizing:border-box;padding:0}:host.td-markdown::ng-deep table{border-spacing:0;border-collapse:collapse}:host.td-markdown::ng-deep td,:host.td-markdown::ng-deep th{padding:0}:host.td-markdown::ng-deep *{box-sizing:border-box}:host.td-markdown::ng-deep input{font:13px/1.4 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol}:host.td-markdown::ng-deep a{text-decoration:none}:host.td-markdown::ng-deep a:hover,:host.td-markdown::ng-deep a:active{text-decoration:underline}:host.td-markdown::ng-deep hr{height:0;margin:15px 0;overflow:hidden;background:transparent;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep hr:before{display:table;content:\"\"}:host.td-markdown::ng-deep hr:after{display:table;clear:both;content:\"\"}:host.td-markdown::ng-deep h1,:host.td-markdown::ng-deep h2,:host.td-markdown::ng-deep h3,:host.td-markdown::ng-deep h4,:host.td-markdown::ng-deep h5,:host.td-markdown::ng-deep h6{margin-top:0;margin-bottom:0;line-height:1.5}:host.td-markdown::ng-deep h1{font-size:30px}:host.td-markdown::ng-deep h2{font-size:21px}:host.td-markdown::ng-deep h3{font-size:16px}:host.td-markdown::ng-deep h4{font-size:14px}:host.td-markdown::ng-deep h5{font-size:12px}:host.td-markdown::ng-deep h6{font-size:11px}:host.td-markdown::ng-deep p{margin-top:0;margin-bottom:10px}:host.td-markdown::ng-deep blockquote{margin:0}:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol{padding-left:0;margin-top:0;margin-bottom:0}:host.td-markdown::ng-deep ol ol,:host.td-markdown::ng-deep ul ol{list-style-type:lower-roman}:host.td-markdown::ng-deep ul ul ol,:host.td-markdown::ng-deep ul ol ol,:host.td-markdown::ng-deep ol ul ol,:host.td-markdown::ng-deep ol ol ol{list-style-type:lower-alpha}:host.td-markdown::ng-deep dd{margin-left:0}:host.td-markdown::ng-deep code{font-family:Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px}:host.td-markdown::ng-deep pre{margin-top:0;margin-bottom:0;font:12px Consolas,Liberation Mono,Menlo,Courier,monospace}:host.td-markdown::ng-deep .pl-0{padding-left:0!important}:host.td-markdown::ng-deep .pl-1{padding-left:3px!important}:host.td-markdown::ng-deep .pl-2{padding-left:6px!important}:host.td-markdown::ng-deep .pl-3{padding-left:12px!important}:host.td-markdown::ng-deep .pl-4{padding-left:24px!important}:host.td-markdown::ng-deep .pl-5{padding-left:36px!important}:host.td-markdown::ng-deep .pl-6{padding-left:48px!important}:host.td-markdown::ng-deep .form-select::-ms-expand{opacity:0}:host.td-markdown::ng-deep a:not([href]){color:inherit;text-decoration:none}:host.td-markdown::ng-deep h1,:host.td-markdown::ng-deep h2,:host.td-markdown::ng-deep h3,:host.td-markdown::ng-deep h4,:host.td-markdown::ng-deep h5,:host.td-markdown::ng-deep h6{margin-top:1em;margin-bottom:16px;font-weight:700;line-height:1.4}:host.td-markdown::ng-deep h1 .octicon-link,:host.td-markdown::ng-deep h2 .octicon-link,:host.td-markdown::ng-deep h3 .octicon-link,:host.td-markdown::ng-deep h4 .octicon-link,:host.td-markdown::ng-deep h5 .octicon-link,:host.td-markdown::ng-deep h6 .octicon-link{color:#000;vertical-align:middle;visibility:hidden}:host.td-markdown::ng-deep h1:hover .anchor,:host.td-markdown::ng-deep h2:hover .anchor,:host.td-markdown::ng-deep h3:hover .anchor,:host.td-markdown::ng-deep h4:hover .anchor,:host.td-markdown::ng-deep h5:hover .anchor,:host.td-markdown::ng-deep h6:hover .anchor{text-decoration:none}:host.td-markdown::ng-deep h1:hover .anchor .octicon-link,:host.td-markdown::ng-deep h2:hover .anchor .octicon-link,:host.td-markdown::ng-deep h3:hover .anchor .octicon-link,:host.td-markdown::ng-deep h4:hover .anchor .octicon-link,:host.td-markdown::ng-deep h5:hover .anchor .octicon-link,:host.td-markdown::ng-deep h6:hover .anchor .octicon-link{visibility:visible}:host.td-markdown::ng-deep h1{padding-bottom:.3em;font-size:2.25em;line-height:1.2;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep h1 .anchor{line-height:1}:host.td-markdown::ng-deep h2{padding-bottom:.3em;font-size:1.75em;line-height:1.225;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep h2 .anchor{line-height:1}:host.td-markdown::ng-deep h3{font-size:1.5em;line-height:1.43}:host.td-markdown::ng-deep h3 .anchor{line-height:1.2}:host.td-markdown::ng-deep h4{font-size:1.25em}:host.td-markdown::ng-deep h4 .anchor{line-height:1.2}:host.td-markdown::ng-deep h5{font-size:1em}:host.td-markdown::ng-deep h5 .anchor{line-height:1.1}:host.td-markdown::ng-deep h6{font-size:1em}:host.td-markdown::ng-deep h6 .anchor{line-height:1.1}:host.td-markdown::ng-deep p,:host.td-markdown::ng-deep blockquote,:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol,:host.td-markdown::ng-deep dl,:host.td-markdown::ng-deep table,:host.td-markdown::ng-deep pre{margin-top:0;margin-bottom:16px}:host.td-markdown::ng-deep hr{margin:16px 0}:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol{padding-left:2em}:host.td-markdown::ng-deep ul ul,:host.td-markdown::ng-deep ul ol,:host.td-markdown::ng-deep ol ol,:host.td-markdown::ng-deep ol ul{margin-top:0;margin-bottom:0}:host.td-markdown::ng-deep li>p{margin-top:16px}:host.td-markdown::ng-deep dl{padding:0}:host.td-markdown::ng-deep dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}:host.td-markdown::ng-deep dl dd{padding:0 16px;margin-bottom:16px}:host.td-markdown::ng-deep blockquote{padding:0 15px;border-left-width:4px;border-left-style:solid}:host.td-markdown::ng-deep blockquote>:first-child{margin-top:0}:host.td-markdown::ng-deep blockquote>:last-child{margin-bottom:0}:host.td-markdown::ng-deep table{display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}:host.td-markdown::ng-deep table th{font-weight:700}:host.td-markdown::ng-deep table th,:host.td-markdown::ng-deep table td{padding:6px 13px;border-width:1px;border-style:solid}:host.td-markdown::ng-deep table tr{border-top-width:1px;border-top-style:solid}:host.td-markdown::ng-deep img{max-width:100%;box-sizing:content-box}:host.td-markdown::ng-deep code{padding:.2em 0;margin:0;font-size:85%;border-radius:3px}:host.td-markdown::ng-deep code:before,:host.td-markdown::ng-deep code:after{letter-spacing:-.2em}:host.td-markdown::ng-deep pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:transparent;border:0}:host.td-markdown::ng-deep .highlight{margin-bottom:16px}:host.td-markdown::ng-deep .highlight pre,:host.td-markdown::ng-deep pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;border-radius:3px}:host.td-markdown::ng-deep .highlight pre{margin-bottom:0;word-break:normal}:host.td-markdown::ng-deep pre{word-wrap:normal}:host.td-markdown::ng-deep pre code{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}:host.td-markdown::ng-deep pre code:before,:host.td-markdown::ng-deep pre code:after{content:normal}:host.td-markdown::ng-deep kbd{display:inline-block;padding:3px 5px;font-size:11px;line-height:10px;vertical-align:middle;border-style:solid;border-width:1px;border-radius:3px}:host.td-markdown::ng-deep .pl-c{color:#969896}:host.td-markdown::ng-deep .pl-c1,:host.td-markdown::ng-deep .pl-s .pl-v{color:#0086b3}:host.td-markdown::ng-deep .pl-e,:host.td-markdown::ng-deep .pl-en{color:#795da3}:host.td-markdown::ng-deep .pl-s .pl-s1,:host.td-markdown::ng-deep .pl-smi{color:#333}:host.td-markdown::ng-deep .pl-ent{color:#63a35c}:host.td-markdown::ng-deep .pl-k{color:#a71d5d}:host.td-markdown::ng-deep .pl-pds,:host.td-markdown::ng-deep .pl-s,:host.td-markdown::ng-deep .pl-s .pl-pse .pl-s1,:host.td-markdown::ng-deep .pl-sr,:host.td-markdown::ng-deep .pl-sr .pl-cce,:host.td-markdown::ng-deep .pl-sr .pl-sra,:host.td-markdown::ng-deep .pl-sr .pl-sre{color:#183691}:host.td-markdown::ng-deep .pl-v{color:#ed6a43}:host.td-markdown::ng-deep .pl-id{color:#b52a1d}:host.td-markdown::ng-deep .pl-ii{background-color:#b52a1d;color:#f8f8f8}:host.td-markdown::ng-deep .pl-sr .pl-cce{color:#63a35c;font-weight:700}:host.td-markdown::ng-deep .pl-ml{color:#693a17}:host.td-markdown::ng-deep .pl-mh,:host.td-markdown::ng-deep .pl-mh .pl-en,:host.td-markdown::ng-deep .pl-ms{color:#1d3e81;font-weight:700}:host.td-markdown::ng-deep .pl-mq{color:teal}:host.td-markdown::ng-deep .pl-mi{color:#333;font-style:italic}:host.td-markdown::ng-deep .pl-mb{color:#333;font-weight:700}:host.td-markdown::ng-deep .pl-md{background-color:#ffecec;color:#bd2c00}:host.td-markdown::ng-deep .pl-mi1{background-color:#eaffea;color:#55a532}:host.td-markdown::ng-deep .pl-mdr{color:#795da3;font-weight:700}:host.td-markdown::ng-deep .pl-mo{color:#1d3e81}:host.td-markdown::ng-deep kbd{display:inline-block;padding:3px 5px;font:11px Consolas,Liberation Mono,Menlo,Courier,monospace;line-height:10px;vertical-align:middle;background-color:#fcfcfc;border:solid 1px #cccccc;border-bottom-color:#bbb;border-radius:3px;box-shadow:inset 0 -1px #bbb}:host.td-markdown::ng-deep .full-commit .btn-outline:not(:disabled):hover{color:#4078c0;border:1px solid #4078c0}:host.td-markdown::ng-deep :checked+.radio-label{position:relative;z-index:1;border-color:#4078c0}:host.td-markdown::ng-deep .octicon{display:inline-block;vertical-align:text-top;fill:currentColor}:host.td-markdown::ng-deep .task-list-item{list-style-type:none}:host.td-markdown::ng-deep .task-list-item+.task-list-item{margin-top:3px}:host.td-markdown::ng-deep .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}\n"] });
297
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TdMarkdownComponent, decorators: [{
277
298
  type: Component,
278
299
  args: [{ selector: 'td-markdown', template: "<ng-content></ng-content>\n", styles: [":host.td-markdown::ng-deep a{background-color:transparent}:host.td-markdown::ng-deep a:active,:host.td-markdown::ng-deep a:hover{outline-width:0}:host.td-markdown::ng-deep strong{font-weight:inherit;font-weight:bolder}:host.td-markdown::ng-deep h1{font-size:2em;margin:.67em 0}:host.td-markdown::ng-deep img{border-style:none}:host.td-markdown::ng-deep svg:not(:root){overflow:hidden}:host.td-markdown::ng-deep code,:host.td-markdown::ng-deep kbd,:host.td-markdown::ng-deep pre{font-family:monospace;font-size:1em}:host.td-markdown::ng-deep hr{box-sizing:content-box;height:0;overflow:visible}:host.td-markdown::ng-deep input{font:inherit;margin:0;overflow:visible}:host.td-markdown::ng-deep button:-moz-focusring,:host.td-markdown::ng-deep [type=button]:-moz-focusring,:host.td-markdown::ng-deep [type=reset]:-moz-focusring,:host.td-markdown::ng-deep [type=submit]:-moz-focusring{outline:1px dotted ButtonText}:host.td-markdown::ng-deep [type=checkbox]{box-sizing:border-box;padding:0}:host.td-markdown::ng-deep table{border-spacing:0;border-collapse:collapse}:host.td-markdown::ng-deep td,:host.td-markdown::ng-deep th{padding:0}:host.td-markdown::ng-deep *{box-sizing:border-box}:host.td-markdown::ng-deep input{font:13px/1.4 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol}:host.td-markdown::ng-deep a{text-decoration:none}:host.td-markdown::ng-deep a:hover,:host.td-markdown::ng-deep a:active{text-decoration:underline}:host.td-markdown::ng-deep hr{height:0;margin:15px 0;overflow:hidden;background:transparent;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep hr:before{display:table;content:\"\"}:host.td-markdown::ng-deep hr:after{display:table;clear:both;content:\"\"}:host.td-markdown::ng-deep h1,:host.td-markdown::ng-deep h2,:host.td-markdown::ng-deep h3,:host.td-markdown::ng-deep h4,:host.td-markdown::ng-deep h5,:host.td-markdown::ng-deep h6{margin-top:0;margin-bottom:0;line-height:1.5}:host.td-markdown::ng-deep h1{font-size:30px}:host.td-markdown::ng-deep h2{font-size:21px}:host.td-markdown::ng-deep h3{font-size:16px}:host.td-markdown::ng-deep h4{font-size:14px}:host.td-markdown::ng-deep h5{font-size:12px}:host.td-markdown::ng-deep h6{font-size:11px}:host.td-markdown::ng-deep p{margin-top:0;margin-bottom:10px}:host.td-markdown::ng-deep blockquote{margin:0}:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol{padding-left:0;margin-top:0;margin-bottom:0}:host.td-markdown::ng-deep ol ol,:host.td-markdown::ng-deep ul ol{list-style-type:lower-roman}:host.td-markdown::ng-deep ul ul ol,:host.td-markdown::ng-deep ul ol ol,:host.td-markdown::ng-deep ol ul ol,:host.td-markdown::ng-deep ol ol ol{list-style-type:lower-alpha}:host.td-markdown::ng-deep dd{margin-left:0}:host.td-markdown::ng-deep code{font-family:Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px}:host.td-markdown::ng-deep pre{margin-top:0;margin-bottom:0;font:12px Consolas,Liberation Mono,Menlo,Courier,monospace}:host.td-markdown::ng-deep .pl-0{padding-left:0!important}:host.td-markdown::ng-deep .pl-1{padding-left:3px!important}:host.td-markdown::ng-deep .pl-2{padding-left:6px!important}:host.td-markdown::ng-deep .pl-3{padding-left:12px!important}:host.td-markdown::ng-deep .pl-4{padding-left:24px!important}:host.td-markdown::ng-deep .pl-5{padding-left:36px!important}:host.td-markdown::ng-deep .pl-6{padding-left:48px!important}:host.td-markdown::ng-deep .form-select::-ms-expand{opacity:0}:host.td-markdown::ng-deep a:not([href]){color:inherit;text-decoration:none}:host.td-markdown::ng-deep h1,:host.td-markdown::ng-deep h2,:host.td-markdown::ng-deep h3,:host.td-markdown::ng-deep h4,:host.td-markdown::ng-deep h5,:host.td-markdown::ng-deep h6{margin-top:1em;margin-bottom:16px;font-weight:700;line-height:1.4}:host.td-markdown::ng-deep h1 .octicon-link,:host.td-markdown::ng-deep h2 .octicon-link,:host.td-markdown::ng-deep h3 .octicon-link,:host.td-markdown::ng-deep h4 .octicon-link,:host.td-markdown::ng-deep h5 .octicon-link,:host.td-markdown::ng-deep h6 .octicon-link{color:#000;vertical-align:middle;visibility:hidden}:host.td-markdown::ng-deep h1:hover .anchor,:host.td-markdown::ng-deep h2:hover .anchor,:host.td-markdown::ng-deep h3:hover .anchor,:host.td-markdown::ng-deep h4:hover .anchor,:host.td-markdown::ng-deep h5:hover .anchor,:host.td-markdown::ng-deep h6:hover .anchor{text-decoration:none}:host.td-markdown::ng-deep h1:hover .anchor .octicon-link,:host.td-markdown::ng-deep h2:hover .anchor .octicon-link,:host.td-markdown::ng-deep h3:hover .anchor .octicon-link,:host.td-markdown::ng-deep h4:hover .anchor .octicon-link,:host.td-markdown::ng-deep h5:hover .anchor .octicon-link,:host.td-markdown::ng-deep h6:hover .anchor .octicon-link{visibility:visible}:host.td-markdown::ng-deep h1{padding-bottom:.3em;font-size:2.25em;line-height:1.2;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep h1 .anchor{line-height:1}:host.td-markdown::ng-deep h2{padding-bottom:.3em;font-size:1.75em;line-height:1.225;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep h2 .anchor{line-height:1}:host.td-markdown::ng-deep h3{font-size:1.5em;line-height:1.43}:host.td-markdown::ng-deep h3 .anchor{line-height:1.2}:host.td-markdown::ng-deep h4{font-size:1.25em}:host.td-markdown::ng-deep h4 .anchor{line-height:1.2}:host.td-markdown::ng-deep h5{font-size:1em}:host.td-markdown::ng-deep h5 .anchor{line-height:1.1}:host.td-markdown::ng-deep h6{font-size:1em}:host.td-markdown::ng-deep h6 .anchor{line-height:1.1}:host.td-markdown::ng-deep p,:host.td-markdown::ng-deep blockquote,:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol,:host.td-markdown::ng-deep dl,:host.td-markdown::ng-deep table,:host.td-markdown::ng-deep pre{margin-top:0;margin-bottom:16px}:host.td-markdown::ng-deep hr{margin:16px 0}:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol{padding-left:2em}:host.td-markdown::ng-deep ul ul,:host.td-markdown::ng-deep ul ol,:host.td-markdown::ng-deep ol ol,:host.td-markdown::ng-deep ol ul{margin-top:0;margin-bottom:0}:host.td-markdown::ng-deep li>p{margin-top:16px}:host.td-markdown::ng-deep dl{padding:0}:host.td-markdown::ng-deep dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}:host.td-markdown::ng-deep dl dd{padding:0 16px;margin-bottom:16px}:host.td-markdown::ng-deep blockquote{padding:0 15px;border-left-width:4px;border-left-style:solid}:host.td-markdown::ng-deep blockquote>:first-child{margin-top:0}:host.td-markdown::ng-deep blockquote>:last-child{margin-bottom:0}:host.td-markdown::ng-deep table{display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}:host.td-markdown::ng-deep table th{font-weight:700}:host.td-markdown::ng-deep table th,:host.td-markdown::ng-deep table td{padding:6px 13px;border-width:1px;border-style:solid}:host.td-markdown::ng-deep table tr{border-top-width:1px;border-top-style:solid}:host.td-markdown::ng-deep img{max-width:100%;box-sizing:content-box}:host.td-markdown::ng-deep code{padding:.2em 0;margin:0;font-size:85%;border-radius:3px}:host.td-markdown::ng-deep code:before,:host.td-markdown::ng-deep code:after{letter-spacing:-.2em}:host.td-markdown::ng-deep pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:transparent;border:0}:host.td-markdown::ng-deep .highlight{margin-bottom:16px}:host.td-markdown::ng-deep .highlight pre,:host.td-markdown::ng-deep pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;border-radius:3px}:host.td-markdown::ng-deep .highlight pre{margin-bottom:0;word-break:normal}:host.td-markdown::ng-deep pre{word-wrap:normal}:host.td-markdown::ng-deep pre code{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}:host.td-markdown::ng-deep pre code:before,:host.td-markdown::ng-deep pre code:after{content:normal}:host.td-markdown::ng-deep kbd{display:inline-block;padding:3px 5px;font-size:11px;line-height:10px;vertical-align:middle;border-style:solid;border-width:1px;border-radius:3px}:host.td-markdown::ng-deep .pl-c{color:#969896}:host.td-markdown::ng-deep .pl-c1,:host.td-markdown::ng-deep .pl-s .pl-v{color:#0086b3}:host.td-markdown::ng-deep .pl-e,:host.td-markdown::ng-deep .pl-en{color:#795da3}:host.td-markdown::ng-deep .pl-s .pl-s1,:host.td-markdown::ng-deep .pl-smi{color:#333}:host.td-markdown::ng-deep .pl-ent{color:#63a35c}:host.td-markdown::ng-deep .pl-k{color:#a71d5d}:host.td-markdown::ng-deep .pl-pds,:host.td-markdown::ng-deep .pl-s,:host.td-markdown::ng-deep .pl-s .pl-pse .pl-s1,:host.td-markdown::ng-deep .pl-sr,:host.td-markdown::ng-deep .pl-sr .pl-cce,:host.td-markdown::ng-deep .pl-sr .pl-sra,:host.td-markdown::ng-deep .pl-sr .pl-sre{color:#183691}:host.td-markdown::ng-deep .pl-v{color:#ed6a43}:host.td-markdown::ng-deep .pl-id{color:#b52a1d}:host.td-markdown::ng-deep .pl-ii{background-color:#b52a1d;color:#f8f8f8}:host.td-markdown::ng-deep .pl-sr .pl-cce{color:#63a35c;font-weight:700}:host.td-markdown::ng-deep .pl-ml{color:#693a17}:host.td-markdown::ng-deep .pl-mh,:host.td-markdown::ng-deep .pl-mh .pl-en,:host.td-markdown::ng-deep .pl-ms{color:#1d3e81;font-weight:700}:host.td-markdown::ng-deep .pl-mq{color:teal}:host.td-markdown::ng-deep .pl-mi{color:#333;font-style:italic}:host.td-markdown::ng-deep .pl-mb{color:#333;font-weight:700}:host.td-markdown::ng-deep .pl-md{background-color:#ffecec;color:#bd2c00}:host.td-markdown::ng-deep .pl-mi1{background-color:#eaffea;color:#55a532}:host.td-markdown::ng-deep .pl-mdr{color:#795da3;font-weight:700}:host.td-markdown::ng-deep .pl-mo{color:#1d3e81}:host.td-markdown::ng-deep kbd{display:inline-block;padding:3px 5px;font:11px Consolas,Liberation Mono,Menlo,Courier,monospace;line-height:10px;vertical-align:middle;background-color:#fcfcfc;border:solid 1px #cccccc;border-bottom-color:#bbb;border-radius:3px;box-shadow:inset 0 -1px #bbb}:host.td-markdown::ng-deep .full-commit .btn-outline:not(:disabled):hover{color:#4078c0;border:1px solid #4078c0}:host.td-markdown::ng-deep :checked+.radio-label{position:relative;z-index:1;border-color:#4078c0}:host.td-markdown::ng-deep .octicon{display:inline-block;vertical-align:text-top;fill:currentColor}:host.td-markdown::ng-deep .task-list-item{list-style-type:none}:host.td-markdown::ng-deep .task-list-item+.task-list-item{margin-top:3px}:host.td-markdown::ng-deep .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}\n"] }]
279
300
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.DomSanitizer }, { type: i0.NgZone }]; }, propDecorators: { class: [{
@@ -290,4 +311,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
290
311
  }], contentReady: [{
291
312
  type: Output
292
313
  }] } });
293
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9tYXJrZG93bi9zcmMvbGliL21hcmtkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvbWFya2Rvd24vc3JjL2xpYi9tYXJrZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEVBQ1QsZUFBZSxFQUdmLFdBQVcsRUFDWCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFDTCxjQUFjLEVBQ2QsWUFBWSxFQUNaLFlBQVksRUFDWixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLFlBQVksRUFDWixlQUFlLEVBQ2YsbUJBQW1CLEdBQ3BCLE1BQU0saUNBQWlDLENBQUM7QUFFekMsT0FBTyxLQUFLLFFBQVEsTUFBTSxVQUFVLENBQUM7OztBQUVyQyxtQ0FBbUM7QUFDbkMseUJBQXlCO0FBQ3pCLFNBQVMsb0JBQW9CLENBQzNCLFdBQW1CLEVBQ25CLFlBQW9CO0lBRXBCLElBQUksV0FBVyxJQUFJLFlBQVksRUFBRTtRQUMvQixNQUFNLFVBQVUsR0FBUSxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3QyxNQUFNLElBQUksR0FBVyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sVUFBVSxHQUFRLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTdDLElBQUksWUFBWSxDQUFDLFVBQVUsQ0FB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QUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwQyxTQUFTLENBQUMsU0FBUyxDQUFDLDJCQUEyQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZELFNBQVMsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbkMsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7O2dIQXhOVSxtQkFBbUI7b0dBQW5CLG1CQUFtQixvUkNwS2hDLDZCQUNBOzJGRG1LYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsYUFBYTt5S0FnQkQsS0FBSztzQkFBMUIsV0FBVzt1QkFBQyxPQUFPO2dCQVVoQixPQUFPO3NCQURWLEtBQUs7Z0JBWUYsZ0JBQWdCO3NCQURuQixLQUFLO2dCQVlGLFNBQVM7c0JBRFosS0FBSztnQkFZRixNQUFNO3NCQURULEtBQUs7Z0JBU0ksWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBSZW5kZXJlcjIsXG4gIFNlY3VyaXR5Q29udGV4dCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBIb3N0QmluZGluZyxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHtcbiAgc2Nyb2xsVG9BbmNob3IsXG4gIGdlbkhlYWRpbmdJZCxcbiAgaXNBbmNob3JMaW5rLFxuICByZW1vdmVUcmFpbGluZ0hhc2gsXG4gIHJhd0dpdGh1YkhyZWYsXG4gIGlzR2l0aHViSHJlZixcbiAgaXNSYXdHaXRodWJIcmVmLFxuICByZW5kZXJWaWRlb0VsZW1lbnRzLFxufSBmcm9tICcuL21hcmtkb3duLXV0aWxzL21hcmtkb3duLXV0aWxzJztcblxuaW1wb3J0ICogYXMgc2hvd2Rvd24gZnJvbSAnc2hvd2Rvd24nO1xuXG4vLyBUT0RPOiBhc3N1bWVzIGl0IGlzIGEgZ2l0aHViIHVybFxuLy8gYWxsb3cgb3ZlcnJpZGUgc29tZWhvd1xuZnVuY3Rpb24gZ2VuZXJhdGVBYnNvbHV0ZUhyZWYoXG4gIGN1cnJlbnRIcmVmOiBzdHJpbmcsXG4gIHJlbGF0aXZlSHJlZjogc3RyaW5nXG4pOiBzdHJpbmcge1xuICBpZiAoY3VycmVudEhyZWYgJiYgcmVsYXRpdmVIcmVmKSB7XG4gICAgY29uc3QgY3VycmVudFVybDogVVJMID0gbmV3IFVSTChjdXJyZW50SHJlZik7XG4gICAgY29uc3QgcGF0aDogc3RyaW5nID0gY3VycmVudFVybC5wYXRobmFtZS5zcGxpdCgnLycpLnNsaWNlKDEsIC0xKS5qb2luKCcvJyk7XG4gICAgY29uc3QgY29ycmVjdFVybDogVVJMID0gbmV3IFVSTChjdXJyZW50SHJlZik7XG5cbiAgICBpZiAocmVsYXRpdmVIcmVmLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgLy8gdXJsIGlzIHJlbGF0aXZlIHRvIHRvcCBsZXZlbFxuICAgICAgY29uc3Qgb3JnQW5kUmVwbzogc3RyaW5nID0gcGF0aC5zcGxpdCgnLycpLnNsaWNlKDAsIDMpLmpvaW4oJy8nKTtcbiAgICAgIGNvcnJlY3RVcmwucGF0aG5hbWUgPSBgJHtvcmdBbmRSZXBvfSR7cmVsYXRpdmVIcmVmfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvcnJlY3RVcmwucGF0aG5hbWUgPSBgJHtwYXRofS8ke3JlbGF0aXZlSHJlZn1gO1xuICAgIH1cbiAgICByZXR1cm4gY29ycmVjdFVybC5ocmVmO1xuICB9XG4gIHJldHVybiAnJztcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplSHRtbEhyZWZzKGh0bWw6IHN0cmluZywgY3VycmVudEhyZWY6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChjdXJyZW50SHJlZikge1xuICAgIGNvbnN0IGRvY3VtZW50OiBEb2N1bWVudCA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoXG4gICAgICBodG1sLFxuICAgICAgJ3RleHQvaHRtbCdcbiAgICApO1xuICAgIGRvY3VtZW50XG4gICAgICAucXVlcnlTZWxlY3RvckFsbDxIVE1MQW5jaG9yRWxlbWVudD4oJ2FbaHJlZl0nKVxuICAgICAgLmZvckVhY2goKGxpbms6IEhUTUxBbmNob3JFbGVtZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHVybDogVVJMID0gbmV3IFVSTChsaW5rLmhyZWYpO1xuICAgICAgICBjb25zdCBvcmlnaW5hbEhhc2g6IHN0cmluZyA9IHVybC5oYXNoO1xuICAgICAgICBpZiAoaXNBbmNob3JMaW5rKGxpbmspKSB7XG4gICAgICAgICAgaWYgKG9yaWdpbmFsSGFzaCkge1xuICAgICAgICAgICAgdXJsLmhhc2ggPSBnZW5IZWFkaW5nSWQob3JpZ2luYWxIYXNoKTtcbiAgICAgICAgICAgIGxpbmsuaHJlZiA9IHVybC5oYXNoO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh1cmwuaG9zdCA9PT0gd2luZG93LmxvY2F0aW9uLmhvc3QpIHtcbiAgICAgICAgICAvLyBob3N0cyBtYXRjaCwgbWVhbmluZyBVUkwgTUlHSFQgaGF2ZSBiZWVuIG1hbGZvcm1lZCBieSBzaG93ZG93blxuICAgICAgICAgIC8vIHVybCBpcyBhIHJlbGF0aXZlIHVybCBvciBqdXN0IGEgbGluayB0byBhIHBhcnQgb2YgdGhlIGFwcGxpY2F0aW9uXG4gICAgICAgICAgaWYgKHVybC5wYXRobmFtZS5lbmRzV2l0aCgnLm1kJykpIHtcbiAgICAgICAgICAgIC8vIG9ubHkgY2hlY2sgLm1kIHVybHNcblxuICAgICAgICAgICAgY29uc3QgaHJlZldpdGhvdXRIYXNoOiBzdHJpbmcgPSByZW1vdmVUcmFpbGluZ0hhc2goXG4gICAgICAgICAgICAgIGxpbmsuZ2V0QXR0cmlidXRlKCdocmVmJylcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHVybC5ocmVmID0gZ2VuZXJhdGVBYnNvbHV0ZUhyZWYoY3VycmVudEhyZWYsIGhyZWZXaXRob3V0SGFzaCk7XG5cbiAgICAgICAgICAgIGlmIChvcmlnaW5hbEhhc2gpIHtcbiAgICAgICAgICAgICAgdXJsLmhhc2ggPSBnZW5IZWFkaW5nSWQob3JpZ2luYWxIYXNoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxpbmsuaHJlZiA9IHVybC5ocmVmO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsaW5rLnRhcmdldCA9ICdfYmxhbmsnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHVybCBpcyBhYnNvbHV0ZVxuICAgICAgICAgIGlmICh1cmwucGF0aG5hbWUuZW5kc1dpdGgoJy5tZCcpKSB7XG4gICAgICAgICAgICBpZiAob3JpZ2luYWxIYXNoKSB7XG4gICAgICAgICAgICAgIHVybC5oYXNoID0gZ2VuSGVhZGluZ0lkKG9yaWdpbmFsSGFzaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaW5rLmhyZWYgPSB1cmwuaHJlZjtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGluay50YXJnZXQgPSAnX2JsYW5rJztcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICByZXR1cm4gbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhkb2N1bWVudCk7XG4gIH1cbiAgcmV0dXJuIGh0bWw7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUltYWdlU3JjcyhodG1sOiBzdHJpbmcsIGN1cnJlbnRIcmVmOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoY3VycmVudEhyZWYpIHtcbiAgICBjb25zdCBkb2N1bWVudDogRG9jdW1lbnQgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKFxuICAgICAgaHRtbCxcbiAgICAgICd0ZXh0L2h0bWwnXG4gICAgKTtcbiAgICBkb2N1bWVudFxuICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEltYWdlRWxlbWVudD4oJ2ltZ1tzcmNdJylcbiAgICAgIC5mb3JFYWNoKChpbWFnZTogSFRNTEltYWdlRWxlbWVudCkgPT4ge1xuICAgICAgICBjb25zdCBzcmMgPSBpbWFnZS5nZXRBdHRyaWJ1dGUoJ3NyYycpID8/ICcnO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby11bnVzZWQtZXhwcmVzc2lvbiAqL1xuICAgICAgICAgIG5ldyBVUkwoc3JjKTtcbiAgICAgICAgICBpZiAoaXNHaXRodWJIcmVmKHNyYykpIHtcbiAgICAgICAgICAgIGltYWdlLnNyYyA9IHJhd0dpdGh1YkhyZWYoc3JjKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIGltYWdlLnNyYyA9IGdlbmVyYXRlQWJzb2x1dGVIcmVmKFxuICAgICAgICAgICAgaXNHaXRodWJIcmVmKGN1cnJlbnRIcmVmKVxuICAgICAgICAgICAgICA/IHJhd0dpdGh1YkhyZWYoY3VycmVudEhyZWYpXG4gICAgICAgICAgICAgIDogY3VycmVudEhyZWYsXG4gICAgICAgICAgICBzcmNcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIC8vIGdoIHN2Z3MgbmVlZCB0byBoYXZlID9zYW5pdGl6ZT10cnVlXG4gICAgICAgIGlmIChpc1Jhd0dpdGh1YkhyZWYoaW1hZ2Uuc3JjKSkge1xuICAgICAgICAgIGNvbnN0IHVybDogVVJMID0gbmV3IFVSTChpbWFnZS5zcmMpO1xuICAgICAgICAgIGlmICh1cmwucGF0aG5hbWUuZW5kc1dpdGgoJy5zdmcnKSkge1xuICAgICAgICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3Nhbml0aXplJywgJ3RydWUnKTtcbiAgICAgICAgICAgIGltYWdlLnNyYyA9IHVybC5ocmVmO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICByZXR1cm4gbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhkb2N1bWVudCk7XG4gIH1cbiAgcmV0dXJuIGh0bWw7XG59XG5cbmZ1bmN0aW9uIGFkZElkc1RvSGVhZGluZ3MoaHRtbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKGh0bWwpIHtcbiAgICBjb25zdCBkb2N1bWVudDogRG9jdW1lbnQgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKFxuICAgICAgaHRtbCxcbiAgICAgICd0ZXh0L2h0bWwnXG4gICAgKTtcbiAgICBkb2N1bWVudFxuICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJ2gxLCBoMiwgaDMsIGg0LCBoNSwgaDYnKVxuICAgICAgLmZvckVhY2goKGhlYWRpbmc6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgY29uc3QgaWQ6IHN0cmluZyA9IGdlbkhlYWRpbmdJZChoZWFkaW5nLmlubmVySFRNTCk7XG4gICAgICAgIGhlYWRpbmcuc2V0QXR0cmlidXRlKCdpZCcsIGlkKTtcbiAgICAgIH0pO1xuICAgIHJldHVybiBuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKGRvY3VtZW50KTtcbiAgfVxuICByZXR1cm4gaHRtbDtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGQtbWFya2Rvd24nLFxuICBzdHlsZVVybHM6IFsnLi9tYXJrZG93bi5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFya2Rvd24uY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBUZE1hcmtkb3duQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgcHJpdmF0ZSBfY29udGVudCE6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2ltcGxlTGluZUJyZWFrcyA9IGZhbHNlO1xuICBwcml2YXRlIF9ob3N0ZWRVcmwhOiBzdHJpbmc7XG4gIHByaXZhdGUgX2FuY2hvciE6IHN0cmluZztcbiAgcHJpdmF0ZSBfdmlld0luaXQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfYW5jaG9yTGlzdGVuZXI/OiBWb2lkRnVuY3Rpb247XG4gIC8qKlxuICAgKiAudGQtbWFya2Rvd24gY2xhc3MgYWRkZWQgdG8gaG9zdCBzbyA6Om5nLWRlZXAgZ2V0cyBzY29wZWQuXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3MgPSAndGQtbWFya2Rvd24nO1xuXG4gIC8qKlxuICAgKiBjb250ZW50Pzogc3RyaW5nXG4gICAqXG4gICAqIE1hcmtkb3duIGZvcm1hdCBjb250ZW50IHRvIGJlIHBhcnNlZCBhcyBodG1sIG1hcmt1cC5cbiAgICpcbiAgICogZS5nLiBSRUFETUUubWQgY29udGVudC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBjb250ZW50KGNvbnRlbnQ6IHN0cmluZykge1xuICAgIHRoaXMuX2NvbnRlbnQgPSBjb250ZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIHNpbXBsZUxpbmVCcmVha3M/OiBzdHJpbmdcbiAgICpcbiAgICogU2V0cyB3aGV0aGVyIG5ld2xpbmUgY2hhcmFjdGVycyBpbnNpZGUgcGFyYWdyYXBocyBhbmQgc3BhbnMgYXJlIHBhcnNlZCBhcyA8YnIvPi5cbiAgICogRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgc2ltcGxlTGluZUJyZWFrcyhzaW1wbGVMaW5lQnJlYWtzOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2ltcGxlTGluZUJyZWFrcyA9IHNpbXBsZUxpbmVCcmVha3M7XG4gIH1cblxuICAvKipcbiAgICogaG9zdGVkVXJsPzogc3RyaW5nXG4gICAqXG4gICAqIElmIG1hcmtkb3duIGNvbnRhaW5zIHJlbGF0aXZlIHBhdGhzLCB0aGlzIGlzIHJlcXVpcmVkIHRvIGdlbmVyYXRlIGNvcnJlY3QgdXJscy5cbiAgICpcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBob3N0ZWRVcmwoaG9zdGVkVXJsOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9ob3N0ZWRVcmwgPSBob3N0ZWRVcmw7XG4gIH1cblxuICAvKipcbiAgICogYW5jaG9yPzogc3RyaW5nXG4gICAqXG4gICAqIEFuY2hvciB0byBqdW1wIHRvLlxuICAgKlxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGFuY2hvcihhbmNob3I6IHN0cmluZykge1xuICAgIHRoaXMuX2FuY2hvciA9IGFuY2hvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBjb250ZW50UmVhZHk/OiBmdW5jdGlvblxuICAgKiBFdmVudCBlbWl0dGVkIGFmdGVyIHRoZSBtYXJrZG93biBjb250ZW50IHJlbmRlcmluZyBpcyBmaW5pc2hlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBjb250ZW50UmVhZHk6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBfZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmVcbiAgKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAvLyBvbmx5IGFuY2hvciBjaGFuZ2VkXG4gICAgaWYgKFxuICAgICAgY2hhbmdlc1snYW5jaG9yJ10gJiZcbiAgICAgICFjaGFuZ2VzWydjb250ZW50J10gJiZcbiAgICAgICFjaGFuZ2VzWydzaW1wbGVMaW5lQnJlYWtzJ10gJiZcbiAgICAgICFjaGFuZ2VzWydob3N0ZWRVcmwnXVxuICAgICkge1xuICAgICAgc2Nyb2xsVG9BbmNob3IodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLl9hbmNob3IsIHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9jb250ZW50KSB7XG4gICAgICB0aGlzLl9sb2FkQ29udGVudChcbiAgICAgICAgKDxIVE1MRWxlbWVudD50aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpLnRleHRDb250ZW50XG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLl92aWV3SW5pdCA9IHRydWU7XG5cbiAgICAvLyBDYXJldGFrZXIgbm90ZTogdGhlIGBzY3JvbGxUb0FuY2hvcmAgY2FsbHMgYGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXdgLCBhIG5hdGl2ZSBzeW5jaHJvbm91cyBET01cbiAgICAvLyBBUEkgYW5kIGl0IGRvZXNuJ3QgcmVxdWlyZSBBbmd1bGFyIHJ1bm5pbmcgYEFwcGxpY2F0aW9uUmVmLnRpY2soKWAgZWFjaCB0aW1lIHRoZSBtYXJrZG93biBjb21wb25lbnQgaXMgY2xpY2tlZC5cbiAgICAvLyBIb3N0IGxpc3RlbmVyIChhZGRlZCB0aHJvdWdoIGBASG9zdExpc3RlbmVyYCkgY2F1c2UgQW5ndWxhciB0byBhZGQgYW4gZXZlbnQgbGlzdGVuZXIgd2l0aGluIHRoZSBBbmd1bGFyIHpvbmUuXG4gICAgLy8gSXQgYWxzbyBjYWxscyBgbWFya1ZpZXdEaXJ0eSgpYCBiZWZvcmUgY2FsbGluZyB0aGUgYWN0dWFsIGxpc3RlbmVyICh0aGUgZGVjb3JhdGVkIGNsYXNzIG1ldGhvZCkuXG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuX2FuY2hvckxpc3RlbmVyID0gdGhpcy5fcmVuZGVyZXIubGlzdGVuKFxuICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdjbGljaycsXG4gICAgICAgIChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gPEhUTUxFbGVtZW50PmV2ZW50LnNyY0VsZW1lbnQ7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZWxlbWVudC5tYXRjaGVzKCdhW2hyZWZdJykgJiZcbiAgICAgICAgICAgIGlzQW5jaG9yTGluayg8SFRNTEFuY2hvckVsZW1lbnQ+ZWxlbWVudClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQW5jaG9yQ2xpY2tzKGV2ZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hbmNob3JMaXN0ZW5lcj8uKCk7XG4gIH1cblxuICByZWZyZXNoKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jb250ZW50KSB7XG4gICAgICB0aGlzLl9sb2FkQ29udGVudCh0aGlzLl9jb250ZW50KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3ZpZXdJbml0KSB7XG4gICAgICB0aGlzLl9sb2FkQ29udGVudChcbiAgICAgICAgKDxIVE1MRWxlbWVudD50aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpLnRleHRDb250ZW50XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmFsIG1ldGhvZCB0byBwYXJzZSBhIHN0cmluZyBtYXJrZG93biBpbnRvIEhUTUwgRWxlbWVudHMgYW5kIGxvYWQgdGhlbSBpbnRvIHRoZSBjb250YWluZXJcbiAgICovXG4gIHByaXZhdGUgX2xvYWRDb250ZW50KG1hcmtkb3duOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKG1hcmtkb3duICYmIG1hcmtkb3duLnRyaW0oKS5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBDbGVhbiBjb250YWluZXJcbiAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KFxuICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdpbm5lckhUTUwnLFxuICAgICAgICAnJ1xuICAgICAgKTtcbiAgICAgIC8vIFBhcnNlIGh0bWwgc3RyaW5nIGludG8gYWN0dWFsIEhUTUwgZWxlbWVudHMuXG4gICAgICB0aGlzLl9lbGVtZW50RnJvbVN0cmluZyh0aGlzLl9yZW5kZXIobWFya2Rvd24pKTtcbiAgICB9XG4gICAgLy8gVE9ETzogdGltZW91dCByZXF1aXJlZCBzaW5jZSByZXNpemluZyBvZiBodG1sIGVsZW1lbnRzIG9jY3VycyB3aGljaCBjYXVzZXMgYSBjaGFuZ2UgaW4gdGhlIHNjcm9sbCBwb3NpdGlvblxuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PlxuICAgICAgc2V0VGltZW91dChcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICBzY3JvbGxUb0FuY2hvcih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMuX2FuY2hvciwgdHJ1ZSksXG4gICAgICAgIDI1MFxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5jb250ZW50UmVhZHkuZW1pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVBbmNob3JDbGlja3MoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCB1cmw6IFVSTCA9IG5ldyBVUkwoKDxIVE1MQW5jaG9yRWxlbWVudD5ldmVudC50YXJnZXQpLmhyZWYpO1xuICAgIGNvbnN0IGhhc2g6IHN0cmluZyA9IGRlY29kZVVSSSh1cmwuaGFzaCk7XG4gICAgc2Nyb2xsVG9BbmNob3IodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBoYXNoLCB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2VsZW1lbnRGcm9tU3RyaW5nKG1hcmt1cFN0cjogc3RyaW5nKTogSFRNTERpdkVsZW1lbnQge1xuICAgIC8vIFJlbmRlcmVyMiBkb2VzbnQgaGF2ZSBhIHBhcnNpbmcgbWV0aG9kLCBzbyB3ZSBoYXZlIHRvIHNhbml0aXplIGFuZCB1c2UgW2lubmVySFRNTF1cbiAgICAvLyB0byBwYXJzZSB0aGUgc3RyaW5nIGludG8gRE9NIGVsZW1lbnQgZm9yIG5vdy5cbiAgICBjb25zdCBkaXY6IEhUTUxEaXZFbGVtZW50ID0gdGhpcy5fcmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5fcmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBkaXYpO1xuICAgIGNvbnN0IGh0bWw6IHN0cmluZyA9XG4gICAgICB0aGlzLl9kb21TYW5pdGl6ZXIuc2FuaXRpemUoU2VjdXJpdHlDb250ZXh0LkhUTUwsIG1hcmt1cFN0cikgPz8gJyc7XG4gICAgY29uc3QgaHRtbFdpdGhBYnNvbHV0ZUhyZWZzOiBzdHJpbmcgPSBub3JtYWxpemVIdG1sSHJlZnMoXG4gICAgICBodG1sLFxuICAgICAgdGhpcy5faG9zdGVkVXJsXG4gICAgKTtcbiAgICBjb25zdCBodG1sV2l0aEFic29sdXRlSW1nU3Jjczogc3RyaW5nID0gbm9ybWFsaXplSW1hZ2VTcmNzKFxuICAgICAgaHRtbFdpdGhBYnNvbHV0ZUhyZWZzLFxuICAgICAgdGhpcy5faG9zdGVkVXJsXG4gICAgKTtcbiAgICBjb25zdCBodG1sV2l0aEhlYWRpbmdJZHM6IHN0cmluZyA9IGFkZElkc1RvSGVhZGluZ3MoXG4gICAgICBodG1sV2l0aEFic29sdXRlSW1nU3Jjc1xuICAgICk7XG4gICAgY29uc3QgaHRtbFdpdGhWaWRlb3M6IFNhZmVIdG1sID0gcmVuZGVyVmlkZW9FbGVtZW50cyhodG1sV2l0aEhlYWRpbmdJZHMpO1xuICAgIHRoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KGRpdiwgJ2lubmVySFRNTCcsIGh0bWxXaXRoVmlkZW9zKTtcbiAgICByZXR1cm4gZGl2O1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyKG1hcmtkb3duOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIFRyaW0gbGVhZGluZyBhbmQgdHJhaWxpbmcgbmV3bGluZXNcbiAgICBtYXJrZG93biA9IG1hcmtkb3duXG4gICAgICAucmVwbGFjZSgvXihcXHN8XFx0KSpcXG4rL2csICcnKVxuICAgICAgLnJlcGxhY2UoLyhcXHN8XFx0KSpcXG4rKFxcc3xcXHQpKiQvZywgJycpO1xuICAgIC8vIFNwbGl0IG1hcmtkb3duIGJ5IGxpbmUgY2hhcmFjdGVyc1xuICAgIGxldCBsaW5lczogc3RyaW5nW10gPSBtYXJrZG93bi5zcGxpdCgnXFxuJyk7XG5cbiAgICAvLyBjaGVjayBob3cgbXVjaCBpbmRlbnRhdGlvbiBpcyB1c2VkIGJ5IHRoZSBmaXJzdCBhY3R1YWwgbWFya2Rvd24gbGluZVxuICAgIGNvbnN0IGZpcnN0TGluZVdoaXRlc3BhY2VNYXRjaCA9IGxpbmVzWzBdLm1hdGNoKC9eKFxcc3xcXHQpKi8pO1xuICAgIGNvbnN0IGZpcnN0TGluZVdoaXRlc3BhY2U6IHN0cmluZyA9IGZpcnN0TGluZVdoaXRlc3BhY2VNYXRjaFxuICAgICAgPyBmaXJzdExpbmVXaGl0ZXNwYWNlTWF0Y2hbMF1cbiAgICAgIDogJyc7XG5cbiAgICAvLyBSZW1vdmUgYWxsIGluZGVudGF0aW9uIHNwYWNlcyBzbyBtYXJrZG93biBjYW4gYmUgcGFyc2VkIGNvcnJlY3RseVxuICAgIGNvbnN0IHN0YXJ0aW5nV2hpdGVzcGFjZVJlZ2V4ID0gbmV3IFJlZ0V4cCgnXicgKyBmaXJzdExpbmVXaGl0ZXNwYWNlKTtcbiAgICBsaW5lcyA9IGxpbmVzLm1hcChmdW5jdGlvbiAobGluZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBsaW5lLnJlcGxhY2Uoc3RhcnRpbmdXaGl0ZXNwYWNlUmVnZXgsICcnKTtcbiAgICB9KTtcblxuICAgIC8vIEpvaW4gbGluZXMgYWdhaW4gd2l0aCBsaW5lIGNoYXJhY3RlcnNcbiAgICBjb25zdCBtYXJrZG93blRvUGFyc2U6IHN0cmluZyA9IGxpbmVzLmpvaW4oJ1xcbicpO1xuXG4gICAgLy8gQ29udmVydCBtYXJrZG93biBpbnRvIGh0bWxcbiAgICBjb25zdCBjb252ZXJ0ZXI6IHNob3dkb3duLkNvbnZlcnRlciA9IG5ldyBzaG93ZG93bi5Db252ZXJ0ZXIoKTtcbiAgICBjb252ZXJ0ZXIuc2V0T3B0aW9uKCdnaENvZGVCbG9ja3MnLCB0cnVlKTtcbiAgICBjb252ZXJ0ZXIuc2V0T3B0aW9uKCd0YXNrbGlzdHMnLCB0cnVlKTtcbiAgICBjb252ZXJ0ZXIuc2V0T3B0aW9uKCd0YWJsZXMnLCB0cnVlKTtcbiAgICBjb252ZXJ0ZXIuc2V0T3B0aW9uKCdsaXRlcmFsTWlkV29yZFVuZGVyc2NvcmVzJywgdHJ1ZSk7XG4gICAgY29udmVydGVyLnNldE9wdGlvbignc2ltcGxlTGluZUJyZWFrcycsIHRoaXMuX3NpbXBsZUxpbmVCcmVha3MpO1xuICAgIGNvbnZlcnRlci5zZXRPcHRpb24oJ2Vtb2ppJywgdHJ1ZSk7XG4gICAgcmV0dXJuIGNvbnZlcnRlci5tYWtlSHRtbChtYXJrZG93blRvUGFyc2UpO1xuICB9XG59XG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=
314
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9tYXJrZG93bi9zcmMvbGliL21hcmtkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvbWFya2Rvd24vc3JjL2xpYi9tYXJrZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEVBQ1QsZUFBZSxFQUdmLFdBQVcsRUFDWCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFDTCxjQUFjLEVBQ2QsWUFBWSxFQUNaLFlBQVksRUFDWixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLFlBQVksRUFDWixlQUFlLEVBQ2YsbUJBQW1CLEdBQ3BCLE1BQU0saUNBQWlDLENBQUM7QUFFekMsT0FBTyxLQUFLLFFBQVEsTUFBTSxVQUFVLENBQUM7OztBQUVyQyxTQUFTLGFBQWEsQ0FBQyxXQUFtQjtJQUN4QyxrQ0FBa0M7SUFDbEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDakQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFFRCxtQ0FBbUM7QUFDbkMscUNBQXFDO0FBQ3JDLFNBQVMsWUFBWSxDQUFDLFdBQW1CLEVBQUUsWUFBb0I7SUFDN0QsSUFBSSxXQUFXLElBQUksWUFBWSxFQUFFO1FBQy9CLElBQUksYUFBYSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQzlCLE1BQU0sVUFBVSxHQUFRLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sSUFBSSxHQUFX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QVlGLGdCQUFnQjtzQkFEbkIsS0FBSztnQkFZRixTQUFTO3NCQURaLEtBQUs7Z0JBWUYsTUFBTTtzQkFEVCxLQUFLO2dCQVNJLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEFmdGVyVmlld0luaXQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgUmVuZGVyZXIyLFxuICBTZWN1cml0eUNvbnRleHQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgSG9zdEJpbmRpbmcsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7XG4gIHNjcm9sbFRvQW5jaG9yLFxuICBnZW5IZWFkaW5nSWQsXG4gIGlzQW5jaG9yTGluayxcbiAgcmVtb3ZlVHJhaWxpbmdIYXNoLFxuICByYXdHaXRodWJIcmVmLFxuICBpc0dpdGh1YkhyZWYsXG4gIGlzUmF3R2l0aHViSHJlZixcbiAgcmVuZGVyVmlkZW9FbGVtZW50cyxcbn0gZnJvbSAnLi9tYXJrZG93bi11dGlscy9tYXJrZG93bi11dGlscyc7XG5cbmltcG9ydCAqIGFzIHNob3dkb3duIGZyb20gJ3Nob3dkb3duJztcblxuZnVuY3Rpb24gaXNBYnNvbHV0ZVVybChjdXJyZW50SHJlZjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIC8vIFJlZ3VsYXIgRXhwcmVzc2lvbiB0byBjaGVjayB1cmxcbiAgY29uc3QgUmdFeHAgPSBuZXcgUmVnRXhwKCdeKD86W2Etel0rOik/Ly8nLCAnaScpO1xuICByZXR1cm4gUmdFeHAudGVzdChjdXJyZW50SHJlZik7XG59XG5cbi8vIFRPRE86IGFzc3VtZXMgaXQgaXMgYSBnaXRodWIgdXJsXG4vLyBoYW5kbGVzIGFic29sdXRlIGFuZCByZWxhdGl2ZSBVUkxzXG5mdW5jdGlvbiBnZW5lcmF0ZUhyZWYoY3VycmVudEhyZWY6IHN0cmluZywgcmVsYXRpdmVIcmVmOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoY3VycmVudEhyZWYgJiYgcmVsYXRpdmVIcmVmKSB7XG4gICAgaWYgKGlzQWJzb2x1dGVVcmwoY3VycmVudEhyZWYpKSB7XG4gICAgICBjb25zdCBjdXJyZW50VXJsOiBVUkwgPSBuZXcgVVJMKGN1cnJlbnRIcmVmKTtcbiAgICAgIGNvbnN0IHBhdGg6IHN0cmluZyA9IGN1cnJlbnRVcmwucGF0aG5hbWVcbiAgICAgICAgLnNwbGl0KCcvJylcbiAgICAgICAgLnNsaWNlKDEsIC0xKVxuICAgICAgICAuam9pbignLycpO1xuICAgICAgY29uc3QgY29ycmVjdFVybDogVVJMID0gbmV3IFVSTChjdXJyZW50SHJlZik7XG5cbiAgICAgIGlmIChyZWxhdGl2ZUhyZWYuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAgIC8vIHVybCBpcyByZWxhdGl2ZSB0byB0b3AgbGV2ZWxcbiAgICAgICAgY29uc3Qgb3JnQW5kUmVwbzogc3RyaW5nID0gcGF0aC5zcGxpdCgnLycpLnNsaWNlKDAsIDMpLmpvaW4oJy8nKTtcbiAgICAgICAgY29ycmVjdFVybC5wYXRobmFtZSA9IGAke29yZ0FuZFJlcG99JHtyZWxhdGl2ZUhyZWZ9YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvcnJlY3RVcmwucGF0aG5hbWUgPSBgJHtwYXRofS8ke3JlbGF0aXZlSHJlZn1gO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvcnJlY3RVcmwuaHJlZjtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcGF0aDogc3RyaW5nID0gY3VycmVudEhyZWYuc3BsaXQoJy8nKS5zbGljZSgwLCAtMSkuam9pbignLycpO1xuXG4gICAgICBpZiAocmVsYXRpdmVIcmVmLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICByZXR1cm4gYCR7cGF0aH0ke3JlbGF0aXZlSHJlZn1gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGAke3BhdGh9LyR7cmVsYXRpdmVIcmVmfWA7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiAnJztcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplSHRtbEhyZWZzKGh0bWw6IHN0cmluZywgY3VycmVudEhyZWY6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChjdXJyZW50SHJlZikge1xuICAgIGNvbnN0IGRvY3VtZW50OiBEb2N1bWVudCA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoXG4gICAgICBodG1sLFxuICAgICAgJ3RleHQvaHRtbCdcbiAgICApO1xuICAgIGRvY3VtZW50XG4gICAgICAucXVlcnlTZWxlY3RvckFsbDxIVE1MQW5jaG9yRWxlbWVudD4oJ2FbaHJlZl0nKVxuICAgICAgLmZvckVhY2goKGxpbms6IEhUTUxBbmNob3JFbGVtZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHVybDogVVJMID0gbmV3IFVSTChsaW5rLmhyZWYpO1xuICAgICAgICBjb25zdCBvcmlnaW5hbEhhc2g6IHN0cmluZyA9IHVybC5oYXNoO1xuICAgICAgICBpZiAoaXNBbmNob3JMaW5rKGxpbmspKSB7XG4gICAgICAgICAgaWYgKG9yaWdpbmFsSGFzaCkge1xuICAgICAgICAgICAgdXJsLmhhc2ggPSBnZW5IZWFkaW5nSWQob3JpZ2luYWxIYXNoKTtcbiAgICAgICAgICAgIGxpbmsuaHJlZiA9IHVybC5oYXNoO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh1cmwuaG9zdCA9PT0gd2luZG93LmxvY2F0aW9uLmhvc3QpIHtcbiAgICAgICAgICAvLyBob3N0cyBtYXRjaCwgbWVhbmluZyBVUkwgTUlHSFQgaGF2ZSBiZWVuIG1hbGZvcm1lZCBieSBzaG93ZG93blxuICAgICAgICAgIC8vIHVybCBpcyBhIHJlbGF0aXZlIHVybCBvciBqdXN0IGEgbGluayB0byBhIHBhcnQgb2YgdGhlIGFwcGxpY2F0aW9uXG4gICAgICAgICAgaWYgKHVybC5wYXRobmFtZS5lbmRzV2l0aCgnLm1kJykpIHtcbiAgICAgICAgICAgIC8vIG9ubHkgY2hlY2sgLm1kIHVybHNcblxuICAgICAgICAgICAgY29uc3QgaHJlZldpdGhvdXRIYXNoOiBzdHJpbmcgPSByZW1vdmVUcmFpbGluZ0hhc2goXG4gICAgICAgICAgICAgIGxpbmsuZ2V0QXR0cmlidXRlKCdocmVmJylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICAvLyBzaW5jZSB0aGlzIG1pZ2h0IGJlIGEgcmVsYXRpdmUgcGF0aCwgZG9uJ3QgYXNzaWduIGl0IHRvIHVybC5ocmVmXG4gICAgICAgICAgICAvLyByZWxhdGl2ZSBwYXRoIHdvbid0IGJlIGEgdmFsaWQgaHJlZiB0byBhc3NpZ24gdG8gVVJMXG4gICAgICAgICAgICBjb25zdCBuZXdIcmVmID0gZ2VuZXJhdGVIcmVmKGN1cnJlbnRIcmVmLCBocmVmV2l0aG91dEhhc2gpO1xuXG4gICAgICAgICAgICBpZiAob3JpZ2luYWxIYXNoKSB7XG4gICAgICAgICAgICAgIHVybC5oYXNoID0gZ2VuSGVhZGluZ0lkKG9yaWdpbmFsSGFzaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaW5rLmhyZWYgPSBuZXdIcmVmO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsaW5rLnRhcmdldCA9ICdfYmxhbmsnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHVybCBpcyBhYnNvbHV0ZVxuICAgICAgICAgIGlmICh1cmwucGF0aG5hbWUuZW5kc1dpdGgoJy5tZCcpKSB7XG4gICAgICAgICAgICBpZiAob3JpZ2luYWxIYXNoKSB7XG4gICAgICAgICAgICAgIHVybC5oYXNoID0gZ2VuSGVhZGluZ0lkKG9yaWdpbmFsSGFzaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaW5rLmhyZWYgPSB1cmwuaHJlZjtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGluay50YXJnZXQgPSAnX2JsYW5rJztcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICByZXR1cm4gbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhkb2N1bWVudCk7XG4gIH1cbiAgcmV0dXJuIGh0bWw7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUltYWdlU3JjcyhodG1sOiBzdHJpbmcsIGN1cnJlbnRIcmVmOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoY3VycmVudEhyZWYpIHtcbiAgICBjb25zdCBkb2N1bWVudDogRG9jdW1lbnQgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKFxuICAgICAgaHRtbCxcbiAgICAgICd0ZXh0L2h0bWwnXG4gICAgKTtcbiAgICBkb2N1bWVudFxuICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEltYWdlRWxlbWVudD4oJ2ltZ1tzcmNdJylcbiAgICAgIC5mb3JFYWNoKChpbWFnZTogSFRNTEltYWdlRWxlbWVudCkgPT4ge1xuICAgICAgICBjb25zdCBzcmMgPSBpbWFnZS5nZXRBdHRyaWJ1dGUoJ3NyYycpID8/ICcnO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby11bnVzZWQtZXhwcmVzc2lvbiAqL1xuICAgICAgICAgIG5ldyBVUkwoc3JjKTtcbiAgICAgICAgICBpZiAoaXNHaXRodWJIcmVmKHNyYykpIHtcbiAgICAgICAgICAgIGltYWdlLnNyYyA9IHJhd0dpdGh1YkhyZWYoc3JjKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIGltYWdlLnNyYyA9IGdlbmVyYXRlSHJlZihcbiAgICAgICAgICAgIGlzR2l0aHViSHJlZihjdXJyZW50SHJlZilcbiAgICAgICAgICAgICAgPyByYXdHaXRodWJIcmVmKGN1cnJlbnRIcmVmKVxuICAgICAgICAgICAgICA6IGN1cnJlbnRIcmVmLFxuICAgICAgICAgICAgc3JjXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBnaCBzdmdzIG5lZWQgdG8gaGF2ZSA/c2FuaXRpemU9dHJ1ZVxuICAgICAgICBpZiAoaXNSYXdHaXRodWJIcmVmKGltYWdlLnNyYykpIHtcbiAgICAgICAgICBjb25zdCB1cmw6IFVSTCA9IG5ldyBVUkwoaW1hZ2Uuc3JjKTtcbiAgICAgICAgICBpZiAodXJsLnBhdGhuYW1lLmVuZHNXaXRoKCcuc3ZnJykpIHtcbiAgICAgICAgICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdzYW5pdGl6ZScsICd0cnVlJyk7XG4gICAgICAgICAgICBpbWFnZS5zcmMgPSB1cmwuaHJlZjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIG5ldyBYTUxTZXJpYWxpemVyKCkuc2VyaWFsaXplVG9TdHJpbmcoZG9jdW1lbnQpO1xuICB9XG4gIHJldHVybiBodG1sO1xufVxuXG5mdW5jdGlvbiBhZGRJZHNUb0hlYWRpbmdzKGh0bWw6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChodG1sKSB7XG4gICAgY29uc3QgZG9jdW1lbnQ6IERvY3VtZW50ID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhcbiAgICAgIGh0bWwsXG4gICAgICAndGV4dC9odG1sJ1xuICAgICk7XG4gICAgZG9jdW1lbnRcbiAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKCdoMSwgaDIsIGgzLCBoNCwgaDUsIGg2JylcbiAgICAgIC5mb3JFYWNoKChoZWFkaW5nOiBFbGVtZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGlkOiBzdHJpbmcgPSBnZW5IZWFkaW5nSWQoaGVhZGluZy5pbm5lckhUTUwpO1xuICAgICAgICBoZWFkaW5nLnNldEF0dHJpYnV0ZSgnaWQnLCBpZCk7XG4gICAgICB9KTtcbiAgICByZXR1cm4gbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhkb2N1bWVudCk7XG4gIH1cbiAgcmV0dXJuIGh0bWw7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RkLW1hcmtkb3duJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWFya2Rvd24uY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL21hcmtkb3duLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgVGRNYXJrZG93bkNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gIHByaXZhdGUgX2NvbnRlbnQhOiBzdHJpbmc7XG4gIHByaXZhdGUgX3NpbXBsZUxpbmVCcmVha3MgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaG9zdGVkVXJsITogc3RyaW5nO1xuICBwcml2YXRlIF9hbmNob3IhOiBzdHJpbmc7XG4gIHByaXZhdGUgX3ZpZXdJbml0ID0gZmFsc2U7XG4gIHByaXZhdGUgX2FuY2hvckxpc3RlbmVyPzogVm9pZEZ1bmN0aW9uO1xuICAvKipcbiAgICogLnRkLW1hcmtkb3duIGNsYXNzIGFkZGVkIHRvIGhvc3Qgc28gOjpuZy1kZWVwIGdldHMgc2NvcGVkLlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzID0gJ3RkLW1hcmtkb3duJztcblxuICAvKipcbiAgICogY29udGVudD86IHN0cmluZ1xuICAgKlxuICAgKiBNYXJrZG93biBmb3JtYXQgY29udGVudCB0byBiZSBwYXJzZWQgYXMgaHRtbCBtYXJrdXAuXG4gICAqXG4gICAqIGUuZy4gUkVBRE1FLm1kIGNvbnRlbnQuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgY29udGVudChjb250ZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9jb250ZW50ID0gY29udGVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBzaW1wbGVMaW5lQnJlYWtzPzogc3RyaW5nXG4gICAqXG4gICAqIFNldHMgd2hldGhlciBuZXdsaW5lIGNoYXJhY3RlcnMgaW5zaWRlIHBhcmFncmFwaHMgYW5kIHNwYW5zIGFyZSBwYXJzZWQgYXMgPGJyLz4uXG4gICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHNpbXBsZUxpbmVCcmVha3Moc2ltcGxlTGluZUJyZWFrczogYm9vbGVhbikge1xuICAgIHRoaXMuX3NpbXBsZUxpbmVCcmVha3MgPSBzaW1wbGVMaW5lQnJlYWtzO1xuICB9XG5cbiAgLyoqXG4gICAqIGhvc3RlZFVybD86IHN0cmluZ1xuICAgKlxuICAgKiBJZiBtYXJrZG93biBjb250YWlucyByZWxhdGl2ZSBwYXRocywgdGhpcyBpcyByZXF1aXJlZCB0byBnZW5lcmF0ZSBjb3JyZWN0IHVybHMuXG4gICAqXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgaG9zdGVkVXJsKGhvc3RlZFVybDogc3RyaW5nKSB7XG4gICAgdGhpcy5faG9zdGVkVXJsID0gaG9zdGVkVXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIGFuY2hvcj86IHN0cmluZ1xuICAgKlxuICAgKiBBbmNob3IgdG8ganVtcCB0by5cbiAgICpcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBhbmNob3IoYW5jaG9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9hbmNob3IgPSBhbmNob3I7XG4gIH1cblxuICAvKipcbiAgICogY29udGVudFJlYWR5PzogZnVuY3Rpb25cbiAgICogRXZlbnQgZW1pdHRlZCBhZnRlciB0aGUgbWFya2Rvd24gY29udGVudCByZW5kZXJpbmcgaXMgZmluaXNoZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgY29udGVudFJlYWR5OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgX2RvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lXG4gICkge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgLy8gb25seSBhbmNob3IgY2hhbmdlZFxuICAgIGlmIChcbiAgICAgIGNoYW5nZXNbJ2FuY2hvciddICYmXG4gICAgICAhY2hhbmdlc1snY29udGVudCddICYmXG4gICAgICAhY2hhbmdlc1snc2ltcGxlTGluZUJyZWFrcyddICYmXG4gICAgICAhY2hhbmdlc1snaG9zdGVkVXJsJ11cbiAgICApIHtcbiAgICAgIHNjcm9sbFRvQW5jaG9yKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5fYW5jaG9yLCB0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fY29udGVudCkge1xuICAgICAgdGhpcy5fbG9hZENvbnRlbnQoXG4gICAgICAgICg8SFRNTEVsZW1lbnQ+dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KS50ZXh0Q29udGVudFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5fdmlld0luaXQgPSB0cnVlO1xuXG4gICAgLy8gQ2FyZXRha2VyIG5vdGU6IHRoZSBgc2Nyb2xsVG9BbmNob3JgIGNhbGxzIGBlbGVtZW50LnNjcm9sbEludG9WaWV3YCwgYSBuYXRpdmUgc3luY2hyb25vdXMgRE9NXG4gICAgLy8gQVBJIGFuZCBpdCBkb2Vzbid0IHJlcXVpcmUgQW5ndWxhciBydW5uaW5nIGBBcHBsaWNhdGlvblJlZi50aWNrKClgIGVhY2ggdGltZSB0aGUgbWFya2Rvd24gY29tcG9uZW50IGlzIGNsaWNrZWQuXG4gICAgLy8gSG9zdCBsaXN0ZW5lciAoYWRkZWQgdGhyb3VnaCBgQEhvc3RMaXN0ZW5lcmApIGNhdXNlIEFuZ3VsYXIgdG8gYWRkIGFuIGV2ZW50IGxpc3RlbmVyIHdpdGhpbiB0aGUgQW5ndWxhciB6b25lLlxuICAgIC8vIEl0IGFsc28gY2FsbHMgYG1hcmtWaWV3RGlydHkoKWAgYmVmb3JlIGNhbGxpbmcgdGhlIGFjdHVhbCBsaXN0ZW5lciAodGhlIGRlY29yYXRlZCBjbGFzcyBtZXRob2QpLlxuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLl9hbmNob3JMaXN0ZW5lciA9IHRoaXMuX3JlbmRlcmVyLmxpc3RlbihcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnY2xpY2snLFxuICAgICAgICAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBlbGVtZW50OiBIVE1MRWxlbWVudCA9IDxIVE1MRWxlbWVudD5ldmVudC5zcmNFbGVtZW50O1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGVsZW1lbnQubWF0Y2hlcygnYVtocmVmXScpICYmXG4gICAgICAgICAgICBpc0FuY2hvckxpbmsoPEhUTUxBbmNob3JFbGVtZW50PmVsZW1lbnQpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUFuY2hvckNsaWNrcyhldmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fYW5jaG9yTGlzdGVuZXI/LigpO1xuICB9XG5cbiAgcmVmcmVzaCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY29udGVudCkge1xuICAgICAgdGhpcy5fbG9hZENvbnRlbnQodGhpcy5fY29udGVudCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl92aWV3SW5pdCkge1xuICAgICAgdGhpcy5fbG9hZENvbnRlbnQoXG4gICAgICAgICg8SFRNTEVsZW1lbnQ+dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KS50ZXh0Q29udGVudFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhbCBtZXRob2QgdG8gcGFyc2UgYSBzdHJpbmcgbWFya2Rvd24gaW50byBIVE1MIEVsZW1lbnRzIGFuZCBsb2FkIHRoZW0gaW50byB0aGUgY29udGFpbmVyXG4gICAqL1xuICBwcml2YXRlIF9sb2FkQ29udGVudChtYXJrZG93bjogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmIChtYXJrZG93biAmJiBtYXJrZG93bi50cmltKCkubGVuZ3RoID4gMCkge1xuICAgICAgLy8gQ2xlYW4gY29udGFpbmVyXG4gICAgICB0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eShcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAnaW5uZXJIVE1MJyxcbiAgICAgICAgJydcbiAgICAgICk7XG4gICAgICAvLyBQYXJzZSBodG1sIHN0cmluZyBpbnRvIGFjdHVhbCBIVE1MIGVsZW1lbnRzLlxuICAgICAgdGhpcy5fZWxlbWVudEZyb21TdHJpbmcodGhpcy5fcmVuZGVyKG1hcmtkb3duKSk7XG4gICAgfVxuICAgIC8vIFRPRE86IHRpbWVvdXQgcmVxdWlyZWQgc2luY2UgcmVzaXppbmcgb2YgaHRtbCBlbGVtZW50cyBvY2N1cnMgd2hpY2ggY2F1c2VzIGEgY2hhbmdlIGluIHRoZSBzY3JvbGwgcG9zaXRpb25cbiAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT5cbiAgICAgIHNldFRpbWVvdXQoXG4gICAgICAgICgpID0+XG4gICAgICAgICAgc2Nyb2xsVG9BbmNob3IodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLl9hbmNob3IsIHRydWUpLFxuICAgICAgICAyNTBcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuY29udGVudFJlYWR5LmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQW5jaG9yQ2xpY2tzKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgdXJsOiBVUkwgPSBuZXcgVVJMKCg8SFRNTEFuY2hvckVsZW1lbnQ+ZXZlbnQudGFyZ2V0KS5ocmVmKTtcbiAgICBjb25zdCBoYXNoOiBzdHJpbmcgPSBkZWNvZGVVUkkodXJsLmhhc2gpO1xuICAgIHNjcm9sbFRvQW5jaG9yKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgaGFzaCwgdHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIF9lbGVtZW50RnJvbVN0cmluZyhtYXJrdXBTdHI6IHN0cmluZyk6IEhUTUxEaXZFbGVtZW50IHtcbiAgICAvLyBSZW5kZXJlcjIgZG9lc250IGhhdmUgYSBwYXJzaW5nIG1ldGhvZCwgc28gd2UgaGF2ZSB0byBzYW5pdGl6ZSBhbmQgdXNlIFtpbm5lckhUTUxdXG4gICAgLy8gdG8gcGFyc2UgdGhlIHN0cmluZyBpbnRvIERPTSBlbGVtZW50IGZvciBub3cuXG4gICAgY29uc3QgZGl2OiBIVE1MRGl2RWxlbWVudCA9IHRoaXMuX3JlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRoaXMuX3JlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgZGl2KTtcbiAgICBjb25zdCBodG1sOiBzdHJpbmcgPVxuICAgICAgdGhpcy5fZG9tU2FuaXRpemVyLnNhbml0aXplKFNlY3VyaXR5Q29udGV4dC5IVE1MLCBtYXJrdXBTdHIpID8/ICcnO1xuICAgIGNvbnN0IGh0bWxXaXRoQWJzb2x1dGVIcmVmczogc3RyaW5nID0gbm9ybWFsaXplSHRtbEhyZWZzKFxuICAgICAgaHRtbCxcbiAgICAgIHRoaXMuX2hvc3RlZFVybFxuICAgICk7XG4gICAgY29uc3QgaHRtbFdpdGhBYnNvbHV0ZUltZ1NyY3M6IHN0cmluZyA9IG5vcm1hbGl6ZUltYWdlU3JjcyhcbiAgICAgIGh0bWxXaXRoQWJzb2x1dGVIcmVmcyxcbiAgICAgIHRoaXMuX2hvc3RlZFVybFxuICAgICk7XG4gICAgY29uc3QgaHRtbFdpdGhIZWFkaW5nSWRzOiBzdHJpbmcgPSBhZGRJZHNUb0hlYWRpbmdzKFxuICAgICAgaHRtbFdpdGhBYnNvbHV0ZUltZ1NyY3NcbiAgICApO1xuICAgIGNvbnN0IGh0bWxXaXRoVmlkZW9zOiBTYWZlSHRtbCA9IHJlbmRlclZpZGVvRWxlbWVudHMoaHRtbFdpdGhIZWFkaW5nSWRzKTtcbiAgICB0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eShkaXYsICdpbm5lckhUTUwnLCBodG1sV2l0aFZpZGVvcyk7XG4gICAgcmV0dXJuIGRpdjtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbmRlcihtYXJrZG93bjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBUcmltIGxlYWRpbmcgYW5kIHRyYWlsaW5nIG5ld2xpbmVzXG4gICAgbWFya2Rvd24gPSBtYXJrZG93blxuICAgICAgLnJlcGxhY2UoL14oXFxzfFxcdCkqXFxuKy9nLCAnJylcbiAgICAgIC5yZXBsYWNlKC8oXFxzfFxcdCkqXFxuKyhcXHN8XFx0KSokL2csICcnKTtcbiAgICAvLyBTcGxpdCBtYXJrZG93biBieSBsaW5lIGNoYXJhY3RlcnNcbiAgICBsZXQgbGluZXM6IHN0cmluZ1tdID0gbWFya2Rvd24uc3BsaXQoJ1xcbicpO1xuXG4gICAgLy8gY2hlY2sgaG93IG11Y2ggaW5kZW50YXRpb24gaXMgdXNlZCBieSB0aGUgZmlyc3QgYWN0dWFsIG1hcmtkb3duIGxpbmVcbiAgICBjb25zdCBmaXJzdExpbmVXaGl0ZXNwYWNlTWF0Y2ggPSBsaW5lc1swXS5tYXRjaCgvXihcXHN8XFx0KSovKTtcbiAgICBjb25zdCBmaXJzdExpbmVXaGl0ZXNwYWNlOiBzdHJpbmcgPSBmaXJzdExpbmVXaGl0ZXNwYWNlTWF0Y2hcbiAgICAgID8gZmlyc3RMaW5lV2hpdGVzcGFjZU1hdGNoWzBdXG4gICAgICA6ICcnO1xuXG4gICAgLy8gUmVtb3ZlIGFsbCBpbmRlbnRhdGlvbiBzcGFjZXMgc28gbWFya2Rvd24gY2FuIGJlIHBhcnNlZCBjb3JyZWN0bHlcbiAgICBjb25zdCBzdGFydGluZ1doaXRlc3BhY2VSZWdleCA9IG5ldyBSZWdFeHAoJ14nICsgZmlyc3RMaW5lV2hpdGVzcGFjZSk7XG4gICAgbGluZXMgPSBsaW5lcy5tYXAoZnVuY3Rpb24gKGxpbmU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gbGluZS5yZXBsYWNlKHN0YXJ0aW5nV2hpdGVzcGFjZVJlZ2V4LCAnJyk7XG4gICAgfSk7XG5cbiAgICAvLyBKb2luIGxpbmVzIGFnYWluIHdpdGggbGluZSBjaGFyYWN0ZXJzXG4gICAgY29uc3QgbWFya2Rvd25Ub1BhcnNlOiBzdHJpbmcgPSBsaW5lcy5qb2luKCdcXG4nKTtcblxuICAgIC8vIENvbnZlcnQgbWFya2Rvd24gaW50byBodG1sXG4gICAgY29uc3QgY29udmVydGVyOiBzaG93ZG93bi5Db252ZXJ0ZXIgPSBuZXcgc2hvd2Rvd24uQ29udmVydGVyKCk7XG4gICAgY29udmVydGVyLnNldE9wdGlvbignZ2hDb2RlQmxvY2tzJywgdHJ1ZSk7XG4gICAgY29udmVydGVyLnNldE9wdGlvbigndGFza2xpc3RzJywgdHJ1ZSk7XG4gICAgY29udmVydGVyLnNldE9wdGlvbigndGFibGVzJywgdHJ1ZSk7XG4gICAgY29udmVydGVyLnNldE9wdGlvbignbGl0ZXJhbE1pZFdvcmRVbmRlcnNjb3JlcycsIHRydWUpO1xuICAgIGNvbnZlcnRlci5zZXRPcHRpb24oJ3NpbXBsZUxpbmVCcmVha3MnLCB0aGlzLl9zaW1wbGVMaW5lQnJlYWtzKTtcbiAgICBjb252ZXJ0ZXIuc2V0T3B0aW9uKCdlbW9qaScsIHRydWUpO1xuICAgIHJldHVybiBjb252ZXJ0ZXIubWFrZUh0bWwobWFya2Rvd25Ub1BhcnNlKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIl19
@@ -6,10 +6,10 @@ import { TdMarkdownLoaderService } from './markdown-loader/markdown-loader.servi
6
6
  import * as i0 from "@angular/core";
7
7
  export class CovalentMarkdownModule {
8
8
  }
9
- CovalentMarkdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentMarkdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- CovalentMarkdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.5", ngImport: i0, type: CovalentMarkdownModule, declarations: [TdMarkdownComponent], imports: [CommonModule, HttpClientModule], exports: [TdMarkdownComponent] });
11
- CovalentMarkdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentMarkdownModule, providers: [TdMarkdownLoaderService], imports: [CommonModule, HttpClientModule] });
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentMarkdownModule, decorators: [{
9
+ CovalentMarkdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CovalentMarkdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
+ CovalentMarkdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: CovalentMarkdownModule, declarations: [TdMarkdownComponent], imports: [CommonModule, HttpClientModule], exports: [TdMarkdownComponent] });
11
+ CovalentMarkdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CovalentMarkdownModule, providers: [TdMarkdownLoaderService], imports: [CommonModule, HttpClientModule] });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CovalentMarkdownModule, decorators: [{
13
13
  type: NgModule,
14
14
  args: [{
15
15
  imports: [CommonModule, HttpClientModule],
@@ -18,4 +18,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
18
18
  providers: [TdMarkdownLoaderService],
19
19
  }]
20
20
  }] });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9tYXJrZG93bi9zcmMvbGliL21hcmtkb3duLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7QUFRcEYsTUFBTSxPQUFPLHNCQUFzQjs7bUhBQXRCLHNCQUFzQjtvSEFBdEIsc0JBQXNCLGlCQUpsQixtQkFBbUIsYUFEeEIsWUFBWSxFQUFFLGdCQUFnQixhQUU5QixtQkFBbUI7b0hBR2xCLHNCQUFzQixhQUZ0QixDQUFDLHVCQUF1QixDQUFDLFlBSDFCLFlBQVksRUFBRSxnQkFBZ0I7MkZBSzdCLHNCQUFzQjtrQkFObEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLENBQUM7b0JBQ3pDLFlBQVksRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUNuQyxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztvQkFDOUIsU0FBUyxFQUFFLENBQUMsdUJBQXVCLENBQUM7aUJBQ3JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IFRkTWFya2Rvd25Db21wb25lbnQgfSBmcm9tICcuL21hcmtkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZE1hcmtkb3duTG9hZGVyU2VydmljZSB9IGZyb20gJy4vbWFya2Rvd24tbG9hZGVyL21hcmtkb3duLWxvYWRlci5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSHR0cENsaWVudE1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW1RkTWFya2Rvd25Db21wb25lbnRdLFxuICBleHBvcnRzOiBbVGRNYXJrZG93bkNvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW1RkTWFya2Rvd25Mb2FkZXJTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ292YWxlbnRNYXJrZG93bk1vZHVsZSB7fVxuIl19
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9tYXJrZG93bi9zcmMvbGliL21hcmtkb3duLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7QUFRcEYsTUFBTSxPQUFPLHNCQUFzQjs7b0hBQXRCLHNCQUFzQjtxSEFBdEIsc0JBQXNCLGlCQUpsQixtQkFBbUIsYUFEeEIsWUFBWSxFQUFFLGdCQUFnQixhQUU5QixtQkFBbUI7cUhBR2xCLHNCQUFzQixhQUZ0QixDQUFDLHVCQUF1QixDQUFDLFlBSDFCLFlBQVksRUFBRSxnQkFBZ0I7NEZBSzdCLHNCQUFzQjtrQkFObEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLENBQUM7b0JBQ3pDLFlBQVksRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUNuQyxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztvQkFDOUIsU0FBUyxFQUFFLENBQUMsdUJBQXVCLENBQUM7aUJBQ3JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IFRkTWFya2Rvd25Db21wb25lbnQgfSBmcm9tICcuL21hcmtkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZE1hcmtkb3duTG9hZGVyU2VydmljZSB9IGZyb20gJy4vbWFya2Rvd24tbG9hZGVyL21hcmtkb3duLWxvYWRlci5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSHR0cENsaWVudE1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW1RkTWFya2Rvd25Db21wb25lbnRdLFxuICBleHBvcnRzOiBbVGRNYXJrZG93bkNvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW1RkTWFya2Rvd25Mb2FkZXJTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ292YWxlbnRNYXJrZG93bk1vZHVsZSB7fVxuIl19
@@ -122,22 +122,41 @@ function renderVideoElements(html) {
122
122
  .replace(ytPlaylist, convertPL);
123
123
  }
124
124
 
125
+ function isAbsoluteUrl(currentHref) {
126
+ // Regular Expression to check url
127
+ const RgExp = new RegExp('^(?:[a-z]+:)?//', 'i');
128
+ return RgExp.test(currentHref);
129
+ }
125
130
  // TODO: assumes it is a github url
126
- // allow override somehow
127
- function generateAbsoluteHref(currentHref, relativeHref) {
131
+ // handles absolute and relative URLs
132
+ function generateHref(currentHref, relativeHref) {
128
133
  if (currentHref && relativeHref) {
129
- const currentUrl = new URL(currentHref);
130
- const path = currentUrl.pathname.split('/').slice(1, -1).join('/');
131
- const correctUrl = new URL(currentHref);
132
- if (relativeHref.startsWith('/')) {
133
- // url is relative to top level
134
- const orgAndRepo = path.split('/').slice(0, 3).join('/');
135
- correctUrl.pathname = `${orgAndRepo}${relativeHref}`;
134
+ if (isAbsoluteUrl(currentHref)) {
135
+ const currentUrl = new URL(currentHref);
136
+ const path = currentUrl.pathname
137
+ .split('/')
138
+ .slice(1, -1)
139
+ .join('/');
140
+ const correctUrl = new URL(currentHref);
141
+ if (relativeHref.startsWith('/')) {
142
+ // url is relative to top level
143
+ const orgAndRepo = path.split('/').slice(0, 3).join('/');
144
+ correctUrl.pathname = `${orgAndRepo}${relativeHref}`;
145
+ }
146
+ else {
147
+ correctUrl.pathname = `${path}/${relativeHref}`;
148
+ }
149
+ return correctUrl.href;
136
150
  }
137
151
  else {
138
- correctUrl.pathname = `${path}/${relativeHref}`;
152
+ const path = currentHref.split('/').slice(0, -1).join('/');
153
+ if (relativeHref.startsWith('/')) {
154
+ return `${path}${relativeHref}`;
155
+ }
156
+ else {
157
+ return `${path}/${relativeHref}`;
158
+ }
139
159
  }
140
- return correctUrl.href;
141
160
  }
142
161
  return '';
143
162
  }
@@ -161,11 +180,13 @@ function normalizeHtmlHrefs(html, currentHref) {
161
180
  if (url.pathname.endsWith('.md')) {
162
181
  // only check .md urls
163
182
  const hrefWithoutHash = removeTrailingHash(link.getAttribute('href'));
164
- url.href = generateAbsoluteHref(currentHref, hrefWithoutHash);
183
+ // since this might be a relative path, don't assign it to url.href
184
+ // relative path won't be a valid href to assign to URL
185
+ const newHref = generateHref(currentHref, hrefWithoutHash);
165
186
  if (originalHash) {
166
187
  url.hash = genHeadingId(originalHash);
167
188
  }
168
- link.href = url.href;
189
+ link.href = newHref;
169
190
  }
170
191
  link.target = '_blank';
171
192
  }
@@ -200,7 +221,7 @@ function normalizeImageSrcs(html, currentHref) {
200
221
  }
201
222
  }
202
223
  catch (_b) {
203
- image.src = generateAbsoluteHref(isGithubHref(currentHref)
224
+ image.src = generateHref(isGithubHref(currentHref)
204
225
  ? rawGithubHref(currentHref)
205
226
  : currentHref, src);
206
227
  }
@@ -392,9 +413,9 @@ class TdMarkdownComponent {
392
413
  return converter.makeHtml(markdownToParse);
393
414
  }
394
415
  }
395
- TdMarkdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: TdMarkdownComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.DomSanitizer }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
396
- TdMarkdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: TdMarkdownComponent, selector: "td-markdown", inputs: { content: "content", simpleLineBreaks: "simpleLineBreaks", hostedUrl: "hostedUrl", anchor: "anchor" }, outputs: { contentReady: "contentReady" }, host: { properties: { "class": "this.class" } }, usesOnChanges: true, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host.td-markdown::ng-deep a{background-color:transparent}:host.td-markdown::ng-deep a:active,:host.td-markdown::ng-deep a:hover{outline-width:0}:host.td-markdown::ng-deep strong{font-weight:inherit;font-weight:bolder}:host.td-markdown::ng-deep h1{font-size:2em;margin:.67em 0}:host.td-markdown::ng-deep img{border-style:none}:host.td-markdown::ng-deep svg:not(:root){overflow:hidden}:host.td-markdown::ng-deep code,:host.td-markdown::ng-deep kbd,:host.td-markdown::ng-deep pre{font-family:monospace;font-size:1em}:host.td-markdown::ng-deep hr{box-sizing:content-box;height:0;overflow:visible}:host.td-markdown::ng-deep input{font:inherit;margin:0;overflow:visible}:host.td-markdown::ng-deep button:-moz-focusring,:host.td-markdown::ng-deep [type=button]:-moz-focusring,:host.td-markdown::ng-deep [type=reset]:-moz-focusring,:host.td-markdown::ng-deep [type=submit]:-moz-focusring{outline:1px dotted ButtonText}:host.td-markdown::ng-deep [type=checkbox]{box-sizing:border-box;padding:0}:host.td-markdown::ng-deep table{border-spacing:0;border-collapse:collapse}:host.td-markdown::ng-deep td,:host.td-markdown::ng-deep th{padding:0}:host.td-markdown::ng-deep *{box-sizing:border-box}:host.td-markdown::ng-deep input{font:13px/1.4 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol}:host.td-markdown::ng-deep a{text-decoration:none}:host.td-markdown::ng-deep a:hover,:host.td-markdown::ng-deep a:active{text-decoration:underline}:host.td-markdown::ng-deep hr{height:0;margin:15px 0;overflow:hidden;background:transparent;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep hr:before{display:table;content:\"\"}:host.td-markdown::ng-deep hr:after{display:table;clear:both;content:\"\"}:host.td-markdown::ng-deep h1,:host.td-markdown::ng-deep h2,:host.td-markdown::ng-deep h3,:host.td-markdown::ng-deep h4,:host.td-markdown::ng-deep h5,:host.td-markdown::ng-deep h6{margin-top:0;margin-bottom:0;line-height:1.5}:host.td-markdown::ng-deep h1{font-size:30px}:host.td-markdown::ng-deep h2{font-size:21px}:host.td-markdown::ng-deep h3{font-size:16px}:host.td-markdown::ng-deep h4{font-size:14px}:host.td-markdown::ng-deep h5{font-size:12px}:host.td-markdown::ng-deep h6{font-size:11px}:host.td-markdown::ng-deep p{margin-top:0;margin-bottom:10px}:host.td-markdown::ng-deep blockquote{margin:0}:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol{padding-left:0;margin-top:0;margin-bottom:0}:host.td-markdown::ng-deep ol ol,:host.td-markdown::ng-deep ul ol{list-style-type:lower-roman}:host.td-markdown::ng-deep ul ul ol,:host.td-markdown::ng-deep ul ol ol,:host.td-markdown::ng-deep ol ul ol,:host.td-markdown::ng-deep ol ol ol{list-style-type:lower-alpha}:host.td-markdown::ng-deep dd{margin-left:0}:host.td-markdown::ng-deep code{font-family:Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px}:host.td-markdown::ng-deep pre{margin-top:0;margin-bottom:0;font:12px Consolas,Liberation Mono,Menlo,Courier,monospace}:host.td-markdown::ng-deep .pl-0{padding-left:0!important}:host.td-markdown::ng-deep .pl-1{padding-left:3px!important}:host.td-markdown::ng-deep .pl-2{padding-left:6px!important}:host.td-markdown::ng-deep .pl-3{padding-left:12px!important}:host.td-markdown::ng-deep .pl-4{padding-left:24px!important}:host.td-markdown::ng-deep .pl-5{padding-left:36px!important}:host.td-markdown::ng-deep .pl-6{padding-left:48px!important}:host.td-markdown::ng-deep .form-select::-ms-expand{opacity:0}:host.td-markdown::ng-deep a:not([href]){color:inherit;text-decoration:none}:host.td-markdown::ng-deep h1,:host.td-markdown::ng-deep h2,:host.td-markdown::ng-deep h3,:host.td-markdown::ng-deep h4,:host.td-markdown::ng-deep h5,:host.td-markdown::ng-deep h6{margin-top:1em;margin-bottom:16px;font-weight:700;line-height:1.4}:host.td-markdown::ng-deep h1 .octicon-link,:host.td-markdown::ng-deep h2 .octicon-link,:host.td-markdown::ng-deep h3 .octicon-link,:host.td-markdown::ng-deep h4 .octicon-link,:host.td-markdown::ng-deep h5 .octicon-link,:host.td-markdown::ng-deep h6 .octicon-link{color:#000;vertical-align:middle;visibility:hidden}:host.td-markdown::ng-deep h1:hover .anchor,:host.td-markdown::ng-deep h2:hover .anchor,:host.td-markdown::ng-deep h3:hover .anchor,:host.td-markdown::ng-deep h4:hover .anchor,:host.td-markdown::ng-deep h5:hover .anchor,:host.td-markdown::ng-deep h6:hover .anchor{text-decoration:none}:host.td-markdown::ng-deep h1:hover .anchor .octicon-link,:host.td-markdown::ng-deep h2:hover .anchor .octicon-link,:host.td-markdown::ng-deep h3:hover .anchor .octicon-link,:host.td-markdown::ng-deep h4:hover .anchor .octicon-link,:host.td-markdown::ng-deep h5:hover .anchor .octicon-link,:host.td-markdown::ng-deep h6:hover .anchor .octicon-link{visibility:visible}:host.td-markdown::ng-deep h1{padding-bottom:.3em;font-size:2.25em;line-height:1.2;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep h1 .anchor{line-height:1}:host.td-markdown::ng-deep h2{padding-bottom:.3em;font-size:1.75em;line-height:1.225;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep h2 .anchor{line-height:1}:host.td-markdown::ng-deep h3{font-size:1.5em;line-height:1.43}:host.td-markdown::ng-deep h3 .anchor{line-height:1.2}:host.td-markdown::ng-deep h4{font-size:1.25em}:host.td-markdown::ng-deep h4 .anchor{line-height:1.2}:host.td-markdown::ng-deep h5{font-size:1em}:host.td-markdown::ng-deep h5 .anchor{line-height:1.1}:host.td-markdown::ng-deep h6{font-size:1em}:host.td-markdown::ng-deep h6 .anchor{line-height:1.1}:host.td-markdown::ng-deep p,:host.td-markdown::ng-deep blockquote,:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol,:host.td-markdown::ng-deep dl,:host.td-markdown::ng-deep table,:host.td-markdown::ng-deep pre{margin-top:0;margin-bottom:16px}:host.td-markdown::ng-deep hr{margin:16px 0}:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol{padding-left:2em}:host.td-markdown::ng-deep ul ul,:host.td-markdown::ng-deep ul ol,:host.td-markdown::ng-deep ol ol,:host.td-markdown::ng-deep ol ul{margin-top:0;margin-bottom:0}:host.td-markdown::ng-deep li>p{margin-top:16px}:host.td-markdown::ng-deep dl{padding:0}:host.td-markdown::ng-deep dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}:host.td-markdown::ng-deep dl dd{padding:0 16px;margin-bottom:16px}:host.td-markdown::ng-deep blockquote{padding:0 15px;border-left-width:4px;border-left-style:solid}:host.td-markdown::ng-deep blockquote>:first-child{margin-top:0}:host.td-markdown::ng-deep blockquote>:last-child{margin-bottom:0}:host.td-markdown::ng-deep table{display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}:host.td-markdown::ng-deep table th{font-weight:700}:host.td-markdown::ng-deep table th,:host.td-markdown::ng-deep table td{padding:6px 13px;border-width:1px;border-style:solid}:host.td-markdown::ng-deep table tr{border-top-width:1px;border-top-style:solid}:host.td-markdown::ng-deep img{max-width:100%;box-sizing:content-box}:host.td-markdown::ng-deep code{padding:.2em 0;margin:0;font-size:85%;border-radius:3px}:host.td-markdown::ng-deep code:before,:host.td-markdown::ng-deep code:after{letter-spacing:-.2em}:host.td-markdown::ng-deep pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:transparent;border:0}:host.td-markdown::ng-deep .highlight{margin-bottom:16px}:host.td-markdown::ng-deep .highlight pre,:host.td-markdown::ng-deep pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;border-radius:3px}:host.td-markdown::ng-deep .highlight pre{margin-bottom:0;word-break:normal}:host.td-markdown::ng-deep pre{word-wrap:normal}:host.td-markdown::ng-deep pre code{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}:host.td-markdown::ng-deep pre code:before,:host.td-markdown::ng-deep pre code:after{content:normal}:host.td-markdown::ng-deep kbd{display:inline-block;padding:3px 5px;font-size:11px;line-height:10px;vertical-align:middle;border-style:solid;border-width:1px;border-radius:3px}:host.td-markdown::ng-deep .pl-c{color:#969896}:host.td-markdown::ng-deep .pl-c1,:host.td-markdown::ng-deep .pl-s .pl-v{color:#0086b3}:host.td-markdown::ng-deep .pl-e,:host.td-markdown::ng-deep .pl-en{color:#795da3}:host.td-markdown::ng-deep .pl-s .pl-s1,:host.td-markdown::ng-deep .pl-smi{color:#333}:host.td-markdown::ng-deep .pl-ent{color:#63a35c}:host.td-markdown::ng-deep .pl-k{color:#a71d5d}:host.td-markdown::ng-deep .pl-pds,:host.td-markdown::ng-deep .pl-s,:host.td-markdown::ng-deep .pl-s .pl-pse .pl-s1,:host.td-markdown::ng-deep .pl-sr,:host.td-markdown::ng-deep .pl-sr .pl-cce,:host.td-markdown::ng-deep .pl-sr .pl-sra,:host.td-markdown::ng-deep .pl-sr .pl-sre{color:#183691}:host.td-markdown::ng-deep .pl-v{color:#ed6a43}:host.td-markdown::ng-deep .pl-id{color:#b52a1d}:host.td-markdown::ng-deep .pl-ii{background-color:#b52a1d;color:#f8f8f8}:host.td-markdown::ng-deep .pl-sr .pl-cce{color:#63a35c;font-weight:700}:host.td-markdown::ng-deep .pl-ml{color:#693a17}:host.td-markdown::ng-deep .pl-mh,:host.td-markdown::ng-deep .pl-mh .pl-en,:host.td-markdown::ng-deep .pl-ms{color:#1d3e81;font-weight:700}:host.td-markdown::ng-deep .pl-mq{color:teal}:host.td-markdown::ng-deep .pl-mi{color:#333;font-style:italic}:host.td-markdown::ng-deep .pl-mb{color:#333;font-weight:700}:host.td-markdown::ng-deep .pl-md{background-color:#ffecec;color:#bd2c00}:host.td-markdown::ng-deep .pl-mi1{background-color:#eaffea;color:#55a532}:host.td-markdown::ng-deep .pl-mdr{color:#795da3;font-weight:700}:host.td-markdown::ng-deep .pl-mo{color:#1d3e81}:host.td-markdown::ng-deep kbd{display:inline-block;padding:3px 5px;font:11px Consolas,Liberation Mono,Menlo,Courier,monospace;line-height:10px;vertical-align:middle;background-color:#fcfcfc;border:solid 1px #cccccc;border-bottom-color:#bbb;border-radius:3px;box-shadow:inset 0 -1px #bbb}:host.td-markdown::ng-deep .full-commit .btn-outline:not(:disabled):hover{color:#4078c0;border:1px solid #4078c0}:host.td-markdown::ng-deep :checked+.radio-label{position:relative;z-index:1;border-color:#4078c0}:host.td-markdown::ng-deep .octicon{display:inline-block;vertical-align:text-top;fill:currentColor}:host.td-markdown::ng-deep .task-list-item{list-style-type:none}:host.td-markdown::ng-deep .task-list-item+.task-list-item{margin-top:3px}:host.td-markdown::ng-deep .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}\n"] });
397
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: TdMarkdownComponent, decorators: [{
416
+ TdMarkdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TdMarkdownComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.DomSanitizer }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
417
+ TdMarkdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TdMarkdownComponent, selector: "td-markdown", inputs: { content: "content", simpleLineBreaks: "simpleLineBreaks", hostedUrl: "hostedUrl", anchor: "anchor" }, outputs: { contentReady: "contentReady" }, host: { properties: { "class": "this.class" } }, usesOnChanges: true, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host.td-markdown::ng-deep a{background-color:transparent}:host.td-markdown::ng-deep a:active,:host.td-markdown::ng-deep a:hover{outline-width:0}:host.td-markdown::ng-deep strong{font-weight:inherit;font-weight:bolder}:host.td-markdown::ng-deep h1{font-size:2em;margin:.67em 0}:host.td-markdown::ng-deep img{border-style:none}:host.td-markdown::ng-deep svg:not(:root){overflow:hidden}:host.td-markdown::ng-deep code,:host.td-markdown::ng-deep kbd,:host.td-markdown::ng-deep pre{font-family:monospace;font-size:1em}:host.td-markdown::ng-deep hr{box-sizing:content-box;height:0;overflow:visible}:host.td-markdown::ng-deep input{font:inherit;margin:0;overflow:visible}:host.td-markdown::ng-deep button:-moz-focusring,:host.td-markdown::ng-deep [type=button]:-moz-focusring,:host.td-markdown::ng-deep [type=reset]:-moz-focusring,:host.td-markdown::ng-deep [type=submit]:-moz-focusring{outline:1px dotted ButtonText}:host.td-markdown::ng-deep [type=checkbox]{box-sizing:border-box;padding:0}:host.td-markdown::ng-deep table{border-spacing:0;border-collapse:collapse}:host.td-markdown::ng-deep td,:host.td-markdown::ng-deep th{padding:0}:host.td-markdown::ng-deep *{box-sizing:border-box}:host.td-markdown::ng-deep input{font:13px/1.4 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol}:host.td-markdown::ng-deep a{text-decoration:none}:host.td-markdown::ng-deep a:hover,:host.td-markdown::ng-deep a:active{text-decoration:underline}:host.td-markdown::ng-deep hr{height:0;margin:15px 0;overflow:hidden;background:transparent;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep hr:before{display:table;content:\"\"}:host.td-markdown::ng-deep hr:after{display:table;clear:both;content:\"\"}:host.td-markdown::ng-deep h1,:host.td-markdown::ng-deep h2,:host.td-markdown::ng-deep h3,:host.td-markdown::ng-deep h4,:host.td-markdown::ng-deep h5,:host.td-markdown::ng-deep h6{margin-top:0;margin-bottom:0;line-height:1.5}:host.td-markdown::ng-deep h1{font-size:30px}:host.td-markdown::ng-deep h2{font-size:21px}:host.td-markdown::ng-deep h3{font-size:16px}:host.td-markdown::ng-deep h4{font-size:14px}:host.td-markdown::ng-deep h5{font-size:12px}:host.td-markdown::ng-deep h6{font-size:11px}:host.td-markdown::ng-deep p{margin-top:0;margin-bottom:10px}:host.td-markdown::ng-deep blockquote{margin:0}:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol{padding-left:0;margin-top:0;margin-bottom:0}:host.td-markdown::ng-deep ol ol,:host.td-markdown::ng-deep ul ol{list-style-type:lower-roman}:host.td-markdown::ng-deep ul ul ol,:host.td-markdown::ng-deep ul ol ol,:host.td-markdown::ng-deep ol ul ol,:host.td-markdown::ng-deep ol ol ol{list-style-type:lower-alpha}:host.td-markdown::ng-deep dd{margin-left:0}:host.td-markdown::ng-deep code{font-family:Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px}:host.td-markdown::ng-deep pre{margin-top:0;margin-bottom:0;font:12px Consolas,Liberation Mono,Menlo,Courier,monospace}:host.td-markdown::ng-deep .pl-0{padding-left:0!important}:host.td-markdown::ng-deep .pl-1{padding-left:3px!important}:host.td-markdown::ng-deep .pl-2{padding-left:6px!important}:host.td-markdown::ng-deep .pl-3{padding-left:12px!important}:host.td-markdown::ng-deep .pl-4{padding-left:24px!important}:host.td-markdown::ng-deep .pl-5{padding-left:36px!important}:host.td-markdown::ng-deep .pl-6{padding-left:48px!important}:host.td-markdown::ng-deep .form-select::-ms-expand{opacity:0}:host.td-markdown::ng-deep a:not([href]){color:inherit;text-decoration:none}:host.td-markdown::ng-deep h1,:host.td-markdown::ng-deep h2,:host.td-markdown::ng-deep h3,:host.td-markdown::ng-deep h4,:host.td-markdown::ng-deep h5,:host.td-markdown::ng-deep h6{margin-top:1em;margin-bottom:16px;font-weight:700;line-height:1.4}:host.td-markdown::ng-deep h1 .octicon-link,:host.td-markdown::ng-deep h2 .octicon-link,:host.td-markdown::ng-deep h3 .octicon-link,:host.td-markdown::ng-deep h4 .octicon-link,:host.td-markdown::ng-deep h5 .octicon-link,:host.td-markdown::ng-deep h6 .octicon-link{color:#000;vertical-align:middle;visibility:hidden}:host.td-markdown::ng-deep h1:hover .anchor,:host.td-markdown::ng-deep h2:hover .anchor,:host.td-markdown::ng-deep h3:hover .anchor,:host.td-markdown::ng-deep h4:hover .anchor,:host.td-markdown::ng-deep h5:hover .anchor,:host.td-markdown::ng-deep h6:hover .anchor{text-decoration:none}:host.td-markdown::ng-deep h1:hover .anchor .octicon-link,:host.td-markdown::ng-deep h2:hover .anchor .octicon-link,:host.td-markdown::ng-deep h3:hover .anchor .octicon-link,:host.td-markdown::ng-deep h4:hover .anchor .octicon-link,:host.td-markdown::ng-deep h5:hover .anchor .octicon-link,:host.td-markdown::ng-deep h6:hover .anchor .octicon-link{visibility:visible}:host.td-markdown::ng-deep h1{padding-bottom:.3em;font-size:2.25em;line-height:1.2;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep h1 .anchor{line-height:1}:host.td-markdown::ng-deep h2{padding-bottom:.3em;font-size:1.75em;line-height:1.225;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep h2 .anchor{line-height:1}:host.td-markdown::ng-deep h3{font-size:1.5em;line-height:1.43}:host.td-markdown::ng-deep h3 .anchor{line-height:1.2}:host.td-markdown::ng-deep h4{font-size:1.25em}:host.td-markdown::ng-deep h4 .anchor{line-height:1.2}:host.td-markdown::ng-deep h5{font-size:1em}:host.td-markdown::ng-deep h5 .anchor{line-height:1.1}:host.td-markdown::ng-deep h6{font-size:1em}:host.td-markdown::ng-deep h6 .anchor{line-height:1.1}:host.td-markdown::ng-deep p,:host.td-markdown::ng-deep blockquote,:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol,:host.td-markdown::ng-deep dl,:host.td-markdown::ng-deep table,:host.td-markdown::ng-deep pre{margin-top:0;margin-bottom:16px}:host.td-markdown::ng-deep hr{margin:16px 0}:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol{padding-left:2em}:host.td-markdown::ng-deep ul ul,:host.td-markdown::ng-deep ul ol,:host.td-markdown::ng-deep ol ol,:host.td-markdown::ng-deep ol ul{margin-top:0;margin-bottom:0}:host.td-markdown::ng-deep li>p{margin-top:16px}:host.td-markdown::ng-deep dl{padding:0}:host.td-markdown::ng-deep dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}:host.td-markdown::ng-deep dl dd{padding:0 16px;margin-bottom:16px}:host.td-markdown::ng-deep blockquote{padding:0 15px;border-left-width:4px;border-left-style:solid}:host.td-markdown::ng-deep blockquote>:first-child{margin-top:0}:host.td-markdown::ng-deep blockquote>:last-child{margin-bottom:0}:host.td-markdown::ng-deep table{display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}:host.td-markdown::ng-deep table th{font-weight:700}:host.td-markdown::ng-deep table th,:host.td-markdown::ng-deep table td{padding:6px 13px;border-width:1px;border-style:solid}:host.td-markdown::ng-deep table tr{border-top-width:1px;border-top-style:solid}:host.td-markdown::ng-deep img{max-width:100%;box-sizing:content-box}:host.td-markdown::ng-deep code{padding:.2em 0;margin:0;font-size:85%;border-radius:3px}:host.td-markdown::ng-deep code:before,:host.td-markdown::ng-deep code:after{letter-spacing:-.2em}:host.td-markdown::ng-deep pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:transparent;border:0}:host.td-markdown::ng-deep .highlight{margin-bottom:16px}:host.td-markdown::ng-deep .highlight pre,:host.td-markdown::ng-deep pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;border-radius:3px}:host.td-markdown::ng-deep .highlight pre{margin-bottom:0;word-break:normal}:host.td-markdown::ng-deep pre{word-wrap:normal}:host.td-markdown::ng-deep pre code{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}:host.td-markdown::ng-deep pre code:before,:host.td-markdown::ng-deep pre code:after{content:normal}:host.td-markdown::ng-deep kbd{display:inline-block;padding:3px 5px;font-size:11px;line-height:10px;vertical-align:middle;border-style:solid;border-width:1px;border-radius:3px}:host.td-markdown::ng-deep .pl-c{color:#969896}:host.td-markdown::ng-deep .pl-c1,:host.td-markdown::ng-deep .pl-s .pl-v{color:#0086b3}:host.td-markdown::ng-deep .pl-e,:host.td-markdown::ng-deep .pl-en{color:#795da3}:host.td-markdown::ng-deep .pl-s .pl-s1,:host.td-markdown::ng-deep .pl-smi{color:#333}:host.td-markdown::ng-deep .pl-ent{color:#63a35c}:host.td-markdown::ng-deep .pl-k{color:#a71d5d}:host.td-markdown::ng-deep .pl-pds,:host.td-markdown::ng-deep .pl-s,:host.td-markdown::ng-deep .pl-s .pl-pse .pl-s1,:host.td-markdown::ng-deep .pl-sr,:host.td-markdown::ng-deep .pl-sr .pl-cce,:host.td-markdown::ng-deep .pl-sr .pl-sra,:host.td-markdown::ng-deep .pl-sr .pl-sre{color:#183691}:host.td-markdown::ng-deep .pl-v{color:#ed6a43}:host.td-markdown::ng-deep .pl-id{color:#b52a1d}:host.td-markdown::ng-deep .pl-ii{background-color:#b52a1d;color:#f8f8f8}:host.td-markdown::ng-deep .pl-sr .pl-cce{color:#63a35c;font-weight:700}:host.td-markdown::ng-deep .pl-ml{color:#693a17}:host.td-markdown::ng-deep .pl-mh,:host.td-markdown::ng-deep .pl-mh .pl-en,:host.td-markdown::ng-deep .pl-ms{color:#1d3e81;font-weight:700}:host.td-markdown::ng-deep .pl-mq{color:teal}:host.td-markdown::ng-deep .pl-mi{color:#333;font-style:italic}:host.td-markdown::ng-deep .pl-mb{color:#333;font-weight:700}:host.td-markdown::ng-deep .pl-md{background-color:#ffecec;color:#bd2c00}:host.td-markdown::ng-deep .pl-mi1{background-color:#eaffea;color:#55a532}:host.td-markdown::ng-deep .pl-mdr{color:#795da3;font-weight:700}:host.td-markdown::ng-deep .pl-mo{color:#1d3e81}:host.td-markdown::ng-deep kbd{display:inline-block;padding:3px 5px;font:11px Consolas,Liberation Mono,Menlo,Courier,monospace;line-height:10px;vertical-align:middle;background-color:#fcfcfc;border:solid 1px #cccccc;border-bottom-color:#bbb;border-radius:3px;box-shadow:inset 0 -1px #bbb}:host.td-markdown::ng-deep .full-commit .btn-outline:not(:disabled):hover{color:#4078c0;border:1px solid #4078c0}:host.td-markdown::ng-deep :checked+.radio-label{position:relative;z-index:1;border-color:#4078c0}:host.td-markdown::ng-deep .octicon{display:inline-block;vertical-align:text-top;fill:currentColor}:host.td-markdown::ng-deep .task-list-item{list-style-type:none}:host.td-markdown::ng-deep .task-list-item+.task-list-item{margin-top:3px}:host.td-markdown::ng-deep .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}\n"] });
418
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TdMarkdownComponent, decorators: [{
398
419
  type: Component,
399
420
  args: [{ selector: 'td-markdown', template: "<ng-content></ng-content>\n", styles: [":host.td-markdown::ng-deep a{background-color:transparent}:host.td-markdown::ng-deep a:active,:host.td-markdown::ng-deep a:hover{outline-width:0}:host.td-markdown::ng-deep strong{font-weight:inherit;font-weight:bolder}:host.td-markdown::ng-deep h1{font-size:2em;margin:.67em 0}:host.td-markdown::ng-deep img{border-style:none}:host.td-markdown::ng-deep svg:not(:root){overflow:hidden}:host.td-markdown::ng-deep code,:host.td-markdown::ng-deep kbd,:host.td-markdown::ng-deep pre{font-family:monospace;font-size:1em}:host.td-markdown::ng-deep hr{box-sizing:content-box;height:0;overflow:visible}:host.td-markdown::ng-deep input{font:inherit;margin:0;overflow:visible}:host.td-markdown::ng-deep button:-moz-focusring,:host.td-markdown::ng-deep [type=button]:-moz-focusring,:host.td-markdown::ng-deep [type=reset]:-moz-focusring,:host.td-markdown::ng-deep [type=submit]:-moz-focusring{outline:1px dotted ButtonText}:host.td-markdown::ng-deep [type=checkbox]{box-sizing:border-box;padding:0}:host.td-markdown::ng-deep table{border-spacing:0;border-collapse:collapse}:host.td-markdown::ng-deep td,:host.td-markdown::ng-deep th{padding:0}:host.td-markdown::ng-deep *{box-sizing:border-box}:host.td-markdown::ng-deep input{font:13px/1.4 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol}:host.td-markdown::ng-deep a{text-decoration:none}:host.td-markdown::ng-deep a:hover,:host.td-markdown::ng-deep a:active{text-decoration:underline}:host.td-markdown::ng-deep hr{height:0;margin:15px 0;overflow:hidden;background:transparent;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep hr:before{display:table;content:\"\"}:host.td-markdown::ng-deep hr:after{display:table;clear:both;content:\"\"}:host.td-markdown::ng-deep h1,:host.td-markdown::ng-deep h2,:host.td-markdown::ng-deep h3,:host.td-markdown::ng-deep h4,:host.td-markdown::ng-deep h5,:host.td-markdown::ng-deep h6{margin-top:0;margin-bottom:0;line-height:1.5}:host.td-markdown::ng-deep h1{font-size:30px}:host.td-markdown::ng-deep h2{font-size:21px}:host.td-markdown::ng-deep h3{font-size:16px}:host.td-markdown::ng-deep h4{font-size:14px}:host.td-markdown::ng-deep h5{font-size:12px}:host.td-markdown::ng-deep h6{font-size:11px}:host.td-markdown::ng-deep p{margin-top:0;margin-bottom:10px}:host.td-markdown::ng-deep blockquote{margin:0}:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol{padding-left:0;margin-top:0;margin-bottom:0}:host.td-markdown::ng-deep ol ol,:host.td-markdown::ng-deep ul ol{list-style-type:lower-roman}:host.td-markdown::ng-deep ul ul ol,:host.td-markdown::ng-deep ul ol ol,:host.td-markdown::ng-deep ol ul ol,:host.td-markdown::ng-deep ol ol ol{list-style-type:lower-alpha}:host.td-markdown::ng-deep dd{margin-left:0}:host.td-markdown::ng-deep code{font-family:Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px}:host.td-markdown::ng-deep pre{margin-top:0;margin-bottom:0;font:12px Consolas,Liberation Mono,Menlo,Courier,monospace}:host.td-markdown::ng-deep .pl-0{padding-left:0!important}:host.td-markdown::ng-deep .pl-1{padding-left:3px!important}:host.td-markdown::ng-deep .pl-2{padding-left:6px!important}:host.td-markdown::ng-deep .pl-3{padding-left:12px!important}:host.td-markdown::ng-deep .pl-4{padding-left:24px!important}:host.td-markdown::ng-deep .pl-5{padding-left:36px!important}:host.td-markdown::ng-deep .pl-6{padding-left:48px!important}:host.td-markdown::ng-deep .form-select::-ms-expand{opacity:0}:host.td-markdown::ng-deep a:not([href]){color:inherit;text-decoration:none}:host.td-markdown::ng-deep h1,:host.td-markdown::ng-deep h2,:host.td-markdown::ng-deep h3,:host.td-markdown::ng-deep h4,:host.td-markdown::ng-deep h5,:host.td-markdown::ng-deep h6{margin-top:1em;margin-bottom:16px;font-weight:700;line-height:1.4}:host.td-markdown::ng-deep h1 .octicon-link,:host.td-markdown::ng-deep h2 .octicon-link,:host.td-markdown::ng-deep h3 .octicon-link,:host.td-markdown::ng-deep h4 .octicon-link,:host.td-markdown::ng-deep h5 .octicon-link,:host.td-markdown::ng-deep h6 .octicon-link{color:#000;vertical-align:middle;visibility:hidden}:host.td-markdown::ng-deep h1:hover .anchor,:host.td-markdown::ng-deep h2:hover .anchor,:host.td-markdown::ng-deep h3:hover .anchor,:host.td-markdown::ng-deep h4:hover .anchor,:host.td-markdown::ng-deep h5:hover .anchor,:host.td-markdown::ng-deep h6:hover .anchor{text-decoration:none}:host.td-markdown::ng-deep h1:hover .anchor .octicon-link,:host.td-markdown::ng-deep h2:hover .anchor .octicon-link,:host.td-markdown::ng-deep h3:hover .anchor .octicon-link,:host.td-markdown::ng-deep h4:hover .anchor .octicon-link,:host.td-markdown::ng-deep h5:hover .anchor .octicon-link,:host.td-markdown::ng-deep h6:hover .anchor .octicon-link{visibility:visible}:host.td-markdown::ng-deep h1{padding-bottom:.3em;font-size:2.25em;line-height:1.2;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep h1 .anchor{line-height:1}:host.td-markdown::ng-deep h2{padding-bottom:.3em;font-size:1.75em;line-height:1.225;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep h2 .anchor{line-height:1}:host.td-markdown::ng-deep h3{font-size:1.5em;line-height:1.43}:host.td-markdown::ng-deep h3 .anchor{line-height:1.2}:host.td-markdown::ng-deep h4{font-size:1.25em}:host.td-markdown::ng-deep h4 .anchor{line-height:1.2}:host.td-markdown::ng-deep h5{font-size:1em}:host.td-markdown::ng-deep h5 .anchor{line-height:1.1}:host.td-markdown::ng-deep h6{font-size:1em}:host.td-markdown::ng-deep h6 .anchor{line-height:1.1}:host.td-markdown::ng-deep p,:host.td-markdown::ng-deep blockquote,:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol,:host.td-markdown::ng-deep dl,:host.td-markdown::ng-deep table,:host.td-markdown::ng-deep pre{margin-top:0;margin-bottom:16px}:host.td-markdown::ng-deep hr{margin:16px 0}:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol{padding-left:2em}:host.td-markdown::ng-deep ul ul,:host.td-markdown::ng-deep ul ol,:host.td-markdown::ng-deep ol ol,:host.td-markdown::ng-deep ol ul{margin-top:0;margin-bottom:0}:host.td-markdown::ng-deep li>p{margin-top:16px}:host.td-markdown::ng-deep dl{padding:0}:host.td-markdown::ng-deep dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}:host.td-markdown::ng-deep dl dd{padding:0 16px;margin-bottom:16px}:host.td-markdown::ng-deep blockquote{padding:0 15px;border-left-width:4px;border-left-style:solid}:host.td-markdown::ng-deep blockquote>:first-child{margin-top:0}:host.td-markdown::ng-deep blockquote>:last-child{margin-bottom:0}:host.td-markdown::ng-deep table{display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}:host.td-markdown::ng-deep table th{font-weight:700}:host.td-markdown::ng-deep table th,:host.td-markdown::ng-deep table td{padding:6px 13px;border-width:1px;border-style:solid}:host.td-markdown::ng-deep table tr{border-top-width:1px;border-top-style:solid}:host.td-markdown::ng-deep img{max-width:100%;box-sizing:content-box}:host.td-markdown::ng-deep code{padding:.2em 0;margin:0;font-size:85%;border-radius:3px}:host.td-markdown::ng-deep code:before,:host.td-markdown::ng-deep code:after{letter-spacing:-.2em}:host.td-markdown::ng-deep pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:transparent;border:0}:host.td-markdown::ng-deep .highlight{margin-bottom:16px}:host.td-markdown::ng-deep .highlight pre,:host.td-markdown::ng-deep pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;border-radius:3px}:host.td-markdown::ng-deep .highlight pre{margin-bottom:0;word-break:normal}:host.td-markdown::ng-deep pre{word-wrap:normal}:host.td-markdown::ng-deep pre code{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}:host.td-markdown::ng-deep pre code:before,:host.td-markdown::ng-deep pre code:after{content:normal}:host.td-markdown::ng-deep kbd{display:inline-block;padding:3px 5px;font-size:11px;line-height:10px;vertical-align:middle;border-style:solid;border-width:1px;border-radius:3px}:host.td-markdown::ng-deep .pl-c{color:#969896}:host.td-markdown::ng-deep .pl-c1,:host.td-markdown::ng-deep .pl-s .pl-v{color:#0086b3}:host.td-markdown::ng-deep .pl-e,:host.td-markdown::ng-deep .pl-en{color:#795da3}:host.td-markdown::ng-deep .pl-s .pl-s1,:host.td-markdown::ng-deep .pl-smi{color:#333}:host.td-markdown::ng-deep .pl-ent{color:#63a35c}:host.td-markdown::ng-deep .pl-k{color:#a71d5d}:host.td-markdown::ng-deep .pl-pds,:host.td-markdown::ng-deep .pl-s,:host.td-markdown::ng-deep .pl-s .pl-pse .pl-s1,:host.td-markdown::ng-deep .pl-sr,:host.td-markdown::ng-deep .pl-sr .pl-cce,:host.td-markdown::ng-deep .pl-sr .pl-sra,:host.td-markdown::ng-deep .pl-sr .pl-sre{color:#183691}:host.td-markdown::ng-deep .pl-v{color:#ed6a43}:host.td-markdown::ng-deep .pl-id{color:#b52a1d}:host.td-markdown::ng-deep .pl-ii{background-color:#b52a1d;color:#f8f8f8}:host.td-markdown::ng-deep .pl-sr .pl-cce{color:#63a35c;font-weight:700}:host.td-markdown::ng-deep .pl-ml{color:#693a17}:host.td-markdown::ng-deep .pl-mh,:host.td-markdown::ng-deep .pl-mh .pl-en,:host.td-markdown::ng-deep .pl-ms{color:#1d3e81;font-weight:700}:host.td-markdown::ng-deep .pl-mq{color:teal}:host.td-markdown::ng-deep .pl-mi{color:#333;font-style:italic}:host.td-markdown::ng-deep .pl-mb{color:#333;font-weight:700}:host.td-markdown::ng-deep .pl-md{background-color:#ffecec;color:#bd2c00}:host.td-markdown::ng-deep .pl-mi1{background-color:#eaffea;color:#55a532}:host.td-markdown::ng-deep .pl-mdr{color:#795da3;font-weight:700}:host.td-markdown::ng-deep .pl-mo{color:#1d3e81}:host.td-markdown::ng-deep kbd{display:inline-block;padding:3px 5px;font:11px Consolas,Liberation Mono,Menlo,Courier,monospace;line-height:10px;vertical-align:middle;background-color:#fcfcfc;border:solid 1px #cccccc;border-bottom-color:#bbb;border-radius:3px;box-shadow:inset 0 -1px #bbb}:host.td-markdown::ng-deep .full-commit .btn-outline:not(:disabled):hover{color:#4078c0;border:1px solid #4078c0}:host.td-markdown::ng-deep :checked+.radio-label{position:relative;z-index:1;border-color:#4078c0}:host.td-markdown::ng-deep .octicon{display:inline-block;vertical-align:text-top;fill:currentColor}:host.td-markdown::ng-deep .task-list-item{list-style-type:none}:host.td-markdown::ng-deep .task-list-item+.task-list-item{margin-top:3px}:host.td-markdown::ng-deep .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}\n"] }]
400
421
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.DomSanitizer }, { type: i0.NgZone }]; }, propDecorators: { class: [{
@@ -439,18 +460,18 @@ class TdMarkdownLoaderService {
439
460
  });
440
461
  }
441
462
  }
442
- TdMarkdownLoaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: TdMarkdownLoaderService, deps: [{ token: i1$1.HttpClient }, { token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Injectable });
443
- TdMarkdownLoaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: TdMarkdownLoaderService });
444
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: TdMarkdownLoaderService, decorators: [{
463
+ TdMarkdownLoaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TdMarkdownLoaderService, deps: [{ token: i1$1.HttpClient }, { token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Injectable });
464
+ TdMarkdownLoaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TdMarkdownLoaderService });
465
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TdMarkdownLoaderService, decorators: [{
445
466
  type: Injectable
446
467
  }], ctorParameters: function () { return [{ type: i1$1.HttpClient }, { type: i1.DomSanitizer }]; } });
447
468
 
448
469
  class CovalentMarkdownModule {
449
470
  }
450
- CovalentMarkdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentMarkdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
451
- CovalentMarkdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.5", ngImport: i0, type: CovalentMarkdownModule, declarations: [TdMarkdownComponent], imports: [CommonModule, HttpClientModule], exports: [TdMarkdownComponent] });
452
- CovalentMarkdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentMarkdownModule, providers: [TdMarkdownLoaderService], imports: [CommonModule, HttpClientModule] });
453
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentMarkdownModule, decorators: [{
471
+ CovalentMarkdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CovalentMarkdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
472
+ CovalentMarkdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: CovalentMarkdownModule, declarations: [TdMarkdownComponent], imports: [CommonModule, HttpClientModule], exports: [TdMarkdownComponent] });
473
+ CovalentMarkdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CovalentMarkdownModule, providers: [TdMarkdownLoaderService], imports: [CommonModule, HttpClientModule] });
474
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CovalentMarkdownModule, decorators: [{
454
475
  type: NgModule,
455
476
  args: [{
456
477
  imports: [CommonModule, HttpClientModule],
@@ -1 +1 @@
1
- {"version":3,"file":"covalent-markdown.mjs","sources":["../../../../libs/markdown/src/lib/markdown-utils/markdown-utils.ts","../../../../libs/markdown/src/lib/markdown.component.ts","../../../../libs/markdown/src/lib/markdown.component.html","../../../../libs/markdown/src/lib/markdown-loader/markdown-loader.service.ts","../../../../libs/markdown/src/lib/markdown.module.ts","../../../../libs/markdown/src/covalent-markdown.ts"],"sourcesContent":["export function removeLeadingHash(str: string): string {\n if (str) {\n return str.replace(/^#+/, '');\n }\n return '';\n}\n\nexport function removeTrailingHash(str: string | null): string {\n if (str) {\n return str.replace(/#.*/, '');\n }\n return '';\n}\n\nexport function genHeadingId(str: string): string {\n if (str) {\n return removeLeadingHash(\n str\n .replace(/(_|-|\\s)+/g, '')\n // Remove certain special chars to create heading ids similar to those in github\n // borrowed from showdown\n // https://github.com/showdownjs/showdown/blob/main/src/subParsers/makehtml/headers.js#L94\n .replace(/[&+$,/:;=?@\"#{}|^¨~[\\]`\\\\*)(%.!'<>]/g, '')\n ).toLowerCase();\n }\n return '';\n}\n\nexport function scrollToAnchor(\n scope: HTMLElement,\n anchor: string,\n tryParent: boolean\n): boolean {\n if (scope && anchor) {\n const normalizedAnchor: string = genHeadingId(anchor);\n let headingToJumpTo: Element | null = null;\n const headingWithinComponent = scope.querySelector(\n `[id=\"${normalizedAnchor}\"]`\n );\n\n if (headingWithinComponent) {\n headingToJumpTo = headingWithinComponent;\n } else if (tryParent) {\n const parent = scope.parentElement;\n if (parent) {\n headingToJumpTo = parent.querySelector(`[id=\"${normalizedAnchor}\"]`);\n }\n }\n if (headingToJumpTo) {\n headingToJumpTo.scrollIntoView({ behavior: 'auto' });\n return true;\n }\n }\n return false;\n}\n\nexport function isAnchorLink(anchor?: HTMLAnchorElement): boolean {\n if (anchor) {\n const href = anchor.getAttribute('href');\n if (href) {\n return href.startsWith('#');\n }\n }\n return false;\n}\nconst RAW_GITHUB_HOSTNAME = 'raw.githubusercontent.com';\n\nexport function rawGithubHref(githubHref?: string): string {\n if (githubHref) {\n try {\n const url: URL = new URL(githubHref);\n if (url.hostname === RAW_GITHUB_HOSTNAME) {\n return url.href;\n } else if (isGithubHref(githubHref)) {\n url.hostname = RAW_GITHUB_HOSTNAME;\n url.pathname = url.pathname.split('/blob', 2).join('');\n return url.href;\n }\n } catch {\n return '';\n }\n }\n return '';\n}\n\nexport function isGithubHref(href?: string): boolean {\n try {\n const temp: URL = new URL(href ?? '');\n return temp.hostname === 'github.com';\n } catch {\n return false;\n }\n}\n\nexport function isRawGithubHref(href: string = ''): boolean {\n try {\n const temp: URL = new URL(href);\n return temp.hostname === RAW_GITHUB_HOSTNAME;\n } catch {\n return false;\n }\n}\n\nexport function renderVideoElements(html: string): string {\n const ytLongEmbed =\n /!\\[(?:(?:https?:)?(?:\\/\\/)?)(?:(?:www)?.)?youtube.(?:.+?)\\/(?:(?:embed\\/)([\\w-]{11})(\\?[\\w%;-]+(?:=[\\w%;-]+)?(?:&[\\w%;-]+(?:=[\\w%;-]+)?)*)?)]/gi;\n const ytLongWatch =\n /!\\[(?:(?:https?:)?(?:\\/\\/)?)(?:(?:www)?.)?youtube.(?:.+?)\\/(?:(?:watch\\?v=)([\\w-]{11})(&[\\w%;-]+(?:=[\\w%;-]+)?)*)]/gi;\n const ytShort =\n /!\\[(?:(?:https?:)?(?:\\/\\/)?)?youtu.be\\/([\\w-]{11})\\??([\\w%;-]+(?:=[\\w%;-]+)?(?:&[\\w%;-]+(?:=[\\w%;-]+)?)*)?]/gi;\n const ytPlaylist =\n /!\\[(?:(?:https?:)?(?:\\/\\/)?)(?:(?:www)?.)?youtube.(?:.+?)\\/(?:(?:playlist\\?list=)([\\w-]{34})(&[\\w%;-]+(?:=[\\w%;-]+)?)*)]/gi;\n\n function convert(match: string, id: string, flags: string): string {\n if (flags) {\n id += '?' + flags.replace(/&amp;/gi, '&');\n }\n return `<iframe allow=\"fullscreen\" frameborder=\"0\" src=\"https://www.youtube.com/embed/${id}\"></iframe>`;\n }\n function convertPL(match: string, id: string, flags: string): string {\n if (flags) {\n id += flags.replace(/&amp;/gi, '&');\n }\n return `<iframe allow=\"fullscreen\" frameborder=\"0\" src=\"https://www.youtube.com/embed/videoseries?list=${id}\"></iframe>`;\n }\n\n return html\n .replace(ytLongWatch, convert)\n .replace(ytLongEmbed, convert)\n .replace(ytShort, convert)\n .replace(ytPlaylist, convertPL);\n}\n","import {\n Component,\n AfterViewInit,\n ElementRef,\n Input,\n Output,\n EventEmitter,\n Renderer2,\n SecurityContext,\n OnChanges,\n SimpleChanges,\n HostBinding,\n NgZone,\n OnDestroy,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport {\n scrollToAnchor,\n genHeadingId,\n isAnchorLink,\n removeTrailingHash,\n rawGithubHref,\n isGithubHref,\n isRawGithubHref,\n renderVideoElements,\n} from './markdown-utils/markdown-utils';\n\nimport * as showdown from 'showdown';\n\n// TODO: assumes it is a github url\n// allow override somehow\nfunction generateAbsoluteHref(\n currentHref: string,\n relativeHref: string\n): string {\n if (currentHref && relativeHref) {\n const currentUrl: URL = new URL(currentHref);\n const path: string = currentUrl.pathname.split('/').slice(1, -1).join('/');\n const correctUrl: URL = new URL(currentHref);\n\n if (relativeHref.startsWith('/')) {\n // url is relative to top level\n const orgAndRepo: string = path.split('/').slice(0, 3).join('/');\n correctUrl.pathname = `${orgAndRepo}${relativeHref}`;\n } else {\n correctUrl.pathname = `${path}/${relativeHref}`;\n }\n return correctUrl.href;\n }\n return '';\n}\n\nfunction normalizeHtmlHrefs(html: string, currentHref: string): string {\n if (currentHref) {\n const document: Document = new DOMParser().parseFromString(\n html,\n 'text/html'\n );\n document\n .querySelectorAll<HTMLAnchorElement>('a[href]')\n .forEach((link: HTMLAnchorElement) => {\n const url: URL = new URL(link.href);\n const originalHash: string = url.hash;\n if (isAnchorLink(link)) {\n if (originalHash) {\n url.hash = genHeadingId(originalHash);\n link.href = url.hash;\n }\n } else if (url.host === window.location.host) {\n // hosts match, meaning URL MIGHT have been malformed by showdown\n // url is a relative url or just a link to a part of the application\n if (url.pathname.endsWith('.md')) {\n // only check .md urls\n\n const hrefWithoutHash: string = removeTrailingHash(\n link.getAttribute('href')\n );\n\n url.href = generateAbsoluteHref(currentHref, hrefWithoutHash);\n\n if (originalHash) {\n url.hash = genHeadingId(originalHash);\n }\n link.href = url.href;\n }\n link.target = '_blank';\n } else {\n // url is absolute\n if (url.pathname.endsWith('.md')) {\n if (originalHash) {\n url.hash = genHeadingId(originalHash);\n }\n link.href = url.href;\n }\n link.target = '_blank';\n }\n });\n\n return new XMLSerializer().serializeToString(document);\n }\n return html;\n}\n\nfunction normalizeImageSrcs(html: string, currentHref: string): string {\n if (currentHref) {\n const document: Document = new DOMParser().parseFromString(\n html,\n 'text/html'\n );\n document\n .querySelectorAll<HTMLImageElement>('img[src]')\n .forEach((image: HTMLImageElement) => {\n const src = image.getAttribute('src') ?? '';\n try {\n /* tslint:disable-next-line:no-unused-expression */\n new URL(src);\n if (isGithubHref(src)) {\n image.src = rawGithubHref(src);\n }\n } catch {\n image.src = generateAbsoluteHref(\n isGithubHref(currentHref)\n ? rawGithubHref(currentHref)\n : currentHref,\n src\n );\n }\n // gh svgs need to have ?sanitize=true\n if (isRawGithubHref(image.src)) {\n const url: URL = new URL(image.src);\n if (url.pathname.endsWith('.svg')) {\n url.searchParams.set('sanitize', 'true');\n image.src = url.href;\n }\n }\n });\n\n return new XMLSerializer().serializeToString(document);\n }\n return html;\n}\n\nfunction addIdsToHeadings(html: string): string {\n if (html) {\n const document: Document = new DOMParser().parseFromString(\n html,\n 'text/html'\n );\n document\n .querySelectorAll('h1, h2, h3, h4, h5, h6')\n .forEach((heading: Element) => {\n const id: string = genHeadingId(heading.innerHTML);\n heading.setAttribute('id', id);\n });\n return new XMLSerializer().serializeToString(document);\n }\n return html;\n}\n\n@Component({\n selector: 'td-markdown',\n styleUrls: ['./markdown.component.scss'],\n templateUrl: './markdown.component.html',\n})\nexport class TdMarkdownComponent\n implements OnChanges, AfterViewInit, OnDestroy\n{\n private _content!: string;\n private _simpleLineBreaks = false;\n private _hostedUrl!: string;\n private _anchor!: string;\n private _viewInit = false;\n private _anchorListener?: VoidFunction;\n /**\n * .td-markdown class added to host so ::ng-deep gets scoped.\n */\n @HostBinding('class') class = 'td-markdown';\n\n /**\n * content?: string\n *\n * Markdown format content to be parsed as html 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 * contentReady?: function\n * Event emitted after the markdown content rendering is finished.\n */\n @Output() contentReady: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n private _renderer: Renderer2,\n private _elementRef: ElementRef,\n private _domSanitizer: DomSanitizer,\n private _ngZone: NgZone\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, true);\n } else {\n this.refresh();\n }\n }\n\n ngAfterViewInit(): void {\n if (!this._content) {\n this._loadContent(\n (<HTMLElement>this._elementRef.nativeElement).textContent\n );\n }\n this._viewInit = true;\n\n // Caretaker note: the `scrollToAnchor` calls `element.scrollIntoView`, a native synchronous DOM\n // API and it doesn't require Angular running `ApplicationRef.tick()` each time the markdown component is clicked.\n // Host listener (added through `@HostListener`) cause Angular to add an event listener within the Angular zone.\n // It also calls `markViewDirty()` before calling the actual listener (the decorated class method).\n this._ngZone.runOutsideAngular(() => {\n this._anchorListener = this._renderer.listen(\n this._elementRef.nativeElement,\n 'click',\n (event: MouseEvent) => {\n const element: HTMLElement = <HTMLElement>event.srcElement;\n if (\n element.matches('a[href]') &&\n isAnchorLink(<HTMLAnchorElement>element)\n ) {\n this.handleAnchorClicks(event);\n }\n }\n );\n });\n }\n\n ngOnDestroy(): void {\n this._anchorListener?.();\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._elementRef.nativeElement).textContent\n );\n }\n }\n\n /**\n * General method to parse a string markdown into HTML Elements and load them into the container\n */\n private _loadContent(markdown: string | null): void {\n if (markdown && markdown.trim().length > 0) {\n // Clean container\n this._renderer.setProperty(\n this._elementRef.nativeElement,\n 'innerHTML',\n ''\n );\n // Parse html string into actual HTML elements.\n this._elementFromString(this._render(markdown));\n }\n // TODO: timeout required since resizing of html elements occurs which causes a change in the scroll position\n this._ngZone.runOutsideAngular(() =>\n setTimeout(\n () =>\n scrollToAnchor(this._elementRef.nativeElement, this._anchor, true),\n 250\n )\n );\n this.contentReady.emit();\n }\n\n private handleAnchorClicks(event: Event): void {\n event.preventDefault();\n const url: URL = new URL((<HTMLAnchorElement>event.target).href);\n const hash: string = decodeURI(url.hash);\n scrollToAnchor(this._elementRef.nativeElement, hash, true);\n }\n\n private _elementFromString(markupStr: string): HTMLDivElement {\n // Renderer2 doesnt have a parsing method, so we have to sanitize and use [innerHTML]\n // to parse the string into DOM element for now.\n const div: HTMLDivElement = this._renderer.createElement('div');\n this._renderer.appendChild(this._elementRef.nativeElement, div);\n const html: string =\n this._domSanitizer.sanitize(SecurityContext.HTML, markupStr) ?? '';\n const htmlWithAbsoluteHrefs: string = normalizeHtmlHrefs(\n html,\n this._hostedUrl\n );\n const htmlWithAbsoluteImgSrcs: string = normalizeImageSrcs(\n htmlWithAbsoluteHrefs,\n this._hostedUrl\n );\n const htmlWithHeadingIds: string = addIdsToHeadings(\n htmlWithAbsoluteImgSrcs\n );\n const htmlWithVideos: SafeHtml = renderVideoElements(htmlWithHeadingIds);\n this._renderer.setProperty(div, 'innerHTML', htmlWithVideos);\n return div;\n }\n\n private _render(markdown: string): string {\n // Trim leading and trailing newlines\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: string = firstLineWhitespaceMatch\n ? firstLineWhitespaceMatch[0]\n : '';\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 const markdownToParse: string = lines.join('\\n');\n\n // Convert markdown into html\n const converter: showdown.Converter = new showdown.Converter();\n converter.setOption('ghCodeBlocks', true);\n converter.setOption('tasklists', true);\n converter.setOption('tables', true);\n converter.setOption('literalMidWordUnderscores', true);\n converter.setOption('simpleLineBreaks', this._simpleLineBreaks);\n converter.setOption('emoji', true);\n return converter.makeHtml(markdownToParse);\n }\n}\n","<ng-content></ng-content>\n","import { Injectable, SecurityContext } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { HttpClient, HttpResponse } from '@angular/common/http';\nimport { isGithubHref, rawGithubHref } from '../markdown-utils/markdown-utils';\n\n@Injectable()\nexport class TdMarkdownLoaderService {\n constructor(private _http: HttpClient, private _sanitizer: DomSanitizer) {}\n\n async load(url: string, httpOptions: object = {}): Promise<string> {\n const sanitizedUrl: string =\n this._sanitizer.sanitize(SecurityContext.URL, url) ?? '';\n let urlToGet: string = sanitizedUrl;\n if (isGithubHref(sanitizedUrl)) {\n urlToGet = rawGithubHref(sanitizedUrl);\n }\n\n const response: HttpResponse<string> | undefined = await this._http\n .get(urlToGet, {\n ...httpOptions,\n responseType: 'text',\n observe: 'response',\n })\n .toPromise();\n const contentType: string = response?.headers.get('Content-Type') ?? '';\n if (\n contentType.includes('text/plain') ||\n contentType.includes('text/markdown')\n ) {\n return response?.body ?? '';\n } else {\n throw Error(`${contentType} is not a handled content type`);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { HttpClientModule } from '@angular/common/http';\n\nimport { TdMarkdownComponent } from './markdown.component';\nimport { TdMarkdownLoaderService } from './markdown-loader/markdown-loader.service';\n\n@NgModule({\n imports: [CommonModule, HttpClientModule],\n declarations: [TdMarkdownComponent],\n exports: [TdMarkdownComponent],\n providers: [TdMarkdownLoaderService],\n})\nexport class CovalentMarkdownModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"covalent-markdown.mjs","sources":["../../../../libs/markdown/src/lib/markdown-utils/markdown-utils.ts","../../../../libs/markdown/src/lib/markdown.component.ts","../../../../libs/markdown/src/lib/markdown.component.html","../../../../libs/markdown/src/lib/markdown-loader/markdown-loader.service.ts","../../../../libs/markdown/src/lib/markdown.module.ts","../../../../libs/markdown/src/covalent-markdown.ts"],"sourcesContent":["export function removeLeadingHash(str: string): string {\n if (str) {\n return str.replace(/^#+/, '');\n }\n return '';\n}\n\nexport function removeTrailingHash(str: string | null): string {\n if (str) {\n return str.replace(/#.*/, '');\n }\n return '';\n}\n\nexport function genHeadingId(str: string): string {\n if (str) {\n return removeLeadingHash(\n str\n .replace(/(_|-|\\s)+/g, '')\n // Remove certain special chars to create heading ids similar to those in github\n // borrowed from showdown\n // https://github.com/showdownjs/showdown/blob/main/src/subParsers/makehtml/headers.js#L94\n .replace(/[&+$,/:;=?@\"#{}|^¨~[\\]`\\\\*)(%.!'<>]/g, '')\n ).toLowerCase();\n }\n return '';\n}\n\nexport function scrollToAnchor(\n scope: HTMLElement,\n anchor: string,\n tryParent: boolean\n): boolean {\n if (scope && anchor) {\n const normalizedAnchor: string = genHeadingId(anchor);\n let headingToJumpTo: Element | null = null;\n const headingWithinComponent = scope.querySelector(\n `[id=\"${normalizedAnchor}\"]`\n );\n\n if (headingWithinComponent) {\n headingToJumpTo = headingWithinComponent;\n } else if (tryParent) {\n const parent = scope.parentElement;\n if (parent) {\n headingToJumpTo = parent.querySelector(`[id=\"${normalizedAnchor}\"]`);\n }\n }\n if (headingToJumpTo) {\n headingToJumpTo.scrollIntoView({ behavior: 'auto' });\n return true;\n }\n }\n return false;\n}\n\nexport function isAnchorLink(anchor?: HTMLAnchorElement): boolean {\n if (anchor) {\n const href = anchor.getAttribute('href');\n if (href) {\n return href.startsWith('#');\n }\n }\n return false;\n}\nconst RAW_GITHUB_HOSTNAME = 'raw.githubusercontent.com';\n\nexport function rawGithubHref(githubHref?: string): string {\n if (githubHref) {\n try {\n const url: URL = new URL(githubHref);\n if (url.hostname === RAW_GITHUB_HOSTNAME) {\n return url.href;\n } else if (isGithubHref(githubHref)) {\n url.hostname = RAW_GITHUB_HOSTNAME;\n url.pathname = url.pathname.split('/blob', 2).join('');\n return url.href;\n }\n } catch {\n return '';\n }\n }\n return '';\n}\n\nexport function isGithubHref(href?: string): boolean {\n try {\n const temp: URL = new URL(href ?? '');\n return temp.hostname === 'github.com';\n } catch {\n return false;\n }\n}\n\nexport function isRawGithubHref(href: string = ''): boolean {\n try {\n const temp: URL = new URL(href);\n return temp.hostname === RAW_GITHUB_HOSTNAME;\n } catch {\n return false;\n }\n}\n\nexport function renderVideoElements(html: string): string {\n const ytLongEmbed =\n /!\\[(?:(?:https?:)?(?:\\/\\/)?)(?:(?:www)?.)?youtube.(?:.+?)\\/(?:(?:embed\\/)([\\w-]{11})(\\?[\\w%;-]+(?:=[\\w%;-]+)?(?:&[\\w%;-]+(?:=[\\w%;-]+)?)*)?)]/gi;\n const ytLongWatch =\n /!\\[(?:(?:https?:)?(?:\\/\\/)?)(?:(?:www)?.)?youtube.(?:.+?)\\/(?:(?:watch\\?v=)([\\w-]{11})(&[\\w%;-]+(?:=[\\w%;-]+)?)*)]/gi;\n const ytShort =\n /!\\[(?:(?:https?:)?(?:\\/\\/)?)?youtu.be\\/([\\w-]{11})\\??([\\w%;-]+(?:=[\\w%;-]+)?(?:&[\\w%;-]+(?:=[\\w%;-]+)?)*)?]/gi;\n const ytPlaylist =\n /!\\[(?:(?:https?:)?(?:\\/\\/)?)(?:(?:www)?.)?youtube.(?:.+?)\\/(?:(?:playlist\\?list=)([\\w-]{34})(&[\\w%;-]+(?:=[\\w%;-]+)?)*)]/gi;\n\n function convert(match: string, id: string, flags: string): string {\n if (flags) {\n id += '?' + flags.replace(/&amp;/gi, '&');\n }\n return `<iframe allow=\"fullscreen\" frameborder=\"0\" src=\"https://www.youtube.com/embed/${id}\"></iframe>`;\n }\n function convertPL(match: string, id: string, flags: string): string {\n if (flags) {\n id += flags.replace(/&amp;/gi, '&');\n }\n return `<iframe allow=\"fullscreen\" frameborder=\"0\" src=\"https://www.youtube.com/embed/videoseries?list=${id}\"></iframe>`;\n }\n\n return html\n .replace(ytLongWatch, convert)\n .replace(ytLongEmbed, convert)\n .replace(ytShort, convert)\n .replace(ytPlaylist, convertPL);\n}\n","import {\n Component,\n AfterViewInit,\n ElementRef,\n Input,\n Output,\n EventEmitter,\n Renderer2,\n SecurityContext,\n OnChanges,\n SimpleChanges,\n HostBinding,\n NgZone,\n OnDestroy,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport {\n scrollToAnchor,\n genHeadingId,\n isAnchorLink,\n removeTrailingHash,\n rawGithubHref,\n isGithubHref,\n isRawGithubHref,\n renderVideoElements,\n} from './markdown-utils/markdown-utils';\n\nimport * as showdown from 'showdown';\n\nfunction isAbsoluteUrl(currentHref: string): boolean {\n // Regular Expression to check url\n const RgExp = new RegExp('^(?:[a-z]+:)?//', 'i');\n return RgExp.test(currentHref);\n}\n\n// TODO: assumes it is a github url\n// handles absolute and relative URLs\nfunction generateHref(currentHref: string, relativeHref: string): string {\n if (currentHref && relativeHref) {\n if (isAbsoluteUrl(currentHref)) {\n const currentUrl: URL = new URL(currentHref);\n const path: string = currentUrl.pathname\n .split('/')\n .slice(1, -1)\n .join('/');\n const correctUrl: URL = new URL(currentHref);\n\n if (relativeHref.startsWith('/')) {\n // url is relative to top level\n const orgAndRepo: string = path.split('/').slice(0, 3).join('/');\n correctUrl.pathname = `${orgAndRepo}${relativeHref}`;\n } else {\n correctUrl.pathname = `${path}/${relativeHref}`;\n }\n return correctUrl.href;\n } else {\n const path: string = currentHref.split('/').slice(0, -1).join('/');\n\n if (relativeHref.startsWith('/')) {\n return `${path}${relativeHref}`;\n } else {\n return `${path}/${relativeHref}`;\n }\n }\n }\n return '';\n}\n\nfunction normalizeHtmlHrefs(html: string, currentHref: string): string {\n if (currentHref) {\n const document: Document = new DOMParser().parseFromString(\n html,\n 'text/html'\n );\n document\n .querySelectorAll<HTMLAnchorElement>('a[href]')\n .forEach((link: HTMLAnchorElement) => {\n const url: URL = new URL(link.href);\n const originalHash: string = url.hash;\n if (isAnchorLink(link)) {\n if (originalHash) {\n url.hash = genHeadingId(originalHash);\n link.href = url.hash;\n }\n } else if (url.host === window.location.host) {\n // hosts match, meaning URL MIGHT have been malformed by showdown\n // url is a relative url or just a link to a part of the application\n if (url.pathname.endsWith('.md')) {\n // only check .md urls\n\n const hrefWithoutHash: string = removeTrailingHash(\n link.getAttribute('href')\n );\n // since this might be a relative path, don't assign it to url.href\n // relative path won't be a valid href to assign to URL\n const newHref = generateHref(currentHref, hrefWithoutHash);\n\n if (originalHash) {\n url.hash = genHeadingId(originalHash);\n }\n link.href = newHref;\n }\n link.target = '_blank';\n } else {\n // url is absolute\n if (url.pathname.endsWith('.md')) {\n if (originalHash) {\n url.hash = genHeadingId(originalHash);\n }\n link.href = url.href;\n }\n link.target = '_blank';\n }\n });\n\n return new XMLSerializer().serializeToString(document);\n }\n return html;\n}\n\nfunction normalizeImageSrcs(html: string, currentHref: string): string {\n if (currentHref) {\n const document: Document = new DOMParser().parseFromString(\n html,\n 'text/html'\n );\n document\n .querySelectorAll<HTMLImageElement>('img[src]')\n .forEach((image: HTMLImageElement) => {\n const src = image.getAttribute('src') ?? '';\n try {\n /* tslint:disable-next-line:no-unused-expression */\n new URL(src);\n if (isGithubHref(src)) {\n image.src = rawGithubHref(src);\n }\n } catch {\n image.src = generateHref(\n isGithubHref(currentHref)\n ? rawGithubHref(currentHref)\n : currentHref,\n src\n );\n }\n // gh svgs need to have ?sanitize=true\n if (isRawGithubHref(image.src)) {\n const url: URL = new URL(image.src);\n if (url.pathname.endsWith('.svg')) {\n url.searchParams.set('sanitize', 'true');\n image.src = url.href;\n }\n }\n });\n\n return new XMLSerializer().serializeToString(document);\n }\n return html;\n}\n\nfunction addIdsToHeadings(html: string): string {\n if (html) {\n const document: Document = new DOMParser().parseFromString(\n html,\n 'text/html'\n );\n document\n .querySelectorAll('h1, h2, h3, h4, h5, h6')\n .forEach((heading: Element) => {\n const id: string = genHeadingId(heading.innerHTML);\n heading.setAttribute('id', id);\n });\n return new XMLSerializer().serializeToString(document);\n }\n return html;\n}\n\n@Component({\n selector: 'td-markdown',\n styleUrls: ['./markdown.component.scss'],\n templateUrl: './markdown.component.html',\n})\nexport class TdMarkdownComponent\n implements OnChanges, AfterViewInit, OnDestroy\n{\n private _content!: string;\n private _simpleLineBreaks = false;\n private _hostedUrl!: string;\n private _anchor!: string;\n private _viewInit = false;\n private _anchorListener?: VoidFunction;\n /**\n * .td-markdown class added to host so ::ng-deep gets scoped.\n */\n @HostBinding('class') class = 'td-markdown';\n\n /**\n * content?: string\n *\n * Markdown format content to be parsed as html 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 * contentReady?: function\n * Event emitted after the markdown content rendering is finished.\n */\n @Output() contentReady: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n private _renderer: Renderer2,\n private _elementRef: ElementRef,\n private _domSanitizer: DomSanitizer,\n private _ngZone: NgZone\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, true);\n } else {\n this.refresh();\n }\n }\n\n ngAfterViewInit(): void {\n if (!this._content) {\n this._loadContent(\n (<HTMLElement>this._elementRef.nativeElement).textContent\n );\n }\n this._viewInit = true;\n\n // Caretaker note: the `scrollToAnchor` calls `element.scrollIntoView`, a native synchronous DOM\n // API and it doesn't require Angular running `ApplicationRef.tick()` each time the markdown component is clicked.\n // Host listener (added through `@HostListener`) cause Angular to add an event listener within the Angular zone.\n // It also calls `markViewDirty()` before calling the actual listener (the decorated class method).\n this._ngZone.runOutsideAngular(() => {\n this._anchorListener = this._renderer.listen(\n this._elementRef.nativeElement,\n 'click',\n (event: MouseEvent) => {\n const element: HTMLElement = <HTMLElement>event.srcElement;\n if (\n element.matches('a[href]') &&\n isAnchorLink(<HTMLAnchorElement>element)\n ) {\n this.handleAnchorClicks(event);\n }\n }\n );\n });\n }\n\n ngOnDestroy(): void {\n this._anchorListener?.();\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._elementRef.nativeElement).textContent\n );\n }\n }\n\n /**\n * General method to parse a string markdown into HTML Elements and load them into the container\n */\n private _loadContent(markdown: string | null): void {\n if (markdown && markdown.trim().length > 0) {\n // Clean container\n this._renderer.setProperty(\n this._elementRef.nativeElement,\n 'innerHTML',\n ''\n );\n // Parse html string into actual HTML elements.\n this._elementFromString(this._render(markdown));\n }\n // TODO: timeout required since resizing of html elements occurs which causes a change in the scroll position\n this._ngZone.runOutsideAngular(() =>\n setTimeout(\n () =>\n scrollToAnchor(this._elementRef.nativeElement, this._anchor, true),\n 250\n )\n );\n this.contentReady.emit();\n }\n\n private handleAnchorClicks(event: Event): void {\n event.preventDefault();\n const url: URL = new URL((<HTMLAnchorElement>event.target).href);\n const hash: string = decodeURI(url.hash);\n scrollToAnchor(this._elementRef.nativeElement, hash, true);\n }\n\n private _elementFromString(markupStr: string): HTMLDivElement {\n // Renderer2 doesnt have a parsing method, so we have to sanitize and use [innerHTML]\n // to parse the string into DOM element for now.\n const div: HTMLDivElement = this._renderer.createElement('div');\n this._renderer.appendChild(this._elementRef.nativeElement, div);\n const html: string =\n this._domSanitizer.sanitize(SecurityContext.HTML, markupStr) ?? '';\n const htmlWithAbsoluteHrefs: string = normalizeHtmlHrefs(\n html,\n this._hostedUrl\n );\n const htmlWithAbsoluteImgSrcs: string = normalizeImageSrcs(\n htmlWithAbsoluteHrefs,\n this._hostedUrl\n );\n const htmlWithHeadingIds: string = addIdsToHeadings(\n htmlWithAbsoluteImgSrcs\n );\n const htmlWithVideos: SafeHtml = renderVideoElements(htmlWithHeadingIds);\n this._renderer.setProperty(div, 'innerHTML', htmlWithVideos);\n return div;\n }\n\n private _render(markdown: string): string {\n // Trim leading and trailing newlines\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: string = firstLineWhitespaceMatch\n ? firstLineWhitespaceMatch[0]\n : '';\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 const markdownToParse: string = lines.join('\\n');\n\n // Convert markdown into html\n const converter: showdown.Converter = new showdown.Converter();\n converter.setOption('ghCodeBlocks', true);\n converter.setOption('tasklists', true);\n converter.setOption('tables', true);\n converter.setOption('literalMidWordUnderscores', true);\n converter.setOption('simpleLineBreaks', this._simpleLineBreaks);\n converter.setOption('emoji', true);\n return converter.makeHtml(markdownToParse);\n }\n}\n","<ng-content></ng-content>\n","import { Injectable, SecurityContext } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { HttpClient, HttpResponse } from '@angular/common/http';\nimport { isGithubHref, rawGithubHref } from '../markdown-utils/markdown-utils';\n\n@Injectable()\nexport class TdMarkdownLoaderService {\n constructor(private _http: HttpClient, private _sanitizer: DomSanitizer) {}\n\n async load(url: string, httpOptions: object = {}): Promise<string> {\n const sanitizedUrl: string =\n this._sanitizer.sanitize(SecurityContext.URL, url) ?? '';\n let urlToGet: string = sanitizedUrl;\n if (isGithubHref(sanitizedUrl)) {\n urlToGet = rawGithubHref(sanitizedUrl);\n }\n\n const response: HttpResponse<string> | undefined = await this._http\n .get(urlToGet, {\n ...httpOptions,\n responseType: 'text',\n observe: 'response',\n })\n .toPromise();\n const contentType: string = response?.headers.get('Content-Type') ?? '';\n if (\n contentType.includes('text/plain') ||\n contentType.includes('text/markdown')\n ) {\n return response?.body ?? '';\n } else {\n throw Error(`${contentType} is not a handled content type`);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { HttpClientModule } from '@angular/common/http';\n\nimport { TdMarkdownComponent } from './markdown.component';\nimport { TdMarkdownLoaderService } from './markdown-loader/markdown-loader.service';\n\n@NgModule({\n imports: [CommonModule, HttpClientModule],\n declarations: [TdMarkdownComponent],\n exports: [TdMarkdownComponent],\n providers: [TdMarkdownLoaderService],\n})\nexport class CovalentMarkdownModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2"],"mappings":"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"}
@@ -121,22 +121,41 @@ function renderVideoElements(html) {
121
121
  .replace(ytPlaylist, convertPL);
122
122
  }
123
123
 
124
+ function isAbsoluteUrl(currentHref) {
125
+ // Regular Expression to check url
126
+ const RgExp = new RegExp('^(?:[a-z]+:)?//', 'i');
127
+ return RgExp.test(currentHref);
128
+ }
124
129
  // TODO: assumes it is a github url
125
- // allow override somehow
126
- function generateAbsoluteHref(currentHref, relativeHref) {
130
+ // handles absolute and relative URLs
131
+ function generateHref(currentHref, relativeHref) {
127
132
  if (currentHref && relativeHref) {
128
- const currentUrl = new URL(currentHref);
129
- const path = currentUrl.pathname.split('/').slice(1, -1).join('/');
130
- const correctUrl = new URL(currentHref);
131
- if (relativeHref.startsWith('/')) {
132
- // url is relative to top level
133
- const orgAndRepo = path.split('/').slice(0, 3).join('/');
134
- correctUrl.pathname = `${orgAndRepo}${relativeHref}`;
133
+ if (isAbsoluteUrl(currentHref)) {
134
+ const currentUrl = new URL(currentHref);
135
+ const path = currentUrl.pathname
136
+ .split('/')
137
+ .slice(1, -1)
138
+ .join('/');
139
+ const correctUrl = new URL(currentHref);
140
+ if (relativeHref.startsWith('/')) {
141
+ // url is relative to top level
142
+ const orgAndRepo = path.split('/').slice(0, 3).join('/');
143
+ correctUrl.pathname = `${orgAndRepo}${relativeHref}`;
144
+ }
145
+ else {
146
+ correctUrl.pathname = `${path}/${relativeHref}`;
147
+ }
148
+ return correctUrl.href;
135
149
  }
136
150
  else {
137
- correctUrl.pathname = `${path}/${relativeHref}`;
151
+ const path = currentHref.split('/').slice(0, -1).join('/');
152
+ if (relativeHref.startsWith('/')) {
153
+ return `${path}${relativeHref}`;
154
+ }
155
+ else {
156
+ return `${path}/${relativeHref}`;
157
+ }
138
158
  }
139
- return correctUrl.href;
140
159
  }
141
160
  return '';
142
161
  }
@@ -160,11 +179,13 @@ function normalizeHtmlHrefs(html, currentHref) {
160
179
  if (url.pathname.endsWith('.md')) {
161
180
  // only check .md urls
162
181
  const hrefWithoutHash = removeTrailingHash(link.getAttribute('href'));
163
- url.href = generateAbsoluteHref(currentHref, hrefWithoutHash);
182
+ // since this might be a relative path, don't assign it to url.href
183
+ // relative path won't be a valid href to assign to URL
184
+ const newHref = generateHref(currentHref, hrefWithoutHash);
164
185
  if (originalHash) {
165
186
  url.hash = genHeadingId(originalHash);
166
187
  }
167
- link.href = url.href;
188
+ link.href = newHref;
168
189
  }
169
190
  link.target = '_blank';
170
191
  }
@@ -198,7 +219,7 @@ function normalizeImageSrcs(html, currentHref) {
198
219
  }
199
220
  }
200
221
  catch {
201
- image.src = generateAbsoluteHref(isGithubHref(currentHref)
222
+ image.src = generateHref(isGithubHref(currentHref)
202
223
  ? rawGithubHref(currentHref)
203
224
  : currentHref, src);
204
225
  }
@@ -388,9 +409,9 @@ class TdMarkdownComponent {
388
409
  return converter.makeHtml(markdownToParse);
389
410
  }
390
411
  }
391
- TdMarkdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: TdMarkdownComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.DomSanitizer }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
392
- TdMarkdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: TdMarkdownComponent, selector: "td-markdown", inputs: { content: "content", simpleLineBreaks: "simpleLineBreaks", hostedUrl: "hostedUrl", anchor: "anchor" }, outputs: { contentReady: "contentReady" }, host: { properties: { "class": "this.class" } }, usesOnChanges: true, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host.td-markdown::ng-deep a{background-color:transparent}:host.td-markdown::ng-deep a:active,:host.td-markdown::ng-deep a:hover{outline-width:0}:host.td-markdown::ng-deep strong{font-weight:inherit;font-weight:bolder}:host.td-markdown::ng-deep h1{font-size:2em;margin:.67em 0}:host.td-markdown::ng-deep img{border-style:none}:host.td-markdown::ng-deep svg:not(:root){overflow:hidden}:host.td-markdown::ng-deep code,:host.td-markdown::ng-deep kbd,:host.td-markdown::ng-deep pre{font-family:monospace;font-size:1em}:host.td-markdown::ng-deep hr{box-sizing:content-box;height:0;overflow:visible}:host.td-markdown::ng-deep input{font:inherit;margin:0;overflow:visible}:host.td-markdown::ng-deep button:-moz-focusring,:host.td-markdown::ng-deep [type=button]:-moz-focusring,:host.td-markdown::ng-deep [type=reset]:-moz-focusring,:host.td-markdown::ng-deep [type=submit]:-moz-focusring{outline:1px dotted ButtonText}:host.td-markdown::ng-deep [type=checkbox]{box-sizing:border-box;padding:0}:host.td-markdown::ng-deep table{border-spacing:0;border-collapse:collapse}:host.td-markdown::ng-deep td,:host.td-markdown::ng-deep th{padding:0}:host.td-markdown::ng-deep *{box-sizing:border-box}:host.td-markdown::ng-deep input{font:13px/1.4 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol}:host.td-markdown::ng-deep a{text-decoration:none}:host.td-markdown::ng-deep a:hover,:host.td-markdown::ng-deep a:active{text-decoration:underline}:host.td-markdown::ng-deep hr{height:0;margin:15px 0;overflow:hidden;background:transparent;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep hr:before{display:table;content:\"\"}:host.td-markdown::ng-deep hr:after{display:table;clear:both;content:\"\"}:host.td-markdown::ng-deep h1,:host.td-markdown::ng-deep h2,:host.td-markdown::ng-deep h3,:host.td-markdown::ng-deep h4,:host.td-markdown::ng-deep h5,:host.td-markdown::ng-deep h6{margin-top:0;margin-bottom:0;line-height:1.5}:host.td-markdown::ng-deep h1{font-size:30px}:host.td-markdown::ng-deep h2{font-size:21px}:host.td-markdown::ng-deep h3{font-size:16px}:host.td-markdown::ng-deep h4{font-size:14px}:host.td-markdown::ng-deep h5{font-size:12px}:host.td-markdown::ng-deep h6{font-size:11px}:host.td-markdown::ng-deep p{margin-top:0;margin-bottom:10px}:host.td-markdown::ng-deep blockquote{margin:0}:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol{padding-left:0;margin-top:0;margin-bottom:0}:host.td-markdown::ng-deep ol ol,:host.td-markdown::ng-deep ul ol{list-style-type:lower-roman}:host.td-markdown::ng-deep ul ul ol,:host.td-markdown::ng-deep ul ol ol,:host.td-markdown::ng-deep ol ul ol,:host.td-markdown::ng-deep ol ol ol{list-style-type:lower-alpha}:host.td-markdown::ng-deep dd{margin-left:0}:host.td-markdown::ng-deep code{font-family:Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px}:host.td-markdown::ng-deep pre{margin-top:0;margin-bottom:0;font:12px Consolas,Liberation Mono,Menlo,Courier,monospace}:host.td-markdown::ng-deep .pl-0{padding-left:0!important}:host.td-markdown::ng-deep .pl-1{padding-left:3px!important}:host.td-markdown::ng-deep .pl-2{padding-left:6px!important}:host.td-markdown::ng-deep .pl-3{padding-left:12px!important}:host.td-markdown::ng-deep .pl-4{padding-left:24px!important}:host.td-markdown::ng-deep .pl-5{padding-left:36px!important}:host.td-markdown::ng-deep .pl-6{padding-left:48px!important}:host.td-markdown::ng-deep .form-select::-ms-expand{opacity:0}:host.td-markdown::ng-deep a:not([href]){color:inherit;text-decoration:none}:host.td-markdown::ng-deep h1,:host.td-markdown::ng-deep h2,:host.td-markdown::ng-deep h3,:host.td-markdown::ng-deep h4,:host.td-markdown::ng-deep h5,:host.td-markdown::ng-deep h6{margin-top:1em;margin-bottom:16px;font-weight:700;line-height:1.4}:host.td-markdown::ng-deep h1 .octicon-link,:host.td-markdown::ng-deep h2 .octicon-link,:host.td-markdown::ng-deep h3 .octicon-link,:host.td-markdown::ng-deep h4 .octicon-link,:host.td-markdown::ng-deep h5 .octicon-link,:host.td-markdown::ng-deep h6 .octicon-link{color:#000;vertical-align:middle;visibility:hidden}:host.td-markdown::ng-deep h1:hover .anchor,:host.td-markdown::ng-deep h2:hover .anchor,:host.td-markdown::ng-deep h3:hover .anchor,:host.td-markdown::ng-deep h4:hover .anchor,:host.td-markdown::ng-deep h5:hover .anchor,:host.td-markdown::ng-deep h6:hover .anchor{text-decoration:none}:host.td-markdown::ng-deep h1:hover .anchor .octicon-link,:host.td-markdown::ng-deep h2:hover .anchor .octicon-link,:host.td-markdown::ng-deep h3:hover .anchor .octicon-link,:host.td-markdown::ng-deep h4:hover .anchor .octicon-link,:host.td-markdown::ng-deep h5:hover .anchor .octicon-link,:host.td-markdown::ng-deep h6:hover .anchor .octicon-link{visibility:visible}:host.td-markdown::ng-deep h1{padding-bottom:.3em;font-size:2.25em;line-height:1.2;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep h1 .anchor{line-height:1}:host.td-markdown::ng-deep h2{padding-bottom:.3em;font-size:1.75em;line-height:1.225;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep h2 .anchor{line-height:1}:host.td-markdown::ng-deep h3{font-size:1.5em;line-height:1.43}:host.td-markdown::ng-deep h3 .anchor{line-height:1.2}:host.td-markdown::ng-deep h4{font-size:1.25em}:host.td-markdown::ng-deep h4 .anchor{line-height:1.2}:host.td-markdown::ng-deep h5{font-size:1em}:host.td-markdown::ng-deep h5 .anchor{line-height:1.1}:host.td-markdown::ng-deep h6{font-size:1em}:host.td-markdown::ng-deep h6 .anchor{line-height:1.1}:host.td-markdown::ng-deep p,:host.td-markdown::ng-deep blockquote,:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol,:host.td-markdown::ng-deep dl,:host.td-markdown::ng-deep table,:host.td-markdown::ng-deep pre{margin-top:0;margin-bottom:16px}:host.td-markdown::ng-deep hr{margin:16px 0}:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol{padding-left:2em}:host.td-markdown::ng-deep ul ul,:host.td-markdown::ng-deep ul ol,:host.td-markdown::ng-deep ol ol,:host.td-markdown::ng-deep ol ul{margin-top:0;margin-bottom:0}:host.td-markdown::ng-deep li>p{margin-top:16px}:host.td-markdown::ng-deep dl{padding:0}:host.td-markdown::ng-deep dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}:host.td-markdown::ng-deep dl dd{padding:0 16px;margin-bottom:16px}:host.td-markdown::ng-deep blockquote{padding:0 15px;border-left-width:4px;border-left-style:solid}:host.td-markdown::ng-deep blockquote>:first-child{margin-top:0}:host.td-markdown::ng-deep blockquote>:last-child{margin-bottom:0}:host.td-markdown::ng-deep table{display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}:host.td-markdown::ng-deep table th{font-weight:700}:host.td-markdown::ng-deep table th,:host.td-markdown::ng-deep table td{padding:6px 13px;border-width:1px;border-style:solid}:host.td-markdown::ng-deep table tr{border-top-width:1px;border-top-style:solid}:host.td-markdown::ng-deep img{max-width:100%;box-sizing:content-box}:host.td-markdown::ng-deep code{padding:.2em 0;margin:0;font-size:85%;border-radius:3px}:host.td-markdown::ng-deep code:before,:host.td-markdown::ng-deep code:after{letter-spacing:-.2em}:host.td-markdown::ng-deep pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:transparent;border:0}:host.td-markdown::ng-deep .highlight{margin-bottom:16px}:host.td-markdown::ng-deep .highlight pre,:host.td-markdown::ng-deep pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;border-radius:3px}:host.td-markdown::ng-deep .highlight pre{margin-bottom:0;word-break:normal}:host.td-markdown::ng-deep pre{word-wrap:normal}:host.td-markdown::ng-deep pre code{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}:host.td-markdown::ng-deep pre code:before,:host.td-markdown::ng-deep pre code:after{content:normal}:host.td-markdown::ng-deep kbd{display:inline-block;padding:3px 5px;font-size:11px;line-height:10px;vertical-align:middle;border-style:solid;border-width:1px;border-radius:3px}:host.td-markdown::ng-deep .pl-c{color:#969896}:host.td-markdown::ng-deep .pl-c1,:host.td-markdown::ng-deep .pl-s .pl-v{color:#0086b3}:host.td-markdown::ng-deep .pl-e,:host.td-markdown::ng-deep .pl-en{color:#795da3}:host.td-markdown::ng-deep .pl-s .pl-s1,:host.td-markdown::ng-deep .pl-smi{color:#333}:host.td-markdown::ng-deep .pl-ent{color:#63a35c}:host.td-markdown::ng-deep .pl-k{color:#a71d5d}:host.td-markdown::ng-deep .pl-pds,:host.td-markdown::ng-deep .pl-s,:host.td-markdown::ng-deep .pl-s .pl-pse .pl-s1,:host.td-markdown::ng-deep .pl-sr,:host.td-markdown::ng-deep .pl-sr .pl-cce,:host.td-markdown::ng-deep .pl-sr .pl-sra,:host.td-markdown::ng-deep .pl-sr .pl-sre{color:#183691}:host.td-markdown::ng-deep .pl-v{color:#ed6a43}:host.td-markdown::ng-deep .pl-id{color:#b52a1d}:host.td-markdown::ng-deep .pl-ii{background-color:#b52a1d;color:#f8f8f8}:host.td-markdown::ng-deep .pl-sr .pl-cce{color:#63a35c;font-weight:700}:host.td-markdown::ng-deep .pl-ml{color:#693a17}:host.td-markdown::ng-deep .pl-mh,:host.td-markdown::ng-deep .pl-mh .pl-en,:host.td-markdown::ng-deep .pl-ms{color:#1d3e81;font-weight:700}:host.td-markdown::ng-deep .pl-mq{color:teal}:host.td-markdown::ng-deep .pl-mi{color:#333;font-style:italic}:host.td-markdown::ng-deep .pl-mb{color:#333;font-weight:700}:host.td-markdown::ng-deep .pl-md{background-color:#ffecec;color:#bd2c00}:host.td-markdown::ng-deep .pl-mi1{background-color:#eaffea;color:#55a532}:host.td-markdown::ng-deep .pl-mdr{color:#795da3;font-weight:700}:host.td-markdown::ng-deep .pl-mo{color:#1d3e81}:host.td-markdown::ng-deep kbd{display:inline-block;padding:3px 5px;font:11px Consolas,Liberation Mono,Menlo,Courier,monospace;line-height:10px;vertical-align:middle;background-color:#fcfcfc;border:solid 1px #cccccc;border-bottom-color:#bbb;border-radius:3px;box-shadow:inset 0 -1px #bbb}:host.td-markdown::ng-deep .full-commit .btn-outline:not(:disabled):hover{color:#4078c0;border:1px solid #4078c0}:host.td-markdown::ng-deep :checked+.radio-label{position:relative;z-index:1;border-color:#4078c0}:host.td-markdown::ng-deep .octicon{display:inline-block;vertical-align:text-top;fill:currentColor}:host.td-markdown::ng-deep .task-list-item{list-style-type:none}:host.td-markdown::ng-deep .task-list-item+.task-list-item{margin-top:3px}:host.td-markdown::ng-deep .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}\n"] });
393
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: TdMarkdownComponent, decorators: [{
412
+ TdMarkdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TdMarkdownComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.DomSanitizer }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
413
+ TdMarkdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TdMarkdownComponent, selector: "td-markdown", inputs: { content: "content", simpleLineBreaks: "simpleLineBreaks", hostedUrl: "hostedUrl", anchor: "anchor" }, outputs: { contentReady: "contentReady" }, host: { properties: { "class": "this.class" } }, usesOnChanges: true, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host.td-markdown::ng-deep a{background-color:transparent}:host.td-markdown::ng-deep a:active,:host.td-markdown::ng-deep a:hover{outline-width:0}:host.td-markdown::ng-deep strong{font-weight:inherit;font-weight:bolder}:host.td-markdown::ng-deep h1{font-size:2em;margin:.67em 0}:host.td-markdown::ng-deep img{border-style:none}:host.td-markdown::ng-deep svg:not(:root){overflow:hidden}:host.td-markdown::ng-deep code,:host.td-markdown::ng-deep kbd,:host.td-markdown::ng-deep pre{font-family:monospace;font-size:1em}:host.td-markdown::ng-deep hr{box-sizing:content-box;height:0;overflow:visible}:host.td-markdown::ng-deep input{font:inherit;margin:0;overflow:visible}:host.td-markdown::ng-deep button:-moz-focusring,:host.td-markdown::ng-deep [type=button]:-moz-focusring,:host.td-markdown::ng-deep [type=reset]:-moz-focusring,:host.td-markdown::ng-deep [type=submit]:-moz-focusring{outline:1px dotted ButtonText}:host.td-markdown::ng-deep [type=checkbox]{box-sizing:border-box;padding:0}:host.td-markdown::ng-deep table{border-spacing:0;border-collapse:collapse}:host.td-markdown::ng-deep td,:host.td-markdown::ng-deep th{padding:0}:host.td-markdown::ng-deep *{box-sizing:border-box}:host.td-markdown::ng-deep input{font:13px/1.4 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol}:host.td-markdown::ng-deep a{text-decoration:none}:host.td-markdown::ng-deep a:hover,:host.td-markdown::ng-deep a:active{text-decoration:underline}:host.td-markdown::ng-deep hr{height:0;margin:15px 0;overflow:hidden;background:transparent;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep hr:before{display:table;content:\"\"}:host.td-markdown::ng-deep hr:after{display:table;clear:both;content:\"\"}:host.td-markdown::ng-deep h1,:host.td-markdown::ng-deep h2,:host.td-markdown::ng-deep h3,:host.td-markdown::ng-deep h4,:host.td-markdown::ng-deep h5,:host.td-markdown::ng-deep h6{margin-top:0;margin-bottom:0;line-height:1.5}:host.td-markdown::ng-deep h1{font-size:30px}:host.td-markdown::ng-deep h2{font-size:21px}:host.td-markdown::ng-deep h3{font-size:16px}:host.td-markdown::ng-deep h4{font-size:14px}:host.td-markdown::ng-deep h5{font-size:12px}:host.td-markdown::ng-deep h6{font-size:11px}:host.td-markdown::ng-deep p{margin-top:0;margin-bottom:10px}:host.td-markdown::ng-deep blockquote{margin:0}:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol{padding-left:0;margin-top:0;margin-bottom:0}:host.td-markdown::ng-deep ol ol,:host.td-markdown::ng-deep ul ol{list-style-type:lower-roman}:host.td-markdown::ng-deep ul ul ol,:host.td-markdown::ng-deep ul ol ol,:host.td-markdown::ng-deep ol ul ol,:host.td-markdown::ng-deep ol ol ol{list-style-type:lower-alpha}:host.td-markdown::ng-deep dd{margin-left:0}:host.td-markdown::ng-deep code{font-family:Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px}:host.td-markdown::ng-deep pre{margin-top:0;margin-bottom:0;font:12px Consolas,Liberation Mono,Menlo,Courier,monospace}:host.td-markdown::ng-deep .pl-0{padding-left:0!important}:host.td-markdown::ng-deep .pl-1{padding-left:3px!important}:host.td-markdown::ng-deep .pl-2{padding-left:6px!important}:host.td-markdown::ng-deep .pl-3{padding-left:12px!important}:host.td-markdown::ng-deep .pl-4{padding-left:24px!important}:host.td-markdown::ng-deep .pl-5{padding-left:36px!important}:host.td-markdown::ng-deep .pl-6{padding-left:48px!important}:host.td-markdown::ng-deep .form-select::-ms-expand{opacity:0}:host.td-markdown::ng-deep a:not([href]){color:inherit;text-decoration:none}:host.td-markdown::ng-deep h1,:host.td-markdown::ng-deep h2,:host.td-markdown::ng-deep h3,:host.td-markdown::ng-deep h4,:host.td-markdown::ng-deep h5,:host.td-markdown::ng-deep h6{margin-top:1em;margin-bottom:16px;font-weight:700;line-height:1.4}:host.td-markdown::ng-deep h1 .octicon-link,:host.td-markdown::ng-deep h2 .octicon-link,:host.td-markdown::ng-deep h3 .octicon-link,:host.td-markdown::ng-deep h4 .octicon-link,:host.td-markdown::ng-deep h5 .octicon-link,:host.td-markdown::ng-deep h6 .octicon-link{color:#000;vertical-align:middle;visibility:hidden}:host.td-markdown::ng-deep h1:hover .anchor,:host.td-markdown::ng-deep h2:hover .anchor,:host.td-markdown::ng-deep h3:hover .anchor,:host.td-markdown::ng-deep h4:hover .anchor,:host.td-markdown::ng-deep h5:hover .anchor,:host.td-markdown::ng-deep h6:hover .anchor{text-decoration:none}:host.td-markdown::ng-deep h1:hover .anchor .octicon-link,:host.td-markdown::ng-deep h2:hover .anchor .octicon-link,:host.td-markdown::ng-deep h3:hover .anchor .octicon-link,:host.td-markdown::ng-deep h4:hover .anchor .octicon-link,:host.td-markdown::ng-deep h5:hover .anchor .octicon-link,:host.td-markdown::ng-deep h6:hover .anchor .octicon-link{visibility:visible}:host.td-markdown::ng-deep h1{padding-bottom:.3em;font-size:2.25em;line-height:1.2;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep h1 .anchor{line-height:1}:host.td-markdown::ng-deep h2{padding-bottom:.3em;font-size:1.75em;line-height:1.225;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep h2 .anchor{line-height:1}:host.td-markdown::ng-deep h3{font-size:1.5em;line-height:1.43}:host.td-markdown::ng-deep h3 .anchor{line-height:1.2}:host.td-markdown::ng-deep h4{font-size:1.25em}:host.td-markdown::ng-deep h4 .anchor{line-height:1.2}:host.td-markdown::ng-deep h5{font-size:1em}:host.td-markdown::ng-deep h5 .anchor{line-height:1.1}:host.td-markdown::ng-deep h6{font-size:1em}:host.td-markdown::ng-deep h6 .anchor{line-height:1.1}:host.td-markdown::ng-deep p,:host.td-markdown::ng-deep blockquote,:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol,:host.td-markdown::ng-deep dl,:host.td-markdown::ng-deep table,:host.td-markdown::ng-deep pre{margin-top:0;margin-bottom:16px}:host.td-markdown::ng-deep hr{margin:16px 0}:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol{padding-left:2em}:host.td-markdown::ng-deep ul ul,:host.td-markdown::ng-deep ul ol,:host.td-markdown::ng-deep ol ol,:host.td-markdown::ng-deep ol ul{margin-top:0;margin-bottom:0}:host.td-markdown::ng-deep li>p{margin-top:16px}:host.td-markdown::ng-deep dl{padding:0}:host.td-markdown::ng-deep dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}:host.td-markdown::ng-deep dl dd{padding:0 16px;margin-bottom:16px}:host.td-markdown::ng-deep blockquote{padding:0 15px;border-left-width:4px;border-left-style:solid}:host.td-markdown::ng-deep blockquote>:first-child{margin-top:0}:host.td-markdown::ng-deep blockquote>:last-child{margin-bottom:0}:host.td-markdown::ng-deep table{display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}:host.td-markdown::ng-deep table th{font-weight:700}:host.td-markdown::ng-deep table th,:host.td-markdown::ng-deep table td{padding:6px 13px;border-width:1px;border-style:solid}:host.td-markdown::ng-deep table tr{border-top-width:1px;border-top-style:solid}:host.td-markdown::ng-deep img{max-width:100%;box-sizing:content-box}:host.td-markdown::ng-deep code{padding:.2em 0;margin:0;font-size:85%;border-radius:3px}:host.td-markdown::ng-deep code:before,:host.td-markdown::ng-deep code:after{letter-spacing:-.2em}:host.td-markdown::ng-deep pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:transparent;border:0}:host.td-markdown::ng-deep .highlight{margin-bottom:16px}:host.td-markdown::ng-deep .highlight pre,:host.td-markdown::ng-deep pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;border-radius:3px}:host.td-markdown::ng-deep .highlight pre{margin-bottom:0;word-break:normal}:host.td-markdown::ng-deep pre{word-wrap:normal}:host.td-markdown::ng-deep pre code{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}:host.td-markdown::ng-deep pre code:before,:host.td-markdown::ng-deep pre code:after{content:normal}:host.td-markdown::ng-deep kbd{display:inline-block;padding:3px 5px;font-size:11px;line-height:10px;vertical-align:middle;border-style:solid;border-width:1px;border-radius:3px}:host.td-markdown::ng-deep .pl-c{color:#969896}:host.td-markdown::ng-deep .pl-c1,:host.td-markdown::ng-deep .pl-s .pl-v{color:#0086b3}:host.td-markdown::ng-deep .pl-e,:host.td-markdown::ng-deep .pl-en{color:#795da3}:host.td-markdown::ng-deep .pl-s .pl-s1,:host.td-markdown::ng-deep .pl-smi{color:#333}:host.td-markdown::ng-deep .pl-ent{color:#63a35c}:host.td-markdown::ng-deep .pl-k{color:#a71d5d}:host.td-markdown::ng-deep .pl-pds,:host.td-markdown::ng-deep .pl-s,:host.td-markdown::ng-deep .pl-s .pl-pse .pl-s1,:host.td-markdown::ng-deep .pl-sr,:host.td-markdown::ng-deep .pl-sr .pl-cce,:host.td-markdown::ng-deep .pl-sr .pl-sra,:host.td-markdown::ng-deep .pl-sr .pl-sre{color:#183691}:host.td-markdown::ng-deep .pl-v{color:#ed6a43}:host.td-markdown::ng-deep .pl-id{color:#b52a1d}:host.td-markdown::ng-deep .pl-ii{background-color:#b52a1d;color:#f8f8f8}:host.td-markdown::ng-deep .pl-sr .pl-cce{color:#63a35c;font-weight:700}:host.td-markdown::ng-deep .pl-ml{color:#693a17}:host.td-markdown::ng-deep .pl-mh,:host.td-markdown::ng-deep .pl-mh .pl-en,:host.td-markdown::ng-deep .pl-ms{color:#1d3e81;font-weight:700}:host.td-markdown::ng-deep .pl-mq{color:teal}:host.td-markdown::ng-deep .pl-mi{color:#333;font-style:italic}:host.td-markdown::ng-deep .pl-mb{color:#333;font-weight:700}:host.td-markdown::ng-deep .pl-md{background-color:#ffecec;color:#bd2c00}:host.td-markdown::ng-deep .pl-mi1{background-color:#eaffea;color:#55a532}:host.td-markdown::ng-deep .pl-mdr{color:#795da3;font-weight:700}:host.td-markdown::ng-deep .pl-mo{color:#1d3e81}:host.td-markdown::ng-deep kbd{display:inline-block;padding:3px 5px;font:11px Consolas,Liberation Mono,Menlo,Courier,monospace;line-height:10px;vertical-align:middle;background-color:#fcfcfc;border:solid 1px #cccccc;border-bottom-color:#bbb;border-radius:3px;box-shadow:inset 0 -1px #bbb}:host.td-markdown::ng-deep .full-commit .btn-outline:not(:disabled):hover{color:#4078c0;border:1px solid #4078c0}:host.td-markdown::ng-deep :checked+.radio-label{position:relative;z-index:1;border-color:#4078c0}:host.td-markdown::ng-deep .octicon{display:inline-block;vertical-align:text-top;fill:currentColor}:host.td-markdown::ng-deep .task-list-item{list-style-type:none}:host.td-markdown::ng-deep .task-list-item+.task-list-item{margin-top:3px}:host.td-markdown::ng-deep .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}\n"] });
414
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TdMarkdownComponent, decorators: [{
394
415
  type: Component,
395
416
  args: [{ selector: 'td-markdown', template: "<ng-content></ng-content>\n", styles: [":host.td-markdown::ng-deep a{background-color:transparent}:host.td-markdown::ng-deep a:active,:host.td-markdown::ng-deep a:hover{outline-width:0}:host.td-markdown::ng-deep strong{font-weight:inherit;font-weight:bolder}:host.td-markdown::ng-deep h1{font-size:2em;margin:.67em 0}:host.td-markdown::ng-deep img{border-style:none}:host.td-markdown::ng-deep svg:not(:root){overflow:hidden}:host.td-markdown::ng-deep code,:host.td-markdown::ng-deep kbd,:host.td-markdown::ng-deep pre{font-family:monospace;font-size:1em}:host.td-markdown::ng-deep hr{box-sizing:content-box;height:0;overflow:visible}:host.td-markdown::ng-deep input{font:inherit;margin:0;overflow:visible}:host.td-markdown::ng-deep button:-moz-focusring,:host.td-markdown::ng-deep [type=button]:-moz-focusring,:host.td-markdown::ng-deep [type=reset]:-moz-focusring,:host.td-markdown::ng-deep [type=submit]:-moz-focusring{outline:1px dotted ButtonText}:host.td-markdown::ng-deep [type=checkbox]{box-sizing:border-box;padding:0}:host.td-markdown::ng-deep table{border-spacing:0;border-collapse:collapse}:host.td-markdown::ng-deep td,:host.td-markdown::ng-deep th{padding:0}:host.td-markdown::ng-deep *{box-sizing:border-box}:host.td-markdown::ng-deep input{font:13px/1.4 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol}:host.td-markdown::ng-deep a{text-decoration:none}:host.td-markdown::ng-deep a:hover,:host.td-markdown::ng-deep a:active{text-decoration:underline}:host.td-markdown::ng-deep hr{height:0;margin:15px 0;overflow:hidden;background:transparent;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep hr:before{display:table;content:\"\"}:host.td-markdown::ng-deep hr:after{display:table;clear:both;content:\"\"}:host.td-markdown::ng-deep h1,:host.td-markdown::ng-deep h2,:host.td-markdown::ng-deep h3,:host.td-markdown::ng-deep h4,:host.td-markdown::ng-deep h5,:host.td-markdown::ng-deep h6{margin-top:0;margin-bottom:0;line-height:1.5}:host.td-markdown::ng-deep h1{font-size:30px}:host.td-markdown::ng-deep h2{font-size:21px}:host.td-markdown::ng-deep h3{font-size:16px}:host.td-markdown::ng-deep h4{font-size:14px}:host.td-markdown::ng-deep h5{font-size:12px}:host.td-markdown::ng-deep h6{font-size:11px}:host.td-markdown::ng-deep p{margin-top:0;margin-bottom:10px}:host.td-markdown::ng-deep blockquote{margin:0}:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol{padding-left:0;margin-top:0;margin-bottom:0}:host.td-markdown::ng-deep ol ol,:host.td-markdown::ng-deep ul ol{list-style-type:lower-roman}:host.td-markdown::ng-deep ul ul ol,:host.td-markdown::ng-deep ul ol ol,:host.td-markdown::ng-deep ol ul ol,:host.td-markdown::ng-deep ol ol ol{list-style-type:lower-alpha}:host.td-markdown::ng-deep dd{margin-left:0}:host.td-markdown::ng-deep code{font-family:Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px}:host.td-markdown::ng-deep pre{margin-top:0;margin-bottom:0;font:12px Consolas,Liberation Mono,Menlo,Courier,monospace}:host.td-markdown::ng-deep .pl-0{padding-left:0!important}:host.td-markdown::ng-deep .pl-1{padding-left:3px!important}:host.td-markdown::ng-deep .pl-2{padding-left:6px!important}:host.td-markdown::ng-deep .pl-3{padding-left:12px!important}:host.td-markdown::ng-deep .pl-4{padding-left:24px!important}:host.td-markdown::ng-deep .pl-5{padding-left:36px!important}:host.td-markdown::ng-deep .pl-6{padding-left:48px!important}:host.td-markdown::ng-deep .form-select::-ms-expand{opacity:0}:host.td-markdown::ng-deep a:not([href]){color:inherit;text-decoration:none}:host.td-markdown::ng-deep h1,:host.td-markdown::ng-deep h2,:host.td-markdown::ng-deep h3,:host.td-markdown::ng-deep h4,:host.td-markdown::ng-deep h5,:host.td-markdown::ng-deep h6{margin-top:1em;margin-bottom:16px;font-weight:700;line-height:1.4}:host.td-markdown::ng-deep h1 .octicon-link,:host.td-markdown::ng-deep h2 .octicon-link,:host.td-markdown::ng-deep h3 .octicon-link,:host.td-markdown::ng-deep h4 .octicon-link,:host.td-markdown::ng-deep h5 .octicon-link,:host.td-markdown::ng-deep h6 .octicon-link{color:#000;vertical-align:middle;visibility:hidden}:host.td-markdown::ng-deep h1:hover .anchor,:host.td-markdown::ng-deep h2:hover .anchor,:host.td-markdown::ng-deep h3:hover .anchor,:host.td-markdown::ng-deep h4:hover .anchor,:host.td-markdown::ng-deep h5:hover .anchor,:host.td-markdown::ng-deep h6:hover .anchor{text-decoration:none}:host.td-markdown::ng-deep h1:hover .anchor .octicon-link,:host.td-markdown::ng-deep h2:hover .anchor .octicon-link,:host.td-markdown::ng-deep h3:hover .anchor .octicon-link,:host.td-markdown::ng-deep h4:hover .anchor .octicon-link,:host.td-markdown::ng-deep h5:hover .anchor .octicon-link,:host.td-markdown::ng-deep h6:hover .anchor .octicon-link{visibility:visible}:host.td-markdown::ng-deep h1{padding-bottom:.3em;font-size:2.25em;line-height:1.2;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep h1 .anchor{line-height:1}:host.td-markdown::ng-deep h2{padding-bottom:.3em;font-size:1.75em;line-height:1.225;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep h2 .anchor{line-height:1}:host.td-markdown::ng-deep h3{font-size:1.5em;line-height:1.43}:host.td-markdown::ng-deep h3 .anchor{line-height:1.2}:host.td-markdown::ng-deep h4{font-size:1.25em}:host.td-markdown::ng-deep h4 .anchor{line-height:1.2}:host.td-markdown::ng-deep h5{font-size:1em}:host.td-markdown::ng-deep h5 .anchor{line-height:1.1}:host.td-markdown::ng-deep h6{font-size:1em}:host.td-markdown::ng-deep h6 .anchor{line-height:1.1}:host.td-markdown::ng-deep p,:host.td-markdown::ng-deep blockquote,:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol,:host.td-markdown::ng-deep dl,:host.td-markdown::ng-deep table,:host.td-markdown::ng-deep pre{margin-top:0;margin-bottom:16px}:host.td-markdown::ng-deep hr{margin:16px 0}:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol{padding-left:2em}:host.td-markdown::ng-deep ul ul,:host.td-markdown::ng-deep ul ol,:host.td-markdown::ng-deep ol ol,:host.td-markdown::ng-deep ol ul{margin-top:0;margin-bottom:0}:host.td-markdown::ng-deep li>p{margin-top:16px}:host.td-markdown::ng-deep dl{padding:0}:host.td-markdown::ng-deep dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}:host.td-markdown::ng-deep dl dd{padding:0 16px;margin-bottom:16px}:host.td-markdown::ng-deep blockquote{padding:0 15px;border-left-width:4px;border-left-style:solid}:host.td-markdown::ng-deep blockquote>:first-child{margin-top:0}:host.td-markdown::ng-deep blockquote>:last-child{margin-bottom:0}:host.td-markdown::ng-deep table{display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}:host.td-markdown::ng-deep table th{font-weight:700}:host.td-markdown::ng-deep table th,:host.td-markdown::ng-deep table td{padding:6px 13px;border-width:1px;border-style:solid}:host.td-markdown::ng-deep table tr{border-top-width:1px;border-top-style:solid}:host.td-markdown::ng-deep img{max-width:100%;box-sizing:content-box}:host.td-markdown::ng-deep code{padding:.2em 0;margin:0;font-size:85%;border-radius:3px}:host.td-markdown::ng-deep code:before,:host.td-markdown::ng-deep code:after{letter-spacing:-.2em}:host.td-markdown::ng-deep pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:transparent;border:0}:host.td-markdown::ng-deep .highlight{margin-bottom:16px}:host.td-markdown::ng-deep .highlight pre,:host.td-markdown::ng-deep pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;border-radius:3px}:host.td-markdown::ng-deep .highlight pre{margin-bottom:0;word-break:normal}:host.td-markdown::ng-deep pre{word-wrap:normal}:host.td-markdown::ng-deep pre code{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}:host.td-markdown::ng-deep pre code:before,:host.td-markdown::ng-deep pre code:after{content:normal}:host.td-markdown::ng-deep kbd{display:inline-block;padding:3px 5px;font-size:11px;line-height:10px;vertical-align:middle;border-style:solid;border-width:1px;border-radius:3px}:host.td-markdown::ng-deep .pl-c{color:#969896}:host.td-markdown::ng-deep .pl-c1,:host.td-markdown::ng-deep .pl-s .pl-v{color:#0086b3}:host.td-markdown::ng-deep .pl-e,:host.td-markdown::ng-deep .pl-en{color:#795da3}:host.td-markdown::ng-deep .pl-s .pl-s1,:host.td-markdown::ng-deep .pl-smi{color:#333}:host.td-markdown::ng-deep .pl-ent{color:#63a35c}:host.td-markdown::ng-deep .pl-k{color:#a71d5d}:host.td-markdown::ng-deep .pl-pds,:host.td-markdown::ng-deep .pl-s,:host.td-markdown::ng-deep .pl-s .pl-pse .pl-s1,:host.td-markdown::ng-deep .pl-sr,:host.td-markdown::ng-deep .pl-sr .pl-cce,:host.td-markdown::ng-deep .pl-sr .pl-sra,:host.td-markdown::ng-deep .pl-sr .pl-sre{color:#183691}:host.td-markdown::ng-deep .pl-v{color:#ed6a43}:host.td-markdown::ng-deep .pl-id{color:#b52a1d}:host.td-markdown::ng-deep .pl-ii{background-color:#b52a1d;color:#f8f8f8}:host.td-markdown::ng-deep .pl-sr .pl-cce{color:#63a35c;font-weight:700}:host.td-markdown::ng-deep .pl-ml{color:#693a17}:host.td-markdown::ng-deep .pl-mh,:host.td-markdown::ng-deep .pl-mh .pl-en,:host.td-markdown::ng-deep .pl-ms{color:#1d3e81;font-weight:700}:host.td-markdown::ng-deep .pl-mq{color:teal}:host.td-markdown::ng-deep .pl-mi{color:#333;font-style:italic}:host.td-markdown::ng-deep .pl-mb{color:#333;font-weight:700}:host.td-markdown::ng-deep .pl-md{background-color:#ffecec;color:#bd2c00}:host.td-markdown::ng-deep .pl-mi1{background-color:#eaffea;color:#55a532}:host.td-markdown::ng-deep .pl-mdr{color:#795da3;font-weight:700}:host.td-markdown::ng-deep .pl-mo{color:#1d3e81}:host.td-markdown::ng-deep kbd{display:inline-block;padding:3px 5px;font:11px Consolas,Liberation Mono,Menlo,Courier,monospace;line-height:10px;vertical-align:middle;background-color:#fcfcfc;border:solid 1px #cccccc;border-bottom-color:#bbb;border-radius:3px;box-shadow:inset 0 -1px #bbb}:host.td-markdown::ng-deep .full-commit .btn-outline:not(:disabled):hover{color:#4078c0;border:1px solid #4078c0}:host.td-markdown::ng-deep :checked+.radio-label{position:relative;z-index:1;border-color:#4078c0}:host.td-markdown::ng-deep .octicon{display:inline-block;vertical-align:text-top;fill:currentColor}:host.td-markdown::ng-deep .task-list-item{list-style-type:none}:host.td-markdown::ng-deep .task-list-item+.task-list-item{margin-top:3px}:host.td-markdown::ng-deep .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}\n"] }]
396
417
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.DomSanitizer }, { type: i0.NgZone }]; }, propDecorators: { class: [{
@@ -436,18 +457,18 @@ class TdMarkdownLoaderService {
436
457
  }
437
458
  }
438
459
  }
439
- TdMarkdownLoaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: TdMarkdownLoaderService, deps: [{ token: i1$1.HttpClient }, { token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Injectable });
440
- TdMarkdownLoaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: TdMarkdownLoaderService });
441
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: TdMarkdownLoaderService, decorators: [{
460
+ TdMarkdownLoaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TdMarkdownLoaderService, deps: [{ token: i1$1.HttpClient }, { token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Injectable });
461
+ TdMarkdownLoaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TdMarkdownLoaderService });
462
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TdMarkdownLoaderService, decorators: [{
442
463
  type: Injectable
443
464
  }], ctorParameters: function () { return [{ type: i1$1.HttpClient }, { type: i1.DomSanitizer }]; } });
444
465
 
445
466
  class CovalentMarkdownModule {
446
467
  }
447
- CovalentMarkdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentMarkdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
448
- CovalentMarkdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.5", ngImport: i0, type: CovalentMarkdownModule, declarations: [TdMarkdownComponent], imports: [CommonModule, HttpClientModule], exports: [TdMarkdownComponent] });
449
- CovalentMarkdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentMarkdownModule, providers: [TdMarkdownLoaderService], imports: [CommonModule, HttpClientModule] });
450
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CovalentMarkdownModule, decorators: [{
468
+ CovalentMarkdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CovalentMarkdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
469
+ CovalentMarkdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: CovalentMarkdownModule, declarations: [TdMarkdownComponent], imports: [CommonModule, HttpClientModule], exports: [TdMarkdownComponent] });
470
+ CovalentMarkdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CovalentMarkdownModule, providers: [TdMarkdownLoaderService], imports: [CommonModule, HttpClientModule] });
471
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CovalentMarkdownModule, decorators: [{
451
472
  type: NgModule,
452
473
  args: [{
453
474
  imports: [CommonModule, HttpClientModule],
@@ -1 +1 @@
1
- {"version":3,"file":"covalent-markdown.mjs","sources":["../../../../libs/markdown/src/lib/markdown-utils/markdown-utils.ts","../../../../libs/markdown/src/lib/markdown.component.ts","../../../../libs/markdown/src/lib/markdown.component.html","../../../../libs/markdown/src/lib/markdown-loader/markdown-loader.service.ts","../../../../libs/markdown/src/lib/markdown.module.ts","../../../../libs/markdown/src/covalent-markdown.ts"],"sourcesContent":["export function removeLeadingHash(str: string): string {\n if (str) {\n return str.replace(/^#+/, '');\n }\n return '';\n}\n\nexport function removeTrailingHash(str: string | null): string {\n if (str) {\n return str.replace(/#.*/, '');\n }\n return '';\n}\n\nexport function genHeadingId(str: string): string {\n if (str) {\n return removeLeadingHash(\n str\n .replace(/(_|-|\\s)+/g, '')\n // Remove certain special chars to create heading ids similar to those in github\n // borrowed from showdown\n // https://github.com/showdownjs/showdown/blob/main/src/subParsers/makehtml/headers.js#L94\n .replace(/[&+$,/:;=?@\"#{}|^¨~[\\]`\\\\*)(%.!'<>]/g, '')\n ).toLowerCase();\n }\n return '';\n}\n\nexport function scrollToAnchor(\n scope: HTMLElement,\n anchor: string,\n tryParent: boolean\n): boolean {\n if (scope && anchor) {\n const normalizedAnchor: string = genHeadingId(anchor);\n let headingToJumpTo: Element | null = null;\n const headingWithinComponent = scope.querySelector(\n `[id=\"${normalizedAnchor}\"]`\n );\n\n if (headingWithinComponent) {\n headingToJumpTo = headingWithinComponent;\n } else if (tryParent) {\n const parent = scope.parentElement;\n if (parent) {\n headingToJumpTo = parent.querySelector(`[id=\"${normalizedAnchor}\"]`);\n }\n }\n if (headingToJumpTo) {\n headingToJumpTo.scrollIntoView({ behavior: 'auto' });\n return true;\n }\n }\n return false;\n}\n\nexport function isAnchorLink(anchor?: HTMLAnchorElement): boolean {\n if (anchor) {\n const href = anchor.getAttribute('href');\n if (href) {\n return href.startsWith('#');\n }\n }\n return false;\n}\nconst RAW_GITHUB_HOSTNAME = 'raw.githubusercontent.com';\n\nexport function rawGithubHref(githubHref?: string): string {\n if (githubHref) {\n try {\n const url: URL = new URL(githubHref);\n if (url.hostname === RAW_GITHUB_HOSTNAME) {\n return url.href;\n } else if (isGithubHref(githubHref)) {\n url.hostname = RAW_GITHUB_HOSTNAME;\n url.pathname = url.pathname.split('/blob', 2).join('');\n return url.href;\n }\n } catch {\n return '';\n }\n }\n return '';\n}\n\nexport function isGithubHref(href?: string): boolean {\n try {\n const temp: URL = new URL(href ?? '');\n return temp.hostname === 'github.com';\n } catch {\n return false;\n }\n}\n\nexport function isRawGithubHref(href: string = ''): boolean {\n try {\n const temp: URL = new URL(href);\n return temp.hostname === RAW_GITHUB_HOSTNAME;\n } catch {\n return false;\n }\n}\n\nexport function renderVideoElements(html: string): string {\n const ytLongEmbed =\n /!\\[(?:(?:https?:)?(?:\\/\\/)?)(?:(?:www)?.)?youtube.(?:.+?)\\/(?:(?:embed\\/)([\\w-]{11})(\\?[\\w%;-]+(?:=[\\w%;-]+)?(?:&[\\w%;-]+(?:=[\\w%;-]+)?)*)?)]/gi;\n const ytLongWatch =\n /!\\[(?:(?:https?:)?(?:\\/\\/)?)(?:(?:www)?.)?youtube.(?:.+?)\\/(?:(?:watch\\?v=)([\\w-]{11})(&[\\w%;-]+(?:=[\\w%;-]+)?)*)]/gi;\n const ytShort =\n /!\\[(?:(?:https?:)?(?:\\/\\/)?)?youtu.be\\/([\\w-]{11})\\??([\\w%;-]+(?:=[\\w%;-]+)?(?:&[\\w%;-]+(?:=[\\w%;-]+)?)*)?]/gi;\n const ytPlaylist =\n /!\\[(?:(?:https?:)?(?:\\/\\/)?)(?:(?:www)?.)?youtube.(?:.+?)\\/(?:(?:playlist\\?list=)([\\w-]{34})(&[\\w%;-]+(?:=[\\w%;-]+)?)*)]/gi;\n\n function convert(match: string, id: string, flags: string): string {\n if (flags) {\n id += '?' + flags.replace(/&amp;/gi, '&');\n }\n return `<iframe allow=\"fullscreen\" frameborder=\"0\" src=\"https://www.youtube.com/embed/${id}\"></iframe>`;\n }\n function convertPL(match: string, id: string, flags: string): string {\n if (flags) {\n id += flags.replace(/&amp;/gi, '&');\n }\n return `<iframe allow=\"fullscreen\" frameborder=\"0\" src=\"https://www.youtube.com/embed/videoseries?list=${id}\"></iframe>`;\n }\n\n return html\n .replace(ytLongWatch, convert)\n .replace(ytLongEmbed, convert)\n .replace(ytShort, convert)\n .replace(ytPlaylist, convertPL);\n}\n","import {\n Component,\n AfterViewInit,\n ElementRef,\n Input,\n Output,\n EventEmitter,\n Renderer2,\n SecurityContext,\n OnChanges,\n SimpleChanges,\n HostBinding,\n NgZone,\n OnDestroy,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport {\n scrollToAnchor,\n genHeadingId,\n isAnchorLink,\n removeTrailingHash,\n rawGithubHref,\n isGithubHref,\n isRawGithubHref,\n renderVideoElements,\n} from './markdown-utils/markdown-utils';\n\nimport * as showdown from 'showdown';\n\n// TODO: assumes it is a github url\n// allow override somehow\nfunction generateAbsoluteHref(\n currentHref: string,\n relativeHref: string\n): string {\n if (currentHref && relativeHref) {\n const currentUrl: URL = new URL(currentHref);\n const path: string = currentUrl.pathname.split('/').slice(1, -1).join('/');\n const correctUrl: URL = new URL(currentHref);\n\n if (relativeHref.startsWith('/')) {\n // url is relative to top level\n const orgAndRepo: string = path.split('/').slice(0, 3).join('/');\n correctUrl.pathname = `${orgAndRepo}${relativeHref}`;\n } else {\n correctUrl.pathname = `${path}/${relativeHref}`;\n }\n return correctUrl.href;\n }\n return '';\n}\n\nfunction normalizeHtmlHrefs(html: string, currentHref: string): string {\n if (currentHref) {\n const document: Document = new DOMParser().parseFromString(\n html,\n 'text/html'\n );\n document\n .querySelectorAll<HTMLAnchorElement>('a[href]')\n .forEach((link: HTMLAnchorElement) => {\n const url: URL = new URL(link.href);\n const originalHash: string = url.hash;\n if (isAnchorLink(link)) {\n if (originalHash) {\n url.hash = genHeadingId(originalHash);\n link.href = url.hash;\n }\n } else if (url.host === window.location.host) {\n // hosts match, meaning URL MIGHT have been malformed by showdown\n // url is a relative url or just a link to a part of the application\n if (url.pathname.endsWith('.md')) {\n // only check .md urls\n\n const hrefWithoutHash: string = removeTrailingHash(\n link.getAttribute('href')\n );\n\n url.href = generateAbsoluteHref(currentHref, hrefWithoutHash);\n\n if (originalHash) {\n url.hash = genHeadingId(originalHash);\n }\n link.href = url.href;\n }\n link.target = '_blank';\n } else {\n // url is absolute\n if (url.pathname.endsWith('.md')) {\n if (originalHash) {\n url.hash = genHeadingId(originalHash);\n }\n link.href = url.href;\n }\n link.target = '_blank';\n }\n });\n\n return new XMLSerializer().serializeToString(document);\n }\n return html;\n}\n\nfunction normalizeImageSrcs(html: string, currentHref: string): string {\n if (currentHref) {\n const document: Document = new DOMParser().parseFromString(\n html,\n 'text/html'\n );\n document\n .querySelectorAll<HTMLImageElement>('img[src]')\n .forEach((image: HTMLImageElement) => {\n const src = image.getAttribute('src') ?? '';\n try {\n /* tslint:disable-next-line:no-unused-expression */\n new URL(src);\n if (isGithubHref(src)) {\n image.src = rawGithubHref(src);\n }\n } catch {\n image.src = generateAbsoluteHref(\n isGithubHref(currentHref)\n ? rawGithubHref(currentHref)\n : currentHref,\n src\n );\n }\n // gh svgs need to have ?sanitize=true\n if (isRawGithubHref(image.src)) {\n const url: URL = new URL(image.src);\n if (url.pathname.endsWith('.svg')) {\n url.searchParams.set('sanitize', 'true');\n image.src = url.href;\n }\n }\n });\n\n return new XMLSerializer().serializeToString(document);\n }\n return html;\n}\n\nfunction addIdsToHeadings(html: string): string {\n if (html) {\n const document: Document = new DOMParser().parseFromString(\n html,\n 'text/html'\n );\n document\n .querySelectorAll('h1, h2, h3, h4, h5, h6')\n .forEach((heading: Element) => {\n const id: string = genHeadingId(heading.innerHTML);\n heading.setAttribute('id', id);\n });\n return new XMLSerializer().serializeToString(document);\n }\n return html;\n}\n\n@Component({\n selector: 'td-markdown',\n styleUrls: ['./markdown.component.scss'],\n templateUrl: './markdown.component.html',\n})\nexport class TdMarkdownComponent\n implements OnChanges, AfterViewInit, OnDestroy\n{\n private _content!: string;\n private _simpleLineBreaks = false;\n private _hostedUrl!: string;\n private _anchor!: string;\n private _viewInit = false;\n private _anchorListener?: VoidFunction;\n /**\n * .td-markdown class added to host so ::ng-deep gets scoped.\n */\n @HostBinding('class') class = 'td-markdown';\n\n /**\n * content?: string\n *\n * Markdown format content to be parsed as html 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 * contentReady?: function\n * Event emitted after the markdown content rendering is finished.\n */\n @Output() contentReady: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n private _renderer: Renderer2,\n private _elementRef: ElementRef,\n private _domSanitizer: DomSanitizer,\n private _ngZone: NgZone\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, true);\n } else {\n this.refresh();\n }\n }\n\n ngAfterViewInit(): void {\n if (!this._content) {\n this._loadContent(\n (<HTMLElement>this._elementRef.nativeElement).textContent\n );\n }\n this._viewInit = true;\n\n // Caretaker note: the `scrollToAnchor` calls `element.scrollIntoView`, a native synchronous DOM\n // API and it doesn't require Angular running `ApplicationRef.tick()` each time the markdown component is clicked.\n // Host listener (added through `@HostListener`) cause Angular to add an event listener within the Angular zone.\n // It also calls `markViewDirty()` before calling the actual listener (the decorated class method).\n this._ngZone.runOutsideAngular(() => {\n this._anchorListener = this._renderer.listen(\n this._elementRef.nativeElement,\n 'click',\n (event: MouseEvent) => {\n const element: HTMLElement = <HTMLElement>event.srcElement;\n if (\n element.matches('a[href]') &&\n isAnchorLink(<HTMLAnchorElement>element)\n ) {\n this.handleAnchorClicks(event);\n }\n }\n );\n });\n }\n\n ngOnDestroy(): void {\n this._anchorListener?.();\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._elementRef.nativeElement).textContent\n );\n }\n }\n\n /**\n * General method to parse a string markdown into HTML Elements and load them into the container\n */\n private _loadContent(markdown: string | null): void {\n if (markdown && markdown.trim().length > 0) {\n // Clean container\n this._renderer.setProperty(\n this._elementRef.nativeElement,\n 'innerHTML',\n ''\n );\n // Parse html string into actual HTML elements.\n this._elementFromString(this._render(markdown));\n }\n // TODO: timeout required since resizing of html elements occurs which causes a change in the scroll position\n this._ngZone.runOutsideAngular(() =>\n setTimeout(\n () =>\n scrollToAnchor(this._elementRef.nativeElement, this._anchor, true),\n 250\n )\n );\n this.contentReady.emit();\n }\n\n private handleAnchorClicks(event: Event): void {\n event.preventDefault();\n const url: URL = new URL((<HTMLAnchorElement>event.target).href);\n const hash: string = decodeURI(url.hash);\n scrollToAnchor(this._elementRef.nativeElement, hash, true);\n }\n\n private _elementFromString(markupStr: string): HTMLDivElement {\n // Renderer2 doesnt have a parsing method, so we have to sanitize and use [innerHTML]\n // to parse the string into DOM element for now.\n const div: HTMLDivElement = this._renderer.createElement('div');\n this._renderer.appendChild(this._elementRef.nativeElement, div);\n const html: string =\n this._domSanitizer.sanitize(SecurityContext.HTML, markupStr) ?? '';\n const htmlWithAbsoluteHrefs: string = normalizeHtmlHrefs(\n html,\n this._hostedUrl\n );\n const htmlWithAbsoluteImgSrcs: string = normalizeImageSrcs(\n htmlWithAbsoluteHrefs,\n this._hostedUrl\n );\n const htmlWithHeadingIds: string = addIdsToHeadings(\n htmlWithAbsoluteImgSrcs\n );\n const htmlWithVideos: SafeHtml = renderVideoElements(htmlWithHeadingIds);\n this._renderer.setProperty(div, 'innerHTML', htmlWithVideos);\n return div;\n }\n\n private _render(markdown: string): string {\n // Trim leading and trailing newlines\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: string = firstLineWhitespaceMatch\n ? firstLineWhitespaceMatch[0]\n : '';\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 const markdownToParse: string = lines.join('\\n');\n\n // Convert markdown into html\n const converter: showdown.Converter = new showdown.Converter();\n converter.setOption('ghCodeBlocks', true);\n converter.setOption('tasklists', true);\n converter.setOption('tables', true);\n converter.setOption('literalMidWordUnderscores', true);\n converter.setOption('simpleLineBreaks', this._simpleLineBreaks);\n converter.setOption('emoji', true);\n return converter.makeHtml(markdownToParse);\n }\n}\n","<ng-content></ng-content>\n","import { Injectable, SecurityContext } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { HttpClient, HttpResponse } from '@angular/common/http';\nimport { isGithubHref, rawGithubHref } from '../markdown-utils/markdown-utils';\n\n@Injectable()\nexport class TdMarkdownLoaderService {\n constructor(private _http: HttpClient, private _sanitizer: DomSanitizer) {}\n\n async load(url: string, httpOptions: object = {}): Promise<string> {\n const sanitizedUrl: string =\n this._sanitizer.sanitize(SecurityContext.URL, url) ?? '';\n let urlToGet: string = sanitizedUrl;\n if (isGithubHref(sanitizedUrl)) {\n urlToGet = rawGithubHref(sanitizedUrl);\n }\n\n const response: HttpResponse<string> | undefined = await this._http\n .get(urlToGet, {\n ...httpOptions,\n responseType: 'text',\n observe: 'response',\n })\n .toPromise();\n const contentType: string = response?.headers.get('Content-Type') ?? '';\n if (\n contentType.includes('text/plain') ||\n contentType.includes('text/markdown')\n ) {\n return response?.body ?? '';\n } else {\n throw Error(`${contentType} is not a handled content type`);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { HttpClientModule } from '@angular/common/http';\n\nimport { TdMarkdownComponent } from './markdown.component';\nimport { TdMarkdownLoaderService } from './markdown-loader/markdown-loader.service';\n\n@NgModule({\n imports: [CommonModule, HttpClientModule],\n declarations: [TdMarkdownComponent],\n exports: [TdMarkdownComponent],\n providers: [TdMarkdownLoaderService],\n})\nexport class CovalentMarkdownModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"covalent-markdown.mjs","sources":["../../../../libs/markdown/src/lib/markdown-utils/markdown-utils.ts","../../../../libs/markdown/src/lib/markdown.component.ts","../../../../libs/markdown/src/lib/markdown.component.html","../../../../libs/markdown/src/lib/markdown-loader/markdown-loader.service.ts","../../../../libs/markdown/src/lib/markdown.module.ts","../../../../libs/markdown/src/covalent-markdown.ts"],"sourcesContent":["export function removeLeadingHash(str: string): string {\n if (str) {\n return str.replace(/^#+/, '');\n }\n return '';\n}\n\nexport function removeTrailingHash(str: string | null): string {\n if (str) {\n return str.replace(/#.*/, '');\n }\n return '';\n}\n\nexport function genHeadingId(str: string): string {\n if (str) {\n return removeLeadingHash(\n str\n .replace(/(_|-|\\s)+/g, '')\n // Remove certain special chars to create heading ids similar to those in github\n // borrowed from showdown\n // https://github.com/showdownjs/showdown/blob/main/src/subParsers/makehtml/headers.js#L94\n .replace(/[&+$,/:;=?@\"#{}|^¨~[\\]`\\\\*)(%.!'<>]/g, '')\n ).toLowerCase();\n }\n return '';\n}\n\nexport function scrollToAnchor(\n scope: HTMLElement,\n anchor: string,\n tryParent: boolean\n): boolean {\n if (scope && anchor) {\n const normalizedAnchor: string = genHeadingId(anchor);\n let headingToJumpTo: Element | null = null;\n const headingWithinComponent = scope.querySelector(\n `[id=\"${normalizedAnchor}\"]`\n );\n\n if (headingWithinComponent) {\n headingToJumpTo = headingWithinComponent;\n } else if (tryParent) {\n const parent = scope.parentElement;\n if (parent) {\n headingToJumpTo = parent.querySelector(`[id=\"${normalizedAnchor}\"]`);\n }\n }\n if (headingToJumpTo) {\n headingToJumpTo.scrollIntoView({ behavior: 'auto' });\n return true;\n }\n }\n return false;\n}\n\nexport function isAnchorLink(anchor?: HTMLAnchorElement): boolean {\n if (anchor) {\n const href = anchor.getAttribute('href');\n if (href) {\n return href.startsWith('#');\n }\n }\n return false;\n}\nconst RAW_GITHUB_HOSTNAME = 'raw.githubusercontent.com';\n\nexport function rawGithubHref(githubHref?: string): string {\n if (githubHref) {\n try {\n const url: URL = new URL(githubHref);\n if (url.hostname === RAW_GITHUB_HOSTNAME) {\n return url.href;\n } else if (isGithubHref(githubHref)) {\n url.hostname = RAW_GITHUB_HOSTNAME;\n url.pathname = url.pathname.split('/blob', 2).join('');\n return url.href;\n }\n } catch {\n return '';\n }\n }\n return '';\n}\n\nexport function isGithubHref(href?: string): boolean {\n try {\n const temp: URL = new URL(href ?? '');\n return temp.hostname === 'github.com';\n } catch {\n return false;\n }\n}\n\nexport function isRawGithubHref(href: string = ''): boolean {\n try {\n const temp: URL = new URL(href);\n return temp.hostname === RAW_GITHUB_HOSTNAME;\n } catch {\n return false;\n }\n}\n\nexport function renderVideoElements(html: string): string {\n const ytLongEmbed =\n /!\\[(?:(?:https?:)?(?:\\/\\/)?)(?:(?:www)?.)?youtube.(?:.+?)\\/(?:(?:embed\\/)([\\w-]{11})(\\?[\\w%;-]+(?:=[\\w%;-]+)?(?:&[\\w%;-]+(?:=[\\w%;-]+)?)*)?)]/gi;\n const ytLongWatch =\n /!\\[(?:(?:https?:)?(?:\\/\\/)?)(?:(?:www)?.)?youtube.(?:.+?)\\/(?:(?:watch\\?v=)([\\w-]{11})(&[\\w%;-]+(?:=[\\w%;-]+)?)*)]/gi;\n const ytShort =\n /!\\[(?:(?:https?:)?(?:\\/\\/)?)?youtu.be\\/([\\w-]{11})\\??([\\w%;-]+(?:=[\\w%;-]+)?(?:&[\\w%;-]+(?:=[\\w%;-]+)?)*)?]/gi;\n const ytPlaylist =\n /!\\[(?:(?:https?:)?(?:\\/\\/)?)(?:(?:www)?.)?youtube.(?:.+?)\\/(?:(?:playlist\\?list=)([\\w-]{34})(&[\\w%;-]+(?:=[\\w%;-]+)?)*)]/gi;\n\n function convert(match: string, id: string, flags: string): string {\n if (flags) {\n id += '?' + flags.replace(/&amp;/gi, '&');\n }\n return `<iframe allow=\"fullscreen\" frameborder=\"0\" src=\"https://www.youtube.com/embed/${id}\"></iframe>`;\n }\n function convertPL(match: string, id: string, flags: string): string {\n if (flags) {\n id += flags.replace(/&amp;/gi, '&');\n }\n return `<iframe allow=\"fullscreen\" frameborder=\"0\" src=\"https://www.youtube.com/embed/videoseries?list=${id}\"></iframe>`;\n }\n\n return html\n .replace(ytLongWatch, convert)\n .replace(ytLongEmbed, convert)\n .replace(ytShort, convert)\n .replace(ytPlaylist, convertPL);\n}\n","import {\n Component,\n AfterViewInit,\n ElementRef,\n Input,\n Output,\n EventEmitter,\n Renderer2,\n SecurityContext,\n OnChanges,\n SimpleChanges,\n HostBinding,\n NgZone,\n OnDestroy,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport {\n scrollToAnchor,\n genHeadingId,\n isAnchorLink,\n removeTrailingHash,\n rawGithubHref,\n isGithubHref,\n isRawGithubHref,\n renderVideoElements,\n} from './markdown-utils/markdown-utils';\n\nimport * as showdown from 'showdown';\n\nfunction isAbsoluteUrl(currentHref: string): boolean {\n // Regular Expression to check url\n const RgExp = new RegExp('^(?:[a-z]+:)?//', 'i');\n return RgExp.test(currentHref);\n}\n\n// TODO: assumes it is a github url\n// handles absolute and relative URLs\nfunction generateHref(currentHref: string, relativeHref: string): string {\n if (currentHref && relativeHref) {\n if (isAbsoluteUrl(currentHref)) {\n const currentUrl: URL = new URL(currentHref);\n const path: string = currentUrl.pathname\n .split('/')\n .slice(1, -1)\n .join('/');\n const correctUrl: URL = new URL(currentHref);\n\n if (relativeHref.startsWith('/')) {\n // url is relative to top level\n const orgAndRepo: string = path.split('/').slice(0, 3).join('/');\n correctUrl.pathname = `${orgAndRepo}${relativeHref}`;\n } else {\n correctUrl.pathname = `${path}/${relativeHref}`;\n }\n return correctUrl.href;\n } else {\n const path: string = currentHref.split('/').slice(0, -1).join('/');\n\n if (relativeHref.startsWith('/')) {\n return `${path}${relativeHref}`;\n } else {\n return `${path}/${relativeHref}`;\n }\n }\n }\n return '';\n}\n\nfunction normalizeHtmlHrefs(html: string, currentHref: string): string {\n if (currentHref) {\n const document: Document = new DOMParser().parseFromString(\n html,\n 'text/html'\n );\n document\n .querySelectorAll<HTMLAnchorElement>('a[href]')\n .forEach((link: HTMLAnchorElement) => {\n const url: URL = new URL(link.href);\n const originalHash: string = url.hash;\n if (isAnchorLink(link)) {\n if (originalHash) {\n url.hash = genHeadingId(originalHash);\n link.href = url.hash;\n }\n } else if (url.host === window.location.host) {\n // hosts match, meaning URL MIGHT have been malformed by showdown\n // url is a relative url or just a link to a part of the application\n if (url.pathname.endsWith('.md')) {\n // only check .md urls\n\n const hrefWithoutHash: string = removeTrailingHash(\n link.getAttribute('href')\n );\n // since this might be a relative path, don't assign it to url.href\n // relative path won't be a valid href to assign to URL\n const newHref = generateHref(currentHref, hrefWithoutHash);\n\n if (originalHash) {\n url.hash = genHeadingId(originalHash);\n }\n link.href = newHref;\n }\n link.target = '_blank';\n } else {\n // url is absolute\n if (url.pathname.endsWith('.md')) {\n if (originalHash) {\n url.hash = genHeadingId(originalHash);\n }\n link.href = url.href;\n }\n link.target = '_blank';\n }\n });\n\n return new XMLSerializer().serializeToString(document);\n }\n return html;\n}\n\nfunction normalizeImageSrcs(html: string, currentHref: string): string {\n if (currentHref) {\n const document: Document = new DOMParser().parseFromString(\n html,\n 'text/html'\n );\n document\n .querySelectorAll<HTMLImageElement>('img[src]')\n .forEach((image: HTMLImageElement) => {\n const src = image.getAttribute('src') ?? '';\n try {\n /* tslint:disable-next-line:no-unused-expression */\n new URL(src);\n if (isGithubHref(src)) {\n image.src = rawGithubHref(src);\n }\n } catch {\n image.src = generateHref(\n isGithubHref(currentHref)\n ? rawGithubHref(currentHref)\n : currentHref,\n src\n );\n }\n // gh svgs need to have ?sanitize=true\n if (isRawGithubHref(image.src)) {\n const url: URL = new URL(image.src);\n if (url.pathname.endsWith('.svg')) {\n url.searchParams.set('sanitize', 'true');\n image.src = url.href;\n }\n }\n });\n\n return new XMLSerializer().serializeToString(document);\n }\n return html;\n}\n\nfunction addIdsToHeadings(html: string): string {\n if (html) {\n const document: Document = new DOMParser().parseFromString(\n html,\n 'text/html'\n );\n document\n .querySelectorAll('h1, h2, h3, h4, h5, h6')\n .forEach((heading: Element) => {\n const id: string = genHeadingId(heading.innerHTML);\n heading.setAttribute('id', id);\n });\n return new XMLSerializer().serializeToString(document);\n }\n return html;\n}\n\n@Component({\n selector: 'td-markdown',\n styleUrls: ['./markdown.component.scss'],\n templateUrl: './markdown.component.html',\n})\nexport class TdMarkdownComponent\n implements OnChanges, AfterViewInit, OnDestroy\n{\n private _content!: string;\n private _simpleLineBreaks = false;\n private _hostedUrl!: string;\n private _anchor!: string;\n private _viewInit = false;\n private _anchorListener?: VoidFunction;\n /**\n * .td-markdown class added to host so ::ng-deep gets scoped.\n */\n @HostBinding('class') class = 'td-markdown';\n\n /**\n * content?: string\n *\n * Markdown format content to be parsed as html 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 * contentReady?: function\n * Event emitted after the markdown content rendering is finished.\n */\n @Output() contentReady: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n private _renderer: Renderer2,\n private _elementRef: ElementRef,\n private _domSanitizer: DomSanitizer,\n private _ngZone: NgZone\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, true);\n } else {\n this.refresh();\n }\n }\n\n ngAfterViewInit(): void {\n if (!this._content) {\n this._loadContent(\n (<HTMLElement>this._elementRef.nativeElement).textContent\n );\n }\n this._viewInit = true;\n\n // Caretaker note: the `scrollToAnchor` calls `element.scrollIntoView`, a native synchronous DOM\n // API and it doesn't require Angular running `ApplicationRef.tick()` each time the markdown component is clicked.\n // Host listener (added through `@HostListener`) cause Angular to add an event listener within the Angular zone.\n // It also calls `markViewDirty()` before calling the actual listener (the decorated class method).\n this._ngZone.runOutsideAngular(() => {\n this._anchorListener = this._renderer.listen(\n this._elementRef.nativeElement,\n 'click',\n (event: MouseEvent) => {\n const element: HTMLElement = <HTMLElement>event.srcElement;\n if (\n element.matches('a[href]') &&\n isAnchorLink(<HTMLAnchorElement>element)\n ) {\n this.handleAnchorClicks(event);\n }\n }\n );\n });\n }\n\n ngOnDestroy(): void {\n this._anchorListener?.();\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._elementRef.nativeElement).textContent\n );\n }\n }\n\n /**\n * General method to parse a string markdown into HTML Elements and load them into the container\n */\n private _loadContent(markdown: string | null): void {\n if (markdown && markdown.trim().length > 0) {\n // Clean container\n this._renderer.setProperty(\n this._elementRef.nativeElement,\n 'innerHTML',\n ''\n );\n // Parse html string into actual HTML elements.\n this._elementFromString(this._render(markdown));\n }\n // TODO: timeout required since resizing of html elements occurs which causes a change in the scroll position\n this._ngZone.runOutsideAngular(() =>\n setTimeout(\n () =>\n scrollToAnchor(this._elementRef.nativeElement, this._anchor, true),\n 250\n )\n );\n this.contentReady.emit();\n }\n\n private handleAnchorClicks(event: Event): void {\n event.preventDefault();\n const url: URL = new URL((<HTMLAnchorElement>event.target).href);\n const hash: string = decodeURI(url.hash);\n scrollToAnchor(this._elementRef.nativeElement, hash, true);\n }\n\n private _elementFromString(markupStr: string): HTMLDivElement {\n // Renderer2 doesnt have a parsing method, so we have to sanitize and use [innerHTML]\n // to parse the string into DOM element for now.\n const div: HTMLDivElement = this._renderer.createElement('div');\n this._renderer.appendChild(this._elementRef.nativeElement, div);\n const html: string =\n this._domSanitizer.sanitize(SecurityContext.HTML, markupStr) ?? '';\n const htmlWithAbsoluteHrefs: string = normalizeHtmlHrefs(\n html,\n this._hostedUrl\n );\n const htmlWithAbsoluteImgSrcs: string = normalizeImageSrcs(\n htmlWithAbsoluteHrefs,\n this._hostedUrl\n );\n const htmlWithHeadingIds: string = addIdsToHeadings(\n htmlWithAbsoluteImgSrcs\n );\n const htmlWithVideos: SafeHtml = renderVideoElements(htmlWithHeadingIds);\n this._renderer.setProperty(div, 'innerHTML', htmlWithVideos);\n return div;\n }\n\n private _render(markdown: string): string {\n // Trim leading and trailing newlines\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: string = firstLineWhitespaceMatch\n ? firstLineWhitespaceMatch[0]\n : '';\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 const markdownToParse: string = lines.join('\\n');\n\n // Convert markdown into html\n const converter: showdown.Converter = new showdown.Converter();\n converter.setOption('ghCodeBlocks', true);\n converter.setOption('tasklists', true);\n converter.setOption('tables', true);\n converter.setOption('literalMidWordUnderscores', true);\n converter.setOption('simpleLineBreaks', this._simpleLineBreaks);\n converter.setOption('emoji', true);\n return converter.makeHtml(markdownToParse);\n }\n}\n","<ng-content></ng-content>\n","import { Injectable, SecurityContext } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { HttpClient, HttpResponse } from '@angular/common/http';\nimport { isGithubHref, rawGithubHref } from '../markdown-utils/markdown-utils';\n\n@Injectable()\nexport class TdMarkdownLoaderService {\n constructor(private _http: HttpClient, private _sanitizer: DomSanitizer) {}\n\n async load(url: string, httpOptions: object = {}): Promise<string> {\n const sanitizedUrl: string =\n this._sanitizer.sanitize(SecurityContext.URL, url) ?? '';\n let urlToGet: string = sanitizedUrl;\n if (isGithubHref(sanitizedUrl)) {\n urlToGet = rawGithubHref(sanitizedUrl);\n }\n\n const response: HttpResponse<string> | undefined = await this._http\n .get(urlToGet, {\n ...httpOptions,\n responseType: 'text',\n observe: 'response',\n })\n .toPromise();\n const contentType: string = response?.headers.get('Content-Type') ?? '';\n if (\n contentType.includes('text/plain') ||\n contentType.includes('text/markdown')\n ) {\n return response?.body ?? '';\n } else {\n throw Error(`${contentType} is not a handled content type`);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { HttpClientModule } from '@angular/common/http';\n\nimport { TdMarkdownComponent } from './markdown.component';\nimport { TdMarkdownLoaderService } from './markdown-loader/markdown-loader.service';\n\n@NgModule({\n imports: [CommonModule, HttpClientModule],\n declarations: [TdMarkdownComponent],\n exports: [TdMarkdownComponent],\n providers: [TdMarkdownLoaderService],\n})\nexport class CovalentMarkdownModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@covalent/markdown",
3
- "version": "6.3.0",
3
+ "version": "6.4.1",
4
4
  "description": "Teradata UI Platform Markdown Module",
5
5
  "keywords": [
6
6
  "angular",
@@ -19,9 +19,9 @@
19
19
  "author": "Teradata UX",
20
20
  "peerDependencies": {
21
21
  "showdown": "^2.0.3",
22
- "@angular/common": "^15.2.5",
23
- "@angular/core": "^15.2.5",
24
- "@angular/platform-browser": "^15.2.5"
22
+ "@angular/common": "^15.2.10",
23
+ "@angular/core": "^15.2.10",
24
+ "@angular/platform-browser": "^15.2.10"
25
25
  },
26
26
  "dependencies": {
27
27
  "tslib": "^2.0.0"