docfuse 0.1.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.
@@ -0,0 +1,661 @@
1
+ import{a as H,b as B,c as yt,d as F,e as bt,f as _,g as wt,h as Pt,i as St,k as Et}from"./chunk-M47X2MM3.js";import{a as V,b as g,d as kt,e as vt}from"./chunk-GNYJERGG.js";import{a as xt,b as Dt,c as Mt,d as Ct,e as Nt,f as At}from"./chunk-S36HQTIA.js";import{a as ht,c as j,j as gt}from"./chunk-DOOG32NU.js";import{a as Z}from"./chunk-5NTRNUFG.js";import{a as q}from"./chunk-GRQDPV4U.js";import{b as G}from"./chunk-EAYVCA3Z.js";import{a as X,b as O,c as ee,d as K,e as L,f as ft,h as T}from"./chunk-JK7ZNBUA.js";import{a as s}from"./chunk-AYDF3IFZ.js";import{randomUUID as Rn}from"crypto";import{mkdir as Ln,rename as Me,rm as me,writeFile as Tn}from"fs/promises";import{basename as ao,dirname as ct,join as lt,relative as $n,resolve as On}from"path";import{mkdir as Ee,open as co,rm as lo,writeFile as Ae}from"fs/promises";import{dirname as uo,join as $,posix as Tt}from"path";import{analyzeMarkdown as Rt}from"@docfuse/markdown/server/analyze";function Lt({description:e,body:t}){if(e.trim())return e.trim();let r=t.split(/\n\n+/).find(o=>{let a=o.trim();if(!a)return!1;let i=Rt(a);return i.text&&i.headings.length===0});return r?Rt(r.trim()).text:""}s(Lt,"createDeterministicSummary");var mo=1;function $t(e){return e.replace(/\r?\n/g," ").replace(/([\\[\]])/g,"\\$1")}s($t,"markdownLinkLabel");function Ot(e,t){let r=`${t.routePath}index.md`;return{title:t.title,description:t.description,routePath:g(e,t.routePath),markdownPath:g(e,r),version:t.version,locale:t.locale,status:t.status,tags:Array.isArray(t.frontmatter.tags)?t.frontmatter.tags.filter(o=>typeof o=="string"):[],owner:typeof t.frontmatter.owner=="string"?t.frontmatter.owner:void 0,headings:t.headings,lastUpdated:t.lastUpdated,frontmatter:yt(t.frontmatter)}}s(Ot,"pageMetadata");async function fe(e,t){await Ee(uo(e),{recursive:!0});let r=await co(e,"w");try{for await(let o of t)await r.write(o)}finally{await r.close()}}s(fe,"writePieces");async function Ne(e,t,r){async function*o(){yield`{"${t}":[`;let a=!0;for(let i of r)yield`${a?"":","}
2
+ ${JSON.stringify(i,null,2)}`,a=!1;yield`${a?"":`
3
+ `}]}
4
+ `}s(o,"pieces"),await fe(e,o())}s(Ne,"writeJsonArray");function po(e,t){return t.pages.filter(r=>r.ai&&(e.ai.versions==="all"||r.version===t.currentVersion))}s(po,"selectedPages");function fo(e){if(e==='"'||e==="\\")return 2;let t=e.codePointAt(0)??0;return t===8||t===9||t===10||t===12||t===13?2:t<32?6:Buffer.byteLength(e)}s(fo,"jsonEscapedCharacterBytes");function ho(e,t,r){let o=Buffer.byteLength(JSON.stringify({...e,part:999999999,parts:999999999,content:""})+`
5
+ `),a=r-o;if(a<1)throw new Error(`AI chunkSizeBytes ${r} is too small for page metadata`);let i=[],c=0,n=0,d=0;for(let l of t){let m=fo(l);n>c&&d+m>a&&(i.push(t.slice(c,n)),c=n,d=0),n+=l.length,d+=m}i.push(t.slice(c,n));let u=i.map((l,m)=>({...e,part:m+1,parts:i.length,content:l}));for(let l of u)if(Buffer.byteLength(JSON.stringify(l)+`
6
+ `)>r)throw new Error(`Unable to keep AI content record within ${r} bytes: ${e.routePath}`);return u}s(ho,"splitContentRecord");async function go(e,t,r,o,a){let i=Tt.join("ai","content",r,o),c=[],n="",d=0;async function u(){if(!n)return;let l=`${String(c.length+1).padStart(4,"0")}.jsonl`,m=Tt.join(i,l),f=Buffer.byteLength(n);await Ae($(e,m),n),c.push({path:g(t,`/${m}`),bytes:f,records:d,fingerprint:B(Buffer.from(n))}),n="",d=0}s(u,"flush"),await Ee($(e,i),{recursive:!0});for(let l of a){let m=Ot(t,l),f={routePath:m.routePath,markdownPath:m.markdownPath,title:l.title,description:l.description,version:l.version,locale:l.locale};for(let b of ho(f,l.body,t.ai.chunkSizeBytes)){let h=JSON.stringify(b)+`
7
+ `;n&&Buffer.byteLength(n)+Buffer.byteLength(h)>t.ai.chunkSizeBytes&&await u(),n+=h,d+=1}}return await u(),c}s(go,"writePartition");function yo(e){let t=Buffer.byteLength(`
8
+
9
+ ---
10
+
11
+ `);return e.reduce((r,o,a)=>r+Buffer.byteLength(o.body)+(a?t:0),0)}s(yo,"llmsFullBytes");async function Ft(e,t,r){let o=L(e,t.outputDir),a=$(o,"ai"),i=$(a,"content");await Ee(a,{recursive:!0}),await lo(i,{recursive:!0,force:!0});let c=po(t,r),n=c.map(f=>Ot(t,f)),d=new Map;for(let f of c){let b=`${f.version}\0${f.locale}`,h=d.get(b)??[];h.push(f),d.set(b,h)}let u=[];for(let[f,b]of d){let[h="",S=""]=f.split("\0"),D=await go(o,t,h,S,b);u.push({version:h,locale:S,pages:b.length,sourceBytes:b.reduce((p,P)=>p+Buffer.byteLength(P.body),0),shards:D})}if(await Ne($(a,"pages.json"),"pages",n),t.ai.pageSummaries&&await Ne($(a,"summaries.json"),"summaries",c.map(f=>({routePath:g(t,f.routePath),summary:Lt({description:f.description,body:f.body})}))),t.ai.codeExamples){function*f(){for(let b of c)for(let h of b.codeExamples)yield{routePath:g(t,b.routePath),...h}}s(f,"examples"),await Ne($(a,"code-examples.json"),"examples",f())}t.ai.markdownIndex&&await fe($(a,"index.md"),n.map(f=>`- [${$t(f.title||f.routePath)}](${f.markdownPath})
12
+ `)),t.ai.llmsTxt&&await fe($(o,"llms.txt"),n.map(f=>`- [${$t(f.title||f.routePath)}](${f.routePath})
13
+ `));let l=yo(c),m="disabled";if(t.ai.llmsFullTxt)if(l<=t.ai.llmsFullMaxBytes){async function*f(){for(let[b,h]of c.entries())b&&(yield`
14
+
15
+ ---
16
+
17
+ `),yield h.body}s(f,"bodies"),await fe($(o,"llms-full.txt"),f()),m="full"}else{if(t.ai.llmsFullOverflow==="error")throw new Error(`llms-full.txt requires ${l} bytes, exceeding ai.llmsFullMaxBytes ${t.ai.llmsFullMaxBytes}`);await Ae($(o,"llms-full.txt"),["# Docfuse AI content manifest","",`The full Markdown corpus requires ${l} bytes and exceeds the configured single-file budget of ${t.ai.llmsFullMaxBytes} bytes.`,"",`Use ${g(t,"/ai/manifest.json")} to load the complete versioned and locale-partitioned content shards.`,""].join(`
18
+ `)),m="manifest",Z(`llms-full.txt exceeded ${t.ai.llmsFullMaxBytes} bytes; wrote a bounded manifest pointer instead`)}await Ae($(a,"manifest.json"),JSON.stringify({schemaVersion:mo,currentVersion:r.currentVersion,includedVersions:t.ai.versions,totals:{pages:c.length,sourceBytes:c.reduce((f,b)=>f+Buffer.byteLength(b.body),0)},budgets:{chunkSizeBytes:t.ai.chunkSizeBytes,llmsFullMaxBytes:t.ai.llmsFullMaxBytes},llmsFull:{enabled:t.ai.llmsFullTxt,mode:m,sourceBytes:l,path:t.ai.llmsFullTxt?g(t,"/llms-full.txt"):null},partitions:u},null,2))}s(Ft,"writeAiOutputs");import{cp as tn,mkdir as Ze,rm as et,writeFile as xe}from"fs/promises";import{dirname as jr,join as W}from"path";import{renderToStaticMarkup as rn}from"react-dom/server";import{createMarkdownRenderer as on}from"@docfuse/markdown/server";import{detectMarkdownAssets as Hr}from"@docfuse/markdown/server/analyze";import{createRequire as bo}from"module";import{readFile as Bt}from"fs/promises";import{dirname as _t,join as Ut}from"path";var qt=bo(import.meta.url);function jt(e){return qt.resolve(e)}s(jt,"resolveFromModule");function Ht(e){try{return qt.resolve(e,{paths:[process.cwd()]})}catch(t){throw new Error(`Cannot resolve ${e} from ${process.cwd()}. Install @docfuse/plugins to include math styles.`,{cause:t})}}s(Ht,"resolveFromProject");async function wo(){return Bt(new URL("./styles.input.css",import.meta.url),"utf8")}s(wo,"readInputCss");function zt(){return Ut(_t(Ht("@docfuse/plugins/math.css")),"fonts")}s(zt,"mathFontsDir");function Gt(){return Ut(_t(jt("@docfuse/markdown/base.css")),"file-icons")}s(Gt,"markdownFileIconsDir");async function Re(e,t=!1){return Bt(t?Ht(e):jt(e),"utf8")}s(Re,"readPublishedCss");async function ko({math:e=!1}={}){let[t,r,o,a]=await Promise.all([wo(),Re("@docfuse/markdown/base.css"),Re("@docfuse/markdown/theme.css"),e?Re("@docfuse/plugins/math.css",!0):void 0]);return`/* Markdown base */
19
+ ${r}
20
+ /* Default theme */
21
+ ${o}
22
+ ${a?`/* Math */
23
+ ${a}
24
+ `:""}/* Docfuse shell */
25
+ ${t}
26
+ `}s(ko,"compileCss");var It=new Map;function Kt(e={}){let t=e.math===!0,r=It.get(t);return r||(r=ko({math:t}),It.set(t,r)),r}s(Kt,"buildCssCached");import{Bot as vo,Box as Po,Code2 as So,FileCode2 as xo,FileText as Do,Gauge as Mo,Globe2 as Co,Layers3 as No,Rocket as Ao,Search as Eo,Sparkles as Ro,SquareTerminal as Lo}from"lucide-react";import{Fragment as $o,jsx as A,jsxs as te}from"react/jsx-runtime";var To={ai:vo,box:Po,code:So,file:Do,"file-code":xo,gauge:Mo,globe:Co,layers:No,rocket:Ao,search:Eo,sparkles:Ro,terminal:Lo};function Vt({name:e,className:t}){if(!e)return null;let r=To[e];return A(r,{"aria-hidden":"true",className:t,strokeWidth:1.8})}s(Vt,"HomeIcon");function Wt({page:e,config:t}){let r=e.frontmatter.hero??{},o=e.frontmatter.features??[],a=r.actions??[];return te($o,{children:[te("section",{className:`df-hero${r.image?" df-hero-with-visual":""}`,children:[te("div",{className:"df-hero-copy",children:[A("h1",{className:"df-hero-title",children:e.title}),r.accent?A("p",{className:"df-hero-accent",children:r.accent}):null,r.tagline?A("p",{className:"df-hero-tagline",children:r.tagline}):null,a.length>0?A("div",{className:"df-hero-actions",children:a.map(i=>te("a",{className:`df-btn ${i.primary?"df-btn-primary":"df-btn-secondary"}`,href:g(t,i.link),children:[A(Vt,{name:i.icon}),i.text]},i.link))}):null]}),r.image?A("div",{className:"df-hero-visual",children:A("img",{src:g(t,r.image),alt:r.imageAlt??"",decoding:"async",fetchPriority:"high"})}):null]}),o.length>0?A("section",{className:"df-feature-section",children:A("div",{className:"df-features",children:o.map((i,c)=>te("article",{className:"df-feature",children:[i.image||i.icon?A("div",{className:"df-feature-icon",children:i.image?A("img",{src:g(t,i.image),alt:"",width:"32",height:"32",decoding:"async"}):A(Vt,{name:i.icon})}):null,A("h3",{children:i.title}),A("p",{children:i.details})]},`${i.title}-${c}`))})}):null]})}s(Wt,"HomeHero");import{ChevronDown as Go,Code2 as Ko,Eye as Vo}from"lucide-react";var Oo={labels:{skipToContent:"\u8DF3\u5230\u6B63\u6587",search:"\u641C\u7D22\u6587\u6863",searchEmpty:"\u6CA1\u6709\u627E\u5230\u5339\u914D\u6587\u6863",searchUnavailable:"\u641C\u7D22\u7D22\u5F15\u6682\u65F6\u4E0D\u53EF\u7528",language:"\u8BED\u8A00",primaryNavigation:"\u4E3B\u5BFC\u822A",theme:"\u5207\u6362\u4E3B\u9898",openSidebar:"\u6253\u5F00\u4FA7\u8FB9\u680F",onThisPage:"\u672C\u9875\u76EE\u5F55",edit:"\u7F16\u8F91\u6B64\u9875",updated:"\u6700\u540E\u66F4\u65B0",previous:"\u4E0A\u4E00\u9875",next:"\u4E0B\u4E00\u9875",close:"\u5173\u95ED",source:"\u6E90\u6587\u6863",preview:"\u9884\u89C8\u6548\u679C",copySource:"\u590D\u5236\u6E90\u6587\u6863",sourceCopied:"\u6E90\u6587\u6863\u5DF2\u590D\u5236",quickActions:"\u5FEB\u6377\u5165\u53E3",github:"GitHub \u4ED3\u5E93",docsNavigation:"\u6587\u6863\u5BFC\u822A",pageNavigation:"\u9875\u9762\u5BFC\u822A",advertisement:"\u63A8\u5E7F",version:"\u6587\u6863\u7248\u672C"},brandTagline:"\u9762\u5411 AI \u7684 React/MDX \u6587\u6863",markdownElementGroups:[{id:"headings",label:"\u6807\u9898\u4E0E\u6B63\u6587",detail:"H1-H6 \xB7 p \xB7 hr",hash:"\u6807\u9898\u4E0E\u6B63\u6587"},{id:"inline",label:"\u884C\u5185\u8BED\u4E49",detail:"a \xB7 strong \xB7 code",hash:"\u884C\u5185\u8BED\u4E49"},{id:"lists",label:"\u5217\u8868\u4E0E\u4EFB\u52A1",detail:"ul \xB7 ol \xB7 task",hash:"\u5217\u8868\u4E0E\u4EFB\u52A1"},{id:"callouts",label:"\u5F15\u7528\u4E0E\u63D0\u793A",detail:"quote \xB7 callout",hash:"\u5F15\u7528\u4E0E\u63D0\u793A"},{id:"code",label:"\u4EE3\u7801\u4E0E\u7EC8\u7AEF",detail:"Shiki \xB7 pre \xB7 diff",hash:"\u4EE3\u7801\u4E0E\u7EC8\u7AEF"},{id:"tables",label:"\u8868\u683C\u4E0E\u6570\u636E",detail:"table \xB7 CSV \xB7 sort",hash:"\u8868\u683C\u4E0E\u6570\u636E"},{id:"media",label:"\u5A92\u4F53\u4E0E\u5D4C\u5165",detail:"img \xB7 video \xB7 iframe",hash:"\u5A92\u4F53\u4E0E\u5D4C\u5165"},{id:"diagrams",label:"\u56FE\u8868\u4E0E\u6570\u5B66",detail:"Mermaid \xB7 PlantUML \xB7 KaTeX",hash:"\u56FE\u8868\u4E0E\u6570\u5B66"},{id:"disclosure",label:"\u6298\u53E0\u4E0E\u811A\u6CE8",detail:"details \xB7 footnotes",hash:"\u6298\u53E0\u4E0E\u811A\u6CE8"},{id:"extensions",label:"\u6269\u5C55\u5185\u5BB9\u7EC4\u4EF6",detail:"tabs \xB7 steps \xB7 cards \xB7 tree",hash:"\u6269\u5C55\u5185\u5BB9\u7EC4\u4EF6"},{id:"api",label:"API \u4E0E\u4FA7\u6CE8",detail:"API \xB7 aside",hash:"api-\u4E0E\u4FA7\u6CE8"},{id:"metadata",label:"\u6587\u6863\u5143\u4FE1\u606F",detail:"meta \xB7 breadcrumb \xB7 pagination",hash:"\u6587\u6863\u5143\u4FE1\u606F"}],quickActions:{headingsTitle:"\u6807\u9898 H1-H6",headingsDescription:"\u67E5\u770B\u5B8C\u6574\u6807\u9898\u5C42\u7EA7\u4E0E\u6B63\u6587\u8282\u594F",codeTitle:"\u4EE3\u7801\u4E0E\u8BED\u6CD5\u9AD8\u4EAE",codeDescription:"Shiki \u9AD8\u4EAE\u3001diff \u884C\u72B6\u6001\u4E0E\u590D\u5236",tableTitle:"\u8868\u683C\u4E0E\u6570\u636E\u64CD\u4F5C",tableDescription:"\u6392\u5E8F\u3001\u590D\u5236 CSV \u4E0E\u653E\u5927\u9884\u89C8",diagramTitle:"Mermaid\u3001PlantUML \u4E0E\u6570\u5B66\u516C\u5F0F",diagramDescription:"\u56FE\u8868\u9884\u89C8\u3001\u6E90\u7801\u4E0E\u7F29\u653E",sourceDescription:"\u6253\u5F00\u5F53\u524D\u9875\u9762\u7684 Markdown \u539F\u6587",themeDescription:"\u5728\u6D45\u8272\u4E0E\u6DF1\u8272\u9605\u8BFB\u6A21\u5F0F\u95F4\u5207\u6362"}},Fo={labels:{skipToContent:"Skip to content",search:"Search docs",searchEmpty:"No matching documents",searchUnavailable:"Search index is unavailable",language:"Language",primaryNavigation:"Primary navigation",theme:"Toggle theme",openSidebar:"Open sidebar",onThisPage:"On this page",edit:"Edit this page",updated:"Last updated",previous:"Previous",next:"Next",close:"Close",source:"Source",preview:"Preview",copySource:"Copy source",sourceCopied:"Markdown source copied",quickActions:"Quick actions",github:"GitHub repository",docsNavigation:"Docs navigation",pageNavigation:"Page navigation",advertisement:"Advertisement",version:"Documentation version"},brandTagline:"AI-friendly React/MDX documentation",markdownElementGroups:[{id:"headings",label:"Headings & prose",detail:"H1-H6 \xB7 p \xB7 hr",hash:"headings-and-prose"},{id:"inline",label:"Inline semantics",detail:"a \xB7 strong \xB7 code",hash:"inline-semantics"},{id:"lists",label:"Lists & tasks",detail:"ul \xB7 ol \xB7 task",hash:"lists-and-tasks"},{id:"callouts",label:"Quotes & callouts",detail:"quote \xB7 callout",hash:"quotes-and-callouts"},{id:"code",label:"Code & terminal",detail:"Shiki \xB7 pre \xB7 diff",hash:"code-and-terminal"},{id:"tables",label:"Tables & data",detail:"table \xB7 CSV \xB7 sort",hash:"tables-and-data"},{id:"media",label:"Media & embeds",detail:"img \xB7 video \xB7 iframe",hash:"media-and-embeds"},{id:"diagrams",label:"Diagrams & math",detail:"Mermaid \xB7 PlantUML \xB7 KaTeX",hash:"diagrams-and-math"},{id:"disclosure",label:"Disclosure & notes",detail:"details \xB7 footnotes",hash:"disclosure-and-notes"},{id:"extensions",label:"Extended components",detail:"tabs \xB7 steps \xB7 cards \xB7 tree",hash:"extended-content-components"},{id:"api",label:"API & sidenote",detail:"API \xB7 aside",hash:"api-and-sidenote"},{id:"metadata",label:"Document metadata",detail:"meta \xB7 breadcrumb \xB7 pagination",hash:"document-metadata"}],quickActions:{headingsTitle:"Headings H1-H6",headingsDescription:"Inspect the complete heading scale and prose rhythm",codeTitle:"Code and syntax highlighting",codeDescription:"Shiki highlighting, diff line states, and copy",tableTitle:"Tables and data actions",tableDescription:"Sort, copy CSV, and zoom",diagramTitle:"Mermaid, PlantUML, and math",diagramDescription:"Diagram preview, source, and scale",sourceDescription:"Open the current page Markdown source",themeDescription:"Switch between light and dark reading modes"}},Io={copyCode:"\u590D\u5236\u4EE3\u7801",copyFailed:"\u590D\u5236\u5931\u8D25",copySnippet:"\u590D\u5236\u7247\u6BB5",copyTerminal:"\u590D\u5236\u7EC8\u7AEF\u8F93\u51FA",terminalTitle:"\u7EC8\u7AEF",tabsTitle:"\u9009\u9879\u5361",tabItem:"\u9009\u9879 {index}",codeGroupTitle:"\u4EE3\u7801\u7EC4",codeGroupItem:"\u4EE3\u7801 {index}",taskCompleted:"\u5DF2\u5B8C\u6210\u4EFB\u52A1",taskIncomplete:"\u672A\u5B8C\u6210\u4EFB\u52A1",copySectionLink:"\u590D\u5236\u7AE0\u8282\u94FE\u63A5",tableTitle:"\u8868\u683C",copyTableCsv:"\u590D\u5236\u4E3A CSV",downloadTableCsv:"\u4E0B\u8F7D CSV",zoomTable:"\u653E\u5927\u8868\u683C",closeTablePreview:"\u5173\u95ED\u8868\u683C\u9884\u89C8",sortTableColumn:"\u6309\u7B2C {column} \u5217\u6392\u5E8F",zoomImage:"\u653E\u5927\u56FE\u7247",closeImagePreview:"\u5173\u95ED\u56FE\u7247\u9884\u89C8",imageGallery:"\u56FE\u7247\u753B\u5ECA",closeImageGallery:"\u5173\u95ED\u56FE\u7247\u753B\u5ECA",previousGalleryImage:"\u4E0A\u4E00\u5F20\u56FE\u7247",nextGalleryImage:"\u4E0B\u4E00\u5F20\u56FE\u7247",galleryThumbnails:"\u56FE\u7247\u753B\u5ECA\u7F29\u7565\u56FE",galleryImage:"\u56FE\u7247"},Jt={zh:{title:"\u9875\u9762\u672A\u627E\u5230",description:"\u8BE5\u9875\u9762\u4E0D\u5B58\u5728\u3001\u5DF2\u88AB\u79FB\u52A8\u6216\u5730\u5740\u6709\u8BEF\u3002",home:"\u8FD4\u56DE\u9996\u9875 \u2192"},en:{title:"Page not found",description:"The page you're looking for doesn't exist or has been moved.",home:"Go back home \u2192"}};function he(e){return e.toLowerCase().split("-")[0]??e.toLowerCase()}s(he,"languageCode");function Xt(e,t){if(!e)return;let r=t.toLowerCase();return Object.entries(e).find(([o])=>o.toLowerCase()===r)?.[1]}s(Xt,"localizedValue");function Le(e,t){return Xt(t,e)}s(Le,"localeMessagesFor");function Yt(e,t){let r=he(e)==="zh"?Oo:Fo,o=Le(e,t);return{labels:{...r.labels,...o?.labels},brandTagline:o?.brandTagline??r.brandTagline,markdownElementGroups:r.markdownElementGroups.map(a=>({...a,...o?.markdownElementGroups?.[a.id]})),quickActions:{...r.quickActions,...o?.quickActions}}}s(Yt,"layoutContentFor");function ge(e,t){let r=Le(e,t)?.markdown,o=he(e)==="zh"?Io:void 0;if(!(!o&&!r))return{...o,...r}}s(ge,"markdownLabelsFor");function Te(e,t){return{...he(e)==="zh"?Jt.zh:Jt.en,...Le(e,t)?.notFound}}s(Te,"notFoundContentFor");function Qt(e,t){let r=Xt(t,e);if(r)return r;let o=he(e);if(o==="zh")return"\u7B80\u4F53\u4E2D\u6587";if(o==="en")return"English";try{return new Intl.DisplayNames([e],{type:"language"}).of(e)??e}catch{return e}}s(Qt,"localeNameFor");var ye="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' rx='7' fill='%230088FF'/%3E%3Cpath d='M9 7h10l4 4v14H9z' fill='none' stroke='white' stroke-width='2' stroke-linejoin='round'/%3E%3Cpath d='M19 7v5h5' fill='none' stroke='white' stroke-width='2'/%3E%3Ccircle cx='21' cy='22' r='5' fill='%230088FF' stroke='white' stroke-width='2'/%3E%3C/svg%3E";import{ChevronDown as Zt,Languages as Bo,Moon as _o,PanelLeft as Uo,Search as qo,Sun as jo}from"lucide-react";import{Fragment as tr,jsx as y,jsxs as M}from"react/jsx-runtime";function Ho(){return M("svg",{className:"df-brand-mark",width:"32",height:"32",viewBox:"0 0 512 512","aria-hidden":"true",children:[M("defs",{children:[M("linearGradient",{id:"df-brand-top",x1:"80",y1:"70",x2:"430",y2:"245",gradientUnits:"userSpaceOnUse",children:[y("stop",{offset:"0",stopColor:"#1768FF"}),y("stop",{offset:"0.48",stopColor:"#119BFA"}),y("stop",{offset:"1",stopColor:"#18D8D3"})]}),M("linearGradient",{id:"df-brand-mid",x1:"215",y1:"255",x2:"440",y2:"245",gradientUnits:"userSpaceOnUse",children:[y("stop",{offset:"0",stopColor:"#2C7BFF"}),y("stop",{offset:"1",stopColor:"#1768F4"})]}),M("linearGradient",{id:"df-brand-bottom",x1:"215",y1:"292",x2:"92",y2:"445",gradientUnits:"userSpaceOnUse",children:[y("stop",{offset:"0",stopColor:"#554FF5"}),y("stop",{offset:"0.62",stopColor:"#7845FA"}),y("stop",{offset:"1",stopColor:"#8637F5"})]}),M("mask",{id:"df-brand-spark-cut",maskUnits:"userSpaceOnUse",x:"0",y:"0",width:"512",height:"512",children:[y("rect",{width:"512",height:"512",fill:"#fff"}),y("path",{d:"M220 245C225 273 247 295 275 300C247 305 225 327 220 355C215 327 193 305 165 300C193 295 215 273 220 245Z",fill:"#000"})]})]}),M("g",{mask:"url(#df-brand-spark-cut)",fill:"none",strokeLinejoin:"round",children:[y("path",{d:"M173 321C128 321 101 296 101 255V159C101 112 134 79 181 79H242C322 79 383 120 420 184",stroke:"url(#df-brand-top)",strokeWidth:"82",strokeLinecap:"round"}),y("path",{d:"M213 286C241 247 279 225 327 225H427",stroke:"url(#df-brand-mid)",strokeWidth:"70",strokeLinecap:"round"}),y("path",{d:"M220 296C248 333 238 371 207 402C176 433 137 444 101 444",stroke:"url(#df-brand-bottom)",strokeWidth:"72",strokeLinecap:"round"})]})]})}s(Ho,"BrandMark");function $e({size:e=16}){return y(qo,{size:e,strokeWidth:2,"aria-hidden":"true"})}s($e,"SearchIcon");function zo(){return M(tr,{children:[y(jo,{className:"df-icon-sun",size:18,strokeWidth:2,"aria-hidden":"true"}),y(_o,{className:"df-icon-moon",size:18,strokeWidth:2,"aria-hidden":"true"})]})}s(zo,"ThemeIcon");function Oe(e,t){let r=t.split("/").filter(Boolean);return t.startsWith("/")&&(e.page.routePath===t||e.page.routePath.startsWith(t)||e.page.group!==""&&r.includes(e.page.group))}s(Oe,"navItemIsActive");function er({model:e}){let{config:t,page:r,home:o,labels:a,localeRoot:i,navItems:c,versionLabel:n,versionOptions:d,languageOptions:u,hasSidebarItems:l}=e;return M("header",{className:o?"df-header df-header-home":"df-header",children:[M("div",{className:"df-header-inner",children:[!o&&l?y("button",{className:"df-sidebar-toggle",type:"button","data-docfuse-sidebar-open":"","data-docfuse-sidebar-open-label":a.openSidebar,"data-docfuse-sidebar-close-label":a.close,"aria-label":a.openSidebar,"aria-expanded":"false",children:y(Uo,{size:18,strokeWidth:2,"aria-hidden":"true"})}):null,y("a",{className:"df-brand",href:i,"aria-label":t.title,children:t.theme.logo?M(tr,{children:[y("img",{className:t.theme.logoDark?"df-brand-logo df-brand-logo-light":"df-brand-logo",src:g(t,t.theme.logo),alt:t.title}),t.theme.logoDark?y("img",{className:"df-brand-logo df-brand-logo-dark",src:g(t,t.theme.logoDark),alt:t.title}):null]}):y(Ho,{})}),t.search.enabled?M("button",{className:"df-search-trigger",type:"button","data-docfuse-search-open":"","aria-haspopup":"dialog","aria-label":a.search,children:[y($e,{size:15}),y("span",{children:a.search}),y("kbd",{className:"df-kbd",children:"\u2318K"})]}):null,M("div",{className:"df-header-right",children:[c.length>0?y("nav",{className:"df-header-nav","aria-label":a.primaryNavigation,children:c.map(m=>{let f=Oe(e,m.routePath),b=/^https?:\/\//.test(m.routePath);return y("a",{className:f?"df-header-link df-header-link-active":"df-header-link",href:g(t,m.routePath),"aria-current":f?"page":void 0,...b?{target:"_blank",rel:"noreferrer"}:{},children:m.title},m.routePath)})}):null,d.length>1?M("details",{className:"df-menu df-version-menu","data-docfuse-menu":"",children:[M("summary",{className:"df-version-badge","aria-label":a.version,children:[y("span",{children:n}),y(Zt,{size:13,strokeWidth:2,"aria-hidden":"true"})]}),y("div",{className:"df-menu-list",children:d.map(m=>y("a",{className:m.id===r.version?"df-menu-item df-menu-item-active":"df-menu-item",href:g(t,m.routePath),children:y("span",{children:m.label})},m.id))})]}):y("span",{className:"df-version-badge",children:n}),u.length>1?M("details",{className:"df-menu df-lang","data-docfuse-menu":"",children:[M("summary",{className:"df-icon-button df-lang-trigger","aria-label":a.language,children:[y(Bo,{size:19,strokeWidth:1.9,"aria-hidden":"true"}),y(Zt,{size:13,strokeWidth:2,"aria-hidden":"true"})]}),y("div",{className:"df-menu-list df-language-menu-list",children:u.map(m=>y("a",{className:m.locale===r.locale?"df-menu-item df-language-menu-item df-menu-item-active":"df-menu-item df-language-menu-item",href:g(t,m.routePath),lang:m.locale,"aria-current":m.locale===r.locale?"page":void 0,children:Qt(m.locale,t.i18n.localeNames)},m.locale))})]}):null,t.theme.darkMode?y("button",{className:"df-icon-button",type:"button","data-docfuse-theme-toggle":"","aria-label":a.theme,children:y(zo,{})}):null,t.github?y("a",{className:"df-icon-button df-github-link",href:t.github,target:"_blank",rel:"noreferrer","aria-label":a.github,children:y("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:y("path",{d:"M12 2C6.48 2 2 6.58 2 12.25c0 4.53 2.87 8.37 6.84 9.73.5.1.68-.22.68-.49 0-.24-.01-.87-.01-1.71-2.78.62-3.37-1.37-3.37-1.37-.45-1.18-1.11-1.5-1.11-1.5-.91-.64.07-.62.07-.62 1 .07 1.53 1.06 1.53 1.06.89 1.56 2.34 1.11 2.91.85.09-.66.35-1.11.63-1.37-2.22-.26-4.56-1.14-4.56-5.07 0-1.12.39-2.03 1.03-2.75-.1-.26-.45-1.3.1-2.71 0 0 .84-.27 2.75 1.05a9.36 9.36 0 0 1 5 0c1.91-1.32 2.75-1.05 2.75-1.05.55 1.41.2 2.45.1 2.71.64.72 1.03 1.63 1.03 2.75 0 3.94-2.34 4.81-4.57 5.06.36.32.68.94.68 1.9 0 1.37-.01 2.47-.01 2.81 0 .27.18.6.69.49A10.26 10.26 0 0 0 22 12.25C22 6.58 17.52 2 12 2z"})})}):null]})]}),o?null:y("div",{className:"df-progress","aria-hidden":"true",children:y("span",{"data-docfuse-progress":""})})]})}s(er,"LayoutHeader");import{jsx as w,jsxs as C}from"react/jsx-runtime";function or(e,t){return e.type==="link"?e.routePath===t:e.items.some(r=>or(r,t))}s(or,"sidebarContainsRoute");function rr(e){return{"--df-sidebar-indent":`${Math.min(e,4)*10}px`}}s(rr,"sidebarDepthStyle");function ar({item:e,model:t,depth:r=0}){let o={"data-depth":r,style:rr(r)};if(e.type==="link"){let i=e.routePath===t.page.routePath;return w("a",{...o,className:i?"df-sidebar-link df-sidebar-link-active":"df-sidebar-link",href:g(t.config,e.routePath),"aria-current":i?"page":void 0,"data-docfuse-sidebar-link":"",children:e.title})}let a=or(e,t.page.routePath);return C("details",{className:"df-sidebar-subgroup",open:a||!e.collapsed,"data-depth":r,children:[C("summary",{className:"df-sidebar-subgroup-title",style:rr(r),children:[e.title,w(Go,{className:"df-chevron",size:12,strokeWidth:2.5,"aria-hidden":"true"})]}),w("div",{className:"df-sidebar-subgroup-items",children:e.items.map((i,c)=>w(ar,{item:i,model:t,depth:r+1},i.type==="link"?i.routePath:i.segment||c))})]})}s(ar,"SidebarEntry");function nr({model:e}){let{config:t,labels:r,navItems:o,sidebarGroups:a}=e,i=[e.page.version,e.page.locale,e.page.group].join(":");return C("aside",{className:"df-sidebar","data-docfuse-sidebar":"","data-docfuse-sidebar-key":i,children:[o.length>0?w("nav",{className:"df-sidebar-primary-nav","aria-label":r.primaryNavigation,children:o.map(c=>{let n=Oe(e,c.routePath),d=/^https?:\/\//.test(c.routePath);return w("a",{className:n?"df-sidebar-primary-link df-sidebar-primary-link-active":"df-sidebar-primary-link",href:g(t,c.routePath),"aria-current":n?"page":void 0,"data-docfuse-sidebar-link":"",...d?{target:"_blank",rel:"noreferrer"}:{},children:c.title},c.routePath)})}):null,w("nav",{className:"df-sidebar-nav","aria-label":r.docsNavigation,children:a.map((c,n)=>w("div",{className:"df-sidebar-items df-sidebar-root",children:c.items.map((d,u)=>w(ar,{item:d,model:e,depth:0},d.type==="link"?d.routePath:d.segment||u))},c.segment||n))})]})}s(nr,"Sidebar");function Wo({model:e}){let{editHref:t,labels:r,page:o}=e,a=new Intl.DateTimeFormat(o.locale,{dateStyle:"medium"}).format(new Date(o.lastUpdated));return C("footer",{className:"df-page-footer",children:[C("div",{className:"df-page-meta",children:[C("div",{className:"df-page-meta-actions",children:[t?w("a",{href:t,children:r.edit}):null,w("button",{className:"df-page-source",type:"button","data-docfuse-source-open":"","aria-haspopup":"dialog",children:r.source})]}),C("span",{children:[r.updated," ",a]})]}),C("nav",{className:"df-doc-pagination","aria-label":r.pageNavigation,children:[o.previous?C("a",{className:"df-doc-pagination-link",href:g(e.config,o.previous.routePath),children:[w("span",{className:"df-doc-pagination-label",children:r.previous}),w("strong",{className:"df-doc-pagination-title",children:o.previous.title})]}):w("span",{}),o.next?C("a",{className:"df-doc-pagination-link df-doc-pagination-link-next",href:g(e.config,o.next.routePath),children:[w("span",{className:"df-doc-pagination-label",children:r.next}),w("strong",{className:"df-doc-pagination-title",children:o.next.title})]}):null]})]})}s(Wo,"PageFooter");function Jo({model:e}){let{config:t,labels:r,outlineHeadings:o}=e,a=t.advertising;return C("aside",{className:"df-outline","data-docfuse-outline":"","aria-label":r.onThisPage,children:[o.length>0?w("nav",{className:"df-outline-nav",children:o.map(i=>w("a",{className:`df-outline-link df-outline-link-${i.level}`,"data-docfuse-outline-link":"",href:`#${i.slug}`,children:i.text},i.slug))}):null,a?C("a",{className:"df-outline-ad",href:g(t,a.href),target:"_blank",rel:"sponsored noopener noreferrer","aria-label":a.alt,children:[w("span",{children:a.label??r.advertisement}),w("img",{src:g(t,a.image),alt:a.alt,loading:"lazy"})]}):null]})}s(Jo,"Outline");function Xo({model:e,children:t}){let{config:r,labels:o,page:a}=e,i=a.body.trim(),c={...ge(a.locale,r.i18n.messages),...r.markdown.labels};return C("div",{className:"df-shell df-shell-playground",children:[w("div",{className:"df-sidebar-backdrop","data-docfuse-sidebar-backdrop":"","aria-hidden":"true",hidden:!0}),w(nr,{model:e}),w("main",{id:"docfuse-main",className:"df-main df-playground-main",tabIndex:-1,"data-pagefind-body":a.search?"":void 0,children:C("div",{className:"df-playground","data-docfuse-playground":"","data-docfuse-playground-labels":JSON.stringify(c),"data-docfuse-playground-preview-label":o.preview,"data-view":"preview",children:[C("button",{className:"df-playground-toggle",type:"button","data-docfuse-playground-toggle":"","data-source-label":o.source,"data-preview-label":o.preview,"aria-label":o.source,title:o.source,children:[w(Ko,{className:"df-playground-toggle-source",size:18,strokeWidth:2,"aria-hidden":"true"}),w(Vo,{className:"df-playground-toggle-preview",size:18,strokeWidth:2,"aria-hidden":"true"})]}),w("section",{className:"df-playground-pane df-playground-source","aria-label":o.source,"data-pagefind-ignore":"",children:w("textarea",{defaultValue:i,"aria-label":o.source,autoCapitalize:"off",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"data-docfuse-playground-source":""})}),w("div",{className:"df-playground-resizer",role:"separator","aria-label":`${o.source} / ${o.preview}`,"aria-orientation":"vertical","aria-valuemin":25,"aria-valuemax":75,"aria-valuenow":45,tabIndex:0,"data-docfuse-playground-resizer":""}),w("section",{className:"df-playground-pane df-playground-preview","aria-label":o.preview,children:w("div",{className:"df-playground-preview-scroll","data-docfuse-playground-preview":"",children:t})})]})})]})}s(Xo,"Playground");function sr({model:e,children:t}){return e.page.frontmatter.layout==="playground"?w(Xo,{model:e,children:t}):C("div",{className:"df-shell",children:[w("div",{className:"df-sidebar-backdrop","data-docfuse-sidebar-backdrop":"","aria-hidden":"true",hidden:!0}),w(nr,{model:e}),C("main",{id:"docfuse-main",className:"df-main",tabIndex:-1,"data-pagefind-body":e.page.search?"":void 0,children:[t,w(Wo,{model:e})]}),w(Jo,{model:e})]})}s(sr,"LayoutDocument");function be(e){return ht(e.relativePath,e.locale)}s(be,"subPath");function re(e,t){let r=e.find(o=>o.id===t);if(!r)throw new Error(`Missing Markdown element group: ${t}`);return r.hash}s(re,"markdownGroupHash");function ir({config:e,graph:t,page:r,home:o,assets:a,rawSource:i}){let c=t.pages.filter(p=>p.version===r.version&&be(p)===be(r)),n=t.locales.map(p=>{let P=c.find(x=>x.locale===p);return{locale:p,routePath:P?.routePath??j(p,t.defaultLocale,r.versionBase)}}),d=t.versions.map(p=>{let P=t.pages.find(x=>x.version===p.id&&x.locale===r.locale&&be(x)===be(r));return{id:p.id,label:p.label,routePath:P?.routePath??j(r.locale,t.defaultLocale,p.base)}}),u=t.sidebar[r.version]?.[r.locale]??[],l=Yt(r.locale,e.i18n.messages),m=j(r.locale,t.defaultLocale,r.versionBase),f=`${m}markdown/playground/`,b=t.pages.some(p=>p.locale===r.locale&&p.routePath===f),h=s(p=>p.type==="link"?p.routePath===r.routePath:p.items.some(h),"isActiveItem"),S=s(p=>p.items.some(h),"isActiveGroup"),D=u.filter(p=>p.title===""||p.segment===r.group||S(p));return{config:e,page:r,home:o,assets:a,title:r.title&&r.title!==e.title?`${r.title} | ${e.title}`:e.title,description:r.description||e.description,...e.editUrl&&r.version===t.currentVersion?{editHref:`${e.editUrl.replace(/\/$/,"")}/${r.relativePath}`}:{},alternatePages:c,languageOptions:n,versionOptions:d,navItems:t.nav[r.version]?.[r.locale]??[],content:l,labels:l.labels,brandTagline:e.i18n.messages?.[r.locale]?.brandTagline||e.description||l.brandTagline,versionLabel:t.versions.length===1&&r.version==="current"?`v${q}`:t.versions.find(p=>p.id===r.version)?.label??r.version,localeRoot:g(e,m),markdownShowcaseHref:g(e,f),hasMarkdownShowcase:b,sidebarGroups:D,hasSidebarItems:D.some(p=>p.items.length>0),outlineHeadings:r.headings.filter(p=>p.level>=1&&p.level<=6),searchProvider:kt(e.search.provider),searchIndexUrl:r.version===t.currentVersion?g(e,`/search/${r.locale}.json`):g(e,`/search/${r.version}/${r.locale}.json`),searchBundleUrl:g(e,"/pagefind/pagefind.js"),markdownClientScript:`window.__docfuseEnhanceMarkdown = async (target) => {
27
+ const pageRoot = document.querySelector('[data-docfuse-page-root]')
28
+ if (!pageRoot) return () => {}
29
+ const root = target || pageRoot
30
+ const behaviors = JSON.parse(pageRoot.getAttribute('data-markdown-behaviors') || '[]')
31
+ const pluginClients = JSON.parse(pageRoot.getAttribute('data-markdown-plugin-clients') || '[]')
32
+ const disposers = []
33
+ try {
34
+ if (behaviors.length) {
35
+ const clientUrl = pageRoot.getAttribute('data-markdown-client-url')
36
+ if (clientUrl) {
37
+ const { enhanceMarkdown } = await import(clientUrl)
38
+ const enhancement = enhanceMarkdown(root, { behaviors })
39
+ disposers.push(() => enhancement.dispose())
40
+ await enhancement.ready
41
+ }
42
+ }
43
+ for (const pluginUrl of pluginClients) {
44
+ const plugin = await import(pluginUrl)
45
+ const enhancement = await plugin.enhance?.(root)
46
+ if (typeof enhancement === 'function') disposers.push(enhancement)
47
+ else if (enhancement?.dispose) disposers.push(() => enhancement.dispose())
48
+ await enhancement?.ready
49
+ }
50
+ return () => disposers.reverse().forEach((dispose) => dispose())
51
+ } catch (error) {
52
+ disposers.reverse().forEach((dispose) => dispose())
53
+ throw error
54
+ }
55
+ }
56
+ const bootstrapMarkdown = async () => {
57
+ window.__docfuseMarkdownDispose?.()
58
+ const generation = (window.__docfuseMarkdownGeneration || 0) + 1
59
+ window.__docfuseMarkdownGeneration = generation
60
+ const root = document.querySelector('[data-docfuse-page-root]')
61
+ if (!root) return
62
+ const dispose = await window.__docfuseEnhanceMarkdown(root)
63
+ if (window.__docfuseMarkdownGeneration !== generation || !root.isConnected) {
64
+ dispose()
65
+ return
66
+ }
67
+ window.__docfuseMarkdownDispose = () => {
68
+ window.__docfuseMarkdownGeneration += 1
69
+ dispose()
70
+ }
71
+ }
72
+ window.__docfuseBootstrapMarkdown = () => {
73
+ const ready = bootstrapMarkdown()
74
+ window.__docfuseMarkdownReady = ready
75
+ return ready
76
+ }
77
+ window.__docfuseBootstrapMarkdown()`,rawSource:i}}s(ir,"createLayoutModel");import{Braces as Yo,Clipboard as Qo,ExternalLink as Zo,Heading2 as ea,SunMoon as ta,Table2 as ra,Workflow as oa,X as aa}from"lucide-react";import{Fragment as Fe,jsx as k,jsxs as E}from"react/jsx-runtime";function Y({href:e,action:t,icon:r,title:o,description:a}){let i=E(Fe,{children:[k("span",{className:"df-command-glyph","aria-hidden":"true",children:r}),E("span",{children:[k("strong",{children:o}),k("small",{children:a})]})]});return e?k("a",{className:"df-command-item",href:e,children:i}):k("button",{className:"df-command-item",type:"button","data-docfuse-search-action":t,children:i})}s(Y,"QuickAction");function na({model:e}){let{config:t,page:r,home:o,labels:a,content:i,markdownShowcaseHref:c,hasMarkdownShowcase:n}=e,d=i.markdownElementGroups,u=i.quickActions;return t.search.enabled?E("div",{className:"df-search-modal","data-docfuse-search":"","data-locale":r.locale,"data-version":r.version,"data-search-provider":e.searchProvider,"data-search-index-url":e.searchIndexUrl,"data-search-bundle-url":e.searchBundleUrl,"data-empty-label":a.searchEmpty,"data-error-label":a.searchUnavailable,hidden:!0,children:[k("div",{className:"df-search-backdrop","data-docfuse-search-close":"","aria-hidden":"true"}),E("div",{className:"df-search-panel",role:"dialog","aria-modal":"true","aria-label":a.search,tabIndex:-1,children:[E("div",{className:"df-search-field",children:[k($e,{}),k("input",{className:"df-search-input",type:"search",placeholder:`${a.search}...`,"aria-label":a.search}),k("button",{className:"df-search-close",type:"button","data-docfuse-search-close":"","aria-label":a.close,children:"Esc"})]}),E("div",{className:"df-search-body",children:[E("div",{className:"df-search-default","data-docfuse-search-default":"",children:[k("p",{className:"df-search-section-label",children:a.quickActions}),n?E(Fe,{children:[k(Y,{href:`${c}#${re(d,"headings")}`,icon:k(ea,{size:17,strokeWidth:2}),title:u.headingsTitle,description:u.headingsDescription}),k(Y,{href:`${c}#${re(d,"code")}`,icon:k(Yo,{size:17,strokeWidth:2}),title:u.codeTitle,description:u.codeDescription}),k(Y,{href:`${c}#${re(d,"tables")}`,icon:k(ra,{size:17,strokeWidth:2}),title:u.tableTitle,description:u.tableDescription}),k(Y,{href:`${c}#${re(d,"diagrams")}`,icon:k(oa,{size:17,strokeWidth:2}),title:u.diagramTitle,description:u.diagramDescription})]}):null,o?null:k(Y,{action:"source",icon:k(Zo,{size:17,strokeWidth:2}),title:a.source,description:u.sourceDescription}),t.theme.darkMode?k(Y,{action:"theme",icon:k(ta,{size:17,strokeWidth:2}),title:a.theme,description:u.themeDescription}):null]}),k("div",{className:"df-search-results","data-docfuse-search-results":"","aria-live":"polite",hidden:!0})]})]})]}):null}s(na,"SearchModal");function sa({model:e}){let{home:t,labels:r,page:o}=e;return t?null:E("div",{className:"df-source-sheet","data-docfuse-source-sheet":"",hidden:!0,children:[k("div",{className:"df-source-backdrop","data-docfuse-source-close":"","aria-hidden":"true"}),E("aside",{className:"df-source-panel",role:"dialog","aria-modal":"true","aria-label":r.source,tabIndex:-1,children:[E("div",{className:"df-source-head",children:[E("div",{children:[k("p",{children:r.source}),k("span",{children:o.sourceRelativePath})]}),E("div",{className:"df-source-actions",children:[k("button",{className:"df-icon-button",type:"button","data-docfuse-source-copy":"","data-docfuse-action-success":r.sourceCopied,"aria-label":r.copySource,children:k(Qo,{size:16,strokeWidth:2,"aria-hidden":"true"})}),k("button",{className:"df-icon-button",type:"button","data-docfuse-source-close":"","aria-label":r.close,children:k(aa,{size:16,strokeWidth:2,"aria-hidden":"true"})})]})]}),k("textarea",{"data-docfuse-source-text":"","aria-label":r.source,spellCheck:!1,readOnly:!0,defaultValue:e.rawSource})]})]})}s(sa,"SourceSheet");function cr({model:e}){return E(Fe,{children:[k(na,{model:e}),k(sa,{model:e})]})}s(cr,"LayoutOverlays");var we="try{var t=localStorage.getItem('docfuse-theme');if(t==='dark'||(!t&&window.matchMedia('(prefers-color-scheme:dark)').matches)){document.documentElement.classList.add('dark')}}catch(e){}";var lr=`window.__docfuseBootstrapShell = () => {
78
+ window.__docfuseShellDispose?.()
79
+ const controller = new AbortController()
80
+ const signal = controller.signal
81
+ const on = (target, event, listener, options = {}) => target.addEventListener(event, listener, { ...options, signal })
82
+ const d = document
83
+ const root = d.documentElement
84
+ const q = (selector, parent = d) => parent.querySelector(selector)
85
+ const qa = (selector, parent = d) => Array.from(parent.querySelectorAll(selector))
86
+ let navigationController
87
+
88
+ const homeHeader = q('.df-header-home')
89
+ function syncHomeHeader() {
90
+ homeHeader?.classList.toggle('df-header-scrolled', window.scrollY > 8)
91
+ }
92
+ syncHomeHeader()
93
+ on(window, 'scroll', syncHomeHeader, { passive: true })
94
+
95
+ function disposePage() {
96
+ window.__docfuseSearchDispose?.()
97
+ window.__docfuseMarkdownDispose?.()
98
+ window.__docfuseOutlineDispose?.()
99
+ window.__docfuseShellDispose?.()
100
+ }
101
+
102
+ async function bootstrapPage() {
103
+ window.__docfuseBootstrapShell?.()
104
+ window.__docfuseBootstrapOutline?.()
105
+ window.__docfuseBootstrapSearch?.()
106
+ await window.__docfuseBootstrapMarkdown?.()
107
+ const pageRoot = q('[data-docfuse-page-root]')
108
+ const pageModule = pageRoot?.getAttribute('data-docfuse-playground-client-url')
109
+ if (pageModule) {
110
+ const loadModule = window.__docfuseLoadPageModule || ((url) => import(url))
111
+ await loadModule(pageModule)
112
+ window.__docfuseBootstrapPlayground?.()
113
+ }
114
+ }
115
+
116
+ function captureUpdateState(pageRoot) {
117
+ const readingLine = 64
118
+ const headings = qa('[id]', pageRoot)
119
+ let anchor
120
+ for (const heading of headings) {
121
+ if (heading.getBoundingClientRect().top <= readingLine) anchor = heading
122
+ else break
123
+ }
124
+ const maximum = Math.max(1, root.scrollHeight - window.innerHeight)
125
+ return {
126
+ anchorId: anchor?.id || null,
127
+ anchorTop: anchor?.getBoundingClientRect().top || 0,
128
+ ratio: window.scrollY / maximum,
129
+ details: qa('details', pageRoot).map((item) => item.open),
130
+ tabs: qa('[data-df-behavior="tabs"]', pageRoot).map((item) => ({
131
+ id: item.getAttribute('data-df-tabs-id'),
132
+ value: q('[role="tab"][data-df-tab][aria-selected="true"]', item)?.getAttribute('data-df-tab') || null
133
+ }))
134
+ }
135
+ }
136
+
137
+ function restoreUpdateStructure(pageRoot, state) {
138
+ qa('details', pageRoot).forEach((item, index) => {
139
+ if (state.details[index] !== undefined) item.open = state.details[index]
140
+ })
141
+ }
142
+
143
+ function restoreUpdateTabs(pageRoot, state) {
144
+ state.tabs.forEach((saved) => {
145
+ if (!saved.id || !saved.value) return
146
+ const tabs = qa('[data-df-behavior="tabs"]', pageRoot).find(
147
+ (item) => item.getAttribute('data-df-tabs-id') === saved.id
148
+ )
149
+ const trigger = tabs && qa('[role="tab"][data-df-tab]', tabs).find(
150
+ (item) => item.getAttribute('data-df-tab') === saved.value
151
+ )
152
+ trigger?.click()
153
+ })
154
+ }
155
+
156
+ function restoreReadingPosition(state) {
157
+ requestAnimationFrame(() => {
158
+ const anchor = state.anchorId && d.getElementById(state.anchorId)
159
+ if (anchor) {
160
+ window.scrollBy(0, anchor.getBoundingClientRect().top - state.anchorTop)
161
+ return
162
+ }
163
+ const maximum = Math.max(0, root.scrollHeight - window.innerHeight)
164
+ window.scrollTo(0, state.ratio * maximum)
165
+ })
166
+ }
167
+
168
+ function syncPageHead(nextDocument) {
169
+ d.title = nextDocument.title
170
+ const currentNodes = qa('[data-docfuse-page-head]', d.head)
171
+ const nextNodes = qa('[data-docfuse-page-head]', nextDocument.head)
172
+ const available = new Map()
173
+ currentNodes.forEach((node) => {
174
+ const nodes = available.get(node.outerHTML) || []
175
+ nodes.push(node)
176
+ available.set(node.outerHTML, nodes)
177
+ })
178
+ const retained = new Set()
179
+ nextNodes.forEach((node) => {
180
+ const matches = available.get(node.outerHTML)
181
+ const current = matches?.shift()
182
+ if (current) retained.add(current)
183
+ else d.head.appendChild(d.importNode(node, true))
184
+ })
185
+ currentNodes.forEach((node) => {
186
+ if (!retained.has(node)) node.remove()
187
+ })
188
+ }
189
+
190
+ function syncDocumentElement(nextDocument) {
191
+ const dark = root.classList.contains('dark')
192
+ root.className = nextDocument.documentElement.className
193
+ if (dark) root.classList.add('dark')
194
+ root.lang = nextDocument.documentElement.lang
195
+ const direction = nextDocument.documentElement.getAttribute('dir')
196
+ if (direction) root.setAttribute('dir', direction)
197
+ else root.removeAttribute('dir')
198
+ d.body.className = nextDocument.body.className
199
+ }
200
+
201
+ function syncSidebarState(currentSidebar, nextSidebar) {
202
+ const currentLinks = qa('[data-docfuse-sidebar-link]', currentSidebar)
203
+ const nextLinks = qa('[data-docfuse-sidebar-link]', nextSidebar)
204
+ const currentDetails = qa('details', currentSidebar)
205
+ const nextDetails = qa('details', nextSidebar)
206
+ if (
207
+ currentLinks.length !== nextLinks.length ||
208
+ currentDetails.length !== nextDetails.length ||
209
+ currentLinks.some((link, index) => link.getAttribute('href') !== nextLinks[index]?.getAttribute('href'))
210
+ ) return false
211
+ currentLinks.forEach((link, index) => {
212
+ const nextLink = nextLinks[index]
213
+ link.className = nextLink.className
214
+ const current = nextLink.getAttribute('aria-current')
215
+ if (current) link.setAttribute('aria-current', current)
216
+ else link.removeAttribute('aria-current')
217
+ })
218
+ currentDetails.forEach((details, index) => {
219
+ if (nextDetails[index]?.open) details.open = true
220
+ })
221
+ return true
222
+ }
223
+
224
+ async function applyPageDocument(nextDocument, options = {}) {
225
+ const currentRoot = q('[data-docfuse-page-root]')
226
+ const nextRoot = q('[data-docfuse-page-root]', nextDocument)
227
+ if (!currentRoot || !nextRoot) return false
228
+ const updateState = options.mode === 'update' ? captureUpdateState(currentRoot) : null
229
+ const sidebarScrollTop = options.sidebarScrollTop ?? q('[data-docfuse-sidebar]', currentRoot)?.scrollTop ?? 0
230
+ disposePage()
231
+ const imported = d.importNode(nextRoot, true)
232
+ if (options.mode === 'navigation') {
233
+ const currentSidebar = q('[data-docfuse-sidebar]', currentRoot)
234
+ const nextSidebar = q('[data-docfuse-sidebar]', imported)
235
+ if (
236
+ currentSidebar &&
237
+ nextSidebar &&
238
+ currentSidebar.getAttribute('data-docfuse-sidebar-key') &&
239
+ currentSidebar.getAttribute('data-docfuse-sidebar-key') ===
240
+ nextSidebar.getAttribute('data-docfuse-sidebar-key') &&
241
+ syncSidebarState(currentSidebar, nextSidebar)
242
+ ) {
243
+ nextSidebar.replaceWith(currentSidebar)
244
+ }
245
+ }
246
+ currentRoot.replaceWith(imported)
247
+ syncPageHead(nextDocument)
248
+ syncDocumentElement(nextDocument)
249
+ if (updateState) restoreUpdateStructure(imported, updateState)
250
+ const nextSidebar = q('[data-docfuse-sidebar]', imported)
251
+ if (!updateState && nextSidebar) nextSidebar.scrollTop = sidebarScrollTop
252
+ await bootstrapPage()
253
+ if (updateState) {
254
+ restoreUpdateTabs(imported, updateState)
255
+ restoreReadingPosition(updateState)
256
+ } else {
257
+ if (nextSidebar) nextSidebar.scrollTop = sidebarScrollTop
258
+ if (options.focus) q('#docfuse-main', imported)?.focus({ preventScroll: true })
259
+ if (options.hash) {
260
+ let id = options.hash.slice(1)
261
+ try { id = decodeURIComponent(id) } catch {}
262
+ d.getElementById(id)?.scrollIntoView()
263
+ } else {
264
+ window.scrollTo(0, options.scrollY ?? 0)
265
+ }
266
+ }
267
+ return true
268
+ }
269
+ window.__docfuseApplyPageDocument = applyPageDocument
270
+
271
+ function currentNavigationState() {
272
+ return {
273
+ scrollY: window.scrollY,
274
+ sidebarScrollTop: q('[data-docfuse-sidebar]')?.scrollTop || 0
275
+ }
276
+ }
277
+
278
+ function historyStateWithNavigation(state) {
279
+ const current = history.state && typeof history.state === 'object' ? history.state : {}
280
+ return { ...current, __docfuse: state }
281
+ }
282
+
283
+ function saveCurrentHistoryState() {
284
+ try { history.replaceState(historyStateWithNavigation(currentNavigationState()), '', location.href) } catch {}
285
+ }
286
+
287
+ async function navigatePage(url, { push = true, state } = {}) {
288
+ navigationController?.abort()
289
+ navigationController = new AbortController()
290
+ const response = await fetch(url, {
291
+ cache: 'no-store',
292
+ headers: { accept: 'text/html' },
293
+ signal: navigationController.signal
294
+ })
295
+ if (!response.ok || !(response.headers.get('content-type') || '').includes('text/html')) return false
296
+ const nextDocument = new DOMParser().parseFromString(await response.text(), 'text/html')
297
+ if (!q('[data-docfuse-page-root]', nextDocument)) return false
298
+ const navigationState = state || {
299
+ scrollY: 0,
300
+ sidebarScrollTop: q('[data-docfuse-sidebar]')?.scrollTop || 0
301
+ }
302
+ if (push) {
303
+ saveCurrentHistoryState()
304
+ history.pushState(historyStateWithNavigation(navigationState), '', url)
305
+ }
306
+ return applyPageDocument(nextDocument, {
307
+ mode: 'navigation',
308
+ hash: url.hash,
309
+ scrollY: navigationState.scrollY,
310
+ sidebarScrollTop: navigationState.sidebarScrollTop,
311
+ focus: push
312
+ })
313
+ }
314
+
315
+ function markAction(button, text) {
316
+ if (!button) return
317
+ const label = button.getAttribute('aria-label') || ''
318
+ button.dataset.actionState = 'success'
319
+ button.setAttribute('aria-label', text)
320
+ clearTimeout(button._dfActionTimer)
321
+ button._dfActionTimer = setTimeout(() => {
322
+ delete button.dataset.actionState
323
+ if (label) button.setAttribute('aria-label', label)
324
+ }, 1500)
325
+ }
326
+
327
+ function copyFallback(text) {
328
+ const area = d.createElement('textarea')
329
+ area.value = text
330
+ area.style.position = 'fixed'
331
+ area.style.opacity = '0'
332
+ d.body.appendChild(area)
333
+ area.focus()
334
+ area.select()
335
+ let copied = false
336
+ try {
337
+ copied = d.execCommand('copy')
338
+ } finally {
339
+ area.remove()
340
+ }
341
+ return copied ? Promise.resolve() : Promise.reject(new Error('Copy command failed'))
342
+ }
343
+
344
+ function copyText(text) {
345
+ if (navigator.clipboard && window.isSecureContext) {
346
+ return navigator.clipboard.writeText(text).catch(() => copyFallback(text))
347
+ }
348
+ return copyFallback(text)
349
+ }
350
+
351
+ qa('[data-docfuse-theme-toggle]').forEach((button) => {
352
+ button.setAttribute('aria-pressed', String(root.classList.contains('dark')))
353
+ on(button, 'click', () => {
354
+ const on = root.classList.toggle('dark')
355
+ button.setAttribute('aria-pressed', String(on))
356
+ try { localStorage.setItem('docfuse-theme', on ? 'dark' : 'light') } catch {}
357
+ })
358
+ })
359
+
360
+ const sourceSheet = q('[data-docfuse-source-sheet]')
361
+ let sourceLastFocus
362
+ function focusable(container) {
363
+ return qa('a[href],button:not([disabled]),input:not([disabled]),textarea:not([disabled]),select:not([disabled]),[tabindex]:not([tabindex="-1"])', container)
364
+ .filter((element) => element.tabIndex >= 0 && !element.hidden && element.getAttribute('aria-hidden') !== 'true')
365
+ }
366
+ function setSource(value, invoker) {
367
+ if (!sourceSheet) return
368
+ if (value) {
369
+ sourceLastFocus = invoker || d.activeElement
370
+ sourceSheet.hidden = false
371
+ root.classList.add('df-source-open')
372
+ requestAnimationFrame(() => (focusable(sourceSheet)[0] || q('.df-source-panel', sourceSheet))?.focus())
373
+ } else {
374
+ const wasOpen = !sourceSheet.hidden
375
+ sourceSheet.hidden = true
376
+ root.classList.remove('df-source-open')
377
+ if (wasOpen && sourceLastFocus && typeof sourceLastFocus.focus === 'function') sourceLastFocus.focus()
378
+ sourceLastFocus = undefined
379
+ }
380
+ }
381
+ qa('[data-docfuse-source-open]').forEach((button) => on(button, 'click', () => {
382
+ setSource(true, button)
383
+ }))
384
+ qa('[data-docfuse-source-close]').forEach((button) => on(button, 'click', () => {
385
+ setSource(false)
386
+ }))
387
+ qa('[data-docfuse-source-copy]').forEach((button) => on(button, 'click', () => {
388
+ const source = q('[data-docfuse-source-text]')
389
+ const success = button.getAttribute('data-docfuse-action-success') || 'Markdown source copied'
390
+ if (source) copyText(source.value).then(() => markAction(button, success)).catch(() => {})
391
+ }))
392
+
393
+ qa('[data-docfuse-playground-toggle]').forEach((button) => on(button, 'click', () => {
394
+ const playground = button.closest('[data-docfuse-playground]')
395
+ if (!playground) return
396
+ const nextView = playground.dataset.view === 'source' ? 'preview' : 'source'
397
+ playground.dataset.view = nextView
398
+ const nextLabel = nextView === 'source'
399
+ ? button.getAttribute('data-preview-label')
400
+ : button.getAttribute('data-source-label')
401
+ if (nextLabel) {
402
+ button.setAttribute('aria-label', nextLabel)
403
+ button.setAttribute('title', nextLabel)
404
+ }
405
+ }))
406
+
407
+ qa('[data-docfuse-playground-resizer]').forEach((resizer) => {
408
+ const playground = resizer.closest('[data-docfuse-playground]')
409
+ if (!playground) return
410
+ const min = Number(resizer.getAttribute('aria-valuemin')) || 25
411
+ const max = Number(resizer.getAttribute('aria-valuemax')) || 75
412
+ const clamp = (value) => Math.min(max, Math.max(min, value))
413
+ const setSplit = (value) => {
414
+ const next = clamp(value)
415
+ playground.style.setProperty('--df-playground-source-width', next + '%')
416
+ resizer.setAttribute('aria-valuenow', String(Math.round(next)))
417
+ }
418
+ const splitFromPointer = (event) => {
419
+ const rect = playground.getBoundingClientRect()
420
+ if (!rect.width) return
421
+ const fromStart = (event.clientX - rect.left) / rect.width * 100
422
+ setSplit(getComputedStyle(playground).direction === 'rtl' ? 100 - fromStart : fromStart)
423
+ }
424
+ let dragging = false
425
+ on(resizer, 'pointerdown', (event) => {
426
+ if (event.button !== 0) return
427
+ dragging = true
428
+ playground.dataset.resizing = ''
429
+ resizer.setPointerCapture?.(event.pointerId)
430
+ splitFromPointer(event)
431
+ event.preventDefault()
432
+ })
433
+ on(resizer, 'pointermove', (event) => {
434
+ if (dragging) splitFromPointer(event)
435
+ })
436
+ const stopDragging = (event) => {
437
+ if (!dragging) return
438
+ dragging = false
439
+ delete playground.dataset.resizing
440
+ if (resizer.hasPointerCapture?.(event.pointerId)) resizer.releasePointerCapture(event.pointerId)
441
+ }
442
+ on(resizer, 'pointerup', stopDragging)
443
+ on(resizer, 'pointercancel', stopDragging)
444
+ on(resizer, 'keydown', (event) => {
445
+ const current = Number(resizer.getAttribute('aria-valuenow')) || 45
446
+ const rtl = getComputedStyle(playground).direction === 'rtl'
447
+ let next
448
+ if (event.key === 'Home') next = min
449
+ if (event.key === 'End') next = max
450
+ if (event.key === 'ArrowLeft') next = current + (rtl ? 2 : -2)
451
+ if (event.key === 'ArrowRight') next = current + (rtl ? -2 : 2)
452
+ if (next === undefined) return
453
+ setSplit(next)
454
+ event.preventDefault()
455
+ })
456
+ on(resizer, 'dblclick', () => setSplit(45))
457
+ })
458
+
459
+ const bar = q('[data-docfuse-progress]')
460
+ function progress() {
461
+ if (!bar) return
462
+ const max = root.scrollHeight - window.innerHeight
463
+ const scrollTop = window.scrollY || root.scrollTop || 0
464
+ const ratio = max > 0 ? Math.min(1, Math.max(0, scrollTop / max)) : 0
465
+ bar.style.transform = 'scaleX(' + ratio + ')'
466
+ }
467
+ progress()
468
+ on(window, 'scroll', progress, { passive: true })
469
+ on(window, 'resize', progress)
470
+
471
+ const sidebar = q('[data-docfuse-sidebar]')
472
+ const backdrop = q('[data-docfuse-sidebar-backdrop]')
473
+ const open = q('[data-docfuse-sidebar-open]')
474
+ function setSidebar(value) {
475
+ if (!sidebar) return
476
+ sidebar.dataset.open = String(value)
477
+ if (backdrop) backdrop.hidden = !value
478
+ if (open) {
479
+ open.setAttribute('aria-expanded', String(value))
480
+ open.setAttribute(
481
+ 'aria-label',
482
+ value ? open.dataset.docfuseSidebarCloseLabel : open.dataset.docfuseSidebarOpenLabel
483
+ )
484
+ }
485
+ }
486
+ if (open) {
487
+ on(open, 'click', () => setSidebar(open.getAttribute('aria-expanded') !== 'true'))
488
+ }
489
+ if (backdrop) on(backdrop, 'click', () => setSidebar(false))
490
+ qa('[data-docfuse-sidebar-link]').forEach((link) => on(link, 'click', () => setSidebar(false)))
491
+
492
+ on(d, 'click', (event) => {
493
+ qa('[data-docfuse-menu][open]').forEach((menu) => {
494
+ if (!menu.contains(event.target)) menu.removeAttribute('open')
495
+ })
496
+ if (
497
+ event.defaultPrevented ||
498
+ event.button !== 0 ||
499
+ event.metaKey ||
500
+ event.ctrlKey ||
501
+ event.shiftKey ||
502
+ event.altKey ||
503
+ !(event.target instanceof Element)
504
+ ) return
505
+ const anchor = event.target.closest('a[href]')
506
+ if (!anchor || anchor.hasAttribute('download') || anchor.hasAttribute('data-docfuse-no-navigation')) return
507
+ if (anchor.target && anchor.target !== '_self') return
508
+ const url = new URL(anchor.href, location.href)
509
+ if (url.origin !== location.origin || !['http:', 'https:'].includes(url.protocol)) return
510
+ if (url.pathname === location.pathname && url.search === location.search) {
511
+ if (url.hash) return
512
+ event.preventDefault()
513
+ window.scrollTo(0, 0)
514
+ return
515
+ }
516
+ event.preventDefault()
517
+ void navigatePage(url).then((applied) => {
518
+ if (!applied) location.assign(url.href)
519
+ }).catch((error) => {
520
+ if (error?.name !== 'AbortError') location.assign(url.href)
521
+ })
522
+ })
523
+ on(window, 'popstate', (event) => {
524
+ const state = event.state?.__docfuse || { scrollY: 0, sidebarScrollTop: 0 }
525
+ const url = new URL(location.href)
526
+ void navigatePage(url, { push: false, state }).then((applied) => {
527
+ if (!applied) location.reload()
528
+ }).catch((error) => {
529
+ if (error?.name !== 'AbortError') location.reload()
530
+ })
531
+ })
532
+ on(d, 'keydown', (event) => {
533
+ if (event.key === 'Tab' && sourceSheet && !sourceSheet.hidden) {
534
+ const items = focusable(sourceSheet)
535
+ if (!items.length) return
536
+ const first = items[0]
537
+ const last = items[items.length - 1]
538
+ if (event.shiftKey && d.activeElement === first) {
539
+ event.preventDefault()
540
+ last.focus()
541
+ } else if (!event.shiftKey && d.activeElement === last) {
542
+ event.preventDefault()
543
+ first.focus()
544
+ }
545
+ return
546
+ }
547
+ if (event.key !== 'Escape') return
548
+ setSidebar(false)
549
+ qa('[data-docfuse-menu][open]').forEach((menu) => menu.removeAttribute('open'))
550
+ setSource(false)
551
+ })
552
+ window.__docfuseShellDispose = () => {
553
+ controller.abort()
554
+ qa('[data-action-state]').forEach((button) => clearTimeout(button._dfActionTimer))
555
+ root.classList.remove('df-source-open')
556
+ }
557
+ }
558
+ window.__docfuseBootstrapShell()`,dr=`window.__docfuseBootstrapOutline = () => {
559
+ window.__docfuseOutlineDispose?.()
560
+ const controller = new AbortController()
561
+ const signal = controller.signal
562
+ const links = Array.from(document.querySelectorAll('[data-docfuse-outline-link]'))
563
+ const map = Object.create(null)
564
+ links.forEach((link) => {
565
+ const href = link.getAttribute('href') || ''
566
+ try { map[decodeURIComponent(href.slice(1))] = link } catch {}
567
+ })
568
+ const headings = Object.keys(map).map((id) => document.getElementById(id)).filter(Boolean)
569
+ let current
570
+ let queued = false
571
+ let frame
572
+ let hashTimer
573
+ function setActive(link) {
574
+ if (current === link) return
575
+ if (current) delete current.dataset.active
576
+ current = link
577
+ if (!link) return
578
+ link.dataset.active = 'true'
579
+ const panel = link.closest('[data-docfuse-outline]')
580
+ if (!panel) return
581
+ const linkRect = link.getBoundingClientRect()
582
+ const panelRect = panel.getBoundingClientRect()
583
+ if (linkRect.top < panelRect.top + 48) {
584
+ panel.scrollTop -= panelRect.top + 48 - linkRect.top
585
+ } else if (linkRect.bottom > panelRect.bottom - 24) {
586
+ panel.scrollTop += linkRect.bottom - panelRect.bottom + 24
587
+ }
588
+ }
589
+ function update() {
590
+ queued = false
591
+ if (!headings.length) return
592
+ const header = document.querySelector('.df-header')?.getBoundingClientRect().height || 58
593
+ const readingLine = header + 48
594
+ let active = headings[0]
595
+ for (const heading of headings) {
596
+ if (heading.getBoundingClientRect().top <= readingLine) active = heading
597
+ else break
598
+ }
599
+ if (window.innerHeight + window.scrollY >= document.documentElement.scrollHeight - 2) {
600
+ active = headings[headings.length - 1]
601
+ }
602
+ if (active) setActive(map[active.id])
603
+ }
604
+ function schedule() {
605
+ if (queued) return
606
+ queued = true
607
+ frame = requestAnimationFrame(update)
608
+ }
609
+ window.addEventListener('scroll', schedule, { passive: true, signal })
610
+ window.addEventListener('resize', schedule, { signal })
611
+ window.addEventListener('hashchange', () => { hashTimer = setTimeout(update, 0) }, { signal })
612
+ update()
613
+ window.__docfuseOutlineDispose = () => {
614
+ controller.abort()
615
+ if (frame) cancelAnimationFrame(frame)
616
+ if (hashTimer) clearTimeout(hashTimer)
617
+ }
618
+ }
619
+ window.__docfuseBootstrapOutline()`;import{Fragment as ia,jsx as v,jsxs as oe}from"react/jsx-runtime";function ur({config:e,graph:t,page:r,home:o=!1,markdownAssets:a,rawSource:i,children:c}){let n=ir({config:e,graph:t,page:r,home:o,assets:a,rawSource:i}),d=n.assets.behaviors.length>0,u=n.assets.pluginClients.map(h=>g(e,`/assets/docfuse-plugins/${h.id}.js`)),l=V(e,r.routePath),m=g(e,e.theme.favicon??ye),f=[e.layout.header?void 0:"df-header-hidden",r.frontmatter.layout==="playground"?"df-playground-page":void 0].filter(Boolean).join(" "),b=r.frontmatter.layout==="playground";return oe("html",{lang:r.locale,className:f||void 0,children:[oe("head",{children:[v("meta",{charSet:"utf-8"}),v("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),v("title",{children:n.title}),v("meta",{name:"description",content:n.description,"data-docfuse-page-head":""}),v("meta",{property:"og:title",content:n.title,"data-docfuse-page-head":""}),v("meta",{property:"og:description",content:n.description,"data-docfuse-page-head":""}),e.search.enabled&&r.search?oe(ia,{children:[v("meta",{"data-pagefind-meta":"title[content]",content:r.title,"data-docfuse-page-head":""}),v("meta",{"data-pagefind-meta":"description[content]",content:r.description,"data-docfuse-page-head":""}),v("meta",{"data-pagefind-filter":`version:${r.version}`,"data-docfuse-page-head":""}),v("meta",{"data-pagefind-filter":`locale:${r.locale}`,"data-docfuse-page-head":""}),v("meta",{"data-pagefind-filter":`status:${r.status}`,"data-docfuse-page-head":""}),(Array.isArray(r.frontmatter.tags)?r.frontmatter.tags:[]).filter(h=>typeof h=="string").map(h=>v("meta",{"data-pagefind-filter":`tag:${h}`,"data-docfuse-page-head":""},h))]}):null,l?v("meta",{property:"og:url",content:l,"data-docfuse-page-head":""}):null,v("meta",{name:"twitter:card",content:"summary"}),v("link",{rel:"icon",href:m}),l?v("link",{rel:"canonical",href:l,"data-docfuse-page-head":""}):null,e.siteUrl?n.alternatePages.map(h=>v("link",{rel:"alternate",hrefLang:h.locale,href:V(e,h.routePath),"data-docfuse-page-head":""},h.locale)):null,v("link",{rel:"stylesheet",href:g(e,"/assets/docfuse.css")}),n.assets.pluginStyles.map(h=>v("link",{rel:"stylesheet",href:g(e,`/assets/docfuse-plugins/${h.id}.css`),"data-docfuse-page-head":""},h.id)),e.theme.darkMode?v("script",{dangerouslySetInnerHTML:{__html:we}}):null]}),oe("body",{children:[oe("div",{className:"df-page-root",style:{"--df-docfuse-config-icon":`url(${JSON.stringify(m)})`},"data-docfuse-page-root":"","data-markdown-behaviors":d?JSON.stringify(n.assets.behaviors):void 0,"data-markdown-client-url":d?g(e,"/assets/docfuse-markdown/index.js"):void 0,"data-markdown-plugin-clients":u.length>0?JSON.stringify(u):void 0,"data-docfuse-playground-client-url":b?g(e,"/assets/docfuse-playground/index.js"):void 0,children:[v("a",{className:"df-skip-link",href:"#docfuse-main",children:n.labels.skipToContent}),e.layout.header?v(er,{model:n}):null,o?v("main",{id:"docfuse-main",className:"df-home",tabIndex:-1,"data-pagefind-body":r.search?"":void 0,children:c}):v(sr,{model:n,children:c}),v(cr,{model:n})]}),v("script",{type:"module",dangerouslySetInnerHTML:{__html:n.markdownClientScript}}),b?v("script",{type:"module",src:g(e,"/assets/docfuse-playground/index.js")}):null,v("script",{dangerouslySetInnerHTML:{__html:lr}}),v("script",{dangerouslySetInnerHTML:{__html:dr}}),e.search.enabled?v("script",{type:"module",src:g(e,"/assets/docfuse-search.js")}):null]})]})}s(ur,"Layout");import{createMarkdownRenderer as Ma}from"@docfuse/markdown/server";import*as Ca from"react";import*as Na from"react/jsx-runtime";import{analyzeMdxModuleBoundary as ca}from"@docfuse/markdown/server/analyze";var la=["react","react/jsx-runtime"],da=new Set(la);function Ie(e){return da.has(e)}s(Ie,"isDocsImportSpecifier");function Be(e){return e.startsWith(".")||Ie(e)}s(Be,"isAllowedDocsImport");function ke(e){let t=ca(e);for(let r of t.unsupportedReferences){let o=r.kind==="dynamic-import"?"Dynamic import":"Re-export";throw new Error(`${o} is not allowed in MDX${r.specifier?`: ${r.specifier}`:""}`)}for(let{specifier:r}of t.imports)if(!Be(r))throw new Error(`External import is not allowed: ${r}`);return{source:t.sourceWithoutImports,imports:t.imports}}s(ke,"prepareMdxSource");import{access as ua,readFile as ma,realpath as Pe}from"fs/promises";import{dirname as pa,extname as fr,isAbsolute as He,relative as hr,resolve as mr,sep as gr}from"path";import{build as fa}from"esbuild";import*as ha from"react";import*as ga from"react/jsx-runtime";import{detectMarkdownAssets as ya}from"@docfuse/markdown/server/analyze";var _e=[".tsx",".ts",".jsx",".js"],pr={react:ha,"react/jsx-runtime":ga};function ba(e){if(Object.hasOwn(pr,e))return pr[e];throw new Error(`External import is not allowed in local docs components: ${e}`)}s(ba,"requireLocalComponentRuntime");function ve(e,t){let r=hr(e,t);return r===""||!r.startsWith(`..${gr}`)&&r!==".."&&!He(r)}s(ve,"isInsideRoot");async function Ue(e){try{return await ua(e),!0}catch{return!1}}s(Ue,"fileExists");async function qe(e,t){let r=await Pe(e);if(!t)return r;let o=await Pe(t),a=hr(o,r);if(a===".."||a.startsWith(`..${gr}`)||He(a))throw new Error(`Local component import escapes the project root: ${e}`);return r}s(qe,"assertInsideProjectRoot");async function je(e,t,r){let o=mr(pa(e),t),a=fr(o);if(a&&!_e.includes(a))throw new Error(`Unsupported local component import: ${t}`);if(a&&await Ue(o))return qe(o,r);for(let i of _e){let c=`${o}${i}`;if(await Ue(c))return qe(c,r)}for(let i of _e){let c=mr(o,`index${i}`);if(await Ue(c))return qe(c,r)}throw new Error(`Local component import not found: ${t}`)}s(je,"resolveLocalModule");async function wa(e,t){let r=t?await Pe(t):void 0,o=new Set([e]),i=(await fa({entryPoints:[e],bundle:!0,outfile:"local-component.js",write:!1,platform:"node",format:"cjs",target:"node22",jsx:"automatic",plugins:[{name:"docfuse-components-alias",setup(c){c.onResolve({filter:/^(?:react|react\/jsx-runtime)$/},n=>({path:n.path,external:!0})),c.onResolve({filter:/.*/},async n=>{if(!He(n.path)||!n.importer||!(r?ve(r,n.importer):o.has(n.importer)))return;let u=await je(n.importer,n.path,t);return o.add(u),{path:u}}),c.onResolve({filter:/^\./},async n=>{if(n.importer&&!(r?ve(r,n.importer):o.has(n.importer)))return;let d=await je(n.importer,n.path,t);return o.add(d),{path:d}}),c.onLoad({filter:/\.(?:[jt]sx?)$/},async n=>{let d=await Pe(n.path);(r?ve(r,d):o.has(d))&&o.add(d)}),c.onResolve({filter:/^react-dom$/},n=>(n.importer?r?ve(r,n.importer):o.has(n.importer):!1)?{errors:[{text:"External import is not allowed in local docs components: react-dom"}]}:void 0),c.onResolve({filter:/^[^./].*/},n=>{if(!Be(n.path))return{errors:[{text:`External import is not allowed in local docs components: ${n.path}`}]}})}}]})).outputFiles.find(c=>fr(c.path)===".js");if(!i)throw new Error(`Failed to bundle local component: ${e}`);return{code:i.text,sourcePaths:[...o]}}s(wa,"bundleLocalModule");async function ka(e){let t={exports:{}};return new Function("module","exports","require",e.code)(t,t.exports,ba),t.exports}s(ka,"importBundle");function va(e){return e.filter(t=>t.specifier.startsWith("."))}s(va,"localImports");async function yr(e,t,r){let o=va(e);if(!o.length)return[];if(!t)throw new Error("Local MDX component imports require the Markdown source file path");let a=new Map;return Promise.all(o.map(async i=>{let c=await je(t,i.specifier,r),n=a.get(c);return n||(n=wa(c,r),a.set(c,n)),{localImport:i,bundle:await n}}))}s(yr,"bundleLocalImports");async function br(e,t,r){let o=await yr(e,t,r);return[...new Set(o.flatMap(({bundle:a})=>a.sourcePaths))].sort()}s(br,"localComponentDependencyPaths");async function Pa(e){let t={},r=new Map;for(let{localImport:o,bundle:a}of e){let i=r.get(a);i||(i=ka(a),r.set(a,i));let c=await i;for(let n of o.bindings)if(n.namespace)t[n.local]=c;else{if(!Object.hasOwn(c,n.imported))throw new Error(`Local module ${JSON.stringify(o.specifier)} does not export ${JSON.stringify(n.imported)}`);t[n.local]=c[n.imported]}}return t}s(Pa,"componentsFromBundles");function Sa(e,t){e.behaviors=[...new Set([...e.behaviors,...t.behaviors])],e.math||=t.math,e.pluginClients=[...new Map([...e.pluginClients,...t.pluginClients].map(r=>[r.id,r])).values()],e.pluginStyles=[...new Map([...e.pluginStyles,...t.pluginStyles].map(r=>[r.id,r])).values()]}s(Sa,"mergeAssets");function xa(){return{behaviors:[],math:!1,pluginClients:[],pluginStyles:[]}}s(xa,"emptyAssets");async function Da(e,t=[]){let r=xa(),o=new Set;for(let{bundle:a}of e)for(let i of a.sourcePaths)o.has(i)||(o.add(i),Sa(r,ya(await ma(i,"utf8"),t,"mdx")));return r}s(Da,"assetsFromBundles");async function wr(e,t,r,o=[]){let a=await yr(e,t,r),[i,c]=await Promise.all([Pa(a),Da(a,o)]);return{components:i,assets:c}}s(wr,"loadLocalComponentBundle");function Aa(...e){return{behaviors:[...new Set(e.flatMap(t=>t.behaviors))],math:e.some(t=>t.math),pluginClients:[...new Map(e.flatMap(t=>t.pluginClients).map(t=>[t.id,t])).values()],pluginStyles:[...new Map(e.flatMap(t=>t.pluginStyles).map(t=>[t.id,t])).values()]}}s(Aa,"mergeAssets");function Ea(e,t){let r={react:Ca,"react/jsx-runtime":Na},o={...t};for(let a of e){if(!Ie(a.specifier))continue;let i=r[a.specifier];for(let c of a.bindings){if(c.namespace){o[c.local]=i;continue}if(c.imported==="default"&&a.specifier==="react"){o[c.local]=i.default??i;continue}if(!Object.hasOwn(i,c.imported))throw new Error(`Module ${JSON.stringify(a.specifier)} does not export ${JSON.stringify(c.imported)}`);o[c.local]=i[c.imported]}}return o}s(Ea,"bindImports");async function kr(e,t,r,o,a,i,c=Ma()){let n=ke(e),{components:d,assets:u}=await wr(n.imports,t,r,o?.plugins),l=await c.renderMdx(n.source,{markdown:o,classNames:a,urlTransform:i,as:"article",components:{...Ea(n.imports,d)}});return{content:l.content,assets:Aa(l.assets,u)}}s(kr,"renderMdxResult");import{mkdir as Ra}from"fs/promises";import{dirname as La,join as Ta}from"path";import{fileURLToPath as $a}from"url";function Oa(){let e=import.meta.url.endsWith(".js")?"./search-client.js":"./searchClientRuntime.ts";return $a(new URL(e,import.meta.url))}s(Oa,"searchRuntimeEntry");async function vr(e){let{build:t}=await import("esbuild"),r=Ta(e,"assets/docfuse-search.js");await Ra(La(r),{recursive:!0}),await t({entryPoints:[Oa()],bundle:!0,format:"iife",platform:"browser",target:"es2022",outfile:r,minify:!0,sourcemap:!1,legalComments:"none",logLevel:"silent"})}s(vr,"buildSearchBundle");import{DEFAULT_SEMANTIC_COLORS as N,DEFAULT_MARKDOWN_THEME as Ge,markdownThemeDeclarations as Fa,resolveMarkdownTheme as Ia}from"@docfuse/markdown/theme";var Ba={docfuse:{light:N.light.blue,dark:N.dark.blue},cyan:{light:N.light.cyan,dark:N.dark.cyan},emerald:{light:N.light.green,dark:N.dark.green},blue:{light:N.light.blue,dark:N.dark.blue},green:{light:N.light.green,dark:N.dark.green},red:{light:N.light.red,dark:N.dark.red},orange:{light:N.light.orange,dark:N.dark.orange},violet:{light:N.light.indigo,dark:N.dark.indigo},neutral:{light:"oklch(0.3 0 0)",dark:"oklch(0.85 0 0)"}};function Pr(e){let t=Ge.colors[e];return{background:t.canvas,foreground:t.foreground,text:t.text,muted:t.muted,muted2:t.mutedSubtle,card:t.surface,card2:t.surfaceSecondary,soft:t.surfaceSoft,popover:t.surfaceElevated,border:t.border,borderStrong:t.borderStrong,hairline:t.hairline,primarySoft:t.primarySoft,primaryForeground:t.primaryForeground,primaryDeep:t.primaryDeep,accent:t.accent,info:t.info,infoDeep:t.infoDeep,success:t.success,successDeep:t.successDeep,warning:t.warning,warningDeep:t.warningDeep,danger:t.danger,dangerDeep:t.dangerDeep,codeBackground:t.codeBackground,codeForeground:t.codeForeground,overlay:t.overlay,shadow:t.shadow,shadowSmall:t.shadowSmall}}s(Pr,"paletteFromMarkdown");var _a={paper:{light:Pr("light"),dark:Pr("dark")},neutral:{light:{background:"oklch(0.994 0.003 95)",foreground:"oklch(0.205 0.008 80)",text:"color-mix(in oklab, var(--df-ink) 88%, var(--df-ink-secondary))",muted:"oklch(0.505 0.01 80)",muted2:"oklch(0.62 0.01 80)",card:"oklch(0.985 0.004 95)",card2:"oklch(0.96 0.004 95)",soft:"oklch(0.955 0.006 95)",popover:"oklch(0.997 0.002 95)",border:"transparent",borderStrong:"transparent",hairline:"oklch(0.93 0.004 90)"},dark:{background:"oklch(0.17 0.006 85)",foreground:"oklch(0.92 0.005 90)",text:"color-mix(in oklab, var(--df-ink) 88%, var(--df-ink-secondary))",muted:"oklch(0.66 0.01 88)",muted2:"oklch(0.54 0.01 88)",card:"oklch(0.205 0.006 85)",card2:"oklch(0.235 0.006 85)",soft:"oklch(0.255 0.007 85)",popover:"oklch(0.21 0.006 85)",border:"transparent",borderStrong:"transparent",hairline:"oklch(1 0 0 / 6%)"}},slate:{light:{background:"oklch(0.99 0.004 250)",foreground:"oklch(0.22 0.018 255)",text:"color-mix(in oklab, var(--df-ink) 88%, var(--df-ink-secondary))",muted:"oklch(0.49 0.02 255)",muted2:"oklch(0.61 0.018 255)",card:"oklch(0.982 0.005 250)",card2:"oklch(0.955 0.007 250)",soft:"oklch(0.95 0.01 250)",popover:"oklch(0.996 0.003 250)",border:"transparent",borderStrong:"transparent",hairline:"oklch(0.93 0.008 250)"},dark:{background:"oklch(0.17 0.014 255)",foreground:"oklch(0.92 0.006 250)",text:"color-mix(in oklab, var(--df-ink) 88%, var(--df-ink-secondary))",muted:"oklch(0.68 0.018 250)",muted2:"oklch(0.54 0.018 250)",card:"oklch(0.21 0.014 255)",card2:"oklch(0.25 0.014 255)",soft:"oklch(0.27 0.014 255)",popover:"oklch(0.215 0.014 255)",border:"transparent",borderStrong:"transparent",hairline:"oklch(1 0 0 / 6%)"}},zinc:{light:{background:"oklch(0.992 0 0)",foreground:"oklch(0.21 0.005 285)",text:"color-mix(in oklab, var(--df-ink) 88%, var(--df-ink-secondary))",muted:"oklch(0.5 0.01 285)",muted2:"oklch(0.62 0.008 285)",card:"oklch(0.982 0.002 285)",card2:"oklch(0.955 0.003 285)",soft:"oklch(0.95 0.003 285)",popover:"oklch(0.996 0 0)",border:"transparent",borderStrong:"transparent",hairline:"oklch(0.93 0.003 285)"},dark:{background:"oklch(0.17 0.004 285)",foreground:"oklch(0.92 0.003 285)",text:"color-mix(in oklab, var(--df-ink) 88%, var(--df-ink-secondary))",muted:"oklch(0.67 0.006 285)",muted2:"oklch(0.54 0.006 285)",card:"oklch(0.21 0.004 285)",card2:"oklch(0.245 0.004 285)",soft:"oklch(0.265 0.004 285)",popover:"oklch(0.215 0.004 285)",border:"transparent",borderStrong:"transparent",hairline:"oklch(1 0 0 / 6%)"}},stone:{light:{background:"oklch(0.992 0.004 70)",foreground:"oklch(0.22 0.01 70)",text:"color-mix(in oklab, var(--df-ink) 88%, var(--df-ink-secondary))",muted:"oklch(0.5 0.012 70)",muted2:"oklch(0.62 0.012 70)",card:"oklch(0.982 0.005 70)",card2:"oklch(0.955 0.006 70)",soft:"oklch(0.95 0.007 70)",popover:"oklch(0.996 0.003 70)",border:"transparent",borderStrong:"transparent",hairline:"oklch(0.93 0.006 70)"},dark:{background:"oklch(0.17 0.008 70)",foreground:"oklch(0.92 0.005 70)",text:"color-mix(in oklab, var(--df-ink) 88%, var(--df-ink-secondary))",muted:"oklch(0.67 0.01 70)",muted2:"oklch(0.54 0.01 70)",card:"oklch(0.21 0.008 70)",card2:"oklch(0.245 0.008 70)",soft:"oklch(0.265 0.008 70)",popover:"oklch(0.215 0.008 70)",border:"transparent",borderStrong:"transparent",hairline:"oklch(1 0 0 / 6%)"}}};function ze(e){return typeof e=="number"?`${e}px`:e}s(ze,"cssLength");function Ua(e,t){return Ba[t]?.[e]??t}s(Ua,"accentFor");function Sr(e,t){let r=Ua(t,e.theme.accentColor),o=_a[e.theme.baseColor][t],a=e.theme.accentColor==="docfuse",i=Ge.colors[t];return{...o,primary:r,primarySoft:a&&o.primarySoft?o.primarySoft:`color-mix(in oklab, ${r} 12%, var(--df-surface))`,primaryForeground:a&&o.primaryForeground?o.primaryForeground:`color-mix(in oklab, ${r} 76%, var(--df-ink))`,primaryDeep:a&&o.primaryDeep?o.primaryDeep:`color-mix(in oklab, ${r} 84%, var(--df-ink))`,accent:o.accent??r,info:o.info??i.info,infoDeep:o.infoDeep??i.infoDeep,success:o.success??i.success,successDeep:o.successDeep??i.successDeep,warning:o.warning??i.warning,warningDeep:o.warningDeep??i.warningDeep,danger:o.danger??i.danger,dangerDeep:o.dangerDeep??i.dangerDeep,codeBackground:o.codeBackground??o.card2??o.card,codeForeground:o.codeForeground??o.foreground,overlay:o.overlay??i.overlay,shadow:o.shadow??i.shadow,shadowSmall:o.shadowSmall??i.shadowSmall}}s(Sr,"resolveTokens");function xr(e,t){let r=Ge.colors[t];return{canvas:e.background??r.canvas,foreground:e.foreground??r.foreground,text:e.text??r.text,muted:e.muted??r.muted,mutedSubtle:e.muted2??r.mutedSubtle,surface:e.card??r.surface,surfaceSecondary:e.card2??r.surfaceSecondary,surfaceSoft:e.soft??r.surfaceSoft,surfaceElevated:e.popover??r.surfaceElevated,border:e.border??r.border,borderStrong:e.borderStrong??r.borderStrong,hairline:e.hairline??r.hairline,primary:e.primary??r.primary,primarySoft:e.primarySoft??r.primarySoft,primaryForeground:e.primaryForeground??r.primaryForeground,primaryDeep:e.primaryDeep??r.primaryDeep,accent:e.accent??r.accent,info:e.info??r.info,infoDeep:e.infoDeep??r.infoDeep,success:e.success??r.success,successDeep:e.successDeep??r.successDeep,warning:e.warning??r.warning,warningDeep:e.warningDeep??r.warningDeep,danger:e.danger??r.danger,dangerDeep:e.dangerDeep??r.dangerDeep,codeBackground:e.codeBackground??r.codeBackground,codeForeground:e.codeForeground??r.codeForeground,overlay:e.overlay??r.overlay,shadow:e.shadow??r.shadow,shadowSmall:e.shadowSmall??r.shadowSmall}}s(xr,"themeColors");function qa(e){let t=ze(e.theme.radius);return Ia({colors:{light:{...xr(Sr(e,"light"),"light"),...e.theme.tokens.colors?.light},dark:{...xr(Sr(e,"dark"),"dark"),...e.theme.tokens.colors?.dark}},typography:e.theme.tokens.typography,layout:e.theme.tokens.layout,geometry:{radiusSmall:t,radiusMedium:t,radiusLarge:t,...e.theme.tokens.geometry},motion:e.theme.tokens.motion})}s(qa,"resolveDocfuseTheme");function Dr(e,t){let r=t.colors[e].primary;return`${Fa(t,e)}
620
+ --df-accent-50: color-mix(in oklab, ${r} 8%, var(--df-surface));
621
+ --df-accent-100: color-mix(in oklab, ${r} 16%, var(--df-surface));
622
+ --df-accent-200: color-mix(in oklab, ${r} 28%, var(--df-surface));
623
+ --df-accent-300: color-mix(in oklab, ${r} 48%, var(--df-surface));
624
+ --df-accent-400: color-mix(in oklab, ${r} 78%, var(--df-surface));
625
+ --df-accent-600: color-mix(in oklab, ${r} 88%, var(--df-ink));
626
+ --df-accent-700: color-mix(in oklab, ${r} 76%, var(--df-ink));
627
+ --df-accent-800: color-mix(in oklab, ${r} 62%, var(--df-ink));
628
+ --df-accent-900: color-mix(in oklab, ${r} 48%, var(--df-ink));`}s(Dr,"paletteCss");function Mr(e){let t=qa(e),r=ze(e.theme.sidebarWidth),o=ze(e.theme.outlineWidth),a=`:root {
629
+ ${Dr("light",t)}
630
+ --df-sidebar-width: ${r};
631
+ --df-outline-width: ${o};
632
+ }`;return e.theme.darkMode?`${a}
633
+ .dark {
634
+ ${Dr("dark",t)}
635
+ }`:a}s(Mr,"buildThemeVariables");function ja(e,t){if(t==="/")return e;let r=t.replace(/\/$/,"");return e===r||e.startsWith(`${r}/`)||!e.startsWith("/")||e.startsWith("//")?e:`${r}${e}`}s(ja,"withBasePath");function Cr(e){return t=>ja(t,e)}s(Cr,"createBasePathUrlTransform");import{rm as Ha}from"fs/promises";import{fileURLToPath as za}from"url";import{join as Ga}from"path";import{build as Ka}from"esbuild";function ae(e){return JSON.stringify(e).replace(/</g,"\\u003c").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}s(ae,"jsonForJavaScript");function Va(){let e=import.meta.url.endsWith(".js")?"./playground-client.js":"./playgroundClient.tsx";return za(new URL(e,import.meta.url))}s(Va,"playgroundRuntimeEntry");async function Nr(e,t,r){let o=Ga(t,"assets/docfuse-playground");await Ha(o,{recursive:!0,force:!0});let a=r.markdown.plugins.map(u=>{if(!u.browserCompiler)throw new Error(`Markdown plugin "${u.name}" must declare browserCompiler to support Playground realtime preview`);return u.browserCompiler}),i=a.map((u,l)=>`import { ${u.exportName} as docfusePlugin${l} } from ${ae(u.module)}`).join(`
636
+ `),c=a.map((u,l)=>u.options===void 0?`docfusePlugin${l}()`:`docfusePlugin${l}(${ae(u.options)})`).join(`,
637
+ `),n={html:r.markdown.html,code:r.markdown.code,features:r.markdown.features},d=`import { mountPlaygrounds } from ${ae(Va())}
638
+ ${i}
639
+
640
+ const options = {
641
+ basePath: ${ae(r.basePath)},
642
+ markdown: { ...${ae(n)}, plugins: [
643
+ ${c}
644
+ ] }
645
+ }
646
+ window.__docfuseBootstrapPlayground = () => mountPlaygrounds(options)
647
+ window.__docfuseBootstrapPlayground()`;await Ka({absWorkingDir:e,stdin:{contents:d,loader:"js",resolveDir:e,sourcefile:"docfuse-playground-entry.js"},bundle:!0,format:"esm",platform:"browser",target:"es2022",outdir:o,entryNames:"index",chunkNames:"chunks/[name]-[hash]",assetNames:"assets/[name]-[hash]",splitting:!0,minify:!0,sourcemap:!1,define:{"process.env.NODE_ENV":JSON.stringify("production")},logLevel:"silent"})}s(Nr,"buildPlaygroundBundle");import{copyFile as se,cp as Rr,lstat as Wa,mkdir as Se,readFile as Ve,readdir as Lr,realpath as Ar,rm as Tr,stat as Ja}from"fs/promises";import{createRequire as $r}from"module";import{dirname as ie,join as I,posix as z,relative as Xa,resolve as ne}from"path";import{analyzeMarkdown as Ya}from"@docfuse/markdown/server/analyze";var We=$r(import.meta.url);async function Qa(e,t){await Rr(e,t,{recursive:!0,filter:s(async r=>(await Ja(r)).isDirectory()||r.endsWith(".js"),"filter")})}s(Qa,"copyJavaScriptDirectory");async function Or(e){let t=We.resolve("@docfuse/markdown/client"),r=I(e,"assets/docfuse-markdown");await Qa(ie(t),r)}s(Or,"copyMarkdownClient");var Za=/^[a-z0-9]+(?:-[a-z0-9]+)*$/;function Er(e,t,r){if(!Za.test(t.id))throw new Error(`Invalid Markdown plugin ${r} id: ${t.id}`);let o=e.get(t.id);if(o&&JSON.stringify(o)!==JSON.stringify(t))throw new Error(`Markdown plugin ${r} id "${t.id}" is declared by both "${o.module}" and "${t.module}"`);e.set(t.id,t)}s(Er,"registerPluginAsset");function Ke(e,t){if(!e||e.startsWith("/")||e.includes("\\")||e.split("/").some(r=>r===""||r==="."||r===".."))throw new Error(`Invalid Markdown plugin ${t} path: ${e}`)}s(Ke,"assertSafePluginResourcePath");async function Fr(e,t,r){await Se(t,{recursive:!0});for(let o of await Lr(e,{withFileTypes:!0})){if(o.isSymbolicLink())throw new Error(`Markdown plugin resources must not use symbolic links: ${I(e,o.name)}`);let a=I(e,o.name),i=I(t,o.name);o.isDirectory()?await Fr(a,i,r):o.isFile()&&(!r.extensions||r.extensions.some(c=>o.name.endsWith(c)))&&await se(a,i)}}s(Fr,"copyPluginResourceDirectory");async function en(e,t){let r=We.resolve(t.module);if(await se(r,I(e,`${t.id}.js`)),!t.resources?.length)return;let o=I(e,t.id),a=$r(r);for(let i of t.resources){Ke(i.output,"resource output");let c=a.resolve(i.module),n=ne(o,i.output);if(!ee(o,n))throw new Error(`Markdown plugin resource output escapes its client directory: ${i.output}`);await Se(ie(n),{recursive:!0}),await se(c,n);for(let d of i.directories??[]){Ke(d.source,"resource source"),Ke(d.output,"resource directory output");let u=ie(c),l=ne(u,d.source),m=ne(o,d.output);if(!ee(u,l)||!ee(o,m))throw new Error(`Markdown plugin resource directory escapes its declared root: ${d.source}`);await Fr(l,m,d)}}}s(en,"copyMarkdownPluginClient");function le(e,t,r){e.pluginClients.forEach(o=>Er(t,o,"client")),e.pluginStyles.forEach(o=>Er(r,o,"style"))}s(le,"registerPluginAssets");async function Ir(e,t,r){let o=I(e,"assets/docfuse-plugins");await Tr(o,{recursive:!0,force:!0}),!(t.size===0&&r.size===0)&&(await Se(o,{recursive:!0}),await Promise.all([...[...t.values()].map(a=>en(o,a)),...[...r.values()].map(a=>se(We.resolve(a.module),I(o,`${a.id}.css`)))]))}s(Ir,"copyMarkdownPluginAssets");async function Je(e,t){try{await Rr(e,t,{recursive:!0,force:!0})}catch(r){throw new Error(`Failed to copy required KaTeX fonts from ${e}`,{cause:r})}}s(Je,"copyRequiredMathFonts");async function Xe(e,t){let r=[];async function o(i,c){for(let n of await Lr(i,{withFileTypes:!0})){if(n.isSymbolicLink())throw new Error(`Public assets must not be symbolic links: ${z.join(c,n.name)}`);let d=I(i,n.name),u=z.join(c,n.name);n.isDirectory()?await o(d,u):n.isFile()&&r.push({source:d,outputPath:u})}}s(o,"walk");let a=new Set(t.versions.items.map(i=>i.docsDir));for(let i of a){let c=I(K(e,i,`public directory for ${i}`),"public");try{await o(c,"")}catch(n){if(n.code!=="ENOENT")throw n}}return r}s(Xe,"collectPublicAssets");function Br(e){let t=Ya(e);return[...new Set([...t.images,...t.links])].map(r=>(r.split("#")[0]??"").split("?")[0]??"").filter(r=>r&&!r.startsWith("/")&&!/^(?:[a-z][a-z\d+.-]*:|\/\/|#)/i.test(r)&&!/\.mdx?$/i.test(r))}s(Br,"relativeAssetTargets");function _r(e){return e.split("/").map(t=>{let r=decodeURIComponent(t);if(r.includes("/")||r.includes("\\"))throw new Error(`Invalid relative asset path: ${e}`);return r}).join("/")}s(_r,"decodeRelativeUrlPath");async function Ye(e,t){let r=[];for(let o of t){let a=K(e,o.docsDir,"docsDir"),i=await Ar(a);for(let c of Br(o.body)){let n=_r(c),d=ne(ie(o.sourcePath),n),u;try{u=await Wa(d)}catch(f){if(f.code==="ENOENT")continue;throw f}if(u.isSymbolicLink())throw new Error(`Relative assets must not use symbolic links: ${c}`);if(!u.isFile())continue;let l=await Ar(d),m=ne(i,Xa(a,d));if(O(l)!==O(m))throw new Error(`Relative assets must not use symbolic links: ${c}`);if(!ee(i,l))throw new Error(`Relative asset must stay inside docsDir: ${c}`);r.push({source:l,outputPath:z.resolve("/",z.dirname(o.outputPath),n).slice(1)})}}return r}s(Ye,"collectPageAssets");function ce(e){let t=new Set;for(let r of e){if("assetOutputPaths"in r&&r.assetOutputPaths){r.assetOutputPaths.forEach(o=>t.add(o));continue}if("body"in r)for(let o of Br(r.body)){let a=_r(o);t.add(z.resolve("/",z.dirname(r.outputPath),a).slice(1))}}return t}s(ce,"pageAssetOutputPathsFor");async function Ur(e,t,r,o){if(!t.length)return;let a=new Set([...ce(r),...o].map(O)),i=[...ce(t)].filter(c=>!a.has(O(c)));await Promise.all(i.map(c=>Tr(T(e,c,`stale page asset ${c}`),{force:!0})))}s(Ur,"removeStalePageAssets");async function Qe(e,t,r){let o=new Set([...r].map(O)),a=s(u=>{let l=[],m=z.dirname(u);for(;m!==".";)l.push(m),m=z.dirname(m);return l},"ancestorsOf"),i=new Set([...o].flatMap(u=>a(u))),c=Pt.map(O),n=new Map,d=new Set;for(let u of t){let l=O(u.outputPath),m=a(l);if(o.has(l)||i.has(l)||m.some(h=>o.has(h))||c.some(h=>l===h||l.startsWith(`${h}/`)))throw new Error(`Static asset conflicts with generated output: ${u.outputPath}`);let f=n.get(l);if(f&&f!==u.source){let[h,S]=await Promise.all([Ve(f),Ve(u.source)]);if(!h.equals(S))throw new Error(`Multiple static assets target the same output path: ${u.outputPath}`)}if(f)continue;if(d.has(l)||m.some(h=>n.has(h)))throw new Error(`Multiple static assets target overlapping output paths: ${u.outputPath}`);n.set(l,u.source);for(let h of m)d.add(h);let b=T(e,u.outputPath,`static asset ${u.outputPath}`);await Se(ie(b),{recursive:!0}),await se(u.source,b)}}s(Qe,"copyStaticAssets");async function qr(e,t){return t.length?(await Promise.all(t.map(async o=>{let a=await Ve(K(e,o,"styles entry"),"utf8");return`/* User style: ${o} */
648
+ ${a}`}))).join(`
649
+ `):""}s(qr,"readCustomStyles");import{Fragment as ln,jsx as tt,jsxs as dn}from"react/jsx-runtime";var an={behaviors:[],math:!1,pluginClients:[],pluginStyles:[]};function nn(e,t){let r=new Map,o=new Map;le(e,r,o);for(let a of t)le({behaviors:[],math:a.assets?.math===!0,pluginClients:[...a.assets?.clients??[]],pluginStyles:[...a.assets?.styles??[]]},r,o);return{behaviors:e.behaviors,math:e.math||t.some(a=>a.assets?.math===!0),pluginClients:[...r.values()],pluginStyles:[...o.values()]}}s(nn,"playgroundMarkdownAssets");function sn(e){return JSON.stringify(e).replace(/</g,"\\u003c").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}s(sn,"jsonForInlineScript");function cn(e,t){let r=t.defaultLocale,o=Te(r,e.i18n.messages),a=_(e.title),i=_(g(e,e.theme.favicon??ye)),c=_(g(e,"/assets/docfuse.css")),n=t.versions.find(S=>S.id===t.currentVersion),d=g(e,j(r,t.defaultLocale,n?.base??"/")),u=_(d),l=_(o.title),m=_(o.description),f=_(o.home),b=t.versions.flatMap(S=>t.locales.map(D=>{let p=Te(D,e.i18n.messages),P=g(e,j(D,t.defaultLocale,S.base));return{locale:D,prefix:P,home:P,title:p.title,description:p.description,homeLabel:p.home,documentTitle:`404 - ${p.title} | ${e.title}`}})).sort((S,D)=>D.prefix.length-S.prefix.length),h=`(function(){var p=${sn(b)},n=location.pathname,m=p.find(function(x){var r=x.prefix.replace(//$/,'');return n===r||n.indexOf(x.prefix)===0});if(!m)return;document.documentElement.lang=m.locale;document.title=m.documentTitle;var t=document.getElementById('docfuse-404-title'),d=document.getElementById('docfuse-404-description'),h=document.getElementById('docfuse-404-home');if(t)t.textContent=m.title;if(d)d.textContent=m.description;if(h){h.textContent=m.homeLabel;h.setAttribute('href',m.home)}})()`;return`<!doctype html><html lang="${_(r)}"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>404 - ${l} | ${a}</title><meta name="robots" content="noindex"><link rel="icon" href="${i}"><link rel="stylesheet" href="${c}"><script>${we}</script></head><body><div class="df-not-found"><span class="df-not-found-code">404</span><h1 id="docfuse-404-title" class="df-not-found-title">${l}</h1><p id="docfuse-404-description" class="df-not-found-desc">${m}</p><a id="docfuse-404-home" href="${u}" class="df-not-found-link">${f}</a></div><script>${h}</script></body></html>`}s(cn,"render404Page");async function zr({cwd:e,config:t,graph:r,pages:o=r.pages,previousPages:a=[],renderer:i=on(),writeSharedAssets:c=!0}){let n=L(e,t.outputDir),d=St(t,r),u=r.pages.some(p=>p.frontmatter.layout==="playground"),l=[];if(await Ze(W(n,"assets"),{recursive:!0}),c){let p=u&&t.markdown.plugins.some(U=>U.assets?.math===!0)||r.pages.some(U=>Hr(U.body,t.markdown.plugins,G(U.relativePath)?"mdx":"markdown").math),[P,x]=await Promise.all([Kt({math:p}),qr(e,t.styles)]);await xe(W(n,"assets/docfuse.css"),`${P}
650
+ ${Mr(t)}
651
+ ${x}
652
+ `),await tn(Gt(),W(n,"assets/file-icons"),{recursive:!0,force:!0});let R=W(n,"assets/fonts");if(p){let U=zt();await Je(U,R)}else await et(R,{recursive:!0,force:!0});t.search.enabled&&await vr(n),u?await Nr(e,n,t):await et(W(n,"assets/docfuse-playground"),{recursive:!0,force:!0});let[pe,Ce]=await Promise.all([Xe(e,t),Ye(e,r.pages)]);l=pe,await Qe(n,[...l,...Ce],d),await xe(W(n,"404.html"),cn(t,r))}else{let[p,P]=await Promise.all([Xe(e,t),Ye(e,o)]);l=p,await Qe(n,P,d)}let m=c?o:r.pages,f=new Map,b=new Map,h=new Set;m.forEach(p=>{let P=Hr(p.body,t.markdown.plugins,G(p.relativePath)?"mdx":"markdown");le(P,f,b),P.behaviors.forEach(x=>h.add(x))});let S=8,D=Cr(t.basePath);await F(o,S,async p=>{let P=p.routePath===j(p.locale,r.defaultLocale,p.versionBase),x,R=an,pe={...t.markdown,locale:p.locale,labels:{...ge(p.locale,t.i18n.messages),...t.markdown.labels}};if(G(p.relativePath)){let J={...pe,html:"trusted"},pt=await kr(p.body,p.sourcePath,e,J,void 0,D,i);x=pt.content,R=pt.assets}else{let J=await i.render(p.body,{markdown:pe,as:"article",urlTransform:D});x=J.content,R=J.assets}p.frontmatter.layout==="playground"&&(R=nn(R,t.markdown.plugins)),le(R,f,b),R.behaviors.forEach(J=>h.add(J));let Ce=!!(p.frontmatter.hero||p.frontmatter.features?.length),U=p.body.trim().length>0,so=P?dn(ln,{children:[Ce?tt(Wt,{page:p,config:t}):null,U?x:null]}):x??tt("article",{className:"df-content"}),dt=T(n,p.markdownOutputPath,`page ${p.sourceRelativePath}`),ut=p.transformedSource,io="<!doctype html>"+rn(tt(ur,{config:t,graph:r,page:p,home:P,markdownAssets:R,rawSource:ut,children:so})),mt=T(n,p.outputPath,`page ${p.sourceRelativePath}`);await Ze(jr(mt),{recursive:!0}),await xe(mt,io),await Ze(jr(dt),{recursive:!0}),await xe(dt,ut)}),h.size>0?await Or(n):await et(W(n,"assets/docfuse-markdown"),{recursive:!0,force:!0}),await Ir(n,f,b),await Ur(n,a,r.pages,[...d,...l.map(p=>p.outputPath)])}s(zr,"renderSite");import{writeFile as un}from"fs/promises";import{join as mn}from"path";async function Gr(e,t){let r=V(t,"/sitemap.xml");await un(mn(L(e,t.outputDir),"robots.txt"),`User-agent: *
653
+ Allow: /
654
+ ${r?`Sitemap: ${r}
655
+ `:""}`)}s(Gr,"writeRobots");import{writeFile as pn}from"fs/promises";import{join as fn}from"path";async function Kr(e,t,r){if(!t.siteUrl)return;let o=s(i=>i.replace(/[&<>"']/g,c=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&apos;"})[c]??c),"escapeXml"),a=r.pages.map(i=>` <url><loc>${o(V(t,i.routePath))}</loc></url>`).join(`
656
+ `);await pn(fn(L(e,t.outputDir),"sitemap.xml"),`<?xml version="1.0" encoding="UTF-8"?>
657
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
658
+ ${a}
659
+ </urlset>
660
+ `)}s(Kr,"writeSitemap");import{createMarkdownRenderer as Fn}from"@docfuse/markdown/server";import{satisfies as In,valid as Bn,validRange as _n}from"semver";function Vr({current:e,previous:t,outputExists:r,outputValid:o=r,forceClean:a=!1}){if(a)return{mode:"clean",changedPageKeys:Object.keys(e.pages),removedPageKeys:[],reason:"forced"};if(!t)return{mode:"clean",changedPageKeys:Object.keys(e.pages),removedPageKeys:[],reason:"missing-manifest"};if(!r)return{mode:"clean",changedPageKeys:Object.keys(e.pages),removedPageKeys:Object.keys(t.pages).filter(n=>!e.pages[n]),reason:"missing-output"};if(!o)return{mode:"clean",changedPageKeys:Object.keys(e.pages),removedPageKeys:Object.keys(t.pages).filter(n=>!e.pages[n]),reason:"invalid-output"};if(e.buildFingerprint===t.buildFingerprint)return{mode:"cached",changedPageKeys:[],removedPageKeys:[],reason:"unchanged-inputs"};if(e.sharedFingerprint!==t.sharedFingerprint)return{mode:"clean",changedPageKeys:Object.keys(e.pages),removedPageKeys:Object.keys(t.pages).filter(n=>!e.pages[n]),reason:"shared-inputs-changed"};let i=Object.entries(e.pages).filter(([n,d])=>t.pages[n]?.fingerprint!==d.fingerprint).map(([n])=>n),c=Object.keys(t.pages).filter(n=>!e.pages[n]);return i.length===0&&c.length===0?{mode:"clean",changedPageKeys:Object.keys(e.pages),removedPageKeys:[],reason:"unclassified-inputs-changed"}:{mode:"incremental",changedPageKeys:i,removedPageKeys:c,reason:"page-inputs-changed"}}s(Vr,"planBuild");import{copyFile as hn,mkdir as gn,readFile as Wr,readdir as yn,stat as bn}from"fs/promises";import{dirname as wn,relative as kn,resolve as rt}from"path";var ot=16;function Jr(e,t){return kn(rt(e),rt(t)).replace(/\\/g,"/")}s(Jr,"portablePath");async function Xr(e){async function t(r){let o=await yn(r,{withFileTypes:!0});return(await Promise.all(o.map(async a=>{let i=rt(r,a.name);if(a.isSymbolicLink())throw new Error(`Generated output must not be a symbolic link: ${i}`);return a.isDirectory()?t(i):a.isFile()?[i]:[]}))).flat()}return s(t,"walk"),t(e)}s(Xr,"outputFilesUnder");async function Yr(e){let t=(await Xr(e)).sort(),r=await F(t,ot,async o=>{let a=await Wr(o);return[Jr(e,o),{fingerprint:B(a),size:a.byteLength}]});return Object.fromEntries(r)}s(Yr,"captureBuildOutputs");async function Qr(e,t){try{let r=Object.keys(t).sort(),o=(await Xr(e)).map(i=>Jr(e,i)).sort();return o.length!==r.length||o.some((i,c)=>i!==r[c])?!1:(await F(Object.entries(t),ot,async([i,c])=>{let n=T(e,i,`cached output ${i}`),d=await bn(n);return!d.isFile()||d.size!==c.size?!1:B(await Wr(n))===c.fingerprint})).every(Boolean)}catch(r){if(r.code==="ENOENT")return!1;throw r}}s(Qr,"verifyBuildOutputs");async function Zr(e,t,r){await F(Object.keys(r),ot,async o=>{let a=T(e,o,`cached output ${o}`),i=T(t,o,`staged output ${o}`);await gn(wn(i),{recursive:!0}),await hn(a,i)})}s(Zr,"copyBuildOutputs");import{readFile as st,readdir as Pn}from"fs/promises";import{dirname as eo,join as Q,relative as Sn,resolve as ue}from"path";import{fileURLToPath as at}from"url";import{detectMarkdownAssets as xn}from"@docfuse/markdown/server/analyze";var De=16;function it(e,t){return Sn(ue(e),ue(t)).replace(/\\/g,"/")}s(it,"portablePath");function de(e){return JSON.stringify([e.version,e.sourceRelativePath])}s(de,"buildPageKey");async function to(e){async function t(r){let o=await Pn(r,{withFileTypes:!0});return(await Promise.all(o.map(async a=>{let i=Q(r,a.name);if(a.isDirectory())return t(i);if(a.isSymbolicLink())throw new Error(`Documentation support files must not use symbolic links: ${it(e,i)}`);return!a.isFile()||/\.mdx?$/i.test(a.name)?[]:[i]}))).flat()}return s(t,"walk"),t(e)}s(to,"supportFilesUnder");async function Dn(e){let t=[...new Set(e.map(o=>ue(o)))].sort(),r=(await F(t,De,async o=>{try{return{path:o,fingerprint:B(await st(o))}}catch(a){if(!a||typeof a!="object"||!("code"in a)||a.code!=="ENOENT")throw a;return null}})).filter(o=>o!==null);return H(r)}s(Dn,"fingerprintExistingFiles");async function nt(e){try{return await to(e)}catch(t){if(t&&typeof t=="object"&&"code"in t&&t.code==="ENOENT")return[];throw t}}s(nt,"filesUnderIfPresent");async function Mn(){let e=eo(at(import.meta.url)),t=[];try{let r=at(import.meta.resolve("@docfuse/markdown/theme")),o=eo(r);t.push(Q(o,"tokens.css"),Q(o,"styles.css"),Q(o,"theme.css"),Q(o,"base.css"),r)}catch{}return Dn([...await nt(e),...await nt(Q(e,"render")),...await nt(at(new URL("../render",import.meta.url))),...t])}s(Mn,"runtimeFingerprint");async function Cn(e,t,r){let o=[...new Set(t.versions.items.map(n=>n.docsDir))].map(n=>K(e,n,"docsDir")),a=(await Promise.all(o.map(n=>to(n)))).flat();for(let n of t.styles)a.push(K(e,n,"styles"));let i=[...new Set(a.map(n=>ue(n)))].filter(n=>!r.has(n)).sort(),c=await F(i,De,async n=>({path:it(e,n),fingerprint:B(await st(n))}));return H(c)}s(Cn,"supportFingerprint");function Nn(e){return{sourceRelativePath:e.sourceRelativePath,relativePath:e.relativePath,version:e.version,versionBase:e.versionBase,docsDir:e.docsDir,locale:e.locale,routePath:e.routePath,outputPath:e.outputPath,markdownOutputPath:e.markdownOutputPath,title:e.title,description:e.description,order:e.order,group:e.group,status:e.status,search:e.search,ai:e.ai,body:e.body,transformedSource:e.transformedSource,headings:e.headings,searchText:e.searchText,codeExamples:e.codeExamples,lastUpdated:e.lastUpdated,...e.previous?{previous:e.previous}:{},...e.next?{next:e.next}:{},frontmatter:e.frontmatter}}s(Nn,"serializablePage");function An(e,t){return{sidebar:e.sidebar[t.version]?.[t.locale]??[],nav:e.nav[t.version]?.[t.locale]??[],locales:e.locales,defaultLocale:e.defaultLocale,versions:e.versions,currentVersion:e.currentVersion}}s(An,"pageLayoutContext");function En(e){let t=e.search.provider;return{...e,markdown:{...e.markdown,plugins:e.markdown.plugins.map(r=>({name:r.name,version:r.version??"",cacheKey:r.cacheKey??null}))},search:{...e.search,provider:typeof t=="string"?t:{id:t.id,client:t.client,version:t.version??"",cacheKey:t.cacheKey??null}}}}s(En,"serializableConfig");async function ro(e,t,r,o=H({extensions:[]})){let a=new Map;await F(r.pages,De,async l=>{if(!G(l.relativePath))return;let m=ke(l.body).imports,f=await br(m,l.sourcePath,e),b=await F(f,De,async h=>({path:it(e,h),fingerprint:B(await st(h))}));a.set(de(l),b.sort((h,S)=>h.path.localeCompare(S.path)))});let i=new Set([...a.values()].flat().map(l=>ue(e,l.path))),c=H(En(t)),n=H({docfuseVersion:q,runtimeFingerprint:await Mn(),configFingerprint:c,benchmarkReport:process.env.DOCFUSE_BENCHMARK_REPORT==="1",extensionFingerprint:o,math:r.pages.some(l=>xn(l.body,t.markdown.plugins,G(l.relativePath)?"mdx":"markdown").math),playground:r.pages.some(l=>l.frontmatter.layout==="playground"),support:await Cn(e,t,i)}),d=Object.fromEntries(r.pages.map(l=>[de(l),{fingerprint:H({page:Nn(l),localComponents:a.get(de(l))??[],layout:An(r,l)}),outputPath:l.outputPath,markdownOutputPath:l.markdownOutputPath,assetOutputPaths:[...ce([l])].sort()}])),u=H({sharedFingerprint:n,pages:d});return{schemaVersion:3,docfuseVersion:q,buildFingerprint:u,sharedFingerprint:n,pages:d,outputs:{}}}s(ro,"createBuildManifest");function Un(e,t){if(!Bn(e))throw new Error(`Invalid Docfuse version: ${e}`);if(!_n(t))throw new Error(`Invalid requiredVersion range: ${t}`);return In(e,t)}s(Un,"versionSatisfies");function qn(e){if(e.requiredVersion&&!Un(q,e.requiredVersion))throw new Error(`Docfuse ${q} does not satisfy requiredVersion ${e.requiredVersion}`)}s(qn,"assertRequiredVersion");async function oo({cwd:e,config:t,graph:r,pages:o,previousPages:a,renderer:i,writeSharedAssets:c,extensions:n}){await zr({cwd:e,config:t,graph:r,pages:o,previousPages:a,renderer:i,writeSharedAssets:c}),await vt(e,t,r),await Kr(e,t,r),await Gr(e,t),await Ft(e,t,r),await wt(e,t,r),await n.generate(L(e,t.outputDir),r.pages),process.env.DOCFUSE_BENCHMARK_REPORT==="1"&&await Tn(lt(L(e,t.outputDir),".benchmark.json"),JSON.stringify({maxRssBytes:process.resourceUsage().maxRSS*1024}))}s(oo,"writeBuildOutputs");function no(e){return lt(ct(e),`.${ao(e)}.backup`)}s(no,"outputBackupRoot");async function jn(e){let t=no(e);await X(t)&&(await X(e)?await me(t,{recursive:!0,force:!0}):await Me(t,e))}s(jn,"recoverInterruptedOutputReplacement");async function Hn(e,t){let r=no(e),o=await X(e);try{o&&await Me(e,r),await Me(t,e)}catch(a){throw o&&await X(r)&&(await me(e,{recursive:!0,force:!0}),await Me(r,e)),a}await me(r,{recursive:!0,force:!0})}s(Hn,"replaceOutputDirectory");async function zn(e,t,r,o){let a=L(e,t.outputDir),i=new Set(o.flatMap(c=>[c.outputPath,c.markdownOutputPath]).map(O));await Promise.all(r.flatMap(c=>[c.outputPath,c.markdownOutputPath].filter(n=>!i.has(O(n))).map(n=>me(T(a,n,`removed page output ${n}`),{force:!0}))))}s(zn,"removeDeletedPageOutputs");async function Gn(e,t,r,o,a){await jn(o);let i=await Et(e.cwd,Dt(e.cwd),r.extensions),c=await bt(e.cwd,r,i),n=await ro(e.cwd,r,c,i.fingerprint),d=e.noCache?void 0:await Mt(t),u=await X(o),l=u&&d?await Qr(o,d.outputs):u,m=Vr({current:n,previous:d,outputExists:u,outputValid:l,forceClean:e.forceClean||e.noCache}),f=e.renderer??Fn();if(m.mode==="cached")return Z(`Built ${r.outputDir} (cache hit)`),{config:r,graph:c,incremental:!1,cached:!0,mode:m.mode,changedPages:[],partialReload:!1,reason:m.reason};let b=new Map(c.pages.map(P=>[de(P),P])),h=m.changedPageKeys.flatMap(P=>{let x=b.get(P);return x?[x]:[]}),S=lt(ct(o),`.${ao(o)}.tmp-${Rn()}`),D={...r,outputDir:$n(On(e.cwd),S)};await Ln(ct(S),{recursive:!0});try{if(m.mode==="incremental"){await Zr(o,S,d?.outputs??{}),await oo({cwd:e.cwd,config:D,graph:c,pages:h,previousPages:d?Object.values(d.pages):[],renderer:f,writeSharedAssets:!1,extensions:i});let P=m.removedPageKeys.flatMap(x=>{let R=d?.pages[x];return R?[R]:[]});await zn(e.cwd,D,P,Object.values(n.pages))}else f.clear(),await oo({cwd:e.cwd,config:D,graph:c,pages:c.pages,renderer:f,writeSharedAssets:!0,extensions:i});await a(),await Hn(o,S)}finally{await me(S,{recursive:!0,force:!0})}let p={...n,outputs:await Yr(o)};return await a(),await Ct(t,p),Z(`Built ${r.outputDir} (${m.mode}: ${m.reason})`),{config:r,graph:c,incremental:m.mode==="incremental",cached:!1,mode:m.mode,changedPages:[...new Set(h.map(P=>P.sourceRelativePath))],partialReload:m.mode==="incremental"&&m.changedPageKeys.length===1&&m.removedPageKeys.length===0&&d?.pages[m.changedPageKeys[0]??""]?.outputPath===n.pages[m.changedPageKeys[0]??""]?.outputPath,reason:m.reason}}s(Gn,"runBuildLocked");async function bl(e){let t=xt(e.cwd);await ft(e.cwd,t,"build cache");let r=await gt(e.cwd);qn(r);let o=await At(e.cwd,r,t);return Nt(t,a=>Gn(e,t,r,o,a))}s(bl,"runBuild");export{Un as a,bl as b};
661
+ //# sourceMappingURL=chunk-N26MW2YK.js.map