import { compile } from "mdsvex"; import anchor from "$lib/assets/img/anchor.svg"; import { make_slug_processor } from "$lib/utils"; import { toString as to_string } from "hast-util-to-string"; import Prism from "prismjs"; import "prismjs/components/prism-python"; import "prismjs/components/prism-bash"; import "prismjs/components/prism-json"; import "prismjs/components/prism-typescript"; import "prismjs/components/prism-javascript"; import "prismjs/components/prism-csv"; import "prismjs/components/prism-markup"; function plugin() { return function transform(tree: any) { tree.children.forEach((n: any) => { if (n.type === "heading") { } }); }; } const langs = { python: "python", py: "python", bash: "bash", csv: "csv", html: "html", shell: "bash", json: "json", typescript: "typescript", ts: "typescript", javascript: "javascript", js: "javascript", directory: "json" }; function highlight(code: string, lang: string | undefined) { const _lang = langs[lang as keyof typeof langs] || ""; const highlighted = _lang ? `
${Prism.highlight(
				code,
				Prism.languages[_lang],
				_lang
		  )}
` : code; return highlighted; } export async function load({ parent }) { const { components, helpers, modals, py_client, routes, js_client, on_main, wheel } = await parent(); const guide_slug = []; const get_slug = make_slug_processor(); function plugin() { return function transform(tree: any) { tree.children.forEach((n: any) => { if ( n.type === "element" && ["h2", "h3", "h4", "h5", "h6"].includes(n.tagName) ) { const str_of_heading = to_string(n); const slug = get_slug(str_of_heading); guide_slug.push({ text: str_of_heading, href: `#${slug}`, level: parseInt(n.tagName.replace("h", "")) }); if (!n.children) n.children = []; n.properties.className = ["group"]; n.properties.id = [slug]; n.children.push({ type: "element", tagName: "a", properties: { href: `#${slug}`, className: ["invisible", "group-hover-visible"] }, children: [ { type: "element", tagName: "img", properties: { src: anchor, className: ["anchor-img"] }, children: [] } ] }); } }); }; } const compiled = await compile(js_client, { rehypePlugins: [plugin], highlight: { highlighter: highlight } }); let readme_html = await compiled?.code; return { readme_html, components, helpers, modals, routes, py_client }; }