@coderminer/vue-markdown 1.0.0 → 1.0.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.
- package/CHANGELOG.md +116 -0
- package/README.md +7 -2
- package/README.zh-CN.md +6 -3
- package/dist/chunks/MarkdownBlockquote-DVXziX2t.js +0 -2
- package/dist/chunks/MarkdownBreak-BwCi2Itt.js +0 -2
- package/dist/chunks/MarkdownCode-B1k9tmW5.js +0 -2
- package/dist/chunks/MarkdownConfigProvider-5N3ylrIu.js +0 -2
- package/dist/chunks/MarkdownContent-BAK6dqo7.js +0 -2
- package/dist/chunks/MarkdownCustomTag-lZJHsD6f.js +46 -0
- package/dist/chunks/MarkdownEmphasis-CppivOEu.js +0 -2
- package/dist/chunks/MarkdownEmpty-Av5k6bqa.js +0 -2
- package/dist/chunks/MarkdownError-C0sPs5W0.js +0 -2
- package/dist/chunks/MarkdownFootnoteReference-Dy3Khwyj.js +0 -2
- package/dist/chunks/MarkdownFootnotes-BRPzkbXv.js +0 -2
- package/dist/chunks/MarkdownHeading-DaNcP0_6.js +0 -2
- package/dist/chunks/MarkdownHorizontalRule-QNe_cuUI.js +0 -2
- package/dist/chunks/MarkdownHtml-66lYkvwM.js +0 -2
- package/dist/chunks/MarkdownImage-BRy76svs.js +0 -2
- package/dist/chunks/MarkdownInlineCode-MXZYFwex.js +0 -2
- package/dist/chunks/MarkdownLink-Dbx3NwgV.js +0 -2
- package/dist/chunks/MarkdownList-BJ-_C71k.js +0 -2
- package/dist/chunks/MarkdownListItem-Z1EHIY26.js +0 -2
- package/dist/chunks/MarkdownLoading-D-RYtXxf.js +0 -2
- package/dist/chunks/MarkdownParagraph-BxLSmSaG.js +0 -2
- package/dist/chunks/MarkdownRenderer-OlkdsvI3.js +482 -0
- package/dist/chunks/MarkdownRoot-DEE6iVfh.js +0 -2
- package/dist/chunks/MarkdownStrikethrough-CblvbqDk.js +0 -2
- package/dist/chunks/MarkdownStrong-uU5MzAoJ.js +0 -2
- package/dist/chunks/MarkdownTable-DmBTg_CR.js +0 -2
- package/dist/chunks/MarkdownTableCell-eiCJe847.js +0 -2
- package/dist/chunks/MarkdownTableRow-DuJaPntg.js +0 -2
- package/dist/chunks/MarkdownTableSection-PFHz-R33.js +0 -2
- package/dist/chunks/MarkdownTaskItem-BcmKo1lk.js +0 -2
- package/dist/chunks/{MarkdownToc-BdOHF-Yo.js → MarkdownToc-DHWWoH6t.js} +1 -3
- package/dist/chunks/MarkdownTocItem-DT9mR3vL.js +0 -2
- package/dist/chunks/{MermaidLiveEditor-W-qf3G-5.js → MermaidLiveEditor-1TKkI5bp.js} +1 -3
- package/dist/chunks/{VueSyntaxHighlighter-DyLsYMwy.js → VueSyntaxHighlighter-BWpCO-cX.js} +1 -3
- package/dist/chunks/adapters-CMwX_NEI.js +0 -2
- package/dist/chunks/{blank-line-Cb-JBP_5.js → blank-line-CKKsFeKR.js} +1 -3
- package/dist/chunks/codemirror-DyphMAEg.js +0 -2
- package/dist/chunks/config-aRYo2R8_.js +0 -2
- package/dist/chunks/context-8NfW6fxI.js +0 -2
- package/dist/chunks/convert-hast-C4Rg2ZuF.js +6 -0
- package/dist/chunks/default-ZQ5aHh-N.js +3 -0
- package/dist/chunks/diagnostics-CtHoJyiX.js +0 -2
- package/dist/chunks/{export-DZQ3cUry.js → export-BrgMLgUp.js} +13 -14
- package/dist/chunks/hast-to-nodes-DuZsi4XT.js +29 -0
- package/dist/chunks/{lib-BQiWGWpu.js → hast-util-from-html-D3e_iQ89.js} +495 -494
- package/dist/chunks/highlightjs-BxJFpKS1.js +196 -0
- package/dist/chunks/{identity-jZEhX2d5.js → identity-Bi27FKyx.js} +7 -8
- package/dist/chunks/labels-BtHiUTQI.js +0 -2
- package/dist/chunks/lib-CCnkLL6S.js +252 -0
- package/dist/chunks/longest-streak-DZE_EqsU.js +0 -2
- package/dist/chunks/{micromark-factory-space-Db040TnW.js → micromark-factory-space-CpXAnYUY.js} +2 -4
- package/dist/chunks/{normalize-CRYv3Wqt.js → normalize-VKfQXZiK.js} +57 -51
- package/dist/chunks/{plugin-DqkFHyny.js → plugin-YWo5uqTh.js} +1 -2
- package/dist/chunks/preset-BjaOuJUL.js +0 -2
- package/dist/chunks/{registry-DLjr93-V.js → registry-B7BfEkuy.js} +1051 -1045
- package/dist/chunks/{render-Cs8iKrgz.js → render-DAqK0w5J.js} +524 -494
- package/dist/chunks/{default-DWVS-I_8.js → rolldown-runtime-QGRDbDUS.js} +1 -5
- package/dist/chunks/{runtime-DJMnzjah.js → runtime-D95F41zG.js} +145 -117
- package/dist/chunks/security-y4EwUyAs.js +0 -2
- package/dist/chunks/{shared-DNAvZ-UY.js → shared-NjFDPmkb.js} +18 -27
- package/dist/chunks/{space-separated-tokens-CmBjEPdR.js → space-separated-tokens-1ebNqf35.js} +1 -3
- package/dist/chunks/url-D2BoivaE.js +0 -2
- package/dist/chunks/{useActiveHeading-BaGVMJnB.js → useActiveHeading-CnyGTG1u.js} +165 -122
- package/dist/components/CodeBlock.js +1 -1
- package/dist/components/MarkdownCustomTag.js +1 -1
- package/dist/components/MarkdownMath.js +1 -1
- package/dist/components/MarkdownMermaid.d.ts +3 -3
- package/dist/components/MarkdownMermaid.js +1 -1
- package/dist/components/MarkdownRenderer.d.ts +16 -19
- package/dist/components/MarkdownRenderer.js +1 -1
- package/dist/components/MarkdownToc.js +1 -1
- package/dist/components/MermaidBlock.js +1 -1
- package/dist/components/MermaidLiveEditor.js +1 -1
- package/dist/components/VueSyntaxHighlighter.js +1 -1
- package/dist/components/context.d.ts +2 -2
- package/dist/components/index.js +6 -6
- package/dist/components/types.d.ts +34 -2
- package/dist/composables/useMarkdownDocument.d.ts +2 -0
- package/dist/core/hast-nodes.d.ts +0 -3
- package/dist/core/hast-to-nodes.d.ts +9 -0
- package/dist/core/normalize.d.ts +10 -0
- package/dist/core/parts.d.ts +1 -0
- package/dist/core/slugger.d.ts +7 -0
- package/dist/core/types.d.ts +3 -1
- package/dist/headless.js +8 -8
- package/dist/highlight/convert-hast.d.ts +8 -0
- package/dist/highlight/index.d.ts +2 -1
- package/dist/highlight/index.js +4 -3
- package/dist/highlight/shared.d.ts +0 -5
- package/dist/highlight/shiki.js +2 -3
- package/dist/html/index.js +0 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +47 -49
- package/dist/math/index.js +18 -16
- package/dist/mermaid/index.d.ts +2 -1
- package/dist/mermaid/index.js +8 -3
- package/dist/mermaid/plugin.d.ts +3 -0
- package/dist/mermaid/runtime.d.ts +3 -1
- package/dist/mermaid/sanitize-svg-lazy.d.ts +10 -0
- package/dist/mermaid/sanitize-svg.d.ts +3 -0
- package/dist/mermaid/sanitize.d.ts +6 -2
- package/dist/node-components.js +6 -6
- package/dist/pipeline.js +1 -1
- package/dist/plugins.js +1 -1
- package/dist/styles/components.css +25 -0
- package/package.json +6 -3
- package/dist/chunks/MarkdownBlockquote-DVXziX2t.js.map +0 -1
- package/dist/chunks/MarkdownBreak-BwCi2Itt.js.map +0 -1
- package/dist/chunks/MarkdownCode-B1k9tmW5.js.map +0 -1
- package/dist/chunks/MarkdownConfigProvider-5N3ylrIu.js.map +0 -1
- package/dist/chunks/MarkdownContent-BAK6dqo7.js.map +0 -1
- package/dist/chunks/MarkdownCustomTag-BBdn3-WO.js +0 -42
- package/dist/chunks/MarkdownCustomTag-BBdn3-WO.js.map +0 -1
- package/dist/chunks/MarkdownEmphasis-CppivOEu.js.map +0 -1
- package/dist/chunks/MarkdownEmpty-Av5k6bqa.js.map +0 -1
- package/dist/chunks/MarkdownError-C0sPs5W0.js.map +0 -1
- package/dist/chunks/MarkdownFootnoteReference-Dy3Khwyj.js.map +0 -1
- package/dist/chunks/MarkdownFootnotes-BRPzkbXv.js.map +0 -1
- package/dist/chunks/MarkdownHeading-DaNcP0_6.js.map +0 -1
- package/dist/chunks/MarkdownHorizontalRule-QNe_cuUI.js.map +0 -1
- package/dist/chunks/MarkdownHtml-66lYkvwM.js.map +0 -1
- package/dist/chunks/MarkdownImage-BRy76svs.js.map +0 -1
- package/dist/chunks/MarkdownInlineCode-MXZYFwex.js.map +0 -1
- package/dist/chunks/MarkdownLink-Dbx3NwgV.js.map +0 -1
- package/dist/chunks/MarkdownList-BJ-_C71k.js.map +0 -1
- package/dist/chunks/MarkdownListItem-Z1EHIY26.js.map +0 -1
- package/dist/chunks/MarkdownLoading-D-RYtXxf.js.map +0 -1
- package/dist/chunks/MarkdownParagraph-BxLSmSaG.js.map +0 -1
- package/dist/chunks/MarkdownRenderer-DLRRfsdI.js +0 -416
- package/dist/chunks/MarkdownRenderer-DLRRfsdI.js.map +0 -1
- package/dist/chunks/MarkdownRoot-DEE6iVfh.js.map +0 -1
- package/dist/chunks/MarkdownStrikethrough-CblvbqDk.js.map +0 -1
- package/dist/chunks/MarkdownStrong-uU5MzAoJ.js.map +0 -1
- package/dist/chunks/MarkdownTable-DmBTg_CR.js.map +0 -1
- package/dist/chunks/MarkdownTableCell-eiCJe847.js.map +0 -1
- package/dist/chunks/MarkdownTableRow-DuJaPntg.js.map +0 -1
- package/dist/chunks/MarkdownTableSection-PFHz-R33.js.map +0 -1
- package/dist/chunks/MarkdownTaskItem-BcmKo1lk.js.map +0 -1
- package/dist/chunks/MarkdownToc-BdOHF-Yo.js.map +0 -1
- package/dist/chunks/MarkdownTocItem-DT9mR3vL.js.map +0 -1
- package/dist/chunks/MermaidLiveEditor-W-qf3G-5.js.map +0 -1
- package/dist/chunks/VueSyntaxHighlighter-DyLsYMwy.js.map +0 -1
- package/dist/chunks/adapters-CMwX_NEI.js.map +0 -1
- package/dist/chunks/blank-line-Cb-JBP_5.js.map +0 -1
- package/dist/chunks/codemirror-DyphMAEg.js.map +0 -1
- package/dist/chunks/config-aRYo2R8_.js.map +0 -1
- package/dist/chunks/context-8NfW6fxI.js.map +0 -1
- package/dist/chunks/default-DWVS-I_8.js.map +0 -1
- package/dist/chunks/diagnostics-CtHoJyiX.js.map +0 -1
- package/dist/chunks/export-DZQ3cUry.js.map +0 -1
- package/dist/chunks/hast-nodes-C0bX3M5Z.js +0 -35
- package/dist/chunks/hast-nodes-C0bX3M5Z.js.map +0 -1
- package/dist/chunks/highlightjs-BEh-YwEG.js +0 -6041
- package/dist/chunks/highlightjs-BEh-YwEG.js.map +0 -1
- package/dist/chunks/identity-jZEhX2d5.js.map +0 -1
- package/dist/chunks/labels-BtHiUTQI.js.map +0 -1
- package/dist/chunks/lib-BQiWGWpu.js.map +0 -1
- package/dist/chunks/lib-LwqA_W3J.js +0 -127
- package/dist/chunks/lib-LwqA_W3J.js.map +0 -1
- package/dist/chunks/longest-streak-DZE_EqsU.js.map +0 -1
- package/dist/chunks/micromark-factory-space-Db040TnW.js.map +0 -1
- package/dist/chunks/normalize-CRYv3Wqt.js.map +0 -1
- package/dist/chunks/plugin-DqkFHyny.js.map +0 -1
- package/dist/chunks/preset-BjaOuJUL.js.map +0 -1
- package/dist/chunks/registry-DLjr93-V.js.map +0 -1
- package/dist/chunks/render-Cs8iKrgz.js.map +0 -1
- package/dist/chunks/runtime-DJMnzjah.js.map +0 -1
- package/dist/chunks/security-y4EwUyAs.js.map +0 -1
- package/dist/chunks/shared-DNAvZ-UY.js.map +0 -1
- package/dist/chunks/space-separated-tokens-CmBjEPdR.js.map +0 -1
- package/dist/chunks/url-D2BoivaE.js.map +0 -1
- package/dist/chunks/useActiveHeading-BaGVMJnB.js.map +0 -1
- package/dist/highlight/shiki.js.map +0 -1
- package/dist/html/index.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/math/index.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"security-y4EwUyAs.js","names":["defaultUrlTransform","ALLOWED_TAGS","DANGEROUS_TAGS","URL_ATTRIBUTES","GLOBAL_ATTRIBUTES","TAG_ATTRIBUTES","ATTRIBUTE_ALIASES","kebab","value","toAttributeName","key","isAllowedAttribute","name","tagAttributes","tag","isSafeUrl","parseSrcset","candidates","index","urlStart","url","commaSeparated","descriptor","descriptorStart","sanitizeUrlValue","safe","candidate","ALLOWED_STYLE_PROPERTIES","UNSAFE_STYLE","sanitizeStyleValue","declarations","part","separator","rawValue","propertiesToAttrs","attrs","properties","raw","options","safeStyle"],"sources":["../../src/core/security.ts"],"sourcesContent":["import type { Properties } from 'hast'\r\nimport { defaultUrlTransform } from './url'\r\n\r\n/** Tags that may appear in the normalized model. */\r\nexport const ALLOWED_TAGS = new Set([\r\n 'p',\r\n 'h1',\r\n 'h2',\r\n 'h3',\r\n 'h4',\r\n 'h5',\r\n 'h6',\r\n 'em',\r\n 'strong',\r\n 'del',\r\n 'a',\r\n 'img',\r\n 'ul',\r\n 'ol',\r\n 'li',\r\n 'blockquote',\r\n 'hr',\r\n 'table',\r\n 'thead',\r\n 'tbody',\r\n 'tfoot',\r\n 'tr',\r\n 'th',\r\n 'td',\r\n 'caption',\r\n 'colgroup',\r\n 'col',\r\n 'pre',\r\n 'code',\r\n 'br',\r\n 'input',\r\n 'section',\r\n 'div',\r\n 'span',\r\n 'sup',\r\n 'sub',\r\n 'kbd',\r\n 'mark',\r\n 'abbr',\r\n 'details',\r\n 'summary',\r\n 'dl',\r\n 'dt',\r\n 'dd',\r\n 'figure',\r\n 'figcaption',\r\n 'time',\r\n 'b',\r\n 'i',\r\n 's',\r\n 'u',\r\n 'q',\r\n 'ins',\r\n 'picture',\r\n 'source',\r\n 'ruby',\r\n 'rp',\r\n 'rt',\r\n 'samp',\r\n 'var',\r\n 'tt',\r\n 'strike',\r\n])\r\n\r\n/** Tags whose content must never reach the model. */\r\nexport const DANGEROUS_TAGS = new Set([\r\n 'script',\r\n 'style',\r\n 'iframe',\r\n 'object',\r\n 'embed',\r\n 'link',\r\n 'meta',\r\n 'base',\r\n 'form',\r\n 'textarea',\r\n 'select',\r\n 'option',\r\n 'template',\r\n 'noscript',\r\n 'svg',\r\n 'math',\r\n])\r\n\r\nconst URL_ATTRIBUTES = new Set([\r\n 'href',\r\n 'src',\r\n 'cite',\r\n 'poster',\r\n 'action',\r\n 'formaction',\r\n 'data',\r\n 'srcset',\r\n 'xlink:href',\r\n])\r\n\r\nexport { URL_ATTRIBUTES }\r\n\r\nconst GLOBAL_ATTRIBUTES = new Set([\r\n 'id',\r\n 'class',\r\n 'title',\r\n 'lang',\r\n 'dir',\r\n 'role',\r\n 'tabindex',\r\n 'hidden',\r\n 'align',\r\n])\r\n\r\nconst TAG_ATTRIBUTES: Record<string, readonly string[]> = {\r\n a: ['href', 'target', 'rel', 'download', 'hreflang', 'type', 'name'],\r\n img: [\r\n 'src',\r\n 'alt',\r\n 'width',\r\n 'height',\r\n 'loading',\r\n 'decoding',\r\n 'srcset',\r\n 'sizes',\r\n 'referrerpolicy',\r\n 'crossorigin',\r\n ],\r\n ol: ['start', 'reversed', 'type'],\r\n ul: ['type'],\r\n li: ['value'],\r\n input: ['type', 'checked', 'disabled', 'name', 'value'],\r\n td: ['colspan', 'rowspan', 'headers', 'scope'],\r\n th: ['colspan', 'rowspan', 'headers', 'scope', 'abbr'],\r\n table: ['summary'],\r\n col: ['span', 'width'],\r\n colgroup: ['span'],\r\n blockquote: ['cite'],\r\n q: ['cite'],\r\n del: ['cite', 'datetime'],\r\n ins: ['cite', 'datetime'],\r\n time: ['datetime'],\r\n source: ['src', 'srcset', 'sizes', 'media', 'type'],\r\n details: ['open'],\r\n code: ['class'],\r\n pre: ['class'],\r\n abbr: ['title'],\r\n section: ['data-footnotes', 'data-footnote-ref'],\r\n sup: ['data-footnote-ref'],\r\n}\r\n\r\nconst ATTRIBUTE_ALIASES: Record<string, string> = {\r\n classname: 'class',\r\n htmlfor: 'for',\r\n srcset: 'srcset',\r\n colspan: 'colspan',\r\n rowspan: 'rowspan',\r\n charset: 'charset',\r\n httpequiv: 'http-equiv',\r\n tabindex: 'tabindex',\r\n readonly: 'readonly',\r\n maxlength: 'maxlength',\r\n minlength: 'minlength',\r\n autocomplete: 'autocomplete',\r\n referrerpolicy: 'referrerpolicy',\r\n crossorigin: 'crossorigin',\r\n datetime: 'datetime',\r\n}\r\n\r\nfunction kebab(value: string): string {\r\n return value\r\n .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\r\n .replace(/[_\\s]+/g, '-')\r\n .toLowerCase()\r\n}\r\n\r\nexport function toAttributeName(key: string): string {\r\n if (/^data[A-Z]/.test(key)) return `data-${kebab(key.slice(4))}`\r\n // ARIA attribute names are lowercase concatenations, not kebab-case:\r\n // ariaLabelledBy -> aria-labelledby, ariaValueText -> aria-valuetext.\r\n if (/^aria[A-Z]/.test(key)) return `aria-${key.slice(4).toLowerCase()}`\r\n const alias = ATTRIBUTE_ALIASES[key.toLowerCase()]\r\n if (alias) return alias\r\n return key.includes('-') ? key.toLowerCase() : kebab(key)\r\n}\r\n\r\nexport function isAllowedAttribute(tag: string, name: string): boolean {\r\n if (name.startsWith('on')) return false\r\n if (name === 'style' || name === 'srcdoc') return false\r\n if (name.startsWith('aria-') || name.startsWith('data-')) return true\r\n if (GLOBAL_ATTRIBUTES.has(name)) return true\r\n const tagAttributes = TAG_ATTRIBUTES[tag]\r\n if (tagAttributes) return tagAttributes.includes(name)\r\n // Unknown tags are plugin/custom tags: accept safe named props, but still\r\n // reject event handlers and validate URL-bearing attributes below.\r\n return /^[a-z][a-z0-9-]*$/.test(name)\r\n}\r\n\r\nfunction isSafeUrl(value: string, key: string): boolean {\r\n return value.trim() === '' || defaultUrlTransform(value, key) !== ''\r\n}\r\n\r\ninterface SrcsetCandidate {\r\n url: string\r\n descriptor: string\r\n}\r\n\r\n/**\r\n * Split a `srcset` value without breaking commas inside a `data:` URL. The URL\r\n * runs until whitespace, matching the HTML candidate grammar; a trailing comma\r\n * separates the next candidate.\r\n */\r\nfunction parseSrcset(value: string): SrcsetCandidate[] {\r\n const candidates: SrcsetCandidate[] = []\r\n let index = 0\r\n\r\n while (index < value.length) {\r\n while (index < value.length && /[\\s,]/.test(value[index]!)) index++\r\n if (index >= value.length) break\r\n\r\n const urlStart = index\r\n while (index < value.length && !/\\s/.test(value[index]!)) index++\r\n let url = value.slice(urlStart, index)\r\n let commaSeparated = false\r\n while (url.endsWith(',')) {\r\n url = url.slice(0, -1)\r\n commaSeparated = true\r\n }\r\n\r\n let descriptor = ''\r\n if (!commaSeparated) {\r\n const descriptorStart = index\r\n while (index < value.length && value[index] !== ',') index++\r\n descriptor = value.slice(descriptorStart, index).trim()\r\n }\r\n\r\n if (url) candidates.push({ url, descriptor })\r\n if (index < value.length && value[index] === ',') index++\r\n }\r\n\r\n return candidates\r\n}\r\n\r\n/**\r\n * Validate one URL-bearing attribute value. `srcset` holds a comma-separated\r\n * candidate list, so each candidate is checked individually.\r\n */\r\nexport function sanitizeUrlValue(\r\n value: string,\r\n key: string,\r\n): string | undefined {\r\n if (key === 'srcset') {\r\n const safe: string[] = []\r\n for (const candidate of parseSrcset(value)) {\r\n if (!isSafeUrl(candidate.url, 'src')) continue\r\n safe.push(\r\n candidate.descriptor\r\n ? `${candidate.url} ${candidate.descriptor}`\r\n : candidate.url,\r\n )\r\n }\r\n return safe.length > 0 ? safe.join(', ') : undefined\r\n }\r\n return isSafeUrl(value, key) ? value : undefined\r\n}\r\n\r\n// Inline styles are rejected for document content. Trusted engine output\r\n// (highlighters, math) may opt in to a small, non-executable subset so token\r\n// colors survive normalization.\r\nconst ALLOWED_STYLE_PROPERTIES = new Set([\r\n 'color',\r\n 'background-color',\r\n 'font-style',\r\n 'font-weight',\r\n 'text-decoration',\r\n 'opacity',\r\n])\r\n\r\nconst UNSAFE_STYLE =\r\n /url\\s*\\(|expression\\s*\\(|javascript\\s*:|@import|behavior\\s*:|-moz-binding|[<>{}]/i\r\n\r\nexport function sanitizeStyleValue(value: string): string | undefined {\r\n const declarations: string[] = []\r\n for (const part of value.split(';')) {\r\n const separator = part.indexOf(':')\r\n if (separator <= 0) continue\r\n const name = part.slice(0, separator).trim().toLowerCase()\r\n const rawValue = part.slice(separator + 1).trim()\r\n if (!name || !rawValue) continue\r\n if (UNSAFE_STYLE.test(rawValue)) continue\r\n const allowed =\r\n ALLOWED_STYLE_PROPERTIES.has(name) || /^--shiki-[a-z0-9-]+$/.test(name)\r\n if (!allowed) continue\r\n declarations.push(`${name}: ${rawValue}`)\r\n }\r\n return declarations.length > 0 ? declarations.join('; ') : undefined\r\n}\r\n\r\nexport interface PropertiesToAttrsOptions {\r\n /** Allow a constrained inline-style subset for trusted engine output. */\r\n allowStyle?: boolean\r\n}\r\n\r\n/** Convert hast properties into safe, normalized attributes. */\r\nexport function propertiesToAttrs(\r\n tag: string,\r\n properties: Properties | undefined,\r\n options: PropertiesToAttrsOptions = {},\r\n): Record<string, string> {\r\n const attrs: Record<string, string> = {}\r\n if (!properties) return attrs\r\n\r\n for (const key of Object.keys(properties)) {\r\n const raw = properties[key]\r\n if (raw === null || raw === undefined || raw === false) continue\r\n const name = toAttributeName(key)\r\n\r\n let value: string\r\n if (raw === true) {\r\n value = ''\r\n } else if (Array.isArray(raw)) {\r\n value = raw.join(' ')\r\n } else {\r\n value = String(raw)\r\n }\r\n\r\n if (name === 'style') {\r\n if (!options.allowStyle) continue\r\n const safeStyle = sanitizeStyleValue(value)\r\n if (safeStyle === undefined) continue\r\n attrs.style = safeStyle\r\n continue\r\n }\r\n\r\n if (!isAllowedAttribute(tag, name)) continue\r\n\r\n if (URL_ATTRIBUTES.has(name)) {\r\n const safe = sanitizeUrlValue(value, name)\r\n if (safe === undefined) continue\r\n attrs[name] = safe\r\n continue\r\n }\r\n\r\n attrs[name] = value\r\n }\r\n\r\n return attrs\r\n}\r\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shared-DNAvZ-UY.js","names":["_objectSpread2","htmlToMarkdownNodes","hastToMarkdownNodes","MAX_CACHE","cache","plaintextHighlight","code","highlightedNodesFromHtml","html","highlightedNodesFromHast","nodes","cacheKey","_options$theme","_options$colorScheme","highlighter","language","options","clearHighlightCache","isResult","value","result","runHighlighter","key","cached","_unused","oldest","splitHighlightLines","nextKey","splitNode","node","part","splitNodes","lines","list","index","line"],"sources":["../../src/highlight/shared.ts"],"sourcesContent":["import type {\r\n HighlightOptions,\r\n HighlightResult,\r\n MarkdownHighlighter,\r\n MarkdownNode,\r\n} from '../core/types'\r\nimport {\r\n hastToMarkdownNodes,\r\n htmlToMarkdownNodes,\r\n} from '../core/hast-nodes'\r\n\r\nconst MAX_CACHE = 256\r\nconst cache = new Map<string, HighlightResult>()\r\n\r\nexport function plaintextHighlight(\r\n code: string,\r\n language = '',\r\n): HighlightResult {\r\n return {\r\n language,\r\n nodes: [{ kind: 'text', key: 'highlight-0', value: code }],\r\n }\r\n}\r\n\r\n/** Convert trusted engine HTML into normalized nodes. */\r\nexport function highlightedNodesFromHtml(html: string): MarkdownNode[] {\r\n return htmlToMarkdownNodes(html)\r\n}\r\n\r\n/** Convert an already-parsed hast subtree into normalized nodes. */\r\nexport function highlightedNodesFromHast(\r\n nodes: Parameters<typeof hastToMarkdownNodes>[0],\r\n): MarkdownNode[] {\r\n return hastToMarkdownNodes(nodes)\r\n}\r\n\r\nexport function cacheKey(\r\n highlighter: MarkdownHighlighter,\r\n code: string,\r\n language: string,\r\n options: HighlightOptions,\r\n): string {\r\n return [\r\n highlighter.id,\r\n language,\r\n options.theme ?? '',\r\n options.colorScheme ?? '',\r\n JSON.stringify(options),\r\n code,\r\n ].join('\\u001e')\r\n}\r\n\r\nexport function clearHighlightCache(): void {\r\n cache.clear()\r\n}\r\n\r\nfunction isResult(value: unknown): value is HighlightResult {\r\n if (!value || typeof value !== 'object') return false\r\n const result = value as HighlightResult\r\n return typeof result.language === 'string' && Array.isArray(result.nodes)\r\n}\r\n\r\n/**\r\n * Run one adapter safely. Invalid adapters, thrown errors, and malformed\r\n * results fall back to plain text instead of breaking the document.\r\n */\r\nexport function runHighlighter(\r\n highlighter: MarkdownHighlighter | undefined,\r\n code: string,\r\n language: string,\r\n options: HighlightOptions = {},\r\n): HighlightResult {\r\n if (!highlighter) return plaintextHighlight(code, language)\r\n const key = cacheKey(highlighter, code, language, options)\r\n const cached = cache.get(key)\r\n if (cached) return cached\r\n\r\n let result: HighlightResult\r\n try {\r\n const value = highlighter.highlight(code, language, options)\r\n result = isResult(value) ? value : plaintextHighlight(code, language)\r\n } catch {\r\n result = plaintextHighlight(code, language)\r\n }\r\n\r\n cache.set(key, result)\r\n if (cache.size > MAX_CACHE) {\r\n const oldest = cache.keys().next().value\r\n if (oldest !== undefined) cache.delete(oldest)\r\n }\r\n return result\r\n}\r\n\r\n/** Split highlighted nodes into lines while preserving element wrappers. */\r\nexport function splitHighlightLines(\r\n nodes: readonly MarkdownNode[],\r\n): MarkdownNode[][] {\r\n let key = 0\r\n\r\n const nextKey = (): string => `line-${key++}`\r\n\r\n const splitNode = (node: MarkdownNode): MarkdownNode[][] => {\r\n if (node.kind === 'text') {\r\n return node.value.split('\\n').map((part) =>\r\n part === '' ? [] : [{ kind: 'text', key: nextKey(), value: part }],\r\n )\r\n }\r\n if (!('children' in node) || !Array.isArray(node.children)) {\r\n return [[node]]\r\n }\r\n return splitNodes(node.children).map((children) => [\r\n { ...node, key: nextKey(), children } as MarkdownNode,\r\n ])\r\n }\r\n\r\n const splitNodes = (list: readonly MarkdownNode[]): MarkdownNode[][] => {\r\n const lines: MarkdownNode[][] = [[]]\r\n for (const node of list) {\r\n const nodeLines = splitNode(node)\r\n nodeLines.forEach((line, index) => {\r\n if (index > 0) lines.push([])\r\n lines[lines.length - 1]!.push(...line)\r\n })\r\n }\r\n return lines\r\n }\r\n\r\n return splitNodes(nodes)\r\n}\r\n"],"mappings":";;;AAWA,IAAMG,IAAY,KACZC,oBAAQ,IAAI,IAA6B;AAE/C,SAAgBC,EACd,GACA,IAAW,IACM;CACjB,OAAO;EACL;EACA,OAAO,CAAC;GAAE,MAAM;GAAQ,KAAK;GAAe,OAAOC;EAAK,CAAC;CAC3D;AACF;AAGA,SAAgBC,EAAyB,GAA8B;CACrE,OAAON,EAAoBO,CAAI;AACjC;AAGA,SAAgBC,EACd,GACgB;CAChB,OAAOP,EAAoBQ,CAAK;AAClC;AAEA,SAAgBC,EACd,GACA,GACA,GACA,GACQ;;CACR,OAAO;EACLG,EAAY;EACZC;GACA,IAAAC,EAAQ,UAAA,OAAS,KAATJ;GACR,IAAAI,EAAQ,gBAAA,OAAe,KAAfH;EACR,KAAK,UAAUG,CAAO;EACtBV;CACF,CAAC,CAAC,KAAK,GAAQ;AACjB;AAEA,SAAgBW,IAA4B;CAC1C,EAAM,MAAM;AACd;AAEA,SAASC,EAAS,GAA0C;CAC1D,IAAI,CAACC,KAAS,OAAOA,KAAU,UAAU,OAAO;CAChD,IAAMC,IAASD;CACf,OAAO,OAAOC,EAAO,YAAa,YAAY,MAAM,QAAQA,EAAO,KAAK;AAC1E;AAMA,SAAgBC,EACd,GACA,GACA,GACA,IAA4B,CAAC,GACZ;CACjB,IAAI,CAACP,GAAa,OAAOT,EAAmBC,GAAMS,CAAQ;CAC1D,IAAMO,IAAMX,EAASG,GAAaR,GAAMS,GAAUC,CAAO,GACnDO,IAASnB,EAAM,IAAIkB,CAAG;CAC5B,IAAIC,GAAQ,OAAOA;CAEnB,IAAIH;CACJ,IAAI;EACF,IAAMD,IAAQL,EAAY,UAAUR,GAAMS,GAAUC,CAAO;EAC3D,IAASE,EAASC,CAAK,IAAIA,IAAQd,EAAmBC,GAAMS,CAAQ;CACtE,SAAAS,GAAQ;EACN,IAASnB,EAAmBC,GAAMS,CAAQ;CAC5C;CAGA,IADAX,EAAM,IAAIkB,GAAKF,CAAM,GACjBhB,EAAM,OAAOD,GAAW;EAC1B,IAAMsB,IAASrB,EAAM,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;EACnC,AAAIqB,MAAW,KAAA,KAAWrB,EAAM,OAAOqB,CAAM;CAC/C;CACA,OAAOL;AACT;AAGA,SAAgBM,EACd,GACkB;CAClB,IAAIJ,IAAM,GAEJK,UAAwB,QAAQ,OAEhCC,KAAa,MACbC,EAAK,SAAS,SACTA,EAAK,MAAM,MAAM,IAAI,CAAC,CAAC,KAAK,MACjCC,MAAS,KAAK,CAAC,IAAI,CAAC;EAAE,MAAM;EAAQ,KAAKH,EAAQ;EAAG,OAAOG;CAAK,CAAC,CACnE,IAEE,EAAE,cAAcD,MAAS,CAAC,MAAM,QAAQA,EAAK,QAAQ,IAChD,CAAC,CAACA,CAAI,CAAC,IAETE,EAAWF,EAAK,QAAQ,CAAC,CAAC,KAAK,MAAa,CAAA7B,EAAAA,EAAA,CAAA,GAC5C6B,CAAA,GAAA,CAAA,GAAA;EAAM,KAAKF,EAAQ;EAAG;CAAS,CAAA,CACtC,CAAC,GAGGI,KAAc,MAAoD;EACtE,IAAMC,IAA0B,CAAC,CAAC,CAAC;EACnC,KAAK,IAAMH,KAAQI,GAEjB,EAD4BJ,CAC5B,CAAA,CAAU,SAAS,GAAM,MAAU;GAEjC,AADIK,IAAQ,KAAGF,EAAM,KAAK,CAAC,CAAC,GAC5BA,EAAMA,EAAM,SAAS,EAAE,CAAE,KAAK,GAAGG,CAAI;EACvC,CAAC;EAEH,OAAOH;CACT;CAEA,OAAOD,EAAWrB,CAAK;AACzB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"space-separated-tokens-CmBjEPdR.js","names":["types","html","svg","htmlBase","svgBase","parse","stringify","__exportAll","Schema","normal","property","space","merge","definition","definitions","normalize","value","Info","attribute","types_exports","boolean","booleanish","commaOrSpaceSeparated","commaSeparated","number","overloadedBoolean","spaceSeparated","powers","increment","checks","DefinedInfo","index","mark","mask","check","key","create","properties","normals","info","aria","caseSensitiveTransform","attributes","caseInsensitiveTransform","html$1","svg$1","xlink","xmlns","xml","cap","dash","valid","find","Type","schema","rest","camelcase","dashes","kebab","$0","html","svg","parse$1","tokens","input","start","end","token","stringify$1","settings","options","values","parse","stringify"],"sources":["../../node_modules/property-information/lib/util/schema.js","../../node_modules/property-information/lib/util/merge.js","../../node_modules/property-information/lib/normalize.js","../../node_modules/property-information/lib/util/info.js","../../node_modules/property-information/lib/util/types.js","../../node_modules/property-information/lib/util/defined-info.js","../../node_modules/property-information/lib/util/create.js","../../node_modules/property-information/lib/aria.js","../../node_modules/property-information/lib/util/case-sensitive-transform.js","../../node_modules/property-information/lib/util/case-insensitive-transform.js","../../node_modules/property-information/lib/html.js","../../node_modules/property-information/lib/svg.js","../../node_modules/property-information/lib/xlink.js","../../node_modules/property-information/lib/xmlns.js","../../node_modules/property-information/lib/xml.js","../../node_modules/property-information/lib/find.js","../../node_modules/property-information/index.js","../../node_modules/comma-separated-tokens/index.js","../../node_modules/space-separated-tokens/index.js"],"sourcesContent":["/**\n * @import {Schema as SchemaType, Space} from 'property-information'\n */\n\n/** @type {SchemaType} */\nexport class Schema {\n /**\n * @param {SchemaType['property']} property\n * Property.\n * @param {SchemaType['normal']} normal\n * Normal.\n * @param {Space | undefined} [space]\n * Space.\n * @returns\n * Schema.\n */\n constructor(property, normal, space) {\n this.normal = normal\n this.property = property\n\n if (space) {\n this.space = space\n }\n }\n}\n\nSchema.prototype.normal = {}\nSchema.prototype.property = {}\nSchema.prototype.space = undefined\n","/**\n * @import {Info, Space} from 'property-information'\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {ReadonlyArray<Schema>} definitions\n * Definitions.\n * @param {Space | undefined} [space]\n * Space.\n * @returns {Schema}\n * Schema.\n */\nexport function merge(definitions, space) {\n /** @type {Record<string, Info>} */\n const property = {}\n /** @type {Record<string, string>} */\n const normal = {}\n\n for (const definition of definitions) {\n Object.assign(property, definition.property)\n Object.assign(normal, definition.normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * Get the cleaned case insensitive form of an attribute or property.\n *\n * @param {string} value\n * An attribute-like or property-like name.\n * @returns {string}\n * Value that can be used to look up the properly cased property on a\n * `Schema`.\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","/**\n * @import {Info as InfoType} from 'property-information'\n */\n\n/** @type {InfoType} */\nexport class Info {\n /**\n * @param {string} property\n * Property.\n * @param {string} attribute\n * Attribute.\n * @returns\n * Info.\n */\n constructor(property, attribute) {\n this.attribute = attribute\n this.property = property\n }\n}\n\nInfo.prototype.attribute = ''\nInfo.prototype.booleanish = false\nInfo.prototype.boolean = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.defined = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.number = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.property = ''\nInfo.prototype.spaceSeparated = false\nInfo.prototype.space = undefined\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","/**\n * @import {Space} from 'property-information'\n */\n\nimport {Info} from './info.js'\nimport * as types from './types.js'\n\nconst checks = /** @type {ReadonlyArray<keyof typeof types>} */ (\n Object.keys(types)\n)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * Property.\n * @param {string} attribute\n * Attribute.\n * @param {number | null | undefined} [mask]\n * Mask.\n * @param {Space | undefined} [space]\n * Space.\n * @returns\n * Info.\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @template {keyof DefinedInfo} Key\n * Key type.\n * @param {DefinedInfo} values\n * Info.\n * @param {Key} key\n * Key.\n * @param {DefinedInfo[Key]} value\n * Value.\n * @returns {undefined}\n * Nothing.\n */\nfunction mark(values, key, value) {\n if (value) {\n values[key] = value\n }\n}\n","/**\n * @import {Info, Space} from 'property-information'\n */\n\n/**\n * @typedef Definition\n * Definition of a schema.\n * @property {Record<string, string> | undefined} [attributes]\n * Normalzed names to special attribute case.\n * @property {ReadonlyArray<string> | undefined} [mustUseProperty]\n * Normalized names that must be set as properties.\n * @property {Record<string, number | null>} properties\n * Property names to their types.\n * @property {Space | undefined} [space]\n * Space.\n * @property {Transform} transform\n * Transform a property name.\n */\n\n/**\n * @callback Transform\n * Transform.\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} property\n * Property.\n * @returns {string}\n * Attribute.\n */\n\nimport {normalize} from '../normalize.js'\nimport {DefinedInfo} from './defined-info.js'\nimport {Schema} from './schema.js'\n\n/**\n * @param {Definition} definition\n * Definition.\n * @returns {Schema}\n * Schema.\n */\nexport function create(definition) {\n /** @type {Record<string, Info>} */\n const properties = {}\n /** @type {Record<string, string>} */\n const normals = {}\n\n for (const [property, value] of Object.entries(definition.properties)) {\n const info = new DefinedInfo(\n property,\n definition.transform(definition.attributes || {}, property),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(property)\n ) {\n info.mustUseProperty = true\n }\n\n properties[property] = info\n\n normals[normalize(property)] = property\n normals[normalize(info.attribute)] = property\n }\n\n return new Schema(properties, normals, definition.space)\n}\n","import {create} from './util/create.js'\nimport {booleanish, number, spaceSeparated} from './util/types.js'\n\nexport const aria = create({\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n },\n transform(_, property) {\n return property === 'role'\n ? property\n : 'aria-' + property.slice(4).toLowerCase()\n }\n})\n","/**\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} attribute\n * Attribute.\n * @returns {string}\n * Transformed attribute.\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record<string, string>} attributes\n * Attributes.\n * @param {string} property\n * Property.\n * @returns {string}\n * Transformed property.\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n booleanish,\n boolean,\n commaSeparated,\n number,\n overloadedBoolean,\n spaceSeparated\n} from './util/types.js'\n\nexport const html = create({\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alpha: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n blocking: spaceSeparated,\n capture: null,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n closedBy: null,\n colorSpace: null,\n cols: number,\n colSpan: number,\n command: null,\n commandFor: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n fetchPriority: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: overloadedBoolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inert: boolean,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeToggle: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n popover: null,\n popoverTarget: null,\n popoverTargetAction: null,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shadowRootClonable: boolean,\n shadowRootCustomElementRegistry: boolean,\n shadowRootDelegatesFocus: boolean,\n shadowRootMode: null,\n shadowRootSerializable: boolean,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n writingSuggestions: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // `<object>`. List of URIs to archives\n axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n background: null, // `<body>`. Use CSS `background-image` instead\n bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n border: number, // `<table>`. Use CSS `border-width` instead,\n borderColor: null, // `<table>`. Use CSS `border-color` instead,\n bottomMargin: number, // `<body>`\n cellPadding: null, // `<table>`\n cellSpacing: null, // `<table>`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // `<object>`\n clear: null, // `<br>`. Use CSS `clear` instead\n code: null, // `<object>`\n codeBase: null, // `<object>`\n codeType: null, // `<object>`\n color: null, // `<font>` and `<hr>`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // `<object>`\n event: null, // `<script>`\n face: null, // `<font>`. Use CSS instead\n frame: null, // `<table>`\n frameBorder: null, // `<iframe>`. Use CSS `border` instead\n hSpace: number, // `<img>` and `<object>`\n leftMargin: number, // `<body>`\n link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n lowSrc: null, // `<img>`. Use a `<picture>`\n marginHeight: number, // `<body>`\n marginWidth: number, // `<body>`\n noResize: boolean, // `<frame>`\n noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n noWrap: boolean, // `<td>` and `<th>`\n object: null, // `<applet>`\n profile: null, // `<head>`\n prompt: null, // `<isindex>`\n rev: null, // `<link>`\n rightMargin: number, // `<body>`\n rules: null, // `<table>`\n scheme: null, // `<meta>`\n scrolling: booleanish, // `<frame>`. Use overflow in the child context\n standby: null, // `<object>`\n summary: null, // `<table>`\n text: null, // `<body>`. Use CSS `color` instead\n topMargin: number, // `<body>`\n valueType: null, // `<param>`\n version: null, // `<html>`. Use a doctype.\n vAlign: null, // Several. Use CSS `vertical-align` instead\n vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n vSpace: number, // `<img>` and `<object>`\n\n // Non-standard Properties.\n allowTransparency: null,\n autoCorrect: null,\n autoSave: null,\n credentialless: boolean,\n disablePictureInPicture: boolean,\n disableRemotePlayback: boolean,\n exportParts: commaSeparated,\n part: spaceSeparated,\n prefix: null,\n property: null,\n results: number,\n security: null,\n unselectable: null\n },\n space: 'html',\n transform: caseInsensitiveTransform\n})\n","import {caseSensitiveTransform} from './util/case-sensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n boolean,\n commaOrSpaceSeparated,\n commaSeparated,\n number,\n spaceSeparated\n} from './util/types.js'\n\nexport const svg = create({\n attributes: {\n accentHeight: 'accent-height',\n alignmentBaseline: 'alignment-baseline',\n arabicForm: 'arabic-form',\n baselineShift: 'baseline-shift',\n capHeight: 'cap-height',\n className: 'class',\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n crossOrigin: 'crossorigin',\n dataType: 'datatype',\n dominantBaseline: 'dominant-baseline',\n enableBackground: 'enable-background',\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n hrefLang: 'hreflang',\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n horizOriginY: 'horiz-origin-y',\n imageRendering: 'image-rendering',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n maskType: 'mask-type',\n navDown: 'nav-down',\n navDownLeft: 'nav-down-left',\n navDownRight: 'nav-down-right',\n navLeft: 'nav-left',\n navNext: 'nav-next',\n navPrev: 'nav-prev',\n navRight: 'nav-right',\n navUp: 'nav-up',\n navUpLeft: 'nav-up-left',\n navUpRight: 'nav-up-right',\n onAbort: 'onabort',\n onActivate: 'onactivate',\n onAfterPrint: 'onafterprint',\n onBeforePrint: 'onbeforeprint',\n onBegin: 'onbegin',\n onCancel: 'oncancel',\n onCanPlay: 'oncanplay',\n onCanPlayThrough: 'oncanplaythrough',\n onChange: 'onchange',\n onClick: 'onclick',\n onClose: 'onclose',\n onCopy: 'oncopy',\n onCueChange: 'oncuechange',\n onCut: 'oncut',\n onDblClick: 'ondblclick',\n onDrag: 'ondrag',\n onDragEnd: 'ondragend',\n onDragEnter: 'ondragenter',\n onDragExit: 'ondragexit',\n onDragLeave: 'ondragleave',\n onDragOver: 'ondragover',\n onDragStart: 'ondragstart',\n onDrop: 'ondrop',\n onDurationChange: 'ondurationchange',\n onEmptied: 'onemptied',\n onEnd: 'onend',\n onEnded: 'onended',\n onError: 'onerror',\n onFocus: 'onfocus',\n onFocusIn: 'onfocusin',\n onFocusOut: 'onfocusout',\n onHashChange: 'onhashchange',\n onInput: 'oninput',\n onInvalid: 'oninvalid',\n onKeyDown: 'onkeydown',\n onKeyPress: 'onkeypress',\n onKeyUp: 'onkeyup',\n onLoad: 'onload',\n onLoadedData: 'onloadeddata',\n onLoadedMetadata: 'onloadedmetadata',\n onLoadStart: 'onloadstart',\n onMessage: 'onmessage',\n onMouseDown: 'onmousedown',\n onMouseEnter: 'onmouseenter',\n onMouseLeave: 'onmouseleave',\n onMouseMove: 'onmousemove',\n onMouseOut: 'onmouseout',\n onMouseOver: 'onmouseover',\n onMouseUp: 'onmouseup',\n onMouseWheel: 'onmousewheel',\n onOffline: 'onoffline',\n onOnline: 'ononline',\n onPageHide: 'onpagehide',\n onPageShow: 'onpageshow',\n onPaste: 'onpaste',\n onPause: 'onpause',\n onPlay: 'onplay',\n onPlaying: 'onplaying',\n onPopState: 'onpopstate',\n onProgress: 'onprogress',\n onRateChange: 'onratechange',\n onRepeat: 'onrepeat',\n onReset: 'onreset',\n onResize: 'onresize',\n onScroll: 'onscroll',\n onSeeked: 'onseeked',\n onSeeking: 'onseeking',\n onSelect: 'onselect',\n onShow: 'onshow',\n onStalled: 'onstalled',\n onStorage: 'onstorage',\n onSubmit: 'onsubmit',\n onSuspend: 'onsuspend',\n onTimeUpdate: 'ontimeupdate',\n onToggle: 'ontoggle',\n onUnload: 'onunload',\n onVolumeChange: 'onvolumechange',\n onWaiting: 'onwaiting',\n onZoom: 'onzoom',\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pointerEvents: 'pointer-events',\n referrerPolicy: 'referrerpolicy',\n renderingIntent: 'rendering-intent',\n shapeRendering: 'shape-rendering',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n strokeDashArray: 'stroke-dasharray',\n strokeDashOffset: 'stroke-dashoffset',\n strokeLineCap: 'stroke-linecap',\n strokeLineJoin: 'stroke-linejoin',\n strokeMiterLimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n tabIndex: 'tabindex',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n transformOrigin: 'transform-origin',\n typeOf: 'typeof',\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n vectorEffect: 'vector-effect',\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n xHeight: 'x-height',\n // These were camelcased in Tiny. Now lowercased in SVG 2\n playbackOrder: 'playbackorder',\n timelineBegin: 'timelinebegin'\n },\n properties: {\n about: commaOrSpaceSeparated,\n accentHeight: number,\n accumulate: null,\n additive: null,\n alignmentBaseline: null,\n alphabetic: number,\n amplitude: number,\n arabicForm: null,\n ascent: number,\n attributeName: null,\n attributeType: null,\n azimuth: number,\n bandwidth: null,\n baselineShift: null,\n baseFrequency: null,\n baseProfile: null,\n bbox: null,\n begin: null,\n bias: number,\n by: null,\n calcMode: null,\n capHeight: number,\n className: spaceSeparated,\n clip: null,\n clipPath: null,\n clipPathUnits: null,\n clipRule: null,\n color: null,\n colorInterpolation: null,\n colorInterpolationFilters: null,\n colorProfile: null,\n colorRendering: null,\n content: null,\n contentScriptType: null,\n contentStyleType: null,\n crossOrigin: null,\n cursor: null,\n cx: null,\n cy: null,\n d: null,\n dataType: null,\n defaultAction: null,\n descent: number,\n diffuseConstant: number,\n direction: null,\n display: null,\n dur: null,\n divisor: number,\n dominantBaseline: null,\n download: boolean,\n dx: null,\n dy: null,\n edgeMode: null,\n editable: null,\n elevation: number,\n enableBackground: null,\n end: null,\n event: null,\n exponent: number,\n externalResourcesRequired: null,\n fill: null,\n fillOpacity: number,\n fillRule: null,\n filter: null,\n filterRes: null,\n filterUnits: null,\n floodColor: null,\n floodOpacity: null,\n focusable: null,\n focusHighlight: null,\n fontFamily: null,\n fontSize: null,\n fontSizeAdjust: null,\n fontStretch: null,\n fontStyle: null,\n fontVariant: null,\n fontWeight: null,\n format: null,\n fr: null,\n from: null,\n fx: null,\n fy: null,\n g1: commaSeparated,\n g2: commaSeparated,\n glyphName: commaSeparated,\n glyphOrientationHorizontal: null,\n glyphOrientationVertical: null,\n glyphRef: null,\n gradientTransform: null,\n gradientUnits: null,\n handler: null,\n hanging: number,\n hatchContentUnits: null,\n hatchUnits: null,\n height: null,\n href: null,\n hrefLang: null,\n horizAdvX: number,\n horizOriginX: number,\n horizOriginY: number,\n id: null,\n ideographic: number,\n imageRendering: null,\n initialVisibility: null,\n in: null,\n in2: null,\n intercept: number,\n k: number,\n k1: number,\n k2: number,\n k3: number,\n k4: number,\n kernelMatrix: commaOrSpaceSeparated,\n kernelUnitLength: null,\n keyPoints: null, // SEMI_COLON_SEPARATED\n keySplines: null, // SEMI_COLON_SEPARATED\n keyTimes: null, // SEMI_COLON_SEPARATED\n kerning: null,\n lang: null,\n lengthAdjust: null,\n letterSpacing: null,\n lightingColor: null,\n limitingConeAngle: number,\n local: null,\n markerEnd: null,\n markerMid: null,\n markerStart: null,\n markerHeight: null,\n markerUnits: null,\n markerWidth: null,\n mask: null,\n maskContentUnits: null,\n maskType: null,\n maskUnits: null,\n mathematical: null,\n max: null,\n media: null,\n mediaCharacterEncoding: null,\n mediaContentEncodings: null,\n mediaSize: number,\n mediaTime: null,\n method: null,\n min: null,\n mode: null,\n name: null,\n navDown: null,\n navDownLeft: null,\n navDownRight: null,\n navLeft: null,\n navNext: null,\n navPrev: null,\n navRight: null,\n navUp: null,\n navUpLeft: null,\n navUpRight: null,\n numOctaves: null,\n observer: null,\n offset: null,\n onAbort: null,\n onActivate: null,\n onAfterPrint: null,\n onBeforePrint: null,\n onBegin: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnd: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFocusIn: null,\n onFocusOut: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadStart: null,\n onMessage: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onMouseWheel: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRepeat: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onShow: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onZoom: null,\n opacity: null,\n operator: null,\n order: null,\n orient: null,\n orientation: null,\n origin: null,\n overflow: null,\n overlay: null,\n overlinePosition: number,\n overlineThickness: number,\n paintOrder: null,\n panose1: null,\n path: null,\n pathLength: number,\n patternContentUnits: null,\n patternTransform: null,\n patternUnits: null,\n phase: null,\n ping: spaceSeparated,\n pitch: null,\n playbackOrder: null,\n pointerEvents: null,\n points: null,\n pointsAtX: number,\n pointsAtY: number,\n pointsAtZ: number,\n preserveAlpha: null,\n preserveAspectRatio: null,\n primitiveUnits: null,\n propagate: null,\n property: commaOrSpaceSeparated,\n r: null,\n radius: null,\n referrerPolicy: null,\n refX: null,\n refY: null,\n rel: commaOrSpaceSeparated,\n rev: commaOrSpaceSeparated,\n renderingIntent: null,\n repeatCount: null,\n repeatDur: null,\n requiredExtensions: commaOrSpaceSeparated,\n requiredFeatures: commaOrSpaceSeparated,\n requiredFonts: commaOrSpaceSeparated,\n requiredFormats: commaOrSpaceSeparated,\n resource: null,\n restart: null,\n result: null,\n rotate: null,\n rx: null,\n ry: null,\n scale: null,\n seed: null,\n shapeRendering: null,\n side: null,\n slope: null,\n snapshotTime: null,\n specularConstant: number,\n specularExponent: number,\n spreadMethod: null,\n spacing: null,\n startOffset: null,\n stdDeviation: null,\n stemh: null,\n stemv: null,\n stitchTiles: null,\n stopColor: null,\n stopOpacity: null,\n strikethroughPosition: number,\n strikethroughThickness: number,\n string: null,\n stroke: null,\n strokeDashArray: commaOrSpaceSeparated,\n strokeDashOffset: null,\n strokeLineCap: null,\n strokeLineJoin: null,\n strokeMiterLimit: number,\n strokeOpacity: number,\n strokeWidth: null,\n style: null,\n surfaceScale: number,\n syncBehavior: null,\n syncBehaviorDefault: null,\n syncMaster: null,\n syncTolerance: null,\n syncToleranceDefault: null,\n systemLanguage: commaOrSpaceSeparated,\n tabIndex: number,\n tableValues: null,\n target: null,\n targetX: number,\n targetY: number,\n textAnchor: null,\n textDecoration: null,\n textRendering: null,\n textLength: null,\n timelineBegin: null,\n title: null,\n transformBehavior: null,\n type: null,\n typeOf: commaOrSpaceSeparated,\n to: null,\n transform: null,\n transformOrigin: null,\n u1: null,\n u2: null,\n underlinePosition: number,\n underlineThickness: number,\n unicode: null,\n unicodeBidi: null,\n unicodeRange: null,\n unitsPerEm: number,\n values: null,\n vAlphabetic: number,\n vMathematical: number,\n vectorEffect: null,\n vHanging: number,\n vIdeographic: number,\n version: null,\n vertAdvY: number,\n vertOriginX: number,\n vertOriginY: number,\n viewBox: null,\n viewTarget: null,\n visibility: null,\n width: null,\n widths: null,\n wordSpacing: null,\n writingMode: null,\n x: null,\n x1: null,\n x2: null,\n xChannelSelector: null,\n xHeight: number,\n y: null,\n y1: null,\n y2: null,\n yChannelSelector: null,\n z: null,\n zoomAndPan: null\n },\n space: 'svg',\n transform: caseSensitiveTransform\n})\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n },\n space: 'xlink',\n transform(_, property) {\n return 'xlink:' + property.slice(5).toLowerCase()\n }\n})\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n properties: {xmlnsXLink: null, xmlns: null},\n space: 'xmlns',\n transform: caseInsensitiveTransform\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n properties: {xmlBase: null, xmlLang: null, xmlSpace: null},\n space: 'xml',\n transform(_, property) {\n return 'xml:' + property.slice(3).toLowerCase()\n }\n})\n","/**\n * @import {Schema} from 'property-information'\n */\n\nimport {DefinedInfo} from './util/defined-info.js'\nimport {Info} from './util/info.js'\nimport {normalize} from './normalize.js'\n\nconst cap = /[A-Z]/g\nconst dash = /-[a-z]/g\nconst valid = /^data[-\\w.:]+$/i\n\n/**\n * Look up info on a property.\n *\n * In most cases the given `schema` contains info on the property.\n * All standard,\n * most legacy,\n * and some non-standard properties are supported.\n * For these cases,\n * the returned `Info` has hints about the value of the property.\n *\n * `name` can also be a valid data attribute or property,\n * in which case an `Info` object with the correctly cased `attribute` and\n * `property` is returned.\n *\n * `name` can be an unknown attribute,\n * in which case an `Info` object with `attribute` and `property` set to the\n * given name is returned.\n * It is not recommended to provide unsupported legacy or recently specced\n * properties.\n *\n *\n * @param {Schema} schema\n * Schema;\n * either the `html` or `svg` export.\n * @param {string} value\n * An attribute-like or property-like name;\n * it will be passed through `normalize` to hopefully find the correct info.\n * @returns {Info}\n * Info.\n */\nexport function find(schema, value) {\n const normal = normalize(value)\n let property = value\n let Type = Info\n\n if (normal in schema.normal) {\n return schema.property[schema.normal[normal]]\n }\n\n if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n // Attribute or property.\n if (value.charAt(4) === '-') {\n // Turn it into a property.\n const rest = value.slice(5).replace(dash, camelcase)\n property = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n } else {\n // Turn it into an attribute.\n const rest = value.slice(4)\n\n if (!dash.test(rest)) {\n let dashes = rest.replace(cap, kebab)\n\n if (dashes.charAt(0) !== '-') {\n dashes = '-' + dashes\n }\n\n value = 'data' + dashes\n }\n }\n\n Type = DefinedInfo\n }\n\n return new Type(property, value)\n}\n\n/**\n * @param {string} $0\n * Value.\n * @returns {string}\n * Kebab.\n */\nfunction kebab($0) {\n return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n * Value.\n * @returns {string}\n * Camel.\n */\nfunction camelcase($0) {\n return $0.charAt(1).toUpperCase()\n}\n","// Note: types exposed from `index.d.ts`.\nimport {merge} from './lib/util/merge.js'\nimport {aria} from './lib/aria.js'\nimport {html as htmlBase} from './lib/html.js'\nimport {svg as svgBase} from './lib/svg.js'\nimport {xlink} from './lib/xlink.js'\nimport {xmlns} from './lib/xmlns.js'\nimport {xml} from './lib/xml.js'\n\nexport {hastToReact} from './lib/hast-to-react.js'\n\nexport const html = merge([aria, htmlBase, xlink, xmlns, xml], 'html')\n\nexport {find} from './lib/find.js'\nexport {normalize} from './lib/normalize.js'\n\nexport const svg = merge([aria, svgBase, xlink, xmlns, xml], 'svg')\n","/**\n * @typedef Options\n * Configuration for `stringify`.\n * @property {boolean} [padLeft=true]\n * Whether to pad a space before a token.\n * @property {boolean} [padRight=false]\n * Whether to pad a space after a token.\n */\n\n/**\n * @typedef {Options} StringifyOptions\n * Please use `StringifyOptions` instead.\n */\n\n/**\n * Parse comma-separated tokens to an array.\n *\n * @param {string} value\n * Comma-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n /** @type {Array<string>} */\n const tokens = []\n const input = String(value || '')\n let index = input.indexOf(',')\n let start = 0\n /** @type {boolean} */\n let end = false\n\n while (!end) {\n if (index === -1) {\n index = input.length\n end = true\n }\n\n const token = input.slice(start, index).trim()\n\n if (token || !end) {\n tokens.push(token)\n }\n\n start = index + 1\n index = input.indexOf(',', start)\n }\n\n return tokens\n}\n\n/**\n * Serialize an array of strings or numbers to comma-separated tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @param {Options} [options]\n * Configuration for `stringify` (optional).\n * @returns {string}\n * Comma-separated tokens.\n */\nexport function stringify(values, options) {\n const settings = options || {}\n\n // Ensure the last empty entry is seen.\n const input = values[values.length - 1] === '' ? [...values, ''] : values\n\n return input\n .join(\n (settings.padRight ? ' ' : '') +\n ',' +\n (settings.padLeft === false ? '' : ' ')\n )\n .trim()\n}\n","/**\n * Parse space-separated tokens to an array of strings.\n *\n * @param {string} value\n * Space-separated tokens.\n * @returns {Array<string>}\n * List of tokens.\n */\nexport function parse(value) {\n const input = String(value || '').trim()\n return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated-tokens.\n *\n * @param {Array<string|number>} values\n * List of tokens.\n * @returns {string}\n * Space-separated tokens.\n */\nexport function stringify(values) {\n return values.join(' ').trim()\n}\n"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"url-D2BoivaE.js","names":["SAFE_PROTOCOL","SAFE_DATA_IMAGE","defaultUrlTransform","url","value","key","colon","questionMark","numberSign","slash","isExternalUrl","resolveUrl","baseUrl","_unused"],"sources":["../../src/core/url.ts"],"sourcesContent":["\r\nconst SAFE_PROTOCOL = /^(https?|ircs?|mailto|xmpp)$/i\r\nconst SAFE_DATA_IMAGE =\r\n /^data:image\\/(?:png|jpe?g|gif|webp|avif|bmp|x-icon)(?:;[a-z0-9=._+-]+)*,/i\r\n\r\n/**\r\n * react-markdown-compatible URL transform.\r\n *\r\n * Relative URLs and the documented protocol set pass through. Dangerous\r\n * protocols are removed. Image data URLs are accepted for raster formats only;\r\n * `image/svg+xml` is rejected because it can carry script.\r\n */\r\nexport function defaultUrlTransform(\r\n url: string,\r\n key = 'href',\r\n): string {\r\n if (typeof url !== 'string') return ''\r\n const value = url.trim()\r\n if (!value) return url\r\n\r\n if (value.startsWith('data:')) {\r\n if (key === 'src' && SAFE_DATA_IMAGE.test(value)) return value\r\n return ''\r\n }\r\n\r\n const colon = value.indexOf(':')\r\n if (colon < 0) return value\r\n\r\n const questionMark = value.indexOf('?')\r\n const numberSign = value.indexOf('#')\r\n const slash = value.indexOf('/')\r\n\r\n const relative =\r\n (slash > -1 && colon > slash) ||\r\n (questionMark > -1 && colon > questionMark) ||\r\n (numberSign > -1 && colon > numberSign)\r\n\r\n if (relative) return value\r\n return SAFE_PROTOCOL.test(value.slice(0, colon)) ? value : ''\r\n}\r\n\r\nexport function isExternalUrl(url: string): boolean {\r\n return /^(?:[a-z][a-z0-9+.-]*:)?\\/\\//i.test(url)\r\n}\r\n\r\nexport function resolveUrl(url: string, baseUrl: string | undefined): string {\r\n if (!baseUrl) return url\r\n if (!url || url.startsWith('#') || url.startsWith('//')) return url\r\n if (/^[a-z][a-z0-9+.-]*:/i.test(url)) return url\r\n try {\r\n return new URL(url, baseUrl).toString()\r\n } catch {\r\n return url\r\n }\r\n}\r\n\r\n"],"mappings":";AACA,IAAMA,IAAgB,iCAChBC,IACJ;AASF,SAAgBC,EACd,GACA,IAAM,QACE;CACR,IAAI,OAAOC,KAAQ,UAAU,OAAO;CACpC,IAAMC,IAAQD,EAAI,KAAK;CACvB,IAAI,CAACC,GAAO,OAAOD;CAEnB,IAAIC,EAAM,WAAW,OAAO,GAE1B,OADIC,MAAQ,SAASJ,EAAgB,KAAKG,CAAK,IAAUA,IAClD;CAGT,IAAME,IAAQF,EAAM,QAAQ,GAAG;CAC/B,IAAIE,IAAQ,GAAG,OAAOF;CAEtB,IAAMG,IAAeH,EAAM,QAAQ,GAAG,GAChCI,IAAaJ,EAAM,QAAQ,GAAG,GAC9BK,IAAQL,EAAM,QAAQ,GAAG;CAQ/B,OALGK,IAAQ,MAAMH,IAAQG,KACtBF,IAAe,MAAMD,IAAQC,KAC7BC,IAAa,MAAMF,IAAQE,KAGvBR,EAAc,KAAKI,EAAM,MAAM,GAAGE,CAAK,CAAC,IAD1BF,IACsC;AAC7D;AAEA,SAAgBM,EAAc,GAAsB;CAClD,OAAO,gCAAgC,KAAKP,CAAG;AACjD;AAEA,SAAgBQ,EAAW,GAAa,GAAqC;CAG3E,IAFI,CAACC,KACD,CAACT,KAAOA,EAAI,WAAW,GAAG,KAAKA,EAAI,WAAW,IAAI,KAClD,uBAAuB,KAAKA,CAAG,GAAG,OAAOA;CAC7C,IAAI;EACF,OAAO,IAAI,IAAIA,GAAKS,CAAO,CAAC,CAAC,SAAS;CACxC,SAAAC,GAAQ;EACN,OAAOV;CACT;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useActiveHeading-BaGVMJnB.js","names":["GithubSlugger","errorMessage","normalizeHast","extractToc","collectCustomTags","_objectSpread2","createPluginContext","searchDocument","defaultPlugins","resolvePlugins","resolvePipeline","identityOf","createPipelineIdentity","assertPipelineResult","createMemoKey","_asyncToGenerator","buildDocument","options","withDerivedDocument","document","withUniqueSlugs","used","base","slugger","text","candidate","index","_slugger$reset","finalizeMarkdownDocument","_options$search","input","documentValue","result","plugins","pipelineName","context","source","diagnostics","plugin","transformed","error","_plugin$onError","createDiagnostic","regex","own","BananaSlug","self","slug","value","maintainCase","originalSlug","report","code","secondary","applySourceTransforms","current","next","MAX_ENTRIES","cache","memoGet","key","memoSet","oldest","memoClear","memoSize","isAsyncError","useMarkdownDocument","shallowRef","status","setupDiagnostics","optionsRef","computed","_toValue","toValue","sourceRef","resolved","_optionsRef$value$plu","_optionsRef$value$dis","pipelineResult","pipeline","remarkPlugins","_optionsRef$value$rem","rehypePlugins","_optionsRef$value$reh","remarkRehypeOptions","_optionsRef$value$rem2","defaultSlugger","baseSlugger","_optionsRef$value$slu","idPrefix","_optionsRef$value$idP","pipelineIdentity","parseKey","pluginSetupKey","scope","cleanups","setupPlugins","cleanup","_unused","effectScope","diagnostic","getCurrentScope","onScopeDispose","_pipeline$value$dispo","_pipeline$value","_unused2","apply","createContext","nextDiagnostics","finalize","runId","applyRun","runSync","sync","_slugger$value$reset","_slugger$value","runAsync","_ref","_slugger$value$reset2","_slugger$value2","id","run","force","cached","watch","_document$value$toc","_document$value","findElementById","byId","candidates","element","useActiveHeading","activeId","ref","observer","disconnect","connect","enabled","elements","ids","visible","entries","entry","a","b","onMounted","onBeforeUnmount"],"sources":["../../src/core/model.ts","../../src/core/slugger.ts","../../src/core/finalize.ts","../../node_modules/github-slugger/regex.js","../../node_modules/github-slugger/index.js","../../src/plugins/source.ts","../../src/core/memo.ts","../../src/composables/useMarkdownDocument.ts","../../src/composables/useActiveHeading.ts"],"sourcesContent":["import type { MarkdownDocument, MarkdownNode } from './types'\r\nimport { collectCustomTags, extractToc } from './normalize'\r\n\r\nexport interface BuildDocumentOptions {\r\n nodes: MarkdownNode[]\r\n plugins: string[]\r\n pipeline: string\r\n frontmatter?: Record<string, unknown>\r\n}\r\n\r\nexport function buildDocument(options: BuildDocumentOptions): MarkdownDocument {\r\n return {\r\n nodes: options.nodes,\r\n toc: extractToc(options.nodes),\r\n customTags: collectCustomTags(options.nodes),\r\n frontmatter: options.frontmatter,\r\n plugins: options.plugins,\r\n pipeline: options.pipeline,\r\n }\r\n}\r\n\r\n/** Recompute derived collections after a document transform. */\r\nexport function withDerivedDocument(\r\n document: MarkdownDocument,\r\n): MarkdownDocument {\r\n return {\r\n ...document,\r\n toc: extractToc(document.nodes),\r\n customTags: collectCustomTags(document.nodes),\r\n }\r\n}\r\n","import type { MarkdownSlugger } from './types'\r\n\r\n/**\r\n * Ensure a host slugger still produces unique heading IDs. The wrapper keeps\r\n * the host's formatting and appends a numeric suffix for duplicates.\r\n */\r\nexport function withUniqueSlugs(slugger: MarkdownSlugger): MarkdownSlugger {\r\n const used = new Set<string>()\r\n return {\r\n slug(text: string): string {\r\n const base = slugger.slug(text)\r\n let candidate = base\r\n let index = 1\r\n while (used.has(candidate)) {\r\n candidate = `${base}-${index}`\r\n index += 1\r\n }\r\n used.add(candidate)\r\n return candidate\r\n },\r\n reset(): void {\r\n used.clear()\r\n slugger.reset?.()\r\n },\r\n }\r\n}\r\n","import type {\r\n MarkdownDiagnostic,\r\n MarkdownDocument,\r\n MarkdownDocumentOptions,\r\n MarkdownSlugger,\r\n PipelineResult,\r\n} from './types'\r\nimport type { ResolvedPlugins } from '../plugins/registry'\r\nimport { createPluginContext } from '../plugins/define'\r\nimport { createDiagnostic, errorMessage } from './diagnostics'\r\nimport { buildDocument, withDerivedDocument } from './model'\r\nimport { normalizeHast } from './normalize'\r\nimport { searchDocument } from './search'\r\n\r\nexport interface FinalizeDocumentOptions {\r\n source: string\r\n result: PipelineResult\r\n options: MarkdownDocumentOptions\r\n plugins: ResolvedPlugins\r\n pipelineName: string\r\n slugger: MarkdownSlugger\r\n idPrefix: string\r\n diagnostics: MarkdownDiagnostic[]\r\n}\r\n\r\n/**\r\n * Turn a pipeline result into the public document model. Both the reactive\r\n * composable and static export use this path so filtering, URL policy, heading\r\n * IDs, and plugin document transforms cannot diverge.\r\n */\r\nexport function finalizeMarkdownDocument(\r\n input: FinalizeDocumentOptions,\r\n): MarkdownDocument {\r\n const {\r\n source,\r\n result,\r\n options,\r\n plugins,\r\n pipelineName,\r\n slugger,\r\n idPrefix,\r\n diagnostics,\r\n } = input\r\n\r\n const normalized = normalizeHast(result.hast, {\r\n slugger,\r\n idPrefix,\r\n urlTransform: options.urlTransform,\r\n baseUrl: options.baseUrl,\r\n allowedElements: options.allowedElements,\r\n disallowedElements: options.disallowedElements,\r\n unwrapDisallowed: options.unwrapDisallowed,\r\n allowElement: options.allowElement,\r\n diagnostics,\r\n })\r\n\r\n let documentValue = buildDocument({\r\n nodes: normalized.nodes,\r\n plugins: plugins.names,\r\n pipeline: pipelineName,\r\n frontmatter: result.frontmatter,\r\n })\r\n\r\n const context = createPluginContext(source, options, diagnostics)\r\n for (const plugin of plugins.plugins) {\r\n if (!plugin.transformDocument) continue\r\n try {\r\n const transformed = plugin.transformDocument(documentValue, context)\r\n if (transformed) documentValue = transformed\r\n } catch (error) {\r\n diagnostics.push(\r\n createDiagnostic('plugin-transform', errorMessage(error), {\r\n phase: 'document',\r\n plugin: plugin.name,\r\n }),\r\n )\r\n plugin.onError?.(error, 'document', context)\r\n }\r\n }\r\n\r\n // The host-level search option is the renderer-friendly form of the search\r\n // transform. Run it after plugin transforms so the explicit option wins when\r\n // both are present.\r\n if (options.search?.query?.trim()) {\r\n documentValue = searchDocument(documentValue, options.search)\r\n }\r\n\r\n return withDerivedDocument(documentValue)\r\n}\r\n","// This module is generated by `script/`.\n/* eslint-disable no-control-regex, no-misleading-character-class, no-useless-escape */\nexport const regex = /[\\0-\\x1F!-,\\.\\/:-@\\[-\\^`\\{-\\xA9\\xAB-\\xB4\\xB6-\\xB9\\xBB-\\xBF\\xD7\\xF7\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0378\\u0379\\u037E\\u0380-\\u0385\\u0387\\u038B\\u038D\\u03A2\\u03F6\\u0482\\u0530\\u0557\\u0558\\u055A-\\u055F\\u0589-\\u0590\\u05BE\\u05C0\\u05C3\\u05C6\\u05C8-\\u05CF\\u05EB-\\u05EE\\u05F3-\\u060F\\u061B-\\u061F\\u066A-\\u066D\\u06D4\\u06DD\\u06DE\\u06E9\\u06FD\\u06FE\\u0700-\\u070F\\u074B\\u074C\\u07B2-\\u07BF\\u07F6-\\u07F9\\u07FB\\u07FC\\u07FE\\u07FF\\u082E-\\u083F\\u085C-\\u085F\\u086B-\\u089F\\u08B5\\u08C8-\\u08D2\\u08E2\\u0964\\u0965\\u0970\\u0984\\u098D\\u098E\\u0991\\u0992\\u09A9\\u09B1\\u09B3-\\u09B5\\u09BA\\u09BB\\u09C5\\u09C6\\u09C9\\u09CA\\u09CF-\\u09D6\\u09D8-\\u09DB\\u09DE\\u09E4\\u09E5\\u09F2-\\u09FB\\u09FD\\u09FF\\u0A00\\u0A04\\u0A0B-\\u0A0E\\u0A11\\u0A12\\u0A29\\u0A31\\u0A34\\u0A37\\u0A3A\\u0A3B\\u0A3D\\u0A43-\\u0A46\\u0A49\\u0A4A\\u0A4E-\\u0A50\\u0A52-\\u0A58\\u0A5D\\u0A5F-\\u0A65\\u0A76-\\u0A80\\u0A84\\u0A8E\\u0A92\\u0AA9\\u0AB1\\u0AB4\\u0ABA\\u0ABB\\u0AC6\\u0ACA\\u0ACE\\u0ACF\\u0AD1-\\u0ADF\\u0AE4\\u0AE5\\u0AF0-\\u0AF8\\u0B00\\u0B04\\u0B0D\\u0B0E\\u0B11\\u0B12\\u0B29\\u0B31\\u0B34\\u0B3A\\u0B3B\\u0B45\\u0B46\\u0B49\\u0B4A\\u0B4E-\\u0B54\\u0B58-\\u0B5B\\u0B5E\\u0B64\\u0B65\\u0B70\\u0B72-\\u0B81\\u0B84\\u0B8B-\\u0B8D\\u0B91\\u0B96-\\u0B98\\u0B9B\\u0B9D\\u0BA0-\\u0BA2\\u0BA5-\\u0BA7\\u0BAB-\\u0BAD\\u0BBA-\\u0BBD\\u0BC3-\\u0BC5\\u0BC9\\u0BCE\\u0BCF\\u0BD1-\\u0BD6\\u0BD8-\\u0BE5\\u0BF0-\\u0BFF\\u0C0D\\u0C11\\u0C29\\u0C3A-\\u0C3C\\u0C45\\u0C49\\u0C4E-\\u0C54\\u0C57\\u0C5B-\\u0C5F\\u0C64\\u0C65\\u0C70-\\u0C7F\\u0C84\\u0C8D\\u0C91\\u0CA9\\u0CB4\\u0CBA\\u0CBB\\u0CC5\\u0CC9\\u0CCE-\\u0CD4\\u0CD7-\\u0CDD\\u0CDF\\u0CE4\\u0CE5\\u0CF0\\u0CF3-\\u0CFF\\u0D0D\\u0D11\\u0D45\\u0D49\\u0D4F-\\u0D53\\u0D58-\\u0D5E\\u0D64\\u0D65\\u0D70-\\u0D79\\u0D80\\u0D84\\u0D97-\\u0D99\\u0DB2\\u0DBC\\u0DBE\\u0DBF\\u0DC7-\\u0DC9\\u0DCB-\\u0DCE\\u0DD5\\u0DD7\\u0DE0-\\u0DE5\\u0DF0\\u0DF1\\u0DF4-\\u0E00\\u0E3B-\\u0E3F\\u0E4F\\u0E5A-\\u0E80\\u0E83\\u0E85\\u0E8B\\u0EA4\\u0EA6\\u0EBE\\u0EBF\\u0EC5\\u0EC7\\u0ECE\\u0ECF\\u0EDA\\u0EDB\\u0EE0-\\u0EFF\\u0F01-\\u0F17\\u0F1A-\\u0F1F\\u0F2A-\\u0F34\\u0F36\\u0F38\\u0F3A-\\u0F3D\\u0F48\\u0F6D-\\u0F70\\u0F85\\u0F98\\u0FBD-\\u0FC5\\u0FC7-\\u0FFF\\u104A-\\u104F\\u109E\\u109F\\u10C6\\u10C8-\\u10CC\\u10CE\\u10CF\\u10FB\\u1249\\u124E\\u124F\\u1257\\u1259\\u125E\\u125F\\u1289\\u128E\\u128F\\u12B1\\u12B6\\u12B7\\u12BF\\u12C1\\u12C6\\u12C7\\u12D7\\u1311\\u1316\\u1317\\u135B\\u135C\\u1360-\\u137F\\u1390-\\u139F\\u13F6\\u13F7\\u13FE-\\u1400\\u166D\\u166E\\u1680\\u169B-\\u169F\\u16EB-\\u16ED\\u16F9-\\u16FF\\u170D\\u1715-\\u171F\\u1735-\\u173F\\u1754-\\u175F\\u176D\\u1771\\u1774-\\u177F\\u17D4-\\u17D6\\u17D8-\\u17DB\\u17DE\\u17DF\\u17EA-\\u180A\\u180E\\u180F\\u181A-\\u181F\\u1879-\\u187F\\u18AB-\\u18AF\\u18F6-\\u18FF\\u191F\\u192C-\\u192F\\u193C-\\u1945\\u196E\\u196F\\u1975-\\u197F\\u19AC-\\u19AF\\u19CA-\\u19CF\\u19DA-\\u19FF\\u1A1C-\\u1A1F\\u1A5F\\u1A7D\\u1A7E\\u1A8A-\\u1A8F\\u1A9A-\\u1AA6\\u1AA8-\\u1AAF\\u1AC1-\\u1AFF\\u1B4C-\\u1B4F\\u1B5A-\\u1B6A\\u1B74-\\u1B7F\\u1BF4-\\u1BFF\\u1C38-\\u1C3F\\u1C4A-\\u1C4C\\u1C7E\\u1C7F\\u1C89-\\u1C8F\\u1CBB\\u1CBC\\u1CC0-\\u1CCF\\u1CD3\\u1CFB-\\u1CFF\\u1DFA\\u1F16\\u1F17\\u1F1E\\u1F1F\\u1F46\\u1F47\\u1F4E\\u1F4F\\u1F58\\u1F5A\\u1F5C\\u1F5E\\u1F7E\\u1F7F\\u1FB5\\u1FBD\\u1FBF-\\u1FC1\\u1FC5\\u1FCD-\\u1FCF\\u1FD4\\u1FD5\\u1FDC-\\u1FDF\\u1FED-\\u1FF1\\u1FF5\\u1FFD-\\u203E\\u2041-\\u2053\\u2055-\\u2070\\u2072-\\u207E\\u2080-\\u208F\\u209D-\\u20CF\\u20F1-\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u214F-\\u215F\\u2189-\\u24B5\\u24EA-\\u2BFF\\u2C2F\\u2C5F\\u2CE5-\\u2CEA\\u2CF4-\\u2CFF\\u2D26\\u2D28-\\u2D2C\\u2D2E\\u2D2F\\u2D68-\\u2D6E\\u2D70-\\u2D7E\\u2D97-\\u2D9F\\u2DA7\\u2DAF\\u2DB7\\u2DBF\\u2DC7\\u2DCF\\u2DD7\\u2DDF\\u2E00-\\u2E2E\\u2E30-\\u3004\\u3008-\\u3020\\u3030\\u3036\\u3037\\u303D-\\u3040\\u3097\\u3098\\u309B\\u309C\\u30A0\\u30FB\\u3100-\\u3104\\u3130\\u318F-\\u319F\\u31C0-\\u31EF\\u3200-\\u33FF\\u4DC0-\\u4DFF\\u9FFD-\\u9FFF\\uA48D-\\uA4CF\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA62C-\\uA63F\\uA673\\uA67E\\uA6F2-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uA7C0\\uA7C1\\uA7CB-\\uA7F4\\uA828-\\uA82B\\uA82D-\\uA83F\\uA874-\\uA87F\\uA8C6-\\uA8CF\\uA8DA-\\uA8DF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA954-\\uA95F\\uA97D-\\uA97F\\uA9C1-\\uA9CE\\uA9DA-\\uA9DF\\uA9FF\\uAA37-\\uAA3F\\uAA4E\\uAA4F\\uAA5A-\\uAA5F\\uAA77-\\uAA79\\uAAC3-\\uAADA\\uAADE\\uAADF\\uAAF0\\uAAF1\\uAAF7-\\uAB00\\uAB07\\uAB08\\uAB0F\\uAB10\\uAB17-\\uAB1F\\uAB27\\uAB2F\\uAB5B\\uAB6A-\\uAB6F\\uABEB\\uABEE\\uABEF\\uABFA-\\uABFF\\uD7A4-\\uD7AF\\uD7C7-\\uD7CA\\uD7FC-\\uD7FF\\uE000-\\uF8FF\\uFA6E\\uFA6F\\uFADA-\\uFAFF\\uFB07-\\uFB12\\uFB18-\\uFB1C\\uFB29\\uFB37\\uFB3D\\uFB3F\\uFB42\\uFB45\\uFBB2-\\uFBD2\\uFD3E-\\uFD4F\\uFD90\\uFD91\\uFDC8-\\uFDEF\\uFDFC-\\uFDFF\\uFE10-\\uFE1F\\uFE30-\\uFE32\\uFE35-\\uFE4C\\uFE50-\\uFE6F\\uFE75\\uFEFD-\\uFF0F\\uFF1A-\\uFF20\\uFF3B-\\uFF3E\\uFF40\\uFF5B-\\uFF65\\uFFBF-\\uFFC1\\uFFC8\\uFFC9\\uFFD0\\uFFD1\\uFFD8\\uFFD9\\uFFDD-\\uFFFF]|\\uD800[\\uDC0C\\uDC27\\uDC3B\\uDC3E\\uDC4E\\uDC4F\\uDC5E-\\uDC7F\\uDCFB-\\uDD3F\\uDD75-\\uDDFC\\uDDFE-\\uDE7F\\uDE9D-\\uDE9F\\uDED1-\\uDEDF\\uDEE1-\\uDEFF\\uDF20-\\uDF2C\\uDF4B-\\uDF4F\\uDF7B-\\uDF7F\\uDF9E\\uDF9F\\uDFC4-\\uDFC7\\uDFD0\\uDFD6-\\uDFFF]|\\uD801[\\uDC9E\\uDC9F\\uDCAA-\\uDCAF\\uDCD4-\\uDCD7\\uDCFC-\\uDCFF\\uDD28-\\uDD2F\\uDD64-\\uDDFF\\uDF37-\\uDF3F\\uDF56-\\uDF5F\\uDF68-\\uDFFF]|\\uD802[\\uDC06\\uDC07\\uDC09\\uDC36\\uDC39-\\uDC3B\\uDC3D\\uDC3E\\uDC56-\\uDC5F\\uDC77-\\uDC7F\\uDC9F-\\uDCDF\\uDCF3\\uDCF6-\\uDCFF\\uDD16-\\uDD1F\\uDD3A-\\uDD7F\\uDDB8-\\uDDBD\\uDDC0-\\uDDFF\\uDE04\\uDE07-\\uDE0B\\uDE14\\uDE18\\uDE36\\uDE37\\uDE3B-\\uDE3E\\uDE40-\\uDE5F\\uDE7D-\\uDE7F\\uDE9D-\\uDEBF\\uDEC8\\uDEE7-\\uDEFF\\uDF36-\\uDF3F\\uDF56-\\uDF5F\\uDF73-\\uDF7F\\uDF92-\\uDFFF]|\\uD803[\\uDC49-\\uDC7F\\uDCB3-\\uDCBF\\uDCF3-\\uDCFF\\uDD28-\\uDD2F\\uDD3A-\\uDE7F\\uDEAA\\uDEAD-\\uDEAF\\uDEB2-\\uDEFF\\uDF1D-\\uDF26\\uDF28-\\uDF2F\\uDF51-\\uDFAF\\uDFC5-\\uDFDF\\uDFF7-\\uDFFF]|\\uD804[\\uDC47-\\uDC65\\uDC70-\\uDC7E\\uDCBB-\\uDCCF\\uDCE9-\\uDCEF\\uDCFA-\\uDCFF\\uDD35\\uDD40-\\uDD43\\uDD48-\\uDD4F\\uDD74\\uDD75\\uDD77-\\uDD7F\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDFF\\uDE12\\uDE38-\\uDE3D\\uDE3F-\\uDE7F\\uDE87\\uDE89\\uDE8E\\uDE9E\\uDEA9-\\uDEAF\\uDEEB-\\uDEEF\\uDEFA-\\uDEFF\\uDF04\\uDF0D\\uDF0E\\uDF11\\uDF12\\uDF29\\uDF31\\uDF34\\uDF3A\\uDF45\\uDF46\\uDF49\\uDF4A\\uDF4E\\uDF4F\\uDF51-\\uDF56\\uDF58-\\uDF5C\\uDF64\\uDF65\\uDF6D-\\uDF6F\\uDF75-\\uDFFF]|\\uD805[\\uDC4B-\\uDC4F\\uDC5A-\\uDC5D\\uDC62-\\uDC7F\\uDCC6\\uDCC8-\\uDCCF\\uDCDA-\\uDD7F\\uDDB6\\uDDB7\\uDDC1-\\uDDD7\\uDDDE-\\uDDFF\\uDE41-\\uDE43\\uDE45-\\uDE4F\\uDE5A-\\uDE7F\\uDEB9-\\uDEBF\\uDECA-\\uDEFF\\uDF1B\\uDF1C\\uDF2C-\\uDF2F\\uDF3A-\\uDFFF]|\\uD806[\\uDC3B-\\uDC9F\\uDCEA-\\uDCFE\\uDD07\\uDD08\\uDD0A\\uDD0B\\uDD14\\uDD17\\uDD36\\uDD39\\uDD3A\\uDD44-\\uDD4F\\uDD5A-\\uDD9F\\uDDA8\\uDDA9\\uDDD8\\uDDD9\\uDDE2\\uDDE5-\\uDDFF\\uDE3F-\\uDE46\\uDE48-\\uDE4F\\uDE9A-\\uDE9C\\uDE9E-\\uDEBF\\uDEF9-\\uDFFF]|\\uD807[\\uDC09\\uDC37\\uDC41-\\uDC4F\\uDC5A-\\uDC71\\uDC90\\uDC91\\uDCA8\\uDCB7-\\uDCFF\\uDD07\\uDD0A\\uDD37-\\uDD39\\uDD3B\\uDD3E\\uDD48-\\uDD4F\\uDD5A-\\uDD5F\\uDD66\\uDD69\\uDD8F\\uDD92\\uDD99-\\uDD9F\\uDDAA-\\uDEDF\\uDEF7-\\uDFAF\\uDFB1-\\uDFFF]|\\uD808[\\uDF9A-\\uDFFF]|\\uD809[\\uDC6F-\\uDC7F\\uDD44-\\uDFFF]|[\\uD80A\\uD80B\\uD80E-\\uD810\\uD812-\\uD819\\uD824-\\uD82B\\uD82D\\uD82E\\uD830-\\uD833\\uD837\\uD839\\uD83D\\uD83F\\uD87B-\\uD87D\\uD87F\\uD885-\\uDB3F\\uDB41-\\uDBFF][\\uDC00-\\uDFFF]|\\uD80D[\\uDC2F-\\uDFFF]|\\uD811[\\uDE47-\\uDFFF]|\\uD81A[\\uDE39-\\uDE3F\\uDE5F\\uDE6A-\\uDECF\\uDEEE\\uDEEF\\uDEF5-\\uDEFF\\uDF37-\\uDF3F\\uDF44-\\uDF4F\\uDF5A-\\uDF62\\uDF78-\\uDF7C\\uDF90-\\uDFFF]|\\uD81B[\\uDC00-\\uDE3F\\uDE80-\\uDEFF\\uDF4B-\\uDF4E\\uDF88-\\uDF8E\\uDFA0-\\uDFDF\\uDFE2\\uDFE5-\\uDFEF\\uDFF2-\\uDFFF]|\\uD821[\\uDFF8-\\uDFFF]|\\uD823[\\uDCD6-\\uDCFF\\uDD09-\\uDFFF]|\\uD82C[\\uDD1F-\\uDD4F\\uDD53-\\uDD63\\uDD68-\\uDD6F\\uDEFC-\\uDFFF]|\\uD82F[\\uDC6B-\\uDC6F\\uDC7D-\\uDC7F\\uDC89-\\uDC8F\\uDC9A-\\uDC9C\\uDC9F-\\uDFFF]|\\uD834[\\uDC00-\\uDD64\\uDD6A-\\uDD6C\\uDD73-\\uDD7A\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDE41\\uDE45-\\uDFFF]|\\uD835[\\uDC55\\uDC9D\\uDCA0\\uDCA1\\uDCA3\\uDCA4\\uDCA7\\uDCA8\\uDCAD\\uDCBA\\uDCBC\\uDCC4\\uDD06\\uDD0B\\uDD0C\\uDD15\\uDD1D\\uDD3A\\uDD3F\\uDD45\\uDD47-\\uDD49\\uDD51\\uDEA6\\uDEA7\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3\\uDFCC\\uDFCD]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85-\\uDE9A\\uDEA0\\uDEB0-\\uDFFF]|\\uD838[\\uDC07\\uDC19\\uDC1A\\uDC22\\uDC25\\uDC2B-\\uDCFF\\uDD2D-\\uDD2F\\uDD3E\\uDD3F\\uDD4A-\\uDD4D\\uDD4F-\\uDEBF\\uDEFA-\\uDFFF]|\\uD83A[\\uDCC5-\\uDCCF\\uDCD7-\\uDCFF\\uDD4C-\\uDD4F\\uDD5A-\\uDFFF]|\\uD83B[\\uDC00-\\uDDFF\\uDE04\\uDE20\\uDE23\\uDE25\\uDE26\\uDE28\\uDE33\\uDE38\\uDE3A\\uDE3C-\\uDE41\\uDE43-\\uDE46\\uDE48\\uDE4A\\uDE4C\\uDE50\\uDE53\\uDE55\\uDE56\\uDE58\\uDE5A\\uDE5C\\uDE5E\\uDE60\\uDE63\\uDE65\\uDE66\\uDE6B\\uDE73\\uDE78\\uDE7D\\uDE7F\\uDE8A\\uDE9C-\\uDEA0\\uDEA4\\uDEAA\\uDEBC-\\uDFFF]|\\uD83C[\\uDC00-\\uDD2F\\uDD4A-\\uDD4F\\uDD6A-\\uDD6F\\uDD8A-\\uDFFF]|\\uD83E[\\uDC00-\\uDFEF\\uDFFA-\\uDFFF]|\\uD869[\\uDEDE-\\uDEFF]|\\uD86D[\\uDF35-\\uDF3F]|\\uD86E[\\uDC1E\\uDC1F]|\\uD873[\\uDEA2-\\uDEAF]|\\uD87A[\\uDFE1-\\uDFFF]|\\uD87E[\\uDE1E-\\uDFFF]|\\uD884[\\uDF4B-\\uDFFF]|\\uDB40[\\uDC00-\\uDCFF\\uDDF0-\\uDFFF]/g\n","import { regex } from './regex.js'\n\nconst own = Object.hasOwnProperty\n\n/**\n * Slugger.\n */\nexport default class BananaSlug {\n /**\n * Create a new slug class.\n */\n constructor () {\n /** @type {Record<string, number>} */\n // eslint-disable-next-line no-unused-expressions\n this.occurrences\n\n this.reset()\n }\n\n /**\n * Generate a unique slug.\n *\n * Tracks previously generated slugs: repeated calls with the same value\n * will result in different slugs.\n * Use the `slug` function to get same slugs.\n *\n * @param {string} value\n * String of text to slugify\n * @param {boolean} [maintainCase=false]\n * Keep the current case, otherwise make all lowercase\n * @return {string}\n * A unique slug string\n */\n slug (value, maintainCase) {\n const self = this\n let result = slug(value, maintainCase === true)\n const originalSlug = result\n\n while (own.call(self.occurrences, result)) {\n self.occurrences[originalSlug]++\n result = originalSlug + '-' + self.occurrences[originalSlug]\n }\n\n self.occurrences[result] = 0\n\n return result\n }\n\n /**\n * Reset - Forget all previous slugs\n *\n * @return void\n */\n reset () {\n this.occurrences = Object.create(null)\n }\n}\n\n/**\n * Generate a slug.\n *\n * Does not track previously generated slugs: repeated calls with the same value\n * will result in the exact same slug.\n * Use the `GithubSlugger` class to get unique slugs.\n *\n * @param {string} value\n * String of text to slugify\n * @param {boolean} [maintainCase=false]\n * Keep the current case, otherwise make all lowercase\n * @return {string}\n * A unique slug string\n */\nexport function slug (value, maintainCase) {\n if (typeof value !== 'string') return ''\n if (!maintainCase) value = value.toLowerCase()\n return value.replace(regex, '').replace(/ /g, '-')\n}\n","import type {\r\n MarkdownDiagnostic,\r\n MarkdownDocumentOptions,\r\n MarkdownPlugin,\r\n PluginContext,\r\n} from '../core/types'\r\nimport { createDiagnostic, errorMessage } from '../core/diagnostics'\r\nimport { createPluginContext } from './define'\r\n\r\nfunction report(\r\n plugin: MarkdownPlugin,\r\n error: unknown,\r\n context: PluginContext,\r\n diagnostics: MarkdownDiagnostic[],\r\n code: string,\r\n): void {\r\n diagnostics.push(\r\n createDiagnostic(code, errorMessage(error), {\r\n phase: 'source',\r\n plugin: plugin.name,\r\n }),\r\n )\r\n if (!plugin.onError) return\r\n try {\r\n plugin.onError(error, 'source', context)\r\n } catch (secondary) {\r\n diagnostics.push(\r\n createDiagnostic('plugin-onerror', errorMessage(secondary), {\r\n phase: 'source',\r\n plugin: plugin.name,\r\n }),\r\n )\r\n }\r\n}\r\n\r\n/**\r\n * Run plugin source transforms in resolved order before parsing. A transform\r\n * that throws or returns a non-string leaves the previous source intact and\r\n * reports a diagnostic instead of breaking the run.\r\n */\r\nexport function applySourceTransforms(\r\n source: string,\r\n plugins: readonly MarkdownPlugin[],\r\n options: MarkdownDocumentOptions,\r\n diagnostics: MarkdownDiagnostic[],\r\n): string {\r\n let current = source\r\n const context = createPluginContext(source, options, diagnostics)\r\n\r\n for (const plugin of plugins) {\r\n if (!plugin.transformSource) continue\r\n context.source = current\r\n try {\r\n const next = plugin.transformSource(current, context)\r\n if (typeof next === 'string') {\r\n current = next\r\n continue\r\n }\r\n report(\r\n plugin,\r\n new TypeError('transformSource must return a string.'),\r\n context,\r\n diagnostics,\r\n 'plugin-source',\r\n )\r\n } catch (error) {\r\n report(plugin, error, context, diagnostics, 'plugin-source')\r\n }\r\n }\r\n\r\n return current\r\n}\r\n","import type { MarkdownDocument } from './types'\r\n\r\nconst MAX_ENTRIES = 64\r\n\r\nconst cache = new Map<string, MarkdownDocument>()\r\n\r\nexport function memoGet(key: string): MarkdownDocument | undefined {\r\n const value = cache.get(key)\r\n if (!value) return undefined\r\n // Refresh LRU order.\r\n cache.delete(key)\r\n cache.set(key, value)\r\n return value\r\n}\r\n\r\nexport function memoSet(key: string, document: MarkdownDocument): void {\r\n if (cache.has(key)) cache.delete(key)\r\n cache.set(key, document)\r\n while (cache.size > MAX_ENTRIES) {\r\n const oldest = cache.keys().next().value\r\n if (oldest === undefined) break\r\n cache.delete(oldest)\r\n }\r\n}\r\n\r\nexport function memoClear(): void {\r\n cache.clear()\r\n}\r\n\r\nexport function memoSize(): number {\r\n return cache.size\r\n}\r\n","import GithubSlugger from 'github-slugger'\r\nimport {\r\n computed,\r\n effectScope,\r\n getCurrentScope,\r\n onScopeDispose,\r\n shallowRef,\r\n toValue,\r\n watch,\r\n type ComputedRef,\r\n type EffectScope,\r\n type MaybeRefOrGetter,\r\n type ShallowRef,\r\n} from 'vue'\r\nimport type { PluggableList } from 'unified'\r\nimport type {\r\n MarkdownDiagnostic,\r\n MarkdownDocument,\r\n MarkdownDocumentOptions,\r\n MarkdownLabels,\r\n MarkdownNodeComponents,\r\n MarkdownRegionComponents,\r\n MarkdownSlugger,\r\n MarkdownTagComponents,\r\n PipelineContext,\r\n PipelineResult,\r\n TocItem,\r\n} from '../core/types'\r\nimport { createDiagnostic, errorMessage } from '../core/diagnostics'\r\nimport { finalizeMarkdownDocument } from '../core/finalize'\r\nimport { identityOf } from '../core/identity'\r\nimport { memoGet, memoSet } from '../core/memo'\r\nimport { withUniqueSlugs } from '../core/slugger'\r\nimport { createPluginContext } from '../plugins/define'\r\nimport { applySourceTransforms } from '../plugins/source'\r\nimport { defaultPlugins } from '../plugins/builtin'\r\nimport { resolvePlugins } from '../plugins/registry'\r\nimport { assertPipelineResult, resolvePipeline } from '../pipeline/custom'\r\nimport { createMemoKey, createPipelineIdentity } from '../pipeline/identity'\r\n\r\nexport type MarkdownStatus = 'idle' | 'pending' | 'ready' | 'error'\r\n\r\nexport interface UseMarkdownDocumentReturn {\r\n document: ShallowRef<MarkdownDocument | undefined>\r\n toc: ComputedRef<TocItem[]>\r\n status: ShallowRef<MarkdownStatus>\r\n diagnostics: ShallowRef<MarkdownDiagnostic[]>\r\n pipeline: ComputedRef<string>\r\n plugins: ComputedRef<string[]>\r\n /** Tag components contributed by plugins; local props are merged by the host. */\r\n resolvedComponents: ComputedRef<MarkdownTagComponents>\r\n /** Semantic node components contributed by plugins. */\r\n resolvedNodeComponents: ComputedRef<MarkdownNodeComponents>\r\n /** Structural regions contributed by plugins. */\r\n resolvedRegions: ComputedRef<MarkdownRegionComponents>\r\n /** Labels contributed by plugins. */\r\n resolvedLabels: ComputedRef<Partial<MarkdownLabels>>\r\n /** Design tokens contributed by plugins. */\r\n resolvedTokens: ComputedRef<Record<string, string>>\r\n refresh: () => Promise<void>\r\n}\r\n\r\nfunction isAsyncError(error: unknown): boolean {\r\n return (\r\n error instanceof Error &&\r\n /finished async|processSync.*async|async.*processSync/i.test(error.message)\r\n )\r\n}\r\n\r\nexport function useMarkdownDocument(\r\n source: MaybeRefOrGetter<string>,\r\n options: MaybeRefOrGetter<MarkdownDocumentOptions> = {},\r\n): UseMarkdownDocumentReturn {\r\n const document = shallowRef<MarkdownDocument>()\r\n const status = shallowRef<MarkdownStatus>('idle')\r\n const diagnostics = shallowRef<MarkdownDiagnostic[]>([])\r\n const setupDiagnostics = shallowRef<MarkdownDiagnostic[]>([])\r\n const optionsRef = computed(() => toValue(options) ?? {})\r\n const sourceRef = computed(() => {\r\n const value = toValue(source)\r\n return typeof value === 'string' ? value : ''\r\n })\r\n\r\n const resolved = computed(() =>\r\n resolvePlugins(\r\n optionsRef.value.plugins ?? defaultPlugins,\r\n optionsRef.value.disablePlugins ?? [],\r\n ),\r\n )\r\n\r\n const pipelineResult = computed(() => resolvePipeline(optionsRef.value.pipeline))\r\n const pipeline = computed(() => pipelineResult.value.pipeline)\r\n\r\n const remarkPlugins = computed<PluggableList>(() => [\r\n ...resolved.value.remarkPlugins,\r\n ...(optionsRef.value.remarkPlugins ?? []),\r\n ])\r\n const rehypePlugins = computed<PluggableList>(() => [\r\n ...resolved.value.rehypePlugins,\r\n ...(optionsRef.value.rehypePlugins ?? []),\r\n ])\r\n const remarkRehypeOptions = computed(() => ({\r\n ...resolved.value.remarkRehypeOptions,\r\n ...(optionsRef.value.remarkRehypeOptions ?? {}),\r\n }))\r\n\r\n const defaultSlugger: MarkdownSlugger = new GithubSlugger()\r\n const baseSlugger = computed(() => optionsRef.value.slugger ?? defaultSlugger)\r\n const slugger = computed(() => withUniqueSlugs(baseSlugger.value))\r\n const idPrefix = computed(() => optionsRef.value.idPrefix ?? '')\r\n\r\n const pipelineIdentity = computed(() =>\r\n createPipelineIdentity({\r\n pipelineName: pipeline.value.name,\r\n plugins: resolved.value.plugins,\r\n remarkPlugins: remarkPlugins.value,\r\n rehypePlugins: rehypePlugins.value,\r\n remarkRehypeOptions: optionsRef.value.remarkRehypeOptions,\r\n options: optionsRef.value,\r\n }),\r\n )\r\n\r\n const parseKey = computed(() => pipelineIdentity.value)\r\n\r\n const pluginSetupKey = computed(() =>\r\n resolved.value.plugins.map((plugin) => identityOf(plugin)).join(','),\r\n )\r\n\r\n let scope: EffectScope | undefined\r\n let cleanups: Array<() => void> = []\r\n\r\n const setupPlugins = (): void => {\r\n scope?.stop()\r\n for (const cleanup of cleanups) {\r\n try {\r\n cleanup()\r\n } catch {\r\n // Cleanup failures must not break reconfiguration.\r\n }\r\n }\r\n cleanups = []\r\n scope = effectScope(true)\r\n setupDiagnostics.value = []\r\n\r\n const context = createPluginContext(\r\n sourceRef.value,\r\n optionsRef.value,\r\n setupDiagnostics.value as MarkdownDiagnostic[],\r\n )\r\n for (const plugin of resolved.value.plugins) {\r\n if (!plugin.setup) continue\r\n try {\r\n const cleanup = plugin.setup(context)\r\n if (typeof cleanup === 'function') cleanups.push(cleanup)\r\n } catch (error) {\r\n const diagnostic = createDiagnostic('plugin-setup', errorMessage(error), {\r\n phase: 'setup',\r\n plugin: plugin.name,\r\n })\r\n setupDiagnostics.value = [...setupDiagnostics.value, diagnostic]\r\n plugin.onError?.(error, 'setup', context)\r\n }\r\n }\r\n }\r\n\r\n const teardown = (): void => {\r\n scope?.stop()\r\n for (const cleanup of cleanups) {\r\n try {\r\n cleanup()\r\n } catch {\r\n // Ignore cleanup errors during teardown.\r\n }\r\n }\r\n cleanups = []\r\n pipeline.value.dispose?.()\r\n }\r\n\r\n if (getCurrentScope()) onScopeDispose(teardown)\r\n\r\n const apply = (next: MarkdownDocument): void => {\r\n document.value = next\r\n status.value = 'ready'\r\n }\r\n\r\n const createContext = (\r\n source: string,\r\n nextDiagnostics: MarkdownDiagnostic[],\r\n ): PipelineContext => ({\r\n source,\r\n options: optionsRef.value,\r\n plugins: resolved.value.plugins,\r\n remarkPlugins: remarkPlugins.value,\r\n rehypePlugins: rehypePlugins.value,\r\n remarkRehypeOptions: remarkRehypeOptions.value,\r\n slugger: slugger.value,\r\n idPrefix: idPrefix.value,\r\n diagnostics: nextDiagnostics,\r\n })\r\n\r\n const finalize = (\r\n source: string,\r\n result: PipelineResult,\r\n nextDiagnostics: MarkdownDiagnostic[],\r\n ): MarkdownDocument =>\r\n finalizeMarkdownDocument({\r\n source,\r\n result,\r\n options: optionsRef.value,\r\n plugins: resolved.value,\r\n pipelineName: pipeline.value.name,\r\n slugger: slugger.value,\r\n idPrefix: idPrefix.value,\r\n diagnostics: nextDiagnostics,\r\n })\r\n\r\n let runId = 0\r\n\r\n const applyRun = (\r\n source: string,\r\n result: PipelineResult,\r\n nextDiagnostics: MarkdownDiagnostic[],\r\n key: string,\r\n cache: boolean,\r\n ): void => {\r\n const next = finalize(source, result, nextDiagnostics)\r\n diagnostics.value = nextDiagnostics\r\n if (cache) memoSet(key, next)\r\n apply(next)\r\n }\r\n\r\n const runSync = (\r\n source: string,\r\n key: string,\r\n cache: boolean,\r\n nextDiagnostics: MarkdownDiagnostic[],\r\n ): 'done' | 'async' => {\r\n const sync = pipeline.value.processSync\r\n if (!sync) return 'async'\r\n\r\n try {\r\n slugger.value.reset?.()\r\n const result = assertPipelineResult(sync.call(pipeline.value, source, createContext(source, nextDiagnostics)))\r\n applyRun(source, result, nextDiagnostics, key, cache)\r\n return 'done'\r\n } catch (error) {\r\n if (isAsyncError(error)) return 'async'\r\n status.value = 'error'\r\n diagnostics.value = [\r\n ...nextDiagnostics,\r\n createDiagnostic('pipeline-sync', errorMessage(error), {\r\n phase: 'pipeline',\r\n }),\r\n ]\r\n return 'done'\r\n }\r\n }\r\n\r\n const runAsync = async (\r\n id: number,\r\n source: string,\r\n key: string,\r\n cache: boolean,\r\n nextDiagnostics: MarkdownDiagnostic[],\r\n ): Promise<void> => {\r\n status.value = 'pending'\r\n try {\r\n slugger.value.reset?.()\r\n const result = assertPipelineResult(\r\n await pipeline.value.process(source, createContext(source, nextDiagnostics)),\r\n )\r\n if (id !== runId) return\r\n applyRun(source, result, nextDiagnostics, key, cache)\r\n } catch (error) {\r\n if (id !== runId) return\r\n status.value = 'error'\r\n diagnostics.value = [\r\n ...nextDiagnostics,\r\n createDiagnostic('pipeline-process', errorMessage(error), {\r\n phase: 'pipeline',\r\n }),\r\n ]\r\n }\r\n }\r\n\r\n const run = (force = false): Promise<void> => {\r\n const id = ++runId\r\n const nextDiagnostics: MarkdownDiagnostic[] = [\r\n ...pipelineResult.value.diagnostics,\r\n ...resolved.value.diagnostics,\r\n ...setupDiagnostics.value,\r\n ]\r\n const source = applySourceTransforms(\r\n sourceRef.value,\r\n resolved.value.plugins,\r\n optionsRef.value,\r\n nextDiagnostics,\r\n )\r\n const key = createMemoKey(source, pipelineIdentity.value)\r\n\r\n if (!force) {\r\n const cached = memoGet(key)\r\n if (cached) {\r\n diagnostics.value = nextDiagnostics\r\n apply(cached)\r\n return Promise.resolve()\r\n }\r\n }\r\n\r\n const sync = runSync(source, key, !force, nextDiagnostics)\r\n if (sync === 'done') return Promise.resolve()\r\n return runAsync(id, source, key, !force, nextDiagnostics)\r\n }\r\n\r\n const refresh = (): Promise<void> => run(true)\r\n\r\n watch(pluginSetupKey, setupPlugins, { immediate: true })\r\n watch([sourceRef, parseKey], () => void run())\r\n\r\n void run()\r\n\r\n return {\r\n document,\r\n toc: computed(() => document.value?.toc ?? []),\r\n status,\r\n diagnostics,\r\n pipeline: computed(() => pipeline.value.name),\r\n plugins: computed(() => resolved.value.names),\r\n resolvedComponents: computed(() => resolved.value.components),\r\n resolvedNodeComponents: computed(() => resolved.value.nodeComponents),\r\n resolvedRegions: computed(() => resolved.value.regions),\r\n resolvedLabels: computed(() => resolved.value.labels),\r\n resolvedTokens: computed(() => resolved.value.tokens),\r\n refresh,\r\n }\r\n}\r\n","import {\r\n onBeforeUnmount,\r\n onMounted,\r\n ref,\r\n toValue,\r\n watch,\r\n type MaybeRefOrGetter,\r\n} from 'vue'\r\n\r\nexport interface UseActiveHeadingOptions {\r\n /**\r\n * Scope heading lookups to one rendered document root. Pass this when a\r\n * page contains multiple renderers that may generate the same heading IDs.\r\n */\r\n root?: MaybeRefOrGetter<Element | Document | null | undefined>\r\n}\r\n\r\n/** Find an element by id inside a document or a scoped root element. */\r\nexport function findElementById(\r\n scope: Element | Document,\r\n id: string,\r\n): HTMLElement | null {\r\n const byId = (scope as Document).getElementById\r\n if (typeof byId === 'function') {\r\n return byId.call(scope, id)\r\n }\r\n // Avoid CSS selector escaping for generated ids with punctuation.\r\n const candidates = (scope as Element).querySelectorAll('[id]')\r\n for (let index = 0; index < candidates.length; index += 1) {\r\n const element = candidates[index] as HTMLElement\r\n if (element.getAttribute('id') === id) return element\r\n }\r\n return null\r\n}\r\n\r\n/** Tracks the heading currently in view without touching the DOM before mount. */\r\nexport function useActiveHeading(\r\n ids: MaybeRefOrGetter<string[]>,\r\n enabled: MaybeRefOrGetter<boolean> = true,\r\n options: UseActiveHeadingOptions = {},\r\n) {\r\n const activeId = ref<string>()\r\n let observer: IntersectionObserver | undefined\r\n\r\n const disconnect = (): void => {\r\n observer?.disconnect()\r\n observer = undefined\r\n }\r\n\r\n const connect = (): void => {\r\n disconnect()\r\n if (!toValue(enabled)) return\r\n if (typeof window === 'undefined' || typeof IntersectionObserver === 'undefined') {\r\n return\r\n }\r\n\r\n const scope = toValue(options.root) ?? window.document\r\n const elements = toValue(ids)\r\n .map((id) => findElementById(scope, id))\r\n .filter((element): element is HTMLElement => element !== null)\r\n\r\n if (elements.length === 0) return\r\n\r\n observer = new IntersectionObserver(\r\n (entries) => {\r\n const visible = entries\r\n .filter((entry) => entry.isIntersecting)\r\n .sort((a, b) => a.boundingClientRect.top - b.boundingClientRect.top)\r\n if (visible[0]) activeId.value = visible[0].target.id\r\n },\r\n { rootMargin: '0px 0px -70% 0px', threshold: 0 },\r\n )\r\n\r\n for (const element of elements) observer.observe(element)\r\n }\r\n\r\n onMounted(connect)\r\n watch(() => toValue(ids).join('\\u001f'), connect)\r\n watch(() => toValue(enabled), connect)\r\n if (options.root) watch(() => toValue(options.root), connect)\r\n onBeforeUnmount(disconnect)\r\n\r\n return activeId\r\n}\r\n"],"ignoreList":[3,4],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shiki.js","names":["_objectSpread2","plaintextHighlight","highlightedNodesFromHast","THEMES","DEFAULT_LANGUAGES","highlighterPromise","highlighter","getHighlighter","_getHighlighter","_asyncToGenerator","createHighlighter","instance","codeChildren","_root$children","_pre$children","_code$children","root","nodes","pre","node","code","shiki","_ref","language","_options$colorScheme","lang","colorScheme","options"],"sources":["../../src/highlight/shiki.ts"],"sourcesContent":["import { createHighlighter, type Highlighter } from 'shiki'\r\nimport type { MarkdownHighlighter } from '../core/types'\r\nimport { highlightedNodesFromHast, plaintextHighlight } from './shared'\r\n\r\nconst THEMES = {\r\n light: 'github-light',\r\n dark: 'github-dark',\r\n} as const\r\n\r\nconst DEFAULT_LANGUAGES = [\r\n 'bash',\r\n 'css',\r\n 'diff',\r\n 'go',\r\n 'html',\r\n 'javascript',\r\n 'json',\r\n 'markdown',\r\n 'python',\r\n 'rust',\r\n 'shell',\r\n 'sql',\r\n 'tsx',\r\n 'typescript',\r\n 'xml',\r\n 'yaml',\r\n]\r\n\r\nlet highlighterPromise: Promise<Highlighter> | undefined\r\nlet highlighter: Highlighter | undefined\r\n\r\nasync function getHighlighter(): Promise<Highlighter> {\r\n if (highlighter) return highlighter\r\n if (!highlighterPromise) {\r\n highlighterPromise = createHighlighter({\r\n themes: [THEMES.light, THEMES.dark],\r\n langs: DEFAULT_LANGUAGES,\r\n }).then((instance) => {\r\n highlighter = instance\r\n return instance\r\n })\r\n }\r\n return highlighterPromise\r\n}\r\n\r\nfunction codeChildren(nodes: readonly unknown[]): readonly unknown[] {\r\n const root = nodes[0] as { children?: readonly unknown[] } | undefined\r\n const pre = root?.children?.find(\r\n (node) => (node as { tagName?: string }).tagName === 'pre',\r\n ) as { children?: readonly unknown[] } | undefined\r\n const code = pre?.children?.find(\r\n (node) => (node as { tagName?: string }).tagName === 'code',\r\n ) as { children?: readonly unknown[] } | undefined\r\n return code?.children ?? []\r\n}\r\n\r\n/**\r\n * Optional Shiki adapter. The highlighter, themes, and requested languages\r\n * load asynchronously; until then callers see plain text.\r\n */\r\nexport const shiki: MarkdownHighlighter = {\r\n id: 'shiki',\r\n languages: DEFAULT_LANGUAGES,\r\n load: async () => {\r\n await getHighlighter()\r\n },\r\n async loadLanguage(language) {\r\n const instance = await getHighlighter()\r\n if (!instance.getLoadedLanguages().includes(language)) {\r\n await instance.loadLanguage(language as never)\r\n }\r\n },\r\n highlight(code, language, options) {\r\n if (!highlighter) return plaintextHighlight(code, language)\r\n const loaded = highlighter.getLoadedLanguages()\r\n const lang = loaded.includes(language as never) ? language : 'text'\r\n // Keep both theme variants in the token style while making the active\r\n // scheme the concrete color. Normalization preserves that constrained\r\n // style subset, so tokens keep their colors instead of rendering\r\n // monochrome.\r\n const colorScheme =\r\n options.colorScheme ?? (options.theme === 'dark' ? 'dark' : 'light')\r\n const root = highlighter.codeToHast(code, {\r\n lang: lang as never,\r\n themes: THEMES,\r\n defaultColor: colorScheme,\r\n ...(options.theme ? { theme: options.theme as never } : {}),\r\n })\r\n return {\r\n language: lang,\r\n nodes: highlightedNodesFromHast(\r\n codeChildren([root]) as never[],\r\n ),\r\n }\r\n },\r\n}\r\n\r\nexport default shiki\r\n"],"mappings":";;;;;AAIA,IAAMG,IAAS;CACb,OAAO;CACP,MAAM;AACR,GAEMC,IAAoB;CACxB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,GAEIC,GACAC;AAEJ,SAAeC,IAAA;;;;C,OAAuC,IAAAE,EAAA,aAAA;EAWpD,OAVIH,MACCD,MACH,IAAqBK,EAAkB;GACrC,QAAQ,CAACP,EAAO,OAAOA,EAAO,IAAI;GAClC,OAAOC;EACT,CAAC,CAAC,CAAC,MAAM,OACP,IAAcO,GACPA,EACR,IAEIN;CACT,CAAA,G;;AAEA,SAASO,EAAa,GAA+C;;CACnE,IAAMI,IAAOC,EAAM,IACbC,IAAAF,KAAA,SAAA,IAAMA,EAAM,aAAA,OAAA,KAAA,IAAAH,EAAU,MACzB,MAAUM,EAA8B,YAAY,KACvD,GACMC,IAAAF,KAAA,SAAA,IAAOA,EAAK,aAAA,OAAA,KAAA,IAAAJ,EAAU,MACzB,MAAUK,EAA8B,YAAY,MACvD;CACA,QAAA,IAAAC,KAAA,OAAA,KAAA,IAAOA,EAAM,aAAA,OAAY,CAAC,IAAbL;AACf;AAMA,IAAaM,IAA6B;CACxC,IAAI;CACJ,WAAWjB;CACX,MAAA,WAAA;EAAkB,IAAAkB,IAAAb,EAAA,aAAA;GAChB,MAAMF,EAAe;EACvB,CAAA;;;;;CACA,aAAmB,GAAA;EAAU,OAAAE,EAAA,aAAA;GAC3B,IAAME,IAAW,MAAMJ,EAAe;GACtC,AAAKI,EAAS,mBAAmB,CAAC,CAAC,SAASY,CAAQ,MAClD,MAAMZ,EAAS,aAAaY,CAAiB;EAEjD,CAAA,CAAA,CAAA;;CACA,UAAU,GAAM,GAAU,GAAS;;EACjC,IAAI,CAACjB,GAAa,OAAOL,EAAmBmB,GAAMG,CAAQ;EAE1D,IAAME,IADSnB,EAAY,mBACd,CAAA,CAAO,SAASiB,CAAiB,IAAIA,IAAW,QAKvDG,KAAA,IACJC,EAAQ,gBAAA,OAAgBA,EAAQ,UAAU,SAAS,SAAS,UAApDH,GACJR,IAAOV,EAAY,WAAWc,GAAApB,EAAA;GAC5B;GACN,QAAQG;GACR,cAAcuB;EACV,GAAAC,EAAQ,QAAQ,EAAE,OAAOA,EAAQ,MAAe,IAAI,CAAC,CAC3D,CAAC;EACD,OAAO;GACL,UAAUF;GACV,OAAOvB,EACLU,EAAa,CAACI,CAAI,CAAC,CACrB;EACF;CACF;AACF"}
|
package/dist/html/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["rehypeRaw","htmlPlugin","options"],"sources":["../../src/html/index.ts"],"sourcesContent":["import rehypeRaw from 'rehype-raw'\nimport type { HtmlSchemaExtension, MarkdownPlugin } from '../core/types'\n\nexport interface HtmlPluginOptions {\n /**\n * Add-only extension for the built-in raw HTML sanitizer. Property names use\n * hast casing, for example `srcSet` and `dateTime`.\n */\n schema?: HtmlSchemaExtension\n}\n\n/**\n * Enable sanitized raw HTML in the official pipeline.\n *\n * The plugin contributes `rehype-raw`; the official pipeline runs it before the\n * built-in sanitizer and ignores manual `rehype-raw` entries. Importing this\n * entry is the only supported way to render raw HTML.\n */\nexport function htmlPlugin(options: HtmlPluginOptions = {}): MarkdownPlugin {\n return {\n name: 'html',\n html: true,\n htmlSchema: options.schema,\n rehypePlugins: [[rehypeRaw, {}]],\n }\n}\n\nexport type { HtmlSchemaExtension }\n"],"mappings":";;AAkBA,SAAgBC,EAAW,IAA6B,CAAC,GAAmB;CAC1E,OAAO;EACL,MAAM;EACN,MAAM;EACN,YAAYC,EAAQ;EACpB,eAAe,CAAC,CAACF,GAAW,CAAC,CAAC,CAAC;CACjC;AACF"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["validateManifest","PART_NAMES","VMD_CLASS_PREFIX","partAttrs","TOKENS","exportMarkdownHtmlSync","validateManifestRegistry","partClass","COMPONENT_MANIFESTS","PARTS","exportMarkdownHtml","TOKEN_NAMES","resolveLabel","DEFAULT_LABELS","errorMessage","createDiagnostic","isExternalUrl","resolveUrl","defaultUrlTransform","walkNodes","normalizeHast","extractToc","filterTocByDepth","collectCustomTags","memoGet","withUniqueSlugs","buildDocument","memoClear","useActiveHeading","memoSet","withDerivedDocument","useMarkdownDocument","memoSize","findElementById","segmentSearch","frontmatterPlugin","linkPlugin","createPluginContext","defineMarkdownPlugin","searchDocument","countSearchMatches","defaultPlugins","searchPlugin","codePlugin","fullPlugins","validatePlugin","customTagsPlugin","gfmPlugin","resolvePlugins","tocPlugin","mergeMarkdownPreset","mergeMarkdownConfig","defineMarkdownPreset","resolvePreset","composePresets","isValidSlugger","isValidMermaidRenderer","isValidHighlighter","isValidUrlTransform","isValidMathEngine","isValidDiagnosticFormatter","resolvePipeline","defineMarkdownPipeline","createPipelineIdentity","validatePipeline","assertPipelineResult","createOfficialPipeline","createMemoKey","mermaidPlugin","provideMarkdownConfig","useMarkdownConfig","MARKDOWN_CONFIG","isEmptySlotContent","useRenderContext","RENDER_CONTEXT","CodeBlock_default","MarkdownMath_default","MarkdownMermaid_default","MermaidBlock_default","MarkdownCode_default","MarkdownBlockquote_default","MarkdownBreak_default","MarkdownCustomTag_default","MarkdownEmphasis_default","MarkdownHeading_default","MarkdownHorizontalRule_default","MarkdownImage_default","MarkdownInlineCode_default","MarkdownLink_default","MarkdownList_default","MarkdownListItem_default","MarkdownFootnoteReference_default","MarkdownFootnotes_default","MarkdownParagraph_default","MarkdownStrikethrough_default","MarkdownTaskItem_default","MarkdownStrong_default","MarkdownTable_default","MarkdownTableCell_default","MarkdownTableRow_default","MarkdownTableSection_default","MarkdownChildren_default","MarkdownRenderer_default","MarkdownContent_default","MarkdownEmpty_default","MarkdownError_default","MarkdownLoading_default","MarkdownRoot_default","MarkdownTocItem_default","MarkdownToc_default","MarkdownConfigProvider_default","VueSyntaxHighlighter_default","MermaidLiveEditor_default","MarkdownHtml_default","version","getComponentManifest"],"sources":["../src/index.ts"],"sourcesContent":["export const version = '1.0.0'\r\n\r\nexport * from './core/types'\r\nexport * from './core/parts'\r\nexport * from './core/labels'\r\nexport * from './core/diagnostics'\r\nexport * from './core/url'\r\nexport * from './core/model'\r\nexport * from './core/normalize'\r\nexport * from './core/search'\r\nexport * from './core/slugger'\r\nexport * from './core/manifest'\r\nexport * from './core/config'\r\nexport * from './core/preset'\r\nexport * from './core/adapters'\r\nexport * from './export'\r\nexport * from './core/memo'\r\nexport * from './pipeline'\r\nexport * from './plugins/define'\r\nexport * from './plugins/builtin'\r\nexport * from './plugins/registry'\r\nexport * from './mermaid/plugin'\r\nexport * from './composables/useMarkdownDocument'\r\nexport * from './composables/useActiveHeading'\r\nexport * from './components'\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAakH,KAAU"}
|