@covalent/markdown 10.4.0-beta.3 → 11.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, SecurityContext, Component, HostBinding, Input, Output, Injectable, NgModule } from '@angular/core';
2
+ import { EventEmitter, SecurityContext, Component, Output, Input, HostBinding, Injectable, NgModule } from '@angular/core';
3
3
  import * as i1$1 from '@angular/common/http';
4
4
  import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
5
5
  import * as i1 from '@angular/platform-browser';
@@ -1 +1 @@
1
- {"version":3,"file":"covalent-markdown.mjs","sources":["../../../../libs/markdown/src/lib/markdown-utils/markdown-utils.ts","../../../../libs/markdown/src/lib/markdown.component.ts","../../../../libs/markdown/src/lib/markdown.component.html","../../../../libs/markdown/src/lib/markdown-loader/markdown-loader.service.ts","../../../../libs/markdown/src/lib/markdown.module.ts","../../../../libs/markdown/src/covalent-markdown.ts"],"sourcesContent":["export function removeLeadingHash(str: string): string {\n if (str) {\n return str.replace(/^#+/, '');\n }\n return '';\n}\n\nexport function removeTrailingHash(str: string | null): string {\n if (str) {\n return str.replace(/#.*/, '');\n }\n return '';\n}\n\nexport function genHeadingId(str: string): string {\n if (str) {\n return removeLeadingHash(\n str\n .replace(/(_|-|\\s)+/g, '')\n // Remove certain special chars to create heading ids similar to those in github\n // borrowed from showdown\n // https://github.com/showdownjs/showdown/blob/main/src/subParsers/makehtml/headers.js#L94\n .replace(/[&+$,/:;=?@\"#{}|^¨~[\\]`\\\\*)(%.!'<>]/g, '')\n ).toLowerCase();\n }\n return '';\n}\n\nexport function scrollToAnchor(\n scope: HTMLElement,\n anchor: string,\n tryParent: boolean\n): boolean {\n if (scope && anchor) {\n const normalizedAnchor: string = genHeadingId(anchor);\n let headingToJumpTo: Element | null = null;\n const headingWithinComponent = scope.querySelector(\n `[id=\"${normalizedAnchor}\"]`\n );\n\n if (headingWithinComponent) {\n headingToJumpTo = headingWithinComponent;\n } else if (tryParent) {\n const parent = scope.parentElement;\n if (parent) {\n headingToJumpTo = parent.querySelector(`[id=\"${normalizedAnchor}\"]`);\n }\n }\n if (headingToJumpTo) {\n headingToJumpTo.scrollIntoView({ behavior: 'auto' });\n return true;\n }\n }\n return false;\n}\n\nexport function isAnchorLink(anchor?: HTMLAnchorElement): boolean {\n if (anchor) {\n const href = anchor.getAttribute('href');\n if (href) {\n return href.startsWith('#');\n }\n }\n return false;\n}\n\nexport function isFileLink(\n anchor: HTMLAnchorElement,\n fileExtensions: string[] | undefined\n): boolean {\n if (fileExtensions && fileExtensions.length) {\n const href = anchor.getAttribute('href');\n if (href) {\n return fileExtensions.some((fileExtension) =>\n href.endsWith(fileExtension)\n );\n }\n }\n return false;\n}\n\nconst RAW_GITHUB_HOSTNAME = 'raw.githubusercontent.com';\n\nexport function rawGithubHref(githubHref?: string): string {\n if (githubHref) {\n try {\n const url: URL = new URL(githubHref);\n if (url.hostname === RAW_GITHUB_HOSTNAME) {\n return url.href;\n } else if (isGithubHref(githubHref)) {\n url.hostname = RAW_GITHUB_HOSTNAME;\n url.pathname = url.pathname.split('/blob', 2).join('');\n return url.href;\n }\n } catch {\n return '';\n }\n }\n return '';\n}\n\nexport function isGithubHref(href?: string): boolean {\n try {\n const temp: URL = new URL(href ?? '');\n return temp.hostname === 'github.com';\n } catch {\n return false;\n }\n}\n\nexport function isRawGithubHref(href = ''): boolean {\n try {\n const temp: URL = new URL(href);\n return temp.hostname === RAW_GITHUB_HOSTNAME;\n } catch {\n return false;\n }\n}\n\nexport function renderVideoElements(html: string): string {\n const ytLongEmbed =\n /!\\[(?:(?:https?:)?(?:\\/\\/)?)(?:(?:www)?.)?youtube.(?:.+?)\\/(?:(?:embed\\/)([\\w-]{11})(\\?[\\w%;-]+(?:=[\\w%;-]+)?(?:&[\\w%;-]+(?:=[\\w%;-]+)?)*)?)]/gi;\n const ytLongWatch =\n /!\\[(?:(?:https?:)?(?:\\/\\/)?)(?:(?:www)?.)?youtube.(?:.+?)\\/(?:(?:watch\\?v=)([\\w-]{11})(&[\\w%;-]+(?:=[\\w%;-]+)?)*)]/gi;\n const ytShort =\n /!\\[(?:(?:https?:)?(?:\\/\\/)?)?youtu.be\\/([\\w-]{11})\\??([\\w%;-]+(?:=[\\w%;-]+)?(?:&[\\w%;-]+(?:=[\\w%;-]+)?)*)?]/gi;\n const ytPlaylist =\n /!\\[(?:(?:https?:)?(?:\\/\\/)?)(?:(?:www)?.)?youtube.(?:.+?)\\/(?:(?:playlist\\?list=)([\\w-]{34})(&[\\w%;-]+(?:=[\\w%;-]+)?)*)]/gi;\n\n function convert(match: string, id: string, flags: string): string {\n if (flags) {\n id += '?' + flags.replace(/&amp;/gi, '&');\n }\n return `<iframe allow=\"fullscreen\" frameborder=\"0\" src=\"https://www.youtube.com/embed/${id}\"></iframe>`;\n }\n function convertPL(match: string, id: string, flags: string): string {\n if (flags) {\n id += flags.replace(/&amp;/gi, '&');\n }\n return `<iframe allow=\"fullscreen\" frameborder=\"0\" src=\"https://www.youtube.com/embed/videoseries?list=${id}\"></iframe>`;\n }\n\n return html\n .replace(ytLongWatch, convert)\n .replace(ytLongEmbed, convert)\n .replace(ytShort, convert)\n .replace(ytPlaylist, convertPL);\n}\n","import {\n Component,\n AfterViewInit,\n ElementRef,\n Input,\n Output,\n EventEmitter,\n Renderer2,\n SecurityContext,\n OnChanges,\n SimpleChanges,\n HostBinding,\n NgZone,\n OnDestroy,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport {\n scrollToAnchor,\n genHeadingId,\n isAnchorLink,\n removeTrailingHash,\n rawGithubHref,\n isGithubHref,\n isRawGithubHref,\n renderVideoElements,\n isFileLink,\n} from './markdown-utils/markdown-utils';\n\nimport * as showdown from 'showdown';\n\nfunction isAbsoluteUrl(currentHref: string): boolean {\n // Regular Expression to check url\n const RgExp = new RegExp('^(?:[a-z]+:)?//', 'i');\n return RgExp.test(currentHref);\n}\n\n// TODO: assumes it is a github url\n// allow override somehow\nfunction generateHref(currentHref: string, relativeHref: string): string {\n if (currentHref && relativeHref) {\n if (isAbsoluteUrl(currentHref)) {\n const currentUrl: URL = new URL(currentHref);\n const path: string = currentUrl.pathname\n .split('/')\n .slice(1, -1)\n .join('/');\n const correctUrl: URL = new URL(currentHref);\n\n if (relativeHref.startsWith('/')) {\n // url is relative to top level\n const orgAndRepo: string = path.split('/').slice(0, 3).join('/');\n correctUrl.pathname = `${orgAndRepo}${relativeHref}`;\n } else {\n correctUrl.pathname = `${path}/${relativeHref}`;\n }\n return correctUrl.href;\n } else {\n const path: string = currentHref.split('/').slice(0, -1).join('/');\n\n if (relativeHref.startsWith('/')) {\n return `${path}${relativeHref}`;\n } else {\n return `${path}/${relativeHref}`;\n }\n }\n }\n return '';\n}\n\nfunction normalizeHtmlHrefs(\n html: string,\n currentHref: string,\n fileLinkExtensions?: string[]\n): string {\n if (currentHref) {\n const document: Document = new DOMParser().parseFromString(\n html,\n 'text/html'\n );\n document\n .querySelectorAll<HTMLAnchorElement>('a[href]')\n .forEach((link: HTMLAnchorElement) => {\n const url: URL = new URL(link.href);\n const originalHash: string = url.hash;\n const isFileAnchorLink = isFileLink(link, fileLinkExtensions);\n if (isAnchorLink(link)) {\n if (originalHash) {\n url.hash = genHeadingId(originalHash);\n link.href = url.hash;\n }\n } else if (url.host === window.location.host) {\n // hosts match, meaning URL MIGHT have been malformed by showdown\n // url is a relative url or just a link to a part of the application\n if (url.pathname.endsWith('.md') || isFileAnchorLink) {\n // only check .md urls or urls ending with the fileLinkExtensions\n\n const hrefWithoutHash: string = removeTrailingHash(\n link.getAttribute('href')\n );\n\n url.href = generateHref(currentHref, hrefWithoutHash);\n\n if (originalHash) {\n url.hash = genHeadingId(originalHash);\n }\n link.href = url.href;\n }\n link.target = isFileAnchorLink ? '_self' : '_blank';\n } else {\n // url is absolute\n if (url.pathname.endsWith('.md')) {\n if (originalHash) {\n url.hash = genHeadingId(originalHash);\n }\n link.href = url.href;\n }\n link.target = '_blank';\n }\n });\n\n return new XMLSerializer().serializeToString(document);\n }\n return html;\n}\n\nfunction normalizeImageSrcs(html: string, currentHref: string): string {\n if (currentHref) {\n const document: Document = new DOMParser().parseFromString(\n html,\n 'text/html'\n );\n document\n .querySelectorAll<HTMLImageElement>('img[src]')\n .forEach((image: HTMLImageElement) => {\n const src = image.getAttribute('src') ?? '';\n try {\n /* tslint:disable-next-line:no-unused-expression */\n new URL(src);\n if (isGithubHref(src)) {\n image.src = rawGithubHref(src);\n }\n } catch {\n image.src = generateHref(\n isGithubHref(currentHref)\n ? rawGithubHref(currentHref)\n : currentHref,\n src\n );\n }\n // gh svgs need to have ?sanitize=true\n if (isRawGithubHref(image.src)) {\n const url: URL = new URL(image.src);\n if (url.pathname.endsWith('.svg')) {\n url.searchParams.set('sanitize', 'true');\n image.src = url.href;\n }\n }\n });\n\n return new XMLSerializer().serializeToString(document);\n }\n return html;\n}\n\nfunction addIdsToHeadings(html: string): string {\n if (html) {\n const document: Document = new DOMParser().parseFromString(\n html,\n 'text/html'\n );\n document\n .querySelectorAll('h1, h2, h3, h4, h5, h6')\n .forEach((heading: Element) => {\n const strippedInnerHTML = stripAllHtmlTags(heading.innerHTML);\n const id: string = genHeadingId(strippedInnerHTML);\n heading.setAttribute('id', id);\n });\n return new XMLSerializer().serializeToString(document);\n }\n return html;\n}\n\nfunction changeStyleAlignmentToClass(html: string) {\n if (html) {\n const document: Document = new DOMParser().parseFromString(\n html,\n 'text/html'\n );\n ['right', 'center', 'left'].forEach((alignment: string) => {\n document\n .querySelectorAll(`[style*='text-align:${alignment}']`)\n .forEach((style: Element) => {\n style.setAttribute('class', `markdown-align-${alignment}`);\n });\n });\n\n return new XMLSerializer().serializeToString(document);\n }\n\n return html;\n}\n\n// Strips all the html tags in the html sand returns the text\nfunction stripAllHtmlTags(input: string): string {\n let sanitized = input;\n let previous;\n\n do {\n previous = sanitized;\n sanitized = sanitized.replace(/<[^>]+>/g, '');\n } while (previous !== sanitized);\n\n return sanitized;\n}\n\n@Component({\n selector: 'td-markdown',\n styleUrls: ['./markdown.component.scss'],\n templateUrl: './markdown.component.html',\n})\nexport class TdMarkdownComponent\n implements OnChanges, AfterViewInit, OnDestroy\n{\n private _content!: string;\n private _simpleLineBreaks = false;\n private _hostedUrl!: string;\n private _anchor!: string;\n private _viewInit = false;\n private _fileLinkExtensions!: string[] | undefined;\n private _anchorListener?: VoidFunction;\n /**\n * .td-markdown class added to host so ::ng-deep gets scoped.\n */\n @HostBinding('class') class = 'td-markdown';\n\n /**\n * content?: string\n *\n * Markdown format content to be parsed as html markup.\n *\n * e.g. README.md content.\n */\n @Input()\n set content(content: string) {\n this._content = content;\n }\n\n /**\n * simpleLineBreaks?: string\n *\n * Sets whether newline characters inside paragraphs and spans are parsed as <br/>.\n * Defaults to false.\n */\n @Input()\n set simpleLineBreaks(simpleLineBreaks: boolean) {\n this._simpleLineBreaks = simpleLineBreaks;\n }\n\n /**\n * hostedUrl?: string\n *\n * If markdown contains relative paths, this is required to generate correct urls.\n *\n */\n @Input()\n set hostedUrl(hostedUrl: string) {\n this._hostedUrl = hostedUrl;\n }\n\n /**\n * anchor?: string\n *\n * Anchor to jump to.\n *\n */\n @Input()\n set anchor(anchor: string) {\n this._anchor = anchor;\n }\n\n /**\n * The file extensions to monitor for in anchor tags. If an anchor's `href` ends\n * with these extensions, an event will be emitted instead of performing the default click action.\n * Example values: [\".ipynb\", \".zip\", \".docx\"]\n */\n @Input()\n set fileLinkExtensions(extensions: string[] | undefined) {\n this._fileLinkExtensions = extensions;\n }\n\n /**\n * Event emitted when an anchor tag with an `href` matching the specified\n * fileLinkExtensions is clicked. The emitted value is the URL of the clicked anchor.\n */\n @Output() fileLinkClicked = new EventEmitter<URL>();\n\n /**\n * contentReady?: function\n * Event emitted after the markdown content rendering is finished.\n */\n @Output() contentReady: EventEmitter<void> = new EventEmitter<void>();\n\n constructor(\n private _renderer: Renderer2,\n private _elementRef: ElementRef,\n private _domSanitizer: DomSanitizer,\n private _ngZone: NgZone\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n // only anchor changed\n if (\n changes['anchor'] &&\n !changes['content'] &&\n !changes['simpleLineBreaks'] &&\n !changes['hostedUrl']\n ) {\n scrollToAnchor(this._elementRef.nativeElement, this._anchor, true);\n } else {\n this.refresh();\n }\n }\n\n ngAfterViewInit(): void {\n if (!this._content) {\n this._loadContent(\n (<HTMLElement>this._elementRef.nativeElement).textContent\n );\n }\n this._viewInit = true;\n\n // Caretaker note: the `scrollToAnchor` calls `element.scrollIntoView`, a native synchronous DOM\n // API and it doesn't require Angular running `ApplicationRef.tick()` each time the markdown component is clicked.\n // Host listener (added through `@HostListener`) cause Angular to add an event listener within the Angular zone.\n // It also calls `markViewDirty()` before calling the actual listener (the decorated class method).\n this._ngZone.runOutsideAngular(() => {\n this._anchorListener = this._renderer.listen(\n this._elementRef.nativeElement,\n 'click',\n (event: MouseEvent) => {\n const element: HTMLElement = <HTMLElement>event.srcElement;\n if (\n element.matches('a[href]') &&\n isAnchorLink(<HTMLAnchorElement>element)\n ) {\n this.handleAnchorClicks(event);\n } else if (\n element.matches('a[href]') &&\n isFileLink(<HTMLAnchorElement>element, this._fileLinkExtensions)\n ) {\n this.handleFileAnchorClicks(event);\n }\n }\n );\n });\n }\n\n ngOnDestroy(): void {\n this._anchorListener?.();\n }\n\n refresh(): void {\n if (this._content) {\n this._loadContent(this._content);\n } else if (this._viewInit) {\n this._loadContent(\n (<HTMLElement>this._elementRef.nativeElement).textContent\n );\n }\n }\n\n /**\n * General method to parse a string markdown into HTML Elements and load them into the container\n */\n private _loadContent(markdown: string | null): void {\n if (markdown && markdown.trim().length > 0) {\n // Clean container\n this._renderer.setProperty(\n this._elementRef.nativeElement,\n 'innerHTML',\n ''\n );\n // Parse html string into actual HTML elements.\n this._elementFromString(this._render(markdown));\n }\n // TODO: timeout required since resizing of html elements occurs which causes a change in the scroll position\n this._ngZone.runOutsideAngular(() =>\n setTimeout(\n () =>\n scrollToAnchor(this._elementRef.nativeElement, this._anchor, true),\n 250\n )\n );\n this.contentReady.emit();\n }\n\n private handleAnchorClicks(event: Event): void {\n event.preventDefault();\n const url: URL = new URL((<HTMLAnchorElement>event.target).href);\n const hash: string = decodeURI(url.hash);\n scrollToAnchor(this._elementRef.nativeElement, hash, true);\n }\n\n private handleFileAnchorClicks(event: Event): void {\n event.preventDefault();\n const url: URL = new URL((<HTMLAnchorElement>event.target).href);\n this.fileLinkClicked.emit(url);\n }\n\n private _elementFromString(markupStr: string): HTMLDivElement {\n // Renderer2 doesnt have a parsing method, so we have to sanitize and use [innerHTML]\n // to parse the string into DOM element for now.\n const div: HTMLDivElement = this._renderer.createElement('div');\n this._renderer.appendChild(this._elementRef.nativeElement, div);\n\n const html: string =\n this._domSanitizer.sanitize(\n SecurityContext.HTML,\n changeStyleAlignmentToClass(markupStr)\n ) ?? '';\n const htmlWithAbsoluteHrefs: string = normalizeHtmlHrefs(\n html,\n this._hostedUrl,\n this._fileLinkExtensions\n );\n const htmlWithAbsoluteImgSrcs: string = normalizeImageSrcs(\n htmlWithAbsoluteHrefs,\n this._hostedUrl\n );\n const htmlWithHeadingIds: string = addIdsToHeadings(\n htmlWithAbsoluteImgSrcs\n );\n const htmlWithVideos: SafeHtml = renderVideoElements(htmlWithHeadingIds);\n this._renderer.setProperty(div, 'innerHTML', htmlWithVideos);\n return div;\n }\n\n private _render(markdown: string): string {\n // Trim leading and trailing newlines\n markdown = markdown\n .replace(/^(\\s|\\t)*\\n+/g, '')\n .replace(/(\\s|\\t)*\\n+(\\s|\\t)*$/g, '');\n // Split markdown by line characters\n let lines: string[] = markdown.split('\\n');\n\n // check how much indentation is used by the first actual markdown line\n const firstLineWhitespaceMatch = lines[0].match(/^(\\s|\\t)*/);\n const firstLineWhitespace: string = firstLineWhitespaceMatch\n ? firstLineWhitespaceMatch[0]\n : '';\n\n // Remove all indentation spaces so markdown can be parsed correctly\n const startingWhitespaceRegex = new RegExp('^' + firstLineWhitespace);\n lines = lines.map(function (line: string): string {\n return line.replace(startingWhitespaceRegex, '');\n });\n\n // Join lines again with line characters\n const markdownToParse: string = lines.join('\\n');\n\n // Convert markdown into html\n const converter: showdown.Converter = new showdown.Converter();\n converter.setOption('ghCodeBlocks', true);\n converter.setOption('tasklists', true);\n converter.setOption('tables', true);\n converter.setOption('literalMidWordUnderscores', true);\n converter.setOption('simpleLineBreaks', this._simpleLineBreaks);\n converter.setOption('emoji', true);\n return converter.makeHtml(markdownToParse);\n }\n}\n","<ng-content></ng-content>\n","import { Injectable, SecurityContext } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { HttpClient, HttpResponse } from '@angular/common/http';\nimport { isGithubHref, rawGithubHref } from '../markdown-utils/markdown-utils';\n\n@Injectable()\nexport class TdMarkdownLoaderService {\n constructor(private _http: HttpClient, private _sanitizer: DomSanitizer) {}\n\n async load(url: string, httpOptions: object = {}): Promise<string> {\n const sanitizedUrl: string =\n this._sanitizer.sanitize(SecurityContext.URL, url) ?? '';\n let urlToGet: string = sanitizedUrl;\n if (isGithubHref(sanitizedUrl)) {\n urlToGet = rawGithubHref(sanitizedUrl);\n }\n\n const response: HttpResponse<string> | undefined = await this._http\n .get(urlToGet, {\n ...httpOptions,\n responseType: 'text',\n observe: 'response',\n })\n .toPromise();\n const contentType: string = response?.headers.get('Content-Type') ?? '';\n if (\n contentType.includes('text/plain') ||\n contentType.includes('text/markdown')\n ) {\n return response?.body ?? '';\n } else {\n throw Error(`${contentType} is not a handled content type`);\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport {\n provideHttpClient,\n withInterceptorsFromDi,\n} from '@angular/common/http';\n\nimport { TdMarkdownComponent } from './markdown.component';\nimport { TdMarkdownLoaderService } from './markdown-loader/markdown-loader.service';\n\n/**\n * @deprecated This module is deprecated and will be removed in future versions.\n * Please migrate to using standalone components as soon as possible.\n */\n@NgModule({\n exports: [TdMarkdownComponent],\n imports: [TdMarkdownComponent],\n providers: [\n TdMarkdownLoaderService,\n provideHttpClient(withInterceptorsFromDi()),\n ],\n})\nexport class CovalentMarkdownModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"covalent-markdown.mjs","sources":["../tmp-esm2022/lib/markdown-utils/markdown-utils.js","../tmp-esm2022/lib/markdown.component.js","../tmp-esm2022/lib/markdown-loader/markdown-loader.service.js","../tmp-esm2022/lib/markdown.module.js","../tmp-esm2022/covalent-markdown.js"],"sourcesContent":["export function removeLeadingHash(str) {\n if (str) {\n return str.replace(/^#+/, '');\n }\n return '';\n}\nexport function removeTrailingHash(str) {\n if (str) {\n return str.replace(/#.*/, '');\n }\n return '';\n}\nexport function genHeadingId(str) {\n if (str) {\n return removeLeadingHash(str\n .replace(/(_|-|\\s)+/g, '')\n // Remove certain special chars to create heading ids similar to those in github\n // borrowed from showdown\n // https://github.com/showdownjs/showdown/blob/main/src/subParsers/makehtml/headers.js#L94\n .replace(/[&+$,/:;=?@\"#{}|^¨~[\\]`\\\\*)(%.!'<>]/g, '')).toLowerCase();\n }\n return '';\n}\nexport function scrollToAnchor(scope, anchor, tryParent) {\n if (scope && anchor) {\n const normalizedAnchor = genHeadingId(anchor);\n let headingToJumpTo = null;\n const headingWithinComponent = scope.querySelector(`[id=\"${normalizedAnchor}\"]`);\n if (headingWithinComponent) {\n headingToJumpTo = headingWithinComponent;\n }\n else if (tryParent) {\n const parent = scope.parentElement;\n if (parent) {\n headingToJumpTo = parent.querySelector(`[id=\"${normalizedAnchor}\"]`);\n }\n }\n if (headingToJumpTo) {\n headingToJumpTo.scrollIntoView({ behavior: 'auto' });\n return true;\n }\n }\n return false;\n}\nexport function isAnchorLink(anchor) {\n if (anchor) {\n const href = anchor.getAttribute('href');\n if (href) {\n return href.startsWith('#');\n }\n }\n return false;\n}\nexport function isFileLink(anchor, fileExtensions) {\n if (fileExtensions && fileExtensions.length) {\n const href = anchor.getAttribute('href');\n if (href) {\n return fileExtensions.some((fileExtension) => href.endsWith(fileExtension));\n }\n }\n return false;\n}\nconst RAW_GITHUB_HOSTNAME = 'raw.githubusercontent.com';\nexport function rawGithubHref(githubHref) {\n if (githubHref) {\n try {\n const url = new URL(githubHref);\n if (url.hostname === RAW_GITHUB_HOSTNAME) {\n return url.href;\n }\n else if (isGithubHref(githubHref)) {\n url.hostname = RAW_GITHUB_HOSTNAME;\n url.pathname = url.pathname.split('/blob', 2).join('');\n return url.href;\n }\n }\n catch {\n return '';\n }\n }\n return '';\n}\nexport function isGithubHref(href) {\n try {\n const temp = new URL(href ?? '');\n return temp.hostname === 'github.com';\n }\n catch {\n return false;\n }\n}\nexport function isRawGithubHref(href = '') {\n try {\n const temp = new URL(href);\n return temp.hostname === RAW_GITHUB_HOSTNAME;\n }\n catch {\n return false;\n }\n}\nexport function renderVideoElements(html) {\n const ytLongEmbed = /!\\[(?:(?:https?:)?(?:\\/\\/)?)(?:(?:www)?.)?youtube.(?:.+?)\\/(?:(?:embed\\/)([\\w-]{11})(\\?[\\w%;-]+(?:=[\\w%;-]+)?(?:&[\\w%;-]+(?:=[\\w%;-]+)?)*)?)]/gi;\n const ytLongWatch = /!\\[(?:(?:https?:)?(?:\\/\\/)?)(?:(?:www)?.)?youtube.(?:.+?)\\/(?:(?:watch\\?v=)([\\w-]{11})(&[\\w%;-]+(?:=[\\w%;-]+)?)*)]/gi;\n const ytShort = /!\\[(?:(?:https?:)?(?:\\/\\/)?)?youtu.be\\/([\\w-]{11})\\??([\\w%;-]+(?:=[\\w%;-]+)?(?:&[\\w%;-]+(?:=[\\w%;-]+)?)*)?]/gi;\n const ytPlaylist = /!\\[(?:(?:https?:)?(?:\\/\\/)?)(?:(?:www)?.)?youtube.(?:.+?)\\/(?:(?:playlist\\?list=)([\\w-]{34})(&[\\w%;-]+(?:=[\\w%;-]+)?)*)]/gi;\n function convert(match, id, flags) {\n if (flags) {\n id += '?' + flags.replace(/&amp;/gi, '&');\n }\n return `<iframe allow=\"fullscreen\" frameborder=\"0\" src=\"https://www.youtube.com/embed/${id}\"></iframe>`;\n }\n function convertPL(match, id, flags) {\n if (flags) {\n id += flags.replace(/&amp;/gi, '&');\n }\n return `<iframe allow=\"fullscreen\" frameborder=\"0\" src=\"https://www.youtube.com/embed/videoseries?list=${id}\"></iframe>`;\n }\n return html\n .replace(ytLongWatch, convert)\n .replace(ytLongEmbed, convert)\n .replace(ytShort, convert)\n .replace(ytPlaylist, convertPL);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24tdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21hcmtkb3duL3NyYy9saWIvbWFya2Rvd24tdXRpbHMvbWFya2Rvd24tdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEdBQVc7SUFDM0MsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNSLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUNELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxHQUFrQjtJQUNuRCxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1IsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxHQUFXO0lBQ3RDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDUixPQUFPLGlCQUFpQixDQUN0QixHQUFHO2FBQ0EsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7WUFDMUIsZ0ZBQWdGO1lBQ2hGLHlCQUF5QjtZQUN6QiwwRkFBMEY7YUFDekYsT0FBTyxDQUFDLHNDQUFzQyxFQUFFLEVBQUUsQ0FBQyxDQUN2RCxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFDRCxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUM1QixLQUFrQixFQUNsQixNQUFjLEVBQ2QsU0FBa0I7SUFFbEIsSUFBSSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7UUFDcEIsTUFBTSxnQkFBZ0IsR0FBVyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEQsSUFBSSxlQUFlLEdBQW1CLElB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U0FDekIsT0FBTyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUxlYWRpbmdIYXNoKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHN0cikge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvXiMrLywgJycpO1xuICB9XG4gIHJldHVybiAnJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVRyYWlsaW5nSGFzaChzdHI6IHN0cmluZyB8IG51bGwpOiBzdHJpbmcge1xuICBpZiAoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8jLiovLCAnJyk7XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuSGVhZGluZ0lkKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHN0cikge1xuICAgIHJldHVybiByZW1vdmVMZWFkaW5nSGFzaChcbiAgICAgIHN0clxuICAgICAgICAucmVwbGFjZSgvKF98LXxcXHMpKy9nLCAnJylcbiAgICAgICAgLy8gUmVtb3ZlIGNlcnRhaW4gc3BlY2lhbCBjaGFycyB0byBjcmVhdGUgaGVhZGluZyBpZHMgc2ltaWxhciB0byB0aG9zZSBpbiBnaXRodWJcbiAgICAgICAgLy8gYm9ycm93ZWQgZnJvbSBzaG93ZG93blxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vc2hvd2Rvd25qcy9zaG93ZG93bi9ibG9iL21haW4vc3JjL3N1YlBhcnNlcnMvbWFrZWh0bWwvaGVhZGVycy5qcyNMOTRcbiAgICAgICAgLnJlcGxhY2UoL1smKyQsLzo7PT9AXCIje318XsKofltcXF1gXFxcXCopKCUuISc8Pl0vZywgJycpXG4gICAgKS50b0xvd2VyQ2FzZSgpO1xuICB9XG4gIHJldHVybiAnJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjcm9sbFRvQW5jaG9yKFxuICBzY29wZTogSFRNTEVsZW1lbnQsXG4gIGFuY2hvcjogc3RyaW5nLFxuICB0cnlQYXJlbnQ6IGJvb2xlYW5cbik6IGJvb2xlYW4ge1xuICBpZiAoc2NvcGUgJiYgYW5jaG9yKSB7XG4gICAgY29uc3Qgbm9ybWFsaXplZEFuY2hvcjogc3RyaW5nID0gZ2VuSGVhZGluZ0lkKGFuY2hvcik7XG4gICAgbGV0IGhlYWRpbmdUb0p1bXBUbzogRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIGNvbnN0IGhlYWRpbmdXaXRoaW5Db21wb25lbnQgPSBzY29wZS5xdWVyeVNlbGVjdG9yKFxuICAgICAgYFtpZD1cIiR7bm9ybWFsaXplZEFuY2hvcn1cIl1gXG4gICAgKTtcblxuICAgIGlmIChoZWFkaW5nV2l0aGluQ29tcG9uZW50KSB7XG4gICAgICBoZWFkaW5nVG9KdW1wVG8gPSBoZWFkaW5nV2l0aGluQ29tcG9uZW50O1xuICAgIH0gZWxzZSBpZiAodHJ5UGFyZW50KSB7XG4gICAgICBjb25zdCBwYXJlbnQgPSBzY29wZS5wYXJlbnRFbGVtZW50O1xuICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICBoZWFkaW5nVG9KdW1wVG8gPSBwYXJlbnQucXVlcnlTZWxlY3RvcihgW2lkPVwiJHtub3JtYWxpemVkQW5jaG9yfVwiXWApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaGVhZGluZ1RvSnVtcFRvKSB7XG4gICAgICBoZWFkaW5nVG9KdW1wVG8uc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ2F1dG8nIH0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQW5jaG9yTGluayhhbmNob3I/OiBIVE1MQW5jaG9yRWxlbWVudCk6IGJvb2xlYW4ge1xuICBpZiAoYW5jaG9yKSB7XG4gICAgY29uc3QgaHJlZiA9IGFuY2hvci5nZXRBdHRyaWJ1dGUoJ2hyZWYnKTtcbiAgICBpZiAoaHJlZikge1xuICAgICAgcmV0dXJuIGhyZWYuc3RhcnRzV2l0aCgnIycpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ZpbGVMaW5rKFxuICBhbmNob3I6IEhUTUxBbmNob3JFbGVtZW50LFxuICBmaWxlRXh0ZW5zaW9uczogc3RyaW5nW10gfCB1bmRlZmluZWRcbik6IGJvb2xlYW4ge1xuICBpZiAoZmlsZUV4dGVuc2lvbnMgJiYgZmlsZUV4dGVuc2lvbnMubGVuZ3RoKSB7XG4gICAgY29uc3QgaHJlZiA9IGFuY2hvci5nZXRBdHRyaWJ1dGUoJ2hyZWYnKTtcbiAgICBpZiAoaHJlZikge1xuICAgICAgcmV0dXJuIGZpbGVFeHRlbnNpb25zLnNvbWUoKGZpbGVFeHRlbnNpb24pID0+XG4gICAgICAgIGhyZWYuZW5kc1dpdGgoZmlsZUV4dGVuc2lvbilcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuY29uc3QgUkFXX0dJVEhVQl9IT1NUTkFNRSA9ICdyYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJhd0dpdGh1YkhyZWYoZ2l0aHViSHJlZj86IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChnaXRodWJIcmVmKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVybDogVVJMID0gbmV3IFVSTChnaXRodWJIcmVmKTtcbiAgICAgIGlmICh1cmwuaG9zdG5hbWUgPT09IFJBV19HSVRIVUJfSE9TVE5BTUUpIHtcbiAgICAgICAgcmV0dXJuIHVybC5ocmVmO1xuICAgICAgfSBlbHNlIGlmIChpc0dpdGh1YkhyZWYoZ2l0aHViSHJlZikpIHtcbiAgICAgICAgdXJsLmhvc3RuYW1lID0gUkFXX0dJVEhVQl9IT1NUTkFNRTtcbiAgICAgICAgdXJsLnBhdGhuYW1lID0gdXJsLnBhdGhuYW1lLnNwbGl0KCcvYmxvYicsIDIpLmpvaW4oJycpO1xuICAgICAgICByZXR1cm4gdXJsLmhyZWY7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG4gIHJldHVybiAnJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzR2l0aHViSHJlZihocmVmPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgY29uc3QgdGVtcDogVVJMID0gbmV3IFVSTChocmVmID8/ICcnKTtcbiAgICByZXR1cm4gdGVtcC5ob3N0bmFtZSA9PT0gJ2dpdGh1Yi5jb20nO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUmF3R2l0aHViSHJlZihocmVmID0gJycpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBjb25zdCB0ZW1wOiBVUkwgPSBuZXcgVVJMKGhyZWYpO1xuICAgIHJldHVybiB0ZW1wLmhvc3RuYW1lID09PSBSQVdfR0lUSFVCX0hPU1ROQU1FO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlclZpZGVvRWxlbWVudHMoaHRtbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgeXRMb25nRW1iZWQgPVxuICAgIC8hXFxbKD86KD86aHR0cHM/Oik/KD86XFwvXFwvKT8pKD86KD86d3d3KT8uKT95b3V0dWJlLig/Oi4rPylcXC8oPzooPzplbWJlZFxcLykoW1xcdy1dezExfSkoXFw/W1xcdyU7LV0rKD86PVtcXHclOy1dKyk/KD86JltcXHclOy1dKyg/Oj1bXFx3JTstXSspPykqKT8pXS9naTtcbiAgY29uc3QgeXRMb25nV2F0Y2ggPVxuICAgIC8hXFxbKD86KD86aHR0cHM/Oik/KD86XFwvXFwvKT8pKD86KD86d3d3KT8uKT95b3V0dWJlLig/Oi4rPylcXC8oPzooPzp3YXRjaFxcP3Y9KShbXFx3LV17MTF9KSgmW1xcdyU7LV0rKD86PVtcXHclOy1dKyk/KSopXS9naTtcbiAgY29uc3QgeXRTaG9ydCA9XG4gICAgLyFcXFsoPzooPzpodHRwcz86KT8oPzpcXC9cXC8pPyk/eW91dHUuYmVcXC8oW1xcdy1dezExfSlcXD8/KFtcXHclOy1dKyg/Oj1bXFx3JTstXSspPyg/OiZbXFx3JTstXSsoPzo9W1xcdyU7LV0rKT8pKik/XS9naTtcbiAgY29uc3QgeXRQbGF5bGlzdCA9XG4gICAgLyFcXFsoPzooPzpodHRwcz86KT8oPzpcXC9cXC8pPykoPzooPzp3d3cpPy4pP3lvdXR1YmUuKD86Lis/KVxcLyg/Oig/OnBsYXlsaXN0XFw/bGlzdD0pKFtcXHctXXszNH0pKCZbXFx3JTstXSsoPzo9W1xcdyU7LV0rKT8pKildL2dpO1xuXG4gIGZ1bmN0aW9uIGNvbnZlcnQobWF0Y2g6IHN0cmluZywgaWQ6IHN0cmluZywgZmxhZ3M6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKGZsYWdzKSB7XG4gICAgICBpZCArPSAnPycgKyBmbGFncy5yZXBsYWNlKC8mYW1wOy9naSwgJyYnKTtcbiAgICB9XG4gICAgcmV0dXJuIGA8aWZyYW1lIGFsbG93PVwiZnVsbHNjcmVlblwiIGZyYW1lYm9yZGVyPVwiMFwiIHNyYz1cImh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLyR7aWR9XCI+PC9pZnJhbWU+YDtcbiAgfVxuICBmdW5jdGlvbiBjb252ZXJ0UEwobWF0Y2g6IHN0cmluZywgaWQ6IHN0cmluZywgZmxhZ3M6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKGZsYWdzKSB7XG4gICAgICBpZCArPSBmbGFncy5yZXBsYWNlKC8mYW1wOy9naSwgJyYnKTtcbiAgICB9XG4gICAgcmV0dXJuIGA8aWZyYW1lIGFsbG93PVwiZnVsbHNjcmVlblwiIGZyYW1lYm9yZGVyPVwiMFwiIHNyYz1cImh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL3ZpZGVvc2VyaWVzP2xpc3Q9JHtpZH1cIj48L2lmcmFtZT5gO1xuICB9XG5cbiAgcmV0dXJuIGh0bWxcbiAgICAucmVwbGFjZSh5dExvbmdXYXRjaCwgY29udmVydClcbiAgICAucmVwbGFjZSh5dExvbmdFbWJlZCwgY29udmVydClcbiAgICAucmVwbGFjZSh5dFNob3J0LCBjb252ZXJ0KVxuICAgIC5yZXBsYWNlKHl0UGxheWxpc3QsIGNvbnZlcnRQTCk7XG59XG4iXX0=","import { Component, ElementRef, Input, Output, EventEmitter, Renderer2, SecurityContext, HostBinding, NgZone, } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { scrollToAnchor, genHeadingId, isAnchorLink, removeTrailingHash, rawGithubHref, isGithubHref, isRawGithubHref, renderVideoElements, isFileLink, } from './markdown-utils/markdown-utils';\nimport * as showdown from 'showdown';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/platform-browser\";\nconst _c0 = [\"*\"];\nfunction isAbsoluteUrl(currentHref) {\n // Regular Expression to check url\n const RgExp = new RegExp('^(?:[a-z]+:)?//', 'i');\n return RgExp.test(currentHref);\n}\n// TODO: assumes it is a github url\n// allow override somehow\nfunction generateHref(currentHref, relativeHref) {\n if (currentHref && relativeHref) {\n if (isAbsoluteUrl(currentHref)) {\n const currentUrl = new URL(currentHref);\n const path = currentUrl.pathname\n .split('/')\n .slice(1, -1)\n .join('/');\n const correctUrl = new URL(currentHref);\n if (relativeHref.startsWith('/')) {\n // url is relative to top level\n const orgAndRepo = path.split('/').slice(0, 3).join('/');\n correctUrl.pathname = `${orgAndRepo}${relativeHref}`;\n }\n else {\n correctUrl.pathname = `${path}/${relativeHref}`;\n }\n return correctUrl.href;\n }\n else {\n const path = currentHref.split('/').slice(0, -1).join('/');\n if (relativeHref.startsWith('/')) {\n return `${path}${relativeHref}`;\n }\n else {\n return `${path}/${relativeHref}`;\n }\n }\n }\n return '';\n}\nfunction normalizeHtmlHrefs(html, currentHref, fileLinkExtensions) {\n if (currentHref) {\n const document = new DOMParser().parseFromString(html, 'text/html');\n document\n .querySelectorAll('a[href]')\n .forEach((link) => {\n const url = new URL(link.href);\n const originalHash = url.hash;\n const isFileAnchorLink = isFileLink(link, fileLinkExtensions);\n if (isAnchorLink(link)) {\n if (originalHash) {\n url.hash = genHeadingId(originalHash);\n link.href = url.hash;\n }\n }\n else if (url.host === window.location.host) {\n // hosts match, meaning URL MIGHT have been malformed by showdown\n // url is a relative url or just a link to a part of the application\n if (url.pathname.endsWith('.md') || isFileAnchorLink) {\n // only check .md urls or urls ending with the fileLinkExtensions\n const hrefWithoutHash = removeTrailingHash(link.getAttribute('href'));\n url.href = generateHref(currentHref, hrefWithoutHash);\n if (originalHash) {\n url.hash = genHeadingId(originalHash);\n }\n link.href = url.href;\n }\n link.target = isFileAnchorLink ? '_self' : '_blank';\n }\n else {\n // url is absolute\n if (url.pathname.endsWith('.md')) {\n if (originalHash) {\n url.hash = genHeadingId(originalHash);\n }\n link.href = url.href;\n }\n link.target = '_blank';\n }\n });\n return new XMLSerializer().serializeToString(document);\n }\n return html;\n}\nfunction normalizeImageSrcs(html, currentHref) {\n if (currentHref) {\n const document = new DOMParser().parseFromString(html, 'text/html');\n document\n .querySelectorAll('img[src]')\n .forEach((image) => {\n const src = image.getAttribute('src') ?? '';\n try {\n /* tslint:disable-next-line:no-unused-expression */\n new URL(src);\n if (isGithubHref(src)) {\n image.src = rawGithubHref(src);\n }\n }\n catch {\n image.src = generateHref(isGithubHref(currentHref)\n ? rawGithubHref(currentHref)\n : currentHref, src);\n }\n // gh svgs need to have ?sanitize=true\n if (isRawGithubHref(image.src)) {\n const url = new URL(image.src);\n if (url.pathname.endsWith('.svg')) {\n url.searchParams.set('sanitize', 'true');\n image.src = url.href;\n }\n }\n });\n return new XMLSerializer().serializeToString(document);\n }\n return html;\n}\nfunction addIdsToHeadings(html) {\n if (html) {\n const document = new DOMParser().parseFromString(html, 'text/html');\n document\n .querySelectorAll('h1, h2, h3, h4, h5, h6')\n .forEach((heading) => {\n const strippedInnerHTML = stripAllHtmlTags(heading.innerHTML);\n const id = genHeadingId(strippedInnerHTML);\n heading.setAttribute('id', id);\n });\n return new XMLSerializer().serializeToString(document);\n }\n return html;\n}\nfunction changeStyleAlignmentToClass(html) {\n if (html) {\n const document = new DOMParser().parseFromString(html, 'text/html');\n ['right', 'center', 'left'].forEach((alignment) => {\n document\n .querySelectorAll(`[style*='text-align:${alignment}']`)\n .forEach((style) => {\n style.setAttribute('class', `markdown-align-${alignment}`);\n });\n });\n return new XMLSerializer().serializeToString(document);\n }\n return html;\n}\n// Strips all the html tags in the html sand returns the text\nfunction stripAllHtmlTags(input) {\n let sanitized = input;\n let previous;\n do {\n previous = sanitized;\n sanitized = sanitized.replace(/<[^>]+>/g, '');\n } while (previous !== sanitized);\n return sanitized;\n}\nexport class TdMarkdownComponent {\n _renderer;\n _elementRef;\n _domSanitizer;\n _ngZone;\n _content;\n _simpleLineBreaks = false;\n _hostedUrl;\n _anchor;\n _viewInit = false;\n _fileLinkExtensions;\n _anchorListener;\n /**\n * .td-markdown class added to host so ::ng-deep gets scoped.\n */\n class = 'td-markdown';\n /**\n * content?: string\n *\n * Markdown format content to be parsed as html markup.\n *\n * e.g. README.md content.\n */\n set content(content) {\n this._content = content;\n }\n /**\n * simpleLineBreaks?: string\n *\n * Sets whether newline characters inside paragraphs and spans are parsed as <br/>.\n * Defaults to false.\n */\n set simpleLineBreaks(simpleLineBreaks) {\n this._simpleLineBreaks = simpleLineBreaks;\n }\n /**\n * hostedUrl?: string\n *\n * If markdown contains relative paths, this is required to generate correct urls.\n *\n */\n set hostedUrl(hostedUrl) {\n this._hostedUrl = hostedUrl;\n }\n /**\n * anchor?: string\n *\n * Anchor to jump to.\n *\n */\n set anchor(anchor) {\n this._anchor = anchor;\n }\n /**\n * The file extensions to monitor for in anchor tags. If an anchor's `href` ends\n * with these extensions, an event will be emitted instead of performing the default click action.\n * Example values: [\".ipynb\", \".zip\", \".docx\"]\n */\n set fileLinkExtensions(extensions) {\n this._fileLinkExtensions = extensions;\n }\n /**\n * Event emitted when an anchor tag with an `href` matching the specified\n * fileLinkExtensions is clicked. The emitted value is the URL of the clicked anchor.\n */\n fileLinkClicked = new EventEmitter();\n /**\n * contentReady?: function\n * Event emitted after the markdown content rendering is finished.\n */\n contentReady = new EventEmitter();\n constructor(_renderer, _elementRef, _domSanitizer, _ngZone) {\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this._domSanitizer = _domSanitizer;\n this._ngZone = _ngZone;\n }\n ngOnChanges(changes) {\n // only anchor changed\n if (changes['anchor'] &&\n !changes['content'] &&\n !changes['simpleLineBreaks'] &&\n !changes['hostedUrl']) {\n scrollToAnchor(this._elementRef.nativeElement, this._anchor, true);\n }\n else {\n this.refresh();\n }\n }\n ngAfterViewInit() {\n if (!this._content) {\n this._loadContent(this._elementRef.nativeElement.textContent);\n }\n this._viewInit = true;\n // Caretaker note: the `scrollToAnchor` calls `element.scrollIntoView`, a native synchronous DOM\n // API and it doesn't require Angular running `ApplicationRef.tick()` each time the markdown component is clicked.\n // Host listener (added through `@HostListener`) cause Angular to add an event listener within the Angular zone.\n // It also calls `markViewDirty()` before calling the actual listener (the decorated class method).\n this._ngZone.runOutsideAngular(() => {\n this._anchorListener = this._renderer.listen(this._elementRef.nativeElement, 'click', (event) => {\n const element = event.srcElement;\n if (element.matches('a[href]') &&\n isAnchorLink(element)) {\n this.handleAnchorClicks(event);\n }\n else if (element.matches('a[href]') &&\n isFileLink(element, this._fileLinkExtensions)) {\n this.handleFileAnchorClicks(event);\n }\n });\n });\n }\n ngOnDestroy() {\n this._anchorListener?.();\n }\n refresh() {\n if (this._content) {\n this._loadContent(this._content);\n }\n else if (this._viewInit) {\n this._loadContent(this._elementRef.nativeElement.textContent);\n }\n }\n /**\n * General method to parse a string markdown into HTML Elements and load them into the container\n */\n _loadContent(markdown) {\n if (markdown && markdown.trim().length > 0) {\n // Clean container\n this._renderer.setProperty(this._elementRef.nativeElement, 'innerHTML', '');\n // Parse html string into actual HTML elements.\n this._elementFromString(this._render(markdown));\n }\n // TODO: timeout required since resizing of html elements occurs which causes a change in the scroll position\n this._ngZone.runOutsideAngular(() => setTimeout(() => scrollToAnchor(this._elementRef.nativeElement, this._anchor, true), 250));\n this.contentReady.emit();\n }\n handleAnchorClicks(event) {\n event.preventDefault();\n const url = new URL(event.target.href);\n const hash = decodeURI(url.hash);\n scrollToAnchor(this._elementRef.nativeElement, hash, true);\n }\n handleFileAnchorClicks(event) {\n event.preventDefault();\n const url = new URL(event.target.href);\n this.fileLinkClicked.emit(url);\n }\n _elementFromString(markupStr) {\n // Renderer2 doesnt have a parsing method, so we have to sanitize and use [innerHTML]\n // to parse the string into DOM element for now.\n const div = this._renderer.createElement('div');\n this._renderer.appendChild(this._elementRef.nativeElement, div);\n const html = this._domSanitizer.sanitize(SecurityContext.HTML, changeStyleAlignmentToClass(markupStr)) ?? '';\n const htmlWithAbsoluteHrefs = normalizeHtmlHrefs(html, this._hostedUrl, this._fileLinkExtensions);\n const htmlWithAbsoluteImgSrcs = normalizeImageSrcs(htmlWithAbsoluteHrefs, this._hostedUrl);\n const htmlWithHeadingIds = addIdsToHeadings(htmlWithAbsoluteImgSrcs);\n const htmlWithVideos = renderVideoElements(htmlWithHeadingIds);\n this._renderer.setProperty(div, 'innerHTML', htmlWithVideos);\n return div;\n }\n _render(markdown) {\n // Trim leading and trailing newlines\n markdown = markdown\n .replace(/^(\\s|\\t)*\\n+/g, '')\n .replace(/(\\s|\\t)*\\n+(\\s|\\t)*$/g, '');\n // Split markdown by line characters\n let lines = markdown.split('\\n');\n // check how much indentation is used by the first actual markdown line\n const firstLineWhitespaceMatch = lines[0].match(/^(\\s|\\t)*/);\n const firstLineWhitespace = firstLineWhitespaceMatch\n ? firstLineWhitespaceMatch[0]\n : '';\n // Remove all indentation spaces so markdown can be parsed correctly\n const startingWhitespaceRegex = new RegExp('^' + firstLineWhitespace);\n lines = lines.map(function (line) {\n return line.replace(startingWhitespaceRegex, '');\n });\n // Join lines again with line characters\n const markdownToParse = lines.join('\\n');\n // Convert markdown into html\n const converter = new showdown.Converter();\n converter.setOption('ghCodeBlocks', true);\n converter.setOption('tasklists', true);\n converter.setOption('tables', true);\n converter.setOption('literalMidWordUnderscores', true);\n converter.setOption('simpleLineBreaks', this._simpleLineBreaks);\n converter.setOption('emoji', true);\n return converter.makeHtml(markdownToParse);\n }\n static ɵfac = function TdMarkdownComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TdMarkdownComponent)(i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.DomSanitizer), i0.ɵɵdirectiveInject(i0.NgZone)); };\n static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TdMarkdownComponent, selectors: [[\"td-markdown\"]], hostVars: 2, hostBindings: function TdMarkdownComponent_HostBindings(rf, ctx) { if (rf & 2) {\n i0.ɵɵclassMap(ctx.class);\n } }, inputs: { content: \"content\", simpleLineBreaks: \"simpleLineBreaks\", hostedUrl: \"hostedUrl\", anchor: \"anchor\", fileLinkExtensions: \"fileLinkExtensions\" }, outputs: { fileLinkClicked: \"fileLinkClicked\", contentReady: \"contentReady\" }, features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function TdMarkdownComponent_Template(rf, ctx) { if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n } }, styles: [\".td-markdown[_nghost-%COMP%] a{background-color:transparent}.td-markdown[_nghost-%COMP%] a[target=_blank]{display:inline-flex;align-items:center;position:relative;padding-right:16px}.td-markdown[_nghost-%COMP%] a[target=_blank]:after{content:\\\"open_in_new\\\";font-family:var(--mdc-icon-font, \\\"Material Symbols Outlined\\\");padding-left:2px;text-decoration:none;position:absolute;right:0;top:1px}.td-markdown[_nghost-%COMP%] a:active, .td-markdown[_nghost-%COMP%] a:hover{outline-width:0}.td-markdown[_nghost-%COMP%] strong{font-weight:inherit;font-weight:bolder}.td-markdown[_nghost-%COMP%] h1{font-size:2em;margin:.67em 0}.td-markdown[_nghost-%COMP%] img{border-style:none}.td-markdown[_nghost-%COMP%] svg:not(:root){overflow:hidden}.td-markdown[_nghost-%COMP%] code, .td-markdown[_nghost-%COMP%] kbd, .td-markdown[_nghost-%COMP%] pre{font-family:monospace;font-size:1em}.td-markdown[_nghost-%COMP%] hr{box-sizing:content-box;height:0;overflow:visible}.td-markdown[_nghost-%COMP%] input{font:inherit;margin:0}.td-markdown[_nghost-%COMP%] input{overflow:visible}.td-markdown[_nghost-%COMP%] button:-moz-focusring, .td-markdown[_nghost-%COMP%] [type=button]:-moz-focusring, .td-markdown[_nghost-%COMP%] [type=reset]:-moz-focusring, .td-markdown[_nghost-%COMP%] [type=submit]:-moz-focusring{outline:1px dotted ButtonText}.td-markdown[_nghost-%COMP%] [type=checkbox]{box-sizing:border-box;padding:0}.td-markdown[_nghost-%COMP%] table{border-spacing:0;border-collapse:collapse}.td-markdown[_nghost-%COMP%] td, .td-markdown[_nghost-%COMP%] th{padding:0}.td-markdown[_nghost-%COMP%] *{box-sizing:border-box}.td-markdown[_nghost-%COMP%] input{font:13px/1.4 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\",Segoe UI Symbol}.td-markdown[_nghost-%COMP%] a{text-decoration:none}.td-markdown[_nghost-%COMP%] a:hover, .td-markdown[_nghost-%COMP%] a:active{text-decoration:underline}.td-markdown[_nghost-%COMP%] hr{height:0;margin:15px 0;overflow:hidden;background:transparent;border-bottom-width:1px;border-bottom-style:solid}.td-markdown[_nghost-%COMP%] hr:before{display:table;content:\\\"\\\"}.td-markdown[_nghost-%COMP%] hr:after{display:table;clear:both;content:\\\"\\\"}.td-markdown[_nghost-%COMP%] h1, .td-markdown[_nghost-%COMP%] h2, .td-markdown[_nghost-%COMP%] h3, .td-markdown[_nghost-%COMP%] h4, .td-markdown[_nghost-%COMP%] h5, .td-markdown[_nghost-%COMP%] h6{margin-top:0;margin-bottom:0;line-height:1.5}.td-markdown[_nghost-%COMP%] h1{font-size:30px}.td-markdown[_nghost-%COMP%] h2{font-size:21px}.td-markdown[_nghost-%COMP%] h3{font-size:16px}.td-markdown[_nghost-%COMP%] h4{font-size:14px}.td-markdown[_nghost-%COMP%] h5{font-size:12px}.td-markdown[_nghost-%COMP%] h6{font-size:11px}.td-markdown[_nghost-%COMP%] p{margin-top:0;margin-bottom:10px}.td-markdown[_nghost-%COMP%] blockquote{margin:0}.td-markdown[_nghost-%COMP%] ul, .td-markdown[_nghost-%COMP%] ol{padding-left:0;margin-top:0;margin-bottom:0}.td-markdown[_nghost-%COMP%] ol ol, .td-markdown[_nghost-%COMP%] ul ol{list-style-type:lower-roman}.td-markdown[_nghost-%COMP%] ul ul ol, .td-markdown[_nghost-%COMP%] ul ol ol, .td-markdown[_nghost-%COMP%] ol ul ol, .td-markdown[_nghost-%COMP%] ol ol ol{list-style-type:lower-alpha}.td-markdown[_nghost-%COMP%] dd{margin-left:0}.td-markdown[_nghost-%COMP%] code{font-family:Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px}.td-markdown[_nghost-%COMP%] pre{margin-top:0;margin-bottom:0;font:12px Consolas,Liberation Mono,Menlo,Courier,monospace}.td-markdown[_nghost-%COMP%] .pl-0{padding-left:0!important}.td-markdown[_nghost-%COMP%] .pl-1{padding-left:3px!important}.td-markdown[_nghost-%COMP%] .pl-2{padding-left:6px!important}.td-markdown[_nghost-%COMP%] .pl-3{padding-left:12px!important}.td-markdown[_nghost-%COMP%] .pl-4{padding-left:24px!important}.td-markdown[_nghost-%COMP%] .pl-5{padding-left:36px!important}.td-markdown[_nghost-%COMP%] .pl-6{padding-left:48px!important}.td-markdown[_nghost-%COMP%] .form-select::-ms-expand{opacity:0}.td-markdown[_nghost-%COMP%] a:not([href]){color:inherit;text-decoration:none}.td-markdown[_nghost-%COMP%] h1, .td-markdown[_nghost-%COMP%] h2, .td-markdown[_nghost-%COMP%] h3, .td-markdown[_nghost-%COMP%] h4, .td-markdown[_nghost-%COMP%] h5, .td-markdown[_nghost-%COMP%] h6{margin-top:1em;margin-bottom:16px;font-weight:700;line-height:1.4}.td-markdown[_nghost-%COMP%] h1 .octicon-link, .td-markdown[_nghost-%COMP%] h2 .octicon-link, .td-markdown[_nghost-%COMP%] h3 .octicon-link, .td-markdown[_nghost-%COMP%] h4 .octicon-link, .td-markdown[_nghost-%COMP%] h5 .octicon-link, .td-markdown[_nghost-%COMP%] h6 .octicon-link{color:#000;vertical-align:middle;visibility:hidden}.td-markdown[_nghost-%COMP%] h1:hover .anchor, .td-markdown[_nghost-%COMP%] h2:hover .anchor, .td-markdown[_nghost-%COMP%] h3:hover .anchor, .td-markdown[_nghost-%COMP%] h4:hover .anchor, .td-markdown[_nghost-%COMP%] h5:hover .anchor, .td-markdown[_nghost-%COMP%] h6:hover .anchor{text-decoration:none}.td-markdown[_nghost-%COMP%] h1:hover .anchor .octicon-link, .td-markdown[_nghost-%COMP%] h2:hover .anchor .octicon-link, .td-markdown[_nghost-%COMP%] h3:hover .anchor .octicon-link, .td-markdown[_nghost-%COMP%] h4:hover .anchor .octicon-link, .td-markdown[_nghost-%COMP%] h5:hover .anchor .octicon-link, .td-markdown[_nghost-%COMP%] h6:hover .anchor .octicon-link{visibility:visible}.td-markdown[_nghost-%COMP%] h1{padding-bottom:.3em;font-size:2.25em;line-height:1.2;border-bottom-width:1px;border-bottom-style:solid}.td-markdown[_nghost-%COMP%] h1 .anchor{line-height:1}.td-markdown[_nghost-%COMP%] h2{padding-bottom:.3em;font-size:1.75em;line-height:1.225;border-bottom-width:1px;border-bottom-style:solid}.td-markdown[_nghost-%COMP%] h2 .anchor{line-height:1}.td-markdown[_nghost-%COMP%] h3{font-size:1.5em;line-height:1.43}.td-markdown[_nghost-%COMP%] h3 .anchor{line-height:1.2}.td-markdown[_nghost-%COMP%] h4{font-size:1.25em}.td-markdown[_nghost-%COMP%] h4 .anchor{line-height:1.2}.td-markdown[_nghost-%COMP%] h5{font-size:1em}.td-markdown[_nghost-%COMP%] h5 .anchor{line-height:1.1}.td-markdown[_nghost-%COMP%] h6{font-size:1em}.td-markdown[_nghost-%COMP%] h6 .anchor{line-height:1.1}.td-markdown[_nghost-%COMP%] p, .td-markdown[_nghost-%COMP%] blockquote, .td-markdown[_nghost-%COMP%] ul, .td-markdown[_nghost-%COMP%] ol, .td-markdown[_nghost-%COMP%] dl, .td-markdown[_nghost-%COMP%] table, .td-markdown[_nghost-%COMP%] pre{margin-top:0;margin-bottom:16px}.td-markdown[_nghost-%COMP%] hr{margin:16px 0}.td-markdown[_nghost-%COMP%] ul, .td-markdown[_nghost-%COMP%] ol{padding-left:2em}.td-markdown[_nghost-%COMP%] ul ul, .td-markdown[_nghost-%COMP%] ul ol, .td-markdown[_nghost-%COMP%] ol ol, .td-markdown[_nghost-%COMP%] ol ul{margin-top:0;margin-bottom:0}.td-markdown[_nghost-%COMP%] li>p{margin-top:16px}.td-markdown[_nghost-%COMP%] dl{padding:0}.td-markdown[_nghost-%COMP%] dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}.td-markdown[_nghost-%COMP%] dl dd{padding:0 16px;margin-bottom:16px}.td-markdown[_nghost-%COMP%] blockquote{padding:0 15px;border-left-width:4px;border-left-style:solid}.td-markdown[_nghost-%COMP%] blockquote>:first-child{margin-top:0}.td-markdown[_nghost-%COMP%] blockquote>:last-child{margin-bottom:0}.td-markdown[_nghost-%COMP%] table{display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}.td-markdown[_nghost-%COMP%] table th{font-weight:700}.td-markdown[_nghost-%COMP%] table th, .td-markdown[_nghost-%COMP%] table td{padding:6px 13px;border-width:1px;border-style:solid}.td-markdown[_nghost-%COMP%] table tr{border-top-width:1px;border-top-style:solid}.td-markdown[_nghost-%COMP%] img{max-width:100%;box-sizing:content-box}.td-markdown[_nghost-%COMP%] code{padding:.2em 0;margin:0;font-size:85%;border-radius:3px}.td-markdown[_nghost-%COMP%] code:before, .td-markdown[_nghost-%COMP%] code:after{letter-spacing:-.2em}.td-markdown[_nghost-%COMP%] pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:transparent;border:0}.td-markdown[_nghost-%COMP%] .highlight{margin-bottom:16px}.td-markdown[_nghost-%COMP%] .highlight pre, .td-markdown[_nghost-%COMP%] pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;border-radius:3px}.td-markdown[_nghost-%COMP%] .highlight pre{margin-bottom:0;word-break:normal}.td-markdown[_nghost-%COMP%] pre{word-wrap:normal}.td-markdown[_nghost-%COMP%] pre code{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}.td-markdown[_nghost-%COMP%] pre code:before, .td-markdown[_nghost-%COMP%] pre code:after{content:normal}.td-markdown[_nghost-%COMP%] kbd{display:inline-block;padding:3px 5px;font-size:11px;line-height:10px;vertical-align:middle;border-style:solid;border-width:1px;border-radius:3px}.td-markdown[_nghost-%COMP%] .pl-c{color:#969896}.td-markdown[_nghost-%COMP%] .pl-c1, .td-markdown[_nghost-%COMP%] .pl-s .pl-v{color:#0086b3}.td-markdown[_nghost-%COMP%] .pl-e, .td-markdown[_nghost-%COMP%] .pl-en{color:#795da3}.td-markdown[_nghost-%COMP%] .pl-s .pl-s1, .td-markdown[_nghost-%COMP%] .pl-smi{color:#333}.td-markdown[_nghost-%COMP%] .pl-ent{color:#63a35c}.td-markdown[_nghost-%COMP%] .pl-k{color:#a71d5d}.td-markdown[_nghost-%COMP%] .pl-pds, .td-markdown[_nghost-%COMP%] .pl-s, .td-markdown[_nghost-%COMP%] .pl-s .pl-pse .pl-s1, .td-markdown[_nghost-%COMP%] .pl-sr, .td-markdown[_nghost-%COMP%] .pl-sr .pl-cce, .td-markdown[_nghost-%COMP%] .pl-sr .pl-sra, .td-markdown[_nghost-%COMP%] .pl-sr .pl-sre{color:#183691}.td-markdown[_nghost-%COMP%] .pl-v{color:#ed6a43}.td-markdown[_nghost-%COMP%] .pl-id{color:#b52a1d}.td-markdown[_nghost-%COMP%] .pl-ii{background-color:#b52a1d;color:#f8f8f8}.td-markdown[_nghost-%COMP%] .pl-sr .pl-cce{color:#63a35c;font-weight:700}.td-markdown[_nghost-%COMP%] .pl-ml{color:#693a17}.td-markdown[_nghost-%COMP%] .pl-mh, .td-markdown[_nghost-%COMP%] .pl-mh .pl-en, .td-markdown[_nghost-%COMP%] .pl-ms{color:#1d3e81;font-weight:700}.td-markdown[_nghost-%COMP%] .pl-mq{color:teal}.td-markdown[_nghost-%COMP%] .pl-mi{color:#333;font-style:italic}.td-markdown[_nghost-%COMP%] .pl-mb{color:#333;font-weight:700}.td-markdown[_nghost-%COMP%] .pl-md{background-color:#ffecec;color:#bd2c00}.td-markdown[_nghost-%COMP%] .pl-mi1{background-color:#eaffea;color:#55a532}.td-markdown[_nghost-%COMP%] .pl-mdr{color:#795da3;font-weight:700}.td-markdown[_nghost-%COMP%] .pl-mo{color:#1d3e81}.td-markdown[_nghost-%COMP%] kbd{display:inline-block;padding:3px 5px;font:11px Consolas,Liberation Mono,Menlo,Courier,monospace;line-height:10px;vertical-align:middle;background-color:#fcfcfc;border:solid 1px #cccccc;border-bottom-color:#bbb;border-radius:3px;box-shadow:inset 0 -1px #bbb}.td-markdown[_nghost-%COMP%] .full-commit .btn-outline:not(:disabled):hover{color:#4078c0;border:1px solid #4078c0}.td-markdown[_nghost-%COMP%] :checked+.radio-label{position:relative;z-index:1;border-color:#4078c0}.td-markdown[_nghost-%COMP%] .octicon{display:inline-block;vertical-align:text-top;fill:currentColor}.td-markdown[_nghost-%COMP%] .task-list-item{list-style-type:none}.td-markdown[_nghost-%COMP%] .task-list-item+.task-list-item{margin-top:3px}.td-markdown[_nghost-%COMP%] .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}.td-markdown[_nghost-%COMP%] td.markdown-align-center{text-align:center}.td-markdown[_nghost-%COMP%] td.markdown-align-left{text-align:left}.td-markdown[_nghost-%COMP%] td.markdown-align-right{text-align:right}\"] });\n}\n(() => { (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(TdMarkdownComponent, [{\n type: Component,\n args: [{ selector: 'td-markdown', template: \"<ng-content></ng-content>\\n\", styles: [\":host.td-markdown::ng-deep a{background-color:transparent}:host.td-markdown::ng-deep a[target=_blank]{display:inline-flex;align-items:center;position:relative;padding-right:16px}:host.td-markdown::ng-deep a[target=_blank]:after{content:\\\"open_in_new\\\";font-family:var(--mdc-icon-font, \\\"Material Symbols Outlined\\\");padding-left:2px;text-decoration:none;position:absolute;right:0;top:1px}:host.td-markdown::ng-deep a:active,:host.td-markdown::ng-deep a:hover{outline-width:0}:host.td-markdown::ng-deep strong{font-weight:inherit;font-weight:bolder}:host.td-markdown::ng-deep h1{font-size:2em;margin:.67em 0}:host.td-markdown::ng-deep img{border-style:none}:host.td-markdown::ng-deep svg:not(:root){overflow:hidden}:host.td-markdown::ng-deep code,:host.td-markdown::ng-deep kbd,:host.td-markdown::ng-deep pre{font-family:monospace;font-size:1em}:host.td-markdown::ng-deep hr{box-sizing:content-box;height:0;overflow:visible}:host.td-markdown::ng-deep input{font:inherit;margin:0}:host.td-markdown::ng-deep input{overflow:visible}:host.td-markdown::ng-deep button:-moz-focusring,:host.td-markdown::ng-deep [type=button]:-moz-focusring,:host.td-markdown::ng-deep [type=reset]:-moz-focusring,:host.td-markdown::ng-deep [type=submit]:-moz-focusring{outline:1px dotted ButtonText}:host.td-markdown::ng-deep [type=checkbox]{box-sizing:border-box;padding:0}:host.td-markdown::ng-deep table{border-spacing:0;border-collapse:collapse}:host.td-markdown::ng-deep td,:host.td-markdown::ng-deep th{padding:0}:host.td-markdown::ng-deep *{box-sizing:border-box}:host.td-markdown::ng-deep input{font:13px/1.4 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\",Segoe UI Symbol}:host.td-markdown::ng-deep a{text-decoration:none}:host.td-markdown::ng-deep a:hover,:host.td-markdown::ng-deep a:active{text-decoration:underline}:host.td-markdown::ng-deep hr{height:0;margin:15px 0;overflow:hidden;background:transparent;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep hr:before{display:table;content:\\\"\\\"}:host.td-markdown::ng-deep hr:after{display:table;clear:both;content:\\\"\\\"}:host.td-markdown::ng-deep h1,:host.td-markdown::ng-deep h2,:host.td-markdown::ng-deep h3,:host.td-markdown::ng-deep h4,:host.td-markdown::ng-deep h5,:host.td-markdown::ng-deep h6{margin-top:0;margin-bottom:0;line-height:1.5}:host.td-markdown::ng-deep h1{font-size:30px}:host.td-markdown::ng-deep h2{font-size:21px}:host.td-markdown::ng-deep h3{font-size:16px}:host.td-markdown::ng-deep h4{font-size:14px}:host.td-markdown::ng-deep h5{font-size:12px}:host.td-markdown::ng-deep h6{font-size:11px}:host.td-markdown::ng-deep p{margin-top:0;margin-bottom:10px}:host.td-markdown::ng-deep blockquote{margin:0}:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol{padding-left:0;margin-top:0;margin-bottom:0}:host.td-markdown::ng-deep ol ol,:host.td-markdown::ng-deep ul ol{list-style-type:lower-roman}:host.td-markdown::ng-deep ul ul ol,:host.td-markdown::ng-deep ul ol ol,:host.td-markdown::ng-deep ol ul ol,:host.td-markdown::ng-deep ol ol ol{list-style-type:lower-alpha}:host.td-markdown::ng-deep dd{margin-left:0}:host.td-markdown::ng-deep code{font-family:Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px}:host.td-markdown::ng-deep pre{margin-top:0;margin-bottom:0;font:12px Consolas,Liberation Mono,Menlo,Courier,monospace}:host.td-markdown::ng-deep .pl-0{padding-left:0!important}:host.td-markdown::ng-deep .pl-1{padding-left:3px!important}:host.td-markdown::ng-deep .pl-2{padding-left:6px!important}:host.td-markdown::ng-deep .pl-3{padding-left:12px!important}:host.td-markdown::ng-deep .pl-4{padding-left:24px!important}:host.td-markdown::ng-deep .pl-5{padding-left:36px!important}:host.td-markdown::ng-deep .pl-6{padding-left:48px!important}:host.td-markdown::ng-deep .form-select::-ms-expand{opacity:0}:host.td-markdown::ng-deep a:not([href]){color:inherit;text-decoration:none}:host.td-markdown::ng-deep h1,:host.td-markdown::ng-deep h2,:host.td-markdown::ng-deep h3,:host.td-markdown::ng-deep h4,:host.td-markdown::ng-deep h5,:host.td-markdown::ng-deep h6{margin-top:1em;margin-bottom:16px;font-weight:700;line-height:1.4}:host.td-markdown::ng-deep h1 .octicon-link,:host.td-markdown::ng-deep h2 .octicon-link,:host.td-markdown::ng-deep h3 .octicon-link,:host.td-markdown::ng-deep h4 .octicon-link,:host.td-markdown::ng-deep h5 .octicon-link,:host.td-markdown::ng-deep h6 .octicon-link{color:#000;vertical-align:middle;visibility:hidden}:host.td-markdown::ng-deep h1:hover .anchor,:host.td-markdown::ng-deep h2:hover .anchor,:host.td-markdown::ng-deep h3:hover .anchor,:host.td-markdown::ng-deep h4:hover .anchor,:host.td-markdown::ng-deep h5:hover .anchor,:host.td-markdown::ng-deep h6:hover .anchor{text-decoration:none}:host.td-markdown::ng-deep h1:hover .anchor .octicon-link,:host.td-markdown::ng-deep h2:hover .anchor .octicon-link,:host.td-markdown::ng-deep h3:hover .anchor .octicon-link,:host.td-markdown::ng-deep h4:hover .anchor .octicon-link,:host.td-markdown::ng-deep h5:hover .anchor .octicon-link,:host.td-markdown::ng-deep h6:hover .anchor .octicon-link{visibility:visible}:host.td-markdown::ng-deep h1{padding-bottom:.3em;font-size:2.25em;line-height:1.2;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep h1 .anchor{line-height:1}:host.td-markdown::ng-deep h2{padding-bottom:.3em;font-size:1.75em;line-height:1.225;border-bottom-width:1px;border-bottom-style:solid}:host.td-markdown::ng-deep h2 .anchor{line-height:1}:host.td-markdown::ng-deep h3{font-size:1.5em;line-height:1.43}:host.td-markdown::ng-deep h3 .anchor{line-height:1.2}:host.td-markdown::ng-deep h4{font-size:1.25em}:host.td-markdown::ng-deep h4 .anchor{line-height:1.2}:host.td-markdown::ng-deep h5{font-size:1em}:host.td-markdown::ng-deep h5 .anchor{line-height:1.1}:host.td-markdown::ng-deep h6{font-size:1em}:host.td-markdown::ng-deep h6 .anchor{line-height:1.1}:host.td-markdown::ng-deep p,:host.td-markdown::ng-deep blockquote,:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol,:host.td-markdown::ng-deep dl,:host.td-markdown::ng-deep table,:host.td-markdown::ng-deep pre{margin-top:0;margin-bottom:16px}:host.td-markdown::ng-deep hr{margin:16px 0}:host.td-markdown::ng-deep ul,:host.td-markdown::ng-deep ol{padding-left:2em}:host.td-markdown::ng-deep ul ul,:host.td-markdown::ng-deep ul ol,:host.td-markdown::ng-deep ol ol,:host.td-markdown::ng-deep ol ul{margin-top:0;margin-bottom:0}:host.td-markdown::ng-deep li>p{margin-top:16px}:host.td-markdown::ng-deep dl{padding:0}:host.td-markdown::ng-deep dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}:host.td-markdown::ng-deep dl dd{padding:0 16px;margin-bottom:16px}:host.td-markdown::ng-deep blockquote{padding:0 15px;border-left-width:4px;border-left-style:solid}:host.td-markdown::ng-deep blockquote>:first-child{margin-top:0}:host.td-markdown::ng-deep blockquote>:last-child{margin-bottom:0}:host.td-markdown::ng-deep table{display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}:host.td-markdown::ng-deep table th{font-weight:700}:host.td-markdown::ng-deep table th,:host.td-markdown::ng-deep table td{padding:6px 13px;border-width:1px;border-style:solid}:host.td-markdown::ng-deep table tr{border-top-width:1px;border-top-style:solid}:host.td-markdown::ng-deep img{max-width:100%;box-sizing:content-box}:host.td-markdown::ng-deep code{padding:.2em 0;margin:0;font-size:85%;border-radius:3px}:host.td-markdown::ng-deep code:before,:host.td-markdown::ng-deep code:after{letter-spacing:-.2em}:host.td-markdown::ng-deep pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:transparent;border:0}:host.td-markdown::ng-deep .highlight{margin-bottom:16px}:host.td-markdown::ng-deep .highlight pre,:host.td-markdown::ng-deep pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;border-radius:3px}:host.td-markdown::ng-deep .highlight pre{margin-bottom:0;word-break:normal}:host.td-markdown::ng-deep pre{word-wrap:normal}:host.td-markdown::ng-deep pre code{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}:host.td-markdown::ng-deep pre code:before,:host.td-markdown::ng-deep pre code:after{content:normal}:host.td-markdown::ng-deep kbd{display:inline-block;padding:3px 5px;font-size:11px;line-height:10px;vertical-align:middle;border-style:solid;border-width:1px;border-radius:3px}:host.td-markdown::ng-deep .pl-c{color:#969896}:host.td-markdown::ng-deep .pl-c1,:host.td-markdown::ng-deep .pl-s .pl-v{color:#0086b3}:host.td-markdown::ng-deep .pl-e,:host.td-markdown::ng-deep .pl-en{color:#795da3}:host.td-markdown::ng-deep .pl-s .pl-s1,:host.td-markdown::ng-deep .pl-smi{color:#333}:host.td-markdown::ng-deep .pl-ent{color:#63a35c}:host.td-markdown::ng-deep .pl-k{color:#a71d5d}:host.td-markdown::ng-deep .pl-pds,:host.td-markdown::ng-deep .pl-s,:host.td-markdown::ng-deep .pl-s .pl-pse .pl-s1,:host.td-markdown::ng-deep .pl-sr,:host.td-markdown::ng-deep .pl-sr .pl-cce,:host.td-markdown::ng-deep .pl-sr .pl-sra,:host.td-markdown::ng-deep .pl-sr .pl-sre{color:#183691}:host.td-markdown::ng-deep .pl-v{color:#ed6a43}:host.td-markdown::ng-deep .pl-id{color:#b52a1d}:host.td-markdown::ng-deep .pl-ii{background-color:#b52a1d;color:#f8f8f8}:host.td-markdown::ng-deep .pl-sr .pl-cce{color:#63a35c;font-weight:700}:host.td-markdown::ng-deep .pl-ml{color:#693a17}:host.td-markdown::ng-deep .pl-mh,:host.td-markdown::ng-deep .pl-mh .pl-en,:host.td-markdown::ng-deep .pl-ms{color:#1d3e81;font-weight:700}:host.td-markdown::ng-deep .pl-mq{color:teal}:host.td-markdown::ng-deep .pl-mi{color:#333;font-style:italic}:host.td-markdown::ng-deep .pl-mb{color:#333;font-weight:700}:host.td-markdown::ng-deep .pl-md{background-color:#ffecec;color:#bd2c00}:host.td-markdown::ng-deep .pl-mi1{background-color:#eaffea;color:#55a532}:host.td-markdown::ng-deep .pl-mdr{color:#795da3;font-weight:700}:host.td-markdown::ng-deep .pl-mo{color:#1d3e81}:host.td-markdown::ng-deep kbd{display:inline-block;padding:3px 5px;font:11px Consolas,Liberation Mono,Menlo,Courier,monospace;line-height:10px;vertical-align:middle;background-color:#fcfcfc;border:solid 1px #cccccc;border-bottom-color:#bbb;border-radius:3px;box-shadow:inset 0 -1px #bbb}:host.td-markdown::ng-deep .full-commit .btn-outline:not(:disabled):hover{color:#4078c0;border:1px solid #4078c0}:host.td-markdown::ng-deep :checked+.radio-label{position:relative;z-index:1;border-color:#4078c0}:host.td-markdown::ng-deep .octicon{display:inline-block;vertical-align:text-top;fill:currentColor}:host.td-markdown::ng-deep .task-list-item{list-style-type:none}:host.td-markdown::ng-deep .task-list-item+.task-list-item{margin-top:3px}:host.td-markdown::ng-deep .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}:host.td-markdown::ng-deep td.markdown-align-center{text-align:center}:host.td-markdown::ng-deep td.markdown-align-left{text-align:left}:host.td-markdown::ng-deep td.markdown-align-right{text-align:right}\\n\"] }]\n }], () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.DomSanitizer }, { type: i0.NgZone }], { class: [{\n type: HostBinding,\n args: ['class']\n }], content: [{\n type: Input\n }], simpleLineBreaks: [{\n type: Input\n }], hostedUrl: [{\n type: Input\n }], anchor: [{\n type: Input\n }], fileLinkExtensions: [{\n type: Input\n }], fileLinkClicked: [{\n type: Output\n }], contentReady: [{\n type: Output\n }] }); })();\n(() => { (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassDebugInfo(TdMarkdownComponent, { className: \"TdMarkdownComponent\", filePath: \"lib/markdown.component.ts\", lineNumber: 221 }); })();\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9tYXJrZG93bi9zcmMvbGliL21hcmtkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvbWFya2Rvd24vc3JjL2xpYi9tYXJrZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixTQUFTLEVBQ1QsZUFBZSxFQUdmLFdBQVcsRUFDWCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFDTCxjQUFjLEVBQ2QsWUFBWSxFQUNaLFlBQVksRUFDWixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLFlBQVksRUFDWixlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLFVBQVUsR0FDWCxNQUFNLGlDQUFpQyxDQUFDO0FBRXpDLE9BQU8sS0FBSyxRQUFRLE1BQU0sVUFBVSxDQUFDOzs7O0FBRXJDLFNBQVMsYUFBYSxDQUFDLFdBQW1CO0lBQ3hDLGtDQUFrQztJQUNsQyxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDakMsQ0FBQztBQUVELG1DQUFtQztBQUNuQyx5QkFBeUI7QUFDekIsU0FBUyxZQUFZLENBQUMsV0FBbUIsRUFBRSxZQUFvQjtJQUM3RCxJQUFJLFdBQVcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNoQyxJQUFJLGFBQWEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQy9CLE1BQU0sVUFBVSxHQUFRLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFD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QixTQUFTOzJCQUNFLGFBQWE7bUhBaUJELEtBQUs7a0JBQTFCLFdBQVc7bUJBQUMsT0FBTztZQVVoQixPQUFPO2tCQURWLEtBQUs7WUFZRixnQkFBZ0I7a0JBRG5CLEtBQUs7WUFZRixTQUFTO2tCQURaLEtBQUs7WUFZRixNQUFNO2tCQURULEtBQUs7WUFXRixrQkFBa0I7a0JBRHJCLEtBQUs7WUFTSSxlQUFlO2tCQUF4QixNQUFNO1lBTUcsWUFBWTtrQkFBckIsTUFBTTs7a0ZBaEZJLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBSZW5kZXJlcjIsXG4gIFNlY3VyaXR5Q29udGV4dCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBIb3N0QmluZGluZyxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHtcbiAgc2Nyb2xsVG9BbmNob3IsXG4gIGdlbkhlYWRpbmdJZCxcbiAgaXNBbmNob3JMaW5rLFxuICByZW1vdmVUcmFpbGluZ0hhc2gsXG4gIHJhd0dpdGh1YkhyZWYsXG4gIGlzR2l0aHViSHJlZixcbiAgaXNSYXdHaXRodWJIcmVmLFxuICByZW5kZXJWaWRlb0VsZW1lbnRzLFxuICBpc0ZpbGVMaW5rLFxufSBmcm9tICcuL21hcmtkb3duLXV0aWxzL21hcmtkb3duLXV0aWxzJztcblxuaW1wb3J0ICogYXMgc2hvd2Rvd24gZnJvbSAnc2hvd2Rvd24nO1xuXG5mdW5jdGlvbiBpc0Fic29sdXRlVXJsKGN1cnJlbnRIcmVmOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgLy8gUmVndWxhciBFeHByZXNzaW9uIHRvIGNoZWNrIHVybFxuICBjb25zdCBSZ0V4cCA9IG5ldyBSZWdFeHAoJ14oPzpbYS16XSs6KT8vLycsICdpJyk7XG4gIHJldHVybiBSZ0V4cC50ZXN0KGN1cnJlbnRIcmVmKTtcbn1cblxuLy8gVE9ETzogYXNzdW1lcyBpdCBpcyBhIGdpdGh1YiB1cmxcbi8vIGFsbG93IG92ZXJyaWRlIHNvbWVob3dcbmZ1bmN0aW9uIGdlbmVyYXRlSHJlZihjdXJyZW50SHJlZjogc3RyaW5nLCByZWxhdGl2ZUhyZWY6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChjdXJyZW50SHJlZiAmJiByZWxhdGl2ZUhyZWYpIHtcbiAgICBpZiAoaXNBYnNvbHV0ZVVybChjdXJyZW50SHJlZikpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRVcmw6IFVSTCA9IG5ldyBVUkwoY3VycmVudEhyZWYpO1xuICAgICAgY29uc3QgcGF0aDogc3RyaW5nID0gY3VycmVudFVybC5wYXRobmFtZVxuICAgICAgICAuc3BsaXQoJy8nKVxuICAgICAgICAuc2xpY2UoMSwgLTEpXG4gICAgICAgIC5qb2luKCcvJyk7XG4gICAgICBjb25zdCBjb3JyZWN0VXJsOiBVUkwgPSBuZXcgVVJMKGN1cnJlbnRIcmVmKTtcblxuICAgICAgaWYgKHJlbGF0aXZlSHJlZi5zdGFydHNXaXRoKCcvJykpIHtcbiAgICAgICAgLy8gdXJsIGlzIHJlbGF0aXZlIHRvIHRvcCBsZXZlbFxuICAgICAgICBjb25zdCBvcmdBbmRSZXBvOiBzdHJpbmcgPSBwYXRoLnNwbGl0KCcvJykuc2xpY2UoMCwgMykuam9pbignLycpO1xuICAgICAgICBjb3JyZWN0VXJsLnBhdGhuYW1lID0gYCR7b3JnQW5kUmVwb30ke3JlbGF0aXZlSHJlZn1gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29ycmVjdFVybC5wYXRobmFtZSA9IGAke3BhdGh9LyR7cmVsYXRpdmVIcmVmfWA7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29ycmVjdFVybC5ocmVmO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwYXRoOiBzdHJpbmcgPSBjdXJyZW50SHJlZi5zcGxpdCgnLycpLnNsaWNlKDAsIC0xKS5qb2luKCcvJyk7XG5cbiAgICAgIGlmIChyZWxhdGl2ZUhyZWYuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAgIHJldHVybiBgJHtwYXRofSR7cmVsYXRpdmVIcmVmfWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYCR7cGF0aH0vJHtyZWxhdGl2ZUhyZWZ9YDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVIdG1sSHJlZnMoXG4gIGh0bWw6IHN0cmluZyxcbiAgY3VycmVudEhyZWY6IHN0cmluZyxcbiAgZmlsZUxpbmtFeHRlbnNpb25zPzogc3RyaW5nW11cbik6IHN0cmluZyB7XG4gIGlmIChjdXJyZW50SHJlZikge1xuICAgIGNvbnN0IGRvY3VtZW50OiBEb2N1bWVudCA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoXG4gICAgICBodG1sLFxuICAgICAgJ3RleHQvaHRtbCdcbiAgICApO1xuICAgIGRvY3VtZW50XG4gICAgICAucXVlcnlTZWxlY3RvckFsbDxIVE1MQW5jaG9yRWxlbWVudD4oJ2FbaHJlZl0nKVxuICAgICAgLmZvckVhY2goKGxpbms6IEhUTUxBbmNob3JFbGVtZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHVybDogVVJMID0gbmV3IFVSTChsaW5rLmhyZWYpO1xuICAgICAgICBjb25zdCBvcmlnaW5hbEhhc2g6IHN0cmluZyA9IHVybC5oYXNoO1xuICAgICAgICBjb25zdCBpc0ZpbGVBbmNob3JMaW5rID0gaXNGaWxlTGluayhsaW5rLCBmaWxlTGlua0V4dGVuc2lvbnMpO1xuICAgICAgICBpZiAoaXNBbmNob3JMaW5rKGxpbmspKSB7XG4gICAgICAgICAgaWYgKG9yaWdpbmFsSGFzaCkge1xuICAgICAgICAgICAgdXJsLmhhc2ggPSBnZW5IZWFkaW5nSWQob3JpZ2luYWxIYXNoKTtcbiAgICAgICAgICAgIGxpbmsuaHJlZiA9IHVybC5oYXNoO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh1cmwuaG9zdCA9PT0gd2luZG93LmxvY2F0aW9uLmhvc3QpIHtcbiAgICAgICAgICAvLyBob3N0cyBtYXRjaCwgbWVhbmluZyBVUkwgTUlHSFQgaGF2ZSBiZWVuIG1hbGZvcm1lZCBieSBzaG93ZG93blxuICAgICAgICAgIC8vIHVybCBpcyBhIHJlbGF0aXZlIHVybCBvciBqdXN0IGEgbGluayB0byBhIHBhcnQgb2YgdGhlIGFwcGxpY2F0aW9uXG4gICAgICAgICAgaWYgKHVybC5wYXRobmFtZS5lbmRzV2l0aCgnLm1kJykgfHwgaXNGaWxlQW5jaG9yTGluaykge1xuICAgICAgICAgICAgLy8gb25seSBjaGVjayAubWQgdXJscyBvciB1cmxzIGVuZGluZyB3aXRoIHRoZSBmaWxlTGlua0V4dGVuc2lvbnNcblxuICAgICAgICAgICAgY29uc3QgaHJlZldpdGhvdXRIYXNoOiBzdHJpbmcgPSByZW1vdmVUcmFpbGluZ0hhc2goXG4gICAgICAgICAgICAgIGxpbmsuZ2V0QXR0cmlidXRlKCdocmVmJylcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHVybC5ocmVmID0gZ2VuZXJhdGVIcmVmKGN1cnJlbnRIcmVmLCBocmVmV2l0aG91dEhhc2gpO1xuXG4gICAgICAgICAgICBpZiAob3JpZ2luYWxIYXNoKSB7XG4gICAgICAgICAgICAgIHVybC5oYXNoID0gZ2VuSGVhZGluZ0lkKG9yaWdpbmFsSGFzaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaW5rLmhyZWYgPSB1cmwuaHJlZjtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGluay50YXJnZXQgPSBpc0ZpbGVBbmNob3JMaW5rID8gJ19zZWxmJyA6ICdfYmxhbmsnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHVybCBpcyBhYnNvbHV0ZVxuICAgICAgICAgIGlmICh1cmwucGF0aG5hbWUuZW5kc1dpdGgoJy5tZCcpKSB7XG4gICAgICAgICAgICBpZiAob3JpZ2luYWxIYXNoKSB7XG4gICAgICAgICAgICAgIHVybC5oYXNoID0gZ2VuSGVhZGluZ0lkKG9yaWdpbmFsSGFzaCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaW5rLmhyZWYgPSB1cmwuaHJlZjtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGluay50YXJnZXQgPSAnX2JsYW5rJztcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICByZXR1cm4gbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhkb2N1bWVudCk7XG4gIH1cbiAgcmV0dXJuIGh0bWw7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUltYWdlU3JjcyhodG1sOiBzdHJpbmcsIGN1cnJlbnRIcmVmOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoY3VycmVudEhyZWYpIHtcbiAgICBjb25zdCBkb2N1bWVudDogRG9jdW1lbnQgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKFxuICAgICAgaHRtbCxcbiAgICAgICd0ZXh0L2h0bWwnXG4gICAgKTtcbiAgICBkb2N1bWVudFxuICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEltYWdlRWxlbWVudD4oJ2ltZ1tzcmNdJylcbiAgICAgIC5mb3JFYWNoKChpbWFnZTogSFRNTEltYWdlRWxlbWVudCkgPT4ge1xuICAgICAgICBjb25zdCBzcmMgPSBpbWFnZS5nZXRBdHRyaWJ1dGUoJ3NyYycpID8/ICcnO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby11bnVzZWQtZXhwcmVzc2lvbiAqL1xuICAgICAgICAgIG5ldyBVUkwoc3JjKTtcbiAgICAgICAgICBpZiAoaXNHaXRodWJIcmVmKHNyYykpIHtcbiAgICAgICAgICAgIGltYWdlLnNyYyA9IHJhd0dpdGh1YkhyZWYoc3JjKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIGltYWdlLnNyYyA9IGdlbmVyYXRlSHJlZihcbiAgICAgICAgICAgIGlzR2l0aHViSHJlZihjdXJyZW50SHJlZilcbiAgICAgICAgICAgICAgPyByYXdHaXRodWJIcmVmKGN1cnJlbnRIcmVmKVxuICAgICAgICAgICAgICA6IGN1cnJlbnRIcmVmLFxuICAgICAgICAgICAgc3JjXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBnaCBzdmdzIG5lZWQgdG8gaGF2ZSA/c2FuaXRpemU9dHJ1ZVxuICAgICAgICBpZiAoaXNSYXdHaXRodWJIcmVmKGltYWdlLnNyYykpIHtcbiAgICAgICAgICBjb25zdCB1cmw6IFVSTCA9IG5ldyBVUkwoaW1hZ2Uuc3JjKTtcbiAgICAgICAgICBpZiAodXJsLnBhdGhuYW1lLmVuZHNXaXRoKCcuc3ZnJykpIHtcbiAgICAgICAgICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdzYW5pdGl6ZScsICd0cnVlJyk7XG4gICAgICAgICAgICBpbWFnZS5zcmMgPSB1cmwuaHJlZjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIG5ldyBYTUxTZXJpYWxpemVyKCkuc2VyaWFsaXplVG9TdHJpbmcoZG9jdW1lbnQpO1xuICB9XG4gIHJldHVybiBodG1sO1xufVxuXG5mdW5jdGlvbiBhZGRJZHNUb0hlYWRpbmdzKGh0bWw6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChodG1sKSB7XG4gICAgY29uc3QgZG9jdW1lbnQ6IERvY3VtZW50ID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhcbiAgICAgIGh0bWwsXG4gICAgICAndGV4dC9odG1sJ1xuICAgICk7XG4gICAgZG9jdW1lbnRcbiAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKCdoMSwgaDIsIGgzLCBoNCwgaDUsIGg2JylcbiAgICAgIC5mb3JFYWNoKChoZWFkaW5nOiBFbGVtZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHN0cmlwcGVkSW5uZXJIVE1MID0gc3RyaXBBbGxIdG1sVGFncyhoZWFkaW5nLmlubmVySFRNTCk7XG4gICAgICAgIGNvbnN0IGlkOiBzdHJpbmcgPSBnZW5IZWFkaW5nSWQoc3RyaXBwZWRJbm5lckhUTUwpO1xuICAgICAgICBoZWFkaW5nLnNldEF0dHJpYnV0ZSgnaWQnLCBpZCk7XG4gICAgICB9KTtcbiAgICByZXR1cm4gbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhkb2N1bWVudCk7XG4gIH1cbiAgcmV0dXJuIGh0bWw7XG59XG5cbmZ1bmN0aW9uIGNoYW5nZVN0eWxlQWxpZ25tZW50VG9DbGFzcyhodG1sOiBzdHJpbmcpIHtcbiAgaWYgKGh0bWwpIHtcbiAgICBjb25zdCBkb2N1bWVudDogRG9jdW1lbnQgPSBuZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKFxuICAgICAgaHRtbCxcbiAgICAgICd0ZXh0L2h0bWwnXG4gICAgKTtcbiAgICBbJ3JpZ2h0JywgJ2NlbnRlcicsICdsZWZ0J10uZm9yRWFjaCgoYWxpZ25tZW50OiBzdHJpbmcpID0+IHtcbiAgICAgIGRvY3VtZW50XG4gICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKGBbc3R5bGUqPSd0ZXh0LWFsaWduOiR7YWxpZ25tZW50fSddYClcbiAgICAgICAgLmZvckVhY2goKHN0eWxlOiBFbGVtZW50KSA9PiB7XG4gICAgICAgICAgc3R5bGUuc2V0QXR0cmlidXRlKCdjbGFzcycsIGBtYXJrZG93bi1hbGlnbi0ke2FsaWdubWVudH1gKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhkb2N1bWVudCk7XG4gIH1cblxuICByZXR1cm4gaHRtbDtcbn1cblxuLy8gU3RyaXBzIGFsbCB0aGUgaHRtbCB0YWdzIGluIHRoZSBodG1sIHNhbmQgcmV0dXJucyB0aGUgdGV4dFxuZnVuY3Rpb24gc3RyaXBBbGxIdG1sVGFncyhpbnB1dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgbGV0IHNhbml0aXplZCA9IGlucHV0O1xuICBsZXQgcHJldmlvdXM7XG5cbiAgZG8ge1xuICAgIHByZXZpb3VzID0gc2FuaXRpemVkO1xuICAgIHNhbml0aXplZCA9IHNhbml0aXplZC5yZXBsYWNlKC88W14+XSs+L2csICcnKTtcbiAgfSB3aGlsZSAocHJldmlvdXMgIT09IHNhbml0aXplZCk7XG5cbiAgcmV0dXJuIHNhbml0aXplZDtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGQtbWFya2Rvd24nLFxuICBzdHlsZVVybHM6IFsnLi9tYXJrZG93bi5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFya2Rvd24uY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBUZE1hcmtkb3duQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgcHJpdmF0ZSBfY29udGVudCE6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2ltcGxlTGluZUJyZWFrcyA9IGZhbHNlO1xuICBwcml2YXRlIF9ob3N0ZWRVcmwhOiBzdHJpbmc7XG4gIHByaXZhdGUgX2FuY2hvciE6IHN0cmluZztcbiAgcHJpdmF0ZSBfdmlld0luaXQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZmlsZUxpbmtFeHRlbnNpb25zITogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX2FuY2hvckxpc3RlbmVyPzogVm9pZEZ1bmN0aW9uO1xuICAvKipcbiAgICogLnRkLW1hcmtkb3duIGNsYXNzIGFkZGVkIHRvIGhvc3Qgc28gOjpuZy1kZWVwIGdldHMgc2NvcGVkLlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzID0gJ3RkLW1hcmtkb3duJztcblxuICAvKipcbiAgICogY29udGVudD86IHN0cmluZ1xuICAgKlxuICAgKiBNYXJrZG93biBmb3JtYXQgY29udGVudCB0byBiZSBwYXJzZWQgYXMgaHRtbCBtYXJrdXAuXG4gICAqXG4gICAqIGUuZy4gUkVBRE1FLm1kIGNvbnRlbnQuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgY29udGVudChjb250ZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9jb250ZW50ID0gY29udGVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBzaW1wbGVMaW5lQnJlYWtzPzogc3RyaW5nXG4gICAqXG4gICAqIFNldHMgd2hldGhlciBuZXdsaW5lIGNoYXJhY3RlcnMgaW5zaWRlIHBhcmFncmFwaHMgYW5kIHNwYW5zIGFyZSBwYXJzZWQgYXMgPGJyLz4uXG4gICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHNpbXBsZUxpbmVCcmVha3Moc2ltcGxlTGluZUJyZWFrczogYm9vbGVhbikge1xuICAgIHRoaXMuX3NpbXBsZUxpbmVCcmVha3MgPSBzaW1wbGVMaW5lQnJlYWtzO1xuICB9XG5cbiAgLyoqXG4gICAqIGhvc3RlZFVybD86IHN0cmluZ1xuICAgKlxuICAgKiBJZiBtYXJrZG93biBjb250YWlucyByZWxhdGl2ZSBwYXRocywgdGhpcyBpcyByZXF1aXJlZCB0byBnZW5lcmF0ZSBjb3JyZWN0IHVybHMuXG4gICAqXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgaG9zdGVkVXJsKGhvc3RlZFVybDogc3RyaW5nKSB7XG4gICAgdGhpcy5faG9zdGVkVXJsID0gaG9zdGVkVXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIGFuY2hvcj86IHN0cmluZ1xuICAgKlxuICAgKiBBbmNob3IgdG8ganVtcCB0by5cbiAgICpcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBhbmNob3IoYW5jaG9yOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9hbmNob3IgPSBhbmNob3I7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGZpbGUgZXh0ZW5zaW9ucyB0byBtb25pdG9yIGZvciBpbiBhbmNob3IgdGFncy4gSWYgYW4gYW5jaG9yJ3MgYGhyZWZgIGVuZHNcbiAgICogd2l0aCB0aGVzZSBleHRlbnNpb25zLCBhbiBldmVudCB3aWxsIGJlIGVtaXR0ZWQgaW5zdGVhZCBvZiBwZXJmb3JtaW5nIHRoZSBkZWZhdWx0IGNsaWNrIGFjdGlvbi5cbiAgICogRXhhbXBsZSB2YWx1ZXM6IFtcIi5pcHluYlwiLCBcIi56aXBcIiwgXCIuZG9jeFwiXVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGZpbGVMaW5rRXh0ZW5zaW9ucyhleHRlbnNpb25zOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2ZpbGVMaW5rRXh0ZW5zaW9ucyA9IGV4dGVuc2lvbnM7XG4gIH1cblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGFuIGFuY2hvciB0YWcgd2l0aCBhbiBgaHJlZmAgbWF0Y2hpbmcgdGhlIHNwZWNpZmllZFxuICAgKiBmaWxlTGlua0V4dGVuc2lvbnMgaXMgY2xpY2tlZC4gVGhlIGVtaXR0ZWQgdmFsdWUgaXMgdGhlIFVSTCBvZiB0aGUgY2xpY2tlZCBhbmNob3IuXG4gICAqL1xuICBAT3V0cHV0KCkgZmlsZUxpbmtDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxVUkw+KCk7XG5cbiAgLyoqXG4gICAqIGNvbnRlbnRSZWFkeT86IGZ1bmN0aW9uXG4gICAqIEV2ZW50IGVtaXR0ZWQgYWZ0ZXIgdGhlIG1hcmtkb3duIGNvbnRlbnQgcmVuZGVyaW5nIGlzIGZpbmlzaGVkLlxuICAgKi9cbiAgQE91dHB1dCgpIGNvbnRlbnRSZWFkeTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIF9kb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICBwcml2YXRlIF9uZ1pvbmU6IE5nWm9uZVxuICApIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIC8vIG9ubHkgYW5jaG9yIGNoYW5nZWRcbiAgICBpZiAoXG4gICAgICBjaGFuZ2VzWydhbmNob3InXSAmJlxuICAgICAgIWNoYW5nZXNbJ2NvbnRlbnQnXSAmJlxuICAgICAgIWNoYW5nZXNbJ3NpbXBsZUxpbmVCcmVha3MnXSAmJlxuICAgICAgIWNoYW5nZXNbJ2hvc3RlZFVybCddXG4gICAgKSB7XG4gICAgICBzY3JvbGxUb0FuY2hvcih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMuX2FuY2hvciwgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2NvbnRlbnQpIHtcbiAgICAgIHRoaXMuX2xvYWRDb250ZW50KFxuICAgICAgICAoPEhUTUxFbGVtZW50PnRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkudGV4dENvbnRlbnRcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuX3ZpZXdJbml0ID0gdHJ1ZTtcblxuICAgIC8vIENhcmV0YWtlciBub3RlOiB0aGUgYHNjcm9sbFRvQW5jaG9yYCBjYWxscyBgZWxlbWVudC5zY3JvbGxJbnRvVmlld2AsIGEgbmF0aXZlIHN5bmNocm9ub3VzIERPTVxuICAgIC8vIEFQSSBhbmQgaXQgZG9lc24ndCByZXF1aXJlIEFuZ3VsYXIgcnVubmluZyBgQXBwbGljYXRpb25SZWYudGljaygpYCBlYWNoIHRpbWUgdGhlIG1hcmtkb3duIGNvbXBvbmVudCBpcyBjbGlja2VkLlxuICAgIC8vIEhvc3QgbGlzdGVuZXIgKGFkZGVkIHRocm91Z2ggYEBIb3N0TGlzdGVuZXJgKSBjYXVzZSBBbmd1bGFyIHRvIGFkZCBhbiBldmVudCBsaXN0ZW5lciB3aXRoaW4gdGhlIEFuZ3VsYXIgem9uZS5cbiAgICAvLyBJdCBhbHNvIGNhbGxzIGBtYXJrVmlld0RpcnR5KClgIGJlZm9yZSBjYWxsaW5nIHRoZSBhY3R1YWwgbGlzdGVuZXIgKHRoZSBkZWNvcmF0ZWQgY2xhc3MgbWV0aG9kKS5cbiAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5fYW5jaG9yTGlzdGVuZXIgPSB0aGlzLl9yZW5kZXJlci5saXN0ZW4oXG4gICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgJ2NsaWNrJyxcbiAgICAgICAgKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgZWxlbWVudDogSFRNTEVsZW1lbnQgPSA8SFRNTEVsZW1lbnQ+ZXZlbnQuc3JjRWxlbWVudDtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBlbGVtZW50Lm1hdGNoZXMoJ2FbaHJlZl0nKSAmJlxuICAgICAgICAgICAgaXNBbmNob3JMaW5rKDxIVE1MQW5jaG9yRWxlbWVudD5lbGVtZW50KVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVBbmNob3JDbGlja3MoZXZlbnQpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBlbGVtZW50Lm1hdGNoZXMoJ2FbaHJlZl0nKSAmJlxuICAgICAgICAgICAgaXNGaWxlTGluayg8SFRNTEFuY2hvckVsZW1lbnQ+ZWxlbWVudCwgdGhpcy5fZmlsZUxpbmtFeHRlbnNpb25zKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVGaWxlQW5jaG9yQ2xpY2tzKGV2ZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hbmNob3JMaXN0ZW5lcj8uKCk7XG4gIH1cblxuICByZWZyZXNoKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jb250ZW50KSB7XG4gICAgICB0aGlzLl9sb2FkQ29udGVudCh0aGlzLl9jb250ZW50KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3ZpZXdJbml0KSB7XG4gICAgICB0aGlzLl9sb2FkQ29udGVudChcbiAgICAgICAgKDxIVE1MRWxlbWVudD50aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpLnRleHRDb250ZW50XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmFsIG1ldGhvZCB0byBwYXJzZSBhIHN0cmluZyBtYXJrZG93biBpbnRvIEhUTUwgRWxlbWVudHMgYW5kIGxvYWQgdGhlbSBpbnRvIHRoZSBjb250YWluZXJcbiAgICovXG4gIHByaXZhdGUgX2xvYWRDb250ZW50KG1hcmtkb3duOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKG1hcmtkb3duICYmIG1hcmtkb3duLnRyaW0oKS5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBDbGVhbiBjb250YWluZXJcbiAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KFxuICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICdpbm5lckhUTUwnLFxuICAgICAgICAnJ1xuICAgICAgKTtcbiAgICAgIC8vIFBhcnNlIGh0bWwgc3RyaW5nIGludG8gYWN0dWFsIEhUTUwgZWxlbWVudHMuXG4gICAgICB0aGlzLl9lbGVtZW50RnJvbVN0cmluZyh0aGlzLl9yZW5kZXIobWFya2Rvd24pKTtcbiAgICB9XG4gICAgLy8gVE9ETzogdGltZW91dCByZXF1aXJlZCBzaW5jZSByZXNpemluZyBvZiBodG1sIGVsZW1lbnRzIG9jY3VycyB3aGljaCBjYXVzZXMgYSBjaGFuZ2UgaW4gdGhlIHNjcm9sbCBwb3NpdGlvblxuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PlxuICAgICAgc2V0VGltZW91dChcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICBzY3JvbGxUb0FuY2hvcih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMuX2FuY2hvciwgdHJ1ZSksXG4gICAgICAgIDI1MFxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5jb250ZW50UmVhZHkuZW1pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVBbmNob3JDbGlja3MoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCB1cmw6IFVSTCA9IG5ldyBVUkwoKDxIVE1MQW5jaG9yRWxlbWVudD5ldmVudC50YXJnZXQpLmhyZWYpO1xuICAgIGNvbnN0IGhhc2g6IHN0cmluZyA9IGRlY29kZVVSSSh1cmwuaGFzaCk7XG4gICAgc2Nyb2xsVG9BbmNob3IodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBoYXNoLCB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRmlsZUFuY2hvckNsaWNrcyhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IHVybDogVVJMID0gbmV3IFVSTCgoPEhUTUxBbmNob3JFbGVtZW50PmV2ZW50LnRhcmdldCkuaHJlZik7XG4gICAgdGhpcy5maWxlTGlua0NsaWNrZWQuZW1pdCh1cmwpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZWxlbWVudEZyb21TdHJpbmcobWFya3VwU3RyOiBzdHJpbmcpOiBIVE1MRGl2RWxlbWVudCB7XG4gICAgLy8gUmVuZGVyZXIyIGRvZXNudCBoYXZlIGEgcGFyc2luZyBtZXRob2QsIHNvIHdlIGhhdmUgdG8gc2FuaXRpemUgYW5kIHVzZSBbaW5uZXJIVE1MXVxuICAgIC8vIHRvIHBhcnNlIHRoZSBzdHJpbmcgaW50byBET00gZWxlbWVudCBmb3Igbm93LlxuICAgIGNvbnN0IGRpdjogSFRNTERpdkVsZW1lbnQgPSB0aGlzLl9yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0aGlzLl9yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGRpdik7XG5cbiAgICBjb25zdCBodG1sOiBzdHJpbmcgPVxuICAgICAgdGhpcy5fZG9tU2FuaXRpemVyLnNhbml0aXplKFxuICAgICAgICBTZWN1cml0eUNvbnRleHQuSFRNTCxcbiAgICAgICAgY2hhbmdlU3R5bGVBbGlnbm1lbnRUb0NsYXNzKG1hcmt1cFN0cilcbiAgICAgICkgPz8gJyc7XG4gICAgY29uc3QgaHRtbFdpdGhBYnNvbHV0ZUhyZWZzOiBzdHJpbmcgPSBub3JtYWxpemVIdG1sSHJlZnMoXG4gICAgICBodG1sLFxuICAgICAgdGhpcy5faG9zdGVkVXJsLFxuICAgICAgdGhpcy5fZmlsZUxpbmtFeHRlbnNpb25zXG4gICAgKTtcbiAgICBjb25zdCBodG1sV2l0aEFic29sdXRlSW1nU3Jjczogc3RyaW5nID0gbm9ybWFsaXplSW1hZ2VTcmNzKFxuICAgICAgaHRtbFdpdGhBYnNvbHV0ZUhyZWZzLFxuICAgICAgdGhpcy5faG9zdGVkVXJsXG4gICAgKTtcbiAgICBjb25zdCBodG1sV2l0aEhlYWRpbmdJZHM6IHN0cmluZyA9IGFkZElkc1RvSGVhZGluZ3MoXG4gICAgICBodG1sV2l0aEFic29sdXRlSW1nU3Jjc1xuICAgICk7XG4gICAgY29uc3QgaHRtbFdpdGhWaWRlb3M6IFNhZmVIdG1sID0gcmVuZGVyVmlkZW9FbGVtZW50cyhodG1sV2l0aEhlYWRpbmdJZHMpO1xuICAgIHRoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KGRpdiwgJ2lubmVySFRNTCcsIGh0bWxXaXRoVmlkZW9zKTtcbiAgICByZXR1cm4gZGl2O1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyKG1hcmtkb3duOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIFRyaW0gbGVhZGluZyBhbmQgdHJhaWxpbmcgbmV3bGluZXNcbiAgICBtYXJrZG93biA9IG1hcmtkb3duXG4gICAgICAucmVwbGFjZSgvXihcXHN8XFx0KSpcXG4rL2csICcnKVxuICAgICAgLnJlcGxhY2UoLyhcXHN8XFx0KSpcXG4rKFxcc3xcXHQpKiQvZywgJycpO1xuICAgIC8vIFNwbGl0IG1hcmtkb3duIGJ5IGxpbmUgY2hhcmFjdGVyc1xuICAgIGxldCBsaW5lczogc3RyaW5nW10gPSBtYXJrZG93bi5zcGxpdCgnXFxuJyk7XG5cbiAgICAvLyBjaGVjayBob3cgbXVjaCBpbmRlbnRhdGlvbiBpcyB1c2VkIGJ5IHRoZSBmaXJzdCBhY3R1YWwgbWFya2Rvd24gbGluZVxuICAgIGNvbnN0IGZpcnN0TGluZVdoaXRlc3BhY2VNYXRjaCA9IGxpbmVzWzBdLm1hdGNoKC9eKFxcc3xcXHQpKi8pO1xuICAgIGNvbnN0IGZpcnN0TGluZVdoaXRlc3BhY2U6IHN0cmluZyA9IGZpcnN0TGluZVdoaXRlc3BhY2VNYXRjaFxuICAgICAgPyBmaXJzdExpbmVXaGl0ZXNwYWNlTWF0Y2hbMF1cbiAgICAgIDogJyc7XG5cbiAgICAvLyBSZW1vdmUgYWxsIGluZGVudGF0aW9uIHNwYWNlcyBzbyBtYXJrZG93biBjYW4gYmUgcGFyc2VkIGNvcnJlY3RseVxuICAgIGNvbnN0IHN0YXJ0aW5nV2hpdGVzcGFjZVJlZ2V4ID0gbmV3IFJlZ0V4cCgnXicgKyBmaXJzdExpbmVXaGl0ZXNwYWNlKTtcbiAgICBsaW5lcyA9IGxpbmVzLm1hcChmdW5jdGlvbiAobGluZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgIHJldHVybiBsaW5lLnJlcGxhY2Uoc3RhcnRpbmdXaGl0ZXNwYWNlUmVnZXgsICcnKTtcbiAgICB9KTtcblxuICAgIC8vIEpvaW4gbGluZXMgYWdhaW4gd2l0aCBsaW5lIGNoYXJhY3RlcnNcbiAgICBjb25zdCBtYXJrZG93blRvUGFyc2U6IHN0cmluZyA9IGxpbmVzLmpvaW4oJ1xcbicpO1xuXG4gICAgLy8gQ29udmVydCBtYXJrZG93biBpbnRvIGh0bWxcbiAgICBjb25zdCBjb252ZXJ0ZXI6IHNob3dkb3duLkNvbnZlcnRlciA9IG5ldyBzaG93ZG93bi5Db252ZXJ0ZXIoKTtcbiAgICBjb252ZXJ0ZXIuc2V0T3B0aW9uKCdnaENvZGVCbG9ja3MnLCB0cnVlKTtcbiAgICBjb252ZXJ0ZXIuc2V0T3B0aW9uKCd0YXNrbGlzdHMnLCB0cnVlKTtcbiAgICBjb252ZXJ0ZXIuc2V0T3B0aW9uKCd0YWJsZXMnLCB0cnVlKTtcbiAgICBjb252ZXJ0ZXIuc2V0T3B0aW9uKCdsaXRlcmFsTWlkV29yZFVuZGVyc2NvcmVzJywgdHJ1ZSk7XG4gICAgY29udmVydGVyLnNldE9wdGlvbignc2ltcGxlTGluZUJyZWFrcycsIHRoaXMuX3NpbXBsZUxpbmVCcmVha3MpO1xuICAgIGNvbnZlcnRlci5zZXRPcHRpb24oJ2Vtb2ppJywgdHJ1ZSk7XG4gICAgcmV0dXJuIGNvbnZlcnRlci5tYWtlSHRtbChtYXJrZG93blRvUGFyc2UpO1xuICB9XG59XG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=","import { Injectable, SecurityContext } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { HttpClient } from '@angular/common/http';\nimport { isGithubHref, rawGithubHref } from '../markdown-utils/markdown-utils';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common/http\";\nimport * as i2 from \"@angular/platform-browser\";\nexport class TdMarkdownLoaderService {\n _http;\n _sanitizer;\n constructor(_http, _sanitizer) {\n this._http = _http;\n this._sanitizer = _sanitizer;\n }\n async load(url, httpOptions = {}) {\n const sanitizedUrl = this._sanitizer.sanitize(SecurityContext.URL, url) ?? '';\n let urlToGet = sanitizedUrl;\n if (isGithubHref(sanitizedUrl)) {\n urlToGet = rawGithubHref(sanitizedUrl);\n }\n const response = await this._http\n .get(urlToGet, {\n ...httpOptions,\n responseType: 'text',\n observe: 'response',\n })\n .toPromise();\n const contentType = response?.headers.get('Content-Type') ?? '';\n if (contentType.includes('text/plain') ||\n contentType.includes('text/markdown')) {\n return response?.body ?? '';\n }\n else {\n throw Error(`${contentType} is not a handled content type`);\n }\n }\n static ɵfac = function TdMarkdownLoaderService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TdMarkdownLoaderService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.DomSanitizer)); };\n static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: TdMarkdownLoaderService, factory: TdMarkdownLoaderService.ɵfac });\n}\n(() => { (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(TdMarkdownLoaderService, [{\n type: Injectable\n }], () => [{ type: i1.HttpClient }, { type: i2.DomSanitizer }], null); })();\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24tbG9hZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21hcmtkb3duL3NyYy9saWIvbWFya2Rvd24tbG9hZGVyL21hcmtkb3duLWxvYWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFnQixNQUFNLHNCQUFzQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7QUFHL0UsTUFBTSxPQUFPLHVCQUF1QjtJQUNkO0lBQTJCO0lBQS9DLFlBQW9CLEtBQWlCLEVBQVUsVUFBd0I7UUFBbkQsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUFVLGVBQVUsR0FBVixVQUFVLENBQWM7SUFBRyxDQUFDO0lBRTNFLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBVyxFQUFFLGNBQXNCLEVBQUU7UUFDOUMsTUFBTSxZQUFZLEdBQ2hCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNELElBQUksUUFBUSxHQUFXLFlBQVksQ0FBQztRQUNwQyxJQUFJLFlBQVksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQy9CLFFBQVEsR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFxQyxNQUFNLElBQUksQ0FBQyxLQUFLO2FBQ2hFLEdBQUcsQ0FBQyxRQUFRLEVBQUU7WUFDYixHQUFHLFdBQVc7WUFDZCxZQUFZLEVBQUUsTUFBTTtZQUNwQixPQUFPLEVBQUUsVUFBVTtTQUNwQixDQUFDO2FBQ0QsU0FBUyxFQUFFLENBQUM7UUFDZixNQUFNLFdBQVcsR0FBVyxRQUFRLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEUsSUFDRSxXQUFXLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztZQUNsQyxXQUFXLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUNyQyxDQUFDO1lBQ0QsT0FBTyxRQUFRLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM5QixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sS0FBSyxDQUFDLEdBQUcsV0FBVyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQzlELENBQUM7SUFDSCxDQUFDO2lIQTNCVSx1QkFBdUI7Z0VBQXZCLHVCQUF1QixXQUF2Qix1QkFBdUI7O2lGQUF2Qix1QkFBdUI7Y0FEbkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFNlY3VyaXR5Q29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBpc0dpdGh1YkhyZWYsIHJhd0dpdGh1YkhyZWYgfSBmcm9tICcuLi9tYXJrZG93bi11dGlscy9tYXJrZG93bi11dGlscyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUZE1hcmtkb3duTG9hZGVyU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgX3Nhbml0aXplcjogRG9tU2FuaXRpemVyKSB7fVxuXG4gIGFzeW5jIGxvYWQodXJsOiBzdHJpbmcsIGh0dHBPcHRpb25zOiBvYmplY3QgPSB7fSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3Qgc2FuaXRpemVkVXJsOiBzdHJpbmcgPVxuICAgICAgdGhpcy5fc2FuaXRpemVyLnNhbml0aXplKFNlY3VyaXR5Q29udGV4dC5VUkwsIHVybCkgPz8gJyc7XG4gICAgbGV0IHVybFRvR2V0OiBzdHJpbmcgPSBzYW5pdGl6ZWRVcmw7XG4gICAgaWYgKGlzR2l0aHViSHJlZihzYW5pdGl6ZWRVcmwpKSB7XG4gICAgICB1cmxUb0dldCA9IHJhd0dpdGh1YkhyZWYoc2FuaXRpemVkVXJsKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNwb25zZTogSHR0cFJlc3BvbnNlPHN0cmluZz4gfCB1bmRlZmluZWQgPSBhd2FpdCB0aGlzLl9odHRwXG4gICAgICAuZ2V0KHVybFRvR2V0LCB7XG4gICAgICAgIC4uLmh0dHBPcHRpb25zLFxuICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyxcbiAgICAgIH0pXG4gICAgICAudG9Qcm9taXNlKCk7XG4gICAgY29uc3QgY29udGVudFR5cGU6IHN0cmluZyA9IHJlc3BvbnNlPy5oZWFkZXJzLmdldCgnQ29udGVudC1UeXBlJykgPz8gJyc7XG4gICAgaWYgKFxuICAgICAgY29udGVudFR5cGUuaW5jbHVkZXMoJ3RleHQvcGxhaW4nKSB8fFxuICAgICAgY29udGVudFR5cGUuaW5jbHVkZXMoJ3RleHQvbWFya2Rvd24nKVxuICAgICkge1xuICAgICAgcmV0dXJuIHJlc3BvbnNlPy5ib2R5ID8/ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBFcnJvcihgJHtjb250ZW50VHlwZX0gaXMgbm90IGEgaGFuZGxlZCBjb250ZW50IHR5cGVgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { NgModule } from '@angular/core';\nimport { provideHttpClient, withInterceptorsFromDi, } from '@angular/common/http';\nimport { TdMarkdownComponent } from './markdown.component';\nimport { TdMarkdownLoaderService } from './markdown-loader/markdown-loader.service';\nimport * as i0 from \"@angular/core\";\n/**\n * @deprecated This module is deprecated and will be removed in future versions.\n * Please migrate to using standalone components as soon as possible.\n */\nexport class CovalentMarkdownModule {\n static ɵfac = function CovalentMarkdownModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CovalentMarkdownModule)(); };\n static ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: CovalentMarkdownModule });\n static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [\n TdMarkdownLoaderService,\n provideHttpClient(withInterceptorsFromDi()),\n ] });\n}\n(() => { (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CovalentMarkdownModule, [{\n type: NgModule,\n args: [{\n exports: [TdMarkdownComponent],\n imports: [TdMarkdownComponent],\n providers: [\n TdMarkdownLoaderService,\n provideHttpClient(withInterceptorsFromDi()),\n ],\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && i0.ɵɵsetNgModuleScope(CovalentMarkdownModule, { imports: [TdMarkdownComponent], exports: [TdMarkdownComponent] }); })();\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9tYXJrZG93bi9zcmMvbGliL21hcmtkb3duLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsc0JBQXNCLEdBQ3ZCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7O0FBRXBGOzs7R0FHRztBQVNILE1BQU0sT0FBTyxzQkFBc0I7Z0hBQXRCLHNCQUFzQjs0REFBdEIsc0JBQXNCO2lFQUx0QjtZQUNULHVCQUF1QjtZQUN2QixpQkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQzVDOztpRkFFVSxzQkFBc0I7Y0FSbEMsUUFBUTtlQUFDO2dCQUNSLE9BQU8sRUFBRSxDQUFDLG1CQUFtQixDQUFDO2dCQUM5QixPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztnQkFDOUIsU0FBUyxFQUFFO29CQUNULHVCQUF1QjtvQkFDdkIsaUJBQWlCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztpQkFDNUM7YUFDRjs7d0ZBQ1ksc0JBQXNCLGNBTnZCLG1CQUFtQixhQURuQixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBwcm92aWRlSHR0cENsaWVudCxcbiAgd2l0aEludGVyY2VwdG9yc0Zyb21EaSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQgeyBUZE1hcmtkb3duQ29tcG9uZW50IH0gZnJvbSAnLi9tYXJrZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGRNYXJrZG93bkxvYWRlclNlcnZpY2UgfSBmcm9tICcuL21hcmtkb3duLWxvYWRlci9tYXJrZG93bi1sb2FkZXIuc2VydmljZSc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVGhpcyBtb2R1bGUgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9ucy5cbiAqIFBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nIHN0YW5kYWxvbmUgY29tcG9uZW50cyBhcyBzb29uIGFzIHBvc3NpYmxlLlxuICovXG5ATmdNb2R1bGUoe1xuICBleHBvcnRzOiBbVGRNYXJrZG93bkNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtUZE1hcmtkb3duQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgVGRNYXJrZG93bkxvYWRlclNlcnZpY2UsXG4gICAgcHJvdmlkZUh0dHBDbGllbnQod2l0aEludGVyY2VwdG9yc0Zyb21EaSgpKSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ292YWxlbnRNYXJrZG93bk1vZHVsZSB7fVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './public_api';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY292YWxlbnQtbWFya2Rvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL21hcmtkb3duL3NyYy9jb3ZhbGVudC1tYXJrZG93bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuIl19"],"names":["i1","i2"],"mappings":";;;;;;;AAAO,SAAS,iBAAiB,CAAC,GAAG,EAAE;AACvC,IAAI,IAAI,GAAG,EAAE;AACb,QAAQ,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AACrC;AACA,IAAI,OAAO,EAAE;AACb;AACO,SAAS,kBAAkB,CAAC,GAAG,EAAE;AACxC,IAAI,IAAI,GAAG,EAAE;AACb,QAAQ,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AACrC;AACA,IAAI,OAAO,EAAE;AACb;AACO,SAAS,YAAY,CAAC,GAAG,EAAE;AAClC,IAAI,IAAI,GAAG,EAAE;AACb,QAAQ,OAAO,iBAAiB,CAAC;AACjC,aAAa,OAAO,CAAC,YAAY,EAAE,EAAE;AACrC;AACA;AACA;AACA,aAAa,OAAO,CAAC,sCAAsC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE;AAC/E;AACA,IAAI,OAAO,EAAE;AACb;AACO,SAAS,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE;AACzD,IAAI,IAAI,KAAK,IAAI,MAAM,EAAE;AACzB,QAAQ,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,CAAC;AACrD,QAAQ,IAAI,eAAe,GAAG,IAAI;AAClC,QAAQ,MAAM,sBAAsB,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC;AACxF,QAAQ,IAAI,sBAAsB,EAAE;AACpC,YAAY,eAAe,GAAG,sBAAsB;AACpD;AACA,aAAa,IAAI,SAAS,EAAE;AAC5B,YAAY,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa;AAC9C,YAAY,IAAI,MAAM,EAAE;AACxB,gBAAgB,eAAe,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC;AACpF;AACA;AACA,QAAQ,IAAI,eAAe,EAAE;AAC7B,YAAY,eAAe,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAChE,YAAY,OAAO,IAAI;AACvB;AACA;AACA,IAAI,OAAO,KAAK;AAChB;AACO,SAAS,YAAY,CAAC,MAAM,EAAE;AACrC,IAAI,IAAI,MAAM,EAAE;AAChB,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;AAChD,QAAQ,IAAI,IAAI,EAAE;AAClB,YAAY,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;AACvC;AACA;AACA,IAAI,OAAO,KAAK;AAChB;AACO,SAAS,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE;AACnD,IAAI,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,EAAE;AACjD,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;AAChD,QAAQ,IAAI,IAAI,EAAE;AAClB,YAAY,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,aAAa,KAAK,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACvF;AACA;AACA,IAAI,OAAO,KAAK;AAChB;AACA,MAAM,mBAAmB,GAAG,2BAA2B;AAChD,SAAS,aAAa,CAAC,UAAU,EAAE;AAC1C,IAAI,IAAI,UAAU,EAAE;AACpB,QAAQ,IAAI;AACZ,YAAY,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC;AAC3C,YAAY,IAAI,GAAG,CAAC,QAAQ,KAAK,mBAAmB,EAAE;AACtD,gBAAgB,OAAO,GAAG,CAAC,IAAI;AAC/B;AACA,iBAAiB,IAAI,YAAY,CAAC,UAAU,CAAC,EAAE;AAC/C,gBAAgB,GAAG,CAAC,QAAQ,GAAG,mBAAmB;AAClD,gBAAgB,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AACtE,gBAAgB,OAAO,GAAG,CAAC,IAAI;AAC/B;AACA;AACA,QAAQ,MAAM;AACd,YAAY,OAAO,EAAE;AACrB;AACA;AACA,IAAI,OAAO,EAAE;AACb;AACO,SAAS,YAAY,CAAC,IAAI,EAAE;AACnC,IAAI,IAAI;AACR,QAAQ,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;AACxC,QAAQ,OAAO,IAAI,CAAC,QAAQ,KAAK,YAAY;AAC7C;AACA,IAAI,MAAM;AACV,QAAQ,OAAO,KAAK;AACpB;AACA;AACO,SAAS,eAAe,CAAC,IAAI,GAAG,EAAE,EAAE;AAC3C,IAAI,IAAI;AACR,QAAQ,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC;AAClC,QAAQ,OAAO,IAAI,CAAC,QAAQ,KAAK,mBAAmB;AACpD;AACA,IAAI,MAAM;AACV,QAAQ,OAAO,KAAK;AACpB;AACA;AACO,SAAS,mBAAmB,CAAC,IAAI,EAAE;AAC1C,IAAI,MAAM,WAAW,GAAG,iJAAiJ;AACzK,IAAI,MAAM,WAAW,GAAG,sHAAsH;AAC9I,IAAI,MAAM,OAAO,GAAG,+GAA+G;AACnI,IAAI,MAAM,UAAU,GAAG,4HAA4H;AACnJ,IAAI,SAAS,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE;AACvC,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,EAAE,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;AACrD;AACA,QAAQ,OAAO,CAAC,8EAA8E,EAAE,EAAE,CAAC,WAAW,CAAC;AAC/G;AACA,IAAI,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE;AACzC,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;AAC/C;AACA,QAAQ,OAAO,CAAC,+FAA+F,EAAE,EAAE,CAAC,WAAW,CAAC;AAChI;AACA,IAAI,OAAO;AACX,SAAS,OAAO,CAAC,WAAW,EAAE,OAAO;AACrC,SAAS,OAAO,CAAC,WAAW,EAAE,OAAO;AACrC,SAAS,OAAO,CAAC,OAAO,EAAE,OAAO;AACjC,SAAS,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC;AACvC;;ACpHA,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC;AACjB,SAAS,aAAa,CAAC,WAAW,EAAE;AACpC;AACA,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC;AACpD,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;AAClC;AACA;AACA;AACA,SAAS,YAAY,CAAC,WAAW,EAAE,YAAY,EAAE;AACjD,IAAI,IAAI,WAAW,IAAI,YAAY,EAAE;AACrC,QAAQ,IAAI,aAAa,CAAC,WAAW,CAAC,EAAE;AACxC,YAAY,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC;AACnD,YAAY,MAAM,IAAI,GAAG,UAAU,CAAC;AACpC,iBAAiB,KAAK,CAAC,GAAG;AAC1B,iBAAiB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5B,iBAAiB,IAAI,CAAC,GAAG,CAAC;AAC1B,YAAY,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC;AACnD,YAAY,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC9C;AACA,gBAAgB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACxE,gBAAgB,UAAU,CAAC,QAAQ,GAAG,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,CAAC;AACpE;AACA,iBAAiB;AACjB,gBAAgB,UAAU,CAAC,QAAQ,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AAC/D;AACA,YAAY,OAAO,UAAU,CAAC,IAAI;AAClC;AACA,aAAa;AACb,YAAY,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACtE,YAAY,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC9C,gBAAgB,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;AAC/C;AACA,iBAAiB;AACjB,gBAAgB,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AAChD;AACA;AACA;AACA,IAAI,OAAO,EAAE;AACb;AACA,SAAS,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,kBAAkB,EAAE;AACnE,IAAI,IAAI,WAAW,EAAE;AACrB,QAAQ,MAAM,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,WAAW,CAAC;AAC3E,QAAQ;AACR,aAAa,gBAAgB,CAAC,SAAS;AACvC,aAAa,OAAO,CAAC,CAAC,IAAI,KAAK;AAC/B,YAAY,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1C,YAAY,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI;AACzC,YAAY,MAAM,gBAAgB,GAAG,UAAU,CAAC,IAAI,EAAE,kBAAkB,CAAC;AACzE,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE;AACpC,gBAAgB,IAAI,YAAY,EAAE;AAClC,oBAAoB,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC;AACzD,oBAAoB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI;AACxC;AACA;AACA,iBAAiB,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;AACxD;AACA;AACA,gBAAgB,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,gBAAgB,EAAE;AACtE;AACA,oBAAoB,MAAM,eAAe,GAAG,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AACzF,oBAAoB,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC,WAAW,EAAE,eAAe,CAAC;AACzE,oBAAoB,IAAI,YAAY,EAAE;AACtC,wBAAwB,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC;AAC7D;AACA,oBAAoB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI;AACxC;AACA,gBAAgB,IAAI,CAAC,MAAM,GAAG,gBAAgB,GAAG,OAAO,GAAG,QAAQ;AACnE;AACA,iBAAiB;AACjB;AACA,gBAAgB,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAClD,oBAAoB,IAAI,YAAY,EAAE;AACtC,wBAAwB,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC;AAC7D;AACA,oBAAoB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI;AACxC;AACA,gBAAgB,IAAI,CAAC,MAAM,GAAG,QAAQ;AACtC;AACA,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,aAAa,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC;AAC9D;AACA,IAAI,OAAO,IAAI;AACf;AACA,SAAS,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE;AAC/C,IAAI,IAAI,WAAW,EAAE;AACrB,QAAQ,MAAM,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,WAAW,CAAC;AAC3E,QAAQ;AACR,aAAa,gBAAgB,CAAC,UAAU;AACxC,aAAa,OAAO,CAAC,CAAC,KAAK,KAAK;AAChC,YAAY,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE;AACvD,YAAY,IAAI;AAChB;AACA,gBAAgB,IAAI,GAAG,CAAC,GAAG,CAAC;AAC5B,gBAAgB,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE;AACvC,oBAAoB,KAAK,CAAC,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC;AAClD;AACA;AACA,YAAY,MAAM;AAClB,gBAAgB,KAAK,CAAC,GAAG,GAAG,YAAY,CAAC,YAAY,CAAC,WAAW;AACjE,sBAAsB,aAAa,CAAC,WAAW;AAC/C,sBAAsB,WAAW,EAAE,GAAG,CAAC;AACvC;AACA;AACA,YAAY,IAAI,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AAC5C,gBAAgB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9C,gBAAgB,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACnD,oBAAoB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC;AAC5D,oBAAoB,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI;AACxC;AACA;AACA,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,aAAa,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC;AAC9D;AACA,IAAI,OAAO,IAAI;AACf;AACA,SAAS,gBAAgB,CAAC,IAAI,EAAE;AAChC,IAAI,IAAI,IAAI,EAAE;AACd,QAAQ,MAAM,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,WAAW,CAAC;AAC3E,QAAQ;AACR,aAAa,gBAAgB,CAAC,wBAAwB;AACtD,aAAa,OAAO,CAAC,CAAC,OAAO,KAAK;AAClC,YAAY,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC;AACzE,YAAY,MAAM,EAAE,GAAG,YAAY,CAAC,iBAAiB,CAAC;AACtD,YAAY,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;AAC1C,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,aAAa,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC;AAC9D;AACA,IAAI,OAAO,IAAI;AACf;AACA,SAAS,2BAA2B,CAAC,IAAI,EAAE;AAC3C,IAAI,IAAI,IAAI,EAAE;AACd,QAAQ,MAAM,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,WAAW,CAAC;AAC3E,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK;AAC3D,YAAY;AACZ,iBAAiB,gBAAgB,CAAC,CAAC,oBAAoB,EAAE,SAAS,CAAC,EAAE,CAAC;AACtE,iBAAiB,OAAO,CAAC,CAAC,KAAK,KAAK;AACpC,gBAAgB,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC;AAC1E,aAAa,CAAC;AACd,SAAS,CAAC;AACV,QAAQ,OAAO,IAAI,aAAa,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC;AAC9D;AACA,IAAI,OAAO,IAAI;AACf;AACA;AACA,SAAS,gBAAgB,CAAC,KAAK,EAAE;AACjC,IAAI,IAAI,SAAS,GAAG,KAAK;AACzB,IAAI,IAAI,QAAQ;AAChB,IAAI,GAAG;AACP,QAAQ,QAAQ,GAAG,SAAS;AAC5B,QAAQ,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AACrD,KAAK,QAAQ,QAAQ,KAAK,SAAS;AACnC,IAAI,OAAO,SAAS;AACpB;AACO,MAAM,mBAAmB,CAAC;AACjC,IAAI,SAAS;AACb,IAAI,WAAW;AACf,IAAI,aAAa;AACjB,IAAI,OAAO;AACX,IAAI,QAAQ;AACZ,IAAI,iBAAiB,GAAG,KAAK;AAC7B,IAAI,UAAU;AACd,IAAI,OAAO;AACX,IAAI,SAAS,GAAG,KAAK;AACrB,IAAI,mBAAmB;AACvB,IAAI,eAAe;AACnB;AACA;AACA;AACA,IAAI,KAAK,GAAG,aAAa;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE;AACzB,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,gBAAgB,CAAC,gBAAgB,EAAE;AAC3C,QAAQ,IAAI,CAAC,iBAAiB,GAAG,gBAAgB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,SAAS,CAAC,SAAS,EAAE;AAC7B,QAAQ,IAAI,CAAC,UAAU,GAAG,SAAS;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE;AACvB,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,kBAAkB,CAAC,UAAU,EAAE;AACvC,QAAQ,IAAI,CAAC,mBAAmB,GAAG,UAAU;AAC7C;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,GAAG,IAAI,YAAY,EAAE;AACxC;AACA;AACA;AACA;AACA,IAAI,YAAY,GAAG,IAAI,YAAY,EAAE;AACrC,IAAI,WAAW,CAAC,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE;AAChE,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS;AAClC,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW;AACtC,QAAQ,IAAI,CAAC,aAAa,GAAG,aAAa;AAC1C,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;AAC9B;AACA,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB;AACA,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;AAC7B,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC;AAC/B,YAAY,CAAC,OAAO,CAAC,kBAAkB,CAAC;AACxC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;AACnC,YAAY,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC;AAC9E;AACA,aAAa;AACb,YAAY,IAAI,CAAC,OAAO,EAAE;AAC1B;AACA;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC5B,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC;AACzE;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI;AAC7B;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM;AAC7C,YAAY,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,KAAK,KAAK;AAC7G,gBAAgB,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU;AAChD,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;AAC9C,oBAAoB,YAAY,CAAC,OAAO,CAAC,EAAE;AAC3C,oBAAoB,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAClD;AACA,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;AACnD,oBAAoB,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,EAAE;AACnE,oBAAoB,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;AACtD;AACA,aAAa,CAAC;AACd,SAAS,CAAC;AACV;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,eAAe,IAAI;AAChC;AACA,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5C;AACA,aAAa,IAAI,IAAI,CAAC,SAAS,EAAE;AACjC,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,QAAQ,EAAE;AAC3B,QAAQ,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;AACpD;AACA,YAAY,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,WAAW,EAAE,EAAE,CAAC;AACvF;AACA,YAAY,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC3D;AACA;AACA,QAAQ,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,UAAU,CAAC,MAAM,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AACvI,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AAChC;AACA,IAAI,kBAAkB,CAAC,KAAK,EAAE;AAC9B,QAAQ,KAAK,CAAC,cAAc,EAAE;AAC9B,QAAQ,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AAC9C,QAAQ,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxC,QAAQ,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC;AAClE;AACA,IAAI,sBAAsB,CAAC,KAAK,EAAE;AAClC,QAAQ,KAAK,CAAC,cAAc,EAAE;AAC9B,QAAQ,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AAC9C,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;AACtC;AACA,IAAI,kBAAkB,CAAC,SAAS,EAAE;AAClC;AACA;AACA,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC;AACvD,QAAQ,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,GAAG,CAAC;AACvE,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,2BAA2B,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE;AACpH,QAAQ,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,mBAAmB,CAAC;AACzG,QAAQ,MAAM,uBAAuB,GAAG,kBAAkB,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC;AAClG,QAAQ,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,uBAAuB,CAAC;AAC5E,QAAQ,MAAM,cAAc,GAAG,mBAAmB,CAAC,kBAAkB,CAAC;AACtE,QAAQ,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,cAAc,CAAC;AACpE,QAAQ,OAAO,GAAG;AAClB;AACA,IAAI,OAAO,CAAC,QAAQ,EAAE;AACtB;AACA,QAAQ,QAAQ,GAAG;AACnB,aAAa,OAAO,CAAC,eAAe,EAAE,EAAE;AACxC,aAAa,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;AACjD;AACA,QAAQ,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;AACxC;AACA,QAAQ,MAAM,wBAAwB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;AACpE,QAAQ,MAAM,mBAAmB,GAAG;AACpC,cAAc,wBAAwB,CAAC,CAAC;AACxC,cAAc,EAAE;AAChB;AACA,QAAQ,MAAM,uBAAuB,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,mBAAmB,CAAC;AAC7E,QAAQ,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE;AAC1C,YAAY,OAAO,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;AAC5D,SAAS,CAAC;AACV;AACA,QAAQ,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAChD;AACA,QAAQ,MAAM,SAAS,GAAG,IAAI,QAAQ,CAAC,SAAS,EAAE;AAClD,QAAQ,SAAS,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC;AACjD,QAAQ,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC;AAC9C,QAAQ,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC3C,QAAQ,SAAS,CAAC,SAAS,CAAC,2BAA2B,EAAE,IAAI,CAAC;AAC9D,QAAQ,SAAS,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,iBAAiB,CAAC;AACvE,QAAQ,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC;AAC1C,QAAQ,OAAO,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC;AAClD;AACA,IAAI,OAAO,IAAI,GAAG,SAAS,2BAA2B,CAAC,iBAAiB,EAAE,EAAE,OAAO,KAAK,iBAAiB,IAAI,mBAAmB,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AACrR,IAAI,OAAO,IAAI,iBAAiB,EAAE,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,gCAAgC,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE;AAC5M,YAAY,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AACpC,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,EAAE,OAAO,EAAE,EAAE,eAAe,EAAE,iBAAiB,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,oBAAoB,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,4BAA4B,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE;AAC9Y,YAAY,EAAE,CAAC,eAAe,EAAE;AAChC,YAAY,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAC9B,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,87WAA87W,CAAC,EAAE,CAAC;AACx9W;AACA,CAAC,MAAM,EAAE,CAAC,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,EAAE,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,CAAC;AACvG,QAAQ,IAAI,EAAE,SAAS;AACvB,QAAQ,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,6BAA6B,EAAE,MAAM,EAAE,CAAC,+1VAA+1V,CAAC,EAAE;AAC97V,KAAK,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;AAC3H,YAAY,IAAI,EAAE,WAAW;AAC7B,YAAY,IAAI,EAAE,CAAC,OAAO;AAC1B,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;AACtB,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;AAC/B,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC;AACxB,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;AACrB,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAC;AACjC,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;AAC9B,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC;AAC3B,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG;AACnB,CAAC,MAAM,EAAE,CAAC,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,EAAE,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,EAAE,2BAA2B,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG;;ACnXnM,MAAM,uBAAuB,CAAC;AACrC,IAAI,KAAK;AACT,IAAI,UAAU;AACd,IAAI,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE;AACnC,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU;AACpC;AACA,IAAI,MAAM,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,EAAE,EAAE;AACtC,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE;AACrF,QAAQ,IAAI,QAAQ,GAAG,YAAY;AACnC,QAAQ,IAAI,YAAY,CAAC,YAAY,CAAC,EAAE;AACxC,YAAY,QAAQ,GAAG,aAAa,CAAC,YAAY,CAAC;AAClD;AACA,QAAQ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC;AACpC,aAAa,GAAG,CAAC,QAAQ,EAAE;AAC3B,YAAY,GAAG,WAAW;AAC1B,YAAY,YAAY,EAAE,MAAM;AAChC,YAAY,OAAO,EAAE,UAAU;AAC/B,SAAS;AACT,aAAa,SAAS,EAAE;AACxB,QAAQ,MAAM,WAAW,GAAG,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE;AACvE,QAAQ,IAAI,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC;AAC9C,YAAY,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AACnD,YAAY,OAAO,QAAQ,EAAE,IAAI,IAAI,EAAE;AACvC;AACA,aAAa;AACb,YAAY,MAAM,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,8BAA8B,CAAC,CAAC;AACvE;AACA;AACA,IAAI,OAAO,IAAI,GAAG,SAAS,+BAA+B,CAAC,iBAAiB,EAAE,EAAE,OAAO,KAAK,iBAAiB,IAAI,uBAAuB,EAAE,EAAE,CAAC,QAAQ,CAACA,IAAE,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,QAAQ,CAACC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;AACtM,IAAI,OAAO,KAAK,iBAAiB,EAAE,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,OAAO,EAAE,uBAAuB,CAAC,IAAI,EAAE,CAAC;AACjI;AACA,CAAC,MAAM,EAAE,CAAC,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,EAAE,CAAC,iBAAiB,CAAC,uBAAuB,EAAE,CAAC;AAC3G,QAAQ,IAAI,EAAE;AACd,KAAK,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,EAAED,IAAE,CAAC,UAAU,EAAE,EAAE,EAAE,IAAI,EAAEC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG;;ACpC/E;AACA;AACA;AACA;AACO,MAAM,sBAAsB,CAAC;AACpC,IAAI,OAAO,IAAI,GAAG,SAAS,8BAA8B,CAAC,iBAAiB,EAAE,EAAE,OAAO,KAAK,iBAAiB,IAAI,sBAAsB,GAAG,CAAC,EAAE;AAC5I,IAAI,OAAO,IAAI,iBAAiB,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC;AACrF,IAAI,OAAO,IAAI,iBAAiB,EAAE,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE;AACjE,YAAY,uBAAuB;AACnC,YAAY,iBAAiB,CAAC,sBAAsB,EAAE,CAAC;AACvD,SAAS,EAAE,CAAC;AACZ;AACA,CAAC,MAAM,EAAE,CAAC,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,EAAE,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,CAAC;AAC1G,QAAQ,IAAI,EAAE,QAAQ;AACtB,QAAQ,IAAI,EAAE,CAAC;AACf,gBAAgB,OAAO,EAAE,CAAC,mBAAmB,CAAC;AAC9C,gBAAgB,OAAO,EAAE,CAAC,mBAAmB,CAAC;AAC9C,gBAAgB,SAAS,EAAE;AAC3B,oBAAoB,uBAAuB;AAC3C,oBAAoB,iBAAiB,CAAC,sBAAsB,EAAE,CAAC;AAC/D,iBAAiB;AACjB,aAAa;AACb,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG;AACzB,CAAC,YAAY,EAAE,CAAC,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,EAAE,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,EAAE,OAAO,EAAE,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG;;AC5BzL;AACA;AACA;;;;"}
package/index.d.ts CHANGED
@@ -1,5 +1,114 @@
1
+ import * as i0 from '@angular/core';
2
+ import { OnChanges, AfterViewInit, OnDestroy, EventEmitter, Renderer2, ElementRef, NgZone, SimpleChanges } from '@angular/core';
3
+ import { DomSanitizer } from '@angular/platform-browser';
4
+ import { HttpClient } from '@angular/common/http';
5
+
6
+ declare class TdMarkdownComponent implements OnChanges, AfterViewInit, OnDestroy {
7
+ private _renderer;
8
+ private _elementRef;
9
+ private _domSanitizer;
10
+ private _ngZone;
11
+ private _content;
12
+ private _simpleLineBreaks;
13
+ private _hostedUrl;
14
+ private _anchor;
15
+ private _viewInit;
16
+ private _fileLinkExtensions;
17
+ private _anchorListener?;
18
+ /**
19
+ * .td-markdown class added to host so ::ng-deep gets scoped.
20
+ */
21
+ class: string;
22
+ /**
23
+ * content?: string
24
+ *
25
+ * Markdown format content to be parsed as html markup.
26
+ *
27
+ * e.g. README.md content.
28
+ */
29
+ set content(content: string);
30
+ /**
31
+ * simpleLineBreaks?: string
32
+ *
33
+ * Sets whether newline characters inside paragraphs and spans are parsed as <br/>.
34
+ * Defaults to false.
35
+ */
36
+ set simpleLineBreaks(simpleLineBreaks: boolean);
37
+ /**
38
+ * hostedUrl?: string
39
+ *
40
+ * If markdown contains relative paths, this is required to generate correct urls.
41
+ *
42
+ */
43
+ set hostedUrl(hostedUrl: string);
44
+ /**
45
+ * anchor?: string
46
+ *
47
+ * Anchor to jump to.
48
+ *
49
+ */
50
+ set anchor(anchor: string);
51
+ /**
52
+ * The file extensions to monitor for in anchor tags. If an anchor's `href` ends
53
+ * with these extensions, an event will be emitted instead of performing the default click action.
54
+ * Example values: [".ipynb", ".zip", ".docx"]
55
+ */
56
+ set fileLinkExtensions(extensions: string[] | undefined);
57
+ /**
58
+ * Event emitted when an anchor tag with an `href` matching the specified
59
+ * fileLinkExtensions is clicked. The emitted value is the URL of the clicked anchor.
60
+ */
61
+ fileLinkClicked: EventEmitter<URL>;
62
+ /**
63
+ * contentReady?: function
64
+ * Event emitted after the markdown content rendering is finished.
65
+ */
66
+ contentReady: EventEmitter<void>;
67
+ constructor(_renderer: Renderer2, _elementRef: ElementRef, _domSanitizer: DomSanitizer, _ngZone: NgZone);
68
+ ngOnChanges(changes: SimpleChanges): void;
69
+ ngAfterViewInit(): void;
70
+ ngOnDestroy(): void;
71
+ refresh(): void;
72
+ /**
73
+ * General method to parse a string markdown into HTML Elements and load them into the container
74
+ */
75
+ private _loadContent;
76
+ private handleAnchorClicks;
77
+ private handleFileAnchorClicks;
78
+ private _elementFromString;
79
+ private _render;
80
+ static ɵfac: i0.ɵɵFactoryDeclaration<TdMarkdownComponent, never>;
81
+ static ɵcmp: i0.ɵɵComponentDeclaration<TdMarkdownComponent, "td-markdown", never, { "content": { "alias": "content"; "required": false; }; "simpleLineBreaks": { "alias": "simpleLineBreaks"; "required": false; }; "hostedUrl": { "alias": "hostedUrl"; "required": false; }; "anchor": { "alias": "anchor"; "required": false; }; "fileLinkExtensions": { "alias": "fileLinkExtensions"; "required": false; }; }, { "fileLinkClicked": "fileLinkClicked"; "contentReady": "contentReady"; }, never, ["*"], true, never>;
82
+ }
83
+
1
84
  /**
2
- * Generated bundle index. Do not edit.
85
+ * @deprecated This module is deprecated and will be removed in future versions.
86
+ * Please migrate to using standalone components as soon as possible.
3
87
  */
4
- /// <amd-module name="@covalent/markdown" />
5
- export * from './public_api';
88
+ declare class CovalentMarkdownModule {
89
+ static ɵfac: i0.ɵɵFactoryDeclaration<CovalentMarkdownModule, never>;
90
+ static ɵmod: i0.ɵɵNgModuleDeclaration<CovalentMarkdownModule, never, [typeof TdMarkdownComponent], [typeof TdMarkdownComponent]>;
91
+ static ɵinj: i0.ɵɵInjectorDeclaration<CovalentMarkdownModule>;
92
+ }
93
+
94
+ declare function removeLeadingHash(str: string): string;
95
+ declare function removeTrailingHash(str: string | null): string;
96
+ declare function genHeadingId(str: string): string;
97
+ declare function scrollToAnchor(scope: HTMLElement, anchor: string, tryParent: boolean): boolean;
98
+ declare function isAnchorLink(anchor?: HTMLAnchorElement): boolean;
99
+ declare function isFileLink(anchor: HTMLAnchorElement, fileExtensions: string[] | undefined): boolean;
100
+ declare function rawGithubHref(githubHref?: string): string;
101
+ declare function isGithubHref(href?: string): boolean;
102
+ declare function isRawGithubHref(href?: string): boolean;
103
+ declare function renderVideoElements(html: string): string;
104
+
105
+ declare class TdMarkdownLoaderService {
106
+ private _http;
107
+ private _sanitizer;
108
+ constructor(_http: HttpClient, _sanitizer: DomSanitizer);
109
+ load(url: string, httpOptions?: object): Promise<string>;
110
+ static ɵfac: i0.ɵɵFactoryDeclaration<TdMarkdownLoaderService, never>;
111
+ static ɵprov: i0.ɵɵInjectableDeclaration<TdMarkdownLoaderService>;
112
+ }
113
+
114
+ export { CovalentMarkdownModule, TdMarkdownComponent, TdMarkdownLoaderService, genHeadingId, isAnchorLink, isFileLink, isGithubHref, isRawGithubHref, rawGithubHref, removeLeadingHash, removeTrailingHash, renderVideoElements, scrollToAnchor };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@covalent/markdown",
3
- "version": "10.4.0-beta.3",
3
+ "version": "11.0.0-beta.1",
4
4
  "description": "Teradata UI Platform Markdown Module",
5
5
  "keywords": [
6
6
  "angular",
@@ -19,9 +19,9 @@
19
19
  "author": "Teradata UX",
20
20
  "peerDependencies": {
21
21
  "showdown": "^2.1.0",
22
- "@angular/common": "19.x.x",
23
- "@angular/core": "19.x.x",
24
- "@angular/platform-browser": "19.x.x"
22
+ "@angular/common": "20.x.x",
23
+ "@angular/core": "20.x.x",
24
+ "@angular/platform-browser": "20.x.x"
25
25
  },
26
26
  "dependencies": {
27
27
  "tslib": "^2.8.1"
@@ -42,6 +42,6 @@
42
42
  "typings": "index.d.ts",
43
43
  "sideEffects": false,
44
44
  "scripts": {
45
- "prepublishOnly": "node --eval \"console.error('ERROR: Trying to publish a package that has been compiled by Ivy in full compilation mode. This is not allowed.\\nPlease delete and rebuild the package with Ivy partial compilation mode, before attempting to publish.\\n')\" && exit 1"
45
+ "prepublishOnly": "node --eval \"console.error('ERROR: Trying to publish a package that has been compiled in full compilation mode. This is not allowed.\\nPlease delete and rebuild the package with partial compilation mode, before attempting to publish.\\n')\" && exit 1"
46
46
  }
47
47
  }
@@ -1,11 +0,0 @@
1
- import { DomSanitizer } from '@angular/platform-browser';
2
- import { HttpClient } from '@angular/common/http';
3
- import * as i0 from "@angular/core";
4
- export declare class TdMarkdownLoaderService {
5
- private _http;
6
- private _sanitizer;
7
- constructor(_http: HttpClient, _sanitizer: DomSanitizer);
8
- load(url: string, httpOptions?: object): Promise<string>;
9
- static ɵfac: i0.ɵɵFactoryDeclaration<TdMarkdownLoaderService, never>;
10
- static ɵprov: i0.ɵɵInjectableDeclaration<TdMarkdownLoaderService>;
11
- }
@@ -1,10 +0,0 @@
1
- export declare function removeLeadingHash(str: string): string;
2
- export declare function removeTrailingHash(str: string | null): string;
3
- export declare function genHeadingId(str: string): string;
4
- export declare function scrollToAnchor(scope: HTMLElement, anchor: string, tryParent: boolean): boolean;
5
- export declare function isAnchorLink(anchor?: HTMLAnchorElement): boolean;
6
- export declare function isFileLink(anchor: HTMLAnchorElement, fileExtensions: string[] | undefined): boolean;
7
- export declare function rawGithubHref(githubHref?: string): string;
8
- export declare function isGithubHref(href?: string): boolean;
9
- export declare function isRawGithubHref(href?: string): boolean;
10
- export declare function renderVideoElements(html: string): string;
@@ -1,80 +0,0 @@
1
- import { AfterViewInit, ElementRef, EventEmitter, Renderer2, OnChanges, SimpleChanges, NgZone, OnDestroy } from '@angular/core';
2
- import { DomSanitizer } from '@angular/platform-browser';
3
- import * as i0 from "@angular/core";
4
- export declare class TdMarkdownComponent implements OnChanges, AfterViewInit, OnDestroy {
5
- private _renderer;
6
- private _elementRef;
7
- private _domSanitizer;
8
- private _ngZone;
9
- private _content;
10
- private _simpleLineBreaks;
11
- private _hostedUrl;
12
- private _anchor;
13
- private _viewInit;
14
- private _fileLinkExtensions;
15
- private _anchorListener?;
16
- /**
17
- * .td-markdown class added to host so ::ng-deep gets scoped.
18
- */
19
- class: string;
20
- /**
21
- * content?: string
22
- *
23
- * Markdown format content to be parsed as html markup.
24
- *
25
- * e.g. README.md content.
26
- */
27
- set content(content: string);
28
- /**
29
- * simpleLineBreaks?: string
30
- *
31
- * Sets whether newline characters inside paragraphs and spans are parsed as <br/>.
32
- * Defaults to false.
33
- */
34
- set simpleLineBreaks(simpleLineBreaks: boolean);
35
- /**
36
- * hostedUrl?: string
37
- *
38
- * If markdown contains relative paths, this is required to generate correct urls.
39
- *
40
- */
41
- set hostedUrl(hostedUrl: string);
42
- /**
43
- * anchor?: string
44
- *
45
- * Anchor to jump to.
46
- *
47
- */
48
- set anchor(anchor: string);
49
- /**
50
- * The file extensions to monitor for in anchor tags. If an anchor's `href` ends
51
- * with these extensions, an event will be emitted instead of performing the default click action.
52
- * Example values: [".ipynb", ".zip", ".docx"]
53
- */
54
- set fileLinkExtensions(extensions: string[] | undefined);
55
- /**
56
- * Event emitted when an anchor tag with an `href` matching the specified
57
- * fileLinkExtensions is clicked. The emitted value is the URL of the clicked anchor.
58
- */
59
- fileLinkClicked: EventEmitter<URL>;
60
- /**
61
- * contentReady?: function
62
- * Event emitted after the markdown content rendering is finished.
63
- */
64
- contentReady: EventEmitter<void>;
65
- constructor(_renderer: Renderer2, _elementRef: ElementRef, _domSanitizer: DomSanitizer, _ngZone: NgZone);
66
- ngOnChanges(changes: SimpleChanges): void;
67
- ngAfterViewInit(): void;
68
- ngOnDestroy(): void;
69
- refresh(): void;
70
- /**
71
- * General method to parse a string markdown into HTML Elements and load them into the container
72
- */
73
- private _loadContent;
74
- private handleAnchorClicks;
75
- private handleFileAnchorClicks;
76
- private _elementFromString;
77
- private _render;
78
- static ɵfac: i0.ɵɵFactoryDeclaration<TdMarkdownComponent, never>;
79
- static ɵcmp: i0.ɵɵComponentDeclaration<TdMarkdownComponent, "td-markdown", never, { "content": { "alias": "content"; "required": false; }; "simpleLineBreaks": { "alias": "simpleLineBreaks"; "required": false; }; "hostedUrl": { "alias": "hostedUrl"; "required": false; }; "anchor": { "alias": "anchor"; "required": false; }; "fileLinkExtensions": { "alias": "fileLinkExtensions"; "required": false; }; }, { "fileLinkClicked": "fileLinkClicked"; "contentReady": "contentReady"; }, never, ["*"], true, never>;
80
- }
@@ -1,11 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- import * as i1 from "./markdown.component";
3
- /**
4
- * @deprecated This module is deprecated and will be removed in future versions.
5
- * Please migrate to using standalone components as soon as possible.
6
- */
7
- export declare class CovalentMarkdownModule {
8
- static ɵfac: i0.ɵɵFactoryDeclaration<CovalentMarkdownModule, never>;
9
- static ɵmod: i0.ɵɵNgModuleDeclaration<CovalentMarkdownModule, never, [typeof i1.TdMarkdownComponent], [typeof i1.TdMarkdownComponent]>;
10
- static ɵinj: i0.ɵɵInjectorDeclaration<CovalentMarkdownModule>;
11
- }
package/public_api.d.ts DELETED
@@ -1,4 +0,0 @@
1
- export * from './lib/markdown.module';
2
- export * from './lib/markdown.component';
3
- export * from './lib/markdown-utils/markdown-utils';
4
- export * from './lib/markdown-loader/markdown-loader.service';