@covalent/markdown 4.0.0 → 4.1.0-develop.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -20
- package/_markdown-theme.scss +13 -1
- package/covalent-markdown.d.ts +2 -1
- package/esm2020/covalent-markdown.mjs +5 -0
- package/esm2020/lib/markdown-loader/markdown-loader.service.mjs +41 -0
- package/esm2020/lib/markdown-utils/markdown-utils.mjs +115 -0
- package/esm2020/lib/markdown.component.mjs +292 -0
- package/esm2020/lib/markdown.module.mjs +21 -0
- package/esm2020/public_api.mjs +5 -0
- package/fesm2015/covalent-markdown.mjs +467 -0
- package/fesm2015/covalent-markdown.mjs.map +1 -0
- package/fesm2020/covalent-markdown.mjs +464 -0
- package/fesm2020/covalent-markdown.mjs.map +1 -0
- package/{markdown-loader → lib/markdown-loader}/markdown-loader.service.d.ts +3 -0
- package/lib/markdown-utils/markdown-utils.d.ts +9 -0
- package/{markdown.component.d.ts → lib/markdown.component.d.ts} +9 -4
- package/lib/markdown.module.d.ts +9 -0
- package/package.json +27 -32
- package/public_api.d.ts +4 -4
- package/bundles/covalent-markdown.umd.js +0 -1055
- package/bundles/covalent-markdown.umd.js.map +0 -1
- package/bundles/covalent-markdown.umd.min.js +0 -16
- package/bundles/covalent-markdown.umd.min.js.map +0 -1
- package/covalent-markdown.metadata.json +0 -1
- package/esm2015/covalent-markdown.js +0 -10
- package/esm2015/index.js +0 -7
- package/esm2015/markdown-loader/markdown-loader.service.js +0 -69
- package/esm2015/markdown-utils/markdown-utils.js +0 -183
- package/esm2015/markdown.component.js +0 -439
- package/esm2015/markdown.module.js +0 -21
- package/esm2015/public_api.js +0 -10
- package/fesm2015/covalent-markdown.js +0 -724
- package/fesm2015/covalent-markdown.js.map +0 -1
- package/index.d.ts +0 -1
- package/markdown-utils/markdown-utils.d.ts +0 -9
- package/markdown.component.scss +0 -641
- 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,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\") 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
|
package/esm2015/public_api.js
DELETED
|
@@ -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==
|