{"version":3,"sources":["Markdown.tsx"],"sourcesContent":["// deno-lint-ignore-file no-explicit-any\nimport { Component } from \"uix/components/Component.ts\";\nimport { renderMarkdownToHTMLWithTOC } from \"./Renderer.tsx\";\nimport { UIX } from \"uix\";\nimport { type Path } from \"datex-core-legacy/utils/path.ts\";\n\nexport type TableOfContents = { children?: TableOfContents[], link?: string, html?: string, text?: string };\n\nexport type MarkdownOptions = {\n\t// The stylesheet to use for the markdown viewer.\n\tstylesheet?: string | Path | null,\n\n\t// The mode of the markdown viewer. If set to auto, it will follow the UIX theme.\n\tmode?: \"dark\" | \"light\" | \"auto\",\n\n\t// If set to true, links will be opened in a new tab.\n\topenLinksInNewTab?: boolean,\n\n\t// The scroll behavior when a anchor link is clicked.\n\tscrollBehavior?: \"smooth\" | \"auto\" | \"instant\",\n\n\t// The base URL to use for relative links.\n\tbaseURL?: string | URL | null,\n\n\t// The base URL to use for relative media links.\n\t// If not set and the baseURL is set, the baseURL will be used.\n\t// If set to null, media links will not be modified.\n\tmediaBaseURL?: string | URL | null,\n\n\t// If set to true, code snippets will be prettified before rendering.\n\t// If explicitly set to false, prettier will be totally disabled.\n\t// When not set, only snippets marked with the prettier keyword are prettified.\n\tprettifySnippets?: boolean | null,\n\n\t// If set to true, URLs contained in code snippets will be rendered.\n\tallowCodeURLs?: boolean,\n\n\t// If set to true, all code snippets will be rendered in dark mode.\n\tdarkCodeSnippets?: boolean,\n\n\t// UI appearance options to customize the markdown viewer.\n\tappearance?: {\n\t\tdisableSnippetCopy?: boolean,\n\t\tdisableHeadingAnchors?: boolean\n\t},\n\n\t// If set to true, the table of contents will be disabled.\n\t// If set to false, the TOC will be rendered at the top of the markdown viewer.\n\t// If not set, the TOC will be rendered only if a <unyt-toc/> reference is found in the markdown.\n\tdisableTOC?: boolean | null,\n\n\t// The container to render the table of contents in.\n\ttocContainer?: HTMLElement,\n\n\t// A custom function to generate the table of contents.\n\ttocGenerator?: (toc: TableOfContents[]) => HTMLElement\n}\n\nexport const Markdown = blankTemplate((props: ({ \n\tchildren?: any | any[], \n\tvalue?: never \n} | { \n\tvalue: string,\n\tchildren?: never \n}) & MarkdownOptions) => {\n\tconst {children, value} = props;\n\tconst stylesheet = props.stylesheet ?? null;\n\tif (stylesheet)\n\t\tdelete props.stylesheet;\n\treturn <MarkdownWrapper {...props} innerStylesheet={stylesheet} value={\n\t\tchildren?.length ? (children as any[]).map(e => {\n\t\t\tif (typeof e === \"string\")\n\t\t\t\treturn e;\n\t\t\tif (e instanceof HTMLElement && e.tagName === \"BR\")\n\t\t\t\treturn \"\\n\";\n\t\t\tif (e instanceof HTMLElement)\n\t\t\t\treturn e.outerHTML;\n\t\t}).join(\"\\n\") + '\\n' : \n\t\tvalue!\n\t}/>;\n});\n\n@style(\"./Markdown.scss\")\n@template(async function({value, darkCodeSnippets, innerStylesheet, mode, appearance, tocGenerator, tocContainer, disableTOC, prettifySnippets}) {\n\tconst { html, toc } = await renderMarkdownToHTMLWithTOC(value, prettifySnippets);\n\tconst tocDOM = disableTOC === true ? null : (tocGenerator ?? this.renderTOC)(toc);\n\tconst tocDOMReference = tocContainer ?? html?.querySelector(\"#ufm-toc\");\n\tif (tocDOMReference && tocDOM)\n\t\ttocDOMReference.appendChild(tocDOM);\n\tif (tocContainer) {\n\t\t// @ts-ignore Workaround to avoid circular references in UIX\n\t\tdelete this.properties.tocContainer;\n\t}\n\treturn <shadow-root>\n\t\t<link rel=\"stylesheet\" href=\"https://cdn.unyt.org/unyt-components/theme/fontawesome/css/all.min.css\"/>\n\t\t<div id=\"markdown\" \n\t\t\tstylesheet={innerStylesheet}\n\t\t\tdata-copy-disabled={appearance?.disableSnippetCopy ?? false}\n\t\t\tdata-heading-anchors-disabled={appearance?.disableHeadingAnchors ?? false}\n\t\t\tdata-mode={mode ?? UIX?.Theme?.mode ?? \"dark\"}\n\t\t\tdata-snippets-dark={!!darkCodeSnippets}>\n\t\t\t{(!tocDOMReference && !disableTOC) ? tocDOM : null}\n\t\t\t{html}\n\t\t</div>\n\t</shadow-root>\n})\n@standalone({inheritedFields: [\"properties\"]})\nexport class MarkdownWrapper extends Component<{ value: string, innerStylesheet?: string | Path | null } & MarkdownOptions> {\n\t@id markdown!: HTMLDivElement;\n\tpublic get mode() {\n\t\treturn this.markdown.dataset.mode as \"dark\" | \"light\" | \"auto\";\n\t}\n\tpublic setMode(mode: \"dark\" | \"light\" | \"auto\") {\n\t\tthis.markdown.dataset.mode = mode;\n\t}\n\tpublic listenForTOCNavigation(tocContainer: HTMLElement) {\n\t\ttocContainer.addEventListener(\"click\", event => {\n\t\t\tconst behavior = this.properties.scrollBehavior ?? \"instant\";\n\t\t\tconst { target } = event;\n\t\t\tif (target instanceof HTMLAnchorElement) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst href = target.getAttribute(\"href\");\n\t\t\t\tif (href) {\n\t\t\t\t\tconst target = this.markdown.querySelector(href);\n\t\t\t\t\tconsole.debug(\"[UFM] Navigating to \" + href);\n\t\t\t\t\tif (target)\n\t\t\t\t\t\ttarget.scrollIntoView({ behavior });\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tpublic renderTOC(toc: TableOfContents[]) {\n\t\tconst renderList = (items: TableOfContents[]) => {\n\t\t\treturn (\n\t\t\t\t<ul>\n\t\t\t\t\t{items.map((item) => (\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a href={item.link}>{item.text}</a>\n\t\t\t\t\t\t{(item.children?.length) ? renderList(item.children) : null}\n\t\t\t\t\t</li>\n\t\t\t\t\t))}\n\t\t\t\t</ul>\n\t\t\t);\n\t\t};\n\t\treturn <div>\n\t\t\t{renderList(toc)}\n\t\t</div>\n\t}\n\n\tprotected override onCreate(): void | Promise<void> {\n\t\t// @ts-ignore Disable to avoid data transfer when in SSR\n\t\tdelete this.properties.value;\n\n\t\tthis.handleRelativeURLs();\n\t\tthis.handleCodeURLs();\n\t}\n\n\tprivate handleCodeURLs() {\n\t\tif (this.properties.allowCodeURLs !== false)\n\t\t\tthis.markdown.querySelectorAll<HTMLSpanElement>(\"pre code span\").forEach((elem) => {\n\t\t\t\tconst url = elem.innerText.trimStart();\n\t\t\t\tif (url.startsWith(\"https://\"))\n\t\t\t\t\telem.replaceWith(\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t{' '.repeat(elem.innerText.length - url.length)}\n\t\t\t\t\t\t\t<a href={url}>{url}</a>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)\n\t\t\t});\n\t}\n\n\tprivate handleRelativeURLs() {\n\t\tif (this.properties.baseURL) {\n\t\t\tfor (const elem of Array.from(this.markdown.querySelectorAll(\"a\"))) {\n\t\t\t\tconst href = elem.getAttribute(\"href\");\n\t\t\t\tif (!href || href.startsWith(\"#\") || href.indexOf('://') > 0 || href.indexOf('//') === 0)\n\t\t\t\t\tcontinue;\n\t\t\t\tconst url = new URL(href, this.properties.baseURL);\n\t\t\t\telem.setAttribute(\"href\", url.href);\n\t\t\t}\n\t\t\tif (this.properties.mediaBaseURL !== null)\n\t\t\t\tfor (const elem of Array.from(this.markdown.querySelectorAll(\"img, video, audio, source\"))) {\n\t\t\t\t\tconst src = elem.getAttribute(\"src\");\n\t\t\t\t\tif (!src || src.indexOf('://') > 0 || src.indexOf('//') === 0)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tconst url = new URL(src, this.properties.mediaBaseURL ?? this.properties.baseURL);\n\t\t\t\t\telem.setAttribute(\"src\", url.href);\n\t\t\t\t}\n\t\t}\n\t}\n\n\tprotected override onDisplay() {\n\t\tthis.listenForLinkClicks();\n\t\tthis.handleModeChange();\n\t\tthis.listenForSnippetCopy();\n\t\tthis.listenForTabSwitch();\n\t}\n\tprivate async handleModeChange() {\n\t\tif (!this.properties.mode || this.properties.mode === \"auto\") {\n\t\t\tif (!(\"UIX\" in globalThis))\n\t\t\t\tawait import(\"uix\");\n\t\t\teffect(() => this.setMode(val(UIX.Theme.$.mode)));\n\t\t}\n\t}\n\tprivate listenForTabSwitch() {\n\t\tthis.markdown.addEventListener(\"click\", event => {\n\t\t\tconst target = (event.target as HTMLElement)?.closest(\".ufm-tabs-button-container > button\") as HTMLButtonElement | undefined;\n\t\t\tif (target) {\n\t\t\t\tconst buttonContainer = target.parentElement!;\n\t\t\t\tconst buttons = Array.from(buttonContainer.querySelectorAll(\"button\"));\n\t\t\t\tconst contentContainer = buttonContainer.parentElement!;\n\t\t\t\tconst index = buttons.indexOf(target);\n\t\t\t\tbuttons.forEach(button => \n\t\t\t\t\tbutton.setAttribute(\"data-active\", (button === target).toString()));\n\t\t\t\tcontentContainer.querySelectorAll(\".ufm-tab\").forEach((tab, _index) =>\n\t\t\t\t\ttab.setAttribute(\"data-active\", (index === _index).toString())\n\t\t\t\t)\n\t\t\t}\n\t\t});\n\t}\n\tprivate listenForSnippetCopy() {\n\t\tconst toggle = (target: HTMLSpanElement, toggle?: boolean) => {\n\t\t\ttarget.classList.toggle(\"fa-check\", toggle);\n\t\t\ttarget.classList.toggle(\"fa-copy\", toggle === undefined ? undefined : !toggle);\n\t\t}\n\t\tthis.markdown.addEventListener(\"click\", async event => {\n\t\t\tconst { target } = event;\n\t\t\tif (target instanceof HTMLElement && target.classList.contains(\"fa-copy\")) {\n\t\t\t\tconst snippet = target.closest(\"pre\")?.querySelector(\"code\")?.textContent;\n\t\t\t\tif (snippet) {\n\t\t\t\t\tawait navigator.clipboard.writeText(snippet);\n\t\t\t\t\ttoggle(target, true);\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\ttoggle(target, false);\n\t\t\t\t\t}, 2000)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n\tprivate listenForLinkClicks() {\n\t\tthis.markdown.addEventListener(\"click\", event => {\n\t\t\tlet { target } = event;\n\t\t\tconst behavior = this.properties.scrollBehavior ?? \"instant\";\n\t\t\tif (!this.properties?.appearance?.disableHeadingAnchors && target instanceof HTMLElement && target.closest(\".ufm-heading\")) {\n\t\t\t\ttarget.closest(\".ufm-heading\")?.scrollIntoView({ inline: \"start\", behavior});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\twhile (target && target !== this.markdown) {\n\t\t\t\tif (target instanceof HTMLAnchorElement) {\n\t\t\t\t\t// Intercept link click\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif (target.href) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tconst url = new URL(target.href);\n\t\t\t\t\t\tconsole.debug(\"[UFM] Navigating to \" + url);\n\t\t\t\t\t\tif (url.origin === location.origin) {\n\t\t\t\t\t\t\tif (url.pathname === location.pathname) {\n\t\t\t\t\t\t\t\tif (url.hash === \"#top\" || url.hash === \"#\")\n\t\t\t\t\t\t\t\t\tglobalThis.scrollTo({ top: 0, behavior: behavior });\n\t\t\t\t\t\t\t\telse if (url.hash) this.markdown.querySelector(url.hash)?.scrollIntoView({\n\t\t\t\t\t\t\t\t\tbehavior\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else location.href = url.href;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (this.properties.openLinksInNewTab)\n\t\t\t\t\t\t\tglobalThis.open(url.href, \"_blank\");\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tlocation.href = url.href;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\ttarget = (target as HTMLElement).parentElement;\n\t\t\t}\n\t\t});\n\t}\n}"],"names":["Component","markdown","renderMarkdownToHTMLWithTOC","UIX","Markdown","blankTemplate","props","children","value","stylesheet","MarkdownWrapper","innerStylesheet","length","map","e","HTMLElement","tagName","outerHTML","join","style","template","darkCodeSnippets","mode","appearance","tocGenerator","tocContainer","disableTOC","prettifySnippets","html","toc","tocDOM","renderTOC","tocDOMReference","querySelector","appendChild","properties","shadow-root","link","rel","href","div","id","data-copy-disabled","disableSnippetCopy","data-heading-anchors-disabled","disableHeadingAnchors","data-mode","Theme","data-snippets-dark","standalone","inheritedFields","dataset","setMode","listenForTOCNavigation","addEventListener","event","behavior","scrollBehavior","target","HTMLAnchorElement","preventDefault","getAttribute","console","debug","scrollIntoView","renderList","items","ul","item","li","a","text","onCreate","handleRelativeURLs","handleCodeURLs","allowCodeURLs","querySelectorAll","forEach","elem","url","innerText","trimStart","startsWith","replaceWith","span","repeat","baseURL","Array","from","indexOf","URL","setAttribute","mediaBaseURL","src","onDisplay","listenForLinkClicks","handleModeChange","listenForSnippetCopy","listenForTabSwitch","globalThis","effect","val","$","closest","buttonContainer","parentElement","buttons","contentContainer","index","button","toString","tab","_index","toggle","classList","undefined","contains","snippet","textContent","navigator","clipboard","writeText","setTimeout","inline","stopPropagation","origin","location","pathname","hash","scrollTo","top","openLinksInNewTab","open"],"mappings":"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","sourceRoot":"/lib/uix-pwa-0.0.12/components/Markdown/","file":"Markdown.tsx"}