@covalent/markdown 4.0.0 → 4.1.0-develop.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +20 -20
  2. package/_markdown-theme.scss +13 -1
  3. package/covalent-markdown.d.ts +2 -1
  4. package/esm2020/covalent-markdown.mjs +5 -0
  5. package/esm2020/lib/markdown-loader/markdown-loader.service.mjs +41 -0
  6. package/esm2020/lib/markdown-utils/markdown-utils.mjs +115 -0
  7. package/esm2020/lib/markdown.component.mjs +292 -0
  8. package/esm2020/lib/markdown.module.mjs +21 -0
  9. package/esm2020/public_api.mjs +5 -0
  10. package/fesm2015/covalent-markdown.mjs +467 -0
  11. package/fesm2015/covalent-markdown.mjs.map +1 -0
  12. package/fesm2020/covalent-markdown.mjs +464 -0
  13. package/fesm2020/covalent-markdown.mjs.map +1 -0
  14. package/{markdown-loader → lib/markdown-loader}/markdown-loader.service.d.ts +3 -0
  15. package/lib/markdown-utils/markdown-utils.d.ts +9 -0
  16. package/{markdown.component.d.ts → lib/markdown.component.d.ts} +9 -4
  17. package/lib/markdown.module.d.ts +9 -0
  18. package/package.json +28 -24
  19. package/public_api.d.ts +4 -4
  20. package/bundles/covalent-markdown.umd.js +0 -1055
  21. package/bundles/covalent-markdown.umd.js.map +0 -1
  22. package/bundles/covalent-markdown.umd.min.js +0 -16
  23. package/bundles/covalent-markdown.umd.min.js.map +0 -1
  24. package/covalent-markdown.metadata.json +0 -1
  25. package/esm2015/covalent-markdown.js +0 -10
  26. package/esm2015/index.js +0 -7
  27. package/esm2015/markdown-loader/markdown-loader.service.js +0 -69
  28. package/esm2015/markdown-utils/markdown-utils.js +0 -183
  29. package/esm2015/markdown.component.js +0 -439
  30. package/esm2015/markdown.module.js +0 -21
  31. package/esm2015/public_api.js +0 -10
  32. package/fesm2015/covalent-markdown.js +0 -724
  33. package/fesm2015/covalent-markdown.js.map +0 -1
  34. package/index.d.ts +0 -1
  35. package/markdown-utils/markdown-utils.d.ts +0 -9
  36. package/markdown.component.scss +0 -641
  37. package/markdown.module.d.ts +0 -2
@@ -1,439 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * Generated from: markdown.component.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
- */
6
- import { __awaiter } from "tslib";
7
- import { Component, ElementRef, Input, Output, EventEmitter, Renderer2, SecurityContext, HostBinding, HostListener, } from '@angular/core';
8
- import { DomSanitizer } from '@angular/platform-browser';
9
- import { scrollToAnchor, genHeadingId, isAnchorLink, removeTrailingHash, rawGithubHref, isGithubHref, isRawGithubHref, renderVideoElements, } from './markdown-utils/markdown-utils';
10
- /* tslint:disable-next-line */
11
- /** @type {?} */
12
- let showdown = require('showdown/dist/showdown.js');
13
- // TODO: assumes it is a github url
14
- // allow override somehow
15
- /**
16
- * @param {?} currentHref
17
- * @param {?} relativeHref
18
- * @return {?}
19
- */
20
- function generateAbsoluteHref(currentHref, relativeHref) {
21
- if (currentHref && relativeHref) {
22
- /** @type {?} */
23
- const currentUrl = new URL(currentHref);
24
- /** @type {?} */
25
- const path = currentUrl.pathname.split('/').slice(1, -1).join('/');
26
- /** @type {?} */
27
- const correctUrl = new URL(currentHref);
28
- if (relativeHref.startsWith('/')) {
29
- // url is relative to top level
30
- /** @type {?} */
31
- const orgAndRepo = path.split('/').slice(0, 3).join('/');
32
- correctUrl.pathname = `${orgAndRepo}${relativeHref}`;
33
- }
34
- else {
35
- correctUrl.pathname = `${path}/${relativeHref}`;
36
- }
37
- return correctUrl.href;
38
- }
39
- return undefined;
40
- }
41
- /**
42
- * @param {?} html
43
- * @param {?} currentHref
44
- * @return {?}
45
- */
46
- function normalizeHtmlHrefs(html, currentHref) {
47
- if (currentHref) {
48
- /** @type {?} */
49
- const document = new DOMParser().parseFromString(html, 'text/html');
50
- document.querySelectorAll('a[href]').forEach((/**
51
- * @param {?} link
52
- * @return {?}
53
- */
54
- (link) => {
55
- /** @type {?} */
56
- const url = new URL(link.href);
57
- /** @type {?} */
58
- const originalHash = url.hash;
59
- if (isAnchorLink(link)) {
60
- if (originalHash) {
61
- url.hash = genHeadingId(originalHash);
62
- link.href = url.hash;
63
- }
64
- }
65
- else if (url.host === window.location.host) {
66
- // hosts match, meaning URL MIGHT have been malformed by showdown
67
- // url is a relative url or just a link to a part of the application
68
- if (url.pathname.endsWith('.md')) {
69
- // only check .md urls
70
- /** @type {?} */
71
- const hrefWithoutHash = removeTrailingHash(link.getAttribute('href'));
72
- url.href = generateAbsoluteHref(currentHref, hrefWithoutHash);
73
- if (originalHash) {
74
- url.hash = genHeadingId(originalHash);
75
- }
76
- link.href = url.href;
77
- }
78
- link.target = '_blank';
79
- }
80
- else {
81
- // url is absolute
82
- if (url.pathname.endsWith('.md')) {
83
- if (originalHash) {
84
- url.hash = genHeadingId(originalHash);
85
- }
86
- link.href = url.href;
87
- }
88
- link.target = '_blank';
89
- }
90
- }));
91
- return new XMLSerializer().serializeToString(document);
92
- }
93
- return html;
94
- }
95
- /**
96
- * @param {?} html
97
- * @param {?} currentHref
98
- * @return {?}
99
- */
100
- function normalizeImageSrcs(html, currentHref) {
101
- if (currentHref) {
102
- /** @type {?} */
103
- const document = new DOMParser().parseFromString(html, 'text/html');
104
- document.querySelectorAll('img[src]').forEach((/**
105
- * @param {?} image
106
- * @return {?}
107
- */
108
- (image) => {
109
- /** @type {?} */
110
- const src = image.getAttribute('src');
111
- try {
112
- /* tslint:disable-next-line:no-unused-expression */
113
- new URL(src);
114
- if (isGithubHref(src)) {
115
- image.src = rawGithubHref(src);
116
- }
117
- }
118
- catch (_a) {
119
- image.src = generateAbsoluteHref(isGithubHref(currentHref) ? rawGithubHref(currentHref) : currentHref, src);
120
- }
121
- // gh svgs need to have ?sanitize=true
122
- if (isRawGithubHref(image.src)) {
123
- /** @type {?} */
124
- const url = new URL(image.src);
125
- if (url.pathname.endsWith('.svg')) {
126
- url.searchParams.set('sanitize', 'true');
127
- image.src = url.href;
128
- }
129
- }
130
- }));
131
- return new XMLSerializer().serializeToString(document);
132
- }
133
- return html;
134
- }
135
- /**
136
- * @param {?} html
137
- * @return {?}
138
- */
139
- function addIdsToHeadings(html) {
140
- if (html) {
141
- /** @type {?} */
142
- const document = new DOMParser().parseFromString(html, 'text/html');
143
- document.querySelectorAll('h1, h2, h3, h4, h5, h6').forEach((/**
144
- * @param {?} heading
145
- * @return {?}
146
- */
147
- (heading) => {
148
- /** @type {?} */
149
- const id = genHeadingId(heading.innerHTML);
150
- heading.setAttribute('id', id);
151
- }));
152
- return new XMLSerializer().serializeToString(document);
153
- }
154
- return html;
155
- }
156
- export class TdMarkdownComponent {
157
- /**
158
- * @param {?} _renderer
159
- * @param {?} _elementRef
160
- * @param {?} _domSanitizer
161
- */
162
- constructor(_renderer, _elementRef, _domSanitizer) {
163
- this._renderer = _renderer;
164
- this._elementRef = _elementRef;
165
- this._domSanitizer = _domSanitizer;
166
- this._simpleLineBreaks = false;
167
- this._viewInit = false;
168
- /**
169
- * .td-markdown class added to host so ::ng-deep gets scoped.
170
- */
171
- this.class = 'td-markdown';
172
- /**
173
- * contentReady?: function
174
- * Event emitted after the markdown content rendering is finished.
175
- */
176
- this.contentReady = new EventEmitter();
177
- }
178
- /**
179
- * content?: string
180
- *
181
- * Markdown format content to be parsed as html markup.
182
- *
183
- * e.g. README.md content.
184
- * @param {?} content
185
- * @return {?}
186
- */
187
- set content(content) {
188
- this._content = content;
189
- }
190
- /**
191
- * simpleLineBreaks?: string
192
- *
193
- * Sets whether newline characters inside paragraphs and spans are parsed as <br/>.
194
- * Defaults to false.
195
- * @param {?} simpleLineBreaks
196
- * @return {?}
197
- */
198
- set simpleLineBreaks(simpleLineBreaks) {
199
- this._simpleLineBreaks = simpleLineBreaks;
200
- }
201
- /**
202
- * hostedUrl?: string
203
- *
204
- * If markdown contains relative paths, this is required to generate correct urls.
205
- *
206
- * @param {?} hostedUrl
207
- * @return {?}
208
- */
209
- set hostedUrl(hostedUrl) {
210
- this._hostedUrl = hostedUrl;
211
- }
212
- /**
213
- * anchor?: string
214
- *
215
- * Anchor to jump to.
216
- *
217
- * @param {?} anchor
218
- * @return {?}
219
- */
220
- set anchor(anchor) {
221
- this._anchor = anchor;
222
- }
223
- /**
224
- * @param {?} event
225
- * @return {?}
226
- */
227
- clickListener(event) {
228
- /** @type {?} */
229
- const element = (/** @type {?} */ (event.srcElement));
230
- if (element.matches('a[href]') && isAnchorLink((/** @type {?} */ (element)))) {
231
- this.handleAnchorClicks(event);
232
- }
233
- }
234
- /**
235
- * @param {?} changes
236
- * @return {?}
237
- */
238
- ngOnChanges(changes) {
239
- // only anchor changed
240
- if (changes.anchor && !changes.content && !changes.simpleLineBreaks && !changes.hostedUrl) {
241
- scrollToAnchor(this._elementRef.nativeElement, this._anchor, true);
242
- }
243
- else {
244
- this.refresh();
245
- }
246
- }
247
- /**
248
- * @return {?}
249
- */
250
- ngAfterViewInit() {
251
- if (!this._content) {
252
- this._loadContent(((/** @type {?} */ (this._elementRef.nativeElement))).textContent);
253
- }
254
- this._viewInit = true;
255
- }
256
- /**
257
- * @return {?}
258
- */
259
- refresh() {
260
- if (this._content) {
261
- this._loadContent(this._content);
262
- }
263
- else if (this._viewInit) {
264
- this._loadContent(((/** @type {?} */ (this._elementRef.nativeElement))).textContent);
265
- }
266
- }
267
- /**
268
- * General method to parse a string markdown into HTML Elements and load them into the container
269
- * @private
270
- * @param {?} markdown
271
- * @return {?}
272
- */
273
- _loadContent(markdown) {
274
- if (markdown && markdown.trim().length > 0) {
275
- // Clean container
276
- this._renderer.setProperty(this._elementRef.nativeElement, 'innerHTML', '');
277
- // Parse html string into actual HTML elements.
278
- this._elementFromString(this._render(markdown));
279
- }
280
- // TODO: timeout required since resizing of html elements occurs which causes a change in the scroll position
281
- setTimeout((/**
282
- * @return {?}
283
- */
284
- () => scrollToAnchor(this._elementRef.nativeElement, this._anchor, true)), 250);
285
- this.contentReady.emit();
286
- }
287
- /**
288
- * @private
289
- * @param {?} event
290
- * @return {?}
291
- */
292
- handleAnchorClicks(event) {
293
- return __awaiter(this, void 0, void 0, function* () {
294
- event.preventDefault();
295
- /** @type {?} */
296
- const url = new URL(((/** @type {?} */ (event.target))).href);
297
- /** @type {?} */
298
- const hash = decodeURI(url.hash);
299
- scrollToAnchor(this._elementRef.nativeElement, hash, true);
300
- });
301
- }
302
- /**
303
- * @private
304
- * @param {?} markupStr
305
- * @return {?}
306
- */
307
- _elementFromString(markupStr) {
308
- // Renderer2 doesnt have a parsing method, so we have to sanitize and use [innerHTML]
309
- // to parse the string into DOM element for now.
310
- /** @type {?} */
311
- const div = this._renderer.createElement('div');
312
- this._renderer.appendChild(this._elementRef.nativeElement, div);
313
- /** @type {?} */
314
- const html = this._domSanitizer.sanitize(SecurityContext.HTML, markupStr);
315
- /** @type {?} */
316
- const htmlWithAbsoluteHrefs = normalizeHtmlHrefs(html, this._hostedUrl);
317
- /** @type {?} */
318
- const htmlWithAbsoluteImgSrcs = normalizeImageSrcs(htmlWithAbsoluteHrefs, this._hostedUrl);
319
- /** @type {?} */
320
- const htmlWithHeadingIds = addIdsToHeadings(htmlWithAbsoluteImgSrcs);
321
- /** @type {?} */
322
- const htmlWithVideos = renderVideoElements(htmlWithHeadingIds);
323
- this._renderer.setProperty(div, 'innerHTML', htmlWithVideos);
324
- return div;
325
- }
326
- /**
327
- * @private
328
- * @param {?} markdown
329
- * @return {?}
330
- */
331
- _render(markdown) {
332
- // Trim leading and trailing newlines
333
- markdown = markdown.replace(/^(\s|\t)*\n+/g, '').replace(/(\s|\t)*\n+(\s|\t)*$/g, '');
334
- // Split markdown by line characters
335
- /** @type {?} */
336
- let lines = markdown.split('\n');
337
- // check how much indentation is used by the first actual markdown line
338
- /** @type {?} */
339
- const firstLineWhitespace = lines[0].match(/^(\s|\t)*/)[0];
340
- // Remove all indentation spaces so markdown can be parsed correctly
341
- /** @type {?} */
342
- const startingWhitespaceRegex = new RegExp('^' + firstLineWhitespace);
343
- lines = lines.map((/**
344
- * @param {?} line
345
- * @return {?}
346
- */
347
- function (line) {
348
- return line.replace(startingWhitespaceRegex, '');
349
- }));
350
- // Join lines again with line characters
351
- /** @type {?} */
352
- const markdownToParse = lines.join('\n');
353
- // Convert markdown into html
354
- /** @type {?} */
355
- const converter = new showdown.Converter();
356
- converter.setOption('ghCodeBlocks', true);
357
- converter.setOption('tasklists', true);
358
- converter.setOption('tables', true);
359
- converter.setOption('literalMidWordUnderscores', true);
360
- converter.setOption('simpleLineBreaks', this._simpleLineBreaks);
361
- return converter.makeHtml(markdownToParse);
362
- }
363
- }
364
- TdMarkdownComponent.decorators = [
365
- { type: Component, args: [{
366
- selector: 'td-markdown',
367
- template: "<ng-content></ng-content>\n",
368
- styles: ["@font-face{:host.td-markdown::ng-deep{font-family:octicons-link;src:url(\"data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAZwABAAAAAACFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEU0lHAAAGaAAAAAgAAAAIAAAAAUdTVUIAAAZcAAAACgAAAAoAAQAAT1MvMgAAAyQAAABJAAAAYFYEU3RjbWFwAAADcAAAAEUAAACAAJThvmN2dCAAAATkAAAABAAAAAQAAAAAZnBnbQAAA7gAAACyAAABCUM+8IhnYXNwAAAGTAAAABAAAAAQABoAI2dseWYAAAFsAAABPAAAAZwcEq9taGVhZAAAAsgAAAA0AAAANgh4a91oaGVhAAADCAAAABoAAAAkCA8DRGhtdHgAAAL8AAAADAAAAAwGAACfbG9jYQAAAsAAAAAIAAAACABiATBtYXhwAAACqAAAABgAAAAgAA8ASm5hbWUAAAToAAABQgAAAlXu73sOcG9zdAAABiwAAAAeAAAAME3QpOBwcmVwAAAEbAAAAHYAAAB/aFGpk3jaTY6xa8JAGMW/O62BDi0tJLYQincXEypYIiGJjSgHniQ6umTsUEyLm5BV6NDBP8Tpts6F0v+k/0an2i+itHDw3v2+9+DBKTzsJNnWJNTgHEy4BgG3EMI9DCEDOGEXzDADU5hBKMIgNPZqoD3SilVaXZCER3/I7AtxEJLtzzuZfI+VVkprxTlXShWKb3TBecG11rwoNlmmn1P2WYcJczl32etSpKnziC7lQyWe1smVPy/Lt7Kc+0vWY/gAgIIEqAN9we0pwKXreiMasxvabDQMM4riO+qxM2ogwDGOZTXxwxDiycQIcoYFBLj5K3EIaSctAq2kTYiw+ymhce7vwM9jSqO8JyVd5RH9gyTt2+J/yUmYlIR0s04n6+7Vm1ozezUeLEaUjhaDSuXHwVRgvLJn1tQ7xiuVv/ocTRF42mNgZGBgYGbwZOBiAAFGJBIMAAizAFoAAABiAGIAznjaY2BkYGAA4in8zwXi+W2+MjCzMIDApSwvXzC97Z4Ig8N/BxYGZgcgl52BCSQKAA3jCV8CAABfAAAAAAQAAEB42mNgZGBg4f3vACQZQABIMjKgAmYAKEgBXgAAeNpjYGY6wTiBgZWBg2kmUxoDA4MPhGZMYzBi1AHygVLYQUCaawqDA4PChxhmh/8ODDEsvAwHgMKMIDnGL0x7gJQCAwMAJd4MFwAAAHjaY2BgYGaA4DAGRgYQkAHyGMF8NgYrIM3JIAGVYYDT+AEjAwuDFpBmA9KMDEwMCh9i/v8H8sH0/4dQc1iAmAkALaUKLgAAAHjaTY9LDsIgEIbtgqHUPpDi3gPoBVyRTmTddOmqTXThEXqrob2gQ1FjwpDvfwCBdmdXC5AVKFu3e5MfNFJ29KTQT48Ob9/lqYwOGZxeUelN2U2R6+cArgtCJpauW7UQBqnFkUsjAY/kOU1cP+DAgvxwn1chZDwUbd6CFimGXwzwF6tPbFIcjEl+vvmM/byA48e6tWrKArm4ZJlCbdsrxksL1AwWn/yBSJKpYbq8AXaaTb8AAHja28jAwOC00ZrBeQNDQOWO//sdBBgYGRiYWYAEELEwMTE4uzo5Zzo5b2BxdnFOcALxNjA6b2ByTswC8jYwg0VlNuoCTWAMqNzMzsoK1rEhNqByEyerg5PMJlYuVueETKcd/89uBpnpvIEVomeHLoMsAAe1Id4AAAAAAAB42oWQT07CQBTGv0JBhagk7HQzKxca2sJCE1hDt4QF+9JOS0nbaaYDCQfwCJ7Au3AHj+LO13FMmm6cl7785vven0kBjHCBhfpYuNa5Ph1c0e2Xu3jEvWG7UdPDLZ4N92nOm+EBXuAbHmIMSRMs+4aUEd4Nd3CHD8NdvOLTsA2GL8M9PODbcL+hD7C1xoaHeLJSEao0FEW14ckxC+TU8TxvsY6X0eLPmRhry2WVioLpkrbp84LLQPGI7c6sOiUzpWIWS5GzlSgUzzLBSikOPFTOXqly7rqx0Z1Q5BAIoZBSFihQYQOOBEdkCOgXTOHA07HAGjGWiIjaPZNW13/+lm6S9FT7rLHFJ6fQbkATOG1j2OFMucKJJsxIVfQORl+9Jyda6Sl1dUYhSCm1dyClfoeDve4qMYdLEbfqHf3O/AdDumsjAAB42mNgYoAAZQYjBmyAGYQZmdhL8zLdDEydARfoAqIAAAABAAMABwAKABMAB///AA8AAQAAAAAAAAAAAAAAAAABAAAAAA==\") format(\"woff\")}}:host.td-markdown::ng-deep a{-webkit-text-decoration-skip:objects;background-color:rgba(0,0,0,0)}: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;overflow:visible}:host.td-markdown::ng-deep input{font:inherit;margin:0;overflow:visible}: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,:host.td-markdown::ng-deep button:-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-collapse:collapse;border-spacing:0}: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:active,:host.td-markdown::ng-deep a:hover{text-decoration:underline}:host.td-markdown::ng-deep hr{background:rgba(0,0,0,0);border-bottom-style:solid;border-bottom-width:1px;height:0;margin:15px 0;overflow:hidden}:host.td-markdown::ng-deep hr:before{content:\"\";display:table}:host.td-markdown::ng-deep hr:after{clear:both;content:\"\";display:table}: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{line-height:1.5;margin-bottom:0;margin-top:0}: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-bottom:10px;margin-top:0}:host.td-markdown::ng-deep blockquote{margin:0}:host.td-markdown::ng-deep ol,:host.td-markdown::ng-deep ul{margin-bottom:0;margin-top:0;padding-left: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 ol ol ol,:host.td-markdown::ng-deep ol ul ol,:host.td-markdown::ng-deep ul ol ol,:host.td-markdown::ng-deep ul ul 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{font:12px Consolas,Liberation Mono,Menlo,Courier,monospace;margin-bottom:0;margin-top:0}: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{font-weight:700;line-height:1.4;margin-bottom:16px;margin-top:1em}: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{border-bottom-style:solid;border-bottom-width:1px;font-size:2.25em;line-height:1.2;padding-bottom:.3em}:host.td-markdown::ng-deep h1 .anchor{line-height:1}:host.td-markdown::ng-deep h2{border-bottom-style:solid;border-bottom-width:1px;font-size:1.75em;line-height:1.225;padding-bottom:.3em}: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 blockquote,:host.td-markdown::ng-deep dl,:host.td-markdown::ng-deep ol,:host.td-markdown::ng-deep p,:host.td-markdown::ng-deep pre,:host.td-markdown::ng-deep table,:host.td-markdown::ng-deep ul{margin-bottom:16px;margin-top:0}:host.td-markdown::ng-deep hr{margin:16px 0}:host.td-markdown::ng-deep ol,:host.td-markdown::ng-deep ul{padding-left:2em}:host.td-markdown::ng-deep ol ol,:host.td-markdown::ng-deep ol ul,:host.td-markdown::ng-deep ul ol,:host.td-markdown::ng-deep ul ul{margin-bottom:0;margin-top: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{font-size:1em;font-style:italic;font-weight:700;margin-top:16px;padding:0}:host.td-markdown::ng-deep dl dd{margin-bottom:16px;padding:0 16px}:host.td-markdown::ng-deep blockquote{border-left-style:solid;border-left-width:4px;padding:0 15px}: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;overflow:auto;width:100%;word-break:normal;word-break:keep-all}:host.td-markdown::ng-deep table th{font-weight:700}:host.td-markdown::ng-deep table td,:host.td-markdown::ng-deep table th{border-style:solid;border-width:1px;padding:6px 13px}:host.td-markdown::ng-deep table tr{border-top-style:solid;border-top-width:1px}:host.td-markdown::ng-deep img{box-sizing:content-box;max-width:100%}:host.td-markdown::ng-deep code{border-radius:3px;font-size:85%;margin:0;padding:.2em 0}:host.td-markdown::ng-deep code:after,:host.td-markdown::ng-deep code:before{letter-spacing:-.2em}:host.td-markdown::ng-deep pre>code{background:rgba(0,0,0,0);border:0;font-size:100%;margin:0;padding:0;white-space:pre;word-break:normal}:host.td-markdown::ng-deep .highlight{margin-bottom:16px}:host.td-markdown::ng-deep .highlight pre,:host.td-markdown::ng-deep pre{border-radius:3px;font-size:85%;line-height:1.45;overflow:auto;padding:16px}: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{background-color:rgba(0,0,0,0);border:0;display:inline;line-height:inherit;margin:0;max-width:none;overflow:initial;padding:0;word-wrap:normal}:host.td-markdown::ng-deep pre code:after,:host.td-markdown::ng-deep pre code:before{content:normal}:host.td-markdown::ng-deep kbd{border-style:solid;border-width:1px;font-size:11px}: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{background-color:#fcfcfc;border:1px solid;border-color:#ccc #ccc #bbb;border-radius:3px;box-shadow:inset 0 -1px 0 #bbb;display:inline-block;font:11px Consolas,Liberation Mono,Menlo,Courier,monospace;line-height:10px;padding:3px 5px;vertical-align:middle}:host.td-markdown::ng-deep .full-commit .btn-outline:not(:disabled):hover{border:1px solid #4078c0;color:#4078c0}:host.td-markdown::ng-deep :checked+.radio-label{border-color:#4078c0;position:relative;z-index:1}:host.td-markdown::ng-deep .octicon{display:inline-block;fill:currentColor;vertical-align:text-top}: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}"]
369
- }] }
370
- ];
371
- /** @nocollapse */
372
- TdMarkdownComponent.ctorParameters = () => [
373
- { type: Renderer2 },
374
- { type: ElementRef },
375
- { type: DomSanitizer }
376
- ];
377
- TdMarkdownComponent.propDecorators = {
378
- class: [{ type: HostBinding, args: ['class',] }],
379
- content: [{ type: Input, args: ['content',] }],
380
- simpleLineBreaks: [{ type: Input, args: ['simpleLineBreaks',] }],
381
- hostedUrl: [{ type: Input, args: ['hostedUrl',] }],
382
- anchor: [{ type: Input, args: ['anchor',] }],
383
- contentReady: [{ type: Output }],
384
- clickListener: [{ type: HostListener, args: ['click', ['$event'],] }]
385
- };
386
- if (false) {
387
- /**
388
- * @type {?}
389
- * @private
390
- */
391
- TdMarkdownComponent.prototype._content;
392
- /**
393
- * @type {?}
394
- * @private
395
- */
396
- TdMarkdownComponent.prototype._simpleLineBreaks;
397
- /**
398
- * @type {?}
399
- * @private
400
- */
401
- TdMarkdownComponent.prototype._hostedUrl;
402
- /**
403
- * @type {?}
404
- * @private
405
- */
406
- TdMarkdownComponent.prototype._anchor;
407
- /**
408
- * @type {?}
409
- * @private
410
- */
411
- TdMarkdownComponent.prototype._viewInit;
412
- /**
413
- * .td-markdown class added to host so ::ng-deep gets scoped.
414
- * @type {?}
415
- */
416
- TdMarkdownComponent.prototype.class;
417
- /**
418
- * contentReady?: function
419
- * Event emitted after the markdown content rendering is finished.
420
- * @type {?}
421
- */
422
- TdMarkdownComponent.prototype.contentReady;
423
- /**
424
- * @type {?}
425
- * @private
426
- */
427
- TdMarkdownComponent.prototype._renderer;
428
- /**
429
- * @type {?}
430
- * @private
431
- */
432
- TdMarkdownComponent.prototype._elementRef;
433
- /**
434
- * @type {?}
435
- * @private
436
- */
437
- TdMarkdownComponent.prototype._domSanitizer;
438
- }
439
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3NyYy9wbGF0Zm9ybS9tYXJrZG93bi8iLCJzb3VyY2VzIjpbIm1hcmtkb3duLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEVBQ1QsZUFBZSxFQUdmLFdBQVcsRUFDWCxZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFDTCxjQUFjLEVBQ2QsWUFBWSxFQUNaLFlBQVksRUFDWixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLFlBQVksRUFDWixlQUFlLEVBQ2YsbUJBQW1CLEdBQ3BCLE1BQU0saUNBQWlDLENBQUM7OztJQUlyQyxRQUFRLEdBQVEsT0FBTyxDQUFDLDJCQUEyQixDQUFDOzs7Ozs7OztBQUl4RCxTQUFTLG9CQUFvQixDQUFDLFdBQW1CLEVBQUUsWUFBb0I7SUFDckUsSUFBSSxXQUFXLElBQUksWUFBWSxFQUFFOztjQUN6QixVQUFVLEdBQVEsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDOztjQUN0QyxJQUFJLEdBQVcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7O2NBQ3BFLFVBQVUsR0FBUSxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUM7UUFFNUMsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFOzs7a0JBRTFCLFVBQVUsR0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMs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QyxDQUFDO1FBQzFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BDLFNBQVMsQ0FBQyxTQUFTLENBQUMsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkQsU0FBUyxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNoRSxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7O1lBbktGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsYUFBYTtnQkFFdkIsdUNBQXdDOzthQUN6Qzs7OztZQXBJQyxTQUFTO1lBSlQsVUFBVTtZQVdILFlBQVk7OztvQkF1SWxCLFdBQVcsU0FBQyxPQUFPO3NCQVNuQixLQUFLLFNBQUMsU0FBUzsrQkFXZixLQUFLLFNBQUMsa0JBQWtCO3dCQVd4QixLQUFLLFNBQUMsV0FBVztxQkFXakIsS0FBSyxTQUFDLFFBQVE7MkJBU2QsTUFBTTs0QkFJTixZQUFZLFNBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDOzs7Ozs7O0lBL0RqQyx1Q0FBeUI7Ozs7O0lBQ3pCLGdEQUEyQzs7Ozs7SUFDM0MseUNBQTJCOzs7OztJQUMzQixzQ0FBd0I7Ozs7O0lBQ3hCLHdDQUFtQzs7Ozs7SUFJbkMsb0NBQW9EOzs7Ozs7SUFtRHBELDJDQUFnRjs7Ozs7SUFFcEUsd0NBQTRCOzs7OztJQUFFLDBDQUErQjs7Ozs7SUFBRSw0Q0FBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEFmdGVyVmlld0luaXQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgUmVuZGVyZXIyLFxuICBTZWN1cml0eUNvbnRleHQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge1xuICBzY3JvbGxUb0FuY2hvcixcbiAgZ2VuSGVhZGluZ0lkLFxuICBpc0FuY2hvckxpbmssXG4gIHJlbW92ZVRyYWlsaW5nSGFzaCxcbiAgcmF3R2l0aHViSHJlZixcbiAgaXNHaXRodWJIcmVmLFxuICBpc1Jhd0dpdGh1YkhyZWYsXG4gIHJlbmRlclZpZGVvRWxlbWVudHMsXG59IGZyb20gJy4vbWFya2Rvd24tdXRpbHMvbWFya2Rvd24tdXRpbHMnO1xuXG5kZWNsYXJlIGNvbnN0IHJlcXVpcmU6IGFueTtcbi8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSAqL1xubGV0IHNob3dkb3duOiBhbnkgPSByZXF1aXJlKCdzaG93ZG93bi9kaXN0L3Nob3dkb3duLmpzJyk7XG5cbi8vIFRPRE86IGFzc3VtZXMgaXQgaXMgYSBnaXRodWIgdXJsXG4vLyBhbGxvdyBvdmVycmlkZSBzb21laG93XG5mdW5jdGlvbiBnZW5lcmF0ZUFic29sdXRlSHJlZihjdXJyZW50SHJlZjogc3RyaW5nLCByZWxhdGl2ZUhyZWY6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChjdXJyZW50SHJlZiAmJiByZWxhdGl2ZUhyZWYpIHtcbiAgICBjb25zdCBjdXJyZW50VXJsOiBVUkwgPSBuZXcgVVJMKGN1cnJlbnRIcmVmKTtcbiAgICBjb25zdCBwYXRoOiBzdHJpbmcgPSBjdXJyZW50VXJsLnBhdGhuYW1lLnNwbGl0KCcvJykuc2xpY2UoMSwgLTEpLmpvaW4oJy8nKTtcbiAgICBjb25zdCBjb3JyZWN0VXJsOiBVUkwgPSBuZXcgVVJMKGN1cnJlbnRIcmVmKTtcblxuICAgIGlmIChyZWxhdGl2ZUhyZWYuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAvLyB1cmwgaXMgcmVsYXRpdmUgdG8gdG9wIGxldmVsXG4gICAgICBjb25zdCBvcmdBbmRSZXBvOiBzdHJpbmcgPSBwYXRoLnNwbGl0KCcvJykuc2xpY2UoMCwgMykuam9pbignLycpO1xuICAgICAgY29ycmVjdFVybC5wYXRobmFtZSA9IGAke29yZ0FuZFJlcG99JHtyZWxhdGl2ZUhyZWZ9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29ycmVjdFVybC5wYXRobmFtZSA9IGAke3BhdGh9LyR7cmVsYXRpdmVIcmVmfWA7XG4gICAgfVxuICAgIHJldHVybiBjb3JyZWN0VXJsLmhyZWY7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplSHRtbEhyZWZzKGh0bWw6IHN0cmluZywgY3VycmVudEhyZWY6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChjdXJyZW50SHJlZikge1xuICAgIGNvbnN0IGRvY3VtZW50OiBEb2N1bWVudCA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoaHRtbCwgJ3RleHQvaHRtbCcpO1xuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2FbaHJlZl0nKS5mb3JFYWNoKChsaW5rOiBIVE1MQW5jaG9yRWxlbWVudCkgPT4ge1xuICAgICAgY29uc3QgdXJsOiBVUkwgPSBuZXcgVVJMKGxpbmsuaHJlZik7XG4gICAgICBjb25zdCBvcmlnaW5hbEhhc2g6IHN0cmluZyA9IHVybC5oYXNoO1xuICAgICAgaWYgKGlzQW5jaG9yTGluayhsaW5rKSkge1xuICAgICAgICBpZiAob3JpZ2luYWxIYXNoKSB7XG4gICAgICAgICAgdXJsLmhhc2ggPSBnZW5IZWFkaW5nSWQob3JpZ2luYWxIYXNoKTtcbiAgICAgICAgICBsaW5rLmhyZWYgPSB1cmwuaGFzaDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh1cmwuaG9zdCA9PT0gd2luZG93LmxvY2F0aW9uLmhvc3QpIHtcbiAgICAgICAgLy8gaG9zdHMgbWF0Y2gsIG1lYW5pbmcgVVJMIE1JR0hUIGhhdmUgYmVlbiBtYWxmb3JtZWQgYnkgc2hvd2Rvd25cbiAgICAgICAgLy8gdXJsIGlzIGEgcmVsYXRpdmUgdXJsIG9yIGp1c3QgYSBsaW5rIHRvIGEgcGFydCBvZiB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgaWYgKHVybC5wYXRobmFtZS5lbmRzV2l0aCgnLm1kJykpIHtcbiAgICAgICAgICAvLyBvbmx5IGNoZWNrIC5tZCB1cmxzXG5cbiAgICAgICAgICBjb25zdCBocmVmV2l0aG91dEhhc2g6IHN0cmluZyA9IHJlbW92ZVRyYWlsaW5nSGFzaChsaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpKTtcblxuICAgICAgICAgIHVybC5ocmVmID0gZ2VuZXJhdGVBYnNvbHV0ZUhyZWYoY3VycmVudEhyZWYsIGhyZWZXaXRob3V0SGFzaCk7XG5cbiAgICAgICAgICBpZiAob3JpZ2luYWxIYXNoKSB7XG4gICAgICAgICAgICB1cmwuaGFzaCA9IGdlbkhlYWRpbmdJZChvcmlnaW5hbEhhc2gpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsaW5rLmhyZWYgPSB1cmwuaHJlZjtcbiAgICAgICAgfVxuICAgICAgICBsaW5rLnRhcmdldCA9ICdfYmxhbmsnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdXJsIGlzIGFic29sdXRlXG4gICAgICAgIGlmICh1cmwucGF0aG5hbWUuZW5kc1dpdGgoJy5tZCcpKSB7XG4gICAgICAgICAgaWYgKG9yaWdpbmFsSGFzaCkge1xuICAgICAgICAgICAgdXJsLmhhc2ggPSBnZW5IZWFkaW5nSWQob3JpZ2luYWxIYXNoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGluay5ocmVmID0gdXJsLmhyZWY7XG4gICAgICAgIH1cbiAgICAgICAgbGluay50YXJnZXQgPSAnX2JsYW5rJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKGRvY3VtZW50KTtcbiAgfVxuICByZXR1cm4gaHRtbDtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplSW1hZ2VTcmNzKGh0bWw6IHN0cmluZywgY3VycmVudEhyZWY6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChjdXJyZW50SHJlZikge1xuICAgIGNvbnN0IGRvY3VtZW50OiBEb2N1bWVudCA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoaHRtbCwgJ3RleHQvaHRtbCcpO1xuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2ltZ1tzcmNdJykuZm9yRWFjaCgoaW1hZ2U6IEhUTUxJbWFnZUVsZW1lbnQpID0+IHtcbiAgICAgIGNvbnN0IHNyYzogc3RyaW5nID0gaW1hZ2UuZ2V0QXR0cmlidXRlKCdzcmMnKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby11bnVzZWQtZXhwcmVzc2lvbiAqL1xuICAgICAgICBuZXcgVVJMKHNyYyk7XG4gICAgICAgIGlmIChpc0dpdGh1YkhyZWYoc3JjKSkge1xuICAgICAgICAgIGltYWdlLnNyYyA9IHJhd0dpdGh1YkhyZWYoc3JjKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIGltYWdlLnNyYyA9IGdlbmVyYXRlQWJzb2x1dGVIcmVmKGlzR2l0aHViSHJlZihjdXJyZW50SHJlZikgPyByYXdHaXRodWJIcmVmKGN1cnJlbnRIcmVmKSA6IGN1cnJlbnRIcmVmLCBzcmMpO1xuICAgICAgfVxuICAgICAgLy8gZ2ggc3ZncyBuZWVkIHRvIGhhdmUgP3Nhbml0aXplPXRydWVcbiAgICAgIGlmIChpc1Jhd0dpdGh1YkhyZWYoaW1hZ2Uuc3JjKSkge1xuICAgICAgICBjb25zdCB1cmw6IFVSTCA9IG5ldyBVUkwoaW1hZ2Uuc3JjKTtcbiAgICAgICAgaWYgKHVybC5wYXRobmFtZS5lbmRzV2l0aCgnLnN2ZycpKSB7XG4gICAgICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3Nhbml0aXplJywgJ3RydWUnKTtcbiAgICAgICAgICBpbWFnZS5zcmMgPSB1cmwuaHJlZjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5ldyBYTUxTZXJpYWxpemVyKCkuc2VyaWFsaXplVG9TdHJpbmcoZG9jdW1lbnQpO1xuICB9XG4gIHJldHVybiBodG1sO1xufVxuXG5mdW5jdGlvbiBhZGRJZHNUb0hlYWRpbmdzKGh0bWw6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChodG1sKSB7XG4gICAgY29uc3QgZG9jdW1lbnQ6IERvY3VtZW50ID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhodG1sLCAndGV4dC9odG1sJyk7XG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaDEsIGgyLCBoMywgaDQsIGg1LCBoNicpLmZvckVhY2goKGhlYWRpbmc6IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgICBjb25zdCBpZDogc3RyaW5nID0gZ2VuSGVhZGluZ0lkKGhlYWRpbmcuaW5uZXJIVE1MKTtcbiAgICAgIGhlYWRpbmcuc2V0QXR0cmlidXRlKCdpZCcsIGlkKTtcbiAgICB9KTtcbiAgICByZXR1cm4gbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhkb2N1bWVudCk7XG4gIH1cbiAgcmV0dXJuIGh0bWw7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RkLW1hcmtkb3duJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWFya2Rvd24uY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL21hcmtkb3duLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgVGRNYXJrZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByaXZhdGUgX2NvbnRlbnQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2ltcGxlTGluZUJyZWFrczogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9ob3N0ZWRVcmw6IHN0cmluZztcbiAgcHJpdmF0ZSBfYW5jaG9yOiBzdHJpbmc7XG4gIHByaXZhdGUgX3ZpZXdJbml0OiBib29sZWFuID0gZmFsc2U7XG4gIC8qKlxuICAgKiAudGQtbWFya2Rvd24gY2xhc3MgYWRkZWQgdG8gaG9zdCBzbyA6Om5nLWRlZXAgZ2V0cyBzY29wZWQuXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3M6IHN0cmluZyA9ICd0ZC1tYXJrZG93bic7XG5cbiAgLyoqXG4gICAqIGNvbnRlbnQ/OiBzdHJpbmdcbiAgICpcbiAgICogTWFya2Rvd24gZm9ybWF0IGNvbnRlbnQgdG8gYmUgcGFyc2VkIGFzIGh0bWwgbWFya3VwLlxuICAgKlxuICAgKiBlLmcuIFJFQURNRS5tZCBjb250ZW50LlxuICAgKi9cbiAgQElucHV0KCdjb250ZW50JylcbiAgc2V0IGNvbnRlbnQoY29udGVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5fY29udGVudCA9IGNvbnRlbnQ7XG4gIH1cblxuICAvKipcbiAgICogc2ltcGxlTGluZUJyZWFrcz86IHN0cmluZ1xuICAgKlxuICAgKiBTZXRzIHdoZXRoZXIgbmV3bGluZSBjaGFyYWN0ZXJzIGluc2lkZSBwYXJhZ3JhcGhzIGFuZCBzcGFucyBhcmUgcGFyc2VkIGFzIDxici8+LlxuICAgKiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICovXG4gIEBJbnB1dCgnc2ltcGxlTGluZUJyZWFrcycpXG4gIHNldCBzaW1wbGVMaW5lQnJlYWtzKHNpbXBsZUxpbmVCcmVha3M6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zaW1wbGVMaW5lQnJlYWtzID0gc2ltcGxlTGluZUJyZWFrcztcbiAgfVxuXG4gIC8qKlxuICAgKiBob3N0ZWRVcmw/OiBzdHJpbmdcbiAgICpcbiAgICogSWYgbWFya2Rvd24gY29udGFpbnMgcmVsYXRpdmUgcGF0aHMsIHRoaXMgaXMgcmVxdWlyZWQgdG8gZ2VuZXJhdGUgY29ycmVjdCB1cmxzLlxuICAgKlxuICAgKi9cbiAgQElucHV0KCdob3N0ZWRVcmwnKVxuICBzZXQgaG9zdGVkVXJsKGhvc3RlZFVybDogc3RyaW5nKSB7XG4gICAgdGhpcy5faG9zdGVkVXJsID0gaG9zdGVkVXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIGFuY2hvcj86IHN0cmluZ1xuICAgKlxuICAgKiBBbmNob3IgdG8ganVtcCB0by5cbiAgICpcbiAgICovXG4gIEBJbnB1dCgnYW5jaG9yJylcbiAgc2V0IGFuY2hvcihhbmNob3I6IHN0cmluZykge1xuICAgIHRoaXMuX2FuY2hvciA9IGFuY2hvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBjb250ZW50UmVhZHk/OiBmdW5jdGlvblxuICAgKiBFdmVudCBlbWl0dGVkIGFmdGVyIHRoZSBtYXJrZG93biBjb250ZW50IHJlbmRlcmluZyBpcyBmaW5pc2hlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBjb250ZW50UmVhZHk6IEV2ZW50RW1pdHRlcjx1bmRlZmluZWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx1bmRlZmluZWQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBfZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHt9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBjbGlja0xpc3RlbmVyKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gPEhUTUxFbGVtZW50PmV2ZW50LnNyY0VsZW1lbnQ7XG4gICAgaWYgKGVsZW1lbnQubWF0Y2hlcygnYVtocmVmXScpICYmIGlzQW5jaG9yTGluayg8SFRNTEFuY2hvckVsZW1lbnQ+ZWxlbWVudCkpIHtcbiAgICAgIHRoaXMuaGFuZGxlQW5jaG9yQ2xpY2tzKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgLy8gb25seSBhbmNob3IgY2hhbmdlZFxuICAgIGlmIChjaGFuZ2VzLmFuY2hvciAmJiAhY2hhbmdlcy5jb250ZW50ICYmICFjaGFuZ2VzLnNpbXBsZUxpbmVCcmVha3MgJiYgIWNoYW5nZXMuaG9zdGVkVXJsKSB7XG4gICAgICBzY3JvbGxUb0FuY2hvcih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMuX2FuY2hvciwgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2NvbnRlbnQpIHtcbiAgICAgIHRoaXMuX2xvYWRDb250ZW50KCg8SFRNTEVsZW1lbnQ+dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KS50ZXh0Q29udGVudCk7XG4gICAgfVxuICAgIHRoaXMuX3ZpZXdJbml0ID0gdHJ1ZTtcbiAgfVxuXG4gIHJlZnJlc2goKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2NvbnRlbnQpIHtcbiAgICAgIHRoaXMuX2xvYWRDb250ZW50KHRoaXMuX2NvbnRlbnQpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fdmlld0luaXQpIHtcbiAgICAgIHRoaXMuX2xvYWRDb250ZW50KCg8SFRNTEVsZW1lbnQ+dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KS50ZXh0Q29udGVudCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYWwgbWV0aG9kIHRvIHBhcnNlIGEgc3RyaW5nIG1hcmtkb3duIGludG8gSFRNTCBFbGVtZW50cyBhbmQgbG9hZCB0aGVtIGludG8gdGhlIGNvbnRhaW5lclxuICAgKi9cbiAgcHJpdmF0ZSBfbG9hZENvbnRlbnQobWFya2Rvd246IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChtYXJrZG93biAmJiBtYXJrZG93bi50cmltKCkubGVuZ3RoID4gMCkge1xuICAgICAgLy8gQ2xlYW4gY29udGFpbmVyXG4gICAgICB0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdpbm5lckhUTUwnLCAnJyk7XG4gICAgICAvLyBQYXJzZSBodG1sIHN0cmluZyBpbnRvIGFjdHVhbCBIVE1MIGVsZW1lbnRzLlxuICAgICAgdGhpcy5fZWxlbWVudEZyb21TdHJpbmcodGhpcy5fcmVuZGVyKG1hcmtkb3duKSk7XG4gICAgfVxuICAgIC8vIFRPRE86IHRpbWVvdXQgcmVxdWlyZWQgc2luY2UgcmVzaXppbmcgb2YgaHRtbCBlbGVtZW50cyBvY2N1cnMgd2hpY2ggY2F1c2VzIGEgY2hhbmdlIGluIHRoZSBzY3JvbGwgcG9zaXRpb25cbiAgICBzZXRUaW1lb3V0KCgpID0+IHNjcm9sbFRvQW5jaG9yKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5fYW5jaG9yLCB0cnVlKSwgMjUwKTtcbiAgICB0aGlzLmNvbnRlbnRSZWFkeS5lbWl0KCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZUFuY2hvckNsaWNrcyhldmVudDogRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IHVybDogVVJMID0gbmV3IFVSTCgoPEhUTUxBbmNob3JFbGVtZW50PmV2ZW50LnRhcmdldCkuaHJlZik7XG4gICAgY29uc3QgaGFzaDogc3RyaW5nID0gZGVjb2RlVVJJKHVybC5oYXNoKTtcbiAgICBzY3JvbGxUb0FuY2hvcih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGhhc2gsIHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZWxlbWVudEZyb21TdHJpbmcobWFya3VwU3RyOiBzdHJpbmcpOiBIVE1MRGl2RWxlbWVudCB7XG4gICAgLy8gUmVuZGVyZXIyIGRvZXNudCBoYXZlIGEgcGFyc2luZyBtZXRob2QsIHNvIHdlIGhhdmUgdG8gc2FuaXRpemUgYW5kIHVzZSBbaW5uZXJIVE1MXVxuICAgIC8vIHRvIHBhcnNlIHRoZSBzdHJpbmcgaW50byBET00gZWxlbWVudCBmb3Igbm93LlxuICAgIGNvbnN0IGRpdjogSFRNTERpdkVsZW1lbnQgPSB0aGlzLl9yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0aGlzLl9yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGRpdik7XG4gICAgY29uc3QgaHRtbDogc3RyaW5nID0gdGhpcy5fZG9tU2FuaXRpemVyLnNhbml0aXplKFNlY3VyaXR5Q29udGV4dC5IVE1MLCBtYXJrdXBTdHIpO1xuICAgIGNvbnN0IGh0bWxXaXRoQWJzb2x1dGVIcmVmczogc3RyaW5nID0gbm9ybWFsaXplSHRtbEhyZWZzKGh0bWwsIHRoaXMuX2hvc3RlZFVybCk7XG4gICAgY29uc3QgaHRtbFdpdGhBYnNvbHV0ZUltZ1NyY3M6IHN0cmluZyA9IG5vcm1hbGl6ZUltYWdlU3JjcyhodG1sV2l0aEFic29sdXRlSHJlZnMsIHRoaXMuX2hvc3RlZFVybCk7XG4gICAgY29uc3QgaHRtbFdpdGhIZWFkaW5nSWRzOiBzdHJpbmcgPSBhZGRJZHNUb0hlYWRpbmdzKGh0bWxXaXRoQWJzb2x1dGVJbWdTcmNzKTtcbiAgICBjb25zdCBodG1sV2l0aFZpZGVvczogU2FmZUh0bWwgPSByZW5kZXJWaWRlb0VsZW1lbnRzKGh0bWxXaXRoSGVhZGluZ0lkcyk7XG4gICAgdGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkoZGl2LCAnaW5uZXJIVE1MJywgaHRtbFdpdGhWaWRlb3MpO1xuICAgIHJldHVybiBkaXY7XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXIobWFya2Rvd246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gVHJpbSBsZWFkaW5nIGFuZCB0cmFpbGluZyBuZXdsaW5lc1xuICAgIG1hcmtkb3duID0gbWFya2Rvd24ucmVwbGFjZSgvXihcXHN8XFx0KSpcXG4rL2csICcnKS5yZXBsYWNlKC8oXFxzfFxcdCkqXFxuKyhcXHN8XFx0KSokL2csICcnKTtcbiAgICAvLyBTcGxpdCBtYXJrZG93biBieSBsaW5lIGNoYXJhY3RlcnNcbiAgICBsZXQgbGluZXM6IHN0cmluZ1tdID0gbWFya2Rvd24uc3BsaXQoJ1xcbicpO1xuXG4gICAgLy8gY2hlY2sgaG93IG11Y2ggaW5kZW50YXRpb24gaXMgdXNlZCBieSB0aGUgZmlyc3QgYWN0dWFsIG1hcmtkb3duIGxpbmVcbiAgICBjb25zdCBmaXJzdExpbmVXaGl0ZXNwYWNlOiBzdHJpbmcgPSBsaW5lc1swXS5tYXRjaCgvXihcXHN8XFx0KSovKVswXTtcblxuICAgIC8vIFJlbW92ZSBhbGwgaW5kZW50YXRpb24gc3BhY2VzIHNvIG1hcmtkb3duIGNhbiBiZSBwYXJzZWQgY29ycmVjdGx5XG4gICAgY29uc3Qgc3RhcnRpbmdXaGl0ZXNwYWNlUmVnZXg6IFJlZ0V4cCA9IG5ldyBSZWdFeHAoJ14nICsgZmlyc3RMaW5lV2hpdGVzcGFjZSk7XG4gICAgbGluZXMgPSBsaW5lcy5tYXAoZnVuY3Rpb24gKGxpbmU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gbGluZS5yZXBsYWNlKHN0YXJ0aW5nV2hpdGVzcGFjZVJlZ2V4LCAnJyk7XG4gICAgfSk7XG5cbiAgICAvLyBKb2luIGxpbmVzIGFnYWluIHdpdGggbGluZSBjaGFyYWN0ZXJzXG4gICAgY29uc3QgbWFya2Rvd25Ub1BhcnNlOiBzdHJpbmcgPSBsaW5lcy5qb2luKCdcXG4nKTtcblxuICAgIC8vIENvbnZlcnQgbWFya2Rvd24gaW50byBodG1sXG4gICAgY29uc3QgY29udmVydGVyOiBhbnkgPSBuZXcgc2hvd2Rvd24uQ29udmVydGVyKCk7XG4gICAgY29udmVydGVyLnNldE9wdGlvbignZ2hDb2RlQmxvY2tzJywgdHJ1ZSk7XG4gICAgY29udmVydGVyLnNldE9wdGlvbigndGFza2xpc3RzJywgdHJ1ZSk7XG4gICAgY29udmVydGVyLnNldE9wdGlvbigndGFibGVzJywgdHJ1ZSk7XG4gICAgY29udmVydGVyLnNldE9wdGlvbignbGl0ZXJhbE1pZFdvcmRVbmRlcnNjb3JlcycsIHRydWUpO1xuICAgIGNvbnZlcnRlci5zZXRPcHRpb24oJ3NpbXBsZUxpbmVCcmVha3MnLCB0aGlzLl9zaW1wbGVMaW5lQnJlYWtzKTtcbiAgICByZXR1cm4gY29udmVydGVyLm1ha2VIdG1sKG1hcmtkb3duVG9QYXJzZSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,21 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * Generated from: markdown.module.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
- */
6
- import { NgModule } from '@angular/core';
7
- import { CommonModule } from '@angular/common';
8
- import { HttpClientModule } from '@angular/common/http';
9
- import { TdMarkdownComponent } from './markdown.component';
10
- import { TdMarkdownLoaderService } from './markdown-loader/markdown-loader.service';
11
- export class CovalentMarkdownModule {
12
- }
13
- CovalentMarkdownModule.decorators = [
14
- { type: NgModule, args: [{
15
- imports: [CommonModule, HttpClientModule],
16
- declarations: [TdMarkdownComponent],
17
- exports: [TdMarkdownComponent],
18
- providers: [TdMarkdownLoaderService],
19
- },] }
20
- ];
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uL3NyYy9wbGF0Zm9ybS9tYXJrZG93bi8iLCJzb3VyY2VzIjpbIm1hcmtkb3duLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXhELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBUXBGLE1BQU0sT0FBTyxzQkFBc0I7OztZQU5sQyxRQUFRLFNBQUM7Z0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGdCQUFnQixDQUFDO2dCQUN6QyxZQUFZLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztnQkFDbkMsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7Z0JBQzlCLFNBQVMsRUFBRSxDQUFDLHVCQUF1QixDQUFDO2FBQ3JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IFRkTWFya2Rvd25Db21wb25lbnQgfSBmcm9tICcuL21hcmtkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZE1hcmtkb3duTG9hZGVyU2VydmljZSB9IGZyb20gJy4vbWFya2Rvd24tbG9hZGVyL21hcmtkb3duLWxvYWRlci5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSHR0cENsaWVudE1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW1RkTWFya2Rvd25Db21wb25lbnRdLFxuICBleHBvcnRzOiBbVGRNYXJrZG93bkNvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW1RkTWFya2Rvd25Mb2FkZXJTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ292YWxlbnRNYXJrZG93bk1vZHVsZSB7fVxuIl19
@@ -1,10 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * Generated from: public_api.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
- */
6
- export { CovalentMarkdownModule } from './markdown.module';
7
- export { TdMarkdownComponent } from './markdown.component';
8
- export { removeLeadingHash, removeTrailingHash, genHeadingId, scrollToAnchor, isAnchorLink, rawGithubHref, isGithubHref, isRawGithubHref, renderVideoElements } from './markdown-utils/markdown-utils';
9
- export { TdMarkdownLoaderService } from './markdown-loader/markdown-loader.service';
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi9zcmMvcGxhdGZvcm0vbWFya2Rvd24vIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsdUNBQWMsbUJBQW1CLENBQUM7QUFDbEMsb0NBQWMsc0JBQXNCLENBQUM7QUFDckMscUtBQWMsaUNBQWlDLENBQUM7QUFDaEQsd0NBQWMsMkNBQTJDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21hcmtkb3duLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL21hcmtkb3duLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL21hcmtkb3duLXV0aWxzL21hcmtkb3duLXV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbWFya2Rvd24tbG9hZGVyL21hcmtkb3duLWxvYWRlci5zZXJ2aWNlJztcbiJdfQ==