@quartz-community/tag-page 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../node_modules/inline-style-parser/index.js","../../node_modules/style-to-object/src/index.ts","../../node_modules/style-to-js/src/utilities.ts","../../node_modules/style-to-js/src/index.ts","../../node_modules/@quartz-community/utils/src/sort.ts","../../node_modules/@quartz-community/utils/src/path.ts","../../node_modules/preact/src/constants.js","../../node_modules/preact/src/util.js","../../node_modules/preact/src/options.js","../../node_modules/preact/src/create-element.js","../../node_modules/preact/src/diff/catch-error.js","../../node_modules/preact/src/component.js","../../node_modules/preact/src/diff/props.js","../../node_modules/preact/src/create-context.js","../../node_modules/preact/jsx-runtime/src/index.js","../../src/components/PageList.tsx","../../node_modules/comma-separated-tokens/index.js","../../node_modules/devlop/lib/default.js","../../node_modules/estree-util-is-identifier-name/lib/index.js","../../node_modules/hast-util-whitespace/lib/index.js","../../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/hast-to-react.js","../../node_modules/property-information/lib/find.js","../../node_modules/property-information/index.js","../../node_modules/space-separated-tokens/index.js","../../node_modules/hast-util-to-jsx-runtime/lib/index.js","../../node_modules/unist-util-position/lib/index.js","../../node_modules/unist-util-stringify-position/lib/index.js","../../node_modules/vfile-message/lib/index.js","../../node_modules/@quartz-community/utils/src/jsx.tsx","../../src/i18n/locales/en-US.ts","../../src/i18n/locales/ar-SA.ts","../../src/i18n/locales/ca-ES.ts","../../src/i18n/locales/cs-CZ.ts","../../src/i18n/locales/de-DE.ts","../../src/i18n/locales/en-GB.ts","../../src/i18n/locales/es-ES.ts","../../src/i18n/locales/fa-IR.ts","../../src/i18n/locales/fi-FI.ts","../../src/i18n/locales/fr-FR.ts","../../src/i18n/locales/he-IL.ts","../../src/i18n/locales/hu-HU.ts","../../src/i18n/locales/id-ID.ts","../../src/i18n/locales/it-IT.ts","../../src/i18n/locales/ja-JP.ts","../../src/i18n/locales/kk-KZ.ts","../../src/i18n/locales/ko-KR.ts","../../src/i18n/locales/lt-LT.ts","../../src/i18n/locales/nb-NO.ts","../../src/i18n/locales/nl-NL.ts","../../src/i18n/locales/pl-PL.ts","../../src/i18n/locales/pt-BR.ts","../../src/i18n/locales/ro-RO.ts","../../src/i18n/locales/ru-RU.ts","../../src/i18n/locales/th-TH.ts","../../src/i18n/locales/tr-TR.ts","../../src/i18n/locales/uk-UA.ts","../../src/i18n/locales/vi-VN.ts","../../src/i18n/locales/zh-CN.ts","../../src/i18n/locales/zh-TW.ts","../../src/i18n/index.ts","../../src/util/tags.ts","../../src/components/styles/listPage.scss","../../src/components/TagContent.tsx"],"names":["index","i","position","start","whitespace","re","m","c","f2","s","slug","x","_","slice","options","vnodeId","EMPTY_ARR","createElement","type","props","children","key","ref","normalizedProps","arguments","length","call","defaultProps","createVNode","original","vnode","__k","__","__b","__e","__c","constructor","__v","__i","__u","Fragment","error","oldVNode","errorInfo","component","ctor","handled","getDerivedStateFromError","setState","__d","componentDidCatch","__E","e","Promise","prototype","then","bind","resolve","setTimeout","Math","random","toString","isStaticChildren","__source","__self","u","name","html","svg","stringify","point","own","cap","create","styleToJs","jsx","number","t","r","a","b","root"],"mappings":"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","file":"index.js","sourcesContent":["// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nexport default function (style, options) {\n if (typeof style !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n\n if (!style) return [];\n\n options = options || {};\n\n /**\n * Positional.\n */\n var lineno = 1;\n var column = 1;\n\n /**\n * Update lineno and column based on `str`.\n *\n * @param {String} str\n */\n function updatePosition(str) {\n var lines = str.match(NEWLINE_REGEX);\n if (lines) lineno += lines.length;\n var i = str.lastIndexOf(NEWLINE);\n column = ~i ? str.length - i : column + str.length;\n }\n\n /**\n * Mark position and patch `node.position`.\n *\n * @return {Function}\n */\n function position() {\n var start = { line: lineno, column: column };\n return function (node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n\n /**\n * Store position information for a node.\n *\n * @constructor\n * @property {Object} start\n * @property {Object} end\n * @property {undefined|String} source\n */\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n\n /**\n * Non-enumerable source string.\n */\n Position.prototype.content = style;\n\n var errorsList = [];\n\n /**\n * Error `msg`.\n *\n * @param {String} msg\n * @throws {Error}\n */\n function error(msg) {\n var err = new Error(\n options.source + ':' + lineno + ':' + column + ': ' + msg\n );\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = style;\n\n if (options.silent) {\n errorsList.push(err);\n } else {\n throw err;\n }\n }\n\n /**\n * Match `re` and return captures.\n *\n * @param {RegExp} re\n * @return {undefined|Array}\n */\n function match(re) {\n var m = re.exec(style);\n if (!m) return;\n var str = m[0];\n updatePosition(str);\n style = style.slice(str.length);\n return m;\n }\n\n /**\n * Parse whitespace.\n */\n function whitespace() {\n match(WHITESPACE_REGEX);\n }\n\n /**\n * Parse comments.\n *\n * @param {Object[]} [rules]\n * @return {Object[]}\n */\n function comments(rules) {\n var c;\n rules = rules || [];\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n }\n return rules;\n }\n\n /**\n * Parse comment.\n *\n * @return {Object}\n * @throws {Error}\n */\n function comment() {\n var pos = position();\n if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n var i = 2;\n while (\n EMPTY_STRING != style.charAt(i) &&\n (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n ) {\n ++i;\n }\n i += 2;\n\n if (EMPTY_STRING === style.charAt(i - 1)) {\n return error('End of comment missing');\n }\n\n var str = style.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n style = style.slice(i);\n column += 2;\n\n return pos({\n type: TYPE_COMMENT,\n comment: str\n });\n }\n\n /**\n * Parse declaration.\n *\n * @return {Object}\n * @throws {Error}\n */\n function declaration() {\n var pos = position();\n\n // prop\n var prop = match(PROPERTY_REGEX);\n if (!prop) return;\n comment();\n\n // :\n if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n // val\n var val = match(VALUE_REGEX);\n\n var ret = pos({\n type: TYPE_DECLARATION,\n property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n value: val\n ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n : EMPTY_STRING\n });\n\n // ;\n match(SEMICOLON_REGEX);\n\n return ret;\n }\n\n /**\n * Parse declarations.\n *\n * @return {Object[]}\n */\n function declarations() {\n var decls = [];\n\n comments(decls);\n\n // declarations\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n }\n\n return decls;\n }\n\n whitespace();\n return declarations();\n}\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n","import type { Declaration } from 'inline-style-parser';\nimport parse from 'inline-style-parser';\n\nexport { Declaration };\n\nexport interface StyleObject {\n [name: string]: string;\n}\n\ntype Iterator = (\n property: string,\n value: string,\n declaration: Declaration,\n) => void;\n\n/**\n * Parses inline style to object.\n *\n * @param style - Inline style.\n * @param iterator - Iterator.\n * @returns - Style object or null.\n *\n * @example Parsing inline style to object:\n *\n * ```js\n * import parse from 'style-to-object';\n * parse('line-height: 42;'); // { 'line-height': '42' }\n * ```\n */\nexport default function StyleToObject(\n style: string,\n iterator?: Iterator,\n): StyleObject | null {\n let styleObject: StyleObject | null = null;\n\n if (!style || typeof style !== 'string') {\n return styleObject;\n }\n\n const declarations = parse(style);\n const hasIterator = typeof iterator === 'function';\n\n declarations.forEach((declaration) => {\n if (declaration.type !== 'declaration') {\n return;\n }\n\n const { property, value } = declaration;\n\n if (hasIterator) {\n iterator(property, value, declaration);\n } else if (value) {\n styleObject = styleObject || {};\n styleObject[property] = value;\n }\n });\n\n return styleObject;\n}\n","const CUSTOM_PROPERTY_REGEX = /^--[a-zA-Z0-9_-]+$/;\nconst HYPHEN_REGEX = /-([a-z])/g;\nconst NO_HYPHEN_REGEX = /^[^-]+$/;\nconst VENDOR_PREFIX_REGEX = /^-(webkit|moz|ms|o|khtml)-/;\nconst MS_VENDOR_PREFIX_REGEX = /^-(ms)-/;\n\n/**\n * Checks whether to skip camelCase.\n */\nconst skipCamelCase = (property: string) =>\n !property ||\n NO_HYPHEN_REGEX.test(property) ||\n CUSTOM_PROPERTY_REGEX.test(property);\n\n/**\n * Replacer that capitalizes first character.\n */\nconst capitalize = (match: string, character: string) =>\n character.toUpperCase();\n\n/**\n * Replacer that removes beginning hyphen of vendor prefix property.\n */\nconst trimHyphen = (match: string, prefix: string) => `${prefix}-`;\n\n/**\n * CamelCase options.\n */\nexport interface CamelCaseOptions {\n reactCompat?: boolean;\n}\n\n/**\n * CamelCases a CSS property.\n */\nexport const camelCase = (property: string, options: CamelCaseOptions = {}) => {\n if (skipCamelCase(property)) {\n return property;\n }\n\n property = property.toLowerCase();\n\n if (options.reactCompat) {\n // `-ms` vendor prefix should not be capitalized\n property = property.replace(MS_VENDOR_PREFIX_REGEX, trimHyphen);\n } else {\n // for non-React, remove first hyphen so vendor prefix is not capitalized\n property = property.replace(VENDOR_PREFIX_REGEX, trimHyphen);\n }\n\n return property.replace(HYPHEN_REGEX, capitalize);\n};\n","import StyleToObject from 'style-to-object';\n\nimport { camelCase, CamelCaseOptions } from './utilities';\n\ntype StyleObject = Record<string, string>;\n\ninterface StyleToJSOptions extends CamelCaseOptions {}\n\n/**\n * Parses CSS inline style to JavaScript object (camelCased).\n */\nfunction StyleToJS(style: string, options?: StyleToJSOptions): StyleObject {\n const output: StyleObject = {};\n\n if (!style || typeof style !== 'string') {\n return output;\n }\n\n StyleToObject(style, (property, value) => {\n // skip CSS comment\n if (property && value) {\n output[camelCase(property, options)] = value;\n }\n });\n\n return output;\n}\n\nStyleToJS.default = StyleToJS;\n\nexport = StyleToJS;\n","import type { QuartzPluginData, ValidDateType, SortFn } from \"@quartz-community/types\";\n\nexport function getDate(data: QuartzPluginData): Date | undefined {\n const defaultDateType = data.defaultDateType as ValidDateType | undefined;\n if (!defaultDateType) {\n return undefined;\n }\n const dates = data.dates as Record<ValidDateType, Date> | undefined;\n return dates?.[defaultDateType];\n}\n\nexport function byDateAndAlphabetical(): SortFn {\n return (f1, f2) => {\n const f1Date = getDate(f1);\n const f2Date = getDate(f2);\n if (f1Date && f2Date) {\n return f2Date.getTime() - f1Date.getTime();\n } else if (f1Date && !f2Date) {\n return -1;\n } else if (!f1Date && f2Date) {\n return 1;\n }\n\n const f1Title = (\n ((f1.frontmatter as Record<string, unknown>)?.title as string) ?? \"\"\n ).toLowerCase();\n const f2Title = (\n ((f2.frontmatter as Record<string, unknown>)?.title as string) ?? \"\"\n ).toLowerCase();\n return f1Title.localeCompare(f2Title);\n };\n}\n","import GithubSlugger, { slug as githubSlug } from \"github-slugger\";\nimport type { Element as HastElement } from \"hast\";\nimport type { FilePath, FullSlug } from \"@quartz-community/types\";\n\nexport type { FilePath, FullSlug };\n\n/** No '/index' ending, no file extension, can have trailing slash for folders. */\nexport type SimpleSlug = string & { _brand: \"SimpleSlug\" };\n\n/** Starts with './' or '../', used for navigation. */\nexport type RelativeURL = string & { _brand: \"RelativeURL\" };\n\nexport interface TransformOptions {\n strategy: \"absolute\" | \"relative\" | \"shortest\";\n allSlugs: FullSlug[];\n}\n\nexport function isFilePath(s: string): s is FilePath {\n const validStart = !s.startsWith(\".\");\n return validStart && _hasFileExtension(s);\n}\n\nexport function isFullSlug(s: string): s is FullSlug {\n const validStart = !(s.startsWith(\".\") || s.startsWith(\"/\"));\n const validEnding = !s.endsWith(\"/\");\n return validStart && validEnding && !_containsForbiddenCharacters(s);\n}\n\nexport function isSimpleSlug(s: string): s is SimpleSlug {\n const validStart = !(s.startsWith(\".\") || (s.length > 1 && s.startsWith(\"/\")));\n const validEnding = !endsWith(s, \"index\");\n return validStart && !_containsForbiddenCharacters(s) && validEnding && !_hasFileExtension(s);\n}\n\nexport function isRelativeURL(s: string): s is RelativeURL {\n const validStart = /^\\.{1,2}/.test(s);\n const validEnding = !endsWith(s, \"index\");\n return validStart && validEnding && ![\".md\", \".html\"].includes(getFileExtension(s) ?? \"\");\n}\n\nexport function isAbsoluteURL(s: string): boolean {\n try {\n new URL(s);\n } catch {\n return false;\n }\n return true;\n}\n\nexport function simplifySlug(fp: FullSlug | string): SimpleSlug {\n const res = stripSlashes(trimSuffix(fp, \"index\"), true);\n return (res.length === 0 ? \"/\" : res) as SimpleSlug;\n}\n\nexport function getFullSlug(window: Window): FullSlug {\n const res = window.document.body.dataset.slug! as FullSlug;\n return res;\n}\n\nexport function getFullSlugFromUrl(): FullSlug {\n let rawSlug = decodeURI(window.location.pathname);\n if (rawSlug.endsWith(\"/\")) rawSlug = rawSlug.slice(0, -1);\n if (rawSlug.startsWith(\"/\")) rawSlug = rawSlug.slice(1);\n return rawSlug as FullSlug;\n}\n\nexport function slugifyFilePath(fp: FilePath, excludeExt?: boolean): FullSlug {\n fp = stripSlashes(fp) as FilePath;\n const ext = getFileExtension(fp);\n const withoutFileExt = fp.replace(new RegExp(ext + \"$\"), \"\");\n const finalExt = excludeExt || [\".md\", \".html\", undefined].includes(ext) ? \"\" : ext;\n\n let slug = _sluggify(withoutFileExt);\n\n if (endsWith(slug, \"_index\")) {\n slug = slug.replace(/_index$/, \"index\");\n }\n\n // Obsidian \"Folder Notes\" convention (insideFolder storage): a file named the\n // same as its parent folder is treated as the folder's landing page. Rewrite\n // `folder/folder` → `folder/index` so every downstream consumer (trie, link\n // resolver, simplifySlug, isFolderPath) sees the canonical Quartz slug shape\n // and Just Works. A top-level single-segment slug is NOT rewritten — that\n // represents Obsidian's `parentFolder` storage mode, which Quartz already\n // routes as a regular top-level page.\n const segments = slug.split(\"/\");\n if (segments.length >= 2 && segments[segments.length - 1] === segments[segments.length - 2]) {\n segments[segments.length - 1] = \"index\";\n slug = segments.join(\"/\");\n }\n\n return (slug + (finalExt ?? \"\")) as FullSlug;\n}\n\nexport function joinSegments(...args: string[]): string {\n if (args.length === 0) {\n return \"\";\n }\n\n let joined = args\n .filter((segment) => segment !== \"\" && segment !== \"/\")\n .map((segment) => stripSlashes(segment))\n .join(\"/\");\n\n const first = args[0];\n const last = args[args.length - 1];\n\n if (first?.startsWith(\"/\")) {\n joined = \"/\" + joined;\n }\n\n if (last?.endsWith(\"/\")) {\n joined = joined + \"/\";\n }\n\n return joined;\n}\n\nexport function resolvePath(to: string): string {\n if (to.startsWith(\"/\")) return to;\n return \"/\" + to;\n}\n\n/** Read the base path injected at build time via `data-basepath` on `<body>`.\n * Returns `\"\"` for root deployments, e.g. `\"/repository\"` for subdirectory. */\nexport function getBasePath(): string {\n if (typeof document === \"undefined\") return \"\";\n return document.body?.dataset?.basepath ?? \"\";\n}\n\n/** Resolve a slug to an absolute URL path, prepending the site's base path.\n * e.g. `resolveBasePath(\"features/Callouts\")` → `\"/repository/features/Callouts\"` */\nexport function resolveBasePath(to: string, basePath?: string): string {\n const base = basePath ?? getBasePath();\n const slug = to.startsWith(\"/\") ? to : \"/\" + to;\n return base + slug;\n}\n\nexport function endsWith(s: string, suffix: string): boolean {\n return s === suffix || s.endsWith(\"/\" + suffix);\n}\n\nexport function trimSuffix(s: string, suffix: string): string {\n if (endsWith(s, suffix)) {\n s = s.slice(0, -suffix.length);\n }\n return s;\n}\n\nexport function stripSlashes(s: string, onlyStripPrefix?: boolean): string {\n if (s.startsWith(\"/\")) {\n s = s.substring(1);\n }\n\n if (!onlyStripPrefix && s.endsWith(\"/\")) {\n s = s.slice(0, -1);\n }\n\n return s;\n}\n\nexport function getFileExtension(s: string): string | undefined {\n return s.match(/\\.[A-Za-z0-9]+$/)?.[0];\n}\n\nexport function isFolderPath(fplike: string): boolean {\n return (\n fplike.endsWith(\"/\") ||\n endsWith(fplike, \"index\") ||\n endsWith(fplike, \"index.md\") ||\n endsWith(fplike, \"index.html\")\n );\n}\n\nexport function getAllSegmentPrefixes(path: string): string[] {\n const segments = path.split(\"/\");\n const results: string[] = [];\n for (let i = 0; i < segments.length; i++) {\n results.push(segments.slice(0, i + 1).join(\"/\"));\n }\n return results;\n}\n\nexport function pathToRoot(slug: FullSlug): RelativeURL {\n let rootPath = slug\n .split(\"/\")\n .filter((x) => x !== \"\")\n .slice(0, -1)\n .map((_) => \"..\")\n .join(\"/\");\n\n if (rootPath.length === 0) {\n rootPath = \".\";\n }\n\n return rootPath as RelativeURL;\n}\n\nexport function resolveRelative(current: FullSlug, target: FullSlug | SimpleSlug): RelativeURL {\n const res = joinSegments(pathToRoot(current), simplifySlug(target as FullSlug)) as RelativeURL;\n return res;\n}\n\n/**\n * The slug of a heading's text: the `id` Quartz gives a heading, and the\n * anchor every link or table-of-contents entry to that heading must use.\n *\n * Same rule as GitHub and `rehype-slug` (`github-slugger`): lowercase,\n * punctuation removed, each space replaced by `-`. Non-Latin letters and\n * digits are kept, e.g. `\"监听 127.0.0.1(推荐)\"` → `\"监听-127001推荐\"`.\n *\n * Use {@link HeadingSlugger} when slugging every heading on a page, so that\n * repeated headings get unique ids (`foo`, `foo-1`, …).\n */\nexport function slugHeading(text: string): string {\n return githubSlug(text);\n}\n\n/**\n * Slugs the headings of one page in document order with {@link slugHeading},\n * numbering repeats the way GitHub and `rehype-slug` do (`foo`, `foo-1`,\n * `foo-2`). Create one per page, or call `reset()` between pages.\n */\nexport class HeadingSlugger {\n private readonly slugger = new GithubSlugger();\n\n /** Slug `text`, unique among the slugs this instance has returned. */\n slug(text: string): string {\n return this.slugger.slug(text);\n }\n\n reset(): void {\n this.slugger.reset();\n }\n}\n\n/**\n * The anchor Obsidian writes when it links to a heading with this text.\n *\n * Obsidian anchors cannot hold `:`, `|`, `^`, `#` or `\\`, so Obsidian replaces\n * each with a space and collapses the spaces: `\"Colon:unspaced\"` →\n * `\"Colon unspaced\"`. Slugging this with {@link slugHeading} gives the anchor\n * a link written in Obsidian resolves to; when it differs from the heading's\n * `id`, heading producers can add it as an alias id.\n */\nexport function obsidianHeadingAnchor(text: string): string {\n return text\n .replace(/[:|^#\\\\]/g, \" \")\n .replace(/\\s+/g, \" \")\n .trim();\n}\n\n/**\n * Point a same-page anchor link (`href` starting with `#`, as written) at an\n * `id` on the page. `ids` holds every `id` on the page.\n *\n * - An anchor that already names an id (as written or percent-decoded) is\n * returned unchanged.\n * - `#^name` (an Obsidian block reference) points at the id `name`.\n * - Otherwise, when the anchor is a heading's text, it points at the\n * heading's id: the anchor slugged with {@link slugHeading}, e.g.\n * `#监听 127.0.0.1(推荐)` → `#监听-127001推荐`.\n * - An anchor that names no id either way is returned unchanged, so a link to\n * an id added later (raw HTML, another plugin) keeps working.\n */\nexport function resolveAnchorHref(href: string, ids: ReadonlySet<string>): string {\n if (!href.startsWith(\"#\") || href.length === 1) return href;\n const raw = href.slice(1);\n let decoded = raw;\n try {\n decoded = decodeURIComponent(raw);\n } catch {\n // keep the anchor as written\n }\n if (ids.has(raw) || ids.has(decoded)) return href;\n const bare = decoded.startsWith(\"^\") ? decoded.slice(1) : decoded;\n if (ids.has(bare)) return \"#\" + bare;\n const slugged = slugHeading(bare);\n return ids.has(slugged) ? \"#\" + slugged : href;\n}\n\nexport function splitAnchor(link: string): [string, string] {\n const [fp, anchor] = link.split(\"#\", 2);\n if (fp!.endsWith(\".pdf\")) {\n return [fp!, anchor === undefined ? \"\" : `#${anchor}`];\n }\n if (anchor === undefined) {\n return [fp!, \"\"];\n }\n const bare = anchor.startsWith(\"^\") ? anchor.slice(1) : anchor;\n const slugged = \"#\" + slugHeading(bare);\n return [fp!, slugged];\n}\n\nexport function slugTag(tag: string): string {\n return tag\n .split(\"/\")\n .map((tagSegment) => _sluggify(tagSegment))\n .join(\"/\");\n}\n\nexport function transformInternalLink(link: string): RelativeURL {\n const [fplike, anchor] = splitAnchor(decodeURI(link));\n\n const segments = fplike.split(\"/\").filter((x) => x.length > 0);\n const prefix = segments.filter(_isRelativeSegment).join(\"/\");\n const fp = segments.filter((seg) => !_isRelativeSegment(seg) && seg !== \"\").join(\"/\");\n\n const slugged = slugifyFilePath(fp as FilePath);\n const simpleSlug = simplifySlug(slugged);\n const folderPath = isFolderPath(fplike) || isFolderPath(slugged);\n const joined = joinSegments(stripSlashes(prefix), stripSlashes(simpleSlug));\n const trail = folderPath ? \"/\" : \"\";\n const res = (_addRelativeToStart(joined) + trail + anchor) as RelativeURL;\n return res;\n}\n\nexport function transformLink(src: FullSlug, target: string, opts: TransformOptions): RelativeURL {\n const targetSlug = transformInternalLink(target);\n\n if (opts.strategy === \"relative\") {\n return _resolveRelativeFolderNote(src, target) ?? (targetSlug as RelativeURL);\n } else {\n // When src is a folder page (e.g. \"Compendium/Spells\" backed by index.md),\n // the browser serves it at \"/Compendium/Spells/\" with a trailing slash.\n // pathToRoot needs the \"/index\" suffix to compute the correct depth.\n const effectiveSrc =\n !endsWith(src, \"index\") && opts.allSlugs.includes(`${src}/index` as FullSlug)\n ? (`${src}/index` as FullSlug)\n : src;\n\n const folderTail = isFolderPath(targetSlug) ? \"/\" : \"\";\n const canonicalSlug = stripSlashes(targetSlug.slice(\".\".length));\n const [targetCanonical, targetAnchor] = splitAnchor(canonicalSlug);\n\n if (opts.strategy === \"shortest\") {\n const isMultiSegment = targetCanonical.includes(\"/\");\n const isFolderTarget = isFolderPath(targetSlug);\n let matchingFileNames = opts.allSlugs.filter((slug) => {\n if (isMultiSegment) {\n // Multi-segment partial path: match by suffix\n if (slug === targetCanonical || slug.endsWith(\"/\" + targetCanonical)) {\n return true;\n }\n // Folder targets have \"/index\" stripped — also match the \"/index\" variant\n if (isFolderTarget) {\n const withIndex = targetCanonical + \"/index\";\n return slug === withIndex || slug.endsWith(\"/\" + withIndex);\n }\n return false;\n }\n const parts = slug.split(\"/\");\n const fileName = parts.at(-1);\n return targetCanonical === fileName;\n });\n\n // Folder note Foo/Foo.md slugs to Foo/index, so its last segment never matches [[Foo]]\n // Retry by folder name, only when no real file claims it\n if (matchingFileNames.length === 0 && !isMultiSegment) {\n matchingFileNames = opts.allSlugs.filter((slug) => {\n const parts = slug.split(\"/\");\n return parts.at(-1) === \"index\" && parts.at(-2) === targetCanonical;\n });\n }\n\n if (matchingFileNames.length === 1) {\n const matchedSlug = matchingFileNames[0]!;\n return (resolveRelative(effectiveSrc, matchedSlug) + targetAnchor) as RelativeURL;\n }\n }\n\n return (joinSegments(pathToRoot(effectiveSrc), canonicalSlug) + folderTail) as RelativeURL;\n }\n}\n\n/**\n * A relative link can name a folder note (`topic/Topic.md`, slugged\n * `topic/index`) without spelling out its folder, e.g. `./Topic.md` written\n * inside `topic/`. `slugifyFilePath` only sees the segments the link spells\n * out, so apply the folder-note rule to the target as resolved against the\n * source's folder, and return the link with its file name replaced by\n * `index`. Returns `undefined` when the target is not such a folder note.\n * @internal\n */\nfunction _resolveRelativeFolderNote(src: FullSlug, target: string): RelativeURL | undefined {\n let decoded: string;\n try {\n decoded = decodeURI(target);\n } catch {\n return undefined;\n }\n const hashIdx = decoded.indexOf(\"#\");\n const fplike = hashIdx === -1 ? decoded : decoded.slice(0, hashIdx);\n const rest = hashIdx === -1 ? \"\" : decoded.slice(hashIdx);\n if (fplike === \"\" || fplike.endsWith(\"/\") || fplike.startsWith(\"/\")) return undefined;\n\n const ext = getFileExtension(fplike);\n if (![\".md\", \".html\", undefined].includes(ext)) return undefined;\n\n const segments = fplike.split(\"/\");\n const fileName = segments[segments.length - 1]!;\n const fileSlug = slugifyPath(ext ? fileName.slice(0, -ext.length) : fileName);\n if (fileSlug === \"index\") return undefined;\n\n // Resolve the link's folder against the source's folder (both as slugs)\n const resolved = src.split(\"/\").slice(0, -1);\n for (const seg of segments.slice(0, -1)) {\n if (seg === \"\" || seg === \".\") continue;\n if (seg === \"..\") {\n if (resolved.length === 0) return undefined;\n resolved.pop();\n } else {\n resolved.push(slugifyPath(seg));\n }\n }\n\n if (resolved.length === 0 || resolved[resolved.length - 1] !== fileSlug) return undefined;\n\n segments[segments.length - 1] = \"index\" + (ext ?? \"\");\n return transformInternalLink(encodeURI(segments.join(\"/\") + rest));\n}\n\n/**\n * Slugify a file path for use as an href.\n * Replaces whitespace→hyphens, &→-and-, %→-percent, removes ? and #, and\n * lowercases the result so that link matching is case-insensitive (matching\n * Obsidian's link-resolution semantics). Operates per segment so directory\n * separators are preserved.\n */\nexport function slugifyPath(s: string): string {\n return s\n .split(\"/\")\n .map((segment) =>\n segment\n .replace(/\\s/g, \"-\")\n .replace(/&/g, \"-and-\")\n .replace(/%/g, \"-percent\")\n .replace(/\\?/g, \"\")\n .replace(/#/g, \"\")\n .replace(/[<>:\"|*]/g, \"\")\n .toLowerCase(),\n )\n .join(\"/\")\n .replace(/\\/$/, \"\");\n}\n\n/**\n * Re-base the relative `href` and `src` attributes of a HAST element so that\n * links inside content originally resolved relative to `newBase` remain valid\n * when the element is embedded at a page with slug `curBase`.\n *\n * Used for transclusions and cross-slug HAST embedding (Quartz core's\n * `renderPage` transclude expansion, canvas-page's embedded file-nodes, and\n * any plugin that takes `vfile.data.htmlAst` from one page and renders it\n * inside another). Absolute URLs pass through unchanged.\n *\n * The element (and its children) are deep-cloned via `structuredClone`, so\n * the original HAST tree is never mutated.\n */\nexport function normalizeHastElement<T extends HastElement>(\n rawEl: T,\n curBase: FullSlug,\n newBase: FullSlug,\n): T {\n const el = structuredClone(rawEl);\n _rebaseHastElement(el, \"src\", curBase, newBase);\n _rebaseHastElement(el, \"href\", curBase, newBase);\n if (el.children) {\n el.children = el.children.map((child) =>\n child.type === \"element\"\n ? (normalizeHastElement(child as HastElement, curBase, newBase) as typeof child)\n : child,\n );\n }\n return el;\n}\n\n/** @internal */\nfunction _rebaseHastElement(\n el: HastElement,\n attr: \"href\" | \"src\",\n curBase: FullSlug,\n newBase: FullSlug,\n): void {\n const value = el.properties?.[attr];\n if (value === undefined || value === null) return;\n const href = String(value);\n if (!isRelativeURL(href)) return;\n el.properties![attr] = joinSegments(resolveRelative(curBase, newBase), \"..\", href);\n}\n\n/** @internal */\nfunction _sluggify(s: string): string {\n return slugifyPath(s);\n}\n\nfunction _containsForbiddenCharacters(s: string): boolean {\n return s.includes(\" \") || s.includes(\"#\") || s.includes(\"?\") || s.includes(\"&\");\n}\n\nfunction _hasFileExtension(s: string): boolean {\n return getFileExtension(s) !== undefined;\n}\n\nfunction _isRelativeSegment(s: string): boolean {\n return /^\\.{0,2}$/.test(s);\n}\n\nfunction _addRelativeToStart(s: string): string {\n if (s === \"\") {\n s = \".\";\n }\n\n if (!s.startsWith(\".\")) {\n s = joinSegments(\".\", s);\n }\n\n return s;\n}\n","/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 2;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 1;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nexport const XHTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\nexport const MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n\nexport const NULL = null;\nexport const UNDEFINED = undefined;\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { EMPTY_ARR } from './constants';\n\nexport const isArray = Array.isArray;\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-expect-error We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {import('./index').ContainerNode} node The node to remove\n */\nexport function removeNode(node) {\n\tif (node && node.parentNode) node.parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { slice } from './util';\nimport options from './options';\nimport { NULL, UNDEFINED } from './constants';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component constructor for this\n * virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the\n * virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != NULL) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === UNDEFINED) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, NULL);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\t/** @type {import('./internal').VNode} */\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: NULL,\n\t\t_parent: NULL,\n\t\t_depth: 0,\n\t\t_dom: NULL,\n\t\t_component: NULL,\n\t\tconstructor: UNDEFINED,\n\t\t_original: original == NULL ? ++vnodeId : original,\n\t\t_index: -1,\n\t\t_flags: 0\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == NULL && options.vnode != NULL) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: NULL };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != NULL && vnode.constructor === UNDEFINED;\n","import { NULL } from '../constants';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw the error that was caught (except\n * for unmounting when this parameter is the highest parent that was being\n * unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component,\n\t\t/** @type {import('../internal').ComponentType} */\n\t\tctor,\n\t\t/** @type {boolean} */\n\t\thandled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != NULL) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != NULL) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\nimport { MODE_HYDRATE, NULL } from './constants';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function BaseComponent(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nBaseComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != NULL && this._nextState != this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == NULL) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nBaseComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](https://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {ComponentChildren | void}\n */\nBaseComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == NULL) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._index + 1)\n\t\t\t: NULL;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != NULL && sibling._dom != NULL) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : NULL;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tif (component._parentDom && component._dirty) {\n\t\tlet oldVNode = component._vnode,\n\t\t\toldDom = oldVNode._dom,\n\t\t\tcommitQueue = [],\n\t\t\trefQueue = [],\n\t\t\tnewVNode = assign({}, oldVNode);\n\t\tnewVNode._original = oldVNode._original + 1;\n\t\tif (options.vnode) options.vnode(newVNode);\n\n\t\tdiff(\n\t\t\tcomponent._parentDom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tcomponent._parentDom.namespaceURI,\n\t\t\toldVNode._flags & MODE_HYDRATE ? [oldDom] : NULL,\n\t\t\tcommitQueue,\n\t\t\toldDom == NULL ? getDomSibling(oldVNode) : oldDom,\n\t\t\t!!(oldVNode._flags & MODE_HYDRATE),\n\t\t\trefQueue\n\t\t);\n\n\t\tnewVNode._original = oldVNode._original;\n\t\tnewVNode._parent._children[newVNode._index] = newVNode;\n\t\tcommitRoot(commitQueue, newVNode, refQueue);\n\t\toldVNode._dom = oldVNode._parent = null;\n\n\t\tif (newVNode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(newVNode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != NULL && vnode._component != NULL) {\n\t\tvnode._dom = vnode._component.base = NULL;\n\t\tvnode._children.some(child => {\n\t\t\tif (child != NULL && child._dom != NULL) {\n\t\t\t\treturn (vnode._dom = vnode._component.base = child._dom);\n\t\t\t}\n\t\t});\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce != options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\ttry {\n\t\tlet c,\n\t\t\tl = 1;\n\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\twhile (rerenderQueue.length) {\n\t\t\t// Keep the rerender queue sorted by (depth, insertion order). The queue\n\t\t\t// will initially be sorted on the first iteration only if it has more than 1 item.\n\t\t\t//\n\t\t\t// New items can be added to the queue e.g. when rerendering a provider, so we want to\n\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t// single pass\n\t\t\tif (rerenderQueue.length > l) {\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\n\t\t\tc = rerenderQueue.shift();\n\t\t\tl = rerenderQueue.length;\n\n\t\t\trenderComponent(c);\n\t\t}\n\t} finally {\n\t\trerenderQueue.length = process._rerenderCount = 0;\n\t}\n}\n\nprocess._rerenderCount = 0;\n","import { IS_NON_DIMENSIONAL, NULL, SVG_NAMESPACE } from '../constants';\nimport options from '../options';\n\n// Per-instance unique key for event clock stamps. Each Preact copy on the page\n// gets its own random suffix so that `_dispatched` / `_attached` properties on\n// shared event objects and handler functions cannot collide across instances.\n// ~1 in 60M collision odds - if you have that many praect versions on the page,\n// you deserve some weird bugs.\n// In 11 we can replace this with a\n// Symbol\nlet _id = Math.random().toString(8),\n\tEVENT_DISPATCHED = '__d' + _id,\n\tEVENT_ATTACHED = '__a' + _id;\n\nfunction setStyle(style, key, value) {\n\tif (key[0] == '-') {\n\t\tstyle.setProperty(key, value == NULL ? '' : value);\n\t} else if (value == NULL) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\nconst CAPTURE_REGEX = /(PointerCapture)$|Capture$/i;\n\n// A logical clock to solve issues like https://github.com/preactjs/preact/issues/3927.\n// When the DOM performs an event it leaves micro-ticks in between bubbling up which means that\n// an event can trigger on a newly reated DOM-node while the event bubbles up.\n//\n// Originally inspired by Vue\n// (https://github.com/vuejs/core/blob/caeb8a68811a1b0f79/packages/runtime-dom/src/modules/events.ts#L90-L101),\n// but modified to use a logical clock instead of Date.now() in case event handlers get attached\n// and events get dispatched during the same millisecond.\n//\n// The clock is incremented after each new event dispatch. This allows 1 000 000 new events\n// per second for over 280 years before the value reaches Number.MAX_SAFE_INTEGER (2**53 - 1).\nlet eventClock = 0;\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {string} namespace Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, namespace) {\n\tlet useCapture;\n\n\to: if (name == 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] != oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] == 'o' && name[1] == 'n') {\n\t\tuseCapture = name != (name = name.replace(CAPTURE_REGEX, '$1'));\n\t\tconst lowerCaseName = name.toLowerCase();\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (lowerCaseName in dom || name == 'onFocusOut' || name == 'onFocusIn')\n\t\t\tname = lowerCaseName.slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tvalue[EVENT_ATTACHED] = eventClock;\n\t\t\t\tdom.addEventListener(\n\t\t\t\t\tname,\n\t\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\t\tuseCapture\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tvalue[EVENT_ATTACHED] = oldValue[EVENT_ATTACHED];\n\t\t\t}\n\t\t} else {\n\t\t\tdom.removeEventListener(\n\t\t\t\tname,\n\t\t\t\tuseCapture ? eventProxyCapture : eventProxy,\n\t\t\t\tuseCapture\n\t\t\t);\n\t\t}\n\t} else {\n\t\tif (namespace == SVG_NAMESPACE) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname != 'width' &&\n\t\t\tname != 'height' &&\n\t\t\tname != 'href' &&\n\t\t\tname != 'list' &&\n\t\t\tname != 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname != 'tabIndex' &&\n\t\t\tname != 'download' &&\n\t\t\tname != 'rowSpan' &&\n\t\t\tname != 'colSpan' &&\n\t\t\tname != 'role' &&\n\t\t\tname != 'popover' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == NULL ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value == 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != NULL && (value !== false || name[4] == '-')) {\n\t\t\tdom.setAttribute(name, name == 'popover' && value == true ? '' : value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Create an event proxy function.\n * @param {boolean} useCapture Is the event handler for the capture phase.\n * @private\n */\nfunction createEventProxy(useCapture) {\n\t/**\n\t * Proxy an event to hooked event handlers\n\t * @param {import('../internal').PreactEvent} e The event object from the browser\n\t * @private\n\t */\n\treturn function (e) {\n\t\tif (this._listeners) {\n\t\t\tconst eventHandler = this._listeners[e.type + useCapture];\n\t\t\tif (e[EVENT_DISPATCHED] == NULL) {\n\t\t\t\te[EVENT_DISPATCHED] = eventClock++;\n\n\t\t\t\t// When `e[EVENT_DISPATCHED]` is smaller than the time when the targeted event\n\t\t\t\t// handler was attached we know we have bubbled up to an element that was added\n\t\t\t\t// during patching the DOM.\n\t\t\t} else if (e[EVENT_DISPATCHED] < eventHandler[EVENT_ATTACHED]) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn eventHandler(options.event ? options.event(e) : e);\n\t\t}\n\t};\n}\n\nconst eventProxy = createEventProxy(false);\nconst eventProxyCapture = createEventProxy(true);\n","import { enqueueRender } from './component';\nimport { NULL } from './constants';\n\nexport let i = 0;\n\nexport function createContext(defaultValue) {\n\tfunction Context(props) {\n\t\tif (!this.getChildContext) {\n\t\t\t/** @type {Set<import('./internal').Component> | null} */\n\t\t\tlet subs = new Set();\n\t\t\tlet ctx = {};\n\t\t\tctx[Context._id] = this;\n\n\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\tthis.componentWillUnmount = () => {\n\t\t\t\tsubs = NULL;\n\t\t\t};\n\n\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t// @ts-expect-error even\n\t\t\t\tif (this.props.value != _props.value) {\n\t\t\t\t\tsubs.forEach(c => {\n\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.sub = c => {\n\t\t\t\tsubs.add(c);\n\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\tif (subs) {\n\t\t\t\t\t\tsubs.delete(c);\n\t\t\t\t\t}\n\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t};\n\t\t\t};\n\t\t}\n\n\t\treturn props.children;\n\t}\n\n\tContext._id = '__cC' + i++;\n\tContext._defaultValue = defaultValue;\n\n\t/** @type {import('./internal').FunctionComponent} */\n\tContext.Consumer = (props, contextValue) => {\n\t\treturn props.children(contextValue);\n\t};\n\n\t// we could also get rid of _contextRef entirely\n\tContext.Provider =\n\t\tContext._contextRef =\n\t\tContext.Consumer.contextType =\n\t\t\tContext;\n\n\treturn Context;\n}\n","import { options, Fragment } from 'preact';\nimport { encodeEntities } from './utils';\nimport { IS_NON_DIMENSIONAL } from '../../src/constants';\n\nlet vnodeId = 0;\n\nconst isArray = Array.isArray;\n\n/**\n * @fileoverview\n * This file exports various methods that implement Babel's \"automatic\" JSX runtime API:\n * - jsx(type, props, key)\n * - jsxs(type, props, key)\n * - jsxDEV(type, props, key, __source, __self)\n *\n * The implementation of createVNode here is optimized for performance.\n * Benchmarks: https://esbench.com/bench/5f6b54a0b4632100a7dcd2b3\n */\n\n/**\n * JSX.Element factory used by Babel's {runtime:\"automatic\"} JSX transform\n * @param {VNode['type']} type\n * @param {VNode['props']} props\n * @param {VNode['key']} [key]\n * @param {unknown} [isStaticChildren]\n * @param {unknown} [__source]\n * @param {unknown} [__self]\n */\nfunction createVNode(type, props, key, isStaticChildren, __source, __self) {\n\tif (!props) props = {};\n\t// We'll want to preserve `ref` in props to get rid of the need for\n\t// forwardRef components in the future, but that should happen via\n\t// a separate PR.\n\tlet normalizedProps = props,\n\t\tref,\n\t\ti;\n\n\tif ('ref' in normalizedProps) {\n\t\tnormalizedProps = {};\n\t\tfor (i in props) {\n\t\t\tif (i == 'ref') {\n\t\t\t\tref = props[i];\n\t\t\t} else {\n\t\t\t\tnormalizedProps[i] = props[i];\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @type {VNode & { __source: any; __self: any }} */\n\tconst vnode = {\n\t\ttype,\n\t\tprops: normalizedProps,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: --vnodeId,\n\t\t_index: -1,\n\t\t_flags: 0,\n\t\t__source,\n\t\t__self\n\t};\n\n\t// If a Component VNode, check for and apply defaultProps.\n\t// Note: `type` is often a String, and can be `undefined` in development.\n\tif (typeof type === 'function' && (ref = type.defaultProps)) {\n\t\tfor (i in ref)\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = ref[i];\n\t\t\t}\n\t}\n\n\tif (options.vnode) options.vnode(vnode);\n\treturn vnode;\n}\n\n/**\n * Create a template vnode. This function is not expected to be\n * used directly, but rather through a precompile JSX transform\n * @param {string[]} templates\n * @param {Array<string | null | VNode>} exprs\n * @returns {VNode}\n */\nfunction jsxTemplate(templates, ...exprs) {\n\tconst vnode = createVNode(Fragment, { tpl: templates, exprs });\n\t// Bypass render to string top level Fragment optimization\n\tvnode.key = vnode._vnode;\n\treturn vnode;\n}\n\nconst JS_TO_CSS = {};\nconst CSS_REGEX = /[A-Z]/g;\n\n/**\n * Unwrap potential signals.\n * @param {*} value\n * @returns {*}\n */\nfunction normalizeAttrValue(value) {\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.valueOf === 'function'\n\t\t? value.valueOf()\n\t\t: value;\n}\n\n/**\n * Serialize an HTML attribute to a string. This function is not\n * expected to be used directly, but rather through a precompile\n * JSX transform\n * @param {string} name The attribute name\n * @param {*} value The attribute value\n * @returns {string}\n */\nfunction jsxAttr(name, value) {\n\tif (options.attr) {\n\t\tconst result = options.attr(name, value);\n\t\tif (typeof result === 'string') return result;\n\t}\n\n\tvalue = normalizeAttrValue(value);\n\n\tif (name === 'ref' || name === 'key') return '';\n\tif (name === 'style' && typeof value === 'object') {\n\t\tlet str = '';\n\t\tfor (let prop in value) {\n\t\t\tlet val = value[prop];\n\t\t\tif (val != null && val !== '') {\n\t\t\t\tconst name =\n\t\t\t\t\tprop[0] == '-'\n\t\t\t\t\t\t? prop\n\t\t\t\t\t\t: JS_TO_CSS[prop] ||\n\t\t\t\t\t\t\t(JS_TO_CSS[prop] = prop.replace(CSS_REGEX, '-$&').toLowerCase());\n\n\t\t\t\tlet suffix = ';';\n\t\t\t\tif (\n\t\t\t\t\ttypeof val === 'number' &&\n\t\t\t\t\t// Exclude custom-attributes\n\t\t\t\t\t!name.startsWith('--') &&\n\t\t\t\t\t!IS_NON_DIMENSIONAL.test(name)\n\t\t\t\t) {\n\t\t\t\t\tsuffix = 'px;';\n\t\t\t\t}\n\t\t\t\tstr = str + name + ':' + val + suffix;\n\t\t\t}\n\t\t}\n\t\treturn name + '=\"' + encodeEntities(str) + '\"';\n\t}\n\n\tif (\n\t\tvalue == null ||\n\t\tvalue === false ||\n\t\ttypeof value === 'function' ||\n\t\ttypeof value === 'object'\n\t) {\n\t\treturn '';\n\t} else if (value === true) return name;\n\n\treturn name + '=\"' + encodeEntities('' + value) + '\"';\n}\n\n/**\n * Escape a dynamic child passed to `jsxTemplate`. This function\n * is not expected to be used directly, but rather through a\n * precompile JSX transform\n * @param {*} value\n * @returns {string | null | VNode | Array<string | null | VNode>}\n */\nfunction jsxEscape(value) {\n\tif (\n\t\tvalue == null ||\n\t\ttypeof value === 'boolean' ||\n\t\ttypeof value === 'function'\n\t) {\n\t\treturn null;\n\t}\n\n\tif (typeof value === 'object') {\n\t\t// Check for VNode\n\t\tif (value.constructor === undefined) return value;\n\n\t\tif (isArray(value)) {\n\t\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\t\tvalue[i] = jsxEscape(value[i]);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t}\n\n\treturn encodeEntities('' + value);\n}\n\nexport {\n\tcreateVNode as jsx,\n\tcreateVNode as jsxs,\n\tcreateVNode as jsxDEV,\n\tFragment,\n\t// precompiled JSX transform\n\tjsxTemplate,\n\tjsxAttr,\n\tjsxEscape\n};\n","import type { QuartzComponent, QuartzComponentProps, SortFn } from \"@quartz-community/types\";\nimport { getDate, byDateAndAlphabetical } from \"@quartz-community/utils/sort\";\nimport { resolveRelative, isFolderPath } from \"../util/path\";\nimport type { FullSlug } from \"../util/path\";\n\nexport type { SortFn } from \"@quartz-community/types\";\nexport { byDateAndAlphabetical };\n\nexport function byDateAndAlphabeticalFolderFirst(_cfg: unknown): SortFn {\n return (f1, f2) => {\n const f1IsFolder = isFolderPath(f1.slug ?? \"\");\n const f2IsFolder = isFolderPath(f2.slug ?? \"\");\n if (f1IsFolder && !f2IsFolder) return -1;\n if (!f1IsFolder && f2IsFolder) return 1;\n\n if (f1.dates && f2.dates) {\n return (getDate(f2)?.getTime() ?? 0) - (getDate(f1)?.getTime() ?? 0);\n } else if (f1.dates && !f2.dates) {\n return -1;\n } else if (!f1.dates && f2.dates) {\n return 1;\n }\n const f1Title = f1.frontmatter?.title?.toLowerCase() ?? \"\";\n const f2Title = f2.frontmatter?.title?.toLowerCase() ?? \"\";\n return f1Title.localeCompare(f2Title);\n };\n}\n\ntype DateComponentProps = {\n date: Date;\n locale: string;\n};\n\nfunction DateDisplay({ date, locale }: DateComponentProps) {\n return (\n <time dateTime={date.toISOString()}>\n {date.toLocaleDateString(locale, {\n year: \"numeric\",\n month: \"short\",\n day: \"2-digit\",\n })}\n </time>\n );\n}\n\ntype PageListProps = {\n limit?: number;\n sort?: SortFn;\n} & QuartzComponentProps;\n\nexport const PageList: QuartzComponent = ({\n cfg,\n fileData,\n allFiles,\n limit,\n sort,\n}: PageListProps) => {\n const sorter = sort ?? byDateAndAlphabeticalFolderFirst(cfg);\n let list = [...allFiles].sort(sorter);\n if (limit) {\n list = list.slice(0, limit);\n }\n\n const fileSlug = (fileData as { slug?: string } | undefined)?.slug as FullSlug | undefined;\n\n return (\n <ul class=\"section-ul\">\n {list.map((page) => {\n const title = page.frontmatter?.title;\n const tags = (page.frontmatter?.tags ?? []) as string[];\n\n return (\n <li class=\"section-li\">\n <div class=\"section\">\n <p class=\"meta\">\n {page.dates && getDate(page) && (\n <DateDisplay\n date={getDate(page)!}\n locale={(cfg as { locale?: string } | undefined)?.locale ?? \"en-US\"}\n />\n )}\n </p>\n <div class=\"desc\">\n <h3>\n <a\n href={resolveRelative(fileSlug ?? (\"\" as FullSlug), page.slug as FullSlug)}\n class=\"internal\"\n >\n {title}\n </a>\n </h3>\n </div>\n <ul class=\"tags\">\n {tags.map((tag) => (\n <li>\n <a\n class=\"internal tag-link\"\n href={resolveRelative(\n fileSlug ?? (\"\" as FullSlug),\n `tags/${tag}` as unknown as FullSlug,\n )}\n >\n {tag}\n </a>\n </li>\n ))}\n </ul>\n </div>\n </li>\n );\n })}\n </ul>\n );\n};\n\nPageList.css = `\n.section h3 {\n margin: 0;\n}\n\n.section > .tags {\n margin: 0;\n}\n`;\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","export function deprecate(fn) {\n return fn\n}\n\nexport function equal() {}\n\nexport function ok() {}\n\nexport function unreachable() {}\n","/**\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [jsx=false]\n * Support JSX identifiers (default: `false`).\n */\n\nconst startRe = /[$_\\p{ID_Start}]/u\nconst contRe = /[$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst contReJsx = /[-$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst nameRe = /^[$_\\p{ID_Start}][$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\nconst nameReJsx = /^[$_\\p{ID_Start}][-$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Checks if the given code point can start an identifier.\n *\n * @param {number | undefined} code\n * Code point to check.\n * @returns {boolean}\n * Whether `code` can start an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function start(code) {\n return code ? startRe.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given code point can continue an identifier.\n *\n * @param {number | undefined} code\n * Code point to check.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {boolean}\n * Whether `code` can continue an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function cont(code, options) {\n const settings = options || emptyOptions\n const re = settings.jsx ? contReJsx : contRe\n return code ? re.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given value is a valid identifier name.\n *\n * @param {string} name\n * Identifier to check.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {boolean}\n * Whether `name` can be an identifier.\n */\nexport function name(name, options) {\n const settings = options || emptyOptions\n const re = settings.jsx ? nameReJsx : nameRe\n return re.test(name)\n}\n","/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n// HTML whitespace expression.\n// See <https://infra.spec.whatwg.org/#ascii-whitespace>.\nconst re = /[ \\t\\n\\f\\r]/g\n\n/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {Nodes | string} thing\n * Thing to check (`Node` or `string`).\n * @returns {boolean}\n * Whether the `value` is inter-element whitespace (`boolean`): consisting of\n * zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n * (`\\r`), or form feed (`\\f`); if a node is passed it must be a `Text` node,\n * whose `value` field is checked.\n */\nexport function whitespace(thing) {\n return typeof thing === 'object'\n ? thing.type === 'text'\n ? empty(thing.value)\n : false\n : empty(thing)\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction empty(value) {\n return value.replace(re, '') === ''\n}\n","/**\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 * Special cases for React (`Record<string, string>`).\n *\n * `hast` is close to `React` but differs in a couple of cases.\n * To get a React property from a hast property,\n * check if it is in `hastToReact`.\n * If it is, use the corresponding value;\n * otherwise, use the hast property.\n *\n * @type {Record<string, string>}\n */\nexport const hastToReact = {\n classId: 'classID',\n dataType: 'datatype',\n itemId: 'itemID',\n strokeDashArray: 'strokeDasharray',\n strokeDashOffset: 'strokeDashoffset',\n strokeLineCap: 'strokeLinecap',\n strokeLineJoin: 'strokeLinejoin',\n strokeMiterLimit: 'strokeMiterlimit',\n typeOf: 'typeof',\n xLinkActuate: 'xlinkActuate',\n xLinkArcRole: 'xlinkArcrole',\n xLinkHref: 'xlinkHref',\n xLinkRole: 'xlinkRole',\n xLinkShow: 'xlinkShow',\n xLinkTitle: 'xlinkTitle',\n xLinkType: 'xlinkType',\n xmlnsXLink: 'xmlnsXlink'\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 * 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","/**\n * @import {Identifier, Literal, MemberExpression} from 'estree'\n * @import {Jsx, JsxDev, Options, Props} from 'hast-util-to-jsx-runtime'\n * @import {Element, Nodes, Parents, Root, Text} from 'hast'\n * @import {MdxFlowExpressionHast, MdxTextExpressionHast} from 'mdast-util-mdx-expression'\n * @import {MdxJsxFlowElementHast, MdxJsxTextElementHast} from 'mdast-util-mdx-jsx'\n * @import {MdxjsEsmHast} from 'mdast-util-mdxjs-esm'\n * @import {Position} from 'unist'\n * @import {Child, Create, Field, JsxElement, State, Style} from './types.js'\n */\n\nimport {stringify as commas} from 'comma-separated-tokens'\nimport {ok as assert} from 'devlop'\nimport {name as isIdentifierName} from 'estree-util-is-identifier-name'\nimport {whitespace} from 'hast-util-whitespace'\nimport {find, hastToReact, html, svg} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport styleToJs from 'style-to-js'\nimport {pointStart} from 'unist-util-position'\nimport {VFileMessage} from 'vfile-message'\n\n// To do: next major: `Object.hasOwn`.\nconst own = {}.hasOwnProperty\n\n/** @type {Map<string, number>} */\nconst emptyMap = new Map()\n\nconst cap = /[A-Z]/g\n\n// `react-dom` triggers a warning for *any* white space in tables.\n// To follow GFM, `mdast-util-to-hast` injects line endings between elements.\n// Other tools might do so too, but they don’t do here, so we remove all of\n// that.\n\n// See: <https://github.com/facebook/react/pull/7081>.\n// See: <https://github.com/facebook/react/pull/7515>.\n// See: <https://github.com/remarkjs/remark-react/issues/64>.\n// See: <https://github.com/rehypejs/rehype-react/pull/29>.\n// See: <https://github.com/rehypejs/rehype-react/pull/32>.\n// See: <https://github.com/rehypejs/rehype-react/pull/45>.\nconst tableElements = new Set(['table', 'tbody', 'thead', 'tfoot', 'tr'])\n\nconst tableCellElement = new Set(['td', 'th'])\n\nconst docs = 'https://github.com/syntax-tree/hast-util-to-jsx-runtime'\n\n/**\n * Transform a hast tree to preact, react, solid, svelte, vue, etc.,\n * with an automatic JSX runtime.\n *\n * @param {Nodes} tree\n * Tree to transform.\n * @param {Options} options\n * Configuration (required).\n * @returns {JsxElement}\n * JSX element.\n */\n\nexport function toJsxRuntime(tree, options) {\n if (!options || options.Fragment === undefined) {\n throw new TypeError('Expected `Fragment` in options')\n }\n\n const filePath = options.filePath || undefined\n /** @type {Create} */\n let create\n\n if (options.development) {\n if (typeof options.jsxDEV !== 'function') {\n throw new TypeError(\n 'Expected `jsxDEV` in options when `development: true`'\n )\n }\n\n create = developmentCreate(filePath, options.jsxDEV)\n } else {\n if (typeof options.jsx !== 'function') {\n throw new TypeError('Expected `jsx` in production options')\n }\n\n if (typeof options.jsxs !== 'function') {\n throw new TypeError('Expected `jsxs` in production options')\n }\n\n create = productionCreate(filePath, options.jsx, options.jsxs)\n }\n\n /** @type {State} */\n const state = {\n Fragment: options.Fragment,\n ancestors: [],\n components: options.components || {},\n create,\n elementAttributeNameCase: options.elementAttributeNameCase || 'react',\n evaluater: options.createEvaluater ? options.createEvaluater() : undefined,\n filePath,\n ignoreInvalidStyle: options.ignoreInvalidStyle || false,\n passKeys: options.passKeys !== false,\n passNode: options.passNode || false,\n schema: options.space === 'svg' ? svg : html,\n stylePropertyNameCase: options.stylePropertyNameCase || 'dom',\n tableCellAlignToStyle: options.tableCellAlignToStyle !== false\n }\n\n const result = one(state, tree, undefined)\n\n // JSX element.\n if (result && typeof result !== 'string') {\n return result\n }\n\n // Text node or something that turned into nothing.\n return state.create(\n tree,\n state.Fragment,\n {children: result || undefined},\n undefined\n )\n}\n\n/**\n * Transform a node.\n *\n * @param {State} state\n * Info passed around.\n * @param {Nodes} node\n * Current node.\n * @param {string | undefined} key\n * Key.\n * @returns {Child | undefined}\n * Child, optional.\n */\nfunction one(state, node, key) {\n if (node.type === 'element') {\n return element(state, node, key)\n }\n\n if (node.type === 'mdxFlowExpression' || node.type === 'mdxTextExpression') {\n return mdxExpression(state, node)\n }\n\n if (node.type === 'mdxJsxFlowElement' || node.type === 'mdxJsxTextElement') {\n return mdxJsxElement(state, node, key)\n }\n\n if (node.type === 'mdxjsEsm') {\n return mdxEsm(state, node)\n }\n\n if (node.type === 'root') {\n return root(state, node, key)\n }\n\n if (node.type === 'text') {\n return text(state, node)\n }\n}\n\n/**\n * Handle element.\n *\n * @param {State} state\n * Info passed around.\n * @param {Element} node\n * Current node.\n * @param {string | undefined} key\n * Key.\n * @returns {Child | undefined}\n * Child, optional.\n */\nfunction element(state, node, key) {\n const parentSchema = state.schema\n let schema = parentSchema\n\n if (node.tagName.toLowerCase() === 'svg' && parentSchema.space === 'html') {\n schema = svg\n state.schema = schema\n }\n\n state.ancestors.push(node)\n\n const type = findComponentFromName(state, node.tagName, false)\n const props = createElementProps(state, node)\n let children = createChildren(state, node)\n\n if (tableElements.has(node.tagName)) {\n children = children.filter(function (child) {\n return typeof child === 'string' ? !whitespace(child) : true\n })\n }\n\n addNode(state, props, type, node)\n addChildren(props, children)\n\n // Restore.\n state.ancestors.pop()\n state.schema = parentSchema\n\n return state.create(node, type, props, key)\n}\n\n/**\n * Handle MDX expression.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdxFlowExpressionHast | MdxTextExpressionHast} node\n * Current node.\n * @returns {Child | undefined}\n * Child, optional.\n */\nfunction mdxExpression(state, node) {\n if (node.data && node.data.estree && state.evaluater) {\n const program = node.data.estree\n const expression = program.body[0]\n assert(expression.type === 'ExpressionStatement')\n\n // Assume result is a child.\n return /** @type {Child | undefined} */ (\n state.evaluater.evaluateExpression(expression.expression)\n )\n }\n\n crashEstree(state, node.position)\n}\n\n/**\n * Handle MDX ESM.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdxjsEsmHast} node\n * Current node.\n * @returns {Child | undefined}\n * Child, optional.\n */\nfunction mdxEsm(state, node) {\n if (node.data && node.data.estree && state.evaluater) {\n // Assume result is a child.\n return /** @type {Child | undefined} */ (\n state.evaluater.evaluateProgram(node.data.estree)\n )\n }\n\n crashEstree(state, node.position)\n}\n\n/**\n * Handle MDX JSX.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdxJsxFlowElementHast | MdxJsxTextElementHast} node\n * Current node.\n * @param {string | undefined} key\n * Key.\n * @returns {Child | undefined}\n * Child, optional.\n */\nfunction mdxJsxElement(state, node, key) {\n const parentSchema = state.schema\n let schema = parentSchema\n\n if (node.name === 'svg' && parentSchema.space === 'html') {\n schema = svg\n state.schema = schema\n }\n\n state.ancestors.push(node)\n\n const type =\n node.name === null\n ? state.Fragment\n : findComponentFromName(state, node.name, true)\n const props = createJsxElementProps(state, node)\n const children = createChildren(state, node)\n\n addNode(state, props, type, node)\n addChildren(props, children)\n\n // Restore.\n state.ancestors.pop()\n state.schema = parentSchema\n\n return state.create(node, type, props, key)\n}\n\n/**\n * Handle root.\n *\n * @param {State} state\n * Info passed around.\n * @param {Root} node\n * Current node.\n * @param {string | undefined} key\n * Key.\n * @returns {Child | undefined}\n * Child, optional.\n */\nfunction root(state, node, key) {\n /** @type {Props} */\n const props = {}\n\n addChildren(props, createChildren(state, node))\n\n return state.create(node, state.Fragment, props, key)\n}\n\n/**\n * Handle text.\n *\n * @param {State} _\n * Info passed around.\n * @param {Text} node\n * Current node.\n * @returns {Child | undefined}\n * Child, optional.\n */\nfunction text(_, node) {\n return node.value\n}\n\n/**\n * Add `node` to props.\n *\n * @param {State} state\n * Info passed around.\n * @param {Props} props\n * Props.\n * @param {unknown} type\n * Type.\n * @param {Element | MdxJsxFlowElementHast | MdxJsxTextElementHast} node\n * Node.\n * @returns {undefined}\n * Nothing.\n */\nfunction addNode(state, props, type, node) {\n // If this is swapped out for a component:\n if (typeof type !== 'string' && type !== state.Fragment && state.passNode) {\n props.node = node\n }\n}\n\n/**\n * Add children to props.\n *\n * @param {Props} props\n * Props.\n * @param {Array<Child>} children\n * Children.\n * @returns {undefined}\n * Nothing.\n */\nfunction addChildren(props, children) {\n if (children.length > 0) {\n const value = children.length > 1 ? children : children[0]\n\n if (value) {\n props.children = value\n }\n }\n}\n\n/**\n * @param {string | undefined} _\n * Path to file.\n * @param {Jsx} jsx\n * Dynamic.\n * @param {Jsx} jsxs\n * Static.\n * @returns {Create}\n * Create a production element.\n */\nfunction productionCreate(_, jsx, jsxs) {\n return create\n /** @type {Create} */\n function create(_, type, props, key) {\n // Only an array when there are 2 or more children.\n const isStaticChildren = Array.isArray(props.children)\n const fn = isStaticChildren ? jsxs : jsx\n return key ? fn(type, props, key) : fn(type, props)\n }\n}\n\n/**\n * @param {string | undefined} filePath\n * Path to file.\n * @param {JsxDev} jsxDEV\n * Development.\n * @returns {Create}\n * Create a development element.\n */\nfunction developmentCreate(filePath, jsxDEV) {\n return create\n /** @type {Create} */\n function create(node, type, props, key) {\n // Only an array when there are 2 or more children.\n const isStaticChildren = Array.isArray(props.children)\n const point = pointStart(node)\n return jsxDEV(\n type,\n props,\n key,\n isStaticChildren,\n {\n columnNumber: point ? point.column - 1 : undefined,\n fileName: filePath,\n lineNumber: point ? point.line : undefined\n },\n undefined\n )\n }\n}\n\n/**\n * Create props from an element.\n *\n * @param {State} state\n * Info passed around.\n * @param {Element} node\n * Current element.\n * @returns {Props}\n * Props.\n */\nfunction createElementProps(state, node) {\n /** @type {Props} */\n const props = {}\n /** @type {string | undefined} */\n let alignValue\n /** @type {string} */\n let prop\n\n for (prop in node.properties) {\n if (prop !== 'children' && own.call(node.properties, prop)) {\n const result = createProperty(state, prop, node.properties[prop])\n\n if (result) {\n const [key, value] = result\n\n if (\n state.tableCellAlignToStyle &&\n key === 'align' &&\n typeof value === 'string' &&\n tableCellElement.has(node.tagName)\n ) {\n alignValue = value\n } else {\n props[key] = value\n }\n }\n }\n }\n\n if (alignValue) {\n // Assume style is an object.\n const style = /** @type {Style} */ (props.style || (props.style = {}))\n style[state.stylePropertyNameCase === 'css' ? 'text-align' : 'textAlign'] =\n alignValue\n }\n\n return props\n}\n\n/**\n * Create props from a JSX element.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdxJsxFlowElementHast | MdxJsxTextElementHast} node\n * Current JSX element.\n * @returns {Props}\n * Props.\n */\nfunction createJsxElementProps(state, node) {\n /** @type {Props} */\n const props = {}\n\n for (const attribute of node.attributes) {\n if (attribute.type === 'mdxJsxExpressionAttribute') {\n if (attribute.data && attribute.data.estree && state.evaluater) {\n const program = attribute.data.estree\n const expression = program.body[0]\n assert(expression.type === 'ExpressionStatement')\n const objectExpression = expression.expression\n assert(objectExpression.type === 'ObjectExpression')\n const property = objectExpression.properties[0]\n assert(property.type === 'SpreadElement')\n\n Object.assign(\n props,\n state.evaluater.evaluateExpression(property.argument)\n )\n } else {\n crashEstree(state, node.position)\n }\n } else {\n // For JSX, the author is responsible of passing in the correct values.\n const name = attribute.name\n /** @type {unknown} */\n let value\n\n if (attribute.value && typeof attribute.value === 'object') {\n if (\n attribute.value.data &&\n attribute.value.data.estree &&\n state.evaluater\n ) {\n const program = attribute.value.data.estree\n const expression = program.body[0]\n assert(expression.type === 'ExpressionStatement')\n value = state.evaluater.evaluateExpression(expression.expression)\n } else {\n crashEstree(state, node.position)\n }\n } else {\n value = attribute.value === null ? true : attribute.value\n }\n\n // Assume a prop.\n props[name] = /** @type {Props[keyof Props]} */ (value)\n }\n }\n\n return props\n}\n\n/**\n * Create children.\n *\n * @param {State} state\n * Info passed around.\n * @param {Parents} node\n * Current element.\n * @returns {Array<Child>}\n * Children.\n */\nfunction createChildren(state, node) {\n /** @type {Array<Child>} */\n const children = []\n let index = -1\n /** @type {Map<string, number>} */\n // Note: test this when Solid doesn’t want to merge my upcoming PR.\n /* c8 ignore next */\n const countsByName = state.passKeys ? new Map() : emptyMap\n\n while (++index < node.children.length) {\n const child = node.children[index]\n /** @type {string | undefined} */\n let key\n\n if (state.passKeys) {\n const name =\n child.type === 'element'\n ? child.tagName\n : child.type === 'mdxJsxFlowElement' ||\n child.type === 'mdxJsxTextElement'\n ? child.name\n : undefined\n\n if (name) {\n const count = countsByName.get(name) || 0\n key = name + '-' + count\n countsByName.set(name, count + 1)\n }\n }\n\n const result = one(state, child, key)\n if (result !== undefined) children.push(result)\n }\n\n return children\n}\n\n/**\n * Handle a property.\n *\n * @param {State} state\n * Info passed around.\n * @param {string} prop\n * Key.\n * @param {Array<number | string> | boolean | number | string | null | undefined} value\n * hast property value.\n * @returns {Field | undefined}\n * Field for runtime, optional.\n */\nfunction createProperty(state, prop, value) {\n const info = find(state.schema, prop)\n\n // Ignore nullish and `NaN` values.\n if (\n value === null ||\n value === undefined ||\n (typeof value === 'number' && Number.isNaN(value))\n ) {\n return\n }\n\n if (Array.isArray(value)) {\n // Accept `array`.\n // Most props are space-separated.\n value = info.commaSeparated ? commas(value) : spaces(value)\n }\n\n // React only accepts `style` as object.\n if (info.property === 'style') {\n let styleObject =\n typeof value === 'object' ? value : parseStyle(state, String(value))\n\n if (state.stylePropertyNameCase === 'css') {\n styleObject = transformStylesToCssCasing(styleObject)\n }\n\n return ['style', styleObject]\n }\n\n return [\n state.elementAttributeNameCase === 'react' && info.space\n ? hastToReact[info.property] || info.property\n : info.attribute,\n value\n ]\n}\n\n/**\n * Parse a CSS declaration to an object.\n *\n * @param {State} state\n * Info passed around.\n * @param {string} value\n * CSS declarations.\n * @returns {Style}\n * Properties.\n * @throws\n * Throws `VFileMessage` when CSS cannot be parsed.\n */\nfunction parseStyle(state, value) {\n try {\n return styleToJs(value, {reactCompat: true})\n } catch (error) {\n if (state.ignoreInvalidStyle) {\n return {}\n }\n\n const cause = /** @type {Error} */ (error)\n const message = new VFileMessage('Cannot parse `style` attribute', {\n ancestors: state.ancestors,\n cause,\n ruleId: 'style',\n source: 'hast-util-to-jsx-runtime'\n })\n message.file = state.filePath || undefined\n message.url = docs + '#cannot-parse-style-attribute'\n\n throw message\n }\n}\n\n/**\n * Create a JSX name from a string.\n *\n * @param {State} state\n * To do.\n * @param {string} name\n * Name.\n * @param {boolean} allowExpression\n * Allow member expressions and identifiers.\n * @returns {unknown}\n * To do.\n */\nfunction findComponentFromName(state, name, allowExpression) {\n /** @type {Identifier | Literal | MemberExpression} */\n let result\n\n if (!allowExpression) {\n result = {type: 'Literal', value: name}\n } else if (name.includes('.')) {\n const identifiers = name.split('.')\n let index = -1\n /** @type {Identifier | Literal | MemberExpression | undefined} */\n let node\n\n while (++index < identifiers.length) {\n /** @type {Identifier | Literal} */\n const prop = isIdentifierName(identifiers[index])\n ? {type: 'Identifier', name: identifiers[index]}\n : {type: 'Literal', value: identifiers[index]}\n node = node\n ? {\n type: 'MemberExpression',\n object: node,\n property: prop,\n computed: Boolean(index && prop.type === 'Literal'),\n optional: false\n }\n : prop\n }\n\n assert(node, 'always a result')\n result = node\n } else {\n result =\n isIdentifierName(name) && !/^[a-z]/.test(name)\n ? {type: 'Identifier', name}\n : {type: 'Literal', value: name}\n }\n\n // Only literals can be passed in `components` currently.\n // No identifiers / member expressions.\n if (result.type === 'Literal') {\n const name = /** @type {string | number} */ (result.value)\n return own.call(state.components, name) ? state.components[name] : name\n }\n\n // Assume component.\n if (state.evaluater) {\n return state.evaluater.evaluateExpression(result)\n }\n\n crashEstree(state)\n}\n\n/**\n * @param {State} state\n * @param {Position | undefined} [place]\n * @returns {never}\n */\nfunction crashEstree(state, place) {\n const message = new VFileMessage(\n 'Cannot handle MDX estrees without `createEvaluater`',\n {\n ancestors: state.ancestors,\n place,\n ruleId: 'mdx-estree',\n source: 'hast-util-to-jsx-runtime'\n }\n )\n message.file = state.filePath || undefined\n message.url = docs + '#cannot-handle-mdx-estrees-without-createevaluater'\n\n throw message\n}\n\n/**\n * Transform a DOM casing style object to a CSS casing style object.\n *\n * @param {Style} domCasing\n * @returns {Style}\n */\nfunction transformStylesToCssCasing(domCasing) {\n /** @type {Style} */\n const cssCasing = {}\n /** @type {string} */\n let from\n\n for (from in domCasing) {\n if (own.call(domCasing, from)) {\n cssCasing[transformStyleToCssCasing(from)] = domCasing[from]\n }\n }\n\n return cssCasing\n}\n\n/**\n * Transform a DOM casing style field to a CSS casing style field.\n *\n * @param {string} from\n * @returns {string}\n */\nfunction transformStyleToCssCasing(from) {\n let to = from.replace(cap, toDash)\n // Handle `ms-xxx` -> `-ms-xxx`.\n if (to.slice(0, 3) === 'ms-') to = '-' + to\n return to\n}\n\n/**\n * Make `$0` dash cased.\n *\n * @param {string} $0\n * Capitalized ASCII leter.\n * @returns {string}\n * Dash and lower letter.\n */\nfunction toDash($0) {\n return '-' + $0.toLowerCase()\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Get the ending point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointEnd = point('end')\n\n/**\n * Get the starting point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointStart = point('start')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {'end' | 'start'} type\n * Side.\n * @returns\n * Getter.\n */\nfunction point(type) {\n return point\n\n /**\n * Get the point info of `node` at a bound side.\n *\n * @param {Node | NodeLike | null | undefined} [node]\n * @returns {Point | undefined}\n */\n function point(node) {\n const point = (node && node.position && node.position[type]) || {}\n\n if (\n typeof point.line === 'number' &&\n point.line > 0 &&\n typeof point.column === 'number' &&\n point.column > 0\n ) {\n return {\n line: point.line,\n column: point.column,\n offset:\n typeof point.offset === 'number' && point.offset > -1\n ? point.offset\n : undefined\n }\n }\n }\n}\n\n/**\n * Get the positional info of `node`.\n *\n * @param {Node | NodeLike | null | undefined} [node]\n * Node.\n * @returns {Position | undefined}\n * Position.\n */\nexport function position(node) {\n const start = pointStart(node)\n const end = pointEnd(node)\n\n if (start && end) {\n return {start, end}\n }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Point | PointLike | Position | PositionLike | null | undefined} [value]\n * Node, position, or point.\n * @returns {string}\n * Pretty printed positional info of a node (`string`).\n *\n * In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n * or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n * column, `s` for `start`, and `e` for end.\n * An empty string (`''`) is returned if the given value is neither `node`,\n * `position`, nor `point`.\n */\nexport function stringifyPosition(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if ('position' in value || 'type' in value) {\n return position(value.position)\n }\n\n // Position.\n if ('start' in value || 'end' in value) {\n return position(value)\n }\n\n // Point.\n if ('line' in value || 'column' in value) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n","/**\n * @import {Node, Point, Position} from 'unist'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef Options\n * Configuration.\n * @property {Array<Node> | null | undefined} [ancestors]\n * Stack of (inclusive) ancestor nodes surrounding the message (optional).\n * @property {Error | null | undefined} [cause]\n * Original error cause of the message (optional).\n * @property {Point | Position | null | undefined} [place]\n * Place of message (optional).\n * @property {string | null | undefined} [ruleId]\n * Category of message (optional, example: `'my-rule'`).\n * @property {string | null | undefined} [source]\n * Namespace of who sent the message (optional, example: `'my-package'`).\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\n/**\n * Message.\n */\nexport class VFileMessage extends Error {\n /**\n * Create a message for `reason`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {Options | null | undefined} [options]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | Options | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns\n * Instance of `VFileMessage`.\n */\n // eslint-disable-next-line complexity\n constructor(causeOrReason, optionsOrParentOrPlace, origin) {\n super()\n\n if (typeof optionsOrParentOrPlace === 'string') {\n origin = optionsOrParentOrPlace\n optionsOrParentOrPlace = undefined\n }\n\n /** @type {string} */\n let reason = ''\n /** @type {Options} */\n let options = {}\n let legacyCause = false\n\n if (optionsOrParentOrPlace) {\n // Point.\n if (\n 'line' in optionsOrParentOrPlace &&\n 'column' in optionsOrParentOrPlace\n ) {\n options = {place: optionsOrParentOrPlace}\n }\n // Position.\n else if (\n 'start' in optionsOrParentOrPlace &&\n 'end' in optionsOrParentOrPlace\n ) {\n options = {place: optionsOrParentOrPlace}\n }\n // Node.\n else if ('type' in optionsOrParentOrPlace) {\n options = {\n ancestors: [optionsOrParentOrPlace],\n place: optionsOrParentOrPlace.position\n }\n }\n // Options.\n else {\n options = {...optionsOrParentOrPlace}\n }\n }\n\n if (typeof causeOrReason === 'string') {\n reason = causeOrReason\n }\n // Error.\n else if (!options.cause && causeOrReason) {\n legacyCause = true\n reason = causeOrReason.message\n options.cause = causeOrReason\n }\n\n if (!options.ruleId && !options.source && typeof origin === 'string') {\n const index = origin.indexOf(':')\n\n if (index === -1) {\n options.ruleId = origin\n } else {\n options.source = origin.slice(0, index)\n options.ruleId = origin.slice(index + 1)\n }\n }\n\n if (!options.place && options.ancestors && options.ancestors) {\n const parent = options.ancestors[options.ancestors.length - 1]\n\n if (parent) {\n options.place = parent.position\n }\n }\n\n const start =\n options.place && 'start' in options.place\n ? options.place.start\n : options.place\n\n /**\n * Stack of ancestor nodes surrounding the message.\n *\n * @type {Array<Node> | undefined}\n */\n this.ancestors = options.ancestors || undefined\n\n /**\n * Original error cause of the message.\n *\n * @type {Error | undefined}\n */\n this.cause = options.cause || undefined\n\n /**\n * Starting column of message.\n *\n * @type {number | undefined}\n */\n this.column = start ? start.column : undefined\n\n /**\n * State of problem.\n *\n * * `true` — error, file not usable\n * * `false` — warning, change may be needed\n * * `undefined` — change likely not needed\n *\n * @type {boolean | null | undefined}\n */\n this.fatal = undefined\n\n /**\n * Path of a file (used throughout the `VFile` ecosystem).\n *\n * @type {string | undefined}\n */\n this.file = ''\n\n // Field from `Error`.\n /**\n * Reason for message.\n *\n * @type {string}\n */\n this.message = reason\n\n /**\n * Starting line of error.\n *\n * @type {number | undefined}\n */\n this.line = start ? start.line : undefined\n\n // Field from `Error`.\n /**\n * Serialized positional info of message.\n *\n * On normal errors, this would be something like `ParseError`, buit in\n * `VFile` messages we use this space to show where an error happened.\n */\n this.name = stringifyPosition(options.place) || '1:1'\n\n /**\n * Place of message.\n *\n * @type {Point | Position | undefined}\n */\n this.place = options.place || undefined\n\n /**\n * Reason for message, should use markdown.\n *\n * @type {string}\n */\n this.reason = this.message\n\n /**\n * Category of message (example: `'my-rule'`).\n *\n * @type {string | undefined}\n */\n this.ruleId = options.ruleId || undefined\n\n /**\n * Namespace of message (example: `'my-package'`).\n *\n * @type {string | undefined}\n */\n this.source = options.source || undefined\n\n // Field from `Error`.\n /**\n * Stack of message.\n *\n * This is used by normal errors to show where something happened in\n * programming code, irrelevant for `VFile` messages,\n *\n * @type {string}\n */\n this.stack =\n legacyCause && options.cause && typeof options.cause.stack === 'string'\n ? options.cause.stack\n : ''\n\n // The following fields are “well known”.\n // Not standard.\n // Feel free to add other non-standard fields to your messages.\n\n /**\n * Specify the source value that’s being reported, which is deemed\n * incorrect.\n *\n * @type {string | undefined}\n */\n this.actual = undefined\n\n /**\n * Suggest acceptable values that can be used instead of `actual`.\n *\n * @type {Array<string> | undefined}\n */\n this.expected = undefined\n\n /**\n * Long form description of the message (you should use markdown).\n *\n * @type {string | undefined}\n */\n this.note = undefined\n\n /**\n * Link to docs for the message.\n *\n * > 👉 **Note**: this must be an absolute URL that can be passed as `x`\n * > to `new URL(x)`.\n *\n * @type {string | undefined}\n */\n this.url = undefined\n }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.column = undefined\nVFileMessage.prototype.line = undefined\nVFileMessage.prototype.ancestors = undefined\nVFileMessage.prototype.cause = undefined\nVFileMessage.prototype.fatal = undefined\nVFileMessage.prototype.place = undefined\nVFileMessage.prototype.ruleId = undefined\nVFileMessage.prototype.source = undefined\n","import type { Components, Jsx } from \"hast-util-to-jsx-runtime\";\nimport { toJsxRuntime } from \"hast-util-to-jsx-runtime\";\nimport type { Root, Node } from \"hast\";\nimport { Fragment, jsx, jsxs } from \"preact/jsx-runtime\";\nimport { h } from \"preact\";\n\n/**\n * Extract text content from JSX children.\n *\n * `toJsxRuntime` passes the inner text of `<style>` / `<script>` elements as\n * the `children` prop. This helper normalises the various shapes it can take\n * (string, array of strings, or other) into a single string so we can feed it\n * to `dangerouslySetInnerHTML`.\n */\nfunction childrenToString(children: unknown): string {\n if (typeof children === \"string\") return children;\n if (Array.isArray(children)) return children.map(childrenToString).join(\"\");\n return String(children ?? \"\");\n}\n\n/**\n * Default component overrides applied by {@link htmlToJsx}.\n *\n * - **table** – wrapped in a scrollable `<div class=\"table-container\">`\n * - **style** / **script** – rendered with `dangerouslySetInnerHTML` so that\n * special characters (`\"`, `&`, etc.) are *not* HTML-escaped by preact.\n */\nconst builtinComponents: Components = {\n table: (props) => (\n <div class=\"table-container\">\n <table {...props} />\n </div>\n ),\n style: ({ children, ...rest }) =>\n h(\"style\", { ...rest, dangerouslySetInnerHTML: { __html: childrenToString(children) } }),\n script: ({ children, ...rest }) =>\n h(\"script\", { ...rest, dangerouslySetInnerHTML: { __html: childrenToString(children) } }),\n};\n\n/**\n * Convert a HAST tree to Preact JSX, with sensible defaults for Quartz plugins.\n *\n * This is the canonical way for pageType body components (and any other code\n * that renders a HAST tree to JSX) to produce output that is safe for\n * `preact-render-to-string`. It applies built-in component overrides for\n * `<table>`, `<style>`, and `<script>` elements, preventing the common\n * pitfall where inline CSS / JS gets HTML-escaped.\n *\n * @param tree The HAST root (or node) to render.\n * @param components Optional additional component overrides. These are\n * merged with (and override) the built-in defaults.\n * @returns A Preact JSX element ready for `render()`.\n */\nexport function htmlToJsx(tree: Node, components?: Partial<Components>) {\n return toJsxRuntime(tree as Root, {\n Fragment,\n jsx: jsx as Jsx,\n jsxs: jsxs as Jsx,\n elementAttributeNameCase: \"html\",\n components: { ...builtinComponents, ...components },\n });\n}\n","export default {\n pages: {\n tagContent: {\n tag: \"Tag\",\n tagIndex: \"Tag Index\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 item with this tag.\" : `${count} items with this tag.`,\n showingFirst: ({ count }: { count: number }) => `Showing first ${count} tags.`,\n totalTags: ({ count }: { count: number }) => `Found ${count} total tags.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"الوسم\",\n tagIndex: \"مؤشر الوسم\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"يوجد عنصر واحد فقط تحت هذا الوسم\" : `يوجد ${count} عناصر تحت هذا الوسم.`,\n showingFirst: ({ count }: { count: number }) => `إظهار أول ${count} أوسمة.`,\n totalTags: ({ count }: { count: number }) => `يوجد ${count} أوسمة.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Etiqueta\",\n tagIndex: \"índex d'Etiquetes\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 article amb aquesta etiqueta.\" : `${count} article amb aquesta etiqueta.`,\n showingFirst: ({ count }: { count: number }) => `Mostrant les primeres ${count} etiquetes.`,\n totalTags: ({ count }: { count: number }) => `S'han trobat ${count} etiquetes en total.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Tag\",\n tagIndex: \"Rejstřík tagů\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 položka s tímto tagem.\" : `${count} položek s tímto tagem.`,\n showingFirst: ({ count }: { count: number }) => `Zobrazují se první ${count} tagy.`,\n totalTags: ({ count }: { count: number }) => `Nalezeno celkem ${count} tagů.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Tag\",\n tagIndex: \"Tag-Übersicht\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 Datei mit diesem Tag.\" : `${count} Dateien mit diesem Tag.`,\n showingFirst: ({ count }: { count: number }) => `Die ersten ${count} Tags werden angezeigt.`,\n totalTags: ({ count }: { count: number }) => `${count} Tags insgesamt.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Tag\",\n tagIndex: \"Tag Index\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 item with this tag.\" : `${count} items with this tag.`,\n showingFirst: ({ count }: { count: number }) => `Showing first ${count} tags.`,\n totalTags: ({ count }: { count: number }) => `Found ${count} total tags.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Etiqueta\",\n tagIndex: \"Índice de Etiquetas\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 artículo con esta etiqueta.\" : `${count} artículos con esta etiqueta.`,\n showingFirst: ({ count }: { count: number }) => `Mostrando las primeras ${count} etiquetas.`,\n totalTags: ({ count }: { count: number }) => `Se han encontrado ${count} etiquetas en total.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"برچسب\",\n tagIndex: \"فهرست برچسب‌ها\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"یک مطلب با این برچسب\" : `${count} مطلب با این برچسب.`,\n showingFirst: ({ count }: { count: number }) => `در حال نمایش ${count} برچسب.`,\n totalTags: ({ count }: { count: number }) => `${count} برچسب یافت شد.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Tunniste\",\n tagIndex: \"Tunnisteluettelo\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 kohde tällä tunnisteella.\" : `${count} kohdetta tällä tunnisteella.`,\n showingFirst: ({ count }: { count: number }) => `Näytetään ensimmäiset ${count} tunnistetta.`,\n totalTags: ({ count }: { count: number }) => `Löytyi yhteensä ${count} tunnistetta.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Étiquette\",\n tagIndex: \"Index des étiquettes\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 élément avec cette étiquette.\" : `${count} éléments avec cette étiquette.`,\n showingFirst: ({ count }: { count: number }) =>\n `Affichage des premières ${count} étiquettes.`,\n totalTags: ({ count }: { count: number }) => `Trouvé ${count} étiquettes au total.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"תגית\",\n tagIndex: \"מפתח התגיות\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"פריט אחד עם תגית זו.\" : `${count} פריטים עם תגית זו.`,\n showingFirst: ({ count }: { count: number }) => `מראה את ה-${count} תגיות הראשונות.`,\n totalTags: ({ count }: { count: number }) => `${count} תגיות נמצאו סך הכל.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Címke\",\n tagIndex: \"Címke index\",\n itemsUnderTag: ({ count }: { count: number }) => `${count} elem található ezzel a címkével.`,\n showingFirst: ({ count }: { count: number }) => `Első ${count} címke megjelenítve.`,\n totalTags: ({ count }: { count: number }) => `Összesen ${count} címke található.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Tag\",\n tagIndex: \"Indeks Tag\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 item dengan tag ini.\" : `${count} item dengan tag ini.`,\n showingFirst: ({ count }: { count: number }) => `Menampilkan ${count} tag pertama.`,\n totalTags: ({ count }: { count: number }) => `Ditemukan total ${count} tag.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Etichetta\",\n tagIndex: \"Indice etichette\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 oggetto con questa etichetta.\" : `${count} oggetti con questa etichetta.`,\n showingFirst: ({ count }: { count: number }) =>\n count === 1 ? \"Prima etichetta.\" : `Prime ${count} etichette.`,\n totalTags: ({ count }: { count: number }) =>\n count === 1 ? \"Trovata 1 etichetta in totale.\" : `Trovate ${count} etichette totali.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"タグ\",\n tagIndex: \"タグ一覧\",\n itemsUnderTag: ({ count }: { count: number }) => `${count}件のページ`,\n showingFirst: ({ count }: { count: number }) => `のうち最初の${count}件を表示しています`,\n totalTags: ({ count }: { count: number }) => `全${count}個のタグを表示中`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Тег\",\n tagIndex: \"Тегтер индексі\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"Бұл тегпен 1 элемент.\" : `Бұл тегпен ${count} элемент.`,\n showingFirst: ({ count }: { count: number }) => `Алғашқы ${count} тег көрсетілуде.`,\n totalTags: ({ count }: { count: number }) => `Барлығы ${count} тег табылды.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"태그\",\n tagIndex: \"태그 목록\",\n itemsUnderTag: ({ count }: { count: number }) => `${count}건의 항목`,\n showingFirst: ({ count }: { count: number }) => `처음 ${count}개의 태그`,\n totalTags: ({ count }: { count: number }) => `총 ${count}개의 태그를 찾았습니다.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Žyma\",\n tagIndex: \"Žymų indeksas\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1\n ? \"1 elementas su šia žyma.\"\n : count < 10\n ? `${count} elementai su šia žyma.`\n : `${count} elementų su šia žyma.`,\n showingFirst: ({ count }: { count: number }) =>\n count < 10 ? `Rodomos pirmosios ${count} žymos.` : `Rodomos pirmosios ${count} žymų.`,\n totalTags: ({ count }: { count: number }) =>\n count === 1\n ? \"Rasta iš viso 1 žyma.\"\n : count < 10\n ? `Rasta iš viso ${count} žymos.`\n : `Rasta iš viso ${count} žymų.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Tagg\",\n tagIndex: \"Tagg Indeks\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 gjenstand med denne taggen.\" : `${count} gjenstander med denne taggen.`,\n showingFirst: ({ count }: { count: number }) => `Viser første ${count} tagger.`,\n totalTags: ({ count }: { count: number }) => `Fant totalt ${count} tagger.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Label\",\n tagIndex: \"Label-index\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 item met dit label.\" : `${count} items met dit label.`,\n showingFirst: ({ count }: { count: number }) =>\n count === 1 ? \"Eerste label tonen.\" : `Eerste ${count} labels tonen.`,\n totalTags: ({ count }: { count: number }) => `${count} labels gevonden.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Znacznik\",\n tagIndex: \"Spis znaczników\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"Oznaczony 1 element.\" : `Elementów z tym znacznikiem: ${count}.`,\n showingFirst: ({ count }: { count: number }) => `Pokazuje ${count} pierwszych znaczników.`,\n totalTags: ({ count }: { count: number }) => `Znalezionych wszystkich znaczników: ${count}.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Tag\",\n tagIndex: \"Sumário de Tags\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 item com esta tag.\" : `${count} items com esta tag.`,\n showingFirst: ({ count }: { count: number }) => `Mostrando as ${count} primeiras tags.`,\n totalTags: ({ count }: { count: number }) => `Encontradas ${count} tags.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Etichetă\",\n tagIndex: \"Indexul etichetelor\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 articol cu această etichetă.\" : `${count} articole cu această etichetă.`,\n showingFirst: ({ count }: { count: number }) => `Se afișează primele ${count} etichete.`,\n totalTags: ({ count }: { count: number }) => `Au fost găsite ${count} etichete în total.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Тег\",\n tagIndex: \"Индекс тегов\",\n itemsUnderTag: ({ count }: { count: number }) =>\n `с этим тегом ${count} элемент${getForm(count, \"\", \"а\", \"ов\")}`,\n showingFirst: ({ count }: { count: number }) =>\n `Показыва${getForm(count, \"ется\", \"ются\", \"ются\")} ${count} тег${getForm(count, \"\", \"а\", \"ов\")}`,\n totalTags: ({ count }: { count: number }) =>\n `Всего ${count} тег${getForm(count, \"\", \"а\", \"ов\")}`,\n },\n },\n components: {},\n};\n\nfunction getForm(number: number, form1: string, form2: string, form5: string): string {\n const remainder100 = number % 100;\n const remainder10 = remainder100 % 10;\n\n if (remainder100 >= 10 && remainder100 <= 20) return form5;\n if (remainder10 > 1 && remainder10 < 5) return form2;\n if (remainder10 == 1) return form1;\n return form5;\n}\n","export default {\n pages: {\n tagContent: {\n tag: \"แท็ก\",\n tagIndex: \"แท็กทั้งหมด\",\n itemsUnderTag: ({ count }: { count: number }) => `มี ${count} รายการในแท็กนี้`,\n showingFirst: ({ count }: { count: number }) => `แสดง ${count} แท็กแรก`,\n totalTags: ({ count }: { count: number }) => `มีทั้งหมด ${count} แท็ก`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Etiket\",\n tagIndex: \"Etiket Sırası\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"Bu etikete sahip 1 öğe.\" : `Bu etiket altındaki ${count} öğe.`,\n showingFirst: ({ count }: { count: number }) => `İlk ${count} etiket gösteriliyor.`,\n totalTags: ({ count }: { count: number }) => `Toplam ${count} adet etiket bulundu.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Мітка\",\n tagIndex: \"Індекс мітки\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 елемент з цією міткою.\" : `Елементів з цією міткою: ${count}.`,\n showingFirst: ({ count }: { count: number }) => `Показ перших ${count} міток.`,\n totalTags: ({ count }: { count: number }) => `Всього знайдено міток: ${count}.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Thẻ\",\n tagIndex: \"Danh sách thẻ\",\n itemsUnderTag: ({ count }: { count: number }) => `Có ${count} trang gắn thẻ này.`,\n showingFirst: ({ count }: { count: number }) => `Đang hiển thị ${count} trang đầu tiên.`,\n totalTags: ({ count }: { count: number }) => `Có tổng cộng ${count} thẻ.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"标签\",\n tagIndex: \"标签索引\",\n itemsUnderTag: ({ count }: { count: number }) => `此标签下有${count}条笔记。`,\n showingFirst: ({ count }: { count: number }) => `显示前${count}个标签。`,\n totalTags: ({ count }: { count: number }) => `总共有${count}个标签。`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"標籤\",\n tagIndex: \"標籤索引\",\n itemsUnderTag: ({ count }: { count: number }) => `此標籤下有 ${count} 條筆記。`,\n showingFirst: ({ count }: { count: number }) => `顯示前 ${count} 個標籤。`,\n totalTags: ({ count }: { count: number }) => `總共有 ${count} 個標籤。`,\n },\n },\n components: {},\n};\n","import enUS from \"./locales/en-US\";\nimport arSA from \"./locales/ar-SA\";\nimport caES from \"./locales/ca-ES\";\nimport csCZ from \"./locales/cs-CZ\";\nimport deDE from \"./locales/de-DE\";\nimport enGB from \"./locales/en-GB\";\nimport esES from \"./locales/es-ES\";\nimport faIR from \"./locales/fa-IR\";\nimport fiFI from \"./locales/fi-FI\";\nimport frFR from \"./locales/fr-FR\";\nimport heIL from \"./locales/he-IL\";\nimport huHU from \"./locales/hu-HU\";\nimport idID from \"./locales/id-ID\";\nimport itIT from \"./locales/it-IT\";\nimport jaJP from \"./locales/ja-JP\";\nimport kkKZ from \"./locales/kk-KZ\";\nimport koKR from \"./locales/ko-KR\";\nimport ltLT from \"./locales/lt-LT\";\nimport nbNO from \"./locales/nb-NO\";\nimport nlNL from \"./locales/nl-NL\";\nimport plPL from \"./locales/pl-PL\";\nimport ptBR from \"./locales/pt-BR\";\nimport roRO from \"./locales/ro-RO\";\nimport ruRU from \"./locales/ru-RU\";\nimport thTH from \"./locales/th-TH\";\nimport trTR from \"./locales/tr-TR\";\nimport ukUA from \"./locales/uk-UA\";\nimport viVN from \"./locales/vi-VN\";\nimport zhCN from \"./locales/zh-CN\";\nimport zhTW from \"./locales/zh-TW\";\n\nconst locales: Record<string, typeof enUS> = {\n \"en-US\": enUS,\n \"ar-SA\": arSA,\n \"ca-ES\": caES,\n \"cs-CZ\": csCZ,\n \"de-DE\": deDE,\n \"en-GB\": enGB,\n \"es-ES\": esES,\n \"fa-IR\": faIR,\n \"fi-FI\": fiFI,\n \"fr-FR\": frFR,\n \"he-IL\": heIL,\n \"hu-HU\": huHU,\n \"id-ID\": idID,\n \"it-IT\": itIT,\n \"ja-JP\": jaJP,\n \"kk-KZ\": kkKZ,\n \"ko-KR\": koKR,\n \"lt-LT\": ltLT,\n \"nb-NO\": nbNO,\n \"nl-NL\": nlNL,\n \"pl-PL\": plPL,\n \"pt-BR\": ptBR,\n \"ro-RO\": roRO,\n \"ru-RU\": ruRU,\n \"th-TH\": thTH,\n \"tr-TR\": trTR,\n \"uk-UA\": ukUA,\n \"vi-VN\": viVN,\n \"zh-CN\": zhCN,\n \"zh-TW\": zhTW,\n};\n\nexport function i18n(locale: string) {\n return locales[locale] || enUS;\n}\n","import { joinSegments } from \"./path\";\n\n/** Whether `tag` has nested child tags (e.g. `kubernetes` for `kubernetes/k3s`). */\nexport function hasChildTags(tag: string, allTags: Iterable<string>): boolean {\n const prefix = `${tag}/`;\n for (const t of allTags) {\n if (t.startsWith(prefix)) return true;\n }\n return false;\n}\n\n/**\n * Slug of a tag's listing page. Tags with child tags are emitted as\n * `tags/<tag>/index` so the page lives inside the `tags/<tag>/` directory that\n * holds its children; a sibling `tags/<tag>.html` is unreachable on static hosts\n * that resolve the directory first (jackyzha0/quartz#2556). Leaf tags keep\n * `tags/<tag>`.\n */\nexport function tagPageSlug(tag: string, allTags: Iterable<string>): string {\n if (tag === \"index\") return \"tags/index\";\n return hasChildTags(tag, allTags)\n ? joinSegments(\"tags\", tag, \"index\")\n : joinSegments(\"tags\", tag);\n}\n","ul.section-ul {\n list-style: none;\n margin-top: 2em;\n padding-left: 0;\n}\n\nli.section-li {\n margin-bottom: 1em;\n}\nli.section-li > .section {\n display: grid;\n grid-template-columns: fit-content(8em) 3fr 1fr;\n}\n@media all and (max-width: 600px) {\n li.section-li > .section > .tags {\n display: none;\n }\n}\nli.section-li > .section > .desc > h3 > a {\n background-color: transparent;\n}\nli.section-li > .section .meta {\n margin: 0 1em 0 0;\n opacity: 0.6;\n}\n\n.popover .section {\n grid-template-columns: fit-content(8em) 1fr !important;\n}\n.popover .section > .tags {\n display: none;\n}","import type {\n QuartzComponent,\n QuartzComponentConstructor,\n QuartzComponentProps,\n QuartzPluginData,\n SortFn,\n} from \"@quartz-community/types\";\nimport { PageList } from \"./PageList\";\nimport { htmlToJsx } from \"@quartz-community/utils/jsx\";\nimport type { ComponentChildren } from \"preact\";\nimport type { Root } from \"hast\";\nimport { i18n } from \"../i18n\";\nimport { tagPageSlug } from \"../util/tags\";\nimport { getAllSegmentPrefixes, resolveRelative, simplifySlug } from \"../util/path\";\nimport type { FullSlug } from \"../util/path\";\nimport style from \"./styles/listPage.scss\";\n\ninterface TagContentOptions {\n sort?: SortFn;\n numPages: number;\n}\n\nconst defaultOptions: TagContentOptions = {\n numPages: 10,\n};\n\nfunction concatenateResources(\n ...resources: (string | string[] | undefined)[]\n): string | string[] | undefined {\n const result = resources.filter((r): r is string | string[] => r !== undefined).flat();\n return result.length === 0 ? undefined : result;\n}\n\ntype PageFileData = QuartzPluginData & Record<string, unknown>;\n\nfunction isListed(file: PageFileData): boolean {\n return file.unlisted !== true;\n}\n\nexport default ((opts?: Partial<TagContentOptions>) => {\n const options: TagContentOptions = { ...defaultOptions, ...opts };\n\n const TagContent: QuartzComponent = (props: QuartzComponentProps) => {\n const { tree, fileData, allFiles, cfg } = props;\n const fd = fileData as PageFileData;\n const slug = fd.slug;\n const locale = (cfg as { locale?: string } | undefined)?.locale ?? \"en-US\";\n\n if (!(slug?.startsWith(\"tags/\") || slug === \"tags\")) {\n throw new Error(`Component \"TagContent\" tried to render a non-tag page: ${slug}`);\n }\n\n // `tags/<tag>/index` (tags with child tags) → `<tag>`; `tags/index` → \"/\"\n let tag: string = simplifySlug(slug.slice(\"tags/\".length) as FullSlug);\n if (tag !== \"/\" && tag.endsWith(\"/\")) tag = tag.slice(0, -1);\n const allPagesWithTag = (t: string) =>\n (allFiles as PageFileData[])\n .filter(isListed)\n .filter((file) =>\n (file.frontmatter?.tags ?? []).flatMap(getAllSegmentPrefixes).includes(t),\n );\n\n const hastRoot = tree as Root;\n const content = hastRoot.children.length === 0 ? fd.description : htmlToJsx(hastRoot);\n\n const cssClasses = fd.frontmatter?.cssclasses ?? [];\n const classes = cssClasses.join(\" \");\n\n if (tag === \"/\") {\n const tags = [\n ...new Set(\n (allFiles as PageFileData[])\n .filter(isListed)\n .flatMap((data) => data.frontmatter?.tags ?? [])\n .flatMap(getAllSegmentPrefixes),\n ),\n ].sort((a, b) => a.localeCompare(b));\n\n const tagItemMap: Map<string, PageFileData[]> = new Map();\n for (const t of tags) {\n tagItemMap.set(t, allPagesWithTag(t));\n }\n\n return (\n <div class=\"popover-hint\">\n <article class={classes}>\n <div class=\"markdown-preview-view markdown-rendered\">\n <p>{content}</p>\n </div>\n </article>\n <p>{i18n(locale).pages.tagContent.totalTags({ count: tags.length })}</p>\n <div>\n {tags.map((t) => {\n const pages = tagItemMap.get(t)!;\n const listProps = {\n ...props,\n allFiles: pages,\n };\n const pageListContent = PageList({\n ...listProps,\n limit: options.numPages,\n sort: options?.sort,\n }) as unknown as ComponentChildren;\n\n const contentPage = (allFiles as PageFileData[]).find(\n (file) => file.slug === `tags/${t}` || file.slug === `tags/${t}/index`,\n );\n\n // Virtual pages have htmlAst pre-rendered by the dispatcher (contains the full\n // PageList), so only use htmlAst from real user-authored tag pages (have filePath).\n const root = contentPage?.filePath ? contentPage?.htmlAst : undefined;\n const tagDesc =\n !root || root.children.length === 0 ? contentPage?.description : htmlToJsx(root);\n\n // A hand-written tag page is linked where it is: at `tags/<tag>` it replaces the\n // virtual `tags/<tag>/index`, which is then never emitted (the docs' `tags/plugin`).\n const tagListingPage = (contentPage?.slug ?? tagPageSlug(t, tags)) as FullSlug;\n const href = resolveRelative(slug as FullSlug, tagListingPage);\n\n return (\n <div>\n <h2>\n <a class=\"internal tag-link\" href={href}>\n {t}\n </a>\n </h2>\n {tagDesc && <p>{tagDesc}</p>}\n <div class=\"page-listing\">\n <p>\n {i18n(locale).pages.tagContent.itemsUnderTag({ count: pages.length })}\n {pages.length > options.numPages && (\n <>\n {\" \"}\n <span>\n {i18n(locale).pages.tagContent.showingFirst({\n count: options.numPages,\n })}\n </span>\n </>\n )}\n </p>\n {pageListContent}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n } else {\n const pages = allPagesWithTag(tag);\n const listProps = {\n ...props,\n allFiles: pages,\n };\n const pageListContent = PageList({\n ...listProps,\n sort: options?.sort,\n }) as unknown as ComponentChildren;\n\n return (\n <div class=\"popover-hint\">\n <article class={classes}>\n <div class=\"markdown-preview-view markdown-rendered\">{content}</div>\n </article>\n <div class=\"page-listing\">\n <p>{i18n(locale).pages.tagContent.itemsUnderTag({ count: pages.length })}</p>\n <div>{pageListContent}</div>\n </div>\n </div>\n );\n }\n };\n\n TagContent.css = concatenateResources(style, PageList.css);\n return TagContent;\n}) satisfies QuartzComponentConstructor;\n"]}
1
+ {"version":3,"sources":["../../node_modules/inline-style-parser/index.js","../../node_modules/style-to-object/src/index.ts","../../node_modules/style-to-js/src/utilities.ts","../../node_modules/style-to-js/src/index.ts","../../node_modules/@quartz-community/utils/src/sort.ts","../../node_modules/@quartz-community/utils/src/path.ts","../../src/components/PageList.tsx","../../node_modules/comma-separated-tokens/index.js","../../node_modules/devlop/lib/default.js","../../node_modules/estree-util-is-identifier-name/lib/index.js","../../node_modules/hast-util-whitespace/lib/index.js","../../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/hast-to-react.js","../../node_modules/property-information/lib/find.js","../../node_modules/property-information/index.js","../../node_modules/space-separated-tokens/index.js","../../node_modules/hast-util-to-jsx-runtime/lib/index.js","../../node_modules/unist-util-position/lib/index.js","../../node_modules/unist-util-stringify-position/lib/index.js","../../node_modules/vfile-message/lib/index.js","../../node_modules/@quartz-community/utils/src/jsx.tsx","../../src/i18n/locales/en-US.ts","../../src/i18n/locales/ar-SA.ts","../../src/i18n/locales/ca-ES.ts","../../src/i18n/locales/cs-CZ.ts","../../src/i18n/locales/de-DE.ts","../../src/i18n/locales/en-GB.ts","../../src/i18n/locales/es-ES.ts","../../src/i18n/locales/fa-IR.ts","../../src/i18n/locales/fi-FI.ts","../../src/i18n/locales/fr-FR.ts","../../src/i18n/locales/he-IL.ts","../../src/i18n/locales/hu-HU.ts","../../src/i18n/locales/id-ID.ts","../../src/i18n/locales/it-IT.ts","../../src/i18n/locales/ja-JP.ts","../../src/i18n/locales/kk-KZ.ts","../../src/i18n/locales/ko-KR.ts","../../src/i18n/locales/lt-LT.ts","../../src/i18n/locales/nb-NO.ts","../../src/i18n/locales/nl-NL.ts","../../src/i18n/locales/pl-PL.ts","../../src/i18n/locales/pt-BR.ts","../../src/i18n/locales/ro-RO.ts","../../src/i18n/locales/ru-RU.ts","../../src/i18n/locales/th-TH.ts","../../src/i18n/locales/tr-TR.ts","../../src/i18n/locales/uk-UA.ts","../../src/i18n/locales/vi-VN.ts","../../src/i18n/locales/zh-CN.ts","../../src/i18n/locales/zh-TW.ts","../../src/i18n/index.ts","../../src/util/tags.ts","../../src/components/styles/listPage.scss","../../src/components/TagContent.tsx"],"names":["index","position","start","whitespace","re","slug","name","html","svg","stringify","point","own","cap","create","jsx","jsxs","_","styleToJs","number","root","Fragment"],"mappings":"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","file":"index.js","sourcesContent":["// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nexport default function (style, options) {\n if (typeof style !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n\n if (!style) return [];\n\n options = options || {};\n\n /**\n * Positional.\n */\n var lineno = 1;\n var column = 1;\n\n /**\n * Update lineno and column based on `str`.\n *\n * @param {String} str\n */\n function updatePosition(str) {\n var lines = str.match(NEWLINE_REGEX);\n if (lines) lineno += lines.length;\n var i = str.lastIndexOf(NEWLINE);\n column = ~i ? str.length - i : column + str.length;\n }\n\n /**\n * Mark position and patch `node.position`.\n *\n * @return {Function}\n */\n function position() {\n var start = { line: lineno, column: column };\n return function (node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n\n /**\n * Store position information for a node.\n *\n * @constructor\n * @property {Object} start\n * @property {Object} end\n * @property {undefined|String} source\n */\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n\n /**\n * Non-enumerable source string.\n */\n Position.prototype.content = style;\n\n var errorsList = [];\n\n /**\n * Error `msg`.\n *\n * @param {String} msg\n * @throws {Error}\n */\n function error(msg) {\n var err = new Error(\n options.source + ':' + lineno + ':' + column + ': ' + msg\n );\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = style;\n\n if (options.silent) {\n errorsList.push(err);\n } else {\n throw err;\n }\n }\n\n /**\n * Match `re` and return captures.\n *\n * @param {RegExp} re\n * @return {undefined|Array}\n */\n function match(re) {\n var m = re.exec(style);\n if (!m) return;\n var str = m[0];\n updatePosition(str);\n style = style.slice(str.length);\n return m;\n }\n\n /**\n * Parse whitespace.\n */\n function whitespace() {\n match(WHITESPACE_REGEX);\n }\n\n /**\n * Parse comments.\n *\n * @param {Object[]} [rules]\n * @return {Object[]}\n */\n function comments(rules) {\n var c;\n rules = rules || [];\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n }\n return rules;\n }\n\n /**\n * Parse comment.\n *\n * @return {Object}\n * @throws {Error}\n */\n function comment() {\n var pos = position();\n if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n var i = 2;\n while (\n EMPTY_STRING != style.charAt(i) &&\n (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n ) {\n ++i;\n }\n i += 2;\n\n if (EMPTY_STRING === style.charAt(i - 1)) {\n return error('End of comment missing');\n }\n\n var str = style.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n style = style.slice(i);\n column += 2;\n\n return pos({\n type: TYPE_COMMENT,\n comment: str\n });\n }\n\n /**\n * Parse declaration.\n *\n * @return {Object}\n * @throws {Error}\n */\n function declaration() {\n var pos = position();\n\n // prop\n var prop = match(PROPERTY_REGEX);\n if (!prop) return;\n comment();\n\n // :\n if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n // val\n var val = match(VALUE_REGEX);\n\n var ret = pos({\n type: TYPE_DECLARATION,\n property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n value: val\n ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n : EMPTY_STRING\n });\n\n // ;\n match(SEMICOLON_REGEX);\n\n return ret;\n }\n\n /**\n * Parse declarations.\n *\n * @return {Object[]}\n */\n function declarations() {\n var decls = [];\n\n comments(decls);\n\n // declarations\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n }\n\n return decls;\n }\n\n whitespace();\n return declarations();\n}\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n","import type { Declaration } from 'inline-style-parser';\nimport parse from 'inline-style-parser';\n\nexport { Declaration };\n\nexport interface StyleObject {\n [name: string]: string;\n}\n\ntype Iterator = (\n property: string,\n value: string,\n declaration: Declaration,\n) => void;\n\n/**\n * Parses inline style to object.\n *\n * @param style - Inline style.\n * @param iterator - Iterator.\n * @returns - Style object or null.\n *\n * @example Parsing inline style to object:\n *\n * ```js\n * import parse from 'style-to-object';\n * parse('line-height: 42;'); // { 'line-height': '42' }\n * ```\n */\nexport default function StyleToObject(\n style: string,\n iterator?: Iterator,\n): StyleObject | null {\n let styleObject: StyleObject | null = null;\n\n if (!style || typeof style !== 'string') {\n return styleObject;\n }\n\n const declarations = parse(style);\n const hasIterator = typeof iterator === 'function';\n\n declarations.forEach((declaration) => {\n if (declaration.type !== 'declaration') {\n return;\n }\n\n const { property, value } = declaration;\n\n if (hasIterator) {\n iterator(property, value, declaration);\n } else if (value) {\n styleObject = styleObject || {};\n styleObject[property] = value;\n }\n });\n\n return styleObject;\n}\n","const CUSTOM_PROPERTY_REGEX = /^--[a-zA-Z0-9_-]+$/;\nconst HYPHEN_REGEX = /-([a-z])/g;\nconst NO_HYPHEN_REGEX = /^[^-]+$/;\nconst VENDOR_PREFIX_REGEX = /^-(webkit|moz|ms|o|khtml)-/;\nconst MS_VENDOR_PREFIX_REGEX = /^-(ms)-/;\n\n/**\n * Checks whether to skip camelCase.\n */\nconst skipCamelCase = (property: string) =>\n !property ||\n NO_HYPHEN_REGEX.test(property) ||\n CUSTOM_PROPERTY_REGEX.test(property);\n\n/**\n * Replacer that capitalizes first character.\n */\nconst capitalize = (match: string, character: string) =>\n character.toUpperCase();\n\n/**\n * Replacer that removes beginning hyphen of vendor prefix property.\n */\nconst trimHyphen = (match: string, prefix: string) => `${prefix}-`;\n\n/**\n * CamelCase options.\n */\nexport interface CamelCaseOptions {\n reactCompat?: boolean;\n}\n\n/**\n * CamelCases a CSS property.\n */\nexport const camelCase = (property: string, options: CamelCaseOptions = {}) => {\n if (skipCamelCase(property)) {\n return property;\n }\n\n property = property.toLowerCase();\n\n if (options.reactCompat) {\n // `-ms` vendor prefix should not be capitalized\n property = property.replace(MS_VENDOR_PREFIX_REGEX, trimHyphen);\n } else {\n // for non-React, remove first hyphen so vendor prefix is not capitalized\n property = property.replace(VENDOR_PREFIX_REGEX, trimHyphen);\n }\n\n return property.replace(HYPHEN_REGEX, capitalize);\n};\n","import StyleToObject from 'style-to-object';\n\nimport { camelCase, CamelCaseOptions } from './utilities';\n\ntype StyleObject = Record<string, string>;\n\ninterface StyleToJSOptions extends CamelCaseOptions {}\n\n/**\n * Parses CSS inline style to JavaScript object (camelCased).\n */\nfunction StyleToJS(style: string, options?: StyleToJSOptions): StyleObject {\n const output: StyleObject = {};\n\n if (!style || typeof style !== 'string') {\n return output;\n }\n\n StyleToObject(style, (property, value) => {\n // skip CSS comment\n if (property && value) {\n output[camelCase(property, options)] = value;\n }\n });\n\n return output;\n}\n\nStyleToJS.default = StyleToJS;\n\nexport = StyleToJS;\n","import type { QuartzPluginData, ValidDateType, SortFn } from \"@quartz-community/types\";\n\nexport function getDate(data: QuartzPluginData): Date | undefined {\n const defaultDateType = data.defaultDateType as ValidDateType | undefined;\n if (!defaultDateType) {\n return undefined;\n }\n const dates = data.dates as Record<ValidDateType, Date> | undefined;\n return dates?.[defaultDateType];\n}\n\nexport function byDateAndAlphabetical(): SortFn {\n return (f1, f2) => {\n const f1Date = getDate(f1);\n const f2Date = getDate(f2);\n if (f1Date && f2Date) {\n return f2Date.getTime() - f1Date.getTime();\n } else if (f1Date && !f2Date) {\n return -1;\n } else if (!f1Date && f2Date) {\n return 1;\n }\n\n const f1Title = (\n ((f1.frontmatter as Record<string, unknown>)?.title as string) ?? \"\"\n ).toLowerCase();\n const f2Title = (\n ((f2.frontmatter as Record<string, unknown>)?.title as string) ?? \"\"\n ).toLowerCase();\n return f1Title.localeCompare(f2Title);\n };\n}\n","import GithubSlugger, { slug as githubSlug } from \"github-slugger\";\nimport type { Element as HastElement } from \"hast\";\nimport type { FilePath, FullSlug } from \"@quartz-community/types\";\n\nexport type { FilePath, FullSlug };\n\n/** No '/index' ending, no file extension, can have trailing slash for folders. */\nexport type SimpleSlug = string & { _brand: \"SimpleSlug\" };\n\n/** Starts with './' or '../', used for navigation. */\nexport type RelativeURL = string & { _brand: \"RelativeURL\" };\n\nexport interface TransformOptions {\n strategy: \"absolute\" | \"relative\" | \"shortest\";\n allSlugs: FullSlug[];\n}\n\nexport function isFilePath(s: string): s is FilePath {\n const validStart = !s.startsWith(\".\");\n return validStart && _hasFileExtension(s);\n}\n\nexport function isFullSlug(s: string): s is FullSlug {\n const validStart = !(s.startsWith(\".\") || s.startsWith(\"/\"));\n const validEnding = !s.endsWith(\"/\");\n return validStart && validEnding && !_containsForbiddenCharacters(s);\n}\n\nexport function isSimpleSlug(s: string): s is SimpleSlug {\n const validStart = !(s.startsWith(\".\") || (s.length > 1 && s.startsWith(\"/\")));\n const validEnding = !endsWith(s, \"index\");\n return validStart && !_containsForbiddenCharacters(s) && validEnding && !_hasFileExtension(s);\n}\n\nexport function isRelativeURL(s: string): s is RelativeURL {\n const validStart = /^\\.{1,2}/.test(s);\n const validEnding = !endsWith(s, \"index\");\n return validStart && validEnding && ![\".md\", \".html\"].includes(getFileExtension(s) ?? \"\");\n}\n\nexport function isAbsoluteURL(s: string): boolean {\n try {\n new URL(s);\n } catch {\n return false;\n }\n return true;\n}\n\nexport function simplifySlug(fp: FullSlug | string): SimpleSlug {\n const res = stripSlashes(trimSuffix(fp, \"index\"), true);\n return (res.length === 0 ? \"/\" : res) as SimpleSlug;\n}\n\nexport function getFullSlug(window: Window): FullSlug {\n const res = window.document.body.dataset.slug! as FullSlug;\n return res;\n}\n\nexport function getFullSlugFromUrl(): FullSlug {\n let rawSlug = decodeURI(window.location.pathname);\n if (rawSlug.endsWith(\"/\")) rawSlug = rawSlug.slice(0, -1);\n if (rawSlug.startsWith(\"/\")) rawSlug = rawSlug.slice(1);\n return rawSlug as FullSlug;\n}\n\nexport function slugifyFilePath(fp: FilePath, excludeExt?: boolean): FullSlug {\n fp = stripSlashes(fp) as FilePath;\n const ext = getFileExtension(fp);\n const withoutFileExt = fp.replace(new RegExp(ext + \"$\"), \"\");\n const finalExt = excludeExt || [\".md\", \".html\", undefined].includes(ext) ? \"\" : ext;\n\n let slug = _sluggify(withoutFileExt);\n\n if (endsWith(slug, \"_index\")) {\n slug = slug.replace(/_index$/, \"index\");\n }\n\n // Obsidian \"Folder Notes\" convention (insideFolder storage): a file named the\n // same as its parent folder is treated as the folder's landing page. Rewrite\n // `folder/folder` → `folder/index` so every downstream consumer (trie, link\n // resolver, simplifySlug, isFolderPath) sees the canonical Quartz slug shape\n // and Just Works. A top-level single-segment slug is NOT rewritten — that\n // represents Obsidian's `parentFolder` storage mode, which Quartz already\n // routes as a regular top-level page.\n const segments = slug.split(\"/\");\n if (segments.length >= 2 && segments[segments.length - 1] === segments[segments.length - 2]) {\n segments[segments.length - 1] = \"index\";\n slug = segments.join(\"/\");\n }\n\n return (slug + (finalExt ?? \"\")) as FullSlug;\n}\n\nexport function joinSegments(...args: string[]): string {\n if (args.length === 0) {\n return \"\";\n }\n\n let joined = args\n .filter((segment) => segment !== \"\" && segment !== \"/\")\n .map((segment) => stripSlashes(segment))\n .join(\"/\");\n\n const first = args[0];\n const last = args[args.length - 1];\n\n if (first?.startsWith(\"/\")) {\n joined = \"/\" + joined;\n }\n\n if (last?.endsWith(\"/\")) {\n joined = joined + \"/\";\n }\n\n return joined;\n}\n\nexport function resolvePath(to: string): string {\n if (to.startsWith(\"/\")) return to;\n return \"/\" + to;\n}\n\n/** Read the base path injected at build time via `data-basepath` on `<body>`.\n * Returns `\"\"` for root deployments, e.g. `\"/repository\"` for subdirectory. */\nexport function getBasePath(): string {\n if (typeof document === \"undefined\") return \"\";\n return document.body?.dataset?.basepath ?? \"\";\n}\n\n/** Resolve a slug to an absolute URL path, prepending the site's base path.\n * e.g. `resolveBasePath(\"features/Callouts\")` → `\"/repository/features/Callouts\"` */\nexport function resolveBasePath(to: string, basePath?: string): string {\n const base = basePath ?? getBasePath();\n const slug = to.startsWith(\"/\") ? to : \"/\" + to;\n return base + slug;\n}\n\nexport function endsWith(s: string, suffix: string): boolean {\n return s === suffix || s.endsWith(\"/\" + suffix);\n}\n\nexport function trimSuffix(s: string, suffix: string): string {\n if (endsWith(s, suffix)) {\n s = s.slice(0, -suffix.length);\n }\n return s;\n}\n\nexport function stripSlashes(s: string, onlyStripPrefix?: boolean): string {\n if (s.startsWith(\"/\")) {\n s = s.substring(1);\n }\n\n if (!onlyStripPrefix && s.endsWith(\"/\")) {\n s = s.slice(0, -1);\n }\n\n return s;\n}\n\nexport function getFileExtension(s: string): string | undefined {\n return s.match(/\\.[A-Za-z0-9]+$/)?.[0];\n}\n\nexport function isFolderPath(fplike: string): boolean {\n return (\n fplike.endsWith(\"/\") ||\n endsWith(fplike, \"index\") ||\n endsWith(fplike, \"index.md\") ||\n endsWith(fplike, \"index.html\")\n );\n}\n\nexport function getAllSegmentPrefixes(path: string): string[] {\n const segments = path.split(\"/\");\n const results: string[] = [];\n for (let i = 0; i < segments.length; i++) {\n results.push(segments.slice(0, i + 1).join(\"/\"));\n }\n return results;\n}\n\nexport function pathToRoot(slug: FullSlug): RelativeURL {\n let rootPath = slug\n .split(\"/\")\n .filter((x) => x !== \"\")\n .slice(0, -1)\n .map((_) => \"..\")\n .join(\"/\");\n\n if (rootPath.length === 0) {\n rootPath = \".\";\n }\n\n return rootPath as RelativeURL;\n}\n\nexport function resolveRelative(current: FullSlug, target: FullSlug | SimpleSlug): RelativeURL {\n const res = joinSegments(pathToRoot(current), simplifySlug(target as FullSlug)) as RelativeURL;\n return res;\n}\n\n/**\n * The slug of a heading's text: the `id` Quartz gives a heading, and the\n * anchor every link or table-of-contents entry to that heading must use.\n *\n * Same rule as GitHub and `rehype-slug` (`github-slugger`): lowercase,\n * punctuation removed, each space replaced by `-`. Non-Latin letters and\n * digits are kept, e.g. `\"监听 127.0.0.1(推荐)\"` → `\"监听-127001推荐\"`.\n *\n * Use {@link HeadingSlugger} when slugging every heading on a page, so that\n * repeated headings get unique ids (`foo`, `foo-1`, …).\n */\nexport function slugHeading(text: string): string {\n return githubSlug(text);\n}\n\n/**\n * Slugs the headings of one page in document order with {@link slugHeading},\n * numbering repeats the way GitHub and `rehype-slug` do (`foo`, `foo-1`,\n * `foo-2`). Create one per page, or call `reset()` between pages.\n */\nexport class HeadingSlugger {\n private readonly slugger = new GithubSlugger();\n\n /** Slug `text`, unique among the slugs this instance has returned. */\n slug(text: string): string {\n return this.slugger.slug(text);\n }\n\n reset(): void {\n this.slugger.reset();\n }\n}\n\n/**\n * The anchor Obsidian writes when it links to a heading with this text.\n *\n * Obsidian anchors cannot hold `:`, `|`, `^`, `#` or `\\`, so Obsidian replaces\n * each with a space and collapses the spaces: `\"Colon:unspaced\"` →\n * `\"Colon unspaced\"`. Slugging this with {@link slugHeading} gives the anchor\n * a link written in Obsidian resolves to; when it differs from the heading's\n * `id`, heading producers can add it as an alias id.\n */\nexport function obsidianHeadingAnchor(text: string): string {\n return text\n .replace(/[:|^#\\\\]/g, \" \")\n .replace(/\\s+/g, \" \")\n .trim();\n}\n\n/**\n * Point a same-page anchor link (`href` starting with `#`, as written) at an\n * `id` on the page. `ids` holds every `id` on the page.\n *\n * - An anchor that already names an id (as written or percent-decoded) is\n * returned unchanged.\n * - `#^name` (an Obsidian block reference) points at the id `name`.\n * - Otherwise, when the anchor is a heading's text, it points at the\n * heading's id: the anchor slugged with {@link slugHeading}, e.g.\n * `#监听 127.0.0.1(推荐)` → `#监听-127001推荐`.\n * - An anchor that names no id either way is returned unchanged, so a link to\n * an id added later (raw HTML, another plugin) keeps working.\n */\nexport function resolveAnchorHref(href: string, ids: ReadonlySet<string>): string {\n if (!href.startsWith(\"#\") || href.length === 1) return href;\n const raw = href.slice(1);\n let decoded = raw;\n try {\n decoded = decodeURIComponent(raw);\n } catch {\n // keep the anchor as written\n }\n if (ids.has(raw) || ids.has(decoded)) return href;\n const bare = decoded.startsWith(\"^\") ? decoded.slice(1) : decoded;\n if (ids.has(bare)) return \"#\" + bare;\n const slugged = slugHeading(bare);\n return ids.has(slugged) ? \"#\" + slugged : href;\n}\n\nexport function splitAnchor(link: string): [string, string] {\n const [fp, anchor] = link.split(\"#\", 2);\n if (fp!.endsWith(\".pdf\")) {\n return [fp!, anchor === undefined ? \"\" : `#${anchor}`];\n }\n if (anchor === undefined) {\n return [fp!, \"\"];\n }\n const bare = anchor.startsWith(\"^\") ? anchor.slice(1) : anchor;\n const slugged = \"#\" + slugHeading(bare);\n return [fp!, slugged];\n}\n\nexport function slugTag(tag: string): string {\n return tag\n .split(\"/\")\n .map((tagSegment) => _sluggify(tagSegment))\n .join(\"/\");\n}\n\nexport function transformInternalLink(link: string): RelativeURL {\n const [fplike, anchor] = splitAnchor(decodeURI(link));\n\n const segments = fplike.split(\"/\").filter((x) => x.length > 0);\n const prefix = segments.filter(_isRelativeSegment).join(\"/\");\n const fp = segments.filter((seg) => !_isRelativeSegment(seg) && seg !== \"\").join(\"/\");\n\n const slugged = slugifyFilePath(fp as FilePath);\n const simpleSlug = simplifySlug(slugged);\n const folderPath = isFolderPath(fplike) || isFolderPath(slugged);\n const joined = joinSegments(stripSlashes(prefix), stripSlashes(simpleSlug));\n const trail = folderPath ? \"/\" : \"\";\n const res = (_addRelativeToStart(joined) + trail + anchor) as RelativeURL;\n return res;\n}\n\nexport function transformLink(src: FullSlug, target: string, opts: TransformOptions): RelativeURL {\n const targetSlug = transformInternalLink(target);\n\n if (opts.strategy === \"relative\") {\n return _resolveRelativeFolderNote(src, target) ?? (targetSlug as RelativeURL);\n } else {\n // When src is a folder page (e.g. \"Compendium/Spells\" backed by index.md),\n // the browser serves it at \"/Compendium/Spells/\" with a trailing slash.\n // pathToRoot needs the \"/index\" suffix to compute the correct depth.\n const effectiveSrc =\n !endsWith(src, \"index\") && opts.allSlugs.includes(`${src}/index` as FullSlug)\n ? (`${src}/index` as FullSlug)\n : src;\n\n const folderTail = isFolderPath(targetSlug) ? \"/\" : \"\";\n const canonicalSlug = stripSlashes(targetSlug.slice(\".\".length));\n const [targetCanonical, targetAnchor] = splitAnchor(canonicalSlug);\n\n if (opts.strategy === \"shortest\") {\n const isMultiSegment = targetCanonical.includes(\"/\");\n const isFolderTarget = isFolderPath(targetSlug);\n let matchingFileNames = opts.allSlugs.filter((slug) => {\n if (isMultiSegment) {\n // Multi-segment partial path: match by suffix\n if (slug === targetCanonical || slug.endsWith(\"/\" + targetCanonical)) {\n return true;\n }\n // Folder targets have \"/index\" stripped — also match the \"/index\" variant\n if (isFolderTarget) {\n const withIndex = targetCanonical + \"/index\";\n return slug === withIndex || slug.endsWith(\"/\" + withIndex);\n }\n return false;\n }\n const parts = slug.split(\"/\");\n const fileName = parts.at(-1);\n return targetCanonical === fileName;\n });\n\n // Folder note Foo/Foo.md slugs to Foo/index, so its last segment never matches [[Foo]]\n // Retry by folder name, only when no real file claims it\n if (matchingFileNames.length === 0 && !isMultiSegment) {\n matchingFileNames = opts.allSlugs.filter((slug) => {\n const parts = slug.split(\"/\");\n return parts.at(-1) === \"index\" && parts.at(-2) === targetCanonical;\n });\n }\n\n if (matchingFileNames.length === 1) {\n const matchedSlug = matchingFileNames[0]!;\n return (resolveRelative(effectiveSrc, matchedSlug) + targetAnchor) as RelativeURL;\n }\n }\n\n return (joinSegments(pathToRoot(effectiveSrc), canonicalSlug) + folderTail) as RelativeURL;\n }\n}\n\n/**\n * A relative link can name a folder note (`topic/Topic.md`, slugged\n * `topic/index`) without spelling out its folder, e.g. `./Topic.md` written\n * inside `topic/`. `slugifyFilePath` only sees the segments the link spells\n * out, so apply the folder-note rule to the target as resolved against the\n * source's folder, and return the link with its file name replaced by\n * `index`. Returns `undefined` when the target is not such a folder note.\n * @internal\n */\nfunction _resolveRelativeFolderNote(src: FullSlug, target: string): RelativeURL | undefined {\n let decoded: string;\n try {\n decoded = decodeURI(target);\n } catch {\n return undefined;\n }\n const hashIdx = decoded.indexOf(\"#\");\n const fplike = hashIdx === -1 ? decoded : decoded.slice(0, hashIdx);\n const rest = hashIdx === -1 ? \"\" : decoded.slice(hashIdx);\n if (fplike === \"\" || fplike.endsWith(\"/\") || fplike.startsWith(\"/\")) return undefined;\n\n const ext = getFileExtension(fplike);\n if (![\".md\", \".html\", undefined].includes(ext)) return undefined;\n\n const segments = fplike.split(\"/\");\n const fileName = segments[segments.length - 1]!;\n const fileSlug = slugifyPath(ext ? fileName.slice(0, -ext.length) : fileName);\n if (fileSlug === \"index\") return undefined;\n\n // Resolve the link's folder against the source's folder (both as slugs)\n const resolved = src.split(\"/\").slice(0, -1);\n for (const seg of segments.slice(0, -1)) {\n if (seg === \"\" || seg === \".\") continue;\n if (seg === \"..\") {\n if (resolved.length === 0) return undefined;\n resolved.pop();\n } else {\n resolved.push(slugifyPath(seg));\n }\n }\n\n if (resolved.length === 0 || resolved[resolved.length - 1] !== fileSlug) return undefined;\n\n segments[segments.length - 1] = \"index\" + (ext ?? \"\");\n return transformInternalLink(encodeURI(segments.join(\"/\") + rest));\n}\n\n/**\n * Slugify a file path for use as an href.\n * Replaces whitespace→hyphens, &→-and-, %→-percent, removes ? and #, and\n * lowercases the result so that link matching is case-insensitive (matching\n * Obsidian's link-resolution semantics). Operates per segment so directory\n * separators are preserved.\n */\nexport function slugifyPath(s: string): string {\n return s\n .split(\"/\")\n .map((segment) =>\n segment\n .replace(/\\s/g, \"-\")\n .replace(/&/g, \"-and-\")\n .replace(/%/g, \"-percent\")\n .replace(/\\?/g, \"\")\n .replace(/#/g, \"\")\n .replace(/[<>:\"|*]/g, \"\")\n .toLowerCase(),\n )\n .join(\"/\")\n .replace(/\\/$/, \"\");\n}\n\n/**\n * Re-base the relative `href` and `src` attributes of a HAST element so that\n * links inside content originally resolved relative to `newBase` remain valid\n * when the element is embedded at a page with slug `curBase`.\n *\n * Used for transclusions and cross-slug HAST embedding (Quartz core's\n * `renderPage` transclude expansion, canvas-page's embedded file-nodes, and\n * any plugin that takes `vfile.data.htmlAst` from one page and renders it\n * inside another). Absolute URLs pass through unchanged.\n *\n * The element (and its children) are deep-cloned via `structuredClone`, so\n * the original HAST tree is never mutated.\n */\nexport function normalizeHastElement<T extends HastElement>(\n rawEl: T,\n curBase: FullSlug,\n newBase: FullSlug,\n): T {\n const el = structuredClone(rawEl);\n _rebaseHastElement(el, \"src\", curBase, newBase);\n _rebaseHastElement(el, \"href\", curBase, newBase);\n if (el.children) {\n el.children = el.children.map((child) =>\n child.type === \"element\"\n ? (normalizeHastElement(child as HastElement, curBase, newBase) as typeof child)\n : child,\n );\n }\n return el;\n}\n\n/** @internal */\nfunction _rebaseHastElement(\n el: HastElement,\n attr: \"href\" | \"src\",\n curBase: FullSlug,\n newBase: FullSlug,\n): void {\n const value = el.properties?.[attr];\n if (value === undefined || value === null) return;\n const href = String(value);\n if (!isRelativeURL(href)) return;\n el.properties![attr] = joinSegments(resolveRelative(curBase, newBase), \"..\", href);\n}\n\n/** @internal */\nfunction _sluggify(s: string): string {\n return slugifyPath(s);\n}\n\nfunction _containsForbiddenCharacters(s: string): boolean {\n return s.includes(\" \") || s.includes(\"#\") || s.includes(\"?\") || s.includes(\"&\");\n}\n\nfunction _hasFileExtension(s: string): boolean {\n return getFileExtension(s) !== undefined;\n}\n\nfunction _isRelativeSegment(s: string): boolean {\n return /^\\.{0,2}$/.test(s);\n}\n\nfunction _addRelativeToStart(s: string): string {\n if (s === \"\") {\n s = \".\";\n }\n\n if (!s.startsWith(\".\")) {\n s = joinSegments(\".\", s);\n }\n\n return s;\n}\n","import type { QuartzComponent, QuartzComponentProps, SortFn } from \"@quartz-community/types\";\nimport { getDate, byDateAndAlphabetical } from \"@quartz-community/utils/sort\";\nimport { resolveRelative, isFolderPath } from \"../util/path\";\nimport type { FullSlug } from \"../util/path\";\n\nexport type { SortFn } from \"@quartz-community/types\";\nexport { byDateAndAlphabetical };\n\nexport function byDateAndAlphabeticalFolderFirst(_cfg: unknown): SortFn {\n return (f1, f2) => {\n const f1IsFolder = isFolderPath(f1.slug ?? \"\");\n const f2IsFolder = isFolderPath(f2.slug ?? \"\");\n if (f1IsFolder && !f2IsFolder) return -1;\n if (!f1IsFolder && f2IsFolder) return 1;\n\n if (f1.dates && f2.dates) {\n return (getDate(f2)?.getTime() ?? 0) - (getDate(f1)?.getTime() ?? 0);\n } else if (f1.dates && !f2.dates) {\n return -1;\n } else if (!f1.dates && f2.dates) {\n return 1;\n }\n const f1Title = f1.frontmatter?.title?.toLowerCase() ?? \"\";\n const f2Title = f2.frontmatter?.title?.toLowerCase() ?? \"\";\n return f1Title.localeCompare(f2Title);\n };\n}\n\ntype DateComponentProps = {\n date: Date;\n locale: string;\n};\n\nfunction DateDisplay({ date, locale }: DateComponentProps) {\n return (\n <time dateTime={date.toISOString()}>\n {date.toLocaleDateString(locale, {\n year: \"numeric\",\n month: \"short\",\n day: \"2-digit\",\n })}\n </time>\n );\n}\n\ntype PageListProps = {\n limit?: number;\n sort?: SortFn;\n} & QuartzComponentProps;\n\nexport const PageList: QuartzComponent = ({\n cfg,\n fileData,\n allFiles,\n limit,\n sort,\n}: PageListProps) => {\n const sorter = sort ?? byDateAndAlphabeticalFolderFirst(cfg);\n let list = [...allFiles].sort(sorter);\n if (limit) {\n list = list.slice(0, limit);\n }\n\n const fileSlug = (fileData as { slug?: string } | undefined)?.slug as FullSlug | undefined;\n\n return (\n <ul class=\"section-ul\">\n {list.map((page) => {\n const title = page.frontmatter?.title;\n const tags = (page.frontmatter?.tags ?? []) as string[];\n\n return (\n <li class=\"section-li\">\n <div class=\"section\">\n <p class=\"meta\">\n {page.dates && getDate(page) && (\n <DateDisplay\n date={getDate(page)!}\n locale={(cfg as { locale?: string } | undefined)?.locale ?? \"en-US\"}\n />\n )}\n </p>\n <div class=\"desc\">\n <h3>\n <a\n href={resolveRelative(fileSlug ?? (\"\" as FullSlug), page.slug as FullSlug)}\n class=\"internal\"\n >\n {title}\n </a>\n </h3>\n </div>\n <ul class=\"tags\">\n {tags.map((tag) => (\n <li>\n <a\n class=\"internal tag-link\"\n href={resolveRelative(\n fileSlug ?? (\"\" as FullSlug),\n `tags/${tag}` as unknown as FullSlug,\n )}\n >\n {tag}\n </a>\n </li>\n ))}\n </ul>\n </div>\n </li>\n );\n })}\n </ul>\n );\n};\n\nPageList.css = `\n.section h3 {\n margin: 0;\n}\n\n.section > .tags {\n margin: 0;\n}\n`;\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","export function deprecate(fn) {\n return fn\n}\n\nexport function equal() {}\n\nexport function ok() {}\n\nexport function unreachable() {}\n","/**\n * @typedef Options\n * Configuration.\n * @property {boolean | null | undefined} [jsx=false]\n * Support JSX identifiers (default: `false`).\n */\n\nconst startRe = /[$_\\p{ID_Start}]/u\nconst contRe = /[$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst contReJsx = /[-$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst nameRe = /^[$_\\p{ID_Start}][$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\nconst nameReJsx = /^[$_\\p{ID_Start}][-$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Checks if the given code point can start an identifier.\n *\n * @param {number | undefined} code\n * Code point to check.\n * @returns {boolean}\n * Whether `code` can start an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function start(code) {\n return code ? startRe.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given code point can continue an identifier.\n *\n * @param {number | undefined} code\n * Code point to check.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {boolean}\n * Whether `code` can continue an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function cont(code, options) {\n const settings = options || emptyOptions\n const re = settings.jsx ? contReJsx : contRe\n return code ? re.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given value is a valid identifier name.\n *\n * @param {string} name\n * Identifier to check.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {boolean}\n * Whether `name` can be an identifier.\n */\nexport function name(name, options) {\n const settings = options || emptyOptions\n const re = settings.jsx ? nameReJsx : nameRe\n return re.test(name)\n}\n","/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n// HTML whitespace expression.\n// See <https://infra.spec.whatwg.org/#ascii-whitespace>.\nconst re = /[ \\t\\n\\f\\r]/g\n\n/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {Nodes | string} thing\n * Thing to check (`Node` or `string`).\n * @returns {boolean}\n * Whether the `value` is inter-element whitespace (`boolean`): consisting of\n * zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n * (`\\r`), or form feed (`\\f`); if a node is passed it must be a `Text` node,\n * whose `value` field is checked.\n */\nexport function whitespace(thing) {\n return typeof thing === 'object'\n ? thing.type === 'text'\n ? empty(thing.value)\n : false\n : empty(thing)\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction empty(value) {\n return value.replace(re, '') === ''\n}\n","/**\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 * Special cases for React (`Record<string, string>`).\n *\n * `hast` is close to `React` but differs in a couple of cases.\n * To get a React property from a hast property,\n * check if it is in `hastToReact`.\n * If it is, use the corresponding value;\n * otherwise, use the hast property.\n *\n * @type {Record<string, string>}\n */\nexport const hastToReact = {\n classId: 'classID',\n dataType: 'datatype',\n itemId: 'itemID',\n strokeDashArray: 'strokeDasharray',\n strokeDashOffset: 'strokeDashoffset',\n strokeLineCap: 'strokeLinecap',\n strokeLineJoin: 'strokeLinejoin',\n strokeMiterLimit: 'strokeMiterlimit',\n typeOf: 'typeof',\n xLinkActuate: 'xlinkActuate',\n xLinkArcRole: 'xlinkArcrole',\n xLinkHref: 'xlinkHref',\n xLinkRole: 'xlinkRole',\n xLinkShow: 'xlinkShow',\n xLinkTitle: 'xlinkTitle',\n xLinkType: 'xlinkType',\n xmlnsXLink: 'xmlnsXlink'\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 * 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","/**\n * @import {Identifier, Literal, MemberExpression} from 'estree'\n * @import {Jsx, JsxDev, Options, Props} from 'hast-util-to-jsx-runtime'\n * @import {Element, Nodes, Parents, Root, Text} from 'hast'\n * @import {MdxFlowExpressionHast, MdxTextExpressionHast} from 'mdast-util-mdx-expression'\n * @import {MdxJsxFlowElementHast, MdxJsxTextElementHast} from 'mdast-util-mdx-jsx'\n * @import {MdxjsEsmHast} from 'mdast-util-mdxjs-esm'\n * @import {Position} from 'unist'\n * @import {Child, Create, Field, JsxElement, State, Style} from './types.js'\n */\n\nimport {stringify as commas} from 'comma-separated-tokens'\nimport {ok as assert} from 'devlop'\nimport {name as isIdentifierName} from 'estree-util-is-identifier-name'\nimport {whitespace} from 'hast-util-whitespace'\nimport {find, hastToReact, html, svg} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport styleToJs from 'style-to-js'\nimport {pointStart} from 'unist-util-position'\nimport {VFileMessage} from 'vfile-message'\n\n// To do: next major: `Object.hasOwn`.\nconst own = {}.hasOwnProperty\n\n/** @type {Map<string, number>} */\nconst emptyMap = new Map()\n\nconst cap = /[A-Z]/g\n\n// `react-dom` triggers a warning for *any* white space in tables.\n// To follow GFM, `mdast-util-to-hast` injects line endings between elements.\n// Other tools might do so too, but they don’t do here, so we remove all of\n// that.\n\n// See: <https://github.com/facebook/react/pull/7081>.\n// See: <https://github.com/facebook/react/pull/7515>.\n// See: <https://github.com/remarkjs/remark-react/issues/64>.\n// See: <https://github.com/rehypejs/rehype-react/pull/29>.\n// See: <https://github.com/rehypejs/rehype-react/pull/32>.\n// See: <https://github.com/rehypejs/rehype-react/pull/45>.\nconst tableElements = new Set(['table', 'tbody', 'thead', 'tfoot', 'tr'])\n\nconst tableCellElement = new Set(['td', 'th'])\n\nconst docs = 'https://github.com/syntax-tree/hast-util-to-jsx-runtime'\n\n/**\n * Transform a hast tree to preact, react, solid, svelte, vue, etc.,\n * with an automatic JSX runtime.\n *\n * @param {Nodes} tree\n * Tree to transform.\n * @param {Options} options\n * Configuration (required).\n * @returns {JsxElement}\n * JSX element.\n */\n\nexport function toJsxRuntime(tree, options) {\n if (!options || options.Fragment === undefined) {\n throw new TypeError('Expected `Fragment` in options')\n }\n\n const filePath = options.filePath || undefined\n /** @type {Create} */\n let create\n\n if (options.development) {\n if (typeof options.jsxDEV !== 'function') {\n throw new TypeError(\n 'Expected `jsxDEV` in options when `development: true`'\n )\n }\n\n create = developmentCreate(filePath, options.jsxDEV)\n } else {\n if (typeof options.jsx !== 'function') {\n throw new TypeError('Expected `jsx` in production options')\n }\n\n if (typeof options.jsxs !== 'function') {\n throw new TypeError('Expected `jsxs` in production options')\n }\n\n create = productionCreate(filePath, options.jsx, options.jsxs)\n }\n\n /** @type {State} */\n const state = {\n Fragment: options.Fragment,\n ancestors: [],\n components: options.components || {},\n create,\n elementAttributeNameCase: options.elementAttributeNameCase || 'react',\n evaluater: options.createEvaluater ? options.createEvaluater() : undefined,\n filePath,\n ignoreInvalidStyle: options.ignoreInvalidStyle || false,\n passKeys: options.passKeys !== false,\n passNode: options.passNode || false,\n schema: options.space === 'svg' ? svg : html,\n stylePropertyNameCase: options.stylePropertyNameCase || 'dom',\n tableCellAlignToStyle: options.tableCellAlignToStyle !== false\n }\n\n const result = one(state, tree, undefined)\n\n // JSX element.\n if (result && typeof result !== 'string') {\n return result\n }\n\n // Text node or something that turned into nothing.\n return state.create(\n tree,\n state.Fragment,\n {children: result || undefined},\n undefined\n )\n}\n\n/**\n * Transform a node.\n *\n * @param {State} state\n * Info passed around.\n * @param {Nodes} node\n * Current node.\n * @param {string | undefined} key\n * Key.\n * @returns {Child | undefined}\n * Child, optional.\n */\nfunction one(state, node, key) {\n if (node.type === 'element') {\n return element(state, node, key)\n }\n\n if (node.type === 'mdxFlowExpression' || node.type === 'mdxTextExpression') {\n return mdxExpression(state, node)\n }\n\n if (node.type === 'mdxJsxFlowElement' || node.type === 'mdxJsxTextElement') {\n return mdxJsxElement(state, node, key)\n }\n\n if (node.type === 'mdxjsEsm') {\n return mdxEsm(state, node)\n }\n\n if (node.type === 'root') {\n return root(state, node, key)\n }\n\n if (node.type === 'text') {\n return text(state, node)\n }\n}\n\n/**\n * Handle element.\n *\n * @param {State} state\n * Info passed around.\n * @param {Element} node\n * Current node.\n * @param {string | undefined} key\n * Key.\n * @returns {Child | undefined}\n * Child, optional.\n */\nfunction element(state, node, key) {\n const parentSchema = state.schema\n let schema = parentSchema\n\n if (node.tagName.toLowerCase() === 'svg' && parentSchema.space === 'html') {\n schema = svg\n state.schema = schema\n }\n\n state.ancestors.push(node)\n\n const type = findComponentFromName(state, node.tagName, false)\n const props = createElementProps(state, node)\n let children = createChildren(state, node)\n\n if (tableElements.has(node.tagName)) {\n children = children.filter(function (child) {\n return typeof child === 'string' ? !whitespace(child) : true\n })\n }\n\n addNode(state, props, type, node)\n addChildren(props, children)\n\n // Restore.\n state.ancestors.pop()\n state.schema = parentSchema\n\n return state.create(node, type, props, key)\n}\n\n/**\n * Handle MDX expression.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdxFlowExpressionHast | MdxTextExpressionHast} node\n * Current node.\n * @returns {Child | undefined}\n * Child, optional.\n */\nfunction mdxExpression(state, node) {\n if (node.data && node.data.estree && state.evaluater) {\n const program = node.data.estree\n const expression = program.body[0]\n assert(expression.type === 'ExpressionStatement')\n\n // Assume result is a child.\n return /** @type {Child | undefined} */ (\n state.evaluater.evaluateExpression(expression.expression)\n )\n }\n\n crashEstree(state, node.position)\n}\n\n/**\n * Handle MDX ESM.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdxjsEsmHast} node\n * Current node.\n * @returns {Child | undefined}\n * Child, optional.\n */\nfunction mdxEsm(state, node) {\n if (node.data && node.data.estree && state.evaluater) {\n // Assume result is a child.\n return /** @type {Child | undefined} */ (\n state.evaluater.evaluateProgram(node.data.estree)\n )\n }\n\n crashEstree(state, node.position)\n}\n\n/**\n * Handle MDX JSX.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdxJsxFlowElementHast | MdxJsxTextElementHast} node\n * Current node.\n * @param {string | undefined} key\n * Key.\n * @returns {Child | undefined}\n * Child, optional.\n */\nfunction mdxJsxElement(state, node, key) {\n const parentSchema = state.schema\n let schema = parentSchema\n\n if (node.name === 'svg' && parentSchema.space === 'html') {\n schema = svg\n state.schema = schema\n }\n\n state.ancestors.push(node)\n\n const type =\n node.name === null\n ? state.Fragment\n : findComponentFromName(state, node.name, true)\n const props = createJsxElementProps(state, node)\n const children = createChildren(state, node)\n\n addNode(state, props, type, node)\n addChildren(props, children)\n\n // Restore.\n state.ancestors.pop()\n state.schema = parentSchema\n\n return state.create(node, type, props, key)\n}\n\n/**\n * Handle root.\n *\n * @param {State} state\n * Info passed around.\n * @param {Root} node\n * Current node.\n * @param {string | undefined} key\n * Key.\n * @returns {Child | undefined}\n * Child, optional.\n */\nfunction root(state, node, key) {\n /** @type {Props} */\n const props = {}\n\n addChildren(props, createChildren(state, node))\n\n return state.create(node, state.Fragment, props, key)\n}\n\n/**\n * Handle text.\n *\n * @param {State} _\n * Info passed around.\n * @param {Text} node\n * Current node.\n * @returns {Child | undefined}\n * Child, optional.\n */\nfunction text(_, node) {\n return node.value\n}\n\n/**\n * Add `node` to props.\n *\n * @param {State} state\n * Info passed around.\n * @param {Props} props\n * Props.\n * @param {unknown} type\n * Type.\n * @param {Element | MdxJsxFlowElementHast | MdxJsxTextElementHast} node\n * Node.\n * @returns {undefined}\n * Nothing.\n */\nfunction addNode(state, props, type, node) {\n // If this is swapped out for a component:\n if (typeof type !== 'string' && type !== state.Fragment && state.passNode) {\n props.node = node\n }\n}\n\n/**\n * Add children to props.\n *\n * @param {Props} props\n * Props.\n * @param {Array<Child>} children\n * Children.\n * @returns {undefined}\n * Nothing.\n */\nfunction addChildren(props, children) {\n if (children.length > 0) {\n const value = children.length > 1 ? children : children[0]\n\n if (value) {\n props.children = value\n }\n }\n}\n\n/**\n * @param {string | undefined} _\n * Path to file.\n * @param {Jsx} jsx\n * Dynamic.\n * @param {Jsx} jsxs\n * Static.\n * @returns {Create}\n * Create a production element.\n */\nfunction productionCreate(_, jsx, jsxs) {\n return create\n /** @type {Create} */\n function create(_, type, props, key) {\n // Only an array when there are 2 or more children.\n const isStaticChildren = Array.isArray(props.children)\n const fn = isStaticChildren ? jsxs : jsx\n return key ? fn(type, props, key) : fn(type, props)\n }\n}\n\n/**\n * @param {string | undefined} filePath\n * Path to file.\n * @param {JsxDev} jsxDEV\n * Development.\n * @returns {Create}\n * Create a development element.\n */\nfunction developmentCreate(filePath, jsxDEV) {\n return create\n /** @type {Create} */\n function create(node, type, props, key) {\n // Only an array when there are 2 or more children.\n const isStaticChildren = Array.isArray(props.children)\n const point = pointStart(node)\n return jsxDEV(\n type,\n props,\n key,\n isStaticChildren,\n {\n columnNumber: point ? point.column - 1 : undefined,\n fileName: filePath,\n lineNumber: point ? point.line : undefined\n },\n undefined\n )\n }\n}\n\n/**\n * Create props from an element.\n *\n * @param {State} state\n * Info passed around.\n * @param {Element} node\n * Current element.\n * @returns {Props}\n * Props.\n */\nfunction createElementProps(state, node) {\n /** @type {Props} */\n const props = {}\n /** @type {string | undefined} */\n let alignValue\n /** @type {string} */\n let prop\n\n for (prop in node.properties) {\n if (prop !== 'children' && own.call(node.properties, prop)) {\n const result = createProperty(state, prop, node.properties[prop])\n\n if (result) {\n const [key, value] = result\n\n if (\n state.tableCellAlignToStyle &&\n key === 'align' &&\n typeof value === 'string' &&\n tableCellElement.has(node.tagName)\n ) {\n alignValue = value\n } else {\n props[key] = value\n }\n }\n }\n }\n\n if (alignValue) {\n // Assume style is an object.\n const style = /** @type {Style} */ (props.style || (props.style = {}))\n style[state.stylePropertyNameCase === 'css' ? 'text-align' : 'textAlign'] =\n alignValue\n }\n\n return props\n}\n\n/**\n * Create props from a JSX element.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdxJsxFlowElementHast | MdxJsxTextElementHast} node\n * Current JSX element.\n * @returns {Props}\n * Props.\n */\nfunction createJsxElementProps(state, node) {\n /** @type {Props} */\n const props = {}\n\n for (const attribute of node.attributes) {\n if (attribute.type === 'mdxJsxExpressionAttribute') {\n if (attribute.data && attribute.data.estree && state.evaluater) {\n const program = attribute.data.estree\n const expression = program.body[0]\n assert(expression.type === 'ExpressionStatement')\n const objectExpression = expression.expression\n assert(objectExpression.type === 'ObjectExpression')\n const property = objectExpression.properties[0]\n assert(property.type === 'SpreadElement')\n\n Object.assign(\n props,\n state.evaluater.evaluateExpression(property.argument)\n )\n } else {\n crashEstree(state, node.position)\n }\n } else {\n // For JSX, the author is responsible of passing in the correct values.\n const name = attribute.name\n /** @type {unknown} */\n let value\n\n if (attribute.value && typeof attribute.value === 'object') {\n if (\n attribute.value.data &&\n attribute.value.data.estree &&\n state.evaluater\n ) {\n const program = attribute.value.data.estree\n const expression = program.body[0]\n assert(expression.type === 'ExpressionStatement')\n value = state.evaluater.evaluateExpression(expression.expression)\n } else {\n crashEstree(state, node.position)\n }\n } else {\n value = attribute.value === null ? true : attribute.value\n }\n\n // Assume a prop.\n props[name] = /** @type {Props[keyof Props]} */ (value)\n }\n }\n\n return props\n}\n\n/**\n * Create children.\n *\n * @param {State} state\n * Info passed around.\n * @param {Parents} node\n * Current element.\n * @returns {Array<Child>}\n * Children.\n */\nfunction createChildren(state, node) {\n /** @type {Array<Child>} */\n const children = []\n let index = -1\n /** @type {Map<string, number>} */\n // Note: test this when Solid doesn’t want to merge my upcoming PR.\n /* c8 ignore next */\n const countsByName = state.passKeys ? new Map() : emptyMap\n\n while (++index < node.children.length) {\n const child = node.children[index]\n /** @type {string | undefined} */\n let key\n\n if (state.passKeys) {\n const name =\n child.type === 'element'\n ? child.tagName\n : child.type === 'mdxJsxFlowElement' ||\n child.type === 'mdxJsxTextElement'\n ? child.name\n : undefined\n\n if (name) {\n const count = countsByName.get(name) || 0\n key = name + '-' + count\n countsByName.set(name, count + 1)\n }\n }\n\n const result = one(state, child, key)\n if (result !== undefined) children.push(result)\n }\n\n return children\n}\n\n/**\n * Handle a property.\n *\n * @param {State} state\n * Info passed around.\n * @param {string} prop\n * Key.\n * @param {Array<number | string> | boolean | number | string | null | undefined} value\n * hast property value.\n * @returns {Field | undefined}\n * Field for runtime, optional.\n */\nfunction createProperty(state, prop, value) {\n const info = find(state.schema, prop)\n\n // Ignore nullish and `NaN` values.\n if (\n value === null ||\n value === undefined ||\n (typeof value === 'number' && Number.isNaN(value))\n ) {\n return\n }\n\n if (Array.isArray(value)) {\n // Accept `array`.\n // Most props are space-separated.\n value = info.commaSeparated ? commas(value) : spaces(value)\n }\n\n // React only accepts `style` as object.\n if (info.property === 'style') {\n let styleObject =\n typeof value === 'object' ? value : parseStyle(state, String(value))\n\n if (state.stylePropertyNameCase === 'css') {\n styleObject = transformStylesToCssCasing(styleObject)\n }\n\n return ['style', styleObject]\n }\n\n return [\n state.elementAttributeNameCase === 'react' && info.space\n ? hastToReact[info.property] || info.property\n : info.attribute,\n value\n ]\n}\n\n/**\n * Parse a CSS declaration to an object.\n *\n * @param {State} state\n * Info passed around.\n * @param {string} value\n * CSS declarations.\n * @returns {Style}\n * Properties.\n * @throws\n * Throws `VFileMessage` when CSS cannot be parsed.\n */\nfunction parseStyle(state, value) {\n try {\n return styleToJs(value, {reactCompat: true})\n } catch (error) {\n if (state.ignoreInvalidStyle) {\n return {}\n }\n\n const cause = /** @type {Error} */ (error)\n const message = new VFileMessage('Cannot parse `style` attribute', {\n ancestors: state.ancestors,\n cause,\n ruleId: 'style',\n source: 'hast-util-to-jsx-runtime'\n })\n message.file = state.filePath || undefined\n message.url = docs + '#cannot-parse-style-attribute'\n\n throw message\n }\n}\n\n/**\n * Create a JSX name from a string.\n *\n * @param {State} state\n * To do.\n * @param {string} name\n * Name.\n * @param {boolean} allowExpression\n * Allow member expressions and identifiers.\n * @returns {unknown}\n * To do.\n */\nfunction findComponentFromName(state, name, allowExpression) {\n /** @type {Identifier | Literal | MemberExpression} */\n let result\n\n if (!allowExpression) {\n result = {type: 'Literal', value: name}\n } else if (name.includes('.')) {\n const identifiers = name.split('.')\n let index = -1\n /** @type {Identifier | Literal | MemberExpression | undefined} */\n let node\n\n while (++index < identifiers.length) {\n /** @type {Identifier | Literal} */\n const prop = isIdentifierName(identifiers[index])\n ? {type: 'Identifier', name: identifiers[index]}\n : {type: 'Literal', value: identifiers[index]}\n node = node\n ? {\n type: 'MemberExpression',\n object: node,\n property: prop,\n computed: Boolean(index && prop.type === 'Literal'),\n optional: false\n }\n : prop\n }\n\n assert(node, 'always a result')\n result = node\n } else {\n result =\n isIdentifierName(name) && !/^[a-z]/.test(name)\n ? {type: 'Identifier', name}\n : {type: 'Literal', value: name}\n }\n\n // Only literals can be passed in `components` currently.\n // No identifiers / member expressions.\n if (result.type === 'Literal') {\n const name = /** @type {string | number} */ (result.value)\n return own.call(state.components, name) ? state.components[name] : name\n }\n\n // Assume component.\n if (state.evaluater) {\n return state.evaluater.evaluateExpression(result)\n }\n\n crashEstree(state)\n}\n\n/**\n * @param {State} state\n * @param {Position | undefined} [place]\n * @returns {never}\n */\nfunction crashEstree(state, place) {\n const message = new VFileMessage(\n 'Cannot handle MDX estrees without `createEvaluater`',\n {\n ancestors: state.ancestors,\n place,\n ruleId: 'mdx-estree',\n source: 'hast-util-to-jsx-runtime'\n }\n )\n message.file = state.filePath || undefined\n message.url = docs + '#cannot-handle-mdx-estrees-without-createevaluater'\n\n throw message\n}\n\n/**\n * Transform a DOM casing style object to a CSS casing style object.\n *\n * @param {Style} domCasing\n * @returns {Style}\n */\nfunction transformStylesToCssCasing(domCasing) {\n /** @type {Style} */\n const cssCasing = {}\n /** @type {string} */\n let from\n\n for (from in domCasing) {\n if (own.call(domCasing, from)) {\n cssCasing[transformStyleToCssCasing(from)] = domCasing[from]\n }\n }\n\n return cssCasing\n}\n\n/**\n * Transform a DOM casing style field to a CSS casing style field.\n *\n * @param {string} from\n * @returns {string}\n */\nfunction transformStyleToCssCasing(from) {\n let to = from.replace(cap, toDash)\n // Handle `ms-xxx` -> `-ms-xxx`.\n if (to.slice(0, 3) === 'ms-') to = '-' + to\n return to\n}\n\n/**\n * Make `$0` dash cased.\n *\n * @param {string} $0\n * Capitalized ASCII leter.\n * @returns {string}\n * Dash and lower letter.\n */\nfunction toDash($0) {\n return '-' + $0.toLowerCase()\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Get the ending point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointEnd = point('end')\n\n/**\n * Get the starting point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointStart = point('start')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {'end' | 'start'} type\n * Side.\n * @returns\n * Getter.\n */\nfunction point(type) {\n return point\n\n /**\n * Get the point info of `node` at a bound side.\n *\n * @param {Node | NodeLike | null | undefined} [node]\n * @returns {Point | undefined}\n */\n function point(node) {\n const point = (node && node.position && node.position[type]) || {}\n\n if (\n typeof point.line === 'number' &&\n point.line > 0 &&\n typeof point.column === 'number' &&\n point.column > 0\n ) {\n return {\n line: point.line,\n column: point.column,\n offset:\n typeof point.offset === 'number' && point.offset > -1\n ? point.offset\n : undefined\n }\n }\n }\n}\n\n/**\n * Get the positional info of `node`.\n *\n * @param {Node | NodeLike | null | undefined} [node]\n * Node.\n * @returns {Position | undefined}\n * Position.\n */\nexport function position(node) {\n const start = pointStart(node)\n const end = pointEnd(node)\n\n if (start && end) {\n return {start, end}\n }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Point | PointLike | Position | PositionLike | null | undefined} [value]\n * Node, position, or point.\n * @returns {string}\n * Pretty printed positional info of a node (`string`).\n *\n * In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n * or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n * column, `s` for `start`, and `e` for end.\n * An empty string (`''`) is returned if the given value is neither `node`,\n * `position`, nor `point`.\n */\nexport function stringifyPosition(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if ('position' in value || 'type' in value) {\n return position(value.position)\n }\n\n // Position.\n if ('start' in value || 'end' in value) {\n return position(value)\n }\n\n // Point.\n if ('line' in value || 'column' in value) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n","/**\n * @import {Node, Point, Position} from 'unist'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef Options\n * Configuration.\n * @property {Array<Node> | null | undefined} [ancestors]\n * Stack of (inclusive) ancestor nodes surrounding the message (optional).\n * @property {Error | null | undefined} [cause]\n * Original error cause of the message (optional).\n * @property {Point | Position | null | undefined} [place]\n * Place of message (optional).\n * @property {string | null | undefined} [ruleId]\n * Category of message (optional, example: `'my-rule'`).\n * @property {string | null | undefined} [source]\n * Namespace of who sent the message (optional, example: `'my-package'`).\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\n/**\n * Message.\n */\nexport class VFileMessage extends Error {\n /**\n * Create a message for `reason`.\n *\n * > 🪦 **Note**: also has obsolete signatures.\n *\n * @overload\n * @param {string} reason\n * @param {Options | null | undefined} [options]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {string} reason\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Node | NodeLike | null | undefined} parent\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {Point | Position | null | undefined} place\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @overload\n * @param {Error | VFileMessage} cause\n * @param {string | null | undefined} [origin]\n * @returns\n *\n * @param {Error | VFileMessage | string} causeOrReason\n * Reason for message, should use markdown.\n * @param {Node | NodeLike | Options | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n * Configuration (optional).\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns\n * Instance of `VFileMessage`.\n */\n // eslint-disable-next-line complexity\n constructor(causeOrReason, optionsOrParentOrPlace, origin) {\n super()\n\n if (typeof optionsOrParentOrPlace === 'string') {\n origin = optionsOrParentOrPlace\n optionsOrParentOrPlace = undefined\n }\n\n /** @type {string} */\n let reason = ''\n /** @type {Options} */\n let options = {}\n let legacyCause = false\n\n if (optionsOrParentOrPlace) {\n // Point.\n if (\n 'line' in optionsOrParentOrPlace &&\n 'column' in optionsOrParentOrPlace\n ) {\n options = {place: optionsOrParentOrPlace}\n }\n // Position.\n else if (\n 'start' in optionsOrParentOrPlace &&\n 'end' in optionsOrParentOrPlace\n ) {\n options = {place: optionsOrParentOrPlace}\n }\n // Node.\n else if ('type' in optionsOrParentOrPlace) {\n options = {\n ancestors: [optionsOrParentOrPlace],\n place: optionsOrParentOrPlace.position\n }\n }\n // Options.\n else {\n options = {...optionsOrParentOrPlace}\n }\n }\n\n if (typeof causeOrReason === 'string') {\n reason = causeOrReason\n }\n // Error.\n else if (!options.cause && causeOrReason) {\n legacyCause = true\n reason = causeOrReason.message\n options.cause = causeOrReason\n }\n\n if (!options.ruleId && !options.source && typeof origin === 'string') {\n const index = origin.indexOf(':')\n\n if (index === -1) {\n options.ruleId = origin\n } else {\n options.source = origin.slice(0, index)\n options.ruleId = origin.slice(index + 1)\n }\n }\n\n if (!options.place && options.ancestors && options.ancestors) {\n const parent = options.ancestors[options.ancestors.length - 1]\n\n if (parent) {\n options.place = parent.position\n }\n }\n\n const start =\n options.place && 'start' in options.place\n ? options.place.start\n : options.place\n\n /**\n * Stack of ancestor nodes surrounding the message.\n *\n * @type {Array<Node> | undefined}\n */\n this.ancestors = options.ancestors || undefined\n\n /**\n * Original error cause of the message.\n *\n * @type {Error | undefined}\n */\n this.cause = options.cause || undefined\n\n /**\n * Starting column of message.\n *\n * @type {number | undefined}\n */\n this.column = start ? start.column : undefined\n\n /**\n * State of problem.\n *\n * * `true` — error, file not usable\n * * `false` — warning, change may be needed\n * * `undefined` — change likely not needed\n *\n * @type {boolean | null | undefined}\n */\n this.fatal = undefined\n\n /**\n * Path of a file (used throughout the `VFile` ecosystem).\n *\n * @type {string | undefined}\n */\n this.file = ''\n\n // Field from `Error`.\n /**\n * Reason for message.\n *\n * @type {string}\n */\n this.message = reason\n\n /**\n * Starting line of error.\n *\n * @type {number | undefined}\n */\n this.line = start ? start.line : undefined\n\n // Field from `Error`.\n /**\n * Serialized positional info of message.\n *\n * On normal errors, this would be something like `ParseError`, buit in\n * `VFile` messages we use this space to show where an error happened.\n */\n this.name = stringifyPosition(options.place) || '1:1'\n\n /**\n * Place of message.\n *\n * @type {Point | Position | undefined}\n */\n this.place = options.place || undefined\n\n /**\n * Reason for message, should use markdown.\n *\n * @type {string}\n */\n this.reason = this.message\n\n /**\n * Category of message (example: `'my-rule'`).\n *\n * @type {string | undefined}\n */\n this.ruleId = options.ruleId || undefined\n\n /**\n * Namespace of message (example: `'my-package'`).\n *\n * @type {string | undefined}\n */\n this.source = options.source || undefined\n\n // Field from `Error`.\n /**\n * Stack of message.\n *\n * This is used by normal errors to show where something happened in\n * programming code, irrelevant for `VFile` messages,\n *\n * @type {string}\n */\n this.stack =\n legacyCause && options.cause && typeof options.cause.stack === 'string'\n ? options.cause.stack\n : ''\n\n // The following fields are “well known”.\n // Not standard.\n // Feel free to add other non-standard fields to your messages.\n\n /**\n * Specify the source value that’s being reported, which is deemed\n * incorrect.\n *\n * @type {string | undefined}\n */\n this.actual = undefined\n\n /**\n * Suggest acceptable values that can be used instead of `actual`.\n *\n * @type {Array<string> | undefined}\n */\n this.expected = undefined\n\n /**\n * Long form description of the message (you should use markdown).\n *\n * @type {string | undefined}\n */\n this.note = undefined\n\n /**\n * Link to docs for the message.\n *\n * > 👉 **Note**: this must be an absolute URL that can be passed as `x`\n * > to `new URL(x)`.\n *\n * @type {string | undefined}\n */\n this.url = undefined\n }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.column = undefined\nVFileMessage.prototype.line = undefined\nVFileMessage.prototype.ancestors = undefined\nVFileMessage.prototype.cause = undefined\nVFileMessage.prototype.fatal = undefined\nVFileMessage.prototype.place = undefined\nVFileMessage.prototype.ruleId = undefined\nVFileMessage.prototype.source = undefined\n","import type { Components, Jsx } from \"hast-util-to-jsx-runtime\";\nimport { toJsxRuntime } from \"hast-util-to-jsx-runtime\";\nimport type { Root, Node } from \"hast\";\nimport { Fragment, jsx, jsxs } from \"preact/jsx-runtime\";\nimport { h } from \"preact\";\n\n/**\n * Extract text content from JSX children.\n *\n * `toJsxRuntime` passes the inner text of `<style>` / `<script>` elements as\n * the `children` prop. This helper normalises the various shapes it can take\n * (string, array of strings, or other) into a single string so we can feed it\n * to `dangerouslySetInnerHTML`.\n */\nfunction childrenToString(children: unknown): string {\n if (typeof children === \"string\") return children;\n if (Array.isArray(children)) return children.map(childrenToString).join(\"\");\n return String(children ?? \"\");\n}\n\n/**\n * Default component overrides applied by {@link htmlToJsx}.\n *\n * - **table** – wrapped in a scrollable `<div class=\"table-container\">`\n * - **style** / **script** – rendered with `dangerouslySetInnerHTML` so that\n * special characters (`\"`, `&`, etc.) are *not* HTML-escaped by preact.\n */\nconst builtinComponents: Components = {\n table: (props) => (\n <div class=\"table-container\">\n <table {...props} />\n </div>\n ),\n style: ({ children, ...rest }) =>\n h(\"style\", { ...rest, dangerouslySetInnerHTML: { __html: childrenToString(children) } }),\n script: ({ children, ...rest }) =>\n h(\"script\", { ...rest, dangerouslySetInnerHTML: { __html: childrenToString(children) } }),\n};\n\n/**\n * Convert a HAST tree to Preact JSX, with sensible defaults for Quartz plugins.\n *\n * This is the canonical way for pageType body components (and any other code\n * that renders a HAST tree to JSX) to produce output that is safe for\n * `preact-render-to-string`. It applies built-in component overrides for\n * `<table>`, `<style>`, and `<script>` elements, preventing the common\n * pitfall where inline CSS / JS gets HTML-escaped.\n *\n * @param tree The HAST root (or node) to render.\n * @param components Optional additional component overrides. These are\n * merged with (and override) the built-in defaults.\n * @returns A Preact JSX element ready for `render()`.\n */\nexport function htmlToJsx(tree: Node, components?: Partial<Components>) {\n return toJsxRuntime(tree as Root, {\n Fragment,\n jsx: jsx as Jsx,\n jsxs: jsxs as Jsx,\n elementAttributeNameCase: \"html\",\n components: { ...builtinComponents, ...components },\n });\n}\n","export default {\n pages: {\n tagContent: {\n tag: \"Tag\",\n tagIndex: \"Tag Index\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 item with this tag.\" : `${count} items with this tag.`,\n showingFirst: ({ count }: { count: number }) => `Showing first ${count} tags.`,\n totalTags: ({ count }: { count: number }) => `Found ${count} total tags.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"الوسم\",\n tagIndex: \"مؤشر الوسم\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"يوجد عنصر واحد فقط تحت هذا الوسم\" : `يوجد ${count} عناصر تحت هذا الوسم.`,\n showingFirst: ({ count }: { count: number }) => `إظهار أول ${count} أوسمة.`,\n totalTags: ({ count }: { count: number }) => `يوجد ${count} أوسمة.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Etiqueta\",\n tagIndex: \"índex d'Etiquetes\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 article amb aquesta etiqueta.\" : `${count} article amb aquesta etiqueta.`,\n showingFirst: ({ count }: { count: number }) => `Mostrant les primeres ${count} etiquetes.`,\n totalTags: ({ count }: { count: number }) => `S'han trobat ${count} etiquetes en total.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Tag\",\n tagIndex: \"Rejstřík tagů\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 položka s tímto tagem.\" : `${count} položek s tímto tagem.`,\n showingFirst: ({ count }: { count: number }) => `Zobrazují se první ${count} tagy.`,\n totalTags: ({ count }: { count: number }) => `Nalezeno celkem ${count} tagů.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Tag\",\n tagIndex: \"Tag-Übersicht\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 Datei mit diesem Tag.\" : `${count} Dateien mit diesem Tag.`,\n showingFirst: ({ count }: { count: number }) => `Die ersten ${count} Tags werden angezeigt.`,\n totalTags: ({ count }: { count: number }) => `${count} Tags insgesamt.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Tag\",\n tagIndex: \"Tag Index\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 item with this tag.\" : `${count} items with this tag.`,\n showingFirst: ({ count }: { count: number }) => `Showing first ${count} tags.`,\n totalTags: ({ count }: { count: number }) => `Found ${count} total tags.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Etiqueta\",\n tagIndex: \"Índice de Etiquetas\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 artículo con esta etiqueta.\" : `${count} artículos con esta etiqueta.`,\n showingFirst: ({ count }: { count: number }) => `Mostrando las primeras ${count} etiquetas.`,\n totalTags: ({ count }: { count: number }) => `Se han encontrado ${count} etiquetas en total.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"برچسب\",\n tagIndex: \"فهرست برچسب‌ها\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"یک مطلب با این برچسب\" : `${count} مطلب با این برچسب.`,\n showingFirst: ({ count }: { count: number }) => `در حال نمایش ${count} برچسب.`,\n totalTags: ({ count }: { count: number }) => `${count} برچسب یافت شد.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Tunniste\",\n tagIndex: \"Tunnisteluettelo\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 kohde tällä tunnisteella.\" : `${count} kohdetta tällä tunnisteella.`,\n showingFirst: ({ count }: { count: number }) => `Näytetään ensimmäiset ${count} tunnistetta.`,\n totalTags: ({ count }: { count: number }) => `Löytyi yhteensä ${count} tunnistetta.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Étiquette\",\n tagIndex: \"Index des étiquettes\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 élément avec cette étiquette.\" : `${count} éléments avec cette étiquette.`,\n showingFirst: ({ count }: { count: number }) =>\n `Affichage des premières ${count} étiquettes.`,\n totalTags: ({ count }: { count: number }) => `Trouvé ${count} étiquettes au total.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"תגית\",\n tagIndex: \"מפתח התגיות\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"פריט אחד עם תגית זו.\" : `${count} פריטים עם תגית זו.`,\n showingFirst: ({ count }: { count: number }) => `מראה את ה-${count} תגיות הראשונות.`,\n totalTags: ({ count }: { count: number }) => `${count} תגיות נמצאו סך הכל.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Címke\",\n tagIndex: \"Címke index\",\n itemsUnderTag: ({ count }: { count: number }) => `${count} elem található ezzel a címkével.`,\n showingFirst: ({ count }: { count: number }) => `Első ${count} címke megjelenítve.`,\n totalTags: ({ count }: { count: number }) => `Összesen ${count} címke található.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Tag\",\n tagIndex: \"Indeks Tag\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 item dengan tag ini.\" : `${count} item dengan tag ini.`,\n showingFirst: ({ count }: { count: number }) => `Menampilkan ${count} tag pertama.`,\n totalTags: ({ count }: { count: number }) => `Ditemukan total ${count} tag.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Etichetta\",\n tagIndex: \"Indice etichette\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 oggetto con questa etichetta.\" : `${count} oggetti con questa etichetta.`,\n showingFirst: ({ count }: { count: number }) =>\n count === 1 ? \"Prima etichetta.\" : `Prime ${count} etichette.`,\n totalTags: ({ count }: { count: number }) =>\n count === 1 ? \"Trovata 1 etichetta in totale.\" : `Trovate ${count} etichette totali.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"タグ\",\n tagIndex: \"タグ一覧\",\n itemsUnderTag: ({ count }: { count: number }) => `${count}件のページ`,\n showingFirst: ({ count }: { count: number }) => `のうち最初の${count}件を表示しています`,\n totalTags: ({ count }: { count: number }) => `全${count}個のタグを表示中`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Тег\",\n tagIndex: \"Тегтер индексі\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"Бұл тегпен 1 элемент.\" : `Бұл тегпен ${count} элемент.`,\n showingFirst: ({ count }: { count: number }) => `Алғашқы ${count} тег көрсетілуде.`,\n totalTags: ({ count }: { count: number }) => `Барлығы ${count} тег табылды.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"태그\",\n tagIndex: \"태그 목록\",\n itemsUnderTag: ({ count }: { count: number }) => `${count}건의 항목`,\n showingFirst: ({ count }: { count: number }) => `처음 ${count}개의 태그`,\n totalTags: ({ count }: { count: number }) => `총 ${count}개의 태그를 찾았습니다.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Žyma\",\n tagIndex: \"Žymų indeksas\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1\n ? \"1 elementas su šia žyma.\"\n : count < 10\n ? `${count} elementai su šia žyma.`\n : `${count} elementų su šia žyma.`,\n showingFirst: ({ count }: { count: number }) =>\n count < 10 ? `Rodomos pirmosios ${count} žymos.` : `Rodomos pirmosios ${count} žymų.`,\n totalTags: ({ count }: { count: number }) =>\n count === 1\n ? \"Rasta iš viso 1 žyma.\"\n : count < 10\n ? `Rasta iš viso ${count} žymos.`\n : `Rasta iš viso ${count} žymų.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Tagg\",\n tagIndex: \"Tagg Indeks\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 gjenstand med denne taggen.\" : `${count} gjenstander med denne taggen.`,\n showingFirst: ({ count }: { count: number }) => `Viser første ${count} tagger.`,\n totalTags: ({ count }: { count: number }) => `Fant totalt ${count} tagger.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Label\",\n tagIndex: \"Label-index\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 item met dit label.\" : `${count} items met dit label.`,\n showingFirst: ({ count }: { count: number }) =>\n count === 1 ? \"Eerste label tonen.\" : `Eerste ${count} labels tonen.`,\n totalTags: ({ count }: { count: number }) => `${count} labels gevonden.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Znacznik\",\n tagIndex: \"Spis znaczników\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"Oznaczony 1 element.\" : `Elementów z tym znacznikiem: ${count}.`,\n showingFirst: ({ count }: { count: number }) => `Pokazuje ${count} pierwszych znaczników.`,\n totalTags: ({ count }: { count: number }) => `Znalezionych wszystkich znaczników: ${count}.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Tag\",\n tagIndex: \"Sumário de Tags\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 item com esta tag.\" : `${count} items com esta tag.`,\n showingFirst: ({ count }: { count: number }) => `Mostrando as ${count} primeiras tags.`,\n totalTags: ({ count }: { count: number }) => `Encontradas ${count} tags.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Etichetă\",\n tagIndex: \"Indexul etichetelor\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 articol cu această etichetă.\" : `${count} articole cu această etichetă.`,\n showingFirst: ({ count }: { count: number }) => `Se afișează primele ${count} etichete.`,\n totalTags: ({ count }: { count: number }) => `Au fost găsite ${count} etichete în total.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Тег\",\n tagIndex: \"Индекс тегов\",\n itemsUnderTag: ({ count }: { count: number }) =>\n `с этим тегом ${count} элемент${getForm(count, \"\", \"а\", \"ов\")}`,\n showingFirst: ({ count }: { count: number }) =>\n `Показыва${getForm(count, \"ется\", \"ются\", \"ются\")} ${count} тег${getForm(count, \"\", \"а\", \"ов\")}`,\n totalTags: ({ count }: { count: number }) =>\n `Всего ${count} тег${getForm(count, \"\", \"а\", \"ов\")}`,\n },\n },\n components: {},\n};\n\nfunction getForm(number: number, form1: string, form2: string, form5: string): string {\n const remainder100 = number % 100;\n const remainder10 = remainder100 % 10;\n\n if (remainder100 >= 10 && remainder100 <= 20) return form5;\n if (remainder10 > 1 && remainder10 < 5) return form2;\n if (remainder10 == 1) return form1;\n return form5;\n}\n","export default {\n pages: {\n tagContent: {\n tag: \"แท็ก\",\n tagIndex: \"แท็กทั้งหมด\",\n itemsUnderTag: ({ count }: { count: number }) => `มี ${count} รายการในแท็กนี้`,\n showingFirst: ({ count }: { count: number }) => `แสดง ${count} แท็กแรก`,\n totalTags: ({ count }: { count: number }) => `มีทั้งหมด ${count} แท็ก`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Etiket\",\n tagIndex: \"Etiket Sırası\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"Bu etikete sahip 1 öğe.\" : `Bu etiket altındaki ${count} öğe.`,\n showingFirst: ({ count }: { count: number }) => `İlk ${count} etiket gösteriliyor.`,\n totalTags: ({ count }: { count: number }) => `Toplam ${count} adet etiket bulundu.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Мітка\",\n tagIndex: \"Індекс мітки\",\n itemsUnderTag: ({ count }: { count: number }) =>\n count === 1 ? \"1 елемент з цією міткою.\" : `Елементів з цією міткою: ${count}.`,\n showingFirst: ({ count }: { count: number }) => `Показ перших ${count} міток.`,\n totalTags: ({ count }: { count: number }) => `Всього знайдено міток: ${count}.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"Thẻ\",\n tagIndex: \"Danh sách thẻ\",\n itemsUnderTag: ({ count }: { count: number }) => `Có ${count} trang gắn thẻ này.`,\n showingFirst: ({ count }: { count: number }) => `Đang hiển thị ${count} trang đầu tiên.`,\n totalTags: ({ count }: { count: number }) => `Có tổng cộng ${count} thẻ.`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"标签\",\n tagIndex: \"标签索引\",\n itemsUnderTag: ({ count }: { count: number }) => `此标签下有${count}条笔记。`,\n showingFirst: ({ count }: { count: number }) => `显示前${count}个标签。`,\n totalTags: ({ count }: { count: number }) => `总共有${count}个标签。`,\n },\n },\n components: {},\n};\n","export default {\n pages: {\n tagContent: {\n tag: \"標籤\",\n tagIndex: \"標籤索引\",\n itemsUnderTag: ({ count }: { count: number }) => `此標籤下有 ${count} 條筆記。`,\n showingFirst: ({ count }: { count: number }) => `顯示前 ${count} 個標籤。`,\n totalTags: ({ count }: { count: number }) => `總共有 ${count} 個標籤。`,\n },\n },\n components: {},\n};\n","import enUS from \"./locales/en-US\";\nimport arSA from \"./locales/ar-SA\";\nimport caES from \"./locales/ca-ES\";\nimport csCZ from \"./locales/cs-CZ\";\nimport deDE from \"./locales/de-DE\";\nimport enGB from \"./locales/en-GB\";\nimport esES from \"./locales/es-ES\";\nimport faIR from \"./locales/fa-IR\";\nimport fiFI from \"./locales/fi-FI\";\nimport frFR from \"./locales/fr-FR\";\nimport heIL from \"./locales/he-IL\";\nimport huHU from \"./locales/hu-HU\";\nimport idID from \"./locales/id-ID\";\nimport itIT from \"./locales/it-IT\";\nimport jaJP from \"./locales/ja-JP\";\nimport kkKZ from \"./locales/kk-KZ\";\nimport koKR from \"./locales/ko-KR\";\nimport ltLT from \"./locales/lt-LT\";\nimport nbNO from \"./locales/nb-NO\";\nimport nlNL from \"./locales/nl-NL\";\nimport plPL from \"./locales/pl-PL\";\nimport ptBR from \"./locales/pt-BR\";\nimport roRO from \"./locales/ro-RO\";\nimport ruRU from \"./locales/ru-RU\";\nimport thTH from \"./locales/th-TH\";\nimport trTR from \"./locales/tr-TR\";\nimport ukUA from \"./locales/uk-UA\";\nimport viVN from \"./locales/vi-VN\";\nimport zhCN from \"./locales/zh-CN\";\nimport zhTW from \"./locales/zh-TW\";\n\nconst locales: Record<string, typeof enUS> = {\n \"en-US\": enUS,\n \"ar-SA\": arSA,\n \"ca-ES\": caES,\n \"cs-CZ\": csCZ,\n \"de-DE\": deDE,\n \"en-GB\": enGB,\n \"es-ES\": esES,\n \"fa-IR\": faIR,\n \"fi-FI\": fiFI,\n \"fr-FR\": frFR,\n \"he-IL\": heIL,\n \"hu-HU\": huHU,\n \"id-ID\": idID,\n \"it-IT\": itIT,\n \"ja-JP\": jaJP,\n \"kk-KZ\": kkKZ,\n \"ko-KR\": koKR,\n \"lt-LT\": ltLT,\n \"nb-NO\": nbNO,\n \"nl-NL\": nlNL,\n \"pl-PL\": plPL,\n \"pt-BR\": ptBR,\n \"ro-RO\": roRO,\n \"ru-RU\": ruRU,\n \"th-TH\": thTH,\n \"tr-TR\": trTR,\n \"uk-UA\": ukUA,\n \"vi-VN\": viVN,\n \"zh-CN\": zhCN,\n \"zh-TW\": zhTW,\n};\n\nexport function i18n(locale: string) {\n return locales[locale] || enUS;\n}\n","import { joinSegments } from \"./path\";\n\n/** Whether `tag` has nested child tags (e.g. `kubernetes` for `kubernetes/k3s`). */\nexport function hasChildTags(tag: string, allTags: Iterable<string>): boolean {\n const prefix = `${tag}/`;\n for (const t of allTags) {\n if (t.startsWith(prefix)) return true;\n }\n return false;\n}\n\n/**\n * Slug of a tag's listing page. Tags with child tags are emitted as\n * `tags/<tag>/index` so the page lives inside the `tags/<tag>/` directory that\n * holds its children; a sibling `tags/<tag>.html` is unreachable on static hosts\n * that resolve the directory first (jackyzha0/quartz#2556). Leaf tags keep\n * `tags/<tag>`.\n */\nexport function tagPageSlug(tag: string, allTags: Iterable<string>): string {\n if (tag === \"index\") return \"tags/index\";\n return hasChildTags(tag, allTags)\n ? joinSegments(\"tags\", tag, \"index\")\n : joinSegments(\"tags\", tag);\n}\n","ul.section-ul {\n list-style: none;\n margin-top: 2em;\n padding-left: 0;\n}\n\nli.section-li {\n margin-bottom: 1em;\n}\nli.section-li > .section {\n display: grid;\n grid-template-columns: fit-content(8em) 3fr 1fr;\n}\n@media all and (max-width: 600px) {\n li.section-li > .section > .tags {\n display: none;\n }\n}\nli.section-li > .section > .desc > h3 > a {\n background-color: transparent;\n}\nli.section-li > .section .meta {\n margin: 0 1em 0 0;\n opacity: 0.6;\n}\n\n.popover .section {\n grid-template-columns: fit-content(8em) 1fr !important;\n}\n.popover .section > .tags {\n display: none;\n}","import type {\n QuartzComponent,\n QuartzComponentConstructor,\n QuartzComponentProps,\n QuartzPluginData,\n SortFn,\n} from \"@quartz-community/types\";\nimport { PageList } from \"./PageList\";\nimport { htmlToJsx } from \"@quartz-community/utils/jsx\";\nimport type { ComponentChildren } from \"preact\";\nimport type { Root } from \"hast\";\nimport { i18n } from \"../i18n\";\nimport { tagPageSlug } from \"../util/tags\";\nimport { getAllSegmentPrefixes, resolveRelative, simplifySlug } from \"../util/path\";\nimport type { FullSlug } from \"../util/path\";\nimport style from \"./styles/listPage.scss\";\n\ninterface TagContentOptions {\n sort?: SortFn;\n numPages: number;\n}\n\nconst defaultOptions: TagContentOptions = {\n numPages: 10,\n};\n\nfunction concatenateResources(\n ...resources: (string | string[] | undefined)[]\n): string | string[] | undefined {\n const result = resources.filter((r): r is string | string[] => r !== undefined).flat();\n return result.length === 0 ? undefined : result;\n}\n\ntype PageFileData = QuartzPluginData & Record<string, unknown>;\n\nfunction isListed(file: PageFileData): boolean {\n return file.unlisted !== true;\n}\n\nexport default ((opts?: Partial<TagContentOptions>) => {\n const options: TagContentOptions = { ...defaultOptions, ...opts };\n\n const TagContent: QuartzComponent = (props: QuartzComponentProps) => {\n const { tree, fileData, allFiles, cfg } = props;\n const fd = fileData as PageFileData;\n const slug = fd.slug;\n const locale = (cfg as { locale?: string } | undefined)?.locale ?? \"en-US\";\n\n if (!(slug?.startsWith(\"tags/\") || slug === \"tags\")) {\n throw new Error(`Component \"TagContent\" tried to render a non-tag page: ${slug}`);\n }\n\n // `tags/<tag>/index` (tags with child tags) → `<tag>`; `tags/index` → \"/\"\n let tag: string = simplifySlug(slug.slice(\"tags/\".length) as FullSlug);\n if (tag !== \"/\" && tag.endsWith(\"/\")) tag = tag.slice(0, -1);\n const allPagesWithTag = (t: string) =>\n (allFiles as PageFileData[])\n .filter(isListed)\n .filter((file) =>\n (file.frontmatter?.tags ?? []).flatMap(getAllSegmentPrefixes).includes(t),\n );\n\n const hastRoot = tree as Root;\n const content = hastRoot.children.length === 0 ? fd.description : htmlToJsx(hastRoot);\n\n const cssClasses = fd.frontmatter?.cssclasses ?? [];\n const classes = cssClasses.join(\" \");\n\n if (tag === \"/\") {\n const tags = [\n ...new Set(\n (allFiles as PageFileData[])\n .filter(isListed)\n .flatMap((data) => data.frontmatter?.tags ?? [])\n .flatMap(getAllSegmentPrefixes),\n ),\n ].sort((a, b) => a.localeCompare(b));\n\n const tagItemMap: Map<string, PageFileData[]> = new Map();\n for (const t of tags) {\n tagItemMap.set(t, allPagesWithTag(t));\n }\n\n return (\n <div class=\"popover-hint\">\n <article class={classes}>\n <div class=\"markdown-preview-view markdown-rendered\">\n <p>{content}</p>\n </div>\n </article>\n <p>{i18n(locale).pages.tagContent.totalTags({ count: tags.length })}</p>\n <div>\n {tags.map((t) => {\n const pages = tagItemMap.get(t)!;\n const listProps = {\n ...props,\n allFiles: pages,\n };\n const pageListContent = PageList({\n ...listProps,\n limit: options.numPages,\n sort: options?.sort,\n }) as unknown as ComponentChildren;\n\n const contentPage = (allFiles as PageFileData[]).find(\n (file) => file.slug === `tags/${t}` || file.slug === `tags/${t}/index`,\n );\n\n // Virtual pages have htmlAst pre-rendered by the dispatcher (contains the full\n // PageList), so only use htmlAst from real user-authored tag pages (have filePath).\n const root = contentPage?.filePath ? contentPage?.htmlAst : undefined;\n const tagDesc =\n !root || root.children.length === 0 ? contentPage?.description : htmlToJsx(root);\n\n // A hand-written tag page is linked where it is: at `tags/<tag>` it replaces the\n // virtual `tags/<tag>/index`, which is then never emitted (the docs' `tags/plugin`).\n const tagListingPage = (contentPage?.slug ?? tagPageSlug(t, tags)) as FullSlug;\n const href = resolveRelative(slug as FullSlug, tagListingPage);\n\n return (\n <div>\n <h2>\n <a class=\"internal tag-link\" href={href}>\n {t}\n </a>\n </h2>\n {tagDesc && <p>{tagDesc}</p>}\n <div class=\"page-listing\">\n <p>\n {i18n(locale).pages.tagContent.itemsUnderTag({ count: pages.length })}\n {pages.length > options.numPages && (\n <>\n {\" \"}\n <span>\n {i18n(locale).pages.tagContent.showingFirst({\n count: options.numPages,\n })}\n </span>\n </>\n )}\n </p>\n {pageListContent}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n } else {\n const pages = allPagesWithTag(tag);\n const listProps = {\n ...props,\n allFiles: pages,\n };\n const pageListContent = PageList({\n ...listProps,\n sort: options?.sort,\n }) as unknown as ComponentChildren;\n\n return (\n <div class=\"popover-hint\">\n <article class={classes}>\n <div class=\"markdown-preview-view markdown-rendered\">{content}</div>\n </article>\n <div class=\"page-listing\">\n <p>{i18n(locale).pages.tagContent.itemsUnderTag({ count: pages.length })}</p>\n <div>{pageListContent}</div>\n </div>\n </div>\n );\n }\n };\n\n TagContent.css = concatenateResources(style, PageList.css);\n return TagContent;\n}) satisfies QuartzComponentConstructor;\n"]}