@hanzo/docs-core 16.4.2 → 16.5.0

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.
Files changed (88) hide show
  1. package/README.md +1 -1
  2. package/dist/{advanced-CEwMef7q.js → advanced-BRT5Ij43.js} +3 -3
  3. package/dist/{advanced-CEwMef7q.js.map → advanced-BRT5Ij43.js.map} +1 -1
  4. package/dist/{algolia-BrWPzYE_.js → algolia-CQPXCnjV.js} +2 -2
  5. package/dist/{algolia-BrWPzYE_.js.map → algolia-CQPXCnjV.js.map} +1 -1
  6. package/dist/{algolia-CBBN8R6-.d.ts → algolia-Cc1y6qWl.d.ts} +2 -2
  7. package/dist/{algolia-CBBN8R6-.d.ts.map → algolia-Cc1y6qWl.d.ts.map} +1 -1
  8. package/dist/breadcrumb.js +1 -1
  9. package/dist/{codeblock-utils-lld8UiQo.d.ts → codeblock-utils-DDnYb8gi.d.ts} +2 -2
  10. package/dist/{codeblock-utils-lld8UiQo.d.ts.map → codeblock-utils-DDnYb8gi.d.ts.map} +1 -1
  11. package/dist/content/github.d.ts +1 -1
  12. package/dist/content/github.js.map +1 -1
  13. package/dist/content/index.d.ts +2 -2
  14. package/dist/content/mdx/preset-bundler.d.ts +2 -2
  15. package/dist/content/mdx/preset-runtime.d.ts +2 -2
  16. package/dist/dynamic-link.d.ts +2 -2
  17. package/dist/framework/index.d.ts +4 -4
  18. package/dist/framework/react-router.d.ts +2 -2
  19. package/dist/framework/tanstack.d.ts +3 -3
  20. package/dist/framework/tanstack.js +1 -1
  21. package/dist/framework/tanstack.js.map +1 -1
  22. package/dist/framework/waku.d.ts +2 -2
  23. package/dist/highlight/client.d.ts +1 -1
  24. package/dist/highlight/client.js +1 -1
  25. package/dist/highlight/index.d.ts +1 -1
  26. package/dist/highlight/index.js +1 -1
  27. package/dist/{icon-Ds1OCIhh.js → icon-BWwSDabM.js} +2 -2
  28. package/dist/{icon-Ds1OCIhh.js.map → icon-BWwSDabM.js.map} +1 -1
  29. package/dist/link.d.ts +2 -2
  30. package/dist/mdx-plugins/codeblock-utils.d.ts +1 -1
  31. package/dist/mdx-plugins/codeblock-utils.js +1 -1
  32. package/dist/mdx-plugins/codeblock-utils.js.map +1 -1
  33. package/dist/mdx-plugins/index.d.ts +3 -3
  34. package/dist/mdx-plugins/index.js +3 -3
  35. package/dist/mdx-plugins/rehype-code.js +2 -2
  36. package/dist/mdx-plugins/rehype-toc.js +1 -1
  37. package/dist/mdx-plugins/remark-npm.d.ts +1 -1
  38. package/dist/mdx-plugins/remark-npm.js.map +1 -1
  39. package/dist/mdx-plugins/remark-structure.d.ts +1 -1
  40. package/dist/mdx-plugins/remark-structure.js.map +1 -1
  41. package/dist/{normalize-url-DP9-1I-S.js → normalize-url-ChLsV26G.js} +2 -2
  42. package/dist/normalize-url-ChLsV26G.js.map +1 -0
  43. package/dist/{orama-cloud-MyA-JBt1.js → orama-cloud-DH3g37zc.js} +3 -3
  44. package/dist/orama-cloud-DH3g37zc.js.map +1 -0
  45. package/dist/{path-DPJpqaLb.js → path-DHIjrDBP.js} +1 -1
  46. package/dist/{path-DPJpqaLb.js.map → path-DHIjrDBP.js.map} +1 -1
  47. package/dist/{rehype-code-CQDbiG8_.js → rehype-code-sM9Tq-r7.js} +3 -3
  48. package/dist/{rehype-code-CQDbiG8_.js.map → rehype-code-sM9Tq-r7.js.map} +1 -1
  49. package/dist/{rehype-toc-D-eLj90w.js → rehype-toc-DVwJcwvA.js} +1 -1
  50. package/dist/{rehype-toc-D-eLj90w.js.map → rehype-toc-DVwJcwvA.js.map} +1 -1
  51. package/dist/{remark-npm-BIvIEKT2.d.ts → remark-npm-Bo08HqcQ.d.ts} +2 -2
  52. package/dist/{remark-npm-BIvIEKT2.d.ts.map → remark-npm-Bo08HqcQ.d.ts.map} +1 -1
  53. package/dist/{remark-structure-RZD2gGKp.d.ts → remark-structure-DGuWR82i.d.ts} +3 -3
  54. package/dist/{remark-structure-RZD2gGKp.d.ts.map → remark-structure-DGuWR82i.d.ts.map} +1 -1
  55. package/dist/{remove-undefined-DgDIJk1A.js → remove-undefined-Cfs4o_mM.js} +1 -1
  56. package/dist/{remove-undefined-DgDIJk1A.js.map → remove-undefined-Cfs4o_mM.js.map} +1 -1
  57. package/dist/search/algolia.d.ts +2 -2
  58. package/dist/search/client.d.ts +4 -4
  59. package/dist/search/client.js +3 -3
  60. package/dist/search/index.js +1 -1
  61. package/dist/search/orama-cloud.d.ts +1 -1
  62. package/dist/search/server.d.ts +2 -2
  63. package/dist/search/server.js +3 -3
  64. package/dist/{search-GCBSTRxD.js → search-D6ChCLhY.js} +1 -1
  65. package/dist/{search-GCBSTRxD.js.map → search-D6ChCLhY.js.map} +1 -1
  66. package/dist/{server-CPR_fgkH.d.ts → server-DmY4lGBs.d.ts} +2 -2
  67. package/dist/{server-CPR_fgkH.d.ts.map → server-DmY4lGBs.d.ts.map} +1 -1
  68. package/dist/{shiki-4oMYwHED.js → shiki-B5wNmyIZ.js} +2 -2
  69. package/dist/shiki-B5wNmyIZ.js.map +1 -0
  70. package/dist/{shiki-CIBQys54.d.ts → shiki-Dq3XIYAT.d.ts} +2 -2
  71. package/dist/{shiki-CIBQys54.d.ts.map → shiki-Dq3XIYAT.d.ts.map} +1 -1
  72. package/dist/source/client/index.d.ts +2 -2
  73. package/dist/source/client/index.d.ts.map +1 -1
  74. package/dist/source/client/index.js +2 -2
  75. package/dist/source/client/index.js.map +1 -1
  76. package/dist/source/index.js +3 -3
  77. package/dist/source/plugins/lucide-icons.js +1 -1
  78. package/dist/source/plugins/slugs.js +2 -2
  79. package/dist/source/plugins/slugs.js.map +1 -1
  80. package/dist/source/schema.js.map +1 -1
  81. package/dist/{static-vTmR4-T2.js → static-Dq8pA8Ay.js} +2 -2
  82. package/dist/{static-vTmR4-T2.js.map → static-Dq8pA8Ay.js.map} +1 -1
  83. package/dist/toc.d.ts +4 -4
  84. package/package.json +15 -15
  85. package/LICENSE +0 -21
  86. package/dist/normalize-url-DP9-1I-S.js.map +0 -1
  87. package/dist/orama-cloud-MyA-JBt1.js.map +0 -1
  88. package/dist/shiki-4oMYwHED.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orama-cloud-DH3g37zc.js","names":["list: SortedResult[]","result","params: OramaCloudSearchParams"],"sources":["../src/search/client/orama-cloud.ts"],"sourcesContent":["import type { OramaCloud, OramaCloudSearchParams } from '@orama/core';\nimport { removeUndefined } from '@/utils/remove-undefined';\nimport type { OramaIndex } from '@/search/orama-cloud';\nimport { createContentHighlighter, type SortedResult } from '@/search';\n\ninterface CrawlerIndex {\n path: string;\n title: string;\n content: string;\n section: string;\n category: string;\n}\n\nexport interface OramaCloudOptions {\n client: OramaCloud;\n /**\n * The type of your index.\n *\n * You can set it to `crawler` if you use crawler instead of the JSON index with schema provided by Hanzo Docs\n */\n index?: 'default' | 'crawler';\n params?: Partial<OramaCloudSearchParams>;\n\n /**\n * Filter results with specific tag.\n */\n tag?: string;\n\n /**\n * Filter by locale (unsupported at the moment)\n */\n locale?: string;\n}\n\nexport async function searchDocs(\n query: string,\n options: OramaCloudOptions,\n): Promise<SortedResult[]> {\n const highlighter = createContentHighlighter(query);\n const list: SortedResult[] = [];\n const { index = 'default', client, params: extraParams, tag } = options;\n\n if (index === 'crawler') {\n const result = await client.search({\n datasources: [],\n ...extraParams,\n term: query,\n where: {\n category: tag\n ? {\n eq: tag.slice(0, 1).toUpperCase() + tag.slice(1),\n }\n : undefined,\n ...extraParams?.where,\n },\n limit: 10,\n });\n if (!result) return list;\n\n for (const hit of result.hits) {\n const doc = hit.document as unknown as CrawlerIndex;\n\n list.push(\n {\n id: hit.id,\n type: 'page',\n content: doc.title,\n contentWithHighlights: highlighter.highlight(doc.title),\n url: doc.path,\n },\n {\n id: 'page' + hit.id,\n type: 'text',\n content: doc.content,\n contentWithHighlights: highlighter.highlight(doc.content),\n url: doc.path,\n },\n );\n }\n\n return list;\n }\n\n const params: OramaCloudSearchParams = {\n datasources: [],\n ...extraParams,\n term: query,\n where: removeUndefined({\n tag,\n ...extraParams?.where,\n }),\n groupBy: {\n properties: ['page_id'],\n max_results: 7,\n ...extraParams?.groupBy,\n },\n };\n\n const result = await client.search(params);\n if (!result || !result.groups) return list;\n\n for (const item of result.groups) {\n let addedHead = false;\n\n for (const hit of item.result) {\n const doc = hit.document as unknown as OramaIndex;\n\n if (!addedHead) {\n list.push({\n id: doc.page_id,\n type: 'page',\n content: doc.title,\n breadcrumbs: doc.breadcrumbs,\n contentWithHighlights: highlighter.highlight(doc.title),\n url: doc.url,\n });\n addedHead = true;\n }\n\n list.push({\n id: doc.id,\n content: doc.content,\n contentWithHighlights: highlighter.highlight(doc.content),\n type: doc.content === doc.section ? 'heading' : 'text',\n url: doc.section_id ? `${doc.url}#${doc.section_id}` : doc.url,\n });\n }\n }\n\n return list;\n}\n"],"mappings":";;;;AAkCA,eAAsB,WACpB,OACA,SACyB;CACzB,MAAM,cAAc,yBAAyB,MAAM;CACnD,MAAMA,OAAuB,EAAE;CAC/B,MAAM,EAAE,QAAQ,WAAW,QAAQ,QAAQ,aAAa,QAAQ;AAEhE,KAAI,UAAU,WAAW;EACvB,MAAMC,WAAS,MAAM,OAAO,OAAO;GACjC,aAAa,EAAE;GACf,GAAG;GACH,MAAM;GACN,OAAO;IACL,UAAU,MACN,EACE,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC,aAAa,GAAG,IAAI,MAAM,EAAE,EACjD,GACD;IACJ,GAAG,aAAa;IACjB;GACD,OAAO;GACR,CAAC;AACF,MAAI,CAACA,SAAQ,QAAO;AAEpB,OAAK,MAAM,OAAOA,SAAO,MAAM;GAC7B,MAAM,MAAM,IAAI;AAEhB,QAAK,KACH;IACE,IAAI,IAAI;IACR,MAAM;IACN,SAAS,IAAI;IACb,uBAAuB,YAAY,UAAU,IAAI,MAAM;IACvD,KAAK,IAAI;IACV,EACD;IACE,IAAI,SAAS,IAAI;IACjB,MAAM;IACN,SAAS,IAAI;IACb,uBAAuB,YAAY,UAAU,IAAI,QAAQ;IACzD,KAAK,IAAI;IACV,CACF;;AAGH,SAAO;;CAGT,MAAMC,SAAiC;EACrC,aAAa,EAAE;EACf,GAAG;EACH,MAAM;EACN,OAAO,gBAAgB;GACrB;GACA,GAAG,aAAa;GACjB,CAAC;EACF,SAAS;GACP,YAAY,CAAC,UAAU;GACvB,aAAa;GACb,GAAG,aAAa;GACjB;EACF;CAED,MAAM,SAAS,MAAM,OAAO,OAAO,OAAO;AAC1C,KAAI,CAAC,UAAU,CAAC,OAAO,OAAQ,QAAO;AAEtC,MAAK,MAAM,QAAQ,OAAO,QAAQ;EAChC,IAAI,YAAY;AAEhB,OAAK,MAAM,OAAO,KAAK,QAAQ;GAC7B,MAAM,MAAM,IAAI;AAEhB,OAAI,CAAC,WAAW;AACd,SAAK,KAAK;KACR,IAAI,IAAI;KACR,MAAM;KACN,SAAS,IAAI;KACb,aAAa,IAAI;KACjB,uBAAuB,YAAY,UAAU,IAAI,MAAM;KACvD,KAAK,IAAI;KACV,CAAC;AACF,gBAAY;;AAGd,QAAK,KAAK;IACR,IAAI,IAAI;IACR,SAAS,IAAI;IACb,uBAAuB,YAAY,UAAU,IAAI,QAAQ;IACzD,MAAM,IAAI,YAAY,IAAI,UAAU,YAAY;IAChD,KAAK,IAAI,aAAa,GAAG,IAAI,IAAI,GAAG,IAAI,eAAe,IAAI;IAC5D,CAAC;;;AAIN,QAAO"}
@@ -57,4 +57,4 @@ function slash(path) {
57
57
 
58
58
  //#endregion
59
59
  export { path_exports as a, joinPath as i, dirname as n, slash as o, extname as r, splitPath as s, basename as t };
60
- //# sourceMappingURL=path-DPJpqaLb.js.map
60
+ //# sourceMappingURL=path-DHIjrDBP.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"path-DPJpqaLb.js","names":[],"sources":["../src/source/path.ts"],"sourcesContent":["export function basename(path: string, ext?: string): string {\n const idx = path.lastIndexOf('/');\n\n return path.substring(idx === -1 ? 0 : idx + 1, ext ? path.length - ext.length : path.length);\n}\n\nexport function extname(path: string): string {\n const dotIdx = path.lastIndexOf('.');\n\n if (dotIdx !== -1) {\n return path.substring(dotIdx);\n }\n\n return '';\n}\n\nexport function dirname(path: string): string {\n return path.split('/').slice(0, -1).join('/');\n}\n/**\n * Split path into segments, trailing/leading slashes are removed\n */\nexport function splitPath(path: string): string[] {\n return path.split('/').filter((p) => p.length > 0);\n}\n\n/**\n * Resolve paths, slashes within the path will be ignored\n * @param paths - Paths to join\n * @example\n * ```\n * ['a','b'] // 'a/b'\n * ['/a'] // 'a'\n * ['a', '/b'] // 'a/b'\n * ['a', '../b/c'] // 'b/c'\n * ```\n */\nexport function joinPath(...paths: string[]): string {\n const out = [];\n const parsed = paths.flatMap(splitPath);\n\n for (const seg of parsed) {\n switch (seg) {\n case '..':\n out.pop();\n break;\n case '.':\n break;\n default:\n out.push(seg);\n }\n }\n\n return out.join('/');\n}\n\nexport function slash(path: string): string {\n const isExtendedLengthPath = path.startsWith('\\\\\\\\?\\\\');\n\n if (isExtendedLengthPath) {\n return path;\n }\n\n return path.replaceAll('\\\\', '/');\n}\n"],"mappings":";;;;;;;;;;;AAAA,SAAgB,SAAS,MAAc,KAAsB;CAC3D,MAAM,MAAM,KAAK,YAAY,IAAI;AAEjC,QAAO,KAAK,UAAU,QAAQ,KAAK,IAAI,MAAM,GAAG,MAAM,KAAK,SAAS,IAAI,SAAS,KAAK,OAAO;;AAG/F,SAAgB,QAAQ,MAAsB;CAC5C,MAAM,SAAS,KAAK,YAAY,IAAI;AAEpC,KAAI,WAAW,GACb,QAAO,KAAK,UAAU,OAAO;AAG/B,QAAO;;AAGT,SAAgB,QAAQ,MAAsB;AAC5C,QAAO,KAAK,MAAM,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI;;;;;AAK/C,SAAgB,UAAU,MAAwB;AAChD,QAAO,KAAK,MAAM,IAAI,CAAC,QAAQ,MAAM,EAAE,SAAS,EAAE;;;;;;;;;;;;;AAcpD,SAAgB,SAAS,GAAG,OAAyB;CACnD,MAAM,MAAM,EAAE;CACd,MAAM,SAAS,MAAM,QAAQ,UAAU;AAEvC,MAAK,MAAM,OAAO,OAChB,SAAQ,KAAR;EACE,KAAK;AACH,OAAI,KAAK;AACT;EACF,KAAK,IACH;EACF,QACE,KAAI,KAAK,IAAI;;AAInB,QAAO,IAAI,KAAK,IAAI;;AAGtB,SAAgB,MAAM,MAAsB;AAG1C,KAF6B,KAAK,WAAW,UAAU,CAGrD,QAAO;AAGT,QAAO,KAAK,WAAW,MAAM,IAAI"}
1
+ {"version":3,"file":"path-DHIjrDBP.js","names":[],"sources":["../src/source/path.ts"],"sourcesContent":["export function basename(path: string, ext?: string): string {\n const idx = path.lastIndexOf('/');\n\n return path.substring(idx === -1 ? 0 : idx + 1, ext ? path.length - ext.length : path.length);\n}\n\nexport function extname(path: string): string {\n const dotIdx = path.lastIndexOf('.');\n\n if (dotIdx !== -1) {\n return path.substring(dotIdx);\n }\n\n return '';\n}\n\nexport function dirname(path: string): string {\n return path.split('/').slice(0, -1).join('/');\n}\n/**\n * Split path into segments, trailing/leading slashes are removed\n */\nexport function splitPath(path: string): string[] {\n return path.split('/').filter((p) => p.length > 0);\n}\n\n/**\n * Resolve paths, slashes within the path will be ignored\n * @param paths - Paths to join\n * @example\n * ```\n * ['a','b'] // 'a/b'\n * ['/a'] // 'a'\n * ['a', '/b'] // 'a/b'\n * ['a', '../b/c'] // 'b/c'\n * ```\n */\nexport function joinPath(...paths: string[]): string {\n const out = [];\n const parsed = paths.flatMap(splitPath);\n\n for (const seg of parsed) {\n switch (seg) {\n case '..':\n out.pop();\n break;\n case '.':\n break;\n default:\n out.push(seg);\n }\n }\n\n return out.join('/');\n}\n\nexport function slash(path: string): string {\n const isExtendedLengthPath = path.startsWith('\\\\\\\\?\\\\');\n\n if (isExtendedLengthPath) {\n return path;\n }\n\n return path.replaceAll('\\\\', '/');\n}\n"],"mappings":";;;;;;;;;;;AAAA,SAAgB,SAAS,MAAc,KAAsB;CAC3D,MAAM,MAAM,KAAK,YAAY,IAAI;AAEjC,QAAO,KAAK,UAAU,QAAQ,KAAK,IAAI,MAAM,GAAG,MAAM,KAAK,SAAS,IAAI,SAAS,KAAK,OAAO;;AAG/F,SAAgB,QAAQ,MAAsB;CAC5C,MAAM,SAAS,KAAK,YAAY,IAAI;AAEpC,KAAI,WAAW,GACb,QAAO,KAAK,UAAU,OAAO;AAG/B,QAAO;;AAGT,SAAgB,QAAQ,MAAsB;AAC5C,QAAO,KAAK,MAAM,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI;;;;;AAK/C,SAAgB,UAAU,MAAwB;AAChD,QAAO,KAAK,MAAM,IAAI,CAAC,QAAQ,MAAM,EAAE,SAAS,EAAE;;;;;;;;;;;;;AAcpD,SAAgB,SAAS,GAAG,OAAyB;CACnD,MAAM,MAAM,EAAE;CACd,MAAM,SAAS,MAAM,QAAQ,UAAU;AAEvC,MAAK,MAAM,OAAO,OAChB,SAAQ,KAAR;EACE,KAAK;AACH,OAAI,KAAK;AACT;EACF,KAAK,IACH;EACF,QACE,KAAI,KAAK,IAAI;;AAInB,QAAO,IAAI,KAAK,IAAI;;AAGtB,SAAgB,MAAM,MAAsB;AAG1C,KAF6B,KAAK,WAAW,UAAU,CAGrD,QAAO;AAGT,QAAO,KAAK,WAAW,MAAM,IAAI"}
@@ -1,4 +1,4 @@
1
- import { n as getHighlighter, t as defaultThemes } from "./shiki-4oMYwHED.js";
1
+ import { n as getHighlighter, t as defaultThemes } from "./shiki-B5wNmyIZ.js";
2
2
  import { parseCodeBlockAttributes } from "./mdx-plugins/codeblock-utils.js";
3
3
  import rehypeShikiFromHighlighter from "@shikijs/rehype/core";
4
4
  import { transformerNotationDiff, transformerNotationFocus, transformerNotationHighlight, transformerNotationWordHighlight } from "@shikijs/transformers";
@@ -217,7 +217,7 @@ function transformerTab() {
217
217
  root(root) {
218
218
  const value = this.options.meta?.tab;
219
219
  if (typeof value !== "string") return root;
220
- console.warn("[Fumadocs] For `tab=\"value\" in codeblocks, please use `remarkCodeTab` plugin instead.");
220
+ console.warn("[Hanzo Docs] For `tab=\"value\" in codeblocks, please use `remarkCodeTab` plugin instead.");
221
221
  return {
222
222
  type: "root",
223
223
  children: [{
@@ -238,4 +238,4 @@ function transformerTab() {
238
238
 
239
239
  //#endregion
240
240
  export { transformerIcon as i, rehypeCodeDefaultOptions as n, transformerTab as r, rehypeCode as t };
241
- //# sourceMappingURL=rehype-code-CQDbiG8_.js.map
241
+ //# sourceMappingURL=rehype-code-sM9Tq-r7.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rehype-code-CQDbiG8_.js","names":["defaultShortcuts: Record<string, string>","defaultIcons: Record<string, CodeBlockIcon>","rehypeCodeDefaultOptions: RehypeCodeOptions","data: Record<string, unknown>","options: RehypeCodeOptions"],"sources":["../src/mdx-plugins/transformer-icon.ts","../src/mdx-plugins/rehype-code.ts"],"sourcesContent":["import { type ShikiTransformer } from 'shiki';\n\nexport type CodeBlockIcon =\n | {\n viewBox: string;\n fill: string;\n d: string;\n }\n | string;\n\nconst defaultShortcuts: Record<string, string> = {\n js: 'javascript',\n jsx: 'react',\n ts: 'typescript',\n tsx: 'react',\n 'c#': 'csharp',\n cs: 'csharp',\n gql: 'graphql',\n py: 'python',\n bash: 'shellscript',\n sh: 'shellscript',\n shell: 'shellscript',\n zsh: 'shellscript',\n 'c++': 'cpp',\n};\n\n// From https://simpleicons.org\n// Java - Not supported, https://github.com/simple-icons/simple-icons/issues/7374\nconst defaultIcons: Record<string, CodeBlockIcon> = {\n react: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M14.23 12.004a2.236 2.236 0 0 1-2.235 2.236 2.236 2.236 0 0 1-2.236-2.236 2.236 2.236 0 0 1 2.235-2.236 2.236 2.236 0 0 1 2.236 2.236zm2.648-10.69c-1.346 0-3.107.96-4.888 2.622-1.78-1.653-3.542-2.602-4.887-2.602-.41 0-.783.093-1.106.278-1.375.793-1.683 3.264-.973 6.365C1.98 8.917 0 10.42 0 12.004c0 1.59 1.99 3.097 5.043 4.03-.704 3.113-.39 5.588.988 6.38.32.187.69.275 1.102.275 1.345 0 3.107-.96 4.888-2.624 1.78 1.654 3.542 2.603 4.887 2.603.41 0 .783-.09 1.106-.275 1.374-.792 1.683-3.263.973-6.365C22.02 15.096 24 13.59 24 12.004c0-1.59-1.99-3.097-5.043-4.032.704-3.11.39-5.587-.988-6.38-.318-.184-.688-.277-1.092-.278zm-.005 1.09v.006c.225 0 .406.044.558.127.666.382.955 1.835.73 3.704-.054.46-.142.945-.25 1.44-.96-.236-2.006-.417-3.107-.534-.66-.905-1.345-1.727-2.035-2.447 1.592-1.48 3.087-2.292 4.105-2.295zm-9.77.02c1.012 0 2.514.808 4.11 2.28-.686.72-1.37 1.537-2.02 2.442-1.107.117-2.154.298-3.113.538-.112-.49-.195-.964-.254-1.42-.23-1.868.054-3.32.714-3.707.19-.09.4-.127.563-.132zm4.882 3.05c.455.468.91.992 1.36 1.564-.44-.02-.89-.034-1.345-.034-.46 0-.915.01-1.36.034.44-.572.895-1.096 1.345-1.565zM12 8.1c.74 0 1.477.034 2.202.093.406.582.802 1.203 1.183 1.86.372.64.71 1.29 1.018 1.946-.308.655-.646 1.31-1.013 1.95-.38.66-.773 1.288-1.18 1.87-.728.063-1.466.098-2.21.098-.74 0-1.477-.035-2.202-.093-.406-.582-.802-1.204-1.183-1.86-.372-.64-.71-1.29-1.018-1.946.303-.657.646-1.313 1.013-1.954.38-.66.773-1.286 1.18-1.868.728-.064 1.466-.098 2.21-.098zm-3.635.254c-.24.377-.48.763-.704 1.16-.225.39-.435.782-.635 1.174-.265-.656-.49-1.31-.676-1.947.64-.15 1.315-.283 2.015-.386zm7.26 0c.695.103 1.365.23 2.006.387-.18.632-.405 1.282-.66 1.933-.2-.39-.41-.783-.64-1.174-.225-.392-.465-.774-.705-1.146zm3.063.675c.484.15.944.317 1.375.498 1.732.74 2.852 1.708 2.852 2.476-.005.768-1.125 1.74-2.857 2.475-.42.18-.88.342-1.355.493-.28-.958-.646-1.956-1.1-2.98.45-1.017.81-2.01 1.085-2.964zm-13.395.004c.278.96.645 1.957 1.1 2.98-.45 1.017-.812 2.01-1.086 2.964-.484-.15-.944-.318-1.37-.5-1.732-.737-2.852-1.706-2.852-2.474 0-.768 1.12-1.742 2.852-2.476.42-.18.88-.342 1.356-.494zm11.678 4.28c.265.657.49 1.312.676 1.948-.64.157-1.316.29-2.016.39.24-.375.48-.762.705-1.158.225-.39.435-.788.636-1.18zm-9.945.02c.2.392.41.783.64 1.175.23.39.465.772.705 1.143-.695-.102-1.365-.23-2.006-.386.18-.63.406-1.282.66-1.933zM17.92 16.32c.112.493.2.968.254 1.423.23 1.868-.054 3.32-.714 3.708-.147.09-.338.128-.563.128-1.012 0-2.514-.807-4.11-2.28.686-.72 1.37-1.536 2.02-2.44 1.107-.118 2.154-.3 3.113-.54zm-11.83.01c.96.234 2.006.415 3.107.532.66.905 1.345 1.727 2.035 2.446-1.595 1.483-3.092 2.295-4.11 2.295-.22-.005-.406-.05-.553-.132-.666-.38-.955-1.834-.73-3.703.054-.46.142-.944.25-1.438zm4.56.64c.44.02.89.034 1.345.034.46 0 .915-.01 1.36-.034-.44.572-.895 1.095-1.345 1.565-.455-.47-.91-.993-1.36-1.565z',\n },\n vue: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M24,1.61H14.06L12,5.16,9.94,1.61H0L12,22.39ZM12,14.08,5.16,2.23H9.59L12,6.41l2.41-4.18h4.43Z',\n },\n ruby: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M20.156.083c3.033.525 3.893 2.598 3.829 4.77L24 4.822 22.635 22.71 4.89 23.926h.016C3.433 23.864.15 23.729 0 19.139l1.645-3 2.819 6.586.503 1.172 2.805-9.144-.03.007.016-.03 9.255 2.956-1.396-5.431-.99-3.9 8.82-.569-.615-.51L16.5 2.114 20.159.073l-.003.01zM0 19.089zM5.13 5.073c3.561-3.533 8.157-5.621 9.922-3.84 1.762 1.777-.105 6.105-3.673 9.636-3.563 3.532-8.103 5.734-9.864 3.957-1.766-1.777.045-6.217 3.612-9.75l.003-.003z',\n },\n zig: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'm23.53 1.02-7.686 3.45h-7.06l-2.98 3.452h7.173L.47 22.98l7.681-3.607h7.065v-.002l2.978-3.45-7.148-.001 12.482-14.9zM0 4.47v14.901h1.883l2.98-3.45H3.451v-8h.942l2.824-3.45H0zm22.117 0-2.98 3.608h1.412v7.844h-.942l-2.98 3.45H24V4.47h-1.883z',\n },\n swift: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M7.508 0c-.287 0-.573 0-.86.002-.241.002-.483.003-.724.01-.132.003-.263.009-.395.015A9.154 9.154 0 0 0 4.348.15 5.492 5.492 0 0 0 2.85.645 5.04 5.04 0 0 0 .645 2.848c-.245.48-.4.972-.495 1.5-.093.52-.122 1.05-.136 1.576a35.2 35.2 0 0 0-.012.724C0 6.935 0 7.221 0 7.508v8.984c0 .287 0 .575.002.862.002.24.005.481.012.722.014.526.043 1.057.136 1.576.095.528.25 1.02.495 1.5a5.03 5.03 0 0 0 2.205 2.203c.48.244.97.4 1.498.495.52.093 1.05.124 1.576.138.241.007.483.009.724.01.287.002.573.002.86.002h8.984c.287 0 .573 0 .86-.002.241-.001.483-.003.724-.01a10.523 10.523 0 0 0 1.578-.138 5.322 5.322 0 0 0 1.498-.495 5.035 5.035 0 0 0 2.203-2.203c.245-.48.4-.972.495-1.5.093-.52.124-1.05.138-1.576.007-.241.009-.481.01-.722.002-.287.002-.575.002-.862V7.508c0-.287 0-.573-.002-.86a33.662 33.662 0 0 0-.01-.724 10.5 10.5 0 0 0-.138-1.576 5.328 5.328 0 0 0-.495-1.5A5.039 5.039 0 0 0 21.152.645 5.32 5.32 0 0 0 19.654.15a10.493 10.493 0 0 0-1.578-.138 34.98 34.98 0 0 0-.722-.01C17.067 0 16.779 0 16.492 0H7.508zm6.035 3.41c4.114 2.47 6.545 7.162 5.549 11.131-.024.093-.05.181-.076.272l.002.001c2.062 2.538 1.5 5.258 1.236 4.745-1.072-2.086-3.066-1.568-4.088-1.043a6.803 6.803 0 0 1-.281.158l-.02.012-.002.002c-2.115 1.123-4.957 1.205-7.812-.022a12.568 12.568 0 0 1-5.64-4.838c.649.48 1.35.902 2.097 1.252 3.019 1.414 6.051 1.311 8.197-.002C9.651 12.73 7.101 9.67 5.146 7.191a10.628 10.628 0 0 1-1.005-1.384c2.34 2.142 6.038 4.83 7.365 5.576C8.69 8.408 6.208 4.743 6.324 4.86c4.436 4.47 8.528 6.996 8.528 6.996.154.085.27.154.36.213.085-.215.16-.437.224-.668.708-2.588-.09-5.548-1.893-7.992z',\n },\n prisma: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M21.8068 18.2848L13.5528.7565c-.207-.4382-.639-.7273-1.1286-.7541-.5023-.0293-.9523.213-1.2062.6253L2.266 15.1271c-.2773.4518-.2718 1.0091.0158 1.4555l4.3759 6.7786c.2608.4046.7127.6388 1.1823.6388.1332 0 .267-.0188.3987-.0577l12.7019-3.7568c.3891-.1151.7072-.3904.8737-.7553s.1633-.7828-.0075-1.1454zm-1.8481.7519L9.1814 22.2242c-.3292.0975-.6448-.1873-.5756-.5194l3.8501-18.4386c.072-.3448.5486-.3996.699-.0803l7.1288 15.138c.1344.2856-.019.6224-.325.7128z',\n },\n typescript: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M1.125 0C.502 0 0 .502 0 1.125v21.75C0 23.498.502 24 1.125 24h21.75c.623 0 1.125-.502 1.125-1.125V1.125C24 .502 23.498 0 22.875 0zm17.363 9.75c.612 0 1.154.037 1.627.111a6.38 6.38 0 0 1 1.306.34v2.458a3.95 3.95 0 0 0-.643-.361 5.093 5.093 0 0 0-.717-.26 5.453 5.453 0 0 0-1.426-.2c-.3 0-.573.028-.819.086a2.1 2.1 0 0 0-.623.242c-.17.104-.3.229-.393.374a.888.888 0 0 0-.14.49c0 .196.053.373.156.529.104.156.252.304.443.444s.423.276.696.41c.273.135.582.274.926.416.47.197.892.407 1.266.628.374.222.695.473.963.753.268.279.472.598.614.957.142.359.214.776.214 1.253 0 .657-.125 1.21-.373 1.656a3.033 3.033 0 0 1-1.012 1.085 4.38 4.38 0 0 1-1.487.596c-.566.12-1.163.18-1.79.18a9.916 9.916 0 0 1-1.84-.164 5.544 5.544 0 0 1-1.512-.493v-2.63a5.033 5.033 0 0 0 3.237 1.2c.333 0 .624-.03.872-.09.249-.06.456-.144.623-.25.166-.108.29-.234.373-.38a1.023 1.023 0 0 0-.074-1.089 2.12 2.12 0 0 0-.537-.5 5.597 5.597 0 0 0-.807-.444 27.72 27.72 0 0 0-1.007-.436c-.918-.383-1.602-.852-2.053-1.405-.45-.553-.676-1.222-.676-2.005 0-.614.123-1.141.369-1.582.246-.441.58-.804 1.004-1.089a4.494 4.494 0 0 1 1.47-.629 7.536 7.536 0 0 1 1.77-.201zm-15.113.188h9.563v2.166H9.506v9.646H6.789v-9.646H3.375z',\n },\n javascript: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M0 0h24v24H0V0zm22.034 18.276c-.175-1.095-.888-2.015-3.003-2.873-.736-.345-1.554-.585-1.797-1.14-.091-.33-.105-.51-.046-.705.15-.646.915-.84 1.515-.66.39.12.75.42.976.9 1.034-.676 1.034-.676 1.755-1.125-.27-.42-.404-.601-.586-.78-.63-.705-1.469-1.065-2.834-1.034l-.705.089c-.676.165-1.32.525-1.71 1.005-1.14 1.291-.811 3.541.569 4.471 1.365 1.02 3.361 1.244 3.616 2.205.24 1.17-.87 1.545-1.966 1.41-.811-.18-1.26-.586-1.755-1.336l-1.83 1.051c.21.48.45.689.81 1.109 1.74 1.756 6.09 1.666 6.871-1.004.029-.09.24-.705.074-1.65l.046.067zm-8.983-7.245h-2.248c0 1.938-.009 3.864-.009 5.805 0 1.232.063 2.363-.138 2.711-.33.689-1.18.601-1.566.48-.396-.196-.597-.466-.83-.855-.063-.105-.11-.196-.127-.196l-1.825 1.125c.305.63.75 1.172 1.324 1.517.855.51 2.004.675 3.207.405.783-.226 1.458-.691 1.811-1.411.51-.93.402-2.07.397-3.346.012-2.054 0-4.109 0-6.179l.004-.056z',\n },\n php: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M7.01 10.207h-.944l-.515 2.648h.838c.556 0 .97-.105 1.242-.314.272-.21.455-.559.55-1.049.092-.47.05-.802-.124-.995-.175-.193-.523-.29-1.047-.29zM12 5.688C5.373 5.688 0 8.514 0 12s5.373 6.313 12 6.313S24 15.486 24 12c0-3.486-5.373-6.312-12-6.312zm-3.26 7.451c-.261.25-.575.438-.917.551-.336.108-.765.164-1.285.164H5.357l-.327 1.681H3.652l1.23-6.326h2.65c.797 0 1.378.209 1.744.628.366.418.476 1.002.33 1.752a2.836 2.836 0 0 1-.305.847c-.143.255-.33.49-.561.703zm4.024.715l.543-2.799c.063-.318.039-.536-.068-.651-.107-.116-.336-.174-.687-.174H11.46l-.704 3.625H9.388l1.23-6.327h1.367l-.327 1.682h1.218c.767 0 1.295.134 1.586.401s.378.7.263 1.299l-.572 2.944h-1.389zm7.597-2.265a2.782 2.782 0 0 1-.305.847c-.143.255-.33.49-.561.703a2.44 2.44 0 0 1-.917.551c-.336.108-.765.164-1.286.164h-1.18l-.327 1.682h-1.378l1.23-6.326h2.649c.797 0 1.378.209 1.744.628.366.417.477 1.001.331 1.751zM17.766 10.207h-.943l-.516 2.648h.838c.557 0 .971-.105 1.242-.314.272-.21.455-.559.551-1.049.092-.47.049-.802-.125-.995s-.524-.29-1.047-.29z',\n },\n shellscript: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'm 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z',\n },\n c: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M16.5921 9.1962s-.354-3.298-3.627-3.39c-3.2741-.09-4.9552 2.474-4.9552 6.14 0 3.6651 1.858 6.5972 5.0451 6.5972 3.184 0 3.5381-3.665 3.5381-3.665l6.1041.365s.36 3.31-2.196 5.836c-2.552 2.5241-5.6901 2.9371-7.8762 2.9201-2.19-.017-5.2261.034-8.1602-2.97-2.938-3.0101-3.436-5.9302-3.436-8.8002 0-2.8701.556-6.6702 4.047-9.5502C7.444.72 9.849 0 12.254 0c10.0422 0 10.7172 9.2602 10.7172 9.2602z',\n },\n cpp: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M22.394 6c-.167-.29-.398-.543-.652-.69L12.926.22c-.509-.294-1.34-.294-1.848 0L2.26 5.31c-.508.293-.923 1.013-.923 1.6v10.18c0 .294.104.62.271.91.167.29.398.543.652.69l8.816 5.09c.508.293 1.34.293 1.848 0l8.816-5.09c.254-.147.485-.4.652-.69.167-.29.27-.616.27-.91V6.91c.003-.294-.1-.62-.268-.91zM12 19.11c-3.92 0-7.109-3.19-7.109-7.11 0-3.92 3.19-7.11 7.11-7.11a7.133 7.133 0 016.156 3.553l-3.076 1.78a3.567 3.567 0 00-3.08-1.78A3.56 3.56 0 008.444 12 3.56 3.56 0 0012 15.555a3.57 3.57 0 003.08-1.778l3.078 1.78A7.135 7.135 0 0112 19.11zm7.11-6.715h-.79v.79h-.79v-.79h-.79v-.79h.79v-.79h.79v.79h.79zm2.962 0h-.79v.79h-.79v-.79h-.79v-.79h.79v-.79h.79v.79h.79z',\n },\n go: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M1.811 10.231c-.047 0-.058-.023-.035-.059l.246-.315c.023-.035.081-.058.128-.058h4.172c.046 0 .058.035.035.07l-.199.303c-.023.036-.082.07-.117.07zM.047 11.306c-.047 0-.059-.023-.035-.058l.245-.316c.023-.035.082-.058.129-.058h5.328c.047 0 .07.035.058.07l-.093.28c-.012.047-.058.07-.105.07zm2.828 1.075c-.047 0-.059-.035-.035-.07l.163-.292c.023-.035.07-.07.117-.07h2.337c.047 0 .07.035.07.082l-.023.28c0 .047-.047.082-.082.082zm12.129-2.36c-.736.187-1.239.327-1.963.514-.176.046-.187.058-.34-.117-.174-.199-.303-.327-.548-.444-.737-.362-1.45-.257-2.115.175-.795.514-1.204 1.274-1.192 2.22.011.935.654 1.706 1.577 1.835.795.105 1.46-.175 1.987-.77.105-.13.198-.27.315-.434H10.47c-.245 0-.304-.152-.222-.35.152-.362.432-.97.596-1.274a.315.315 0 01.292-.187h4.253c-.023.316-.023.631-.07.947a4.983 4.983 0 01-.958 2.29c-.841 1.11-1.94 1.8-3.33 1.986-1.145.152-2.209-.07-3.143-.77-.865-.655-1.356-1.52-1.484-2.595-.152-1.274.222-2.419.993-3.424.83-1.086 1.928-1.776 3.272-2.02 1.098-.2 2.15-.07 3.096.571.62.41 1.063.97 1.356 1.648.07.105.023.164-.117.2m3.868 6.461c-1.064-.024-2.034-.328-2.852-1.029a3.665 3.665 0 01-1.262-2.255c-.21-1.32.152-2.489.947-3.529.853-1.122 1.881-1.706 3.272-1.95 1.192-.21 2.314-.095 3.33.595.923.63 1.496 1.484 1.648 2.605.198 1.578-.257 2.863-1.344 3.962-.771.783-1.718 1.273-2.805 1.495-.315.06-.63.07-.934.106zm2.78-4.72c-.011-.153-.011-.27-.034-.387-.21-1.157-1.274-1.81-2.384-1.554-1.087.245-1.788.935-2.045 2.033-.21.912.234 1.835 1.075 2.21.643.28 1.285.244 1.905-.07.923-.48 1.425-1.228 1.484-2.233z',\n },\n graphql: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M12.002 0a2.138 2.138 0 1 0 0 4.277 2.138 2.138 0 1 0 0-4.277zm8.54 4.931a2.138 2.138 0 1 0 0 4.277 2.138 2.138 0 1 0 0-4.277zm0 9.862a2.138 2.138 0 1 0 0 4.277 2.138 2.138 0 1 0 0-4.277zm-8.54 4.931a2.138 2.138 0 1 0 0 4.276 2.138 2.138 0 1 0 0-4.276zm-8.542-4.93a2.138 2.138 0 1 0 0 4.276 2.138 2.138 0 1 0 0-4.277zm0-9.863a2.138 2.138 0 1 0 0 4.277 2.138 2.138 0 1 0 0-4.277zm8.542-3.378L2.953 6.777v10.448l9.049 5.224 9.047-5.224V6.777zm0 1.601 7.66 13.27H4.34zm-1.387.371L3.97 15.037V7.363zm2.774 0 6.646 3.838v7.674zM5.355 17.44h13.293l-6.646 3.836z',\n },\n python: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M14.25.18l.9.2.73.26.59.3.45.32.34.34.25.34.16.33.1.3.04.26.02.2-.01.13V8.5l-.05.63-.13.55-.21.46-.26.38-.3.31-.33.25-.35.19-.35.14-.33.1-.3.07-.26.04-.21.02H8.77l-.69.05-.59.14-.5.22-.41.27-.33.32-.27.35-.2.36-.15.37-.1.35-.07.32-.04.27-.02.21v3.06H3.17l-.21-.03-.28-.07-.32-.12-.35-.18-.36-.26-.36-.36-.35-.46-.32-.59-.28-.73-.21-.88-.14-1.05-.05-1.23.06-1.22.16-1.04.24-.87.32-.71.36-.57.4-.44.42-.33.42-.24.4-.16.36-.1.32-.05.24-.01h.16l.06.01h8.16v-.83H6.18l-.01-2.75-.02-.37.05-.34.11-.31.17-.28.25-.26.31-.23.38-.2.44-.18.51-.15.58-.12.64-.1.71-.06.77-.04.84-.02 1.27.05zm-6.3 1.98l-.23.33-.08.41.08.41.23.34.33.22.41.09.41-.09.33-.22.23-.34.08-.41-.08-.41-.23-.33-.33-.22-.41-.09-.41.09zm13.09 3.95l.28.06.32.12.35.18.36.27.36.35.35.47.32.59.28.73.21.88.14 1.04.05 1.23-.06 1.23-.16 1.04-.24.86-.32.71-.36.57-.4.45-.42.33-.42.24-.4.16-.36.09-.32.05-.24.02-.16-.01h-8.22v.82h5.84l.01 2.76.02.36-.05.34-.11.31-.17.29-.25.25-.31.24-.38.2-.44.17-.51.15-.58.13-.64.09-.71.07-.77.04-.84.01-1.27-.04-1.07-.14-.9-.2-.73-.25-.59-.3-.45-.33-.34-.34-.25-.34-.16-.33-.1-.3-.04-.25-.02-.2.01-.13v-5.34l.05-.64.13-.54.21-.46.26-.38.3-.32.33-.24.35-.2.35-.14.33-.1.3-.06.26-.04.21-.02.13-.01h5.84l.69-.05.59-.14.5-.21.41-.28.33-.32.27-.35.2-.36.15-.36.1-.35.07-.32.04-.28.02-.21V6.07h2.09l.14.01zm-6.47 14.25l-.23.33-.08.41.08.41.23.33.33.23.41.08.41-.08.33-.23.23-.33.08-.41-.08-.41-.23-.33-.33-.23-.41-.08-.41.08z',\n },\n md: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M22.27 19.385H1.73A1.73 1.73 0 010 17.655V6.345a1.73 1.73 0 011.73-1.73h20.54A1.73 1.73 0 0124 6.345v11.308a1.73 1.73 0 01-1.73 1.731zM5.769 15.923v-4.5l2.308 2.885 2.307-2.885v4.5h2.308V8.078h-2.308l-2.307 2.885-2.308-2.885H3.46v7.847zM21.232 12h-2.309V8.077h-2.307V12h-2.308l3.461 4.039z',\n },\n kotlin: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M24 24H0V0h24L12 12Z',\n },\n rust: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M23.8346 11.7033l-1.0073-.6236a13.7268 13.7268 0 00-.0283-.2936l.8656-.8069a.3483.3483 0 00-.1154-.578l-1.1066-.414a8.4958 8.4958 0 00-.087-.2856l.6904-.9587a.3462.3462 0 00-.2257-.5446l-1.1663-.1894a9.3574 9.3574 0 00-.1407-.2622l.49-1.0761a.3437.3437 0 00-.0274-.3361.3486.3486 0 00-.3006-.154l-1.1845.0416a6.7444 6.7444 0 00-.1873-.2268l.2723-1.153a.3472.3472 0 00-.417-.4172l-1.1532.2724a14.0183 14.0183 0 00-.2278-.1873l.0415-1.1845a.3442.3442 0 00-.49-.328l-1.076.491c-.0872-.0476-.1742-.0952-.2623-.1407l-.1903-1.1673A.3483.3483 0 0016.256.955l-.9597.6905a8.4867 8.4867 0 00-.2855-.086l-.414-1.1066a.3483.3483 0 00-.5781-.1154l-.8069.8666a9.2936 9.2936 0 00-.2936-.0284L12.2946.1683a.3462.3462 0 00-.5892 0l-.6236 1.0073a13.7383 13.7383 0 00-.2936.0284L9.9803.3374a.3462.3462 0 00-.578.1154l-.4141 1.1065c-.0962.0274-.1903.0567-.2855.086L7.744.955a.3483.3483 0 00-.5447.2258L7.009 2.348a9.3574 9.3574 0 00-.2622.1407l-1.0762-.491a.3462.3462 0 00-.49.328l.0416 1.1845a7.9826 7.9826 0 00-.2278.1873L3.8413 3.425a.3472.3472 0 00-.4171.4171l.2713 1.1531c-.0628.075-.1255.1509-.1863.2268l-1.1845-.0415a.3462.3462 0 00-.328.49l.491 1.0761a9.167 9.167 0 00-.1407.2622l-1.1662.1894a.3483.3483 0 00-.2258.5446l.6904.9587a13.303 13.303 0 00-.087.2855l-1.1065.414a.3483.3483 0 00-.1155.5781l.8656.807a9.2936 9.2936 0 00-.0283.2935l-1.0073.6236a.3442.3442 0 000 .5892l1.0073.6236c.008.0982.0182.1964.0283.2936l-.8656.8079a.3462.3462 0 00.1155.578l1.1065.4141c.0273.0962.0567.1914.087.2855l-.6904.9587a.3452.3452 0 00.2268.5447l1.1662.1893c.0456.088.0922.1751.1408.2622l-.491 1.0762a.3462.3462 0 00.328.49l1.1834-.0415c.0618.0769.1235.1528.1873.2277l-.2713 1.1541a.3462.3462 0 00.4171.4161l1.153-.2713c.075.0638.151.1255.2279.1863l-.0415 1.1845a.3442.3442 0 00.49.327l1.0761-.49c.087.0486.1741.0951.2622.1407l.1903 1.1662a.3483.3483 0 00.5447.2268l.9587-.6904a9.299 9.299 0 00.2855.087l.414 1.1066a.3452.3452 0 00.5781.1154l.8079-.8656c.0972.0111.1954.0203.2936.0294l.6236 1.0073a.3472.3472 0 00.5892 0l.6236-1.0073c.0982-.0091.1964-.0183.2936-.0294l.8069.8656a.3483.3483 0 00.578-.1154l.4141-1.1066a8.4626 8.4626 0 00.2855-.087l.9587.6904a.3452.3452 0 00.5447-.2268l.1903-1.1662c.088-.0456.1751-.0931.2622-.1407l1.0762.49a.3472.3472 0 00.49-.327l-.0415-1.1845a6.7267 6.7267 0 00.2267-.1863l1.1531.2713a.3472.3472 0 00.4171-.416l-.2713-1.1542c.0628-.0749.1255-.1508.1863-.2278l1.1845.0415a.3442.3442 0 00.328-.49l-.49-1.076c.0475-.0872.0951-.1742.1407-.2623l1.1662-.1893a.3483.3483 0 00.2258-.5447l-.6904-.9587.087-.2855 1.1066-.414a.3462.3462 0 00.1154-.5781l-.8656-.8079c.0101-.0972.0202-.1954.0283-.2936l1.0073-.6236a.3442.3442 0 000-.5892zm-6.7413 8.3551a.7138.7138 0 01.2986-1.396.714.714 0 11-.2997 1.396zm-.3422-2.3142a.649.649 0 00-.7715.5l-.3573 1.6685c-1.1035.501-2.3285.7795-3.6193.7795a8.7368 8.7368 0 01-3.6951-.814l-.3574-1.6684a.648.648 0 00-.7714-.499l-1.473.3158a8.7216 8.7216 0 01-.7613-.898h7.1676c.081 0 .1356-.0141.1356-.088v-2.536c0-.074-.0536-.0881-.1356-.0881h-2.0966v-1.6077h2.2677c.2065 0 1.1065.0587 1.394 1.2088.0901.3533.2875 1.5044.4232 1.8729.1346.413.6833 1.2381 1.2685 1.2381h3.5716a.7492.7492 0 00.1296-.0131 8.7874 8.7874 0 01-.8119.9526zM6.8369 20.024a.714.714 0 11-.2997-1.396.714.714 0 01.2997 1.396zM4.1177 8.9972a.7137.7137 0 11-1.304.5791.7137.7137 0 011.304-.579zm-.8352 1.9813l1.5347-.6824a.65.65 0 00.33-.8585l-.3158-.7147h1.2432v5.6025H3.5669a8.7753 8.7753 0 01-.2834-3.348zm6.7343-.5437V8.7836h2.9601c.153 0 1.0792.1772 1.0792.8697 0 .575-.7107.7815-1.2948.7815zm10.7574 1.4862c0 .2187-.008.4363-.0243.651h-.9c-.09 0-.1265.0586-.1265.1477v.413c0 .973-.5487 1.1846-1.0296 1.2382-.4576.0517-.9648-.1913-1.0275-.4717-.2704-1.5186-.7198-1.8436-1.4305-2.4034.8817-.5599 1.799-1.386 1.799-2.4915 0-1.1936-.819-1.9458-1.3769-2.3153-.7825-.5163-1.6491-.6195-1.883-.6195H5.4682a8.7651 8.7651 0 014.907-2.7699l1.0974 1.151a.648.648 0 00.9182.0213l1.227-1.1743a8.7753 8.7753 0 016.0044 4.2762l-.8403 1.8982a.652.652 0 00.33.8585l1.6178.7188c.0283.2875.0425.577.0425.8717zm-9.3006-9.5993a.7128.7128 0 11.984 1.0316.7137.7137 0 01-.984-1.0316zm8.3389 6.71a.7107.7107 0 01.9395-.3625.7137.7137 0 11-.9405.3635z',\n },\n csharp: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M1.194 7.543v8.913c0 1.103.588 2.122 1.544 2.674l7.718 4.456a3.086 3.086 0 0 0 3.088 0l7.718-4.456a3.087 3.087 0 0 0 1.544-2.674V7.543a3.084 3.084 0 0 0-1.544-2.673L13.544.414a3.086 3.086 0 0 0-3.088 0L2.738 4.87a3.085 3.085 0 0 0-1.544 2.673Zm5.403 2.914v3.087a.77.77 0 0 0 .772.772.773.773 0 0 0 .772-.772.773.773 0 0 1 1.317-.546.775.775 0 0 1 .226.546 2.314 2.314 0 1 1-4.631 0v-3.087c0-.615.244-1.203.679-1.637a2.312 2.312 0 0 1 3.274 0c.434.434.678 1.023.678 1.637a.769.769 0 0 1-.226.545.767.767 0 0 1-1.091 0 .77.77 0 0 1-.226-.545.77.77 0 0 0-.772-.772.771.771 0 0 0-.772.772Zm12.35 3.087a.77.77 0 0 1-.772.772h-.772v.772a.773.773 0 0 1-1.544 0v-.772h-1.544v.772a.773.773 0 0 1-1.317.546.775.775 0 0 1-.226-.546v-.772H12a.771.771 0 1 1 0-1.544h.772v-1.543H12a.77.77 0 1 1 0-1.544h.772v-.772a.773.773 0 0 1 1.317-.546.775.775 0 0 1 .226.546v.772h1.544v-.772a.773.773 0 0 1 1.544 0v.772h.772a.772.772 0 0 1 0 1.544h-.772v1.543h.772a.776.776 0 0 1 .772.772Zm-3.088-2.315h-1.544v1.543h1.544v-1.543Z',\n },\n default: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M 6,1 C 4.354992,1 3,2.354992 3,4 v 16 c 0,1.645008 1.354992,3 3,3 h 12 c 1.645008,0 3,-1.354992 3,-3 V 8 7 A 1.0001,1.0001 0 0 0 20.707031,6.2929687 l -5,-5 A 1.0001,1.0001 0 0 0 15,1 h -1 z m 0,2 h 7 v 3 c 0,1.645008 1.354992,3 3,3 h 3 v 11 c 0,0.564129 -0.435871,1 -1,1 H 6 C 5.4358712,21 5,20.564129 5,20 V 4 C 5,3.4358712 5.4358712,3 6,3 Z M 15,3.4140625 18.585937,7 H 16 C 15.435871,7 15,6.5641288 15,6 Z',\n },\n};\n\nexport interface IconOptions {\n shortcuts?: Record<string, string>;\n extend?: Record<string, CodeBlockIcon>;\n}\n\n/**\n * Inject icons to `icon` property (as HTML)\n */\nexport function transformerIcon(options: IconOptions = {}): ShikiTransformer {\n const shortcuts = {\n ...defaultShortcuts,\n ...options.shortcuts,\n };\n const icons = {\n ...defaultIcons,\n ...options.extend,\n };\n\n const defaultIcon = 'default' in icons ? icons.default : undefined;\n return {\n name: 'rehype-code:icon',\n pre(pre) {\n const lang = this.options.lang;\n if (!lang) return;\n\n const iconName = lang in shortcuts ? shortcuts[lang] : lang;\n const icon = iconName in icons ? icons[iconName] : defaultIcon;\n\n if (icon) {\n pre.properties.icon =\n typeof icon === 'string'\n ? icon\n : `<svg viewBox=\"${icon.viewBox}\"><path d=\"${icon.d}\" fill=\"${icon.fill}\" /></svg>`;\n }\n\n return pre;\n },\n };\n}\n","import type { Root } from 'hast';\nimport type { RehypeShikiOptions } from '@shikijs/rehype';\nimport rehypeShikiFromHighlighter from '@shikijs/rehype/core';\nimport {\n transformerNotationDiff,\n transformerNotationFocus,\n transformerNotationHighlight,\n transformerNotationWordHighlight,\n} from '@shikijs/transformers';\nimport type { Processor, Transformer } from 'unified';\nimport { type BuiltinTheme, bundledLanguages, type ShikiTransformer } from 'shiki';\nimport type { MdxJsxFlowElement } from 'mdast-util-mdx-jsx';\nimport type { CodeBlockIcon, IconOptions } from './transformer-icon';\nimport { transformerIcon } from './transformer-icon';\nimport { defaultThemes, getHighlighter } from '@/highlight/shiki';\nimport { parseCodeBlockAttributes } from '@/mdx-plugins/codeblock-utils';\n\nexport const rehypeCodeDefaultOptions: RehypeCodeOptions = {\n lazy: true,\n themes: defaultThemes,\n defaultColor: false,\n defaultLanguage: 'plaintext',\n engine: 'js',\n transformers: [\n transformerNotationHighlight({\n matchAlgorithm: 'v3',\n }),\n transformerNotationWordHighlight({\n matchAlgorithm: 'v3',\n }),\n transformerNotationDiff({\n matchAlgorithm: 'v3',\n }),\n transformerNotationFocus({\n matchAlgorithm: 'v3',\n }),\n ],\n parseMetaString(meta) {\n const parsed = parseCodeBlockAttributes(meta, ['title', 'tab']);\n const data: Record<string, unknown> = parsed.attributes;\n parsed.rest = parseLineNumber(parsed.rest, data);\n\n data.__parsed_raw = parsed.rest;\n return data;\n },\n};\n\nfunction parseLineNumber(str: string, data: Record<string, unknown>) {\n return str.replace(/lineNumbers=(\\d+)|lineNumbers/, (_, ...args) => {\n data['data-line-numbers'] = true;\n\n if (args[0] !== undefined) data['data-line-numbers-start'] = Number(args[0]);\n\n return '';\n });\n}\n\ntype DistributiveOmit<T, K extends keyof T> = T extends unknown ? Omit<T, K> : never;\n\nexport type RehypeCodeOptions = DistributiveOmit<RehypeShikiOptions, 'lazy'> & {\n /**\n * Load languages and themes on-demand.\n * @defaultValue true\n */\n lazy?: boolean;\n\n /**\n * The regex engine to use.\n *\n * @defaultValue 'js'\n */\n engine?: 'js' | 'oniguruma';\n\n /**\n * Filter meta string before processing\n */\n filterMetaString?: (metaString: string) => string;\n\n /**\n * Add icon to code blocks\n */\n icon?: IconOptions | false;\n\n /**\n * Wrap code blocks in `<Tab>` component when \"tab\" meta string presents\n *\n * @defaultValue true\n */\n tab?: boolean;\n};\n\n/**\n * Handle codeblocks\n */\nexport function rehypeCode(\n this: Processor,\n _options: Partial<RehypeCodeOptions> = {},\n): Transformer<Root, Root> {\n const options: RehypeCodeOptions = {\n ...rehypeCodeDefaultOptions,\n ..._options,\n };\n\n const transformers = [...(options.transformers ?? [])];\n transformers.unshift({\n name: 'rehype-code:pre-process',\n preprocess(code, { meta }) {\n if (meta && '__parsed_raw' in meta) {\n meta.__raw = meta.__parsed_raw;\n delete meta.__parsed_raw;\n }\n\n if (meta && options.filterMetaString) {\n meta.__raw = options.filterMetaString(meta.__raw ?? '');\n }\n\n // Remove empty line at end\n return code.replace(/\\n$/, '');\n },\n });\n\n if (options.icon !== false) {\n transformers.push(transformerIcon(options.icon));\n }\n\n if (options.tab !== false) {\n transformers.push(transformerTab());\n }\n\n const highlighter = getHighlighter(options.engine ?? 'js', {\n themes:\n 'themes' in options\n ? (Object.values(options.themes).filter(Boolean) as BuiltinTheme[])\n : [options.theme],\n langs: options.langs ?? (options.lazy ? ['ts', 'tsx'] : Object.keys(bundledLanguages)),\n langAlias: options.langAlias,\n });\n\n const transformer = highlighter.then((loaded) =>\n rehypeShikiFromHighlighter(loaded, {\n ...options,\n transformers,\n }),\n );\n\n return async (tree, file) => {\n await (\n await transformer\n )(tree, file, () => {\n // nothing\n });\n };\n}\n\nfunction transformerTab(): ShikiTransformer {\n return {\n name: 'rehype-code:tab',\n // @ts-expect-error -- types not compatible with MDX\n root(root) {\n const value = this.options.meta?.tab;\n if (typeof value !== 'string') return root;\n console.warn(\n '[Fumadocs] For `tab=\"value\" in codeblocks, please use `remarkCodeTab` plugin instead.',\n );\n\n return {\n type: 'root',\n children: [\n {\n type: 'mdxJsxFlowElement',\n name: 'Tab',\n data: {\n _codeblock: true,\n },\n attributes: [{ type: 'mdxJsxAttribute', name: 'value', value }],\n children: root.children,\n } as MdxJsxFlowElement,\n ],\n };\n },\n };\n}\n\nexport { type CodeBlockIcon, transformerIcon, transformerTab };\n"],"mappings":"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"}
1
+ {"version":3,"file":"rehype-code-sM9Tq-r7.js","names":["defaultShortcuts: Record<string, string>","defaultIcons: Record<string, CodeBlockIcon>","rehypeCodeDefaultOptions: RehypeCodeOptions","data: Record<string, unknown>","options: RehypeCodeOptions"],"sources":["../src/mdx-plugins/transformer-icon.ts","../src/mdx-plugins/rehype-code.ts"],"sourcesContent":["import { type ShikiTransformer } from 'shiki';\n\nexport type CodeBlockIcon =\n | {\n viewBox: string;\n fill: string;\n d: string;\n }\n | string;\n\nconst defaultShortcuts: Record<string, string> = {\n js: 'javascript',\n jsx: 'react',\n ts: 'typescript',\n tsx: 'react',\n 'c#': 'csharp',\n cs: 'csharp',\n gql: 'graphql',\n py: 'python',\n bash: 'shellscript',\n sh: 'shellscript',\n shell: 'shellscript',\n zsh: 'shellscript',\n 'c++': 'cpp',\n};\n\n// From https://simpleicons.org\n// Java - Not supported, https://github.com/simple-icons/simple-icons/issues/7374\nconst defaultIcons: Record<string, CodeBlockIcon> = {\n react: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M14.23 12.004a2.236 2.236 0 0 1-2.235 2.236 2.236 2.236 0 0 1-2.236-2.236 2.236 2.236 0 0 1 2.235-2.236 2.236 2.236 0 0 1 2.236 2.236zm2.648-10.69c-1.346 0-3.107.96-4.888 2.622-1.78-1.653-3.542-2.602-4.887-2.602-.41 0-.783.093-1.106.278-1.375.793-1.683 3.264-.973 6.365C1.98 8.917 0 10.42 0 12.004c0 1.59 1.99 3.097 5.043 4.03-.704 3.113-.39 5.588.988 6.38.32.187.69.275 1.102.275 1.345 0 3.107-.96 4.888-2.624 1.78 1.654 3.542 2.603 4.887 2.603.41 0 .783-.09 1.106-.275 1.374-.792 1.683-3.263.973-6.365C22.02 15.096 24 13.59 24 12.004c0-1.59-1.99-3.097-5.043-4.032.704-3.11.39-5.587-.988-6.38-.318-.184-.688-.277-1.092-.278zm-.005 1.09v.006c.225 0 .406.044.558.127.666.382.955 1.835.73 3.704-.054.46-.142.945-.25 1.44-.96-.236-2.006-.417-3.107-.534-.66-.905-1.345-1.727-2.035-2.447 1.592-1.48 3.087-2.292 4.105-2.295zm-9.77.02c1.012 0 2.514.808 4.11 2.28-.686.72-1.37 1.537-2.02 2.442-1.107.117-2.154.298-3.113.538-.112-.49-.195-.964-.254-1.42-.23-1.868.054-3.32.714-3.707.19-.09.4-.127.563-.132zm4.882 3.05c.455.468.91.992 1.36 1.564-.44-.02-.89-.034-1.345-.034-.46 0-.915.01-1.36.034.44-.572.895-1.096 1.345-1.565zM12 8.1c.74 0 1.477.034 2.202.093.406.582.802 1.203 1.183 1.86.372.64.71 1.29 1.018 1.946-.308.655-.646 1.31-1.013 1.95-.38.66-.773 1.288-1.18 1.87-.728.063-1.466.098-2.21.098-.74 0-1.477-.035-2.202-.093-.406-.582-.802-1.204-1.183-1.86-.372-.64-.71-1.29-1.018-1.946.303-.657.646-1.313 1.013-1.954.38-.66.773-1.286 1.18-1.868.728-.064 1.466-.098 2.21-.098zm-3.635.254c-.24.377-.48.763-.704 1.16-.225.39-.435.782-.635 1.174-.265-.656-.49-1.31-.676-1.947.64-.15 1.315-.283 2.015-.386zm7.26 0c.695.103 1.365.23 2.006.387-.18.632-.405 1.282-.66 1.933-.2-.39-.41-.783-.64-1.174-.225-.392-.465-.774-.705-1.146zm3.063.675c.484.15.944.317 1.375.498 1.732.74 2.852 1.708 2.852 2.476-.005.768-1.125 1.74-2.857 2.475-.42.18-.88.342-1.355.493-.28-.958-.646-1.956-1.1-2.98.45-1.017.81-2.01 1.085-2.964zm-13.395.004c.278.96.645 1.957 1.1 2.98-.45 1.017-.812 2.01-1.086 2.964-.484-.15-.944-.318-1.37-.5-1.732-.737-2.852-1.706-2.852-2.474 0-.768 1.12-1.742 2.852-2.476.42-.18.88-.342 1.356-.494zm11.678 4.28c.265.657.49 1.312.676 1.948-.64.157-1.316.29-2.016.39.24-.375.48-.762.705-1.158.225-.39.435-.788.636-1.18zm-9.945.02c.2.392.41.783.64 1.175.23.39.465.772.705 1.143-.695-.102-1.365-.23-2.006-.386.18-.63.406-1.282.66-1.933zM17.92 16.32c.112.493.2.968.254 1.423.23 1.868-.054 3.32-.714 3.708-.147.09-.338.128-.563.128-1.012 0-2.514-.807-4.11-2.28.686-.72 1.37-1.536 2.02-2.44 1.107-.118 2.154-.3 3.113-.54zm-11.83.01c.96.234 2.006.415 3.107.532.66.905 1.345 1.727 2.035 2.446-1.595 1.483-3.092 2.295-4.11 2.295-.22-.005-.406-.05-.553-.132-.666-.38-.955-1.834-.73-3.703.054-.46.142-.944.25-1.438zm4.56.64c.44.02.89.034 1.345.034.46 0 .915-.01 1.36-.034-.44.572-.895 1.095-1.345 1.565-.455-.47-.91-.993-1.36-1.565z',\n },\n vue: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M24,1.61H14.06L12,5.16,9.94,1.61H0L12,22.39ZM12,14.08,5.16,2.23H9.59L12,6.41l2.41-4.18h4.43Z',\n },\n ruby: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M20.156.083c3.033.525 3.893 2.598 3.829 4.77L24 4.822 22.635 22.71 4.89 23.926h.016C3.433 23.864.15 23.729 0 19.139l1.645-3 2.819 6.586.503 1.172 2.805-9.144-.03.007.016-.03 9.255 2.956-1.396-5.431-.99-3.9 8.82-.569-.615-.51L16.5 2.114 20.159.073l-.003.01zM0 19.089zM5.13 5.073c3.561-3.533 8.157-5.621 9.922-3.84 1.762 1.777-.105 6.105-3.673 9.636-3.563 3.532-8.103 5.734-9.864 3.957-1.766-1.777.045-6.217 3.612-9.75l.003-.003z',\n },\n zig: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'm23.53 1.02-7.686 3.45h-7.06l-2.98 3.452h7.173L.47 22.98l7.681-3.607h7.065v-.002l2.978-3.45-7.148-.001 12.482-14.9zM0 4.47v14.901h1.883l2.98-3.45H3.451v-8h.942l2.824-3.45H0zm22.117 0-2.98 3.608h1.412v7.844h-.942l-2.98 3.45H24V4.47h-1.883z',\n },\n swift: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M7.508 0c-.287 0-.573 0-.86.002-.241.002-.483.003-.724.01-.132.003-.263.009-.395.015A9.154 9.154 0 0 0 4.348.15 5.492 5.492 0 0 0 2.85.645 5.04 5.04 0 0 0 .645 2.848c-.245.48-.4.972-.495 1.5-.093.52-.122 1.05-.136 1.576a35.2 35.2 0 0 0-.012.724C0 6.935 0 7.221 0 7.508v8.984c0 .287 0 .575.002.862.002.24.005.481.012.722.014.526.043 1.057.136 1.576.095.528.25 1.02.495 1.5a5.03 5.03 0 0 0 2.205 2.203c.48.244.97.4 1.498.495.52.093 1.05.124 1.576.138.241.007.483.009.724.01.287.002.573.002.86.002h8.984c.287 0 .573 0 .86-.002.241-.001.483-.003.724-.01a10.523 10.523 0 0 0 1.578-.138 5.322 5.322 0 0 0 1.498-.495 5.035 5.035 0 0 0 2.203-2.203c.245-.48.4-.972.495-1.5.093-.52.124-1.05.138-1.576.007-.241.009-.481.01-.722.002-.287.002-.575.002-.862V7.508c0-.287 0-.573-.002-.86a33.662 33.662 0 0 0-.01-.724 10.5 10.5 0 0 0-.138-1.576 5.328 5.328 0 0 0-.495-1.5A5.039 5.039 0 0 0 21.152.645 5.32 5.32 0 0 0 19.654.15a10.493 10.493 0 0 0-1.578-.138 34.98 34.98 0 0 0-.722-.01C17.067 0 16.779 0 16.492 0H7.508zm6.035 3.41c4.114 2.47 6.545 7.162 5.549 11.131-.024.093-.05.181-.076.272l.002.001c2.062 2.538 1.5 5.258 1.236 4.745-1.072-2.086-3.066-1.568-4.088-1.043a6.803 6.803 0 0 1-.281.158l-.02.012-.002.002c-2.115 1.123-4.957 1.205-7.812-.022a12.568 12.568 0 0 1-5.64-4.838c.649.48 1.35.902 2.097 1.252 3.019 1.414 6.051 1.311 8.197-.002C9.651 12.73 7.101 9.67 5.146 7.191a10.628 10.628 0 0 1-1.005-1.384c2.34 2.142 6.038 4.83 7.365 5.576C8.69 8.408 6.208 4.743 6.324 4.86c4.436 4.47 8.528 6.996 8.528 6.996.154.085.27.154.36.213.085-.215.16-.437.224-.668.708-2.588-.09-5.548-1.893-7.992z',\n },\n prisma: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M21.8068 18.2848L13.5528.7565c-.207-.4382-.639-.7273-1.1286-.7541-.5023-.0293-.9523.213-1.2062.6253L2.266 15.1271c-.2773.4518-.2718 1.0091.0158 1.4555l4.3759 6.7786c.2608.4046.7127.6388 1.1823.6388.1332 0 .267-.0188.3987-.0577l12.7019-3.7568c.3891-.1151.7072-.3904.8737-.7553s.1633-.7828-.0075-1.1454zm-1.8481.7519L9.1814 22.2242c-.3292.0975-.6448-.1873-.5756-.5194l3.8501-18.4386c.072-.3448.5486-.3996.699-.0803l7.1288 15.138c.1344.2856-.019.6224-.325.7128z',\n },\n typescript: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M1.125 0C.502 0 0 .502 0 1.125v21.75C0 23.498.502 24 1.125 24h21.75c.623 0 1.125-.502 1.125-1.125V1.125C24 .502 23.498 0 22.875 0zm17.363 9.75c.612 0 1.154.037 1.627.111a6.38 6.38 0 0 1 1.306.34v2.458a3.95 3.95 0 0 0-.643-.361 5.093 5.093 0 0 0-.717-.26 5.453 5.453 0 0 0-1.426-.2c-.3 0-.573.028-.819.086a2.1 2.1 0 0 0-.623.242c-.17.104-.3.229-.393.374a.888.888 0 0 0-.14.49c0 .196.053.373.156.529.104.156.252.304.443.444s.423.276.696.41c.273.135.582.274.926.416.47.197.892.407 1.266.628.374.222.695.473.963.753.268.279.472.598.614.957.142.359.214.776.214 1.253 0 .657-.125 1.21-.373 1.656a3.033 3.033 0 0 1-1.012 1.085 4.38 4.38 0 0 1-1.487.596c-.566.12-1.163.18-1.79.18a9.916 9.916 0 0 1-1.84-.164 5.544 5.544 0 0 1-1.512-.493v-2.63a5.033 5.033 0 0 0 3.237 1.2c.333 0 .624-.03.872-.09.249-.06.456-.144.623-.25.166-.108.29-.234.373-.38a1.023 1.023 0 0 0-.074-1.089 2.12 2.12 0 0 0-.537-.5 5.597 5.597 0 0 0-.807-.444 27.72 27.72 0 0 0-1.007-.436c-.918-.383-1.602-.852-2.053-1.405-.45-.553-.676-1.222-.676-2.005 0-.614.123-1.141.369-1.582.246-.441.58-.804 1.004-1.089a4.494 4.494 0 0 1 1.47-.629 7.536 7.536 0 0 1 1.77-.201zm-15.113.188h9.563v2.166H9.506v9.646H6.789v-9.646H3.375z',\n },\n javascript: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M0 0h24v24H0V0zm22.034 18.276c-.175-1.095-.888-2.015-3.003-2.873-.736-.345-1.554-.585-1.797-1.14-.091-.33-.105-.51-.046-.705.15-.646.915-.84 1.515-.66.39.12.75.42.976.9 1.034-.676 1.034-.676 1.755-1.125-.27-.42-.404-.601-.586-.78-.63-.705-1.469-1.065-2.834-1.034l-.705.089c-.676.165-1.32.525-1.71 1.005-1.14 1.291-.811 3.541.569 4.471 1.365 1.02 3.361 1.244 3.616 2.205.24 1.17-.87 1.545-1.966 1.41-.811-.18-1.26-.586-1.755-1.336l-1.83 1.051c.21.48.45.689.81 1.109 1.74 1.756 6.09 1.666 6.871-1.004.029-.09.24-.705.074-1.65l.046.067zm-8.983-7.245h-2.248c0 1.938-.009 3.864-.009 5.805 0 1.232.063 2.363-.138 2.711-.33.689-1.18.601-1.566.48-.396-.196-.597-.466-.83-.855-.063-.105-.11-.196-.127-.196l-1.825 1.125c.305.63.75 1.172 1.324 1.517.855.51 2.004.675 3.207.405.783-.226 1.458-.691 1.811-1.411.51-.93.402-2.07.397-3.346.012-2.054 0-4.109 0-6.179l.004-.056z',\n },\n php: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M7.01 10.207h-.944l-.515 2.648h.838c.556 0 .97-.105 1.242-.314.272-.21.455-.559.55-1.049.092-.47.05-.802-.124-.995-.175-.193-.523-.29-1.047-.29zM12 5.688C5.373 5.688 0 8.514 0 12s5.373 6.313 12 6.313S24 15.486 24 12c0-3.486-5.373-6.312-12-6.312zm-3.26 7.451c-.261.25-.575.438-.917.551-.336.108-.765.164-1.285.164H5.357l-.327 1.681H3.652l1.23-6.326h2.65c.797 0 1.378.209 1.744.628.366.418.476 1.002.33 1.752a2.836 2.836 0 0 1-.305.847c-.143.255-.33.49-.561.703zm4.024.715l.543-2.799c.063-.318.039-.536-.068-.651-.107-.116-.336-.174-.687-.174H11.46l-.704 3.625H9.388l1.23-6.327h1.367l-.327 1.682h1.218c.767 0 1.295.134 1.586.401s.378.7.263 1.299l-.572 2.944h-1.389zm7.597-2.265a2.782 2.782 0 0 1-.305.847c-.143.255-.33.49-.561.703a2.44 2.44 0 0 1-.917.551c-.336.108-.765.164-1.286.164h-1.18l-.327 1.682h-1.378l1.23-6.326h2.649c.797 0 1.378.209 1.744.628.366.417.477 1.001.331 1.751zM17.766 10.207h-.943l-.516 2.648h.838c.557 0 .971-.105 1.242-.314.272-.21.455-.559.551-1.049.092-.47.049-.802-.125-.995s-.524-.29-1.047-.29z',\n },\n shellscript: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'm 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z',\n },\n c: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M16.5921 9.1962s-.354-3.298-3.627-3.39c-3.2741-.09-4.9552 2.474-4.9552 6.14 0 3.6651 1.858 6.5972 5.0451 6.5972 3.184 0 3.5381-3.665 3.5381-3.665l6.1041.365s.36 3.31-2.196 5.836c-2.552 2.5241-5.6901 2.9371-7.8762 2.9201-2.19-.017-5.2261.034-8.1602-2.97-2.938-3.0101-3.436-5.9302-3.436-8.8002 0-2.8701.556-6.6702 4.047-9.5502C7.444.72 9.849 0 12.254 0c10.0422 0 10.7172 9.2602 10.7172 9.2602z',\n },\n cpp: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M22.394 6c-.167-.29-.398-.543-.652-.69L12.926.22c-.509-.294-1.34-.294-1.848 0L2.26 5.31c-.508.293-.923 1.013-.923 1.6v10.18c0 .294.104.62.271.91.167.29.398.543.652.69l8.816 5.09c.508.293 1.34.293 1.848 0l8.816-5.09c.254-.147.485-.4.652-.69.167-.29.27-.616.27-.91V6.91c.003-.294-.1-.62-.268-.91zM12 19.11c-3.92 0-7.109-3.19-7.109-7.11 0-3.92 3.19-7.11 7.11-7.11a7.133 7.133 0 016.156 3.553l-3.076 1.78a3.567 3.567 0 00-3.08-1.78A3.56 3.56 0 008.444 12 3.56 3.56 0 0012 15.555a3.57 3.57 0 003.08-1.778l3.078 1.78A7.135 7.135 0 0112 19.11zm7.11-6.715h-.79v.79h-.79v-.79h-.79v-.79h.79v-.79h.79v.79h.79zm2.962 0h-.79v.79h-.79v-.79h-.79v-.79h.79v-.79h.79v.79h.79z',\n },\n go: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M1.811 10.231c-.047 0-.058-.023-.035-.059l.246-.315c.023-.035.081-.058.128-.058h4.172c.046 0 .058.035.035.07l-.199.303c-.023.036-.082.07-.117.07zM.047 11.306c-.047 0-.059-.023-.035-.058l.245-.316c.023-.035.082-.058.129-.058h5.328c.047 0 .07.035.058.07l-.093.28c-.012.047-.058.07-.105.07zm2.828 1.075c-.047 0-.059-.035-.035-.07l.163-.292c.023-.035.07-.07.117-.07h2.337c.047 0 .07.035.07.082l-.023.28c0 .047-.047.082-.082.082zm12.129-2.36c-.736.187-1.239.327-1.963.514-.176.046-.187.058-.34-.117-.174-.199-.303-.327-.548-.444-.737-.362-1.45-.257-2.115.175-.795.514-1.204 1.274-1.192 2.22.011.935.654 1.706 1.577 1.835.795.105 1.46-.175 1.987-.77.105-.13.198-.27.315-.434H10.47c-.245 0-.304-.152-.222-.35.152-.362.432-.97.596-1.274a.315.315 0 01.292-.187h4.253c-.023.316-.023.631-.07.947a4.983 4.983 0 01-.958 2.29c-.841 1.11-1.94 1.8-3.33 1.986-1.145.152-2.209-.07-3.143-.77-.865-.655-1.356-1.52-1.484-2.595-.152-1.274.222-2.419.993-3.424.83-1.086 1.928-1.776 3.272-2.02 1.098-.2 2.15-.07 3.096.571.62.41 1.063.97 1.356 1.648.07.105.023.164-.117.2m3.868 6.461c-1.064-.024-2.034-.328-2.852-1.029a3.665 3.665 0 01-1.262-2.255c-.21-1.32.152-2.489.947-3.529.853-1.122 1.881-1.706 3.272-1.95 1.192-.21 2.314-.095 3.33.595.923.63 1.496 1.484 1.648 2.605.198 1.578-.257 2.863-1.344 3.962-.771.783-1.718 1.273-2.805 1.495-.315.06-.63.07-.934.106zm2.78-4.72c-.011-.153-.011-.27-.034-.387-.21-1.157-1.274-1.81-2.384-1.554-1.087.245-1.788.935-2.045 2.033-.21.912.234 1.835 1.075 2.21.643.28 1.285.244 1.905-.07.923-.48 1.425-1.228 1.484-2.233z',\n },\n graphql: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M12.002 0a2.138 2.138 0 1 0 0 4.277 2.138 2.138 0 1 0 0-4.277zm8.54 4.931a2.138 2.138 0 1 0 0 4.277 2.138 2.138 0 1 0 0-4.277zm0 9.862a2.138 2.138 0 1 0 0 4.277 2.138 2.138 0 1 0 0-4.277zm-8.54 4.931a2.138 2.138 0 1 0 0 4.276 2.138 2.138 0 1 0 0-4.276zm-8.542-4.93a2.138 2.138 0 1 0 0 4.276 2.138 2.138 0 1 0 0-4.277zm0-9.863a2.138 2.138 0 1 0 0 4.277 2.138 2.138 0 1 0 0-4.277zm8.542-3.378L2.953 6.777v10.448l9.049 5.224 9.047-5.224V6.777zm0 1.601 7.66 13.27H4.34zm-1.387.371L3.97 15.037V7.363zm2.774 0 6.646 3.838v7.674zM5.355 17.44h13.293l-6.646 3.836z',\n },\n python: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M14.25.18l.9.2.73.26.59.3.45.32.34.34.25.34.16.33.1.3.04.26.02.2-.01.13V8.5l-.05.63-.13.55-.21.46-.26.38-.3.31-.33.25-.35.19-.35.14-.33.1-.3.07-.26.04-.21.02H8.77l-.69.05-.59.14-.5.22-.41.27-.33.32-.27.35-.2.36-.15.37-.1.35-.07.32-.04.27-.02.21v3.06H3.17l-.21-.03-.28-.07-.32-.12-.35-.18-.36-.26-.36-.36-.35-.46-.32-.59-.28-.73-.21-.88-.14-1.05-.05-1.23.06-1.22.16-1.04.24-.87.32-.71.36-.57.4-.44.42-.33.42-.24.4-.16.36-.1.32-.05.24-.01h.16l.06.01h8.16v-.83H6.18l-.01-2.75-.02-.37.05-.34.11-.31.17-.28.25-.26.31-.23.38-.2.44-.18.51-.15.58-.12.64-.1.71-.06.77-.04.84-.02 1.27.05zm-6.3 1.98l-.23.33-.08.41.08.41.23.34.33.22.41.09.41-.09.33-.22.23-.34.08-.41-.08-.41-.23-.33-.33-.22-.41-.09-.41.09zm13.09 3.95l.28.06.32.12.35.18.36.27.36.35.35.47.32.59.28.73.21.88.14 1.04.05 1.23-.06 1.23-.16 1.04-.24.86-.32.71-.36.57-.4.45-.42.33-.42.24-.4.16-.36.09-.32.05-.24.02-.16-.01h-8.22v.82h5.84l.01 2.76.02.36-.05.34-.11.31-.17.29-.25.25-.31.24-.38.2-.44.17-.51.15-.58.13-.64.09-.71.07-.77.04-.84.01-1.27-.04-1.07-.14-.9-.2-.73-.25-.59-.3-.45-.33-.34-.34-.25-.34-.16-.33-.1-.3-.04-.25-.02-.2.01-.13v-5.34l.05-.64.13-.54.21-.46.26-.38.3-.32.33-.24.35-.2.35-.14.33-.1.3-.06.26-.04.21-.02.13-.01h5.84l.69-.05.59-.14.5-.21.41-.28.33-.32.27-.35.2-.36.15-.36.1-.35.07-.32.04-.28.02-.21V6.07h2.09l.14.01zm-6.47 14.25l-.23.33-.08.41.08.41.23.33.33.23.41.08.41-.08.33-.23.23-.33.08-.41-.08-.41-.23-.33-.33-.23-.41-.08-.41.08z',\n },\n md: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M22.27 19.385H1.73A1.73 1.73 0 010 17.655V6.345a1.73 1.73 0 011.73-1.73h20.54A1.73 1.73 0 0124 6.345v11.308a1.73 1.73 0 01-1.73 1.731zM5.769 15.923v-4.5l2.308 2.885 2.307-2.885v4.5h2.308V8.078h-2.308l-2.307 2.885-2.308-2.885H3.46v7.847zM21.232 12h-2.309V8.077h-2.307V12h-2.308l3.461 4.039z',\n },\n kotlin: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M24 24H0V0h24L12 12Z',\n },\n rust: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M23.8346 11.7033l-1.0073-.6236a13.7268 13.7268 0 00-.0283-.2936l.8656-.8069a.3483.3483 0 00-.1154-.578l-1.1066-.414a8.4958 8.4958 0 00-.087-.2856l.6904-.9587a.3462.3462 0 00-.2257-.5446l-1.1663-.1894a9.3574 9.3574 0 00-.1407-.2622l.49-1.0761a.3437.3437 0 00-.0274-.3361.3486.3486 0 00-.3006-.154l-1.1845.0416a6.7444 6.7444 0 00-.1873-.2268l.2723-1.153a.3472.3472 0 00-.417-.4172l-1.1532.2724a14.0183 14.0183 0 00-.2278-.1873l.0415-1.1845a.3442.3442 0 00-.49-.328l-1.076.491c-.0872-.0476-.1742-.0952-.2623-.1407l-.1903-1.1673A.3483.3483 0 0016.256.955l-.9597.6905a8.4867 8.4867 0 00-.2855-.086l-.414-1.1066a.3483.3483 0 00-.5781-.1154l-.8069.8666a9.2936 9.2936 0 00-.2936-.0284L12.2946.1683a.3462.3462 0 00-.5892 0l-.6236 1.0073a13.7383 13.7383 0 00-.2936.0284L9.9803.3374a.3462.3462 0 00-.578.1154l-.4141 1.1065c-.0962.0274-.1903.0567-.2855.086L7.744.955a.3483.3483 0 00-.5447.2258L7.009 2.348a9.3574 9.3574 0 00-.2622.1407l-1.0762-.491a.3462.3462 0 00-.49.328l.0416 1.1845a7.9826 7.9826 0 00-.2278.1873L3.8413 3.425a.3472.3472 0 00-.4171.4171l.2713 1.1531c-.0628.075-.1255.1509-.1863.2268l-1.1845-.0415a.3462.3462 0 00-.328.49l.491 1.0761a9.167 9.167 0 00-.1407.2622l-1.1662.1894a.3483.3483 0 00-.2258.5446l.6904.9587a13.303 13.303 0 00-.087.2855l-1.1065.414a.3483.3483 0 00-.1155.5781l.8656.807a9.2936 9.2936 0 00-.0283.2935l-1.0073.6236a.3442.3442 0 000 .5892l1.0073.6236c.008.0982.0182.1964.0283.2936l-.8656.8079a.3462.3462 0 00.1155.578l1.1065.4141c.0273.0962.0567.1914.087.2855l-.6904.9587a.3452.3452 0 00.2268.5447l1.1662.1893c.0456.088.0922.1751.1408.2622l-.491 1.0762a.3462.3462 0 00.328.49l1.1834-.0415c.0618.0769.1235.1528.1873.2277l-.2713 1.1541a.3462.3462 0 00.4171.4161l1.153-.2713c.075.0638.151.1255.2279.1863l-.0415 1.1845a.3442.3442 0 00.49.327l1.0761-.49c.087.0486.1741.0951.2622.1407l.1903 1.1662a.3483.3483 0 00.5447.2268l.9587-.6904a9.299 9.299 0 00.2855.087l.414 1.1066a.3452.3452 0 00.5781.1154l.8079-.8656c.0972.0111.1954.0203.2936.0294l.6236 1.0073a.3472.3472 0 00.5892 0l.6236-1.0073c.0982-.0091.1964-.0183.2936-.0294l.8069.8656a.3483.3483 0 00.578-.1154l.4141-1.1066a8.4626 8.4626 0 00.2855-.087l.9587.6904a.3452.3452 0 00.5447-.2268l.1903-1.1662c.088-.0456.1751-.0931.2622-.1407l1.0762.49a.3472.3472 0 00.49-.327l-.0415-1.1845a6.7267 6.7267 0 00.2267-.1863l1.1531.2713a.3472.3472 0 00.4171-.416l-.2713-1.1542c.0628-.0749.1255-.1508.1863-.2278l1.1845.0415a.3442.3442 0 00.328-.49l-.49-1.076c.0475-.0872.0951-.1742.1407-.2623l1.1662-.1893a.3483.3483 0 00.2258-.5447l-.6904-.9587.087-.2855 1.1066-.414a.3462.3462 0 00.1154-.5781l-.8656-.8079c.0101-.0972.0202-.1954.0283-.2936l1.0073-.6236a.3442.3442 0 000-.5892zm-6.7413 8.3551a.7138.7138 0 01.2986-1.396.714.714 0 11-.2997 1.396zm-.3422-2.3142a.649.649 0 00-.7715.5l-.3573 1.6685c-1.1035.501-2.3285.7795-3.6193.7795a8.7368 8.7368 0 01-3.6951-.814l-.3574-1.6684a.648.648 0 00-.7714-.499l-1.473.3158a8.7216 8.7216 0 01-.7613-.898h7.1676c.081 0 .1356-.0141.1356-.088v-2.536c0-.074-.0536-.0881-.1356-.0881h-2.0966v-1.6077h2.2677c.2065 0 1.1065.0587 1.394 1.2088.0901.3533.2875 1.5044.4232 1.8729.1346.413.6833 1.2381 1.2685 1.2381h3.5716a.7492.7492 0 00.1296-.0131 8.7874 8.7874 0 01-.8119.9526zM6.8369 20.024a.714.714 0 11-.2997-1.396.714.714 0 01.2997 1.396zM4.1177 8.9972a.7137.7137 0 11-1.304.5791.7137.7137 0 011.304-.579zm-.8352 1.9813l1.5347-.6824a.65.65 0 00.33-.8585l-.3158-.7147h1.2432v5.6025H3.5669a8.7753 8.7753 0 01-.2834-3.348zm6.7343-.5437V8.7836h2.9601c.153 0 1.0792.1772 1.0792.8697 0 .575-.7107.7815-1.2948.7815zm10.7574 1.4862c0 .2187-.008.4363-.0243.651h-.9c-.09 0-.1265.0586-.1265.1477v.413c0 .973-.5487 1.1846-1.0296 1.2382-.4576.0517-.9648-.1913-1.0275-.4717-.2704-1.5186-.7198-1.8436-1.4305-2.4034.8817-.5599 1.799-1.386 1.799-2.4915 0-1.1936-.819-1.9458-1.3769-2.3153-.7825-.5163-1.6491-.6195-1.883-.6195H5.4682a8.7651 8.7651 0 014.907-2.7699l1.0974 1.151a.648.648 0 00.9182.0213l1.227-1.1743a8.7753 8.7753 0 016.0044 4.2762l-.8403 1.8982a.652.652 0 00.33.8585l1.6178.7188c.0283.2875.0425.577.0425.8717zm-9.3006-9.5993a.7128.7128 0 11.984 1.0316.7137.7137 0 01-.984-1.0316zm8.3389 6.71a.7107.7107 0 01.9395-.3625.7137.7137 0 11-.9405.3635z',\n },\n csharp: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M1.194 7.543v8.913c0 1.103.588 2.122 1.544 2.674l7.718 4.456a3.086 3.086 0 0 0 3.088 0l7.718-4.456a3.087 3.087 0 0 0 1.544-2.674V7.543a3.084 3.084 0 0 0-1.544-2.673L13.544.414a3.086 3.086 0 0 0-3.088 0L2.738 4.87a3.085 3.085 0 0 0-1.544 2.673Zm5.403 2.914v3.087a.77.77 0 0 0 .772.772.773.773 0 0 0 .772-.772.773.773 0 0 1 1.317-.546.775.775 0 0 1 .226.546 2.314 2.314 0 1 1-4.631 0v-3.087c0-.615.244-1.203.679-1.637a2.312 2.312 0 0 1 3.274 0c.434.434.678 1.023.678 1.637a.769.769 0 0 1-.226.545.767.767 0 0 1-1.091 0 .77.77 0 0 1-.226-.545.77.77 0 0 0-.772-.772.771.771 0 0 0-.772.772Zm12.35 3.087a.77.77 0 0 1-.772.772h-.772v.772a.773.773 0 0 1-1.544 0v-.772h-1.544v.772a.773.773 0 0 1-1.317.546.775.775 0 0 1-.226-.546v-.772H12a.771.771 0 1 1 0-1.544h.772v-1.543H12a.77.77 0 1 1 0-1.544h.772v-.772a.773.773 0 0 1 1.317-.546.775.775 0 0 1 .226.546v.772h1.544v-.772a.773.773 0 0 1 1.544 0v.772h.772a.772.772 0 0 1 0 1.544h-.772v1.543h.772a.776.776 0 0 1 .772.772Zm-3.088-2.315h-1.544v1.543h1.544v-1.543Z',\n },\n default: {\n viewBox: '0 0 24 24',\n fill: 'currentColor',\n d: 'M 6,1 C 4.354992,1 3,2.354992 3,4 v 16 c 0,1.645008 1.354992,3 3,3 h 12 c 1.645008,0 3,-1.354992 3,-3 V 8 7 A 1.0001,1.0001 0 0 0 20.707031,6.2929687 l -5,-5 A 1.0001,1.0001 0 0 0 15,1 h -1 z m 0,2 h 7 v 3 c 0,1.645008 1.354992,3 3,3 h 3 v 11 c 0,0.564129 -0.435871,1 -1,1 H 6 C 5.4358712,21 5,20.564129 5,20 V 4 C 5,3.4358712 5.4358712,3 6,3 Z M 15,3.4140625 18.585937,7 H 16 C 15.435871,7 15,6.5641288 15,6 Z',\n },\n};\n\nexport interface IconOptions {\n shortcuts?: Record<string, string>;\n extend?: Record<string, CodeBlockIcon>;\n}\n\n/**\n * Inject icons to `icon` property (as HTML)\n */\nexport function transformerIcon(options: IconOptions = {}): ShikiTransformer {\n const shortcuts = {\n ...defaultShortcuts,\n ...options.shortcuts,\n };\n const icons = {\n ...defaultIcons,\n ...options.extend,\n };\n\n const defaultIcon = 'default' in icons ? icons.default : undefined;\n return {\n name: 'rehype-code:icon',\n pre(pre) {\n const lang = this.options.lang;\n if (!lang) return;\n\n const iconName = lang in shortcuts ? shortcuts[lang] : lang;\n const icon = iconName in icons ? icons[iconName] : defaultIcon;\n\n if (icon) {\n pre.properties.icon =\n typeof icon === 'string'\n ? icon\n : `<svg viewBox=\"${icon.viewBox}\"><path d=\"${icon.d}\" fill=\"${icon.fill}\" /></svg>`;\n }\n\n return pre;\n },\n };\n}\n","import type { Root } from 'hast';\nimport type { RehypeShikiOptions } from '@shikijs/rehype';\nimport rehypeShikiFromHighlighter from '@shikijs/rehype/core';\nimport {\n transformerNotationDiff,\n transformerNotationFocus,\n transformerNotationHighlight,\n transformerNotationWordHighlight,\n} from '@shikijs/transformers';\nimport type { Processor, Transformer } from 'unified';\nimport { type BuiltinTheme, bundledLanguages, type ShikiTransformer } from 'shiki';\nimport type { MdxJsxFlowElement } from 'mdast-util-mdx-jsx';\nimport type { CodeBlockIcon, IconOptions } from './transformer-icon';\nimport { transformerIcon } from './transformer-icon';\nimport { defaultThemes, getHighlighter } from '@/highlight/shiki';\nimport { parseCodeBlockAttributes } from '@/mdx-plugins/codeblock-utils';\n\nexport const rehypeCodeDefaultOptions: RehypeCodeOptions = {\n lazy: true,\n themes: defaultThemes,\n defaultColor: false,\n defaultLanguage: 'plaintext',\n engine: 'js',\n transformers: [\n transformerNotationHighlight({\n matchAlgorithm: 'v3',\n }),\n transformerNotationWordHighlight({\n matchAlgorithm: 'v3',\n }),\n transformerNotationDiff({\n matchAlgorithm: 'v3',\n }),\n transformerNotationFocus({\n matchAlgorithm: 'v3',\n }),\n ],\n parseMetaString(meta) {\n const parsed = parseCodeBlockAttributes(meta, ['title', 'tab']);\n const data: Record<string, unknown> = parsed.attributes;\n parsed.rest = parseLineNumber(parsed.rest, data);\n\n data.__parsed_raw = parsed.rest;\n return data;\n },\n};\n\nfunction parseLineNumber(str: string, data: Record<string, unknown>) {\n return str.replace(/lineNumbers=(\\d+)|lineNumbers/, (_, ...args) => {\n data['data-line-numbers'] = true;\n\n if (args[0] !== undefined) data['data-line-numbers-start'] = Number(args[0]);\n\n return '';\n });\n}\n\ntype DistributiveOmit<T, K extends keyof T> = T extends unknown ? Omit<T, K> : never;\n\nexport type RehypeCodeOptions = DistributiveOmit<RehypeShikiOptions, 'lazy'> & {\n /**\n * Load languages and themes on-demand.\n * @defaultValue true\n */\n lazy?: boolean;\n\n /**\n * The regex engine to use.\n *\n * @defaultValue 'js'\n */\n engine?: 'js' | 'oniguruma';\n\n /**\n * Filter meta string before processing\n */\n filterMetaString?: (metaString: string) => string;\n\n /**\n * Add icon to code blocks\n */\n icon?: IconOptions | false;\n\n /**\n * Wrap code blocks in `<Tab>` component when \"tab\" meta string presents\n *\n * @defaultValue true\n */\n tab?: boolean;\n};\n\n/**\n * Handle codeblocks\n */\nexport function rehypeCode(\n this: Processor,\n _options: Partial<RehypeCodeOptions> = {},\n): Transformer<Root, Root> {\n const options: RehypeCodeOptions = {\n ...rehypeCodeDefaultOptions,\n ..._options,\n };\n\n const transformers = [...(options.transformers ?? [])];\n transformers.unshift({\n name: 'rehype-code:pre-process',\n preprocess(code, { meta }) {\n if (meta && '__parsed_raw' in meta) {\n meta.__raw = meta.__parsed_raw;\n delete meta.__parsed_raw;\n }\n\n if (meta && options.filterMetaString) {\n meta.__raw = options.filterMetaString(meta.__raw ?? '');\n }\n\n // Remove empty line at end\n return code.replace(/\\n$/, '');\n },\n });\n\n if (options.icon !== false) {\n transformers.push(transformerIcon(options.icon));\n }\n\n if (options.tab !== false) {\n transformers.push(transformerTab());\n }\n\n const highlighter = getHighlighter(options.engine ?? 'js', {\n themes:\n 'themes' in options\n ? (Object.values(options.themes).filter(Boolean) as BuiltinTheme[])\n : [options.theme],\n langs: options.langs ?? (options.lazy ? ['ts', 'tsx'] : Object.keys(bundledLanguages)),\n langAlias: options.langAlias,\n });\n\n const transformer = highlighter.then((loaded) =>\n rehypeShikiFromHighlighter(loaded, {\n ...options,\n transformers,\n }),\n );\n\n return async (tree, file) => {\n await (\n await transformer\n )(tree, file, () => {\n // nothing\n });\n };\n}\n\nfunction transformerTab(): ShikiTransformer {\n return {\n name: 'rehype-code:tab',\n // @ts-expect-error -- types not compatible with MDX\n root(root) {\n const value = this.options.meta?.tab;\n if (typeof value !== 'string') return root;\n console.warn(\n '[Hanzo Docs] For `tab=\"value\" in codeblocks, please use `remarkCodeTab` plugin instead.',\n );\n\n return {\n type: 'root',\n children: [\n {\n type: 'mdxJsxFlowElement',\n name: 'Tab',\n data: {\n _codeblock: true,\n },\n attributes: [{ type: 'mdxJsxAttribute', name: 'value', value }],\n children: root.children,\n } as MdxJsxFlowElement,\n ],\n };\n },\n };\n}\n\nexport { type CodeBlockIcon, transformerIcon, transformerTab };\n"],"mappings":";;;;;;;AAUA,MAAMA,mBAA2C;CAC/C,IAAI;CACJ,KAAK;CACL,IAAI;CACJ,KAAK;CACL,MAAM;CACN,IAAI;CACJ,KAAK;CACL,IAAI;CACJ,MAAM;CACN,IAAI;CACJ,OAAO;CACP,KAAK;CACL,OAAO;CACR;AAID,MAAMC,eAA8C;CAClD,OAAO;EACL,SAAS;EACT,MAAM;EACN,GAAG;EACJ;CACD,KAAK;EACH,SAAS;EACT,MAAM;EACN,GAAG;EACJ;CACD,MAAM;EACJ,SAAS;EACT,MAAM;EACN,GAAG;EACJ;CACD,KAAK;EACH,SAAS;EACT,MAAM;EACN,GAAG;EACJ;CACD,OAAO;EACL,SAAS;EACT,MAAM;EACN,GAAG;EACJ;CACD,QAAQ;EACN,SAAS;EACT,MAAM;EACN,GAAG;EACJ;CACD,YAAY;EACV,SAAS;EACT,MAAM;EACN,GAAG;EACJ;CACD,YAAY;EACV,SAAS;EACT,MAAM;EACN,GAAG;EACJ;CACD,KAAK;EACH,SAAS;EACT,MAAM;EACN,GAAG;EACJ;CACD,aAAa;EACX,SAAS;EACT,MAAM;EACN,GAAG;EACJ;CACD,GAAG;EACD,SAAS;EACT,MAAM;EACN,GAAG;EACJ;CACD,KAAK;EACH,SAAS;EACT,MAAM;EACN,GAAG;EACJ;CACD,IAAI;EACF,SAAS;EACT,MAAM;EACN,GAAG;EACJ;CACD,SAAS;EACP,SAAS;EACT,MAAM;EACN,GAAG;EACJ;CACD,QAAQ;EACN,SAAS;EACT,MAAM;EACN,GAAG;EACJ;CACD,IAAI;EACF,SAAS;EACT,MAAM;EACN,GAAG;EACJ;CACD,QAAQ;EACN,SAAS;EACT,MAAM;EACN,GAAG;EACJ;CACD,MAAM;EACJ,SAAS;EACT,MAAM;EACN,GAAG;EACJ;CACD,QAAQ;EACN,SAAS;EACT,MAAM;EACN,GAAG;EACJ;CACD,SAAS;EACP,SAAS;EACT,MAAM;EACN,GAAG;EACJ;CACF;;;;AAUD,SAAgB,gBAAgB,UAAuB,EAAE,EAAoB;CAC3E,MAAM,YAAY;EAChB,GAAG;EACH,GAAG,QAAQ;EACZ;CACD,MAAM,QAAQ;EACZ,GAAG;EACH,GAAG,QAAQ;EACZ;CAED,MAAM,cAAc,aAAa,QAAQ,MAAM,UAAU;AACzD,QAAO;EACL,MAAM;EACN,IAAI,KAAK;GACP,MAAM,OAAO,KAAK,QAAQ;AAC1B,OAAI,CAAC,KAAM;GAEX,MAAM,WAAW,QAAQ,YAAY,UAAU,QAAQ;GACvD,MAAM,OAAO,YAAY,QAAQ,MAAM,YAAY;AAEnD,OAAI,KACF,KAAI,WAAW,OACb,OAAO,SAAS,WACZ,OACA,iBAAiB,KAAK,QAAQ,aAAa,KAAK,EAAE,UAAU,KAAK,KAAK;AAG9E,UAAO;;EAEV;;;;;ACvJH,MAAaC,2BAA8C;CACzD,MAAM;CACN,QAAQ;CACR,cAAc;CACd,iBAAiB;CACjB,QAAQ;CACR,cAAc;EACZ,6BAA6B,EAC3B,gBAAgB,MACjB,CAAC;EACF,iCAAiC,EAC/B,gBAAgB,MACjB,CAAC;EACF,wBAAwB,EACtB,gBAAgB,MACjB,CAAC;EACF,yBAAyB,EACvB,gBAAgB,MACjB,CAAC;EACH;CACD,gBAAgB,MAAM;EACpB,MAAM,SAAS,yBAAyB,MAAM,CAAC,SAAS,MAAM,CAAC;EAC/D,MAAMC,OAAgC,OAAO;AAC7C,SAAO,OAAO,gBAAgB,OAAO,MAAM,KAAK;AAEhD,OAAK,eAAe,OAAO;AAC3B,SAAO;;CAEV;AAED,SAAS,gBAAgB,KAAa,MAA+B;AACnE,QAAO,IAAI,QAAQ,kCAAkC,GAAG,GAAG,SAAS;AAClE,OAAK,uBAAuB;AAE5B,MAAI,KAAK,OAAO,OAAW,MAAK,6BAA6B,OAAO,KAAK,GAAG;AAE5E,SAAO;GACP;;;;;AAwCJ,SAAgB,WAEd,WAAuC,EAAE,EAChB;CACzB,MAAMC,UAA6B;EACjC,GAAG;EACH,GAAG;EACJ;CAED,MAAM,eAAe,CAAC,GAAI,QAAQ,gBAAgB,EAAE,CAAE;AACtD,cAAa,QAAQ;EACnB,MAAM;EACN,WAAW,MAAM,EAAE,QAAQ;AACzB,OAAI,QAAQ,kBAAkB,MAAM;AAClC,SAAK,QAAQ,KAAK;AAClB,WAAO,KAAK;;AAGd,OAAI,QAAQ,QAAQ,iBAClB,MAAK,QAAQ,QAAQ,iBAAiB,KAAK,SAAS,GAAG;AAIzD,UAAO,KAAK,QAAQ,OAAO,GAAG;;EAEjC,CAAC;AAEF,KAAI,QAAQ,SAAS,MACnB,cAAa,KAAK,gBAAgB,QAAQ,KAAK,CAAC;AAGlD,KAAI,QAAQ,QAAQ,MAClB,cAAa,KAAK,gBAAgB,CAAC;CAYrC,MAAM,cATc,eAAe,QAAQ,UAAU,MAAM;EACzD,QACE,YAAY,UACP,OAAO,OAAO,QAAQ,OAAO,CAAC,OAAO,QAAQ,GAC9C,CAAC,QAAQ,MAAM;EACrB,OAAO,QAAQ,UAAU,QAAQ,OAAO,CAAC,MAAM,MAAM,GAAG,OAAO,KAAK,iBAAiB;EACrF,WAAW,QAAQ;EACpB,CAAC,CAE8B,MAAM,WACpC,2BAA2B,QAAQ;EACjC,GAAG;EACH;EACD,CAAC,CACH;AAED,QAAO,OAAO,MAAM,SAAS;AAC3B,SACE,MAAM,aACN,MAAM,YAAY,GAElB;;;AAIN,SAAS,iBAAmC;AAC1C,QAAO;EACL,MAAM;EAEN,KAAK,MAAM;GACT,MAAM,QAAQ,KAAK,QAAQ,MAAM;AACjC,OAAI,OAAO,UAAU,SAAU,QAAO;AACtC,WAAQ,KACN,4FACD;AAED,UAAO;IACL,MAAM;IACN,UAAU,CACR;KACE,MAAM;KACN,MAAM;KACN,MAAM,EACJ,YAAY,MACb;KACD,YAAY,CAAC;MAAE,MAAM;MAAmB,MAAM;MAAS;MAAO,CAAC;KAC/D,UAAU,KAAK;KAChB,CACF;IACF;;EAEJ"}
@@ -140,4 +140,4 @@ function rehypeToc({ exportToc = true } = {}) {
140
140
 
141
141
  //#endregion
142
142
  export { rehypeToc as t };
143
- //# sourceMappingURL=rehype-toc-D-eLj90w.js.map
143
+ //# sourceMappingURL=rehype-toc-DVwJcwvA.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rehype-toc-D-eLj90w.js","names":["output: {\n title: JSXElement;\n url: string;\n depth: number;\n }[]","declaration: Declaration"],"sources":["../src/mdx-plugins/hast-utils.ts","../src/mdx-plugins/rehype-toc.ts"],"sourcesContent":["import type { Element, Root, RootContent } from 'hast';\n\n/**\n * Visit a node with filtered tag names\n */\nexport function visit(\n node: RootContent | Root,\n tagNames: string[],\n handler: (node: Element) => 'skip' | undefined,\n): void {\n if (node.type === 'element' && tagNames.includes(node.tagName)) {\n const result = handler(node);\n if (result === 'skip') return;\n }\n\n if ('children' in node)\n node.children.forEach((n) => {\n visit(n, tagNames, handler);\n });\n}\n","import type { Processor, Transformer } from 'unified';\nimport type { Root, RootContent } from 'hast';\nimport { toEstree } from 'hast-util-to-estree';\nimport type { Declaration, JSXElement } from 'estree-jsx';\nimport { visit } from '@/mdx-plugins/hast-utils';\n\nexport interface RehypeTocOptions {\n /**\n * Export generated toc as a variable\n *\n * @defaultValue true\n */\n exportToc?: boolean;\n}\n\nconst TocOnlyTag = '[toc]';\nconst NoTocTag = '[!toc]';\n\nexport function rehypeToc(\n this: Processor,\n { exportToc = true }: RehypeTocOptions = {},\n): Transformer<Root, Root> {\n return (tree) => {\n const output: {\n title: JSXElement;\n url: string;\n depth: number;\n }[] = [];\n\n visit(tree, ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'], (element) => {\n const id = element.properties.id;\n if (typeof id !== 'string') return 'skip';\n let isTocOnly = false;\n\n const last = element.children.at(-1);\n if (last?.type === 'text' && last.value.endsWith(TocOnlyTag)) {\n isTocOnly = true;\n last.value = last.value.substring(0, last.value.length - TocOnlyTag.length).trimEnd();\n } else if (last?.type === 'text' && last.value.endsWith(NoTocTag)) {\n last.value = last.value.substring(0, last.value.length - NoTocTag.length).trimEnd();\n return 'skip';\n }\n\n const estree = toEstree(element, {\n elementAttributeNameCase: 'react',\n stylePropertyNameCase: 'dom',\n });\n\n if (estree.body[0].type === 'ExpressionStatement')\n output.push({\n title: estree.body[0].expression as unknown as JSXElement,\n depth: Number(element.tagName.slice(1)),\n url: `#${id}`,\n });\n\n if (isTocOnly) {\n Object.assign(element, {\n type: 'comment',\n value: '',\n } satisfies RootContent);\n }\n\n return 'skip';\n });\n\n const declaration: Declaration = {\n type: 'VariableDeclaration',\n kind: 'const',\n declarations: [\n {\n type: 'VariableDeclarator',\n id: {\n type: 'Identifier',\n name: 'toc',\n },\n init: {\n type: 'ArrayExpression',\n elements: output.map((item) => ({\n type: 'ObjectExpression',\n properties: [\n {\n type: 'Property',\n method: false,\n shorthand: false,\n computed: false,\n key: {\n type: 'Identifier',\n name: 'depth',\n },\n value: {\n type: 'Literal',\n value: item.depth,\n },\n kind: 'init',\n },\n {\n type: 'Property',\n method: false,\n shorthand: false,\n computed: false,\n key: {\n type: 'Identifier',\n name: 'url',\n },\n value: {\n type: 'Literal',\n value: item.url,\n },\n kind: 'init',\n },\n {\n type: 'Property',\n method: false,\n shorthand: false,\n computed: false,\n key: {\n type: 'Identifier',\n name: 'title',\n },\n value: {\n type: 'JSXFragment',\n openingFragment: { type: 'JSXOpeningFragment' },\n closingFragment: { type: 'JSXClosingFragment' },\n children: item.title.children,\n },\n kind: 'init',\n },\n ],\n })),\n },\n },\n ],\n };\n\n tree.children.push({\n type: 'mdxjsEsm',\n value: '',\n data: {\n estree: {\n type: 'Program',\n body: [\n exportToc\n ? {\n type: 'ExportNamedDeclaration',\n declaration,\n attributes: [],\n specifiers: [],\n }\n : declaration,\n ],\n sourceType: 'module',\n comments: [],\n },\n },\n } satisfies RootContent);\n };\n}\n"],"mappings":";;;;;;AAKA,SAAgB,MACd,MACA,UACA,SACM;AACN,KAAI,KAAK,SAAS,aAAa,SAAS,SAAS,KAAK,QAAQ,EAE5D;MADe,QAAQ,KAAK,KACb,OAAQ;;AAGzB,KAAI,cAAc,KAChB,MAAK,SAAS,SAAS,MAAM;AAC3B,QAAM,GAAG,UAAU,QAAQ;GAC3B;;;;;ACHN,MAAM,aAAa;AACnB,MAAM,WAAW;AAEjB,SAAgB,UAEd,EAAE,YAAY,SAA2B,EAAE,EAClB;AACzB,SAAQ,SAAS;EACf,MAAMA,SAIA,EAAE;AAER,QAAM,MAAM;GAAC;GAAM;GAAM;GAAM;GAAM;GAAM;GAAK,GAAG,YAAY;GAC7D,MAAM,KAAK,QAAQ,WAAW;AAC9B,OAAI,OAAO,OAAO,SAAU,QAAO;GACnC,IAAI,YAAY;GAEhB,MAAM,OAAO,QAAQ,SAAS,GAAG,GAAG;AACpC,OAAI,MAAM,SAAS,UAAU,KAAK,MAAM,SAAS,WAAW,EAAE;AAC5D,gBAAY;AACZ,SAAK,QAAQ,KAAK,MAAM,UAAU,GAAG,KAAK,MAAM,SAAS,EAAkB,CAAC,SAAS;cAC5E,MAAM,SAAS,UAAU,KAAK,MAAM,SAAS,SAAS,EAAE;AACjE,SAAK,QAAQ,KAAK,MAAM,UAAU,GAAG,KAAK,MAAM,SAAS,EAAgB,CAAC,SAAS;AACnF,WAAO;;GAGT,MAAM,SAAS,SAAS,SAAS;IAC/B,0BAA0B;IAC1B,uBAAuB;IACxB,CAAC;AAEF,OAAI,OAAO,KAAK,GAAG,SAAS,sBAC1B,QAAO,KAAK;IACV,OAAO,OAAO,KAAK,GAAG;IACtB,OAAO,OAAO,QAAQ,QAAQ,MAAM,EAAE,CAAC;IACvC,KAAK,IAAI;IACV,CAAC;AAEJ,OAAI,UACF,QAAO,OAAO,SAAS;IACrB,MAAM;IACN,OAAO;IACR,CAAuB;AAG1B,UAAO;IACP;EAEF,MAAMC,cAA2B;GAC/B,MAAM;GACN,MAAM;GACN,cAAc,CACZ;IACE,MAAM;IACN,IAAI;KACF,MAAM;KACN,MAAM;KACP;IACD,MAAM;KACJ,MAAM;KACN,UAAU,OAAO,KAAK,UAAU;MAC9B,MAAM;MACN,YAAY;OACV;QACE,MAAM;QACN,QAAQ;QACR,WAAW;QACX,UAAU;QACV,KAAK;SACH,MAAM;SACN,MAAM;SACP;QACD,OAAO;SACL,MAAM;SACN,OAAO,KAAK;SACb;QACD,MAAM;QACP;OACD;QACE,MAAM;QACN,QAAQ;QACR,WAAW;QACX,UAAU;QACV,KAAK;SACH,MAAM;SACN,MAAM;SACP;QACD,OAAO;SACL,MAAM;SACN,OAAO,KAAK;SACb;QACD,MAAM;QACP;OACD;QACE,MAAM;QACN,QAAQ;QACR,WAAW;QACX,UAAU;QACV,KAAK;SACH,MAAM;SACN,MAAM;SACP;QACD,OAAO;SACL,MAAM;SACN,iBAAiB,EAAE,MAAM,sBAAsB;SAC/C,iBAAiB,EAAE,MAAM,sBAAsB;SAC/C,UAAU,KAAK,MAAM;SACtB;QACD,MAAM;QACP;OACF;MACF,EAAE;KACJ;IACF,CACF;GACF;AAED,OAAK,SAAS,KAAK;GACjB,MAAM;GACN,OAAO;GACP,MAAM,EACJ,QAAQ;IACN,MAAM;IACN,MAAM,CACJ,YACI;KACE,MAAM;KACN;KACA,YAAY,EAAE;KACd,YAAY,EAAE;KACf,GACD,YACL;IACD,YAAY;IACZ,UAAU,EAAE;IACb,EACF;GACF,CAAuB"}
1
+ {"version":3,"file":"rehype-toc-DVwJcwvA.js","names":["output: {\n title: JSXElement;\n url: string;\n depth: number;\n }[]","declaration: Declaration"],"sources":["../src/mdx-plugins/hast-utils.ts","../src/mdx-plugins/rehype-toc.ts"],"sourcesContent":["import type { Element, Root, RootContent } from 'hast';\n\n/**\n * Visit a node with filtered tag names\n */\nexport function visit(\n node: RootContent | Root,\n tagNames: string[],\n handler: (node: Element) => 'skip' | undefined,\n): void {\n if (node.type === 'element' && tagNames.includes(node.tagName)) {\n const result = handler(node);\n if (result === 'skip') return;\n }\n\n if ('children' in node)\n node.children.forEach((n) => {\n visit(n, tagNames, handler);\n });\n}\n","import type { Processor, Transformer } from 'unified';\nimport type { Root, RootContent } from 'hast';\nimport { toEstree } from 'hast-util-to-estree';\nimport type { Declaration, JSXElement } from 'estree-jsx';\nimport { visit } from '@/mdx-plugins/hast-utils';\n\nexport interface RehypeTocOptions {\n /**\n * Export generated toc as a variable\n *\n * @defaultValue true\n */\n exportToc?: boolean;\n}\n\nconst TocOnlyTag = '[toc]';\nconst NoTocTag = '[!toc]';\n\nexport function rehypeToc(\n this: Processor,\n { exportToc = true }: RehypeTocOptions = {},\n): Transformer<Root, Root> {\n return (tree) => {\n const output: {\n title: JSXElement;\n url: string;\n depth: number;\n }[] = [];\n\n visit(tree, ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'], (element) => {\n const id = element.properties.id;\n if (typeof id !== 'string') return 'skip';\n let isTocOnly = false;\n\n const last = element.children.at(-1);\n if (last?.type === 'text' && last.value.endsWith(TocOnlyTag)) {\n isTocOnly = true;\n last.value = last.value.substring(0, last.value.length - TocOnlyTag.length).trimEnd();\n } else if (last?.type === 'text' && last.value.endsWith(NoTocTag)) {\n last.value = last.value.substring(0, last.value.length - NoTocTag.length).trimEnd();\n return 'skip';\n }\n\n const estree = toEstree(element, {\n elementAttributeNameCase: 'react',\n stylePropertyNameCase: 'dom',\n });\n\n if (estree.body[0].type === 'ExpressionStatement')\n output.push({\n title: estree.body[0].expression as unknown as JSXElement,\n depth: Number(element.tagName.slice(1)),\n url: `#${id}`,\n });\n\n if (isTocOnly) {\n Object.assign(element, {\n type: 'comment',\n value: '',\n } satisfies RootContent);\n }\n\n return 'skip';\n });\n\n const declaration: Declaration = {\n type: 'VariableDeclaration',\n kind: 'const',\n declarations: [\n {\n type: 'VariableDeclarator',\n id: {\n type: 'Identifier',\n name: 'toc',\n },\n init: {\n type: 'ArrayExpression',\n elements: output.map((item) => ({\n type: 'ObjectExpression',\n properties: [\n {\n type: 'Property',\n method: false,\n shorthand: false,\n computed: false,\n key: {\n type: 'Identifier',\n name: 'depth',\n },\n value: {\n type: 'Literal',\n value: item.depth,\n },\n kind: 'init',\n },\n {\n type: 'Property',\n method: false,\n shorthand: false,\n computed: false,\n key: {\n type: 'Identifier',\n name: 'url',\n },\n value: {\n type: 'Literal',\n value: item.url,\n },\n kind: 'init',\n },\n {\n type: 'Property',\n method: false,\n shorthand: false,\n computed: false,\n key: {\n type: 'Identifier',\n name: 'title',\n },\n value: {\n type: 'JSXFragment',\n openingFragment: { type: 'JSXOpeningFragment' },\n closingFragment: { type: 'JSXClosingFragment' },\n children: item.title.children,\n },\n kind: 'init',\n },\n ],\n })),\n },\n },\n ],\n };\n\n tree.children.push({\n type: 'mdxjsEsm',\n value: '',\n data: {\n estree: {\n type: 'Program',\n body: [\n exportToc\n ? {\n type: 'ExportNamedDeclaration',\n declaration,\n attributes: [],\n specifiers: [],\n }\n : declaration,\n ],\n sourceType: 'module',\n comments: [],\n },\n },\n } satisfies RootContent);\n };\n}\n"],"mappings":";;;;;;AAKA,SAAgB,MACd,MACA,UACA,SACM;AACN,KAAI,KAAK,SAAS,aAAa,SAAS,SAAS,KAAK,QAAQ,EAE5D;MADe,QAAQ,KAAK,KACb,OAAQ;;AAGzB,KAAI,cAAc,KAChB,MAAK,SAAS,SAAS,MAAM;AAC3B,QAAM,GAAG,UAAU,QAAQ;GAC3B;;;;;ACHN,MAAM,aAAa;AACnB,MAAM,WAAW;AAEjB,SAAgB,UAEd,EAAE,YAAY,SAA2B,EAAE,EAClB;AACzB,SAAQ,SAAS;EACf,MAAMA,SAIA,EAAE;AAER,QAAM,MAAM;GAAC;GAAM;GAAM;GAAM;GAAM;GAAM;GAAK,GAAG,YAAY;GAC7D,MAAM,KAAK,QAAQ,WAAW;AAC9B,OAAI,OAAO,OAAO,SAAU,QAAO;GACnC,IAAI,YAAY;GAEhB,MAAM,OAAO,QAAQ,SAAS,GAAG,GAAG;AACpC,OAAI,MAAM,SAAS,UAAU,KAAK,MAAM,SAAS,WAAW,EAAE;AAC5D,gBAAY;AACZ,SAAK,QAAQ,KAAK,MAAM,UAAU,GAAG,KAAK,MAAM,SAAS,EAAkB,CAAC,SAAS;cAC5E,MAAM,SAAS,UAAU,KAAK,MAAM,SAAS,SAAS,EAAE;AACjE,SAAK,QAAQ,KAAK,MAAM,UAAU,GAAG,KAAK,MAAM,SAAS,EAAgB,CAAC,SAAS;AACnF,WAAO;;GAGT,MAAM,SAAS,SAAS,SAAS;IAC/B,0BAA0B;IAC1B,uBAAuB;IACxB,CAAC;AAEF,OAAI,OAAO,KAAK,GAAG,SAAS,sBAC1B,QAAO,KAAK;IACV,OAAO,OAAO,KAAK,GAAG;IACtB,OAAO,OAAO,QAAQ,QAAQ,MAAM,EAAE,CAAC;IACvC,KAAK,IAAI;IACV,CAAC;AAEJ,OAAI,UACF,QAAO,OAAO,SAAS;IACrB,MAAM;IACN,OAAO;IACR,CAAuB;AAG1B,UAAO;IACP;EAEF,MAAMC,cAA2B;GAC/B,MAAM;GACN,MAAM;GACN,cAAc,CACZ;IACE,MAAM;IACN,IAAI;KACF,MAAM;KACN,MAAM;KACP;IACD,MAAM;KACJ,MAAM;KACN,UAAU,OAAO,KAAK,UAAU;MAC9B,MAAM;MACN,YAAY;OACV;QACE,MAAM;QACN,QAAQ;QACR,WAAW;QACX,UAAU;QACV,KAAK;SACH,MAAM;SACN,MAAM;SACP;QACD,OAAO;SACL,MAAM;SACN,OAAO,KAAK;SACb;QACD,MAAM;QACP;OACD;QACE,MAAM;QACN,QAAQ;QACR,WAAW;QACX,UAAU;QACV,KAAK;SACH,MAAM;SACN,MAAM;SACP;QACD,OAAO;SACL,MAAM;SACN,OAAO,KAAK;SACb;QACD,MAAM;QACP;OACD;QACE,MAAM;QACN,QAAQ;QACR,WAAW;QACX,UAAU;QACV,KAAK;SACH,MAAM;SACN,MAAM;SACP;QACD,OAAO;SACL,MAAM;SACN,iBAAiB,EAAE,MAAM,sBAAsB;SAC/C,iBAAiB,EAAE,MAAM,sBAAsB;SAC/C,UAAU,KAAK,MAAM;SACtB;QACD,MAAM;QACP;OACF;MACF,EAAE;KACJ;IACF,CACF;GACF;AAED,OAAK,SAAS,KAAK;GACjB,MAAM;GACN,OAAO;GACP,MAAM,EACJ,QAAQ;IACN,MAAM;IACN,MAAM,CACJ,YACI;KACE,MAAM;KACN;KACA,YAAY,EAAE;KACd,YAAY,EAAE;KACf,GACD,YACL;IACD,YAAY;IACZ,UAAU,EAAE;IACb,EACF;GACF,CAAuB"}
@@ -15,7 +15,7 @@ interface PackageManager {
15
15
  }
16
16
  interface RemarkNpmOptions {
17
17
  /**
18
- * Persist Tab value (Fumadocs UI only)
18
+ * Persist Tab value (Hanzo Docs UI only)
19
19
  *
20
20
  * @defaultValue false
21
21
  */
@@ -33,4 +33,4 @@ declare function remarkNpm({
33
33
  }?: RemarkNpmOptions): Transformer<Root, Root>;
34
34
  //#endregion
35
35
  export { remarkNpm as n, RemarkNpmOptions as t };
36
- //# sourceMappingURL=remark-npm-BIvIEKT2.d.ts.map
36
+ //# sourceMappingURL=remark-npm-Bo08HqcQ.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remark-npm-BIvIEKT2.d.ts","names":[],"sources":["../src/mdx-plugins/remark-npm.ts"],"sourcesContent":[],"mappings":";;;;UAMU,cAAA;;EAAA;AAcV;AAoBA;EACE,KAAA,CAAA,EAAA,MAAA;EACA;;;EAM2C,OAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,GAAA,MAAA,GAAA,SAAA;;AAAP,UA5BrB,gBAAA,CA4BqB;;;;;;;;;oBAhBlB;;;;;iBAQJ,SAAA;;;IAQb,mBAAwB,YAAY,MAAM"}
1
+ {"version":3,"file":"remark-npm-Bo08HqcQ.d.ts","names":[],"sources":["../src/mdx-plugins/remark-npm.ts"],"sourcesContent":[],"mappings":";;;;UAMU,cAAA;;EAAA;AAcV;AAoBA;EACE,KAAA,CAAA,EAAA,MAAA;EACA;;;EAM2C,OAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,GAAA,MAAA,GAAA,SAAA;;AAAP,UA5BrB,gBAAA,CA4BqB;;;;;;;;;oBAhBlB;;;;;iBAQJ,SAAA;;;IAQb,mBAAwB,YAAY,MAAM"}
@@ -40,7 +40,7 @@ interface StructureOptions {
40
40
  declare module 'mdast' {
41
41
  interface Data {
42
42
  /**
43
- * [Fumadocs] Get content of unserializable element, `remarkStructure` uses it to generate search index.
43
+ * [Hanzo Docs] Get content of unserializable element, `remarkStructure` uses it to generate search index.
44
44
  */
45
45
  _string?: string[];
46
46
  }
@@ -48,7 +48,7 @@ declare module 'mdast' {
48
48
  declare module 'vfile' {
49
49
  interface DataMap {
50
50
  /**
51
- * [Fumadocs] injected by `remarkStructure`
51
+ * [Hanzo Docs] injected by `remarkStructure`
52
52
  */
53
53
  structuredData: StructuredData;
54
54
  }
@@ -74,4 +74,4 @@ declare function remarkStructure({
74
74
  declare function structure(content: string, remarkPlugins?: PluggableList, options?: StructureOptions): StructuredData;
75
75
  //#endregion
76
76
  export { structure as a, remarkStructureDefaultOptions as i, StructuredData as n, remarkStructure as r, StructureOptions as t };
77
- //# sourceMappingURL=remark-structure-RZD2gGKp.d.ts.map
77
+ //# sourceMappingURL=remark-structure-DGuWR82i.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remark-structure-RZD2gGKp.d.ts","names":[],"sources":["../src/mdx-plugins/remark-structure.ts"],"sourcesContent":[],"mappings":";;;;;UAaU,SAAA;;EAAA,OAAA,EAAA,MAAO;AAAA;AAUjB,UALU,OAAA,CAKO;EAQA,OAAA,EAAA,MAAA,GAAA,SAAgB;EAMJ,OAAA,EAAA,MAAA;;AAYV,UA1BF,cAAA,CA0BE;EAAkB,QAAA,EAzBzB,SAyByB,EAAA;EAAyB;AAO7D;;UAAA,EA5BW,OA4BX,EAAA;;AAAA,UAzBgB,gBAAA,CAyBhB;EAAA;;;;;EAoBY,KAAA,CAAA,EAAA,MAAA,EAAA,GAAA,CAAA,CAAA,IAAA,EAvCgB,KA+CS,EAAA,GAAA,OAAA,CAAA;EAOtB;;;;;;EAI6B,oBAAA,CAAA,EAAA,MAAA,EAAA,GAAA,CAAA,CAAA,IAAA,EA/C/B,iBA+C+B,EAAA,SAAA,EA9C1B,eA8C0B,GA9CR,yBA8CQ,EAAA,GAAA,OAAA,CAAA;EAAlB;;AAwG3B;EAEiB,QAAA,CAAA,EAAA,MAAA,GAAA,OAAA;;eAEd,OAAA,CAAA;EAAc,UAAA,IAAA,CAAA;;;;;;;;;;;;oBAnIG;;;cAIP;;+BAQyB;;;;;;;;iBAOtB,eAAA;;;;IAIb,mBAAwB,YAAY,MAAM;;;;iBAwG7B,SAAA,kCAEC,yBACN,mBACR"}
1
+ {"version":3,"file":"remark-structure-DGuWR82i.d.ts","names":[],"sources":["../src/mdx-plugins/remark-structure.ts"],"sourcesContent":[],"mappings":";;;;;UAaU,SAAA;;EAAA,OAAA,EAAA,MAAO;AAAA;AAUjB,UALU,OAAA,CAKO;EAQA,OAAA,EAAA,MAAA,GAAA,SAAgB;EAMJ,OAAA,EAAA,MAAA;;AAYV,UA1BF,cAAA,CA0BE;EAAkB,QAAA,EAzBzB,SAyByB,EAAA;EAAyB;AAO7D;;UAAA,EA5BW,OA4BX,EAAA;;AAAA,UAzBgB,gBAAA,CAyBhB;EAAA;;;;;EAoBY,KAAA,CAAA,EAAA,MAAA,EAAA,GAAA,CAAA,CAAA,IAAA,EAvCgB,KA+CS,EAAA,GAAA,OAAA,CAAA;EAOtB;;;;;;EAI6B,oBAAA,CAAA,EAAA,MAAA,EAAA,GAAA,CAAA,CAAA,IAAA,EA/C/B,iBA+C+B,EAAA,SAAA,EA9C1B,eA8C0B,GA9CR,yBA8CQ,EAAA,GAAA,OAAA,CAAA;EAAlB;;AAwG3B;EAEiB,QAAA,CAAA,EAAA,MAAA,GAAA,OAAA;;eAEd,OAAA,CAAA;EAAc,UAAA,IAAA,CAAA;;;;;;;;;;;;oBAnIG;;;cAIP;;+BAQyB;;;;;;;;iBAOtB,eAAA;;;;IAIb,mBAAwB,YAAY,MAAM;;;;iBAwG7B,SAAA,kCAEC,yBACN,mBACR"}
@@ -16,4 +16,4 @@ function removeUndefined(value, deep = false) {
16
16
 
17
17
  //#endregion
18
18
  export { removeUndefined as t };
19
- //# sourceMappingURL=remove-undefined-DgDIJk1A.js.map
19
+ //# sourceMappingURL=remove-undefined-Cfs4o_mM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"remove-undefined-DgDIJk1A.js","names":[],"sources":["../src/utils/remove-undefined.ts"],"sourcesContent":["export function removeUndefined<T extends object>(value: T, deep = false): T {\n const obj = value as Record<string, unknown>;\n\n for (const key in obj) {\n if (obj[key] === undefined) delete obj[key];\n if (!deep) continue;\n\n const entry = obj[key];\n\n if (typeof entry === 'object' && entry !== null) {\n removeUndefined(entry, deep);\n continue;\n }\n\n if (Array.isArray(entry)) {\n for (const item of entry) removeUndefined(item, deep);\n }\n }\n\n return value;\n}\n"],"mappings":";AAAA,SAAgB,gBAAkC,OAAU,OAAO,OAAU;CAC3E,MAAM,MAAM;AAEZ,MAAK,MAAM,OAAO,KAAK;AACrB,MAAI,IAAI,SAAS,OAAW,QAAO,IAAI;AACvC,MAAI,CAAC,KAAM;EAEX,MAAM,QAAQ,IAAI;AAElB,MAAI,OAAO,UAAU,YAAY,UAAU,MAAM;AAC/C,mBAAgB,OAAO,KAAK;AAC5B;;AAGF,MAAI,MAAM,QAAQ,MAAM,CACtB,MAAK,MAAM,QAAQ,MAAO,iBAAgB,MAAM,KAAK;;AAIzD,QAAO"}
1
+ {"version":3,"file":"remove-undefined-Cfs4o_mM.js","names":[],"sources":["../src/utils/remove-undefined.ts"],"sourcesContent":["export function removeUndefined<T extends object>(value: T, deep = false): T {\n const obj = value as Record<string, unknown>;\n\n for (const key in obj) {\n if (obj[key] === undefined) delete obj[key];\n if (!deep) continue;\n\n const entry = obj[key];\n\n if (typeof entry === 'object' && entry !== null) {\n removeUndefined(entry, deep);\n continue;\n }\n\n if (Array.isArray(entry)) {\n for (const item of entry) removeUndefined(item, deep);\n }\n }\n\n return value;\n}\n"],"mappings":";AAAA,SAAgB,gBAAkC,OAAU,OAAO,OAAU;CAC3E,MAAM,MAAM;AAEZ,MAAK,MAAM,OAAO,KAAK;AACrB,MAAI,IAAI,SAAS,OAAW,QAAO,IAAI;AACvC,MAAI,CAAC,KAAM;EAEX,MAAM,QAAQ,IAAI;AAElB,MAAI,OAAO,UAAU,YAAY,UAAU,MAAM;AAC/C,mBAAgB,OAAO,KAAK;AAC5B;;AAGF,MAAI,MAAM,QAAQ,MAAM,CACtB,MAAK,MAAM,QAAQ,MAAO,iBAAgB,MAAM,KAAK;;AAIzD,QAAO"}
@@ -1,3 +1,3 @@
1
- import "../remark-structure-RZD2gGKp.js";
2
- import { a as sync, i as setIndexSettings, n as DocumentRecord, o as updateDocuments, r as SyncOptions, t as BaseIndex } from "../algolia-CBBN8R6-.js";
1
+ import "../remark-structure-DGuWR82i.js";
2
+ import { a as sync, i as setIndexSettings, n as DocumentRecord, o as updateDocuments, r as SyncOptions, t as BaseIndex } from "../algolia-Cc1y6qWl.js";
3
3
  export { BaseIndex, DocumentRecord, SyncOptions, setIndexSettings, sync, updateDocuments };
@@ -1,8 +1,8 @@
1
1
  import "../definitions-DuxDer_c.js";
2
- import "../remark-structure-RZD2gGKp.js";
3
- import { t as BaseIndex } from "../algolia-CBBN8R6-.js";
2
+ import "../remark-structure-DGuWR82i.js";
3
+ import { t as BaseIndex } from "../algolia-Cc1y6qWl.js";
4
4
  import { SortedResult } from "./index.js";
5
- import "../server-CPR_fgkH.js";
5
+ import "../server-DmY4lGBs.js";
6
6
  import "../index-2U6Tl4--.js";
7
7
  import { DependencyList } from "react";
8
8
  import { AnyOrama } from "@orama/orama";
@@ -67,7 +67,7 @@ interface OramaCloudOptions {
67
67
  /**
68
68
  * The type of your index.
69
69
  *
70
- * You can set it to `crawler` if you use crawler instead of the JSON index with schema provided by Fumadocs
70
+ * You can set it to `crawler` if you use crawler instead of the JSON index with schema provided by Hanzo Docs
71
71
  */
72
72
  index?: 'default' | 'crawler';
73
73
  params?: Partial<OramaCloudSearchParams>;
@@ -57,15 +57,15 @@ function useDocsSearch(clientOptions, deps) {
57
57
  return fetchDocs(debouncedValue, client);
58
58
  }
59
59
  if (client.type === "algolia") {
60
- const { searchDocs } = await import("../algolia-BrWPzYE_.js");
60
+ const { searchDocs } = await import("../algolia-CQPXCnjV.js");
61
61
  return searchDocs(debouncedValue, client);
62
62
  }
63
63
  if (client.type === "orama-cloud") {
64
- const { searchDocs } = await import("../orama-cloud-MyA-JBt1.js");
64
+ const { searchDocs } = await import("../orama-cloud-DH3g37zc.js");
65
65
  return searchDocs(debouncedValue, client);
66
66
  }
67
67
  if (client.type === "static") {
68
- const { search: search$1 } = await import("../static-vTmR4-T2.js");
68
+ const { search: search$1 } = await import("../static-Dq8pA8Ay.js");
69
69
  return search$1(debouncedValue, client);
70
70
  }
71
71
  if (client.type === "mixedbread") {
@@ -1,3 +1,3 @@
1
- import { t as createContentHighlighter } from "../search-GCBSTRxD.js";
1
+ import { t as createContentHighlighter } from "../search-D6ChCLhY.js";
2
2
 
3
3
  export { createContentHighlighter };
@@ -1,6 +1,6 @@
1
1
  import "../remark-gfm-CeWpMwyk.js";
2
2
  import "../rehype-code-vVWG4-ej.js";
3
- import { n as StructuredData } from "../remark-structure-RZD2gGKp.js";
3
+ import { n as StructuredData } from "../remark-structure-DGuWR82i.js";
4
4
  import "../remark-heading-CXvCY0go.js";
5
5
  import "../remark-code-tab-CXsYlims.js";
6
6
  import "../mdx-plugins/index.js";
@@ -1,6 +1,6 @@
1
1
  import "../definitions-DuxDer_c.js";
2
- import "../remark-structure-RZD2gGKp.js";
2
+ import "../remark-structure-DGuWR82i.js";
3
3
  import { HighlightedText, ReactSortedResult, SortedResult, createContentHighlighter } from "./index.js";
4
- import { a as Index, c as SimpleOptions, d as initSimpleSearch, f as createI18nSearchAPI, i as ExportedData, l as createSearchAPI, n as AdvancedOptions, o as SearchAPI, p as createFromSource, r as Dynamic, s as SearchServer, t as AdvancedIndex, u as initAdvancedSearch } from "../server-CPR_fgkH.js";
4
+ import { a as Index, c as SimpleOptions, d as initSimpleSearch, f as createI18nSearchAPI, i as ExportedData, l as createSearchAPI, n as AdvancedOptions, o as SearchAPI, p as createFromSource, r as Dynamic, s as SearchServer, t as AdvancedIndex, u as initAdvancedSearch } from "../server-DmY4lGBs.js";
5
5
  import "../index-2U6Tl4--.js";
6
6
  export { AdvancedIndex, AdvancedOptions, Dynamic, ExportedData, HighlightedText, Index, ReactSortedResult, SearchAPI, SearchServer, SimpleOptions, SortedResult, createContentHighlighter, createFromSource, createI18nSearchAPI, createSearchAPI, initAdvancedSearch, initSimpleSearch };
@@ -1,7 +1,7 @@
1
1
  import { r as findPath } from "../utils-DUvi2WkD.js";
2
- import { r as extname, t as basename } from "../path-DPJpqaLb.js";
3
- import { t as createContentHighlighter } from "../search-GCBSTRxD.js";
4
- import { n as searchSimple, t as searchAdvanced } from "../advanced-CEwMef7q.js";
2
+ import { t as createContentHighlighter } from "../search-D6ChCLhY.js";
3
+ import { n as searchSimple, t as searchAdvanced } from "../advanced-BRT5Ij43.js";
4
+ import { r as extname, t as basename } from "../path-DHIjrDBP.js";
5
5
  import { create, insertMultiple, save } from "@orama/orama";
6
6
 
7
7
  //#region src/search/orama/create-endpoint.ts
@@ -41,4 +41,4 @@ function createContentHighlighter(query) {
41
41
 
42
42
  //#endregion
43
43
  export { createContentHighlighter as t };
44
- //# sourceMappingURL=search-GCBSTRxD.js.map
44
+ //# sourceMappingURL=search-D6ChCLhY.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search-GCBSTRxD.js","names":["out: HighlightedText[]"],"sources":["../src/search/index.ts"],"sourcesContent":["import type { ReactNode } from 'react';\n\nexport interface SortedResult<Content = string> {\n id: string;\n url: string;\n type: 'page' | 'heading' | 'text';\n content: Content;\n\n /**\n * breadcrumbs to be displayed on UI\n */\n breadcrumbs?: Content[];\n contentWithHighlights?: HighlightedText<Content>[];\n}\n\nexport type ReactSortedResult = SortedResult<ReactNode>;\n\nexport interface HighlightedText<Content = string> {\n type: 'text';\n content: Content;\n styles?: {\n highlight?: boolean;\n };\n}\n\nfunction escapeRegExp(input: string): string {\n return input.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction buildRegexFromQuery(q: string): RegExp | null {\n const trimmed = q.trim();\n if (trimmed.length === 0) return null;\n const terms = Array.from(\n new Set(\n trimmed\n .split(/\\s+/)\n .map((t) => t.trim())\n .filter(Boolean),\n ),\n );\n if (terms.length === 0) return null;\n const escaped = terms.map(escapeRegExp).join('|');\n return new RegExp(`(${escaped})`, 'gi');\n}\n\nexport function createContentHighlighter(query: string | RegExp) {\n const regex = typeof query === 'string' ? buildRegexFromQuery(query) : query;\n\n return {\n highlight(content: string): HighlightedText[] {\n if (!regex) return [{ type: 'text', content }];\n const out: HighlightedText[] = [];\n\n let i = 0;\n for (const match of content.matchAll(regex)) {\n if (i < match.index) {\n out.push({\n type: 'text',\n content: content.substring(i, match.index),\n });\n }\n\n out.push({\n type: 'text',\n content: match[0],\n styles: {\n highlight: true,\n },\n });\n\n i = match.index + match[0].length;\n }\n\n if (i < content.length) {\n out.push({\n type: 'text',\n content: content.substring(i),\n });\n }\n\n return out;\n },\n };\n}\n"],"mappings":";AAyBA,SAAS,aAAa,OAAuB;AAC3C,QAAO,MAAM,QAAQ,uBAAuB,OAAO;;AAGrD,SAAS,oBAAoB,GAA0B;CACrD,MAAM,UAAU,EAAE,MAAM;AACxB,KAAI,QAAQ,WAAW,EAAG,QAAO;CACjC,MAAM,QAAQ,MAAM,KAClB,IAAI,IACF,QACG,MAAM,MAAM,CACZ,KAAK,MAAM,EAAE,MAAM,CAAC,CACpB,OAAO,QAAQ,CACnB,CACF;AACD,KAAI,MAAM,WAAW,EAAG,QAAO;CAC/B,MAAM,UAAU,MAAM,IAAI,aAAa,CAAC,KAAK,IAAI;AACjD,QAAO,IAAI,OAAO,IAAI,QAAQ,IAAI,KAAK;;AAGzC,SAAgB,yBAAyB,OAAwB;CAC/D,MAAM,QAAQ,OAAO,UAAU,WAAW,oBAAoB,MAAM,GAAG;AAEvE,QAAO,EACL,UAAU,SAAoC;AAC5C,MAAI,CAAC,MAAO,QAAO,CAAC;GAAE,MAAM;GAAQ;GAAS,CAAC;EAC9C,MAAMA,MAAyB,EAAE;EAEjC,IAAI,IAAI;AACR,OAAK,MAAM,SAAS,QAAQ,SAAS,MAAM,EAAE;AAC3C,OAAI,IAAI,MAAM,MACZ,KAAI,KAAK;IACP,MAAM;IACN,SAAS,QAAQ,UAAU,GAAG,MAAM,MAAM;IAC3C,CAAC;AAGJ,OAAI,KAAK;IACP,MAAM;IACN,SAAS,MAAM;IACf,QAAQ,EACN,WAAW,MACZ;IACF,CAAC;AAEF,OAAI,MAAM,QAAQ,MAAM,GAAG;;AAG7B,MAAI,IAAI,QAAQ,OACd,KAAI,KAAK;GACP,MAAM;GACN,SAAS,QAAQ,UAAU,EAAE;GAC9B,CAAC;AAGJ,SAAO;IAEV"}
1
+ {"version":3,"file":"search-D6ChCLhY.js","names":["out: HighlightedText[]"],"sources":["../src/search/index.ts"],"sourcesContent":["import type { ReactNode } from 'react';\n\nexport interface SortedResult<Content = string> {\n id: string;\n url: string;\n type: 'page' | 'heading' | 'text';\n content: Content;\n\n /**\n * breadcrumbs to be displayed on UI\n */\n breadcrumbs?: Content[];\n contentWithHighlights?: HighlightedText<Content>[];\n}\n\nexport type ReactSortedResult = SortedResult<ReactNode>;\n\nexport interface HighlightedText<Content = string> {\n type: 'text';\n content: Content;\n styles?: {\n highlight?: boolean;\n };\n}\n\nfunction escapeRegExp(input: string): string {\n return input.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction buildRegexFromQuery(q: string): RegExp | null {\n const trimmed = q.trim();\n if (trimmed.length === 0) return null;\n const terms = Array.from(\n new Set(\n trimmed\n .split(/\\s+/)\n .map((t) => t.trim())\n .filter(Boolean),\n ),\n );\n if (terms.length === 0) return null;\n const escaped = terms.map(escapeRegExp).join('|');\n return new RegExp(`(${escaped})`, 'gi');\n}\n\nexport function createContentHighlighter(query: string | RegExp) {\n const regex = typeof query === 'string' ? buildRegexFromQuery(query) : query;\n\n return {\n highlight(content: string): HighlightedText[] {\n if (!regex) return [{ type: 'text', content }];\n const out: HighlightedText[] = [];\n\n let i = 0;\n for (const match of content.matchAll(regex)) {\n if (i < match.index) {\n out.push({\n type: 'text',\n content: content.substring(i, match.index),\n });\n }\n\n out.push({\n type: 'text',\n content: match[0],\n styles: {\n highlight: true,\n },\n });\n\n i = match.index + match[0].length;\n }\n\n if (i < content.length) {\n out.push({\n type: 'text',\n content: content.substring(i),\n });\n }\n\n return out;\n },\n };\n}\n"],"mappings":";AAyBA,SAAS,aAAa,OAAuB;AAC3C,QAAO,MAAM,QAAQ,uBAAuB,OAAO;;AAGrD,SAAS,oBAAoB,GAA0B;CACrD,MAAM,UAAU,EAAE,MAAM;AACxB,KAAI,QAAQ,WAAW,EAAG,QAAO;CACjC,MAAM,QAAQ,MAAM,KAClB,IAAI,IACF,QACG,MAAM,MAAM,CACZ,KAAK,MAAM,EAAE,MAAM,CAAC,CACpB,OAAO,QAAQ,CACnB,CACF;AACD,KAAI,MAAM,WAAW,EAAG,QAAO;CAC/B,MAAM,UAAU,MAAM,IAAI,aAAa,CAAC,KAAK,IAAI;AACjD,QAAO,IAAI,OAAO,IAAI,QAAQ,IAAI,KAAK;;AAGzC,SAAgB,yBAAyB,OAAwB;CAC/D,MAAM,QAAQ,OAAO,UAAU,WAAW,oBAAoB,MAAM,GAAG;AAEvE,QAAO,EACL,UAAU,SAAoC;AAC5C,MAAI,CAAC,MAAO,QAAO,CAAC;GAAE,MAAM;GAAQ;GAAS,CAAC;EAC9C,MAAMA,MAAyB,EAAE;EAEjC,IAAI,IAAI;AACR,OAAK,MAAM,SAAS,QAAQ,SAAS,MAAM,EAAE;AAC3C,OAAI,IAAI,MAAM,MACZ,KAAI,KAAK;IACP,MAAM;IACN,SAAS,QAAQ,UAAU,GAAG,MAAM,MAAM;IAC3C,CAAC;AAGJ,OAAI,KAAK;IACP,MAAM;IACN,SAAS,MAAM;IACf,QAAQ,EACN,WAAW,MACZ;IACF,CAAC;AAEF,OAAI,MAAM,QAAQ,MAAM,GAAG;;AAG7B,MAAI,IAAI,QAAQ,OACd,KAAI,KAAK;GACP,MAAM;GACN,SAAS,QAAQ,UAAU,EAAE;GAC9B,CAAC;AAGJ,SAAO;IAEV"}
@@ -1,4 +1,4 @@
1
- import { n as StructuredData } from "./remark-structure-RZD2gGKp.js";
1
+ import { n as StructuredData } from "./remark-structure-DGuWR82i.js";
2
2
  import { t as I18nConfig } from "./index-Bw-DCOra.js";
3
3
  import { SortedResult } from "./search/index.js";
4
4
  import { i as LoaderConfig, o as LoaderOutput, u as Page } from "./index-2U6Tl4--.js";
@@ -130,4 +130,4 @@ interface AdvancedIndex {
130
130
  declare function initAdvancedSearch(options: AdvancedOptions): SearchServer;
131
131
  //#endregion
132
132
  export { Index as a, SimpleOptions as c, initSimpleSearch as d, createI18nSearchAPI as f, ExportedData as i, createSearchAPI as l, AdvancedOptions as n, SearchAPI as o, createFromSource as p, Dynamic as r, SearchServer as s, AdvancedIndex as t, initAdvancedSearch as u };
133
- //# sourceMappingURL=server-CPR_fgkH.d.ts.map
133
+ //# sourceMappingURL=server-DmY4lGBs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server-CPR_fgkH.d.ts","names":[],"sources":["../src/search/orama/create-db.ts","../src/search/orama/create-from-source.ts","../src/search/orama/create-i18n.ts","../src/search/server.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"server-DmY4lGBs.d.ts","names":[],"sources":["../src/search/orama/create-db.ts","../src/search/orama/create-from-source.ts","../src/search/orama/create-i18n.ts","../src/search/server.ts"],"sourcesContent":[],"mappings":";;;;;;;KASY,cAAA,GAAiB,cAAc,aAAa;cAC3C;;;;EADD,SAAA,WAAc,EAAA,QAAA;EAA8B,SAAA,OAAA,EAAA,QAAA;EAAb,SAAA,QAAA,EAAA,QAAA;CAAd;AAAa,KAU9B,gBAAA,GAAmB,aAVW,CAUG,KAVH,CAAA,OAUgB,cAVhB,CAAA,CAAA;AAC7B,cAUA,cAHH,EAAA;EAEE,SAAA,OAAA,EAAA,QAAgB;EAA8B,SAAA,OAAA,EAAA,QAAA;EAAb,SAAA,IAAA,EAAA,QAAA;EAAd,SAAA,WAAA,EAAA,UAAA;EAAa,SAAA,IAAA,EAAA,QAAA;EAC/B,SAAA,GAAA,EAAA,QAQH;;;;;KCdL,eAAe,IAAI,QAAQ;UAqDtB,kBAAkB,sBAAsB,KAAK;sBAE7C,CD5DE,CAAA,MAAc,CAAA,SC4DE,UD5DF,CAAA,KAAA,UAAA,CAAA,GAAA,SAAA,GAAA,MAAA,IC6DlB,OD7DkB,CC6DV,eD7DU,CAAA,GC8DlB,QD9DkB,EAA8B;EAAb,UAAA,CAAA,EAAA,CAAA,IAAA,ECgErB,IDhEqB,CCgEhB,CDhEgB,CAAA,QAAA,CAAA,CAAA,UAAA,CAAA,CAAA,EAAA,GCgEa,SDhEb,CCgEuB,aDhEvB,CAAA;;AAAD,iBCmE1B,gBDnE0B,CAAA,UCmEC,YDnED,CAAA,CAAA,MAAA,ECoEhC,YDpEgC,CCoEnB,CDpEmB,CAAA,EAAA,OAAA,CAAA,ECqE9B,ODrE8B,CCqEtB,CDrEsB,CAAA,CAAA,ECsEvC,SDtEuC;;;KEOrC,sBAAsB,gBAAgB,wBAAwB,KACjE;QAGM;;;AFXR;EAAwD,SAAA,CAAA,EEgB1C,MFhB0C,CAAA,MAAA,EEgB3B,QFhB2B,GEgBhB,OFhBgB,CEgBR,CFhBQ,CAAA,GAAA,SAAA,CAAA;EAAb,OAAA,EEkBhC,UFlBgC,CEkBrB,GFlBqB,CAAA,EAAA,GEkBZ,OFlBY,CEkBJ,UFlBI,CEkBO,GFlBP,CAAA,CAAA;CAAd;KEqBxB,iBAAA,GAAoB,WFrBiB,CEqBL,aFrBK,EEqBU,KFrBV,CAAA;AAC1C,KEqBK,mBAAA,GAAsB,WFdjB,CEc6B,eFd7B,EEc8C,aFd9C,CAAA;AAEV,KEcK,UFdO,CAAA,CAAA,CAAA,GEcS,CFdT,GAAgB;EAA8B,MAAA,EAAA,MAAA;CAAb;AAAd,iBEwFf,mBFxFe,CAAA,UAAA,QAAA,GAAA,UAAA,CAAA,CAAA,IAAA,EEyFvB,CFzFuB,EAAA,OAAA,EE0FpB,CF1FoB,SAAA,QAAA,GE0FC,iBF1FD,GE0FqB,mBF1FrB,CAAA,EE2F5B,SF3F4B;;;KGJ1B,UAAA;KAEO,YAAA,IACP;QAAkB;AHTvB,CAAA,CAAA,GAAY;EAA4C,IAAA,EAAA,MAAA;EAAb,IAAA,EGY/B,MHZ+B,CAAA,MAAA,EGYhB,OHZgB,GAAA;IAAd,IAAA,EGYgB,UHZhB;EAAa,CAAA,CAAA;AAC1C,CAAA;AASY,UGKK,YAAA,CHLW;EAA8B,MAAA,EAAA,CAAA,KAAA,EAAA,MAAA,EAAA,OAC7C,CAD6C,EAAA;IAAb,MAAA,CAAA,EAAA,MAAA;IAAd,GAAA,CAAA,EAAA,MAAA,GAAA,MAAA,EAAA;IAAa,IAAA,CAAA,EAAA,QAAA,GAAA,MAAA;EAC/B,CAAA,EAAA,GGYN,OHZM,CGYE,YHJL,EAAA,CAAA;;;;ACjBmC;;EAGb,MAAA,EAAA,GAAA,GEyBhB,OFzBgB,CEyBR,YFzBQ,CAAA;;AAAD,UE4Bd,SAAA,SAAkB,YF5BJ,CAAA;EAqDrB,GAAA,EAAA,CAAA,OAAO,EExBA,OFwBA,EAAA,GExBY,OFwBZ,CExBoB,QFwBpB,CAAA;EAAW;;;EAEA,SAAA,EAAA,GAAA,GErBT,OFqBS,CErBD,QFqBC,CAAA;;;;;AAIN,KEnBV,OFmBU,CAAA,CAAA,CAAA,GAAA,GAAA,GEnBS,CFmBT,EAAA,GEnBe,OFmBf,CEnBuB,CFmBvB,EAAA,CAAA;KEjBjB,UAAA,GAAa,UFiBgD,CAAA,OEjB9B,MFiB8B,CAAA,CAAA,CAAA,CAAA;KEf7D,aAAA,GAAgB,IFemC,CEf9B,UFe8B,EAAA,MAAA,GAAA,YAAA,GAAA,SAAA,CAAA,GAAA;EANN,QAAA,CAAA,EAAA,MAAA;EAAI,SAAA,CAAA,EEPxC,QFOwC,CEP/B,UFO+B,CAAA,CAAA,YAAA,CAAA,CAAA,WAAA,CAAA;AAStD,CAAA;AAA2C,UEb1B,aAAA,SAAsB,aFaI,CAAA;EACpB,OAAA,EEbZ,KFaY,EAAA,GEbF,OFaE,CEbM,KFaN,CAAA;EAAb;;;EAEP,MAAA,CAAA,EEVQ,OFUR,CEVgB,YFUhB,CEV6B,KFU7B,CAAA,OEV0C,YFU1C,CAAA,EEVyD,cFUzD,CAAA,CAAA;;UEPc,eAAA,SAAwB;WAC9B,kBAAkB,QAAQ;;AD5DI;;EAGE,MAAA,CAAA,EC8DhC,OD9DgC,CC8DxB,YD9DwB,CC8DX,KD9DW,CAAA,OC8DE,cD9DF,CAAA,EC8DmB,gBD9DnB,CAAA,CAAA;;AAAwB,iBCiEnD,eDjEmD,CAAA,UCiEzB,UDjEyB,CAAA,CAAA,IAAA,ECkE3D,CDlE2D,EAAA,OAAA,ECmExD,CDnEwD,SAAA,QAAA,GCmEnC,aDnEmC,GCmEnB,eDnEmB,CAAA,ECoEhE,SDpEgE;AAI3D,UCwES,KAAA,CDxET;EAKqB,KAAA,EAAA,MAAA;EAAmB,WAAA,CAAA,EAAA,MAAA;EAAR,WAAA,CAAA,EAAA,MAAA,EAAA;EAA1B,OAAA,EAAA,MAAA;EAEQ,GAAA,EAAA,MAAA;EAAX,QAAA,CAAA,EAAA,MAAA;;AAA4B,iBC0EvB,gBAAA,CD1EuB,OAAA,EC0EG,aD1EH,CAAA,EC0EmB,YD1EnB;AAAR,UC4Fd,aAAA,CD5Fc;EAAO,EAAA,EAAA,MAAA;EAGjC,KAAA,EAAA,MAAA;EAAgC,WAAA,CAAA,EAAA,MAAA;EAAe,WAAA,CAAA,EAAA,MAAA,EAAA;EAA3B;;AAAW;EACG,GAAA,CAAA,EAAA,MAAA,GAAA,MAAA,EAAA;EAAiB;;;EAEnD,cAAU,ECoGG,cDpGI;EA0EN,GAAA,EAAA,MAAA;;AAEL,iBC4BK,kBAAA,CD5BL,OAAA,EC4BiC,eD5BjC,CAAA,EC4BmD,YD5BnD"}
@@ -47,7 +47,7 @@ function hastToJsx(hast, options) {
47
47
  });
48
48
  }
49
49
  /**
50
- * Get Shiki highlighter instance of Fumadocs (mostly for internal use, you should use Shiki directly over this).
50
+ * Get Shiki highlighter instance of Hanzo Docs (mostly for internal use, you should use Shiki directly over this).
51
51
  *
52
52
  * @param engineType - Shiki Regex engine to use.
53
53
  * @param options - Shiki options.
@@ -77,4 +77,4 @@ async function highlight(code, options) {
77
77
 
78
78
  //#endregion
79
79
  export { highlightHast as a, highlight as i, getHighlighter as n, hastToJsx as r, defaultThemes as t };
80
- //# sourceMappingURL=shiki-4oMYwHED.js.map
80
+ //# sourceMappingURL=shiki-B5wNmyIZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shiki-B5wNmyIZ.js","names":["themes: CodeOptionsThemes<BundledTheme>"],"sources":["../src/highlight/shiki.ts"],"sourcesContent":["import {\n type BundledHighlighterOptions,\n type BundledLanguage,\n type CodeOptionsMeta,\n type CodeOptionsThemes,\n type CodeToHastOptionsCommon,\n type Highlighter,\n} from 'shiki';\nimport type { BundledTheme } from 'shiki/themes';\nimport {\n type Components,\n type Options as ToJsxOptions,\n toJsxRuntime,\n} from 'hast-util-to-jsx-runtime';\nimport { Fragment, type ReactNode } from 'react';\nimport { jsx, jsxs } from 'react/jsx-runtime';\nimport type { Root } from 'hast';\n\nexport const defaultThemes = {\n light: 'github-light',\n dark: 'github-dark',\n};\n\nexport type HighlightOptionsCommon = CodeToHastOptionsCommon<BundledLanguage> &\n CodeOptionsMeta & {\n /**\n * The Regex Engine for Shiki\n *\n * @defaultValue 'js'\n */\n engine?: 'js' | 'oniguruma';\n components?: Partial<Components>;\n\n fallbackLanguage?: BundledLanguage;\n };\n\nexport type HighlightOptionsThemes = CodeOptionsThemes<BundledTheme>;\n\nexport type HighlightOptions = HighlightOptionsCommon &\n (HighlightOptionsThemes | Record<never, never>);\n\nconst highlighters = new Map<string, Promise<Highlighter>>();\n\nexport async function highlightHast(code: string, options: HighlightOptions): Promise<Root> {\n const { lang: initialLang, fallbackLanguage, components: _, engine = 'js', ...rest } = options;\n let lang = initialLang;\n let themes: CodeOptionsThemes<BundledTheme>;\n let themesToLoad;\n\n if ('theme' in options && options.theme) {\n themes = { theme: options.theme };\n themesToLoad = [themes.theme];\n } else {\n themes = {\n themes: 'themes' in options && options.themes ? options.themes : defaultThemes,\n };\n themesToLoad = Object.values(themes.themes).filter((v) => v !== undefined);\n }\n\n const highlighter = await getHighlighter(engine, {\n langs: [],\n themes: themesToLoad,\n });\n\n try {\n await highlighter.loadLanguage(lang as BundledLanguage);\n } catch {\n lang = fallbackLanguage ?? 'text';\n await highlighter.loadLanguage(lang as BundledLanguage);\n }\n\n return highlighter.codeToHast(code, {\n lang,\n ...rest,\n ...themes,\n defaultColor: 'themes' in themes ? false : undefined,\n });\n}\n\nexport function hastToJsx(hast: Root, options?: Partial<ToJsxOptions>) {\n return toJsxRuntime(hast, {\n jsx,\n jsxs,\n development: false,\n Fragment,\n ...options,\n });\n}\n\n/**\n * Get Shiki highlighter instance of Hanzo Docs (mostly for internal use, you should use Shiki directly over this).\n *\n * @param engineType - Shiki Regex engine to use.\n * @param options - Shiki options.\n */\nexport async function getHighlighter(\n engineType: 'js' | 'oniguruma',\n options: Omit<BundledHighlighterOptions<BundledLanguage, BundledTheme>, 'engine'>,\n) {\n const { createHighlighter } = await import('shiki');\n let highlighter = highlighters.get(engineType);\n\n if (!highlighter) {\n let engine;\n\n if (engineType === 'js') {\n engine = import('shiki/engine/javascript').then((res) => res.createJavaScriptRegexEngine());\n } else {\n engine = import('shiki/engine/oniguruma').then((res) =>\n res.createOnigurumaEngine(import('shiki/wasm')),\n );\n }\n\n highlighter = createHighlighter({\n ...options,\n engine,\n });\n\n highlighters.set(engineType, highlighter);\n return highlighter;\n }\n\n return highlighter.then(async (instance) => {\n await Promise.all([\n // @ts-expect-error unknown\n instance.loadLanguage(...options.langs),\n // @ts-expect-error unknown\n instance.loadTheme(...options.themes),\n ]);\n\n return instance;\n });\n}\n\nexport async function highlight(code: string, options: HighlightOptions): Promise<ReactNode> {\n return hastToJsx(await highlightHast(code, options), {\n components: options.components,\n });\n}\n"],"mappings":";;;;;AAkBA,MAAa,gBAAgB;CAC3B,OAAO;CACP,MAAM;CACP;AAoBD,MAAM,+BAAe,IAAI,KAAmC;AAE5D,eAAsB,cAAc,MAAc,SAA0C;CAC1F,MAAM,EAAE,MAAM,aAAa,kBAAkB,YAAY,GAAG,SAAS,MAAM,GAAG,SAAS;CACvF,IAAI,OAAO;CACX,IAAIA;CACJ,IAAI;AAEJ,KAAI,WAAW,WAAW,QAAQ,OAAO;AACvC,WAAS,EAAE,OAAO,QAAQ,OAAO;AACjC,iBAAe,CAAC,OAAO,MAAM;QACxB;AACL,WAAS,EACP,QAAQ,YAAY,WAAW,QAAQ,SAAS,QAAQ,SAAS,eAClE;AACD,iBAAe,OAAO,OAAO,OAAO,OAAO,CAAC,QAAQ,MAAM,MAAM,OAAU;;CAG5E,MAAM,cAAc,MAAM,eAAe,QAAQ;EAC/C,OAAO,EAAE;EACT,QAAQ;EACT,CAAC;AAEF,KAAI;AACF,QAAM,YAAY,aAAa,KAAwB;SACjD;AACN,SAAO,oBAAoB;AAC3B,QAAM,YAAY,aAAa,KAAwB;;AAGzD,QAAO,YAAY,WAAW,MAAM;EAClC;EACA,GAAG;EACH,GAAG;EACH,cAAc,YAAY,SAAS,QAAQ;EAC5C,CAAC;;AAGJ,SAAgB,UAAU,MAAY,SAAiC;AACrE,QAAO,aAAa,MAAM;EACxB;EACA;EACA,aAAa;EACb;EACA,GAAG;EACJ,CAAC;;;;;;;;AASJ,eAAsB,eACpB,YACA,SACA;CACA,MAAM,EAAE,sBAAsB,MAAM,OAAO;CAC3C,IAAI,cAAc,aAAa,IAAI,WAAW;AAE9C,KAAI,CAAC,aAAa;EAChB,IAAI;AAEJ,MAAI,eAAe,KACjB,UAAS,OAAO,2BAA2B,MAAM,QAAQ,IAAI,6BAA6B,CAAC;MAE3F,UAAS,OAAO,0BAA0B,MAAM,QAC9C,IAAI,sBAAsB,OAAO,cAAc,CAChD;AAGH,gBAAc,kBAAkB;GAC9B,GAAG;GACH;GACD,CAAC;AAEF,eAAa,IAAI,YAAY,YAAY;AACzC,SAAO;;AAGT,QAAO,YAAY,KAAK,OAAO,aAAa;AAC1C,QAAM,QAAQ,IAAI,CAEhB,SAAS,aAAa,GAAG,QAAQ,MAAM,EAEvC,SAAS,UAAU,GAAG,QAAQ,OAAO,CACtC,CAAC;AAEF,SAAO;GACP;;AAGJ,eAAsB,UAAU,MAAc,SAA+C;AAC3F,QAAO,UAAU,MAAM,cAAc,MAAM,QAAQ,EAAE,EACnD,YAAY,QAAQ,YACrB,CAAC"}
@@ -21,7 +21,7 @@ type HighlightOptions = HighlightOptionsCommon & (HighlightOptionsThemes | Recor
21
21
  declare function highlightHast(code: string, options: HighlightOptions): Promise<Root>;
22
22
  declare function hastToJsx(hast: Root, options?: Partial<Options>): JSX.Element;
23
23
  /**
24
- * Get Shiki highlighter instance of Fumadocs (mostly for internal use, you should use Shiki directly over this).
24
+ * Get Shiki highlighter instance of Hanzo Docs (mostly for internal use, you should use Shiki directly over this).
25
25
  *
26
26
  * @param engineType - Shiki Regex engine to use.
27
27
  * @param options - Shiki options.
@@ -30,4 +30,4 @@ declare function getHighlighter(engineType: 'js' | 'oniguruma', options: Omit<Bu
30
30
  declare function highlight(code: string, options: HighlightOptions): Promise<ReactNode>;
31
31
  //#endregion
32
32
  export { hastToJsx as a, getHighlighter as i, HighlightOptionsCommon as n, highlight as o, HighlightOptionsThemes as r, highlightHast as s, HighlightOptions as t };
33
- //# sourceMappingURL=shiki-CIBQys54.d.ts.map
33
+ //# sourceMappingURL=shiki-Dq3XIYAT.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shiki-CIBQys54.d.ts","names":[],"sources":["../src/highlight/shiki.ts"],"sourcesContent":[],"mappings":";;;;;;;;AAuBqC,KAAzB,sBAAA,GAAyB,uBAAA,CAAwB,eAAxB,CAAA,GACnC,eADmC,GAAA;EACnC;;;;;EAYU,MAAA,CAAA,EAAA,IAAA,GAAA,WAAsB;EAEtB,UAAA,CAAA,EAPK,OAOW,CAPH,UAOG,CAAA;EAAG,gBAAA,CAAA,EALR,eAKQ;CAC5B;AAAyB,KAHhB,sBAAA,GAAyB,iBAGT,CAH2B,YAG3B,CAAA;AAAM,KADtB,gBAAA,GAAmB,sBACG,GAAA,CAA/B,sBAA+B,GAAN,MAAM,CAAA,KAAA,EAAA,KAAA,CAAA,CAAA;AAIZ,iBAAA,aAAA,CAAa,IAAA,EAAA,MAAA,EAAA,OAAA,EAAwB,gBAAxB,CAAA,EAA2C,OAA3C,CAAmD,IAAnD,CAAA;AAAwB,iBAoC3C,SAAA,CApC2C,IAAA,EAoC3B,IApC2B,EAAA,OAAA,CAAA,EAoCX,OApCW,CAoCH,OApCG,CAAA,CAAA,EAoCU,GAAA,CAAA,OApCV;;;;AAoC3D;;;AAAgD,iBAgB1B,cAAA,CAhB0B,UAAA,EAAA,IAAA,GAAA,WAAA,EAAA,OAAA,EAkBrC,IAlBqC,CAkBhC,yBAlBgC,CAkBN,eAlBM,EAkBW,YAlBX,CAAA,EAAA,QAAA,CAAA,CAAA,EAkBmC,OAlBnC,CAkBmC,WAlBnC,CAAA;AAAqB,iBAuD/C,SAAA,CAvD+C,IAAA,EAAA,MAAA,EAAA,OAAA,EAuDd,gBAvDc,CAAA,EAuDK,OAvDL,CAuDa,SAvDb,CAAA"}
1
+ {"version":3,"file":"shiki-Dq3XIYAT.d.ts","names":[],"sources":["../src/highlight/shiki.ts"],"sourcesContent":[],"mappings":";;;;;;;;AAuBqC,KAAzB,sBAAA,GAAyB,uBAAA,CAAwB,eAAxB,CAAA,GACnC,eADmC,GAAA;EACnC;;;;;EAYU,MAAA,CAAA,EAAA,IAAA,GAAA,WAAsB;EAEtB,UAAA,CAAA,EAPK,OAOW,CAPH,UAOG,CAAA;EAAG,gBAAA,CAAA,EALR,eAKQ;CAC5B;AAAyB,KAHhB,sBAAA,GAAyB,iBAGT,CAH2B,YAG3B,CAAA;AAAM,KADtB,gBAAA,GAAmB,sBACG,GAAA,CAA/B,sBAA+B,GAAN,MAAM,CAAA,KAAA,EAAA,KAAA,CAAA,CAAA;AAIZ,iBAAA,aAAA,CAAa,IAAA,EAAA,MAAA,EAAA,OAAA,EAAwB,gBAAxB,CAAA,EAA2C,OAA3C,CAAmD,IAAnD,CAAA;AAAwB,iBAoC3C,SAAA,CApC2C,IAAA,EAoC3B,IApC2B,EAAA,OAAA,CAAA,EAoCX,OApCW,CAoCH,OApCG,CAAA,CAAA,EAoCU,GAAA,CAAA,OApCV;;;;AAoC3D;;;AAAgD,iBAgB1B,cAAA,CAhB0B,UAAA,EAAA,IAAA,GAAA,WAAA,EAAA,OAAA,EAkBrC,IAlBqC,CAkBhC,yBAlBgC,CAkBN,eAlBM,EAkBW,YAlBX,CAAA,EAAA,QAAA,CAAA,CAAA,EAkBmC,OAlBnC,CAkBmC,WAlBnC,CAAA;AAAqB,iBAuD/C,SAAA,CAvD+C,IAAA,EAAA,MAAA,EAAA,OAAA,EAuDd,gBAvDc,CAAA,EAuDK,OAvDL,CAuDa,SAvDb,CAAA"}
@@ -8,11 +8,11 @@ declare function deserializePageTree(root: Root): Root;
8
8
  *
9
9
  * It only receives the serialized data from server-side, hence not sharing plugins and some properties.
10
10
  */
11
- declare function useFumadocsLoader<V extends {
11
+ declare function useDocsLoader<V extends {
12
12
  pageTree?: object;
13
13
  }>(serialized: V): {
14
14
  pageTree: V["pageTree"] extends object ? Root : undefined;
15
15
  };
16
16
  //#endregion
17
- export { deserializePageTree, useFumadocsLoader };
17
+ export { deserializePageTree, useDocsLoader };
18
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/source/client/index.tsx"],"sourcesContent":[],"mappings":";;;;iBAIgB,mBAAA,OAA0B,OAAgB;;;AAA1D;AA2BA;;AAWgB,iBAXA,iBAWA,CAAA,UAAA;EAA+B,QAAA,CAAA,EAAA,MAAA;CAAa,CAAA,CAAA,UAAA,EAP9C,CAO8C,CAAA,EAAA;YAA5C,+BAA+B"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/source/client/index.tsx"],"sourcesContent":[],"mappings":";;;;iBAIgB,mBAAA,OAA0B,OAAgB;;;AAA1D;AA2BA;;AAWgB,iBAXA,aAWA,CAAA,UAAA;EAA+B,QAAA,CAAA,EAAA,MAAA;CAAa,CAAA,CAAA,UAAA,EAP9C,CAO8C,CAAA,EAAA;YAA5C,+BAA+B"}
@@ -18,7 +18,7 @@ function deserializePageTree(root) {
18
18
  *
19
19
  * It only receives the serialized data from server-side, hence not sharing plugins and some properties.
20
20
  */
21
- function useFumadocsLoader(serialized) {
21
+ function useDocsLoader(serialized) {
22
22
  const { pageTree } = serialized;
23
23
  return useMemo(() => {
24
24
  return { pageTree: pageTree ? deserializePageTree(pageTree) : void 0 };
@@ -26,5 +26,5 @@ function useFumadocsLoader(serialized) {
26
26
  }
27
27
 
28
28
  //#endregion
29
- export { deserializePageTree, useFumadocsLoader };
29
+ export { deserializePageTree, useDocsLoader };
30
30
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/source/client/index.tsx"],"sourcesContent":["import type * as PageTree from '@/page-tree';\nimport { visit } from '@/page-tree/utils';\nimport { useMemo } from 'react';\n\nexport function deserializePageTree(root: PageTree.Root): PageTree.Root {\n function deserializeHTML(html: string) {\n return (\n <span\n dangerouslySetInnerHTML={{\n __html: html,\n }}\n />\n );\n }\n visit(root, (item) => {\n if ('icon' in item && typeof item.icon === 'string') {\n item.icon = deserializeHTML(item.icon);\n }\n if (typeof item.name === 'string') {\n item.name = deserializeHTML(item.name);\n }\n });\n\n return root;\n}\n\n/**\n * Deserialize data passed from server-side loader.\n *\n * It only receives the serialized data from server-side, hence not sharing plugins and some properties.\n */\nexport function useFumadocsLoader<\n V extends {\n pageTree?: object;\n },\n>(serialized: V) {\n const { pageTree } = serialized;\n\n return useMemo(() => {\n return {\n pageTree: pageTree ? deserializePageTree(pageTree as PageTree.Root) : undefined,\n } as {\n pageTree: V['pageTree'] extends object ? PageTree.Root : undefined;\n };\n }, [pageTree]);\n}\n"],"mappings":";;;;;AAIA,SAAgB,oBAAoB,MAAoC;CACtE,SAAS,gBAAgB,MAAc;AACrC,SACE,oBAAC,UACC,yBAAyB,EACvB,QAAQ,MACT,GACD;;AAGN,OAAM,OAAO,SAAS;AACpB,MAAI,UAAU,QAAQ,OAAO,KAAK,SAAS,SACzC,MAAK,OAAO,gBAAgB,KAAK,KAAK;AAExC,MAAI,OAAO,KAAK,SAAS,SACvB,MAAK,OAAO,gBAAgB,KAAK,KAAK;GAExC;AAEF,QAAO;;;;;;;AAQT,SAAgB,kBAId,YAAe;CACf,MAAM,EAAE,aAAa;AAErB,QAAO,cAAc;AACnB,SAAO,EACL,UAAU,WAAW,oBAAoB,SAA0B,GAAG,QACvE;IAGA,CAAC,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/source/client/index.tsx"],"sourcesContent":["import type * as PageTree from '@/page-tree';\nimport { visit } from '@/page-tree/utils';\nimport { useMemo } from 'react';\n\nexport function deserializePageTree(root: PageTree.Root): PageTree.Root {\n function deserializeHTML(html: string) {\n return (\n <span\n dangerouslySetInnerHTML={{\n __html: html,\n }}\n />\n );\n }\n visit(root, (item) => {\n if ('icon' in item && typeof item.icon === 'string') {\n item.icon = deserializeHTML(item.icon);\n }\n if (typeof item.name === 'string') {\n item.name = deserializeHTML(item.name);\n }\n });\n\n return root;\n}\n\n/**\n * Deserialize data passed from server-side loader.\n *\n * It only receives the serialized data from server-side, hence not sharing plugins and some properties.\n */\nexport function useDocsLoader<\n V extends {\n pageTree?: object;\n },\n>(serialized: V) {\n const { pageTree } = serialized;\n\n return useMemo(() => {\n return {\n pageTree: pageTree ? deserializePageTree(pageTree as PageTree.Root) : undefined,\n } as {\n pageTree: V['pageTree'] extends object ? PageTree.Root : undefined;\n };\n }, [pageTree]);\n}\n"],"mappings":";;;;;AAIA,SAAgB,oBAAoB,MAAoC;CACtE,SAAS,gBAAgB,MAAc;AACrC,SACE,oBAAC,UACC,yBAAyB,EACvB,QAAQ,MACT,GACD;;AAGN,OAAM,OAAO,SAAS;AACpB,MAAI,UAAU,QAAQ,OAAO,KAAK,SAAS,SACzC,MAAK,OAAO,gBAAgB,KAAK,KAAK;AAExC,MAAI,OAAO,KAAK,SAAS,SACvB,MAAK,OAAO,gBAAgB,KAAK,KAAK;GAExC;AAEF,QAAO;;;;;;;AAQT,SAAgB,cAId,YAAe;CACf,MAAM,EAAE,aAAa;AAErB,QAAO,cAAc;AACnB,SAAO,EACL,UAAU,WAAW,oBAAoB,SAA0B,GAAG,QACvE;IAGA,CAAC,SAAS,CAAC"}