canofold 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,21 +1,21 @@
1
- import{a as Nt,b as At,c as Lt,d as Rt,e as Tt,f as Et}from"./chunk-EQOADO2H.js";import{a as G,b as B,c as vt,e as O,f as Pt,g as H,h as St,i as Mt,j as Dt,l as $t,m as be}from"./chunk-KJ7FG6AY.js";import{a as J,b as h,d as xt,e as Ct}from"./chunk-ENPRUF6E.js";import{a as wt,c as z,h as we,i as bt,l as kt}from"./chunk-ACUMTEQL.js";import{a as oe}from"./chunk-M6T5RSNJ.js";import{a as j}from"./chunk-2XMX5JW6.js";import{b as W}from"./chunk-EAYVCA3Z.js";import{a as Z,b as F,c as re,d as V,e as $,f as yt,h as R}from"./chunk-JK7ZNBUA.js";import{a as n}from"./chunk-AYDF3IFZ.js";import{randomUUID as Qn}from"crypto";import{mkdir as Zn,rename as Te,rm as ge,writeFile as es}from"fs/promises";import{basename as hr,dirname as ut,join as mt,relative as ts,resolve as os}from"path";import{mkdir as Oe,open as vr,rm as Pr,writeFile as $e}from"fs/promises";import{dirname as Sr,join as I,posix as Ft}from"path";import{analyzeMarkdown as Ot}from"@canofold/markdown/server/analyze";function It({description:e,body:t}){if(e.trim())return e.trim();let o=t.split(/\n\n+/).find(r=>{let a=r.trim();if(!a)return!1;let s=Ot(a);return s.text&&s.headings.length===0});return o?Ot(o.trim()).text:""}n(It,"createDeterministicSummary");var xr=1;function _t(e){return e.replace(/\r?\n/g," ").replace(/([\\[\]])/g,"\\$1")}n(_t,"markdownLinkLabel");function Bt(e,t){let o=`${t.routePath}index.md`;return{title:t.title,description:t.description,routePath:h(e,t.routePath),markdownPath:h(e,o),version:t.version,locale:t.locale,status:t.status,tags:Array.isArray(t.frontmatter.tags)?t.frontmatter.tags.filter(r=>typeof r=="string"):[],owner:typeof t.frontmatter.owner=="string"?t.frontmatter.owner:void 0,headings:t.headings,lastUpdated:t.lastUpdated,frontmatter:vt(t.frontmatter)}}n(Bt,"pageMetadata");async function ke(e,t){await Oe(Sr(e),{recursive:!0});let o=await vr(e,"w");try{for await(let r of t)await o.write(r)}finally{await o.close()}}n(ke,"writePieces");async function Ee(e,t,o){async function*r(){yield`{"${t}":[`;let a=!0;for(let s of o)yield`${a?"":","}
1
+ import{a as Nt,b as At,c as Lt,d as Rt,e as Tt,f as Et}from"./chunk-BSFJWPWR.js";import{a as G,b as B,c as vt,e as O,f as Pt,g as H,h as St,i as Mt,j as Dt,l as $t,m as be}from"./chunk-LP3NAJM7.js";import{a as J,b as h,d as xt,e as Ct}from"./chunk-ENPRUF6E.js";import{a as wt,c as z,h as we,i as bt,l as kt}from"./chunk-VMPJIE5E.js";import{a as oe}from"./chunk-M6T5RSNJ.js";import{a as j}from"./chunk-JACOFQSH.js";import{b as W}from"./chunk-EAYVCA3Z.js";import{a as Z,b as F,c as re,d as V,e as $,f as yt,h as R}from"./chunk-JK7ZNBUA.js";import{a as n}from"./chunk-AYDF3IFZ.js";import{randomUUID as Qn}from"crypto";import{mkdir as Zn,rename as Te,rm as ge,writeFile as es}from"fs/promises";import{basename as hr,dirname as ut,join as mt,relative as ts,resolve as os}from"path";import{mkdir as Oe,open as vr,rm as Pr,writeFile as $e}from"fs/promises";import{dirname as Sr,join as I,posix as Ft}from"path";import{analyzeMarkdown as Ot}from"@canofold/markdown/server/analyze";function It({description:e,body:t}){if(e.trim())return e.trim();let o=t.split(/\n\n+/).find(r=>{let a=r.trim();if(!a)return!1;let s=Ot(a);return s.text&&s.headings.length===0});return o?Ot(o.trim()).text:""}n(It,"createDeterministicSummary");var xr=1;function _t(e){return e.replace(/\r?\n/g," ").replace(/([\\[\]])/g,"\\$1")}n(_t,"markdownLinkLabel");function Bt(e,t){let o=`${t.routePath}index.md`;return{title:t.title,description:t.description,routePath:h(e,t.routePath),markdownPath:h(e,o),version:t.version,locale:t.locale,status:t.status,tags:Array.isArray(t.frontmatter.tags)?t.frontmatter.tags.filter(r=>typeof r=="string"):[],owner:typeof t.frontmatter.owner=="string"?t.frontmatter.owner:void 0,headings:t.headings,lastUpdated:t.lastUpdated,frontmatter:vt(t.frontmatter)}}n(Bt,"pageMetadata");async function ke(e,t){await Oe(Sr(e),{recursive:!0});let o=await vr(e,"w");try{for await(let r of t)await o.write(r)}finally{await o.close()}}n(ke,"writePieces");async function Ee(e,t,o){async function*r(){yield`{"${t}":[`;let a=!0;for(let s of o)yield`${a?"":","}
2
2
  ${JSON.stringify(s,null,2)}`,a=!1;yield`${a?"":`
3
3
  `}]}
4
4
  `}n(r,"pieces"),await ke(e,r())}n(Ee,"writeJsonArray");function Cr(e,t){return t.pages.filter(o=>o.ai&&(e.ai.versions==="all"||o.version===t.currentVersion))}n(Cr,"selectedPages");function Mr(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)}n(Mr,"jsonEscapedCharacterBytes");function Dr(e,t,o){let r=Buffer.byteLength(JSON.stringify({...e,part:999999999,parts:999999999,content:""})+`
5
- `),a=o-r;if(a<1)throw new Error(`AI chunkSizeBytes ${o} is too small for page metadata`);let s=[],l=0,i=0,d=0;for(let p of t){let f=Mr(p);i>l&&d+f>a&&(s.push(t.slice(l,i)),l=i,d=0),i+=p.length,d+=f}s.push(t.slice(l,i));let c=s.map((p,f)=>({...e,part:f+1,parts:s.length,content:p}));for(let p of c)if(Buffer.byteLength(JSON.stringify(p)+`
6
- `)>o)throw new Error(`Unable to keep AI content record within ${o} bytes: ${e.routePath}`);return c}n(Dr,"splitContentRecord");async function Nr(e,t,o,r,a){let s=Ft.join("ai","content",o,r),l=[],i="",d=0;async function c(){if(!i)return;let p=`${String(l.length+1).padStart(4,"0")}.jsonl`,f=Ft.join(s,p),u=Buffer.byteLength(i);await $e(I(e,f),i),l.push({path:h(t,`/${f}`),bytes:u,records:d,fingerprint:B(Buffer.from(i))}),i="",d=0}n(c,"flush"),await Oe(I(e,s),{recursive:!0});for(let p of a){let f=Bt(t,p),u={routePath:f.routePath,markdownPath:f.markdownPath,title:p.title,description:p.description,version:p.version,locale:p.locale};for(let b of Dr(u,p.body,t.ai.chunkSizeBytes)){let w=JSON.stringify(b)+`
7
- `;i&&Buffer.byteLength(i)+Buffer.byteLength(w)>t.ai.chunkSizeBytes&&await c(),i+=w,d+=1}}return await c(),l}n(Nr,"writePartition");function Ar(e){let t=Buffer.byteLength(`
5
+ `),a=o-r;if(a<1)throw new Error(`AI chunkSizeBytes ${o} is too small for page metadata`);let s=[],l=0,i=0,c=0;for(let p of t){let f=Mr(p);i>l&&c+f>a&&(s.push(t.slice(l,i)),l=i,c=0),i+=p.length,c+=f}s.push(t.slice(l,i));let d=s.map((p,f)=>({...e,part:f+1,parts:s.length,content:p}));for(let p of d)if(Buffer.byteLength(JSON.stringify(p)+`
6
+ `)>o)throw new Error(`Unable to keep AI content record within ${o} bytes: ${e.routePath}`);return d}n(Dr,"splitContentRecord");async function Nr(e,t,o,r,a){let s=Ft.join("ai","content",o,r),l=[],i="",c=0;async function d(){if(!i)return;let p=`${String(l.length+1).padStart(4,"0")}.jsonl`,f=Ft.join(s,p),u=Buffer.byteLength(i);await $e(I(e,f),i),l.push({path:h(t,`/${f}`),bytes:u,records:c,fingerprint:B(Buffer.from(i))}),i="",c=0}n(d,"flush"),await Oe(I(e,s),{recursive:!0});for(let p of a){let f=Bt(t,p),u={routePath:f.routePath,markdownPath:f.markdownPath,title:p.title,description:p.description,version:p.version,locale:p.locale};for(let w of Dr(u,p.body,t.ai.chunkSizeBytes)){let y=JSON.stringify(w)+`
7
+ `;i&&Buffer.byteLength(i)+Buffer.byteLength(y)>t.ai.chunkSizeBytes&&await d(),i+=y,c+=1}}return await d(),l}n(Nr,"writePartition");function Ar(e){let t=Buffer.byteLength(`
8
8
 
9
9
  ---
10
10
 
11
- `);return e.reduce((o,r,a)=>o+Buffer.byteLength(r.body)+(a?t:0),0)}n(Ar,"llmsFullBytes");async function Ut(e,t,o){let r=$(e,t.outputDir),a=I(r,"ai"),s=I(a,"content");await Oe(a,{recursive:!0}),await Pr(s,{recursive:!0,force:!0});let l=Cr(t,o),i=l.map(u=>Bt(t,u)),d=new Map;for(let u of l){let b=`${u.version}\0${u.locale}`,w=d.get(b)??[];w.push(u),d.set(b,w)}let c=[];for(let[u,b]of d){let[w="",P=""]=u.split("\0"),y=await Nr(r,t,w,P,b);c.push({version:w,locale:P,pages:b.length,sourceBytes:b.reduce((C,m)=>C+Buffer.byteLength(m.body),0),shards:y})}if(await Ee(I(a,"pages.json"),"pages",i),t.ai.pageSummaries&&await Ee(I(a,"summaries.json"),"summaries",l.map(u=>({routePath:h(t,u.routePath),summary:It({description:u.description,body:u.body})}))),t.ai.codeExamples){function*u(){for(let b of l)for(let w of b.codeExamples)yield{routePath:h(t,b.routePath),...w}}n(u,"examples"),await Ee(I(a,"code-examples.json"),"examples",u())}t.ai.markdownIndex&&await ke(I(a,"index.md"),i.map(u=>`- [${_t(u.title||u.routePath)}](${u.markdownPath})
11
+ `);return e.reduce((o,r,a)=>o+Buffer.byteLength(r.body)+(a?t:0),0)}n(Ar,"llmsFullBytes");async function Ut(e,t,o){let r=$(e,t.outputDir),a=I(r,"ai"),s=I(a,"content");await Oe(a,{recursive:!0}),await Pr(s,{recursive:!0,force:!0});let l=Cr(t,o),i=l.map(u=>Bt(t,u)),c=new Map;for(let u of l){let w=`${u.version}\0${u.locale}`,y=c.get(w)??[];y.push(u),c.set(w,y)}let d=[];for(let[u,w]of c){let[y="",S=""]=u.split("\0"),x=await Nr(r,t,y,S,w);d.push({version:y,locale:S,pages:w.length,sourceBytes:w.reduce((b,m)=>b+Buffer.byteLength(m.body),0),shards:x})}if(await Ee(I(a,"pages.json"),"pages",i),t.ai.pageSummaries&&await Ee(I(a,"summaries.json"),"summaries",l.map(u=>({routePath:h(t,u.routePath),summary:It({description:u.description,body:u.body})}))),t.ai.codeExamples){function*u(){for(let w of l)for(let y of w.codeExamples)yield{routePath:h(t,w.routePath),...y}}n(u,"examples"),await Ee(I(a,"code-examples.json"),"examples",u())}t.ai.markdownIndex&&await ke(I(a,"index.md"),i.map(u=>`- [${_t(u.title||u.routePath)}](${u.markdownPath})
12
12
  `)),t.ai.llmsTxt&&await ke(I(r,"llms.txt"),i.map(u=>`- [${_t(u.title||u.routePath)}](${u.routePath})
13
- `));let p=Ar(l),f="disabled";if(t.ai.llmsFullTxt)if(p<=t.ai.llmsFullMaxBytes){async function*u(){for(let[b,w]of l.entries())b&&(yield`
13
+ `));let p=Ar(l),f="disabled";if(t.ai.llmsFullTxt)if(p<=t.ai.llmsFullMaxBytes){async function*u(){for(let[w,y]of l.entries())w&&(yield`
14
14
 
15
15
  ---
16
16
 
17
- `),yield w.body}n(u,"bodies"),await ke(I(r,"llms-full.txt"),u()),f="full"}else{if(t.ai.llmsFullOverflow==="error")throw new Error(`llms-full.txt requires ${p} bytes, exceeding ai.llmsFullMaxBytes ${t.ai.llmsFullMaxBytes}`);await $e(I(r,"llms-full.txt"),["# Canofold AI content manifest","",`The full Markdown corpus requires ${p} bytes and exceeds the configured single-file budget of ${t.ai.llmsFullMaxBytes} bytes.`,"",`Use ${h(t,"/ai/manifest.json")} to load the complete versioned and locale-partitioned content shards.`,""].join(`
18
- `)),f="manifest",oe(`llms-full.txt exceeded ${t.ai.llmsFullMaxBytes} bytes; wrote a bounded manifest pointer instead`)}await $e(I(a,"manifest.json"),JSON.stringify({schemaVersion:xr,currentVersion:o.currentVersion,includedVersions:t.ai.versions,totals:{pages:l.length,sourceBytes:l.reduce((u,b)=>u+Buffer.byteLength(b.body),0)},budgets:{chunkSizeBytes:t.ai.chunkSizeBytes,llmsFullMaxBytes:t.ai.llmsFullMaxBytes},llmsFull:{enabled:t.ai.llmsFullTxt,mode:f,sourceBytes:p,path:t.ai.llmsFullTxt?h(t,"/llms-full.txt"):null},partitions:c},null,2))}n(Ut,"writeAiOutputs");import{cp as xn,mkdir as at,rm as nt,writeFile as Ae}from"fs/promises";import{dirname as Qo,join as X}from"path";import{renderToStaticMarkup as Cn}from"react-dom/server";import{createMarkdownRenderer as Mn}from"@canofold/markdown/server";import{detectMarkdownAssets as Zo}from"@canofold/markdown/server/analyze";import{createRequire as Lr}from"module";import{readFile as Ht}from"fs/promises";import{dirname as jt,join as zt}from"path";var Gt=Lr(import.meta.url);function Kt(e){return Gt.resolve(e)}n(Kt,"resolveFromModule");function Wt(e){try{return Gt.resolve(e,{paths:[process.cwd()]})}catch(t){throw new Error(`Cannot resolve ${e} from ${process.cwd()}. Install @canofold/plugins to include math styles.`,{cause:t})}}n(Wt,"resolveFromProject");async function Rr(){return Ht(new URL("./styles.input.css",import.meta.url),"utf8")}n(Rr,"readInputCss");function Vt(){return zt(jt(Wt("@canofold/plugins/math.css")),"fonts")}n(Vt,"mathFontsDir");function Jt(){return zt(jt(Kt("@canofold/markdown/base.css")),"file-icons")}n(Jt,"markdownFileIconsDir");async function Ie(e,t=!1){return Ht(t?Wt(e):Kt(e),"utf8")}n(Ie,"readPublishedCss");async function Tr({math:e=!1}={}){let[t,o,r,a]=await Promise.all([Rr(),Ie("@canofold/markdown/base.css"),Ie("@canofold/markdown/theme.css"),e?Ie("@canofold/plugins/math.css",!0):void 0]);return`/* Markdown base */
17
+ `),yield y.body}n(u,"bodies"),await ke(I(r,"llms-full.txt"),u()),f="full"}else{if(t.ai.llmsFullOverflow==="error")throw new Error(`llms-full.txt requires ${p} bytes, exceeding ai.llmsFullMaxBytes ${t.ai.llmsFullMaxBytes}`);await $e(I(r,"llms-full.txt"),["# Canofold AI content manifest","",`The full Markdown corpus requires ${p} bytes and exceeds the configured single-file budget of ${t.ai.llmsFullMaxBytes} bytes.`,"",`Use ${h(t,"/ai/manifest.json")} to load the complete versioned and locale-partitioned content shards.`,""].join(`
18
+ `)),f="manifest",oe(`llms-full.txt exceeded ${t.ai.llmsFullMaxBytes} bytes; wrote a bounded manifest pointer instead`)}await $e(I(a,"manifest.json"),JSON.stringify({schemaVersion:xr,currentVersion:o.currentVersion,includedVersions:t.ai.versions,totals:{pages:l.length,sourceBytes:l.reduce((u,w)=>u+Buffer.byteLength(w.body),0)},budgets:{chunkSizeBytes:t.ai.chunkSizeBytes,llmsFullMaxBytes:t.ai.llmsFullMaxBytes},llmsFull:{enabled:t.ai.llmsFullTxt,mode:f,sourceBytes:p,path:t.ai.llmsFullTxt?h(t,"/llms-full.txt"):null},partitions:d},null,2))}n(Ut,"writeAiOutputs");import{cp as xn,mkdir as at,rm as nt,writeFile as Ae}from"fs/promises";import{dirname as Qo,join as X}from"path";import{renderToStaticMarkup as Cn}from"react-dom/server";import{createMarkdownRenderer as Mn}from"@canofold/markdown/server";import{detectMarkdownAssets as Zo}from"@canofold/markdown/server/analyze";import{createRequire as Lr}from"module";import{readFile as Ht}from"fs/promises";import{dirname as jt,join as zt}from"path";var Gt=Lr(import.meta.url);function Kt(e){return Gt.resolve(e)}n(Kt,"resolveFromModule");function Wt(e){try{return Gt.resolve(e,{paths:[process.cwd()]})}catch(t){throw new Error(`Cannot resolve ${e} from ${process.cwd()}. Install @canofold/plugins to include math styles.`,{cause:t})}}n(Wt,"resolveFromProject");async function Rr(){return Ht(new URL("./styles.input.css",import.meta.url),"utf8")}n(Rr,"readInputCss");function Vt(){return zt(jt(Wt("@canofold/plugins/math.css")),"fonts")}n(Vt,"mathFontsDir");function Jt(){return zt(jt(Kt("@canofold/markdown/base.css")),"file-icons")}n(Jt,"markdownFileIconsDir");async function Ie(e,t=!1){return Ht(t?Wt(e):Kt(e),"utf8")}n(Ie,"readPublishedCss");async function Tr({math:e=!1}={}){let[t,o,r,a]=await Promise.all([Rr(),Ie("@canofold/markdown/base.css"),Ie("@canofold/markdown/theme.css"),e?Ie("@canofold/plugins/math.css",!0):void 0]);return`/* Markdown base */
19
19
  ${o}
20
20
  /* Default theme */
21
21
  ${r}
@@ -23,7 +23,7 @@ ${a?`/* Math */
23
23
  ${a}
24
24
  `:""}/* Canofold shell */
25
25
  ${t}
26
- `}n(Tr,"compileCss");var qt=new Map;function Xt(e={}){let t=e.math===!0,o=qt.get(t);return o||(o=Tr({math:t}),qt.set(t,o)),o}n(Xt,"buildCssCached");import{Bot as Er,Box as $r,Code2 as Or,FileCode2 as Ir,FileText as Fr,Gauge as _r,Globe2 as Br,Layers3 as Ur,Rocket as qr,Search as Hr,Sparkles as jr,SquareTerminal as zr}from"lucide-react";import{Fragment as Kr,jsx as L,jsxs as ae}from"react/jsx-runtime";var Gr={ai:Er,box:$r,code:Or,file:Fr,"file-code":Ir,gauge:_r,globe:Br,layers:Ur,rocket:qr,search:Hr,sparkles:jr,terminal:zr};function Yt({name:e,className:t}){if(!e)return null;let o=Gr[e];return L(o,{"aria-hidden":"true",className:t,strokeWidth:1.8})}n(Yt,"HomeIcon");function Qt({page:e,config:t}){let o=e.frontmatter.hero??{},r=e.frontmatter.features??[],a=o.actions??[];return ae(Kr,{children:[ae("section",{className:`cf-hero${o.image?" cf-hero-with-visual":""}`,children:[ae("div",{className:"cf-hero-copy",children:[L("h1",{className:"cf-hero-title",children:e.title}),o.accent?L("p",{className:"cf-hero-accent",children:o.accent}):null,o.tagline?L("p",{className:"cf-hero-tagline",children:o.tagline}):null,a.length>0?L("div",{className:"cf-hero-actions",children:a.map(s=>ae("a",{className:`cf-btn ${s.primary?"cf-btn-primary":"cf-btn-secondary"}`,href:h(t,s.link),children:[L(Yt,{name:s.icon}),s.text]},s.link))}):null]}),o.image?L("div",{className:"cf-hero-visual",children:L("img",{src:h(t,o.image),alt:o.imageAlt??"",decoding:"async",fetchPriority:"high"})}):null]}),r.length>0?L("section",{className:"cf-feature-section",children:L("div",{className:"cf-features",children:r.map((s,l)=>ae("article",{className:"cf-feature",children:[s.image||s.icon?L("div",{className:"cf-feature-icon",children:s.image?L("img",{src:h(t,s.image),alt:"",width:"32",height:"32",decoding:"async"}):L(Yt,{name:s.icon})}):null,L("h3",{children:s.title}),L("p",{children:s.details})]},`${s.title}-${l}`))})}):null]})}n(Qt,"HomeHero");import{ChevronDown as ra,Code2 as aa,Eye as na}from"lucide-react";var Wr={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"}},Vr={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"}},Jr={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"},Zt={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 ve(e){return e.toLowerCase().split("-")[0]??e.toLowerCase()}n(ve,"languageCode");function eo(e,t){if(!e)return;let o=t.toLowerCase();return Object.entries(e).find(([r])=>r.toLowerCase()===o)?.[1]}n(eo,"localizedValue");function Fe(e,t){return eo(t,e)}n(Fe,"localeMessagesFor");function to(e,t){let o=ve(e)==="zh"?Wr:Vr,r=Fe(e,t);return{labels:{...o.labels,...r?.labels},brandTagline:r?.brandTagline??o.brandTagline,markdownElementGroups:o.markdownElementGroups.map(a=>({...a,...r?.markdownElementGroups?.[a.id]})),quickActions:{...o.quickActions,...r?.quickActions}}}n(to,"layoutContentFor");function Pe(e,t){let o=Fe(e,t)?.markdown,r=ve(e)==="zh"?Jr:void 0;if(!(!r&&!o))return{...r,...o}}n(Pe,"markdownLabelsFor");function _e(e,t){return{...ve(e)==="zh"?Zt.zh:Zt.en,...Fe(e,t)?.notFound}}n(_e,"notFoundContentFor");function oo(e,t){let o=eo(t,e);if(o)return o;let r=ve(e);if(r==="zh")return"\u7B80\u4F53\u4E2D\u6587";if(r==="en")return"English";try{return new Intl.DisplayNames([e],{type:"language"}).of(e)??e}catch{return e}}n(oo,"localeNameFor");import{ChevronDown as ro,Languages as Xr,Moon as Yr,PanelLeft as Qr,Search as Zr,Sun as ea}from"lucide-react";import{Fragment as no,jsx as g,jsxs as D}from"react/jsx-runtime";function ta(){return D("svg",{className:"cf-brand-mark",width:"32",height:"32",viewBox:"0 0 512 512","aria-hidden":"true",children:[D("defs",{children:[D("linearGradient",{id:"cf-brand-top",x1:"90",y1:"60",x2:"400",y2:"260",gradientUnits:"userSpaceOnUse",children:[g("stop",{offset:"0",stopColor:"#1768FF"}),g("stop",{offset:"0.5",stopColor:"#119BFA"}),g("stop",{offset:"1",stopColor:"#18D8D3"})]}),D("linearGradient",{id:"cf-brand-fold",x1:"70",y1:"220",x2:"210",y2:"300",gradientUnits:"userSpaceOnUse",children:[g("stop",{offset:"0",stopColor:"#2C7BFF"}),g("stop",{offset:"1",stopColor:"#554FF5"})]}),D("linearGradient",{id:"cf-brand-bottom",x1:"200",y1:"270",x2:"90",y2:"460",gradientUnits:"userSpaceOnUse",children:[g("stop",{offset:"0",stopColor:"#554FF5"}),g("stop",{offset:"0.62",stopColor:"#7845FA"}),g("stop",{offset:"1",stopColor:"#8637F5"})]}),D("mask",{id:"cf-brand-spark-cut",maskUnits:"userSpaceOnUse",x:"0",y:"0",width:"512",height:"512",children:[g("rect",{width:"512",height:"512",fill:"#fff"}),g("path",{d:"M112 201C117 229 139 251 167 256C139 261 117 283 112 311C107 283 85 261 57 256C85 251 107 229 112 201Z",fill:"#000"})]})]}),D("g",{mask:"url(#cf-brand-spark-cut)",fill:"none",strokeLinejoin:"round",children:[g("path",{d:"M348 138A150 150 0 0 0 107 243",stroke:"url(#cf-brand-top)",strokeWidth:"86",strokeLinecap:"round"}),g("path",{d:"M78 256C118 228 158 228 208 256",stroke:"url(#cf-brand-fold)",strokeWidth:"70",strokeLinecap:"round"}),g("path",{d:"M107 269A150 150 0 0 0 348 374",stroke:"url(#cf-brand-bottom)",strokeWidth:"86",strokeLinecap:"round"})]})]})}n(ta,"BrandMark");function Be({size:e=16}){return g(Zr,{size:e,strokeWidth:2,"aria-hidden":"true"})}n(Be,"SearchIcon");function oa(){return D(no,{children:[g(ea,{className:"cf-icon-sun",size:18,strokeWidth:2,"aria-hidden":"true"}),g(Yr,{className:"cf-icon-moon",size:18,strokeWidth:2,"aria-hidden":"true"})]})}n(oa,"ThemeIcon");function Ue(e,t){let o=t.split("/").filter(Boolean);return t.startsWith("/")&&(e.page.routePath===t||e.page.routePath.startsWith(t)||e.page.group!==""&&o.includes(e.page.group))}n(Ue,"navItemIsActive");function ao({model:e}){let{config:t,page:o,home:r,labels:a,localeRoot:s,navItems:l,versionLabel:i,versionOptions:d,languageOptions:c,hasSidebarItems:p}=e;return D("header",{className:r?"cf-header cf-header-home":"cf-header",children:[D("div",{className:"cf-header-inner",children:[!r&&p?g("button",{className:"cf-sidebar-toggle",type:"button","data-canofold-sidebar-open":"","data-canofold-sidebar-open-label":a.openSidebar,"data-canofold-sidebar-close-label":a.close,"aria-label":a.openSidebar,"aria-expanded":"false",children:g(Qr,{size:18,strokeWidth:2,"aria-hidden":"true"})}):null,g("a",{className:"cf-brand",href:s,"aria-label":t.title,children:t.theme.logo?D(no,{children:[g("img",{className:t.theme.logoDark?"cf-brand-logo cf-brand-logo-light":"cf-brand-logo",src:h(t,t.theme.logo),alt:t.title}),t.theme.logoDark?g("img",{className:"cf-brand-logo cf-brand-logo-dark",src:h(t,t.theme.logoDark),alt:t.title}):null]}):g(ta,{})}),t.search.enabled?D("button",{className:"cf-search-trigger",type:"button","data-canofold-search-open":"","aria-haspopup":"dialog","aria-label":a.search,children:[g(Be,{size:15}),g("span",{children:a.search}),g("kbd",{className:"cf-kbd",children:"\u2318K"})]}):null,D("div",{className:"cf-header-right",children:[l.length>0?g("nav",{className:"cf-header-nav","aria-label":a.primaryNavigation,children:l.map(f=>{let u=Ue(e,f.routePath),b=/^https?:\/\//.test(f.routePath);return g("a",{className:u?"cf-header-link cf-header-link-active":"cf-header-link",href:h(t,f.routePath),"aria-current":u?"page":void 0,...b?{target:"_blank",rel:"noreferrer"}:{},children:f.title},f.routePath)})}):null,d.length>1?D("details",{className:"cf-menu cf-version-menu","data-canofold-menu":"",children:[D("summary",{className:"cf-version-badge","aria-label":a.version,children:[g("span",{children:i}),g(ro,{size:13,strokeWidth:2,"aria-hidden":"true"})]}),g("div",{className:"cf-menu-list",children:d.map(f=>g("a",{className:f.id===o.version?"cf-menu-item cf-menu-item-active":"cf-menu-item",href:h(t,f.routePath),children:g("span",{children:f.label})},f.id))})]}):g("span",{className:"cf-version-badge",children:i}),c.length>1?D("details",{className:"cf-menu cf-lang","data-canofold-menu":"",children:[D("summary",{className:"cf-icon-button cf-lang-trigger","aria-label":a.language,children:[g(Xr,{size:19,strokeWidth:1.9,"aria-hidden":"true"}),g(ro,{size:13,strokeWidth:2,"aria-hidden":"true"})]}),g("div",{className:"cf-menu-list cf-language-menu-list",children:c.map(f=>g("a",{className:f.locale===o.locale?"cf-menu-item cf-language-menu-item cf-menu-item-active":"cf-menu-item cf-language-menu-item",href:h(t,f.routePath),lang:f.locale,"aria-current":f.locale===o.locale?"page":void 0,children:oo(f.locale,t.i18n.localeNames)},f.locale))})]}):null,t.theme.darkMode?g("button",{className:"cf-icon-button",type:"button","data-canofold-theme-toggle":"","aria-label":a.theme,children:g(oa,{})}):null,t.github?g("a",{className:"cf-icon-button cf-github-link",href:t.github,target:"_blank",rel:"noreferrer","aria-label":a.github,children:g("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:g("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]})]}),r?null:g("div",{className:"cf-route-progress","aria-hidden":"true",children:g("span",{"data-canofold-progress":""})})]})}n(ao,"LayoutHeader");import{jsx as k,jsxs as N}from"react/jsx-runtime";function io(e,t){return e.type==="link"?e.routePath===t:e.items.some(o=>io(o,t))}n(io,"sidebarContainsRoute");function so(e){return{"--cf-sidebar-indent":`${Math.min(e,4)*10}px`}}n(so,"sidebarDepthStyle");function lo({item:e,model:t,depth:o=0}){let r={"data-depth":o,style:so(o)};if(e.type==="link"){let s=e.routePath===t.page.routePath;return k("a",{...r,className:s?"cf-sidebar-link cf-sidebar-link-active":"cf-sidebar-link",href:h(t.config,e.routePath),"aria-current":s?"page":void 0,"data-canofold-sidebar-link":"",children:e.title})}let a=io(e,t.page.routePath);return N("details",{className:"cf-sidebar-subgroup",open:a||!e.collapsed,"data-depth":o,children:[N("summary",{className:"cf-sidebar-subgroup-title",style:so(o),children:[e.title,k(ra,{className:"cf-chevron",size:12,strokeWidth:2.5,"aria-hidden":"true"})]}),k("div",{className:"cf-sidebar-subgroup-items",children:e.items.map((s,l)=>k(lo,{item:s,model:t,depth:o+1},s.type==="link"?s.routePath:s.segment||l))})]})}n(lo,"SidebarEntry");function co({model:e}){let{config:t,labels:o,navItems:r,sidebarGroups:a}=e,s=[e.page.version,e.page.locale,e.page.group].join(":");return N("aside",{className:"cf-sidebar","data-canofold-sidebar":"","data-canofold-sidebar-key":s,children:[r.length>0?k("nav",{className:"cf-sidebar-primary-nav","aria-label":o.primaryNavigation,children:r.map(l=>{let i=Ue(e,l.routePath),d=/^https?:\/\//.test(l.routePath);return k("a",{className:i?"cf-sidebar-primary-link cf-sidebar-primary-link-active":"cf-sidebar-primary-link",href:h(t,l.routePath),"aria-current":i?"page":void 0,"data-canofold-sidebar-link":"",...d?{target:"_blank",rel:"noreferrer"}:{},children:l.title},l.routePath)})}):null,k("nav",{className:"cf-sidebar-nav","aria-label":o.docsNavigation,children:a.map((l,i)=>k("div",{className:"cf-sidebar-items cf-sidebar-root",children:l.items.map((d,c)=>k(lo,{item:d,model:e,depth:0},d.type==="link"?d.routePath:d.segment||c))},l.segment||i))})]})}n(co,"Sidebar");function sa({model:e}){let{editHref:t,labels:o,page:r}=e,a=new Intl.DateTimeFormat(r.locale,{dateStyle:"medium"}).format(new Date(r.lastUpdated));return N("footer",{className:"cf-page-footer",children:[N("div",{className:"cf-page-meta",children:[N("div",{className:"cf-page-meta-actions",children:[t?k("a",{href:t,children:o.edit}):null,k("button",{className:"cf-page-source",type:"button","data-canofold-source-open":"","aria-haspopup":"dialog",children:o.source})]}),N("span",{children:[o.updated," ",a]})]}),N("nav",{className:"cf-doc-pagination","aria-label":o.pageNavigation,children:[r.previous?N("a",{className:"cf-doc-pagination-link",href:h(e.config,r.previous.routePath),children:[k("span",{className:"cf-doc-pagination-label",children:o.previous}),k("strong",{className:"cf-doc-pagination-title",children:r.previous.title})]}):k("span",{}),r.next?N("a",{className:"cf-doc-pagination-link cf-doc-pagination-link-next",href:h(e.config,r.next.routePath),children:[k("span",{className:"cf-doc-pagination-label",children:o.next}),k("strong",{className:"cf-doc-pagination-title",children:r.next.title})]}):null]})]})}n(sa,"PageFooter");function ia({model:e}){let{config:t,labels:o,outlineHeadings:r}=e,a=t.advertising;return N("aside",{className:"cf-outline","data-canofold-outline":"","aria-label":o.onThisPage,children:[r.length>0?k("nav",{className:"cf-outline-nav",children:r.map(s=>k("a",{className:`cf-outline-link cf-outline-link-${s.level}`,"data-canofold-outline-link":"",href:`#${s.slug}`,children:s.text},s.slug))}):null,a?N("a",{className:"cf-outline-ad",href:h(t,a.href),target:"_blank",rel:"sponsored noopener noreferrer","aria-label":a.alt,children:[k("span",{children:a.label??o.advertisement}),k("img",{src:h(t,a.image),alt:a.alt,loading:"lazy"})]}):null]})}n(ia,"Outline");function la({model:e,children:t}){let{config:o,labels:r,page:a}=e,s=a.body.trim(),l={...Pe(a.locale,o.i18n.messages),...o.markdown.labels};return N("div",{className:"cf-shell cf-shell-playground",children:[k("div",{className:"cf-sidebar-backdrop","data-canofold-sidebar-backdrop":"","aria-hidden":"true",hidden:!0}),k(co,{model:e}),k("main",{id:"canofold-main",className:"cf-main cf-playground-main",tabIndex:-1,"data-pagefind-body":a.search?"":void 0,children:N("div",{className:"cf-playground","data-canofold-playground":"","data-canofold-playground-labels":JSON.stringify(l),"data-canofold-playground-preview-label":r.preview,"data-view":"preview",children:[N("button",{className:"cf-playground-toggle",type:"button","data-canofold-playground-toggle":"","data-source-label":r.source,"data-preview-label":r.preview,"aria-label":r.source,title:r.source,children:[k(aa,{className:"cf-playground-toggle-source",size:18,strokeWidth:2,"aria-hidden":"true"}),k(na,{className:"cf-playground-toggle-preview",size:18,strokeWidth:2,"aria-hidden":"true"})]}),k("section",{className:"cf-playground-pane cf-playground-source","aria-label":r.source,"data-pagefind-ignore":"",children:k("textarea",{defaultValue:s,"aria-label":r.source,autoCapitalize:"off",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"data-canofold-playground-source":""})}),k("div",{className:"cf-playground-resizer",role:"separator","aria-label":`${r.source} / ${r.preview}`,"aria-orientation":"vertical","aria-valuemin":25,"aria-valuemax":75,"aria-valuenow":45,tabIndex:0,"data-canofold-playground-resizer":""}),k("section",{className:"cf-playground-pane cf-playground-preview","aria-label":r.preview,children:k("div",{className:"cf-playground-preview-scroll","data-canofold-playground-preview":"",children:t})})]})})]})}n(la,"Playground");function uo({model:e,children:t}){return e.page.frontmatter.layout==="playground"?k(la,{model:e,children:t}):N("div",{className:"cf-shell",children:[k("div",{className:"cf-sidebar-backdrop","data-canofold-sidebar-backdrop":"","aria-hidden":"true",hidden:!0}),k(co,{model:e}),N("main",{id:"canofold-main",className:"cf-main",tabIndex:-1,"data-pagefind-body":e.page.search?"":void 0,children:[t,k(sa,{model:e})]}),k(ia,{model:e})]})}n(uo,"LayoutDocument");function Se(e){return wt(e.relativePath,e.locale)}n(Se,"subPath");function ne(e,t){let o=e.find(r=>r.id===t);if(!o)throw new Error(`Missing Markdown element group: ${t}`);return o.hash}n(ne,"markdownGroupHash");function mo({config:e,graph:t,page:o,home:r,assets:a,rawSource:s}){let l=t.pages.filter(m=>m.version===o.version&&Se(m)===Se(o)),i=t.locales.map(m=>{let x=l.find(M=>M.locale===m);return{locale:m,routePath:x?.routePath??z(m,t.defaultLocale,o.versionBase)}}),d=t.versions.map(m=>{let x=t.pages.find(M=>M.version===m.id&&M.locale===o.locale&&Se(M)===Se(o));return{id:m.id,label:m.label,routePath:x?.routePath??z(o.locale,t.defaultLocale,m.base)}}),c=t.sidebar[o.version]?.[o.locale]??[],p=to(o.locale,e.i18n.messages),f=z(o.locale,t.defaultLocale,o.versionBase),u=`${f}markdown/playground/`,b=t.pages.some(m=>m.locale===o.locale&&m.routePath===u),w=n(m=>m.type==="link"?m.routePath===o.routePath:m.items.some(w),"isActiveItem"),P=n(m=>m.items.some(w),"isActiveGroup"),y=c.filter(m=>m.title===""||m.segment===o.group||P(m)),C=typeof o.frontmatter.seoTitle=="string"?o.frontmatter.seoTitle.trim():"";return{config:e,page:o,home:r,assets:a,title:C||(o.title&&o.title!==e.title?`${o.title} | ${e.title}`:e.title),description:o.description||e.description,...e.editUrl&&o.version===t.currentVersion?{editHref:`${e.editUrl.replace(/\/$/,"")}/${o.relativePath}`}:{},alternatePages:l,languageOptions:i,versionOptions:d,navItems:t.nav[o.version]?.[o.locale]??[],content:p,labels:p.labels,brandTagline:e.i18n.messages?.[o.locale]?.brandTagline||e.description||p.brandTagline,versionLabel:t.versions.length===1&&o.version==="current"?`v${j}`:t.versions.find(m=>m.id===o.version)?.label??o.version,localeRoot:h(e,f),markdownShowcaseHref:h(e,u),hasMarkdownShowcase:b,sidebarGroups:y,hasSidebarItems:y.some(m=>m.items.length>0),outlineHeadings:o.headings.filter(m=>m.level>=1&&m.level<=6),searchProvider:xt(e.search.provider),searchIndexUrl:o.version===t.currentVersion?h(e,`/search/${o.locale}.json`):h(e,`/search/${o.version}/${o.locale}.json`),searchBundleUrl:h(e,"/pagefind/pagefind.js"),markdownClientScript:`window.__canofoldEnhanceMarkdown = async (target) => {
26
+ `}n(Tr,"compileCss");var qt=new Map;function Xt(e={}){let t=e.math===!0,o=qt.get(t);return o||(o=Tr({math:t}),qt.set(t,o)),o}n(Xt,"buildCssCached");import{Bot as Er,Box as $r,Code2 as Or,FileCode2 as Ir,FileText as Fr,Gauge as _r,Globe2 as Br,Layers3 as Ur,Rocket as qr,Search as Hr,Sparkles as jr,SquareTerminal as zr}from"lucide-react";import{Fragment as Kr,jsx as L,jsxs as ae}from"react/jsx-runtime";var Gr={ai:Er,box:$r,code:Or,file:Fr,"file-code":Ir,gauge:_r,globe:Br,layers:Ur,rocket:qr,search:Hr,sparkles:jr,terminal:zr};function Yt({name:e,className:t}){if(!e)return null;let o=Gr[e];return L(o,{"aria-hidden":"true",className:t,strokeWidth:1.8})}n(Yt,"HomeIcon");function Qt({page:e,config:t}){let o=e.frontmatter.hero??{},r=e.frontmatter.features??[],a=o.actions??[];return ae(Kr,{children:[ae("section",{className:`cf-hero${o.image?" cf-hero-with-visual":""}`,children:[ae("div",{className:"cf-hero-copy",children:[L("h1",{className:"cf-hero-title",children:e.title}),o.accent?L("p",{className:"cf-hero-accent",children:o.accent}):null,o.tagline?L("p",{className:"cf-hero-tagline",children:o.tagline}):null,a.length>0?L("div",{className:"cf-hero-actions",children:a.map(s=>ae("a",{className:`cf-btn ${s.primary?"cf-btn-primary":"cf-btn-secondary"}`,href:h(t,s.link),children:[L(Yt,{name:s.icon}),s.text]},s.link))}):null]}),o.image?L("div",{className:"cf-hero-visual",children:L("img",{src:h(t,o.image),alt:o.imageAlt??"",decoding:"async",fetchPriority:"high"})}):null]}),r.length>0?L("section",{className:"cf-feature-section",children:L("div",{className:"cf-features",children:r.map((s,l)=>ae("article",{className:"cf-feature",children:[s.image||s.icon?L("div",{className:"cf-feature-icon",children:s.image?L("img",{src:h(t,s.image),alt:"",width:"32",height:"32",decoding:"async"}):L(Yt,{name:s.icon})}):null,L("h3",{children:s.title}),L("p",{children:s.details})]},`${s.title}-${l}`))})}):null]})}n(Qt,"HomeHero");import{ChevronDown as ra,Code2 as aa,Eye as na}from"lucide-react";var Wr={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"}},Vr={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"}},Jr={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"},Zt={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 ve(e){return e.toLowerCase().split("-")[0]??e.toLowerCase()}n(ve,"languageCode");function eo(e,t){if(!e)return;let o=t.toLowerCase();return Object.entries(e).find(([r])=>r.toLowerCase()===o)?.[1]}n(eo,"localizedValue");function Fe(e,t){return eo(t,e)}n(Fe,"localeMessagesFor");function to(e,t){let o=ve(e)==="zh"?Wr:Vr,r=Fe(e,t);return{labels:{...o.labels,...r?.labels},brandTagline:r?.brandTagline??o.brandTagline,markdownElementGroups:o.markdownElementGroups.map(a=>({...a,...r?.markdownElementGroups?.[a.id]})),quickActions:{...o.quickActions,...r?.quickActions}}}n(to,"layoutContentFor");function Pe(e,t){let o=Fe(e,t)?.markdown,r=ve(e)==="zh"?Jr:void 0;if(!(!r&&!o))return{...r,...o}}n(Pe,"markdownLabelsFor");function _e(e,t){return{...ve(e)==="zh"?Zt.zh:Zt.en,...Fe(e,t)?.notFound}}n(_e,"notFoundContentFor");function oo(e,t){let o=eo(t,e);if(o)return o;let r=ve(e);if(r==="zh")return"\u7B80\u4F53\u4E2D\u6587";if(r==="en")return"English";try{return new Intl.DisplayNames([e],{type:"language"}).of(e)??e}catch{return e}}n(oo,"localeNameFor");import{ChevronDown as ro,Languages as Xr,Moon as Yr,PanelLeft as Qr,Search as Zr,Sun as ea}from"lucide-react";import{Fragment as no,jsx as g,jsxs as D}from"react/jsx-runtime";function ta(){return D("svg",{className:"cf-brand-mark",width:"32",height:"32",viewBox:"0 0 512 512","aria-hidden":"true",children:[D("defs",{children:[D("linearGradient",{id:"cf-brand-top",x1:"90",y1:"60",x2:"400",y2:"260",gradientUnits:"userSpaceOnUse",children:[g("stop",{offset:"0",stopColor:"#1768FF"}),g("stop",{offset:"0.5",stopColor:"#119BFA"}),g("stop",{offset:"1",stopColor:"#18D8D3"})]}),D("linearGradient",{id:"cf-brand-fold",x1:"70",y1:"220",x2:"210",y2:"300",gradientUnits:"userSpaceOnUse",children:[g("stop",{offset:"0",stopColor:"#2C7BFF"}),g("stop",{offset:"1",stopColor:"#554FF5"})]}),D("linearGradient",{id:"cf-brand-bottom",x1:"200",y1:"270",x2:"90",y2:"460",gradientUnits:"userSpaceOnUse",children:[g("stop",{offset:"0",stopColor:"#554FF5"}),g("stop",{offset:"0.62",stopColor:"#7845FA"}),g("stop",{offset:"1",stopColor:"#8637F5"})]}),D("mask",{id:"cf-brand-spark-cut",maskUnits:"userSpaceOnUse",x:"0",y:"0",width:"512",height:"512",children:[g("rect",{width:"512",height:"512",fill:"#fff"}),g("path",{d:"M112 201C117 229 139 251 167 256C139 261 117 283 112 311C107 283 85 261 57 256C85 251 107 229 112 201Z",fill:"#000"})]})]}),D("g",{mask:"url(#cf-brand-spark-cut)",fill:"none",strokeLinejoin:"round",children:[g("path",{d:"M348 138A150 150 0 0 0 107 243",stroke:"url(#cf-brand-top)",strokeWidth:"86",strokeLinecap:"round"}),g("path",{d:"M78 256C118 228 158 228 208 256",stroke:"url(#cf-brand-fold)",strokeWidth:"70",strokeLinecap:"round"}),g("path",{d:"M107 269A150 150 0 0 0 348 374",stroke:"url(#cf-brand-bottom)",strokeWidth:"86",strokeLinecap:"round"})]})]})}n(ta,"BrandMark");function Be({size:e=16}){return g(Zr,{size:e,strokeWidth:2,"aria-hidden":"true"})}n(Be,"SearchIcon");function oa(){return D(no,{children:[g(ea,{className:"cf-icon-sun",size:18,strokeWidth:2,"aria-hidden":"true"}),g(Yr,{className:"cf-icon-moon",size:18,strokeWidth:2,"aria-hidden":"true"})]})}n(oa,"ThemeIcon");function Ue(e,t){let o=t.split("/").filter(Boolean);return t.startsWith("/")&&(e.page.routePath===t||e.page.routePath.startsWith(t)||e.page.group!==""&&o.includes(e.page.group))}n(Ue,"navItemIsActive");function ao({model:e}){let{config:t,page:o,home:r,labels:a,localeRoot:s,navItems:l,versionLabel:i,versionOptions:c,languageOptions:d,hasSidebarItems:p}=e;return D("header",{className:r?"cf-header cf-header-home":"cf-header",children:[D("div",{className:"cf-header-inner",children:[!r&&p?g("button",{className:"cf-sidebar-toggle",type:"button","data-canofold-sidebar-open":"","data-canofold-sidebar-open-label":a.openSidebar,"data-canofold-sidebar-close-label":a.close,"aria-label":a.openSidebar,"aria-expanded":"false",children:g(Qr,{size:18,strokeWidth:2,"aria-hidden":"true"})}):null,g("a",{className:"cf-brand",href:s,"aria-label":t.title,children:t.theme.logo?D(no,{children:[g("img",{className:t.theme.logoDark?"cf-brand-logo cf-brand-logo-light":"cf-brand-logo",src:h(t,t.theme.logo),alt:t.title}),t.theme.logoDark?g("img",{className:"cf-brand-logo cf-brand-logo-dark",src:h(t,t.theme.logoDark),alt:t.title}):null]}):g(ta,{})}),t.search.enabled?D("button",{className:"cf-search-trigger",type:"button","data-canofold-search-open":"","aria-haspopup":"dialog","aria-label":a.search,children:[g(Be,{size:15}),g("span",{children:a.search}),g("kbd",{className:"cf-kbd",children:"\u2318K"})]}):null,D("div",{className:"cf-header-right",children:[l.length>0?g("nav",{className:"cf-header-nav","aria-label":a.primaryNavigation,children:l.map(f=>{let u=Ue(e,f.routePath),w=/^https?:\/\//.test(f.routePath);return g("a",{className:u?"cf-header-link cf-header-link-active":"cf-header-link",href:h(t,f.routePath),"aria-current":u?"page":void 0,...w?{target:"_blank",rel:"noreferrer"}:{},children:f.title},f.routePath)})}):null,c.length>1?D("details",{className:"cf-menu cf-version-menu","data-canofold-menu":"",children:[D("summary",{className:"cf-version-badge","aria-label":a.version,children:[g("span",{children:i}),g(ro,{size:13,strokeWidth:2,"aria-hidden":"true"})]}),g("div",{className:"cf-menu-list",children:c.map(f=>g("a",{className:f.id===o.version?"cf-menu-item cf-menu-item-active":"cf-menu-item",href:h(t,f.routePath),children:g("span",{children:f.label})},f.id))})]}):g("span",{className:"cf-version-badge",children:i}),d.length>1?D("details",{className:"cf-menu cf-lang","data-canofold-menu":"",children:[D("summary",{className:"cf-icon-button cf-lang-trigger","aria-label":a.language,children:[g(Xr,{size:19,strokeWidth:1.9,"aria-hidden":"true"}),g(ro,{size:13,strokeWidth:2,"aria-hidden":"true"})]}),g("div",{className:"cf-menu-list cf-language-menu-list",children:d.map(f=>g("a",{className:f.locale===o.locale?"cf-menu-item cf-language-menu-item cf-menu-item-active":"cf-menu-item cf-language-menu-item",href:h(t,f.routePath),lang:f.locale,"aria-current":f.locale===o.locale?"page":void 0,children:oo(f.locale,t.i18n.localeNames)},f.locale))})]}):null,t.theme.darkMode?g("button",{className:"cf-icon-button",type:"button","data-canofold-theme-toggle":"","aria-label":a.theme,children:g(oa,{})}):null,t.github?g("a",{className:"cf-icon-button cf-github-link",href:t.github,target:"_blank",rel:"noreferrer","aria-label":a.github,children:g("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:g("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]})]}),r?null:g("div",{className:"cf-route-progress","aria-hidden":"true",children:g("span",{"data-canofold-progress":""})})]})}n(ao,"LayoutHeader");import{jsx as k,jsxs as N}from"react/jsx-runtime";function io(e,t){return e.type==="link"?e.routePath===t:e.items.some(o=>io(o,t))}n(io,"sidebarContainsRoute");function so(e){return{"--cf-sidebar-indent":`${Math.min(e,4)*10}px`}}n(so,"sidebarDepthStyle");function lo({item:e,model:t,depth:o=0}){let r={"data-depth":o,style:so(o)};if(e.type==="link"){let s=e.routePath===t.page.routePath;return k("a",{...r,className:s?"cf-sidebar-link cf-sidebar-link-active":"cf-sidebar-link",href:h(t.config,e.routePath),"aria-current":s?"page":void 0,"data-canofold-sidebar-link":"",children:e.title})}let a=io(e,t.page.routePath);return N("details",{className:"cf-sidebar-subgroup",open:a||!e.collapsed,"data-depth":o,children:[N("summary",{className:"cf-sidebar-subgroup-title",style:so(o),children:[e.title,k(ra,{className:"cf-chevron",size:12,strokeWidth:2.5,"aria-hidden":"true"})]}),k("div",{className:"cf-sidebar-subgroup-items",children:e.items.map((s,l)=>k(lo,{item:s,model:t,depth:o+1},s.type==="link"?s.routePath:s.segment||l))})]})}n(lo,"SidebarEntry");function co({model:e}){let{config:t,labels:o,navItems:r,sidebarGroups:a}=e,s=[e.page.version,e.page.locale,e.page.group].join(":");return N("aside",{className:"cf-sidebar","data-canofold-sidebar":"","data-canofold-sidebar-key":s,children:[r.length>0?k("nav",{className:"cf-sidebar-primary-nav","aria-label":o.primaryNavigation,children:r.map(l=>{let i=Ue(e,l.routePath),c=/^https?:\/\//.test(l.routePath);return k("a",{className:i?"cf-sidebar-primary-link cf-sidebar-primary-link-active":"cf-sidebar-primary-link",href:h(t,l.routePath),"aria-current":i?"page":void 0,"data-canofold-sidebar-link":"",...c?{target:"_blank",rel:"noreferrer"}:{},children:l.title},l.routePath)})}):null,k("nav",{className:"cf-sidebar-nav","aria-label":o.docsNavigation,children:a.map((l,i)=>k("div",{className:"cf-sidebar-items cf-sidebar-root",children:l.items.map((c,d)=>k(lo,{item:c,model:e,depth:0},c.type==="link"?c.routePath:c.segment||d))},l.segment||i))})]})}n(co,"Sidebar");function sa({model:e}){let{editHref:t,labels:o,page:r}=e,a=new Intl.DateTimeFormat(r.locale,{dateStyle:"medium"}).format(new Date(r.lastUpdated));return N("footer",{className:"cf-page-footer",children:[N("div",{className:"cf-page-meta",children:[N("div",{className:"cf-page-meta-actions",children:[t?k("a",{href:t,children:o.edit}):null,k("button",{className:"cf-page-source",type:"button","data-canofold-source-open":"","aria-haspopup":"dialog",children:o.source})]}),N("span",{children:[o.updated," ",a]})]}),N("nav",{className:"cf-doc-pagination","aria-label":o.pageNavigation,children:[r.previous?N("a",{className:"cf-doc-pagination-link",href:h(e.config,r.previous.routePath),children:[k("span",{className:"cf-doc-pagination-label",children:o.previous}),k("strong",{className:"cf-doc-pagination-title",children:r.previous.title})]}):k("span",{}),r.next?N("a",{className:"cf-doc-pagination-link cf-doc-pagination-link-next",href:h(e.config,r.next.routePath),children:[k("span",{className:"cf-doc-pagination-label",children:o.next}),k("strong",{className:"cf-doc-pagination-title",children:r.next.title})]}):null]})]})}n(sa,"PageFooter");function ia({model:e}){let{config:t,labels:o,outlineHeadings:r}=e,a=t.advertising;return N("aside",{className:"cf-outline","data-canofold-outline":"","aria-label":o.onThisPage,children:[r.length>0?k("nav",{className:"cf-outline-nav",children:r.map(s=>k("a",{className:`cf-outline-link cf-outline-link-${s.level}`,"data-canofold-outline-link":"",href:`#${s.slug}`,children:s.text},s.slug))}):null,a?N("a",{className:"cf-outline-ad",href:h(t,a.href),target:"_blank",rel:"sponsored noopener noreferrer","aria-label":a.alt,children:[k("span",{children:a.label??o.advertisement}),k("img",{src:h(t,a.image),alt:a.alt,loading:"lazy"})]}):null]})}n(ia,"Outline");function la({model:e,children:t}){let{config:o,labels:r,page:a}=e,s=a.body.trim(),l={...Pe(a.locale,o.i18n.messages),...o.markdown.labels};return N("div",{className:"cf-shell cf-shell-playground",children:[k("div",{className:"cf-sidebar-backdrop","data-canofold-sidebar-backdrop":"","aria-hidden":"true",hidden:!0}),k(co,{model:e}),k("main",{id:"canofold-main",className:"cf-main cf-playground-main",tabIndex:-1,"data-pagefind-body":a.search?"":void 0,children:N("div",{className:"cf-playground","data-canofold-playground":"","data-canofold-playground-labels":JSON.stringify(l),"data-canofold-playground-preview-label":r.preview,"data-view":"preview",children:[N("button",{className:"cf-playground-toggle",type:"button","data-canofold-playground-toggle":"","data-source-label":r.source,"data-preview-label":r.preview,"aria-label":r.source,title:r.source,children:[k(aa,{className:"cf-playground-toggle-source",size:18,strokeWidth:2,"aria-hidden":"true"}),k(na,{className:"cf-playground-toggle-preview",size:18,strokeWidth:2,"aria-hidden":"true"})]}),k("section",{className:"cf-playground-pane cf-playground-source","aria-label":r.source,"data-pagefind-ignore":"",children:k("textarea",{defaultValue:s,"aria-label":r.source,autoCapitalize:"off",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"data-canofold-playground-source":""})}),k("div",{className:"cf-playground-resizer",role:"separator","aria-label":`${r.source} / ${r.preview}`,"aria-orientation":"vertical","aria-valuemin":25,"aria-valuemax":75,"aria-valuenow":45,tabIndex:0,"data-canofold-playground-resizer":""}),k("section",{className:"cf-playground-pane cf-playground-preview","aria-label":r.preview,children:k("div",{className:"cf-playground-preview-scroll","data-canofold-playground-preview":"",children:t})})]})})]})}n(la,"Playground");function uo({model:e,children:t}){return e.page.frontmatter.layout==="playground"?k(la,{model:e,children:t}):N("div",{className:"cf-shell",children:[k("div",{className:"cf-sidebar-backdrop","data-canofold-sidebar-backdrop":"","aria-hidden":"true",hidden:!0}),k(co,{model:e}),N("main",{id:"canofold-main",className:"cf-main",tabIndex:-1,"data-pagefind-body":e.page.search?"":void 0,children:[t,k(sa,{model:e})]}),k(ia,{model:e})]})}n(uo,"LayoutDocument");function Se(e){return wt(e.relativePath,e.locale)}n(Se,"subPath");function ne(e,t){let o=e.find(r=>r.id===t);if(!o)throw new Error(`Missing Markdown element group: ${t}`);return o.hash}n(ne,"markdownGroupHash");function mo({config:e,graph:t,page:o,home:r,assets:a,rawSource:s}){let l=t.pages.filter(m=>m.version===o.version&&Se(m)===Se(o)),i=t.locales.map(m=>{let C=l.find(M=>M.locale===m);return{locale:m,routePath:C?.routePath??z(m,t.defaultLocale,o.versionBase)}}),c=t.versions.map(m=>{let C=t.pages.find(M=>M.version===m.id&&M.locale===o.locale&&Se(M)===Se(o));return{id:m.id,label:m.label,routePath:C?.routePath??z(o.locale,t.defaultLocale,m.base)}}),d=t.sidebar[o.version]?.[o.locale]??[],p=to(o.locale,e.i18n.messages),f=z(o.locale,t.defaultLocale,o.versionBase),u=`${f}markdown/playground/`,w=t.pages.some(m=>m.locale===o.locale&&m.routePath===u),y=n(m=>m.type==="link"?m.routePath===o.routePath:m.items.some(y),"isActiveItem"),S=n(m=>m.items.some(y),"isActiveGroup"),x=d.filter(m=>m.title===""||m.segment===o.group||S(m)),b=typeof o.frontmatter.seoTitle=="string"?o.frontmatter.seoTitle.trim():"";return{config:e,page:o,home:r,assets:a,title:b||(o.title&&o.title!==e.title?`${o.title} | ${e.title}`:e.title),description:o.description||e.description,...e.editUrl&&o.version===t.currentVersion?{editHref:`${e.editUrl.replace(/\/$/,"")}/${o.relativePath}`}:{},alternatePages:l,languageOptions:i,versionOptions:c,navItems:t.nav[o.version]?.[o.locale]??[],content:p,labels:p.labels,brandTagline:e.i18n.messages?.[o.locale]?.brandTagline||e.description||p.brandTagline,versionLabel:t.versions.length===1&&o.version==="current"?`v${j}`:t.versions.find(m=>m.id===o.version)?.label??o.version,localeRoot:h(e,f),markdownShowcaseHref:h(e,u),hasMarkdownShowcase:w,sidebarGroups:x,hasSidebarItems:x.some(m=>m.items.length>0),outlineHeadings:o.headings.filter(m=>m.level>=1&&m.level<=6),searchProvider:xt(e.search.provider),searchIndexUrl:o.version===t.currentVersion?h(e,`/search/${o.locale}.json`):h(e,`/search/${o.version}/${o.locale}.json`),searchBundleUrl:h(e,"/pagefind/pagefind.js"),markdownClientScript:`window.__canofoldEnhanceMarkdown = async (target) => {
27
27
  const pageRoot = document.querySelector('[data-canofold-page-root]')
28
28
  if (!pageRoot) return () => {}
29
29
  const root = target || pageRoot
@@ -74,7 +74,7 @@ window.__canofoldBootstrapMarkdown = () => {
74
74
  window.__canofoldMarkdownReady = ready
75
75
  return ready
76
76
  }
77
- window.__canofoldBootstrapMarkdown()`,rawSource:s}}n(mo,"createLayoutModel");import{Braces as ca,Clipboard as da,ExternalLink as ua,Heading2 as ma,SunMoon as pa,Table2 as fa,Workflow as ha,X as ga}from"lucide-react";import{Fragment as qe,jsx as v,jsxs as T}from"react/jsx-runtime";function ee({href:e,action:t,icon:o,title:r,description:a}){let s=T(qe,{children:[v("span",{className:"cf-command-glyph","aria-hidden":"true",children:o}),T("span",{children:[v("strong",{children:r}),v("small",{children:a})]})]});return e?v("a",{className:"cf-command-item",href:e,children:s}):v("button",{className:"cf-command-item",type:"button","data-canofold-search-action":t,children:s})}n(ee,"QuickAction");function ya({model:e}){let{config:t,page:o,home:r,labels:a,content:s,markdownShowcaseHref:l,hasMarkdownShowcase:i}=e,d=s.markdownElementGroups,c=s.quickActions;return t.search.enabled?T("div",{className:"cf-search-modal","data-canofold-search":"","data-locale":o.locale,"data-version":o.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:[v("div",{className:"cf-search-backdrop","data-canofold-search-close":"","aria-hidden":"true"}),T("div",{className:"cf-search-panel",role:"dialog","aria-modal":"true","aria-label":a.search,tabIndex:-1,children:[T("div",{className:"cf-search-field",children:[v(Be,{}),v("input",{className:"cf-search-input",type:"search",placeholder:`${a.search}...`,"aria-label":a.search}),v("button",{className:"cf-search-close",type:"button","data-canofold-search-close":"","aria-label":a.close,children:"Esc"})]}),T("div",{className:"cf-search-body",children:[T("div",{className:"cf-search-default","data-canofold-search-default":"",children:[v("p",{className:"cf-search-section-label",children:a.quickActions}),i?T(qe,{children:[v(ee,{href:`${l}#${ne(d,"headings")}`,icon:v(ma,{size:17,strokeWidth:2}),title:c.headingsTitle,description:c.headingsDescription}),v(ee,{href:`${l}#${ne(d,"code")}`,icon:v(ca,{size:17,strokeWidth:2}),title:c.codeTitle,description:c.codeDescription}),v(ee,{href:`${l}#${ne(d,"tables")}`,icon:v(fa,{size:17,strokeWidth:2}),title:c.tableTitle,description:c.tableDescription}),v(ee,{href:`${l}#${ne(d,"diagrams")}`,icon:v(ha,{size:17,strokeWidth:2}),title:c.diagramTitle,description:c.diagramDescription})]}):null,r?null:v(ee,{action:"source",icon:v(ua,{size:17,strokeWidth:2}),title:a.source,description:c.sourceDescription}),t.theme.darkMode?v(ee,{action:"theme",icon:v(pa,{size:17,strokeWidth:2}),title:a.theme,description:c.themeDescription}):null]}),v("div",{className:"cf-search-results","data-canofold-search-results":"","aria-live":"polite",hidden:!0})]})]})]}):null}n(ya,"SearchModal");function wa({model:e}){let{home:t,labels:o,page:r}=e;return t?null:T("div",{className:"cf-source-sheet","data-canofold-source-sheet":"",hidden:!0,children:[v("div",{className:"cf-source-backdrop","data-canofold-source-close":"","aria-hidden":"true"}),T("aside",{className:"cf-source-panel",role:"dialog","aria-modal":"true","aria-label":o.source,tabIndex:-1,children:[T("div",{className:"cf-source-head",children:[T("div",{children:[v("p",{children:o.source}),v("span",{children:r.sourceRelativePath})]}),T("div",{className:"cf-source-actions",children:[v("button",{className:"cf-icon-button",type:"button","data-canofold-source-copy":"","data-canofold-action-success":o.sourceCopied,"aria-label":o.copySource,children:v(da,{size:16,strokeWidth:2,"aria-hidden":"true"})}),v("button",{className:"cf-icon-button",type:"button","data-canofold-source-close":"","aria-label":o.close,children:v(ga,{size:16,strokeWidth:2,"aria-hidden":"true"})})]})]}),v("textarea",{"data-canofold-source-text":"","aria-label":o.source,spellCheck:!1,readOnly:!0,defaultValue:e.rawSource})]})]})}n(wa,"SourceSheet");function po({model:e}){return T(qe,{children:[v(ya,{model:e}),v(wa,{model:e})]})}n(po,"LayoutOverlays");var xe="try{var t=localStorage.getItem('canofold-theme');if(t==='dark'||(!t&&window.matchMedia('(prefers-color-scheme:dark)').matches)){document.documentElement.classList.add('dark')}}catch(e){}";var fo=`window.__canofoldBootstrapShell = () => {
77
+ window.__canofoldBootstrapMarkdown()`,rawSource:s}}n(mo,"createLayoutModel");import{Braces as ca,Clipboard as da,ExternalLink as ua,Heading2 as ma,SunMoon as pa,Table2 as fa,Workflow as ha,X as ga}from"lucide-react";import{Fragment as qe,jsx as v,jsxs as T}from"react/jsx-runtime";function ee({href:e,action:t,icon:o,title:r,description:a}){let s=T(qe,{children:[v("span",{className:"cf-command-glyph","aria-hidden":"true",children:o}),T("span",{children:[v("strong",{children:r}),v("small",{children:a})]})]});return e?v("a",{className:"cf-command-item",href:e,children:s}):v("button",{className:"cf-command-item",type:"button","data-canofold-search-action":t,children:s})}n(ee,"QuickAction");function ya({model:e}){let{config:t,page:o,home:r,labels:a,content:s,markdownShowcaseHref:l,hasMarkdownShowcase:i}=e,c=s.markdownElementGroups,d=s.quickActions;return t.search.enabled?T("div",{className:"cf-search-modal","data-canofold-search":"","data-locale":o.locale,"data-version":o.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:[v("div",{className:"cf-search-backdrop","data-canofold-search-close":"","aria-hidden":"true"}),T("div",{className:"cf-search-panel",role:"dialog","aria-modal":"true","aria-label":a.search,tabIndex:-1,children:[T("div",{className:"cf-search-field",children:[v(Be,{}),v("input",{className:"cf-search-input",type:"search",placeholder:`${a.search}...`,"aria-label":a.search}),v("button",{className:"cf-search-close",type:"button","data-canofold-search-close":"","aria-label":a.close,children:"Esc"})]}),T("div",{className:"cf-search-body",children:[T("div",{className:"cf-search-default","data-canofold-search-default":"",children:[v("p",{className:"cf-search-section-label",children:a.quickActions}),i?T(qe,{children:[v(ee,{href:`${l}#${ne(c,"headings")}`,icon:v(ma,{size:17,strokeWidth:2}),title:d.headingsTitle,description:d.headingsDescription}),v(ee,{href:`${l}#${ne(c,"code")}`,icon:v(ca,{size:17,strokeWidth:2}),title:d.codeTitle,description:d.codeDescription}),v(ee,{href:`${l}#${ne(c,"tables")}`,icon:v(fa,{size:17,strokeWidth:2}),title:d.tableTitle,description:d.tableDescription}),v(ee,{href:`${l}#${ne(c,"diagrams")}`,icon:v(ha,{size:17,strokeWidth:2}),title:d.diagramTitle,description:d.diagramDescription})]}):null,r?null:v(ee,{action:"source",icon:v(ua,{size:17,strokeWidth:2}),title:a.source,description:d.sourceDescription}),t.theme.darkMode?v(ee,{action:"theme",icon:v(pa,{size:17,strokeWidth:2}),title:a.theme,description:d.themeDescription}):null]}),v("div",{className:"cf-search-results","data-canofold-search-results":"","aria-live":"polite",hidden:!0})]})]})]}):null}n(ya,"SearchModal");function wa({model:e}){let{home:t,labels:o,page:r}=e;return t?null:T("div",{className:"cf-source-sheet","data-canofold-source-sheet":"",hidden:!0,children:[v("div",{className:"cf-source-backdrop","data-canofold-source-close":"","aria-hidden":"true"}),T("aside",{className:"cf-source-panel",role:"dialog","aria-modal":"true","aria-label":o.source,tabIndex:-1,children:[T("div",{className:"cf-source-head",children:[T("div",{children:[v("p",{children:o.source}),v("span",{children:r.sourceRelativePath})]}),T("div",{className:"cf-source-actions",children:[v("button",{className:"cf-icon-button",type:"button","data-canofold-source-copy":"","data-canofold-action-success":o.sourceCopied,"aria-label":o.copySource,children:v(da,{size:16,strokeWidth:2,"aria-hidden":"true"})}),v("button",{className:"cf-icon-button",type:"button","data-canofold-source-close":"","aria-label":o.close,children:v(ga,{size:16,strokeWidth:2,"aria-hidden":"true"})})]})]}),v("textarea",{"data-canofold-source-text":"","aria-label":o.source,spellCheck:!1,readOnly:!0,defaultValue:e.rawSource})]})]})}n(wa,"SourceSheet");function po({model:e}){return T(qe,{children:[v(ya,{model:e}),v(wa,{model:e})]})}n(po,"LayoutOverlays");var xe="try{var t=localStorage.getItem('canofold-theme');if(t==='dark'||(!t&&window.matchMedia('(prefers-color-scheme:dark)').matches)){document.documentElement.classList.add('dark')}}catch(e){}";var fo=`window.__canofoldBootstrapShell = () => {
78
78
  window.__canofoldShellDispose?.()
79
79
  const controller = new AbortController()
80
80
  const signal = controller.signal
@@ -626,7 +626,7 @@ window.__canofoldBootstrapShell()`,ho=`window.__canofoldBootstrapOutline = () =>
626
626
  if (hashTimer) clearTimeout(hashTimer)
627
627
  }
628
628
  }
629
- window.__canofoldBootstrapOutline()`;import{Fragment as ba,jsx as S,jsxs as se}from"react/jsx-runtime";function go({config:e,graph:t,page:o,home:r=!1,markdownAssets:a,rawSource:s,demoClientUrl:l,demoStyleUrls:i=[],children:d}){let c=mo({config:e,graph:t,page:o,home:r,assets:a,rawSource:s}),p=c.assets.behaviors.length>0,f=c.assets.pluginClients.map(y=>h(e,`/assets/canofold-plugins/${y.id}.js`)),u=J(e,o.routePath),b=h(e,e.theme.favicon??we.favicon),w=[e.layout.header?void 0:"cf-header-hidden",o.frontmatter.layout==="playground"?"cf-playground-page":void 0].filter(Boolean).join(" "),P=o.frontmatter.layout==="playground";return se("html",{lang:o.locale,className:w||void 0,children:[se("head",{children:[S("meta",{charSet:"utf-8"}),S("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),S("title",{children:c.title}),S("meta",{name:"description",content:c.description,"data-canofold-page-head":""}),S("meta",{property:"og:title",content:c.title,"data-canofold-page-head":""}),S("meta",{property:"og:description",content:c.description,"data-canofold-page-head":""}),e.search.enabled&&o.search?se(ba,{children:[S("meta",{"data-pagefind-meta":"title[content]",content:o.title,"data-canofold-page-head":""}),S("meta",{"data-pagefind-meta":"description[content]",content:o.description,"data-canofold-page-head":""}),S("meta",{"data-pagefind-filter":`version:${o.version}`,"data-canofold-page-head":""}),S("meta",{"data-pagefind-filter":`locale:${o.locale}`,"data-canofold-page-head":""}),S("meta",{"data-pagefind-filter":`status:${o.status}`,"data-canofold-page-head":""}),(Array.isArray(o.frontmatter.tags)?o.frontmatter.tags:[]).filter(y=>typeof y=="string").map(y=>S("meta",{"data-pagefind-filter":`tag:${y}`,"data-canofold-page-head":""},y))]}):null,u?S("meta",{property:"og:url",content:u,"data-canofold-page-head":""}):null,S("meta",{name:"twitter:card",content:"summary"}),S("link",{rel:"icon",href:b}),u?S("link",{rel:"canonical",href:u,"data-canofold-page-head":""}):null,e.siteUrl?c.alternatePages.map(y=>S("link",{rel:"alternate",hrefLang:y.locale,href:J(e,y.routePath),"data-canofold-page-head":""},y.locale)):null,S("link",{rel:"stylesheet",href:h(e,"/assets/canofold.css")}),c.assets.pluginStyles.map(y=>S("link",{rel:"stylesheet",href:h(e,`/assets/canofold-plugins/${y.id}.css`),"data-canofold-page-head":""},y.id)),i.map(y=>S("link",{rel:"stylesheet",href:y},y)),e.theme.darkMode?S("script",{dangerouslySetInnerHTML:{__html:xe}}):null]}),se("body",{children:[se("div",{className:"cf-page-root",style:{"--cf-canofold-config-icon":`url(${JSON.stringify(b)})`},"data-canofold-page-root":"","data-markdown-behaviors":p?JSON.stringify(c.assets.behaviors):void 0,"data-markdown-client-url":p?h(e,"/assets/canofold-markdown/index.js"):void 0,"data-markdown-plugin-clients":f.length>0?JSON.stringify(f):void 0,"data-canofold-playground-client-url":P?h(e,"/assets/canofold-playground/index.js"):void 0,"data-canofold-demo-client-url":l,children:[S("a",{className:"cf-skip-link",href:"#canofold-main",children:c.labels.skipToContent}),e.layout.header?S(ao,{model:c}):null,r?S("main",{id:"canofold-main",className:"cf-home",tabIndex:-1,"data-pagefind-body":o.search?"":void 0,children:d}):S(uo,{model:c,children:d}),S(po,{model:c})]}),S("script",{type:"module",dangerouslySetInnerHTML:{__html:c.markdownClientScript}}),P?S("script",{type:"module",src:h(e,"/assets/canofold-playground/index.js")}):null,l?S("script",{type:"module",src:l}):null,S("script",{dangerouslySetInnerHTML:{__html:fo}}),S("script",{dangerouslySetInnerHTML:{__html:ho}}),e.search.enabled?S("script",{type:"module",src:h(e,"/assets/canofold-search.js")}):null]})]})}n(go,"Layout");import{access as ka,copyFile as va,mkdir as Pa}from"fs/promises";import{dirname as Sa,join as wo}from"path";import{fileURLToPath as yo}from"url";async function xa(){let e=[yo(new URL("../assets/brand/",import.meta.url)),yo(new URL("./brand/",import.meta.url))];for(let t of e)try{return await ka(wo(t,"logo-light.webp")),t}catch{}throw new Error("Canofold built-in brand assets are missing")}n(xa,"brandSourceRoot");async function bo(e){let t=await xa();await Promise.all(bt.map(async o=>{let r=R(e,o,`built-in brand asset ${o}`);await Pa(Sa(r),{recursive:!0}),await va(wo(t,o.split("/").at(-1)),r)}))}n(bo,"copyBuiltInBrandAssets");import{createMarkdownRenderer as ja}from"@canofold/markdown/server";import*as za from"react";import*as Ga from"react/jsx-runtime";import{analyzeMdxModuleBoundary as Ca}from"@canofold/markdown/server/analyze";var Ma=["react","react/jsx-runtime"],Da=new Set(Ma);function He(e){return Da.has(e)}n(He,"isDocsImportSpecifier");function je(e){return e.startsWith(".")||He(e)}n(je,"isAllowedDocsImport");function Ce(e){let t=Ca(e);for(let o of t.unsupportedReferences){let r=o.kind==="dynamic-import"?"Dynamic import":"Re-export";throw new Error(`${r} is not allowed in MDX${o.specifier?`: ${o.specifier}`:""}`)}for(let{specifier:o}of t.imports)if(!je(o))throw new Error(`External import is not allowed: ${o}`);return{source:t.sourceWithoutImports,imports:t.imports}}n(Ce,"prepareMdxSource");import{access as Na,readFile as Aa,realpath as De}from"fs/promises";import{dirname as La,extname as Po,isAbsolute as Ve,relative as So,resolve as ko,sep as xo}from"path";import{build as Ra}from"esbuild";import*as Ta from"react";import*as Ea from"react/jsx-runtime";import{detectMarkdownAssets as $a}from"@canofold/markdown/server/analyze";var ze=[".tsx",".ts",".jsx",".js"],vo={react:Ta,"react/jsx-runtime":Ea};function Oa(e){if(Object.hasOwn(vo,e))return vo[e];throw new Error(`External import is not allowed in local docs components: ${e}`)}n(Oa,"requireLocalComponentRuntime");function Me(e,t){let o=So(e,t);return o===""||!o.startsWith(`..${xo}`)&&o!==".."&&!Ve(o)}n(Me,"isInsideRoot");async function Ge(e){try{return await Na(e),!0}catch{return!1}}n(Ge,"fileExists");async function Ke(e,t){let o=await De(e);if(!t)return o;let r=await De(t),a=So(r,o);if(a===".."||a.startsWith(`..${xo}`)||Ve(a))throw new Error(`Local component import escapes the project root: ${e}`);return o}n(Ke,"assertInsideProjectRoot");async function We(e,t,o){let r=ko(La(e),t),a=Po(r);if(a&&!ze.includes(a))throw new Error(`Unsupported local component import: ${t}`);if(a&&await Ge(r))return Ke(r,o);for(let s of ze){let l=`${r}${s}`;if(await Ge(l))return Ke(l,o)}for(let s of ze){let l=ko(r,`index${s}`);if(await Ge(l))return Ke(l,o)}throw new Error(`Local component import not found: ${t}`)}n(We,"resolveLocalModule");async function Ia(e,t){let o=t?await De(t):void 0,r=new Set([e]),s=(await Ra({entryPoints:[e],bundle:!0,outfile:"local-component.js",write:!1,platform:"node",format:"cjs",target:"node22",jsx:"automatic",plugins:[{name:"canofold-components-alias",setup(l){l.onResolve({filter:/^(?:react|react\/jsx-runtime)$/},i=>({path:i.path,external:!0})),l.onResolve({filter:/.*/},async i=>{if(!Ve(i.path)||!i.importer||!(o?Me(o,i.importer):r.has(i.importer)))return;let c=await We(i.importer,i.path,t);return r.add(c),{path:c}}),l.onResolve({filter:/^\./},async i=>{if(i.importer&&!(o?Me(o,i.importer):r.has(i.importer)))return;let d=await We(i.importer,i.path,t);return r.add(d),{path:d}}),l.onLoad({filter:/\.(?:[jt]sx?)$/},async i=>{let d=await De(i.path);(o?Me(o,d):r.has(d))&&r.add(d)}),l.onResolve({filter:/^react-dom$/},i=>(i.importer?o?Me(o,i.importer):r.has(i.importer):!1)?{errors:[{text:"External import is not allowed in local docs components: react-dom"}]}:void 0),l.onResolve({filter:/^[^./].*/},i=>{if(!je(i.path))return{errors:[{text:`External import is not allowed in local docs components: ${i.path}`}]}})}}]})).outputFiles.find(l=>Po(l.path)===".js");if(!s)throw new Error(`Failed to bundle local component: ${e}`);return{code:s.text,sourcePaths:[...r]}}n(Ia,"bundleLocalModule");async function Fa(e){let t={exports:{}};return new Function("module","exports","require",e.code)(t,t.exports,Oa),t.exports}n(Fa,"importBundle");function _a(e){return e.filter(t=>t.specifier.startsWith("."))}n(_a,"localImports");async function Co(e,t,o){let r=_a(e);if(!r.length)return[];if(!t)throw new Error("Local MDX component imports require the Markdown source file path");let a=new Map;return Promise.all(r.map(async s=>{let l=await We(t,s.specifier,o),i=a.get(l);return i||(i=Ia(l,o),a.set(l,i)),{localImport:s,bundle:await i}}))}n(Co,"bundleLocalImports");async function Mo(e,t,o){let r=await Co(e,t,o);return[...new Set(r.flatMap(({bundle:a})=>a.sourcePaths))].sort()}n(Mo,"localComponentDependencyPaths");async function Ba(e){let t={},o=new Map;for(let{localImport:r,bundle:a}of e){let s=o.get(a);s||(s=Fa(a),o.set(a,s));let l=await s;for(let i of r.bindings)if(i.namespace)t[i.local]=l;else{if(!Object.hasOwn(l,i.imported))throw new Error(`Local module ${JSON.stringify(r.specifier)} does not export ${JSON.stringify(i.imported)}`);t[i.local]=l[i.imported]}}return t}n(Ba,"componentsFromBundles");function Ua(e,t){e.behaviors=[...new Set([...e.behaviors,...t.behaviors])],e.math||=t.math,e.pluginClients=[...new Map([...e.pluginClients,...t.pluginClients].map(o=>[o.id,o])).values()],e.pluginStyles=[...new Map([...e.pluginStyles,...t.pluginStyles].map(o=>[o.id,o])).values()]}n(Ua,"mergeAssets");function qa(){return{behaviors:[],math:!1,pluginClients:[],pluginStyles:[]}}n(qa,"emptyAssets");async function Ha(e,t=[]){let o=qa(),r=new Set;for(let{bundle:a}of e)for(let s of a.sourcePaths)r.has(s)||(r.add(s),Ua(o,$a(await Aa(s,"utf8"),t,"mdx")));return o}n(Ha,"assetsFromBundles");async function Do(e,t,o,r=[]){let a=await Co(e,t,o),[s,l]=await Promise.all([Ba(a),Ha(a,r)]);return{components:s,assets:l}}n(Do,"loadLocalComponentBundle");function Ka(...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()]}}n(Ka,"mergeAssets");function Wa(e,t){let o={react:za,"react/jsx-runtime":Ga},r={...t};for(let a of e){if(!He(a.specifier))continue;let s=o[a.specifier];for(let l of a.bindings){if(l.namespace){r[l.local]=s;continue}if(l.imported==="default"&&a.specifier==="react"){r[l.local]=s.default??s;continue}if(!Object.hasOwn(s,l.imported))throw new Error(`Module ${JSON.stringify(a.specifier)} does not export ${JSON.stringify(l.imported)}`);r[l.local]=s[l.imported]}}return r}n(Wa,"bindImports");async function No(e,t,o,r,a,s,l=ja()){let i=Ce(e),{components:d,assets:c}=await Do(i.imports,t,o,r?.plugins),p=await l.renderMdx(i.source,{markdown:r,classNames:a,urlTransform:s,as:"article",components:{...Wa(i.imports,d)}});return{content:p.content,assets:Ka(p.assets,c)}}n(No,"renderMdxResult");import{mkdir as Va}from"fs/promises";import{dirname as Ja,join as Xa}from"path";import{fileURLToPath as Ya}from"url";function Qa(){let e=import.meta.url.endsWith(".js")?"./search-client.js":"./searchClientRuntime.ts";return Ya(new URL(e,import.meta.url))}n(Qa,"searchRuntimeEntry");async function Ao(e){let{build:t}=await import("esbuild"),o=Xa(e,"assets/canofold-search.js");await Va(Ja(o),{recursive:!0}),await t({entryPoints:[Qa()],bundle:!0,format:"iife",platform:"browser",target:"es2022",outfile:o,minify:!0,sourcemap:!1,legalComments:"none",logLevel:"silent"})}n(Ao,"buildSearchBundle");import{DEFAULT_SEMANTIC_COLORS as A,DEFAULT_MARKDOWN_THEME as Xe,markdownThemeDeclarations as Za,resolveMarkdownTheme as en}from"@canofold/markdown/theme";var tn={canofold:{light:A.light.blue,dark:A.dark.blue},cyan:{light:A.light.cyan,dark:A.dark.cyan},emerald:{light:A.light.green,dark:A.dark.green},blue:{light:A.light.blue,dark:A.dark.blue},green:{light:A.light.green,dark:A.dark.green},red:{light:A.light.red,dark:A.dark.red},orange:{light:A.light.orange,dark:A.dark.orange},violet:{light:A.light.indigo,dark:A.dark.indigo},neutral:{light:"oklch(0.3 0 0)",dark:"oklch(0.85 0 0)"}};function Lo(e){let t=Xe.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}}n(Lo,"paletteFromMarkdown");var on={paper:{light:Lo("light"),dark:Lo("dark")},neutral:{light:{background:"oklch(0.994 0.003 95)",foreground:"oklch(0.205 0.008 80)",text:"color-mix(in oklab, var(--cf-ink) 88%, var(--cf-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(--cf-ink) 88%, var(--cf-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(--cf-ink) 88%, var(--cf-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(--cf-ink) 88%, var(--cf-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(--cf-ink) 88%, var(--cf-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(--cf-ink) 88%, var(--cf-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(--cf-ink) 88%, var(--cf-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(--cf-ink) 88%, var(--cf-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 Je(e){return typeof e=="number"?`${e}px`:e}n(Je,"cssLength");function rn(e,t){return tn[t]?.[e]??t}n(rn,"accentFor");function Ro(e,t){let o=rn(t,e.theme.accentColor),r=on[e.theme.baseColor][t],a=e.theme.accentColor==="canofold",s=Xe.colors[t];return{...r,primary:o,primarySoft:a&&r.primarySoft?r.primarySoft:`color-mix(in oklab, ${o} 12%, var(--cf-surface))`,primaryForeground:a&&r.primaryForeground?r.primaryForeground:`color-mix(in oklab, ${o} 76%, var(--cf-ink))`,primaryDeep:a&&r.primaryDeep?r.primaryDeep:`color-mix(in oklab, ${o} 84%, var(--cf-ink))`,accent:r.accent??o,info:r.info??s.info,infoDeep:r.infoDeep??s.infoDeep,success:r.success??s.success,successDeep:r.successDeep??s.successDeep,warning:r.warning??s.warning,warningDeep:r.warningDeep??s.warningDeep,danger:r.danger??s.danger,dangerDeep:r.dangerDeep??s.dangerDeep,codeBackground:r.codeBackground??r.card2??r.card,codeForeground:r.codeForeground??r.foreground,overlay:r.overlay??s.overlay,shadow:r.shadow??s.shadow,shadowSmall:r.shadowSmall??s.shadowSmall}}n(Ro,"resolveTokens");function To(e,t){let o=Xe.colors[t];return{canvas:e.background??o.canvas,foreground:e.foreground??o.foreground,text:e.text??o.text,muted:e.muted??o.muted,mutedSubtle:e.muted2??o.mutedSubtle,surface:e.card??o.surface,surfaceSecondary:e.card2??o.surfaceSecondary,surfaceSoft:e.soft??o.surfaceSoft,surfaceElevated:e.popover??o.surfaceElevated,border:e.border??o.border,borderStrong:e.borderStrong??o.borderStrong,hairline:e.hairline??o.hairline,primary:e.primary??o.primary,primarySoft:e.primarySoft??o.primarySoft,primaryForeground:e.primaryForeground??o.primaryForeground,primaryDeep:e.primaryDeep??o.primaryDeep,accent:e.accent??o.accent,info:e.info??o.info,infoDeep:e.infoDeep??o.infoDeep,success:e.success??o.success,successDeep:e.successDeep??o.successDeep,warning:e.warning??o.warning,warningDeep:e.warningDeep??o.warningDeep,danger:e.danger??o.danger,dangerDeep:e.dangerDeep??o.dangerDeep,codeBackground:e.codeBackground??o.codeBackground,codeForeground:e.codeForeground??o.codeForeground,overlay:e.overlay??o.overlay,shadow:e.shadow??o.shadow,shadowSmall:e.shadowSmall??o.shadowSmall}}n(To,"themeColors");function an(e){let t=Je(e.theme.radius);return en({colors:{light:{...To(Ro(e,"light"),"light"),...e.theme.tokens.colors?.light},dark:{...To(Ro(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})}n(an,"resolveCanofoldTheme");function Eo(e,t){let o=t.colors[e].primary;return`${Za(t,e)}
629
+ window.__canofoldBootstrapOutline()`;import{Fragment as ba,jsx as P,jsxs as se}from"react/jsx-runtime";function go({config:e,graph:t,page:o,home:r=!1,markdownAssets:a,rawSource:s,markdownClientUrl:l,demoClientUrl:i,demoStyleUrls:c=[],children:d}){let p=mo({config:e,graph:t,page:o,home:r,assets:a,rawSource:s}),f=p.assets.behaviors.length>0,u=p.assets.pluginClients.map(b=>h(e,`/assets/canofold-plugins/${b.id}.js`)),w=J(e,o.routePath),y=h(e,e.theme.favicon??we.favicon),S=[e.layout.header?void 0:"cf-header-hidden",o.frontmatter.layout==="playground"?"cf-playground-page":void 0].filter(Boolean).join(" "),x=o.frontmatter.layout==="playground";return se("html",{lang:o.locale,className:S||void 0,children:[se("head",{children:[P("meta",{charSet:"utf-8"}),P("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),P("title",{children:p.title}),P("meta",{name:"description",content:p.description,"data-canofold-page-head":""}),P("meta",{property:"og:title",content:p.title,"data-canofold-page-head":""}),P("meta",{property:"og:description",content:p.description,"data-canofold-page-head":""}),e.search.enabled&&o.search?se(ba,{children:[P("meta",{"data-pagefind-meta":"title[content]",content:o.title,"data-canofold-page-head":""}),P("meta",{"data-pagefind-meta":"description[content]",content:o.description,"data-canofold-page-head":""}),P("meta",{"data-pagefind-filter":`version:${o.version}`,"data-canofold-page-head":""}),P("meta",{"data-pagefind-filter":`locale:${o.locale}`,"data-canofold-page-head":""}),P("meta",{"data-pagefind-filter":`status:${o.status}`,"data-canofold-page-head":""}),(Array.isArray(o.frontmatter.tags)?o.frontmatter.tags:[]).filter(b=>typeof b=="string").map(b=>P("meta",{"data-pagefind-filter":`tag:${b}`,"data-canofold-page-head":""},b))]}):null,w?P("meta",{property:"og:url",content:w,"data-canofold-page-head":""}):null,P("meta",{name:"twitter:card",content:"summary"}),P("link",{rel:"icon",href:y}),w?P("link",{rel:"canonical",href:w,"data-canofold-page-head":""}):null,e.siteUrl?p.alternatePages.map(b=>P("link",{rel:"alternate",hrefLang:b.locale,href:J(e,b.routePath),"data-canofold-page-head":""},b.locale)):null,P("link",{rel:"stylesheet",href:h(e,"/assets/canofold.css")}),p.assets.pluginStyles.map(b=>P("link",{rel:"stylesheet",href:h(e,`/assets/canofold-plugins/${b.id}.css`),"data-canofold-page-head":""},b.id)),c.map(b=>P("link",{rel:"stylesheet",href:b},b)),e.theme.darkMode?P("script",{dangerouslySetInnerHTML:{__html:xe}}):null]}),se("body",{children:[se("div",{className:"cf-page-root",style:{"--cf-canofold-config-icon":`url(${JSON.stringify(y)})`},"data-canofold-page-root":"","data-markdown-behaviors":f?JSON.stringify(p.assets.behaviors):void 0,"data-markdown-client-url":f?l??h(e,"/assets/canofold-markdown/index.js"):void 0,"data-markdown-plugin-clients":u.length>0?JSON.stringify(u):void 0,"data-canofold-playground-client-url":x?h(e,"/assets/canofold-playground/index.js"):void 0,"data-canofold-demo-client-url":i,children:[P("a",{className:"cf-skip-link",href:"#canofold-main",children:p.labels.skipToContent}),e.layout.header?P(ao,{model:p}):null,r?P("main",{id:"canofold-main",className:"cf-home",tabIndex:-1,"data-pagefind-body":o.search?"":void 0,children:d}):P(uo,{model:p,children:d}),P(po,{model:p})]}),P("script",{type:"module",dangerouslySetInnerHTML:{__html:p.markdownClientScript}}),x?P("script",{type:"module",src:h(e,"/assets/canofold-playground/index.js")}):null,i?P("script",{type:"module",src:i}):null,P("script",{dangerouslySetInnerHTML:{__html:fo}}),P("script",{dangerouslySetInnerHTML:{__html:ho}}),e.search.enabled?P("script",{type:"module",src:h(e,"/assets/canofold-search.js")}):null]})]})}n(go,"Layout");import{access as ka,copyFile as va,mkdir as Pa}from"fs/promises";import{dirname as Sa,join as wo}from"path";import{fileURLToPath as yo}from"url";async function xa(){let e=[yo(new URL("../assets/brand/",import.meta.url)),yo(new URL("./brand/",import.meta.url))];for(let t of e)try{return await ka(wo(t,"logo-light.webp")),t}catch{}throw new Error("Canofold built-in brand assets are missing")}n(xa,"brandSourceRoot");async function bo(e){let t=await xa();await Promise.all(bt.map(async o=>{let r=R(e,o,`built-in brand asset ${o}`);await Pa(Sa(r),{recursive:!0}),await va(wo(t,o.split("/").at(-1)),r)}))}n(bo,"copyBuiltInBrandAssets");import{createMarkdownRenderer as ja}from"@canofold/markdown/server";import*as za from"react";import*as Ga from"react/jsx-runtime";import{analyzeMdxModuleBoundary as Ca}from"@canofold/markdown/server/analyze";var Ma=["react","react/jsx-runtime"],Da=new Set(Ma);function He(e){return Da.has(e)}n(He,"isDocsImportSpecifier");function je(e){return e.startsWith(".")||He(e)}n(je,"isAllowedDocsImport");function Ce(e){let t=Ca(e);for(let o of t.unsupportedReferences){let r=o.kind==="dynamic-import"?"Dynamic import":"Re-export";throw new Error(`${r} is not allowed in MDX${o.specifier?`: ${o.specifier}`:""}`)}for(let{specifier:o}of t.imports)if(!je(o))throw new Error(`External import is not allowed: ${o}`);return{source:t.sourceWithoutImports,imports:t.imports}}n(Ce,"prepareMdxSource");import{access as Na,readFile as Aa,realpath as De}from"fs/promises";import{dirname as La,extname as Po,isAbsolute as Ve,relative as So,resolve as ko,sep as xo}from"path";import{build as Ra}from"esbuild";import*as Ta from"react";import*as Ea from"react/jsx-runtime";import{detectMarkdownAssets as $a}from"@canofold/markdown/server/analyze";var ze=[".tsx",".ts",".jsx",".js"],vo={react:Ta,"react/jsx-runtime":Ea};function Oa(e){if(Object.hasOwn(vo,e))return vo[e];throw new Error(`External import is not allowed in local docs components: ${e}`)}n(Oa,"requireLocalComponentRuntime");function Me(e,t){let o=So(e,t);return o===""||!o.startsWith(`..${xo}`)&&o!==".."&&!Ve(o)}n(Me,"isInsideRoot");async function Ge(e){try{return await Na(e),!0}catch{return!1}}n(Ge,"fileExists");async function Ke(e,t){let o=await De(e);if(!t)return o;let r=await De(t),a=So(r,o);if(a===".."||a.startsWith(`..${xo}`)||Ve(a))throw new Error(`Local component import escapes the project root: ${e}`);return o}n(Ke,"assertInsideProjectRoot");async function We(e,t,o){let r=ko(La(e),t),a=Po(r);if(a&&!ze.includes(a))throw new Error(`Unsupported local component import: ${t}`);if(a&&await Ge(r))return Ke(r,o);for(let s of ze){let l=`${r}${s}`;if(await Ge(l))return Ke(l,o)}for(let s of ze){let l=ko(r,`index${s}`);if(await Ge(l))return Ke(l,o)}throw new Error(`Local component import not found: ${t}`)}n(We,"resolveLocalModule");async function Ia(e,t){let o=t?await De(t):void 0,r=new Set([e]),s=(await Ra({entryPoints:[e],bundle:!0,outfile:"local-component.js",write:!1,platform:"node",format:"cjs",target:"node22",jsx:"automatic",plugins:[{name:"canofold-components-alias",setup(l){l.onResolve({filter:/^(?:react|react\/jsx-runtime)$/},i=>({path:i.path,external:!0})),l.onResolve({filter:/.*/},async i=>{if(!Ve(i.path)||!i.importer||!(o?Me(o,i.importer):r.has(i.importer)))return;let d=await We(i.importer,i.path,t);return r.add(d),{path:d}}),l.onResolve({filter:/^\./},async i=>{if(i.importer&&!(o?Me(o,i.importer):r.has(i.importer)))return;let c=await We(i.importer,i.path,t);return r.add(c),{path:c}}),l.onLoad({filter:/\.(?:[jt]sx?)$/},async i=>{let c=await De(i.path);(o?Me(o,c):r.has(c))&&r.add(c)}),l.onResolve({filter:/^react-dom$/},i=>(i.importer?o?Me(o,i.importer):r.has(i.importer):!1)?{errors:[{text:"External import is not allowed in local docs components: react-dom"}]}:void 0),l.onResolve({filter:/^[^./].*/},i=>{if(!je(i.path))return{errors:[{text:`External import is not allowed in local docs components: ${i.path}`}]}})}}]})).outputFiles.find(l=>Po(l.path)===".js");if(!s)throw new Error(`Failed to bundle local component: ${e}`);return{code:s.text,sourcePaths:[...r]}}n(Ia,"bundleLocalModule");async function Fa(e){let t={exports:{}};return new Function("module","exports","require",e.code)(t,t.exports,Oa),t.exports}n(Fa,"importBundle");function _a(e){return e.filter(t=>t.specifier.startsWith("."))}n(_a,"localImports");async function Co(e,t,o){let r=_a(e);if(!r.length)return[];if(!t)throw new Error("Local MDX component imports require the Markdown source file path");let a=new Map;return Promise.all(r.map(async s=>{let l=await We(t,s.specifier,o),i=a.get(l);return i||(i=Ia(l,o),a.set(l,i)),{localImport:s,bundle:await i}}))}n(Co,"bundleLocalImports");async function Mo(e,t,o){let r=await Co(e,t,o);return[...new Set(r.flatMap(({bundle:a})=>a.sourcePaths))].sort()}n(Mo,"localComponentDependencyPaths");async function Ba(e){let t={},o=new Map;for(let{localImport:r,bundle:a}of e){let s=o.get(a);s||(s=Fa(a),o.set(a,s));let l=await s;for(let i of r.bindings)if(i.namespace)t[i.local]=l;else{if(!Object.hasOwn(l,i.imported))throw new Error(`Local module ${JSON.stringify(r.specifier)} does not export ${JSON.stringify(i.imported)}`);t[i.local]=l[i.imported]}}return t}n(Ba,"componentsFromBundles");function Ua(e,t){e.behaviors=[...new Set([...e.behaviors,...t.behaviors])],e.math||=t.math,e.pluginClients=[...new Map([...e.pluginClients,...t.pluginClients].map(o=>[o.id,o])).values()],e.pluginStyles=[...new Map([...e.pluginStyles,...t.pluginStyles].map(o=>[o.id,o])).values()]}n(Ua,"mergeAssets");function qa(){return{behaviors:[],math:!1,pluginClients:[],pluginStyles:[]}}n(qa,"emptyAssets");async function Ha(e,t=[]){let o=qa(),r=new Set;for(let{bundle:a}of e)for(let s of a.sourcePaths)r.has(s)||(r.add(s),Ua(o,$a(await Aa(s,"utf8"),t,"mdx")));return o}n(Ha,"assetsFromBundles");async function Do(e,t,o,r=[]){let a=await Co(e,t,o),[s,l]=await Promise.all([Ba(a),Ha(a,r)]);return{components:s,assets:l}}n(Do,"loadLocalComponentBundle");function Ka(...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()]}}n(Ka,"mergeAssets");function Wa(e,t){let o={react:za,"react/jsx-runtime":Ga},r={...t};for(let a of e){if(!He(a.specifier))continue;let s=o[a.specifier];for(let l of a.bindings){if(l.namespace){r[l.local]=s;continue}if(l.imported==="default"&&a.specifier==="react"){r[l.local]=s.default??s;continue}if(!Object.hasOwn(s,l.imported))throw new Error(`Module ${JSON.stringify(a.specifier)} does not export ${JSON.stringify(l.imported)}`);r[l.local]=s[l.imported]}}return r}n(Wa,"bindImports");async function No(e,t,o,r,a,s,l=ja()){let i=Ce(e),{components:c,assets:d}=await Do(i.imports,t,o,r?.plugins),p=await l.renderMdx(i.source,{markdown:r,classNames:a,urlTransform:s,as:"article",components:{...Wa(i.imports,c)}});return{content:p.content,assets:Ka(p.assets,d)}}n(No,"renderMdxResult");import{mkdir as Va}from"fs/promises";import{dirname as Ja,join as Xa}from"path";import{fileURLToPath as Ya}from"url";function Qa(){let e=import.meta.url.endsWith(".js")?"./search-client.js":"./searchClientRuntime.ts";return Ya(new URL(e,import.meta.url))}n(Qa,"searchRuntimeEntry");async function Ao(e){let{build:t}=await import("esbuild"),o=Xa(e,"assets/canofold-search.js");await Va(Ja(o),{recursive:!0}),await t({entryPoints:[Qa()],bundle:!0,format:"iife",platform:"browser",target:"es2022",outfile:o,minify:!0,sourcemap:!1,legalComments:"none",logLevel:"silent"})}n(Ao,"buildSearchBundle");import{DEFAULT_SEMANTIC_COLORS as A,DEFAULT_MARKDOWN_THEME as Xe,markdownThemeDeclarations as Za,resolveMarkdownTheme as en}from"@canofold/markdown/theme";var tn={canofold:{light:A.light.blue,dark:A.dark.blue},cyan:{light:A.light.cyan,dark:A.dark.cyan},emerald:{light:A.light.green,dark:A.dark.green},blue:{light:A.light.blue,dark:A.dark.blue},green:{light:A.light.green,dark:A.dark.green},red:{light:A.light.red,dark:A.dark.red},orange:{light:A.light.orange,dark:A.dark.orange},violet:{light:A.light.indigo,dark:A.dark.indigo},neutral:{light:"oklch(0.3 0 0)",dark:"oklch(0.85 0 0)"}};function Lo(e){let t=Xe.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}}n(Lo,"paletteFromMarkdown");var on={paper:{light:Lo("light"),dark:Lo("dark")},neutral:{light:{background:"oklch(0.994 0.003 95)",foreground:"oklch(0.205 0.008 80)",text:"color-mix(in oklab, var(--cf-ink) 88%, var(--cf-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(--cf-ink) 88%, var(--cf-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(--cf-ink) 88%, var(--cf-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(--cf-ink) 88%, var(--cf-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(--cf-ink) 88%, var(--cf-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(--cf-ink) 88%, var(--cf-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(--cf-ink) 88%, var(--cf-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(--cf-ink) 88%, var(--cf-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 Je(e){return typeof e=="number"?`${e}px`:e}n(Je,"cssLength");function rn(e,t){return tn[t]?.[e]??t}n(rn,"accentFor");function Ro(e,t){let o=rn(t,e.theme.accentColor),r=on[e.theme.baseColor][t],a=e.theme.accentColor==="canofold",s=Xe.colors[t];return{...r,primary:o,primarySoft:a&&r.primarySoft?r.primarySoft:`color-mix(in oklab, ${o} 12%, var(--cf-surface))`,primaryForeground:a&&r.primaryForeground?r.primaryForeground:`color-mix(in oklab, ${o} 76%, var(--cf-ink))`,primaryDeep:a&&r.primaryDeep?r.primaryDeep:`color-mix(in oklab, ${o} 84%, var(--cf-ink))`,accent:r.accent??o,info:r.info??s.info,infoDeep:r.infoDeep??s.infoDeep,success:r.success??s.success,successDeep:r.successDeep??s.successDeep,warning:r.warning??s.warning,warningDeep:r.warningDeep??s.warningDeep,danger:r.danger??s.danger,dangerDeep:r.dangerDeep??s.dangerDeep,codeBackground:r.codeBackground??r.card2??r.card,codeForeground:r.codeForeground??r.foreground,overlay:r.overlay??s.overlay,shadow:r.shadow??s.shadow,shadowSmall:r.shadowSmall??s.shadowSmall}}n(Ro,"resolveTokens");function To(e,t){let o=Xe.colors[t];return{canvas:e.background??o.canvas,foreground:e.foreground??o.foreground,text:e.text??o.text,muted:e.muted??o.muted,mutedSubtle:e.muted2??o.mutedSubtle,surface:e.card??o.surface,surfaceSecondary:e.card2??o.surfaceSecondary,surfaceSoft:e.soft??o.surfaceSoft,surfaceElevated:e.popover??o.surfaceElevated,border:e.border??o.border,borderStrong:e.borderStrong??o.borderStrong,hairline:e.hairline??o.hairline,primary:e.primary??o.primary,primarySoft:e.primarySoft??o.primarySoft,primaryForeground:e.primaryForeground??o.primaryForeground,primaryDeep:e.primaryDeep??o.primaryDeep,accent:e.accent??o.accent,info:e.info??o.info,infoDeep:e.infoDeep??o.infoDeep,success:e.success??o.success,successDeep:e.successDeep??o.successDeep,warning:e.warning??o.warning,warningDeep:e.warningDeep??o.warningDeep,danger:e.danger??o.danger,dangerDeep:e.dangerDeep??o.dangerDeep,codeBackground:e.codeBackground??o.codeBackground,codeForeground:e.codeForeground??o.codeForeground,overlay:e.overlay??o.overlay,shadow:e.shadow??o.shadow,shadowSmall:e.shadowSmall??o.shadowSmall}}n(To,"themeColors");function an(e){let t=Je(e.theme.radius);return en({colors:{light:{...To(Ro(e,"light"),"light"),...e.theme.tokens.colors?.light},dark:{...To(Ro(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})}n(an,"resolveCanofoldTheme");function Eo(e,t){let o=t.colors[e].primary;return`${Za(t,e)}
630
630
  --cf-accent-50: color-mix(in oklab, ${o} 8%, var(--cf-surface));
631
631
  --cf-accent-100: color-mix(in oklab, ${o} 16%, var(--cf-surface));
632
632
  --cf-accent-200: color-mix(in oklab, ${o} 28%, var(--cf-surface));
@@ -642,9 +642,9 @@ ${Eo("light",t)}
642
642
  }`;return e.theme.darkMode?`${a}
643
643
  .dark {
644
644
  ${Eo("dark",t)}
645
- }`:a}n($o,"buildThemeVariables");function nn(e,t){if(t==="/")return e;let o=t.replace(/\/$/,"");return e===o||e.startsWith(`${o}/`)||!e.startsWith("/")||e.startsWith("//")?e:`${o}${e}`}n(nn,"withBasePath");function Oo(e){return t=>nn(t,e)}n(Oo,"createBasePathUrlTransform");import{rm as sn}from"fs/promises";import{fileURLToPath as ln}from"url";import{join as cn}from"path";import{build as dn}from"esbuild";function ie(e){return JSON.stringify(e).replace(/</g,"\\u003c").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}n(ie,"jsonForJavaScript");function un(){let e=import.meta.url.endsWith(".js")?"./playground-client.js":"./playgroundClient.tsx";return ln(new URL(e,import.meta.url))}n(un,"playgroundRuntimeEntry");async function Io(e,t,o){let r=cn(t,"assets/canofold-playground");await sn(r,{recursive:!0,force:!0});let a=o.markdown.plugins.map(c=>{if(!c.browserCompiler)throw new Error(`Markdown plugin "${c.name}" must declare browserCompiler to support Playground realtime preview`);return c.browserCompiler}),s=a.map((c,p)=>`import { ${c.exportName} as canofoldPlugin${p} } from ${ie(c.module)}`).join(`
646
- `),l=a.map((c,p)=>c.options===void 0?`canofoldPlugin${p}()`:`canofoldPlugin${p}(${ie(c.options)})`).join(`,
647
- `),i={html:o.markdown.html,code:o.markdown.code,features:o.markdown.features},d=`import { mountPlaygrounds } from ${ie(un())}
645
+ }`:a}n($o,"buildThemeVariables");function nn(e,t){if(t==="/")return e;let o=t.replace(/\/$/,"");return e===o||e.startsWith(`${o}/`)||!e.startsWith("/")||e.startsWith("//")?e:`${o}${e}`}n(nn,"withBasePath");function Oo(e){return t=>nn(t,e)}n(Oo,"createBasePathUrlTransform");import{rm as sn}from"fs/promises";import{fileURLToPath as ln}from"url";import{join as cn}from"path";import{build as dn}from"esbuild";function ie(e){return JSON.stringify(e).replace(/</g,"\\u003c").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}n(ie,"jsonForJavaScript");function un(){let e=import.meta.url.endsWith(".js")?"./playground-client.js":"./playgroundClient.tsx";return ln(new URL(e,import.meta.url))}n(un,"playgroundRuntimeEntry");async function Io(e,t,o){let r=cn(t,"assets/canofold-playground");await sn(r,{recursive:!0,force:!0});let a=o.markdown.plugins.map(d=>{if(!d.browserCompiler)throw new Error(`Markdown plugin "${d.name}" must declare browserCompiler to support Playground realtime preview`);return d.browserCompiler}),s=a.map((d,p)=>`import { ${d.exportName} as canofoldPlugin${p} } from ${ie(d.module)}`).join(`
646
+ `),l=a.map((d,p)=>d.options===void 0?`canofoldPlugin${p}()`:`canofoldPlugin${p}(${ie(d.options)})`).join(`,
647
+ `),i={html:o.markdown.html,code:o.markdown.code,features:o.markdown.features},c=`import { mountPlaygrounds } from ${ie(un())}
648
648
  ${s}
649
649
 
650
650
  const options = {
@@ -654,18 +654,20 @@ const options = {
654
654
  ] }
655
655
  }
656
656
  window.__canofoldBootstrapPlayground = () => mountPlaygrounds(options)
657
- window.__canofoldBootstrapPlayground()`;await dn({absWorkingDir:e,stdin:{contents:d,loader:"js",resolveDir:e,sourcefile:"canofold-playground-entry.js"},bundle:!0,format:"esm",platform:"browser",target:"es2022",outdir:r,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"})}n(Io,"buildPlaygroundBundle");import{createHash as mn}from"crypto";function _(e,t){return{hName:e,hProperties:t}}n(_,"properties");function pn(e,t){let o=`cf-demo-source-${e.id}`,r=`cf-demo-title-${e.id}`,a=[];e.title&&a.push({type:"textDirective",name:"canofold-demo-title",children:[{type:"text",value:e.title}],data:_("strong",{id:r,className:["cf-demo-title"]})}),e.description&&a.push({type:"textDirective",name:"canofold-demo-description",children:[{type:"text",value:e.description}],data:_("p",{className:["cf-demo-description"]})});let s=n((d,c)=>({type:"textDirective",name:d,children:[],data:_("span",{className:["cf-demo-action-icon",c],ariaHidden:!0})}),"actionIcon"),l=n((d,c)=>({type:"textDirective",name:d,children:[{type:"text",value:c}],data:_("span",{className:["cf-demo-tooltip"],ariaHidden:!0,dataCfDemoTooltip:""})}),"tooltip"),i=[{type:"textDirective",name:"canofold-demo-open",children:[s("canofold-demo-open-icon","cf-demo-open-icon"),l("canofold-demo-open-tooltip",t.openPreview)],data:_("a",{className:["cf-demo-action","cf-demo-open"],href:`?canofold-demo=${e.id}`,target:"_blank",rel:"noopener noreferrer",ariaLabel:t.openPreview})},{type:"textDirective",name:"canofold-demo-source-toggle",children:[s("canofold-demo-source-icon","cf-demo-source-icon"),l("canofold-demo-source-tooltip",t.showSource)],data:_("button",{className:["cf-demo-action","cf-demo-source-toggle"],type:"button",ariaLabel:t.showSource,ariaControls:o,ariaExpanded:!1,dataCfDemoSourceToggle:"",dataCfDemoShowLabel:t.showSource,dataCfDemoHideLabel:t.hideSource})}];return{type:"containerDirective",name:"canofold-demo-card",data:_("figure",{className:["cf-demo"],dataCfComponent:"demo",dataCfDemoId:e.id,dataCfDemoSandbox:e.sandbox,...e.title?{ariaLabelledBy:r}:{},...!e.title&&e.description?{ariaLabel:e.description}:{}}),children:[{type:"paragraph",data:_("div",{className:["cf-demo-preview"],dataCfDemoPreview:"",dataCfDemoId:e.id,dataCfDemoLoadingLabel:t.loading,dataCfDemoFailedLabel:t.failed}),children:[]},...a.length>0?[{type:"paragraph",data:_("div",{className:["cf-demo-details"]}),children:a}]:[],{type:"paragraph",data:_("div",{className:["cf-demo-toolbar"]}),children:i},{type:"containerDirective",name:"canofold-demo-source",data:_("div",{id:o,className:["cf-demo-source"],hidden:!0,dataCfDemoSource:""}),children:[{type:"code",lang:e.language,meta:`filename=${JSON.stringify(e.specifier)}`,value:e.source}]}]}}n(pn,"demoNode");function fn(e,t,o,r){let a=o.attributes?.src?.trim(),s=o.position?.start?.line,l=o.position?.start?.column,i=e.demos.find(c=>!r.has(c.id)&&c.specifier===a&&(s===void 0||c.line===s)&&(l===void 0||c.column===l));if(!i)return;let d=t.demos[i.id];if(!d)throw new Error(`Demo engine did not prepare ${i.specifier} for ${e.sourceRelativePath}`);return r.add(i.id),d}n(fn,"matchingDemo");function hn(e,t,o,r){let a=new Set,s=n(l=>{l.children&&l.children.forEach((i,d)=>{if(i.type==="leafDirective"&&i.name==="demo"){let c=fn(t,o,i,a);if(!c)throw new Error(`Could not match demo directive in ${t.sourceRelativePath}`);l.children[d]=pn(c,r);return}s(i)})},"walk");s(e)}n(hn,"transformDemoNodes");function Fo({page:e,manifest:t,labels:o}){let r=e.demos.flatMap(a=>{let s=t.demos[a.id];return s?[s]:[]});return{name:"canofold-demo-renderer",version:"2",cacheKey:{page:e.sourceRelativePath,demos:r.map(a=>[a.id,mn("sha256").update(a.source).digest("hex")])},directiveNames:["demo"],highlightLanguages:[...new Set(r.map(a=>a.language))],remarkPlugins:[()=>a=>hn(a,e,t,o)]}}n(Fo,"createDemoMarkdownPlugin");var gn={openPreview:"Open in new window",showSource:"Show source",hideSource:"Hide source",loading:"Loading example\u2026",failed:"This example could not be loaded."};function _o(e){return e.toLowerCase().startsWith("zh")?{openPreview:"\u5728\u65B0\u7A97\u53E3\u6253\u5F00",showSource:"\u67E5\u770B\u4EE3\u7801",hideSource:"\u6536\u8D77\u4EE3\u7801",loading:"\u6B63\u5728\u52A0\u8F7D\u793A\u4F8B\u2026",failed:"\u793A\u4F8B\u52A0\u8F7D\u5931\u8D25\u3002"}:gn}n(_o,"demoLabelsFor");import{copyFile as ce,cp as qo,lstat as yn,mkdir as Ne,readFile as Qe,readdir as Ho,realpath as Bo,rm as jo,stat as wn}from"fs/promises";import{createRequire as zo}from"module";import{dirname as de,join as U,posix as K,relative as bn,resolve as le}from"path";import{analyzeMarkdown as kn}from"@canofold/markdown/server/analyze";var Ze=zo(import.meta.url);async function vn(e,t){await qo(e,t,{recursive:!0,filter:n(async o=>(await wn(o)).isDirectory()||o.endsWith(".js"),"filter")})}n(vn,"copyJavaScriptDirectory");async function Go(e){let t=Ze.resolve("@canofold/markdown/client"),o=U(e,"assets/canofold-markdown");await vn(de(t),o)}n(Go,"copyMarkdownClient");var Pn=/^[a-z0-9]+(?:-[a-z0-9]+)*$/;function Uo(e,t,o){if(!Pn.test(t.id))throw new Error(`Invalid Markdown plugin ${o} id: ${t.id}`);let r=e.get(t.id);if(r&&JSON.stringify(r)!==JSON.stringify(t))throw new Error(`Markdown plugin ${o} id "${t.id}" is declared by both "${r.module}" and "${t.module}"`);e.set(t.id,t)}n(Uo,"registerPluginAsset");function Ye(e,t){if(!e||e.startsWith("/")||e.includes("\\")||e.split("/").some(o=>o===""||o==="."||o===".."))throw new Error(`Invalid Markdown plugin ${t} path: ${e}`)}n(Ye,"assertSafePluginResourcePath");async function Ko(e,t,o){await Ne(t,{recursive:!0});for(let r of await Ho(e,{withFileTypes:!0})){if(r.isSymbolicLink())throw new Error(`Markdown plugin resources must not use symbolic links: ${U(e,r.name)}`);let a=U(e,r.name),s=U(t,r.name);r.isDirectory()?await Ko(a,s,o):r.isFile()&&(!o.extensions||o.extensions.some(l=>r.name.endsWith(l)))&&await ce(a,s)}}n(Ko,"copyPluginResourceDirectory");async function Sn(e,t){let o=Ze.resolve(t.module);if(await ce(o,U(e,`${t.id}.js`)),!t.resources?.length)return;let r=U(e,t.id),a=zo(o);for(let s of t.resources){Ye(s.output,"resource output");let l=a.resolve(s.module),i=le(r,s.output);if(!re(r,i))throw new Error(`Markdown plugin resource output escapes its client directory: ${s.output}`);await Ne(de(i),{recursive:!0}),await ce(l,i);for(let d of s.directories??[]){Ye(d.source,"resource source"),Ye(d.output,"resource directory output");let c=de(l),p=le(c,d.source),f=le(r,d.output);if(!re(c,p)||!re(r,f))throw new Error(`Markdown plugin resource directory escapes its declared root: ${d.source}`);await Ko(p,f,d)}}}n(Sn,"copyMarkdownPluginClient");function me(e,t,o){e.pluginClients.forEach(r=>Uo(t,r,"client")),e.pluginStyles.forEach(r=>Uo(o,r,"style"))}n(me,"registerPluginAssets");async function Wo(e,t,o){let r=U(e,"assets/canofold-plugins");await jo(r,{recursive:!0,force:!0}),!(t.size===0&&o.size===0)&&(await Ne(r,{recursive:!0}),await Promise.all([...[...t.values()].map(a=>Sn(r,a)),...[...o.values()].map(a=>ce(Ze.resolve(a.module),U(r,`${a.id}.css`)))]))}n(Wo,"copyMarkdownPluginAssets");async function et(e,t){try{await qo(e,t,{recursive:!0,force:!0})}catch(o){throw new Error(`Failed to copy required KaTeX fonts from ${e}`,{cause:o})}}n(et,"copyRequiredMathFonts");async function tt(e,t){let o=[];async function r(s,l){for(let i of await Ho(s,{withFileTypes:!0})){if(i.isSymbolicLink())throw new Error(`Public assets must not be symbolic links: ${K.join(l,i.name)}`);let d=U(s,i.name),c=K.join(l,i.name);i.isDirectory()?await r(d,c):i.isFile()&&o.push({source:d,outputPath:c})}}n(r,"walk");let a=new Set(t.versions.items.map(s=>s.docsDir));for(let s of a){let l=U(V(e,s,`public directory for ${s}`),"public");try{await r(l,"")}catch(i){if(i.code!=="ENOENT")throw i}}return o}n(tt,"collectPublicAssets");function Vo(e){let t=kn(e);return[...new Set([...t.images,...t.links])].map(o=>(o.split("#")[0]??"").split("?")[0]??"").filter(o=>o&&!o.startsWith("/")&&!/^(?:[a-z][a-z\d+.-]*:|\/\/|#)/i.test(o)&&!/\.mdx?$/i.test(o))}n(Vo,"relativeAssetTargets");function Jo(e){return e.split("/").map(t=>{let o=decodeURIComponent(t);if(o.includes("/")||o.includes("\\"))throw new Error(`Invalid relative asset path: ${e}`);return o}).join("/")}n(Jo,"decodeRelativeUrlPath");async function ot(e,t){let o=[];for(let r of t){let a=V(e,r.docsDir,"docsDir"),s=await Bo(a);for(let l of Vo(r.body)){let i=Jo(l),d=le(de(r.sourcePath),i),c;try{c=await yn(d)}catch(u){if(u.code==="ENOENT")continue;throw u}if(c.isSymbolicLink())throw new Error(`Relative assets must not use symbolic links: ${l}`);if(!c.isFile())continue;let p=await Bo(d),f=le(s,bn(a,d));if(F(p)!==F(f))throw new Error(`Relative assets must not use symbolic links: ${l}`);if(!re(s,p))throw new Error(`Relative asset must stay inside docsDir: ${l}`);o.push({source:p,outputPath:K.resolve("/",K.dirname(r.outputPath),i).slice(1)})}}return o}n(ot,"collectPageAssets");function ue(e){let t=new Set;for(let o of e){if("assetOutputPaths"in o&&o.assetOutputPaths){o.assetOutputPaths.forEach(r=>t.add(r));continue}if("body"in o)for(let r of Vo(o.body)){let a=Jo(r);t.add(K.resolve("/",K.dirname(o.outputPath),a).slice(1))}}return t}n(ue,"pageAssetOutputPathsFor");async function Xo(e,t,o,r){if(!t.length)return;let a=new Set([...ue(o),...r].map(F)),s=[...ue(t)].filter(l=>!a.has(F(l)));await Promise.all(s.map(l=>jo(R(e,l,`stale page asset ${l}`),{force:!0})))}n(Xo,"removeStalePageAssets");async function rt(e,t,o){let r=new Set([...o].map(F)),a=n(c=>{let p=[],f=K.dirname(c);for(;f!==".";)p.push(f),f=K.dirname(f);return p},"ancestorsOf"),s=new Set([...r].flatMap(c=>a(c))),l=Mt.map(F),i=new Map,d=new Set;for(let c of t){let p=F(c.outputPath),f=a(p);if(r.has(p)||s.has(p)||f.some(w=>r.has(w))||l.some(w=>p===w||p.startsWith(`${w}/`)))throw new Error(`Static asset conflicts with generated output: ${c.outputPath}`);let u=i.get(p);if(u&&u!==c.source){let[w,P]=await Promise.all([Qe(u),Qe(c.source)]);if(!w.equals(P))throw new Error(`Multiple static assets target the same output path: ${c.outputPath}`)}if(u)continue;if(d.has(p)||f.some(w=>i.has(w)))throw new Error(`Multiple static assets target overlapping output paths: ${c.outputPath}`);i.set(p,c.source);for(let w of f)d.add(w);let b=R(e,c.outputPath,`static asset ${c.outputPath}`);await Ne(de(b),{recursive:!0}),await ce(c.source,b)}}n(rt,"copyStaticAssets");async function Yo(e,t){return t.length?(await Promise.all(t.map(async r=>{let a=await Qe(V(e,r,"styles entry"),"utf8");return`/* User style: ${r} */
657
+ window.__canofoldBootstrapPlayground()`;await dn({absWorkingDir:e,stdin:{contents:c,loader:"js",resolveDir:e,sourcefile:"canofold-playground-entry.js"},bundle:!0,format:"esm",platform:"browser",target:"es2022",outdir:r,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"})}n(Io,"buildPlaygroundBundle");import{createHash as mn}from"crypto";function _(e,t){return{hName:e,hProperties:t}}n(_,"properties");function pn(e,t){let o=`cf-demo-source-${e.id}`,r=`cf-demo-title-${e.id}`,a=[];e.title&&a.push({type:"textDirective",name:"canofold-demo-title",children:[{type:"text",value:e.title}],data:_("strong",{id:r,className:["cf-demo-title"]})}),e.description&&a.push({type:"textDirective",name:"canofold-demo-description",children:[{type:"text",value:e.description}],data:_("p",{className:["cf-demo-description"]})});let s=n((c,d)=>({type:"textDirective",name:c,children:[],data:_("span",{className:["cf-demo-action-icon",d],ariaHidden:!0})}),"actionIcon"),l=n((c,d)=>({type:"textDirective",name:c,children:[{type:"text",value:d}],data:_("span",{className:["cf-demo-tooltip"],ariaHidden:!0,dataCfDemoTooltip:""})}),"tooltip"),i=[{type:"textDirective",name:"canofold-demo-open",children:[s("canofold-demo-open-icon","cf-demo-open-icon"),l("canofold-demo-open-tooltip",t.openPreview)],data:_("a",{className:["cf-demo-action","cf-demo-open"],href:`?canofold-demo=${e.id}`,target:"_blank",rel:"noopener noreferrer",ariaLabel:t.openPreview})},{type:"textDirective",name:"canofold-demo-source-toggle",children:[s("canofold-demo-source-icon","cf-demo-source-icon"),l("canofold-demo-source-tooltip",t.showSource)],data:_("button",{className:["cf-demo-action","cf-demo-source-toggle"],type:"button",ariaLabel:t.showSource,ariaControls:o,ariaExpanded:!1,dataCfDemoSourceToggle:"",dataCfDemoShowLabel:t.showSource,dataCfDemoHideLabel:t.hideSource})}];return{type:"containerDirective",name:"canofold-demo-card",data:_("figure",{className:["cf-demo"],dataCfComponent:"demo",dataCfDemoId:e.id,dataCfDemoSandbox:e.sandbox,...e.title?{ariaLabelledBy:r}:{},...!e.title&&e.description?{ariaLabel:e.description}:{}}),children:[{type:"paragraph",data:_("div",{className:["cf-demo-preview"],dataCfDemoPreview:"",dataCfDemoId:e.id,dataCfDemoLoadingLabel:t.loading,dataCfDemoFailedLabel:t.failed}),children:[]},...a.length>0?[{type:"paragraph",data:_("div",{className:["cf-demo-details"]}),children:a}]:[],{type:"paragraph",data:_("div",{className:["cf-demo-toolbar"]}),children:i},{type:"containerDirective",name:"canofold-demo-source",data:_("div",{id:o,className:["cf-demo-source"],hidden:!0,dataCfDemoSource:""}),children:[{type:"code",lang:e.language,meta:`filename=${JSON.stringify(e.specifier)}`,value:e.source}]}]}}n(pn,"demoNode");function fn(e,t,o,r){let a=o.attributes?.src?.trim(),s=o.position?.start?.line,l=o.position?.start?.column,i=e.demos.find(d=>!r.has(d.id)&&d.specifier===a&&(s===void 0||d.line===s)&&(l===void 0||d.column===l));if(!i)return;let c=t.demos[i.id];if(!c)throw new Error(`Demo engine did not prepare ${i.specifier} for ${e.sourceRelativePath}`);return r.add(i.id),c}n(fn,"matchingDemo");function hn(e,t,o,r){let a=new Set,s=n(l=>{l.children&&l.children.forEach((i,c)=>{if(i.type==="leafDirective"&&i.name==="demo"){let d=fn(t,o,i,a);if(!d)throw new Error(`Could not match demo directive in ${t.sourceRelativePath}`);l.children[c]=pn(d,r);return}s(i)})},"walk");s(e)}n(hn,"transformDemoNodes");function Fo({page:e,manifest:t,labels:o}){let r=e.demos.flatMap(a=>{let s=t.demos[a.id];return s?[s]:[]});return{name:"canofold-demo-renderer",version:"2",cacheKey:{page:e.sourceRelativePath,demos:r.map(a=>[a.id,mn("sha256").update(a.source).digest("hex")])},directiveNames:["demo"],highlightLanguages:[...new Set(r.map(a=>a.language))],remarkPlugins:[()=>a=>hn(a,e,t,o)]}}n(Fo,"createDemoMarkdownPlugin");var gn={openPreview:"Open in new window",showSource:"Show source",hideSource:"Hide source",loading:"Loading example\u2026",failed:"This example could not be loaded."};function _o(e){return e.toLowerCase().startsWith("zh")?{openPreview:"\u5728\u65B0\u7A97\u53E3\u6253\u5F00",showSource:"\u67E5\u770B\u4EE3\u7801",hideSource:"\u6536\u8D77\u4EE3\u7801",loading:"\u6B63\u5728\u52A0\u8F7D\u793A\u4F8B\u2026",failed:"\u793A\u4F8B\u52A0\u8F7D\u5931\u8D25\u3002"}:gn}n(_o,"demoLabelsFor");import{copyFile as ce,cp as qo,lstat as yn,mkdir as Ne,readFile as Qe,readdir as Ho,realpath as Bo,rm as jo,stat as wn}from"fs/promises";import{createRequire as zo}from"module";import{dirname as de,join as U,posix as K,relative as bn,resolve as le}from"path";import{analyzeMarkdown as kn}from"@canofold/markdown/server/analyze";var Ze=zo(import.meta.url);async function vn(e,t){await qo(e,t,{recursive:!0,filter:n(async o=>(await wn(o)).isDirectory()||o.endsWith(".js"),"filter")})}n(vn,"copyJavaScriptDirectory");async function Go(e){let t=Ze.resolve("@canofold/markdown/client"),o=U(e,"assets/canofold-markdown");await vn(de(t),o)}n(Go,"copyMarkdownClient");var Pn=/^[a-z0-9]+(?:-[a-z0-9]+)*$/;function Uo(e,t,o){if(!Pn.test(t.id))throw new Error(`Invalid Markdown plugin ${o} id: ${t.id}`);let r=e.get(t.id);if(r&&JSON.stringify(r)!==JSON.stringify(t))throw new Error(`Markdown plugin ${o} id "${t.id}" is declared by both "${r.module}" and "${t.module}"`);e.set(t.id,t)}n(Uo,"registerPluginAsset");function Ye(e,t){if(!e||e.startsWith("/")||e.includes("\\")||e.split("/").some(o=>o===""||o==="."||o===".."))throw new Error(`Invalid Markdown plugin ${t} path: ${e}`)}n(Ye,"assertSafePluginResourcePath");async function Ko(e,t,o){await Ne(t,{recursive:!0});for(let r of await Ho(e,{withFileTypes:!0})){if(r.isSymbolicLink())throw new Error(`Markdown plugin resources must not use symbolic links: ${U(e,r.name)}`);let a=U(e,r.name),s=U(t,r.name);r.isDirectory()?await Ko(a,s,o):r.isFile()&&(!o.extensions||o.extensions.some(l=>r.name.endsWith(l)))&&await ce(a,s)}}n(Ko,"copyPluginResourceDirectory");async function Sn(e,t){let o=Ze.resolve(t.module);if(await ce(o,U(e,`${t.id}.js`)),!t.resources?.length)return;let r=U(e,t.id),a=zo(o);for(let s of t.resources){Ye(s.output,"resource output");let l=a.resolve(s.module),i=le(r,s.output);if(!re(r,i))throw new Error(`Markdown plugin resource output escapes its client directory: ${s.output}`);await Ne(de(i),{recursive:!0}),await ce(l,i);for(let c of s.directories??[]){Ye(c.source,"resource source"),Ye(c.output,"resource directory output");let d=de(l),p=le(d,c.source),f=le(r,c.output);if(!re(d,p)||!re(r,f))throw new Error(`Markdown plugin resource directory escapes its declared root: ${c.source}`);await Ko(p,f,c)}}}n(Sn,"copyMarkdownPluginClient");function me(e,t,o){e.pluginClients.forEach(r=>Uo(t,r,"client")),e.pluginStyles.forEach(r=>Uo(o,r,"style"))}n(me,"registerPluginAssets");async function Wo(e,t,o){let r=U(e,"assets/canofold-plugins");await jo(r,{recursive:!0,force:!0}),!(t.size===0&&o.size===0)&&(await Ne(r,{recursive:!0}),await Promise.all([...[...t.values()].map(a=>Sn(r,a)),...[...o.values()].map(a=>ce(Ze.resolve(a.module),U(r,`${a.id}.css`)))]))}n(Wo,"copyMarkdownPluginAssets");async function et(e,t){try{await qo(e,t,{recursive:!0,force:!0})}catch(o){throw new Error(`Failed to copy required KaTeX fonts from ${e}`,{cause:o})}}n(et,"copyRequiredMathFonts");async function tt(e,t){let o=[];async function r(s,l){for(let i of await Ho(s,{withFileTypes:!0})){if(i.isSymbolicLink())throw new Error(`Public assets must not be symbolic links: ${K.join(l,i.name)}`);let c=U(s,i.name),d=K.join(l,i.name);i.isDirectory()?await r(c,d):i.isFile()&&o.push({source:c,outputPath:d})}}n(r,"walk");let a=new Set(t.versions.items.map(s=>s.docsDir));for(let s of a){let l=U(V(e,s,`public directory for ${s}`),"public");try{await r(l,"")}catch(i){if(i.code!=="ENOENT")throw i}}return o}n(tt,"collectPublicAssets");function Vo(e){let t=kn(e);return[...new Set([...t.images,...t.links])].map(o=>(o.split("#")[0]??"").split("?")[0]??"").filter(o=>o&&!o.startsWith("/")&&!/^(?:[a-z][a-z\d+.-]*:|\/\/|#)/i.test(o)&&!/\.mdx?$/i.test(o))}n(Vo,"relativeAssetTargets");function Jo(e){return e.split("/").map(t=>{let o=decodeURIComponent(t);if(o.includes("/")||o.includes("\\"))throw new Error(`Invalid relative asset path: ${e}`);return o}).join("/")}n(Jo,"decodeRelativeUrlPath");async function ot(e,t){let o=[];for(let r of t){let a=V(e,r.docsDir,"docsDir"),s=await Bo(a);for(let l of Vo(r.body)){let i=Jo(l),c=le(de(r.sourcePath),i),d;try{d=await yn(c)}catch(u){if(u.code==="ENOENT")continue;throw u}if(d.isSymbolicLink())throw new Error(`Relative assets must not use symbolic links: ${l}`);if(!d.isFile())continue;let p=await Bo(c),f=le(s,bn(a,c));if(F(p)!==F(f))throw new Error(`Relative assets must not use symbolic links: ${l}`);if(!re(s,p))throw new Error(`Relative asset must stay inside docsDir: ${l}`);o.push({source:p,outputPath:K.resolve("/",K.dirname(r.outputPath),i).slice(1)})}}return o}n(ot,"collectPageAssets");function ue(e){let t=new Set;for(let o of e){if("assetOutputPaths"in o&&o.assetOutputPaths){o.assetOutputPaths.forEach(r=>t.add(r));continue}if("body"in o)for(let r of Vo(o.body)){let a=Jo(r);t.add(K.resolve("/",K.dirname(o.outputPath),a).slice(1))}}return t}n(ue,"pageAssetOutputPathsFor");async function Xo(e,t,o,r){if(!t.length)return;let a=new Set([...ue(o),...r].map(F)),s=[...ue(t)].filter(l=>!a.has(F(l)));await Promise.all(s.map(l=>jo(R(e,l,`stale page asset ${l}`),{force:!0})))}n(Xo,"removeStalePageAssets");async function rt(e,t,o){let r=new Set([...o].map(F)),a=n(d=>{let p=[],f=K.dirname(d);for(;f!==".";)p.push(f),f=K.dirname(f);return p},"ancestorsOf"),s=new Set([...r].flatMap(d=>a(d))),l=Mt.map(F),i=new Map,c=new Set;for(let d of t){let p=F(d.outputPath),f=a(p);if(r.has(p)||s.has(p)||f.some(y=>r.has(y))||l.some(y=>p===y||p.startsWith(`${y}/`)))throw new Error(`Static asset conflicts with generated output: ${d.outputPath}`);let u=i.get(p);if(u&&u!==d.source){let[y,S]=await Promise.all([Qe(u),Qe(d.source)]);if(!y.equals(S))throw new Error(`Multiple static assets target the same output path: ${d.outputPath}`)}if(u)continue;if(c.has(p)||f.some(y=>i.has(y)))throw new Error(`Multiple static assets target overlapping output paths: ${d.outputPath}`);i.set(p,d.source);for(let y of f)c.add(y);let w=R(e,d.outputPath,`static asset ${d.outputPath}`);await Ne(de(w),{recursive:!0}),await ce(d.source,w)}}n(rt,"copyStaticAssets");async function Yo(e,t){return t.length?(await Promise.all(t.map(async r=>{let a=await Qe(V(e,r,"styles entry"),"utf8");return`/* User style: ${r} */
658
658
  ${a}`}))).join(`
659
- `):""}n(Yo,"readCustomStyles");import{Fragment as Rn,jsx as st,jsxs as Tn}from"react/jsx-runtime";var Dn={behaviors:[],math:!1,pluginClients:[],pluginStyles:[]};function Nn(e,t){let o=new Map,r=new Map;me(e,o,r);for(let a of t)me({behaviors:[],math:a.assets?.math===!0,pluginClients:[...a.assets?.clients??[]],pluginStyles:[...a.assets?.styles??[]]},o,r);return{behaviors:e.behaviors,math:e.math||t.some(a=>a.assets?.math===!0),pluginClients:[...o.values()],pluginStyles:[...r.values()]}}n(Nn,"playgroundMarkdownAssets");function An(e){return JSON.stringify(e).replace(/</g,"\\u003c").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}n(An,"jsonForInlineScript");function Ln(e,t){let o=t.defaultLocale,r=_e(o,e.i18n.messages),a=H(e.title),s=H(h(e,e.theme.favicon??we.favicon)),l=H(h(e,"/assets/canofold.css")),i=t.versions.find(P=>P.id===t.currentVersion),d=h(e,z(o,t.defaultLocale,i?.base??"/")),c=H(d),p=H(r.title),f=H(r.description),u=H(r.home),b=t.versions.flatMap(P=>t.locales.map(y=>{let C=_e(y,e.i18n.messages),m=h(e,z(y,t.defaultLocale,P.base));return{locale:y,prefix:m,home:m,title:C.title,description:C.description,homeLabel:C.home,documentTitle:`404 - ${C.title} | ${e.title}`}})).sort((P,y)=>y.prefix.length-P.prefix.length),w=`(function(){var p=${An(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('canofold-404-title'),d=document.getElementById('canofold-404-description'),h=document.getElementById('canofold-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="${H(o)}"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>404 - ${p} | ${a}</title><meta name="robots" content="noindex"><link rel="icon" href="${s}"><link rel="stylesheet" href="${l}"><script>${xe}</script></head><body><div class="cf-not-found"><span class="cf-not-found-code">404</span><h1 id="canofold-404-title" class="cf-not-found-title">${p}</h1><p id="canofold-404-description" class="cf-not-found-desc">${f}</p><a id="canofold-404-home" href="${c}" class="cf-not-found-link">${u}</a></div><script>${w}</script></body></html>`}n(Ln,"render404Page");async function er({cwd:e,config:t,graph:o,pages:r=o.pages,previousPages:a=[],renderer:s=Mn(),writeSharedAssets:l=!0,demoManifest:i}){let d=$(e,t.outputDir),c=Dt(t,o),p=o.pages.some(m=>m.frontmatter.layout==="playground"),f=[];if(await at(X(d,"assets"),{recursive:!0}),l){let m=p&&t.markdown.plugins.some(q=>q.assets?.math===!0)||o.pages.some(q=>Zo(q.body,t.markdown.plugins,W(q.relativePath)?"mdx":"markdown").math),[x,M]=await Promise.all([Xt({math:m}),Yo(e,t.styles)]);await bo(d),await Ae(X(d,"assets/canofold.css"),`${x}
659
+ `):""}n(Yo,"readCustomStyles");import{Fragment as Rn,jsx as st,jsxs as Tn}from"react/jsx-runtime";var Dn={behaviors:[],math:!1,pluginClients:[],pluginStyles:[]};function Nn(e,t){let o=new Map,r=new Map;me(e,o,r);for(let a of t)me({behaviors:[],math:a.assets?.math===!0,pluginClients:[...a.assets?.clients??[]],pluginStyles:[...a.assets?.styles??[]]},o,r);return{behaviors:e.behaviors,math:e.math||t.some(a=>a.assets?.math===!0),pluginClients:[...o.values()],pluginStyles:[...r.values()]}}n(Nn,"playgroundMarkdownAssets");function An(e){return JSON.stringify(e).replace(/</g,"\\u003c").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}n(An,"jsonForInlineScript");function Ln(e,t){let o=t.defaultLocale,r=_e(o,e.i18n.messages),a=H(e.title),s=H(h(e,e.theme.favicon??we.favicon)),l=H(h(e,"/assets/canofold.css")),i=t.versions.find(S=>S.id===t.currentVersion),c=h(e,z(o,t.defaultLocale,i?.base??"/")),d=H(c),p=H(r.title),f=H(r.description),u=H(r.home),w=t.versions.flatMap(S=>t.locales.map(x=>{let b=_e(x,e.i18n.messages),m=h(e,z(x,t.defaultLocale,S.base));return{locale:x,prefix:m,home:m,title:b.title,description:b.description,homeLabel:b.home,documentTitle:`404 - ${b.title} | ${e.title}`}})).sort((S,x)=>x.prefix.length-S.prefix.length),y=`(function(){var p=${An(w)},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('canofold-404-title'),d=document.getElementById('canofold-404-description'),h=document.getElementById('canofold-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="${H(o)}"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>404 - ${p} | ${a}</title><meta name="robots" content="noindex"><link rel="icon" href="${s}"><link rel="stylesheet" href="${l}"><script>${xe}</script></head><body><div class="cf-not-found"><span class="cf-not-found-code">404</span><h1 id="canofold-404-title" class="cf-not-found-title">${p}</h1><p id="canofold-404-description" class="cf-not-found-desc">${f}</p><a id="canofold-404-home" href="${d}" class="cf-not-found-link">${u}</a></div><script>${y}</script></body></html>`}n(Ln,"render404Page");async function er({cwd:e,config:t,graph:o,pages:r=o.pages,previousPages:a=[],renderer:s=Mn(),writeSharedAssets:l=!0,demoManifest:i}){let c=$(e,t.outputDir),d=Dt(t,o),p=o.pages.some(m=>m.frontmatter.layout==="playground"),f=[];if(await at(X(c,"assets"),{recursive:!0}),l){let m=p&&t.markdown.plugins.some(q=>q.assets?.math===!0)||o.pages.some(q=>Zo(q.body,t.markdown.plugins,W(q.relativePath)?"mdx":"markdown").math),[C,M]=await Promise.all([Xt({math:m}),Yo(e,t.styles)]);await bo(c),await Ae(X(c,"assets/canofold.css"),`${C}
660
660
  ${$o(t)}
661
661
  ${M}
662
- `),await xn(Jt(),X(d,"assets/file-icons"),{recursive:!0,force:!0});let E=X(d,"assets/fonts");if(m){let q=Vt();await et(q,E)}else await nt(E,{recursive:!0,force:!0});t.search.enabled&&await Ao(d),p?await Io(e,d,t):await nt(X(d,"assets/canofold-playground"),{recursive:!0,force:!0});let[Y,ye]=await Promise.all([tt(e,t),ot(e,o.pages)]);f=Y,await rt(d,[...f,...ye],c),await Ae(X(d,"404.html"),Ln(t,o))}else{let[m,x]=await Promise.all([tt(e,t),ot(e,r)]);f=m,await rt(d,x,c)}let u=l?r:o.pages,b=new Map,w=new Map,P=new Set;u.forEach(m=>{let x=Zo(m.body,t.markdown.plugins,W(m.relativePath)?"mdx":"markdown");me(x,b,w),x.behaviors.forEach(M=>P.add(M))});let y=8,C=Oo(t.basePath);await O(r,y,async m=>{let x=m.routePath===z(m.locale,o.defaultLocale,m.versionBase),M,E=Dn,Y=_o(m.locale),ye=m.demos.length>0&&i?Fo({page:m,manifest:i,labels:Y}):void 0;if(m.demos.length>0&&!i)throw new Error(`No prepared demo manifest is available for ${m.sourceRelativePath}`);let q={...t.markdown,plugins:ye?[...t.markdown.plugins,ye]:t.markdown.plugins,locale:m.locale,labels:{...Pe(m.locale,t.i18n.messages),...t.markdown.labels}};if(W(m.relativePath)){let Q={...q,html:"trusted"},gt=await No(m.body,m.sourcePath,e,Q,void 0,C,s);M=gt.content,E=gt.assets}else{let Q=await s.render(m.body,{markdown:q,as:"article",urlTransform:C});M=Q.content,E=Q.assets}m.frontmatter.layout==="playground"&&(E=Nn(E,t.markdown.plugins)),me(E,b,w),E.behaviors.forEach(Q=>P.add(Q));let yr=!!(m.frontmatter.hero||m.frontmatter.features?.length),wr=m.body.trim().length>0,br=x?Tn(Rn,{children:[yr?st(Qt,{page:m,config:t}):null,wr?M:null]}):M??st("article",{className:"cf-content"}),pt=R(d,m.markdownOutputPath,`page ${m.sourceRelativePath}`),ft=m.transformedSource,kr="<!doctype html>"+Cn(st(go,{config:t,graph:o,page:m,home:x,markdownAssets:E,rawSource:ft,demoClientUrl:m.demos.length>0?i?.clientUrl:void 0,demoStyleUrls:m.demos.length>0?i?.styleUrls:void 0,children:br})),ht=R(d,m.outputPath,`page ${m.sourceRelativePath}`);await at(Qo(ht),{recursive:!0}),await Ae(ht,kr),await at(Qo(pt),{recursive:!0}),await Ae(pt,ft)}),P.size>0?await Go(d):await nt(X(d,"assets/canofold-markdown"),{recursive:!0,force:!0}),await Wo(d,b,w),await Xo(d,a,o.pages,[...c,...f.map(m=>m.outputPath)])}n(er,"renderSite");import{writeFile as En}from"fs/promises";import{join as $n}from"path";async function tr(e,t){let o=J(t,"/sitemap.xml");await En($n($(e,t.outputDir),"robots.txt"),`User-agent: *
662
+ `),await xn(Jt(),X(c,"assets/file-icons"),{recursive:!0,force:!0});let E=X(c,"assets/fonts");if(m){let q=Vt();await et(q,E)}else await nt(E,{recursive:!0,force:!0});t.search.enabled&&await Ao(c),p?await Io(e,c,t):await nt(X(c,"assets/canofold-playground"),{recursive:!0,force:!0});let[Y,ye]=await Promise.all([tt(e,t),ot(e,o.pages)]);f=Y,await rt(c,[...f,...ye],d),await Ae(X(c,"404.html"),Ln(t,o))}else{let[m,C]=await Promise.all([tt(e,t),ot(e,r)]);f=m,await rt(c,C,d)}let u=l?r:o.pages,w=new Map,y=new Map,S=new Set;u.forEach(m=>{let C=Zo(m.body,t.markdown.plugins,W(m.relativePath)?"mdx":"markdown");me(C,w,y),C.behaviors.forEach(M=>S.add(M))});let x=8,b=Oo(t.basePath);await O(r,x,async m=>{let C=m.routePath===z(m.locale,o.defaultLocale,m.versionBase),M,E=Dn,Y=_o(m.locale),ye=m.demos.length>0&&i?Fo({page:m,manifest:i,labels:Y}):void 0;if(m.demos.length>0&&!i)throw new Error(`No prepared demo manifest is available for ${m.sourceRelativePath}`);let q={...t.markdown,plugins:ye?[...t.markdown.plugins,ye]:t.markdown.plugins,locale:m.locale,labels:{...Pe(m.locale,t.i18n.messages),...t.markdown.labels}};if(W(m.relativePath)){let Q={...q,html:"trusted"},gt=await No(m.body,m.sourcePath,e,Q,void 0,b,s);M=gt.content,E=gt.assets}else{let Q=await s.render(m.body,{markdown:q,as:"article",urlTransform:b});M=Q.content,E=Q.assets}m.frontmatter.layout==="playground"&&(E=Nn(E,t.markdown.plugins)),me(E,w,y),E.behaviors.forEach(Q=>S.add(Q));let yr=!!(m.frontmatter.hero||m.frontmatter.features?.length),wr=m.body.trim().length>0,br=C?Tn(Rn,{children:[yr?st(Qt,{page:m,config:t}):null,wr?M:null]}):M??st("article",{className:"cf-content"}),pt=R(c,m.markdownOutputPath,`page ${m.sourceRelativePath}`),ft=m.transformedSource,kr="<!doctype html>"+Cn(st(go,{config:t,graph:o,page:m,home:C,markdownAssets:E,rawSource:ft,markdownClientUrl:m.demos.length>0?i?.clientUrl:i?.markdownClientUrl,demoClientUrl:m.demos.length>0?i?.clientUrl:void 0,demoStyleUrls:m.demos.length>0?i?.styleUrls:void 0,children:br})),ht=R(c,m.outputPath,`page ${m.sourceRelativePath}`);await at(Qo(ht),{recursive:!0}),await Ae(ht,kr),await at(Qo(pt),{recursive:!0}),await Ae(pt,ft)}),S.size>0&&!i?.markdownClientUrl?await Go(c):await nt(X(c,"assets/canofold-markdown"),{recursive:!0,force:!0}),await Wo(c,w,y),await Xo(c,a,o.pages,[...d,...f.map(m=>m.outputPath)])}n(er,"renderSite");import{writeFile as En}from"fs/promises";import{join as $n}from"path";async function tr(e,t){let o=t.seo.robots==="disallow",r=J(t,"/sitemap.xml");await En($n($(e,t.outputDir),"robots.txt"),o?`User-agent: *
663
+ Disallow: /
664
+ `:`User-agent: *
663
665
  Allow: /
664
- ${o?`Sitemap: ${o}
666
+ ${r?`Sitemap: ${r}
665
667
  `:""}`)}n(tr,"writeRobots");import{writeFile as On}from"fs/promises";import{join as In}from"path";async function or(e,t,o){if(!t.siteUrl)return;let r=n(s=>s.replace(/[&<>"']/g,l=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&apos;"})[l]??l),"escapeXml"),a=o.pages.map(s=>` <url><loc>${r(J(t,s.routePath))}</loc></url>`).join(`
666
668
  `);await On(In($(e,t.outputDir),"sitemap.xml"),`<?xml version="1.0" encoding="UTF-8"?>
667
669
  <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
668
670
  ${a}
669
671
  </urlset>
670
- `)}n(or,"writeSitemap");import{createMarkdownRenderer as rs}from"@canofold/markdown/server";import{satisfies as as,valid as ns,validRange as ss}from"semver";function rr({current:e,previous:t,outputExists:o,outputValid:r=o,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(!o)return{mode:"clean",changedPageKeys:Object.keys(e.pages),removedPageKeys:Object.keys(t.pages).filter(i=>!e.pages[i]),reason:"missing-output"};if(!r)return{mode:"clean",changedPageKeys:Object.keys(e.pages),removedPageKeys:Object.keys(t.pages).filter(i=>!e.pages[i]),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(i=>!e.pages[i]),reason:"shared-inputs-changed"};let s=Object.entries(e.pages).filter(([i,d])=>t.pages[i]?.fingerprint!==d.fingerprint).map(([i])=>i),l=Object.keys(t.pages).filter(i=>!e.pages[i]);return s.length===0&&l.length===0?{mode:"clean",changedPageKeys:Object.keys(e.pages),removedPageKeys:[],reason:"unclassified-inputs-changed"}:{mode:"incremental",changedPageKeys:s,removedPageKeys:l,reason:"page-inputs-changed"}}n(rr,"planBuild");import{copyFile as Fn,mkdir as _n,readFile as ar,readdir as Bn,stat as Un}from"fs/promises";import{dirname as qn,relative as Hn,resolve as it}from"path";var lt=16;function nr(e,t){return Hn(it(e),it(t)).replace(/\\/g,"/")}n(nr,"portablePath");async function sr(e){async function t(o){let r=await Bn(o,{withFileTypes:!0});return(await Promise.all(r.map(async a=>{let s=it(o,a.name);if(a.isSymbolicLink())throw new Error(`Generated output must not be a symbolic link: ${s}`);return a.isDirectory()?t(s):a.isFile()?[s]:[]}))).flat()}return n(t,"walk"),t(e)}n(sr,"outputFilesUnder");async function ir(e){let t=(await sr(e)).sort(),o=await O(t,lt,async r=>{let a=await ar(r);return[nr(e,r),{fingerprint:B(a),size:a.byteLength}]});return Object.fromEntries(o)}n(ir,"captureBuildOutputs");async function lr(e,t){try{let o=Object.keys(t).sort(),r=(await sr(e)).map(s=>nr(e,s)).sort();return r.length!==o.length||r.some((s,l)=>s!==o[l])?!1:(await O(Object.entries(t),lt,async([s,l])=>{let i=R(e,s,`cached output ${s}`),d=await Un(i);return!d.isFile()||d.size!==l.size?!1:B(await ar(i))===l.fingerprint})).every(Boolean)}catch(o){if(o.code==="ENOENT")return!1;throw o}}n(lr,"verifyBuildOutputs");async function cr(e,t,o){await O(Object.keys(o),lt,async r=>{let a=R(e,r,`cached output ${r}`),s=R(t,r,`staged output ${r}`);await _n(qn(s),{recursive:!0}),await Fn(a,s)})}n(cr,"copyBuildOutputs");import{readFile as Le,readdir as zn}from"fs/promises";import{dirname as dr,join as te,relative as Gn,resolve as he}from"path";import{fileURLToPath as ct}from"url";import{detectMarkdownAssets as Kn}from"@canofold/markdown/server/analyze";var pe=16;function Re(e,t){return Gn(he(e),he(t)).replace(/\\/g,"/")}n(Re,"portablePath");function fe(e){return JSON.stringify([e.version,e.sourceRelativePath])}n(fe,"buildPageKey");async function ur(e){async function t(o){let r=await zn(o,{withFileTypes:!0});return(await Promise.all(r.map(async a=>{let s=te(o,a.name);if(a.isDirectory())return t(s);if(a.isSymbolicLink())throw new Error(`Documentation support files must not use symbolic links: ${Re(e,s)}`);return!a.isFile()||/\.mdx?$/i.test(a.name)?[]:[s]}))).flat()}return n(t,"walk"),t(e)}n(ur,"supportFilesUnder");async function mr(e){let t=[...new Set(e.map(r=>he(r)))].sort(),o=(await O(t,pe,async r=>{try{return{path:r,fingerprint:B(await Le(r))}}catch(a){if(!a||typeof a!="object"||!("code"in a)||a.code!=="ENOENT")throw a;return null}})).filter(r=>r!==null);return G(o)}n(mr,"fingerprintExistingFiles");async function dt(e){try{return await ur(e)}catch(t){if(t&&typeof t=="object"&&"code"in t&&t.code==="ENOENT")return[];throw t}}n(dt,"filesUnderIfPresent");async function Wn(){let e=dr(ct(import.meta.url)),t=[];try{let o=ct(import.meta.resolve("@canofold/markdown/theme")),r=dr(o);t.push(te(r,"tokens.css"),te(r,"styles.css"),te(r,"theme.css"),te(r,"base.css"),o)}catch{}return mr([...await dt(e),...await dt(te(e,"render")),...await dt(ct(new URL("../render",import.meta.url))),...t])}n(Wn,"runtimeFingerprint");async function Vn(e,t,o){let r=[...new Set(t.versions.items.map(i=>i.docsDir))].map(i=>V(e,i,"docsDir")),a=(await Promise.all(r.map(i=>ur(i)))).flat();for(let i of t.styles)a.push(V(e,i,"styles"));let s=[...new Set(a.map(i=>he(i)))].filter(i=>!o.has(i)).sort(),l=await O(s,pe,async i=>({path:Re(e,i),fingerprint:B(await Le(i))}));return G(l)}n(Vn,"supportFingerprint");function Jn(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,demos:e.demos,lastUpdated:e.lastUpdated,...e.previous?{previous:e.previous}:{},...e.next?{next:e.next}:{},frontmatter:e.frontmatter}}n(Jn,"serializablePage");function Xn(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}}n(Xn,"pageLayoutContext");function Yn(e){let t=e.search.provider;return{...e,demos:{setup:e.demos.setup??null,engine:e.demos.engine?{id:e.demos.engine.id,version:e.demos.engine.version??"",cacheKey:e.demos.engine.cacheKey??null}:null},markdown:{...e.markdown,plugins:e.markdown.plugins.map(o=>({name:o.name,version:o.version??"",cacheKey:o.cacheKey??null}))},search:{...e.search,provider:typeof t=="string"?t:{id:t.id,client:t.client,version:t.version??"",cacheKey:t.cacheKey??null}}}}n(Yn,"serializableConfig");async function pr(e,t,o,r=G({extensions:[]}),a,s="build"){let l=new Map;await O(o.pages,pe,async u=>{let b=W(u.relativePath)?await Mo(Ce(u.body).imports,u.sourcePath,e):[],w=await O(b,pe,async P=>({path:Re(e,P),fingerprint:B(await Le(P))}));for(let P of u.demos){let y=a?.demos[P.id];if(!y)continue;let C=y.dependencyPaths?.length?y.dependencyPaths:[y.modulePath];w.push(...await O(C,pe,async m=>({path:Re(e,m),fingerprint:B(await Le(m))})))}w.length!==0&&l.set(fe(u),[...new Map(w.map(P=>[P.path,P])).values()].sort((P,y)=>P.path.localeCompare(y.path)))});let i=new Set([...l.values()].flat().map(u=>he(e,u.path))),d=G(Yn(t)),c=G({canofoldVersion:j,runtimeFingerprint:await Wn(),configFingerprint:d,benchmarkReport:process.env.CANOFOLD_BENCHMARK_REPORT==="1",extensionFingerprint:r,math:o.pages.some(u=>Kn(u.body,t.markdown.plugins,W(u.relativePath)?"mdx":"markdown").math),playground:o.pages.some(u=>u.frontmatter.layout==="playground"),support:await Vn(e,t,i),demoDelivery:a?s:null,demoRuntime:a?{clientUrl:a.clientUrl,styleUrls:a.styleUrls??[],outputPaths:a.outputPaths??[]}:null,demoEngineDependencies:await mr(a?.dependencyPaths??[])}),p=Object.fromEntries(o.pages.map(u=>[fe(u),{fingerprint:G({page:Jn(u),localComponents:l.get(fe(u))??[],layout:Xn(o,u)}),outputPath:u.outputPath,markdownOutputPath:u.markdownOutputPath,assetOutputPaths:[...ue([u])].sort()}])),f=G({sharedFingerprint:c,pages:p});return{schemaVersion:3,canofoldVersion:j,buildFingerprint:f,sharedFingerprint:c,pages:p,outputs:{}}}n(pr,"createBuildManifest");function is(e,t){if(!ns(e))throw new Error(`Invalid Canofold version: ${e}`);if(!ss(t))throw new Error(`Invalid requiredVersion range: ${t}`);return as(e,t)}n(is,"versionSatisfies");function ls(e){if(e.requiredVersion&&!is(j,e.requiredVersion))throw new Error(`Canofold ${j} does not satisfy requiredVersion ${e.requiredVersion}`)}n(ls,"assertRequiredVersion");async function fr({cwd:e,config:t,graph:o,pages:r,previousPages:a,renderer:s,writeSharedAssets:l,extensions:i,demoManifest:d}){await er({cwd:e,config:t,graph:o,pages:r,previousPages:a,renderer:s,writeSharedAssets:l,demoManifest:d}),await Ct(e,t,o),await or(e,t,o),await tr(e,t),await Ut(e,t,o),await St(e,t,o),await i.generate($(e,t.outputDir),o.pages),process.env.CANOFOLD_BENCHMARK_REPORT==="1"&&await es(mt($(e,t.outputDir),".benchmark.json"),JSON.stringify({maxRssBytes:process.resourceUsage().maxRSS*1024}))}n(fr,"writeBuildOutputs");function gr(e){return mt(ut(e),`.${hr(e)}.backup`)}n(gr,"outputBackupRoot");async function cs(e){let t=gr(e);await Z(t)&&(await Z(e)?await ge(t,{recursive:!0,force:!0}):await Te(t,e))}n(cs,"recoverInterruptedOutputReplacement");async function ds(e,t){let o=gr(e),r=await Z(e);try{r&&await Te(e,o),await Te(t,e)}catch(a){throw r&&await Z(o)&&(await ge(e,{recursive:!0,force:!0}),await Te(o,e)),a}await ge(o,{recursive:!0,force:!0})}n(ds,"replaceOutputDirectory");async function us(e,t,o,r){let a=$(e,t.outputDir),s=new Set(r.flatMap(l=>[l.outputPath,l.markdownOutputPath]).map(F));await Promise.all(o.flatMap(l=>[l.outputPath,l.markdownOutputPath].filter(i=>!s.has(F(i))).map(i=>ge(R(a,i,`removed page output ${i}`),{force:!0}))))}n(us,"removeDeletedPageOutputs");async function ms(e,t,o,r,a){await cs(r);let s=await $t(e.cwd,At(e.cwd),o.extensions),l=await Pt(e.cwd,o,s),i=await be({cwd:e.cwd,config:o,graph:l,mode:e.demoMode==="dev"?"dev":"analyze"}),d=await pr(e.cwd,o,l,s.fingerprint,i,e.demoMode==="dev"?"dev":"build"),c=e.noCache?void 0:await Lt(t),p=await Z(r),f=p&&c?await lr(r,c.outputs):p,u=rr({current:d,previous:c,outputExists:p,outputValid:f,forceClean:e.forceClean||e.noCache}),b=e.renderer??rs();if(u.mode==="cached")return oe(`Built ${o.outputDir} (cache hit)`),{config:o,graph:l,incremental:!1,cached:!0,mode:u.mode,changedPages:[],partialReload:!1,reason:u.reason,...i?{demoManifest:i}:{}};let w=new Map(l.pages.map(x=>[fe(x),x])),P=u.changedPageKeys.flatMap(x=>{let M=w.get(x);return M?[M]:[]}),y=mt(ut(r),`.${hr(r)}.tmp-${Qn()}`),C={...o,outputDir:ts(os(e.cwd),y)};await Zn(ut(y),{recursive:!0});try{let x;if(u.mode==="incremental"){await cr(r,y,c?.outputs??{}),x=e.demoMode==="dev"?i:await be({cwd:e.cwd,config:C,graph:l,mode:"build"}),await fr({cwd:e.cwd,config:C,graph:l,pages:P,previousPages:c?Object.values(c.pages):[],renderer:b,writeSharedAssets:!1,extensions:s,demoManifest:x});let M=u.removedPageKeys.flatMap(E=>{let Y=c?.pages[E];return Y?[Y]:[]});await us(e.cwd,C,M,Object.values(d.pages))}else x=e.demoMode==="dev"?i:await be({cwd:e.cwd,config:C,graph:l,mode:"build"}),b.clear(),await fr({cwd:e.cwd,config:C,graph:l,pages:l.pages,renderer:b,writeSharedAssets:!0,extensions:s,demoManifest:x});await a(),await ds(r,y)}finally{await ge(y,{recursive:!0,force:!0})}let m={...d,outputs:await ir(r)};return await a(),await Rt(t,m),oe(`Built ${o.outputDir} (${u.mode}: ${u.reason})`),{config:o,graph:l,incremental:u.mode==="incremental",cached:!1,mode:u.mode,changedPages:[...new Set(P.map(x=>x.sourceRelativePath))],partialReload:u.mode==="incremental"&&u.changedPageKeys.length===1&&u.removedPageKeys.length===0&&c?.pages[u.changedPageKeys[0]??""]?.outputPath===d.pages[u.changedPageKeys[0]??""]?.outputPath,reason:u.reason,...i?{demoManifest:i}:{}}}n(ms,"runBuildLocked");async function od(e){let t=Nt(e.cwd);await yt(e.cwd,t,"build cache");let o=await kt(e.cwd);ls(o);let r=await Et(e.cwd,o,t);return Tt(t,a=>ms(e,t,o,r,a))}n(od,"runBuild");export{is as a,od as b};
671
- //# sourceMappingURL=chunk-OKX7SQKX.js.map
672
+ `)}n(or,"writeSitemap");import{createMarkdownRenderer as rs}from"@canofold/markdown/server";import{satisfies as as,valid as ns,validRange as ss}from"semver";function rr({current:e,previous:t,outputExists:o,outputValid:r=o,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(!o)return{mode:"clean",changedPageKeys:Object.keys(e.pages),removedPageKeys:Object.keys(t.pages).filter(i=>!e.pages[i]),reason:"missing-output"};if(!r)return{mode:"clean",changedPageKeys:Object.keys(e.pages),removedPageKeys:Object.keys(t.pages).filter(i=>!e.pages[i]),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(i=>!e.pages[i]),reason:"shared-inputs-changed"};let s=Object.entries(e.pages).filter(([i,c])=>t.pages[i]?.fingerprint!==c.fingerprint).map(([i])=>i),l=Object.keys(t.pages).filter(i=>!e.pages[i]);return s.length===0&&l.length===0?{mode:"clean",changedPageKeys:Object.keys(e.pages),removedPageKeys:[],reason:"unclassified-inputs-changed"}:{mode:"incremental",changedPageKeys:s,removedPageKeys:l,reason:"page-inputs-changed"}}n(rr,"planBuild");import{copyFile as Fn,mkdir as _n,readFile as ar,readdir as Bn,stat as Un}from"fs/promises";import{dirname as qn,relative as Hn,resolve as it}from"path";var lt=16;function nr(e,t){return Hn(it(e),it(t)).replace(/\\/g,"/")}n(nr,"portablePath");async function sr(e){async function t(o){let r=await Bn(o,{withFileTypes:!0});return(await Promise.all(r.map(async a=>{let s=it(o,a.name);if(a.isSymbolicLink())throw new Error(`Generated output must not be a symbolic link: ${s}`);return a.isDirectory()?t(s):a.isFile()?[s]:[]}))).flat()}return n(t,"walk"),t(e)}n(sr,"outputFilesUnder");async function ir(e){let t=(await sr(e)).sort(),o=await O(t,lt,async r=>{let a=await ar(r);return[nr(e,r),{fingerprint:B(a),size:a.byteLength}]});return Object.fromEntries(o)}n(ir,"captureBuildOutputs");async function lr(e,t){try{let o=Object.keys(t).sort(),r=(await sr(e)).map(s=>nr(e,s)).sort();return r.length!==o.length||r.some((s,l)=>s!==o[l])?!1:(await O(Object.entries(t),lt,async([s,l])=>{let i=R(e,s,`cached output ${s}`),c=await Un(i);return!c.isFile()||c.size!==l.size?!1:B(await ar(i))===l.fingerprint})).every(Boolean)}catch(o){if(o.code==="ENOENT")return!1;throw o}}n(lr,"verifyBuildOutputs");async function cr(e,t,o){await O(Object.keys(o),lt,async r=>{let a=R(e,r,`cached output ${r}`),s=R(t,r,`staged output ${r}`);await _n(qn(s),{recursive:!0}),await Fn(a,s)})}n(cr,"copyBuildOutputs");import{readFile as Le,readdir as zn}from"fs/promises";import{dirname as dr,join as te,relative as Gn,resolve as he}from"path";import{fileURLToPath as ct}from"url";import{detectMarkdownAssets as Kn}from"@canofold/markdown/server/analyze";var pe=16;function Re(e,t){return Gn(he(e),he(t)).replace(/\\/g,"/")}n(Re,"portablePath");function fe(e){return JSON.stringify([e.version,e.sourceRelativePath])}n(fe,"buildPageKey");async function ur(e){async function t(o){let r=await zn(o,{withFileTypes:!0});return(await Promise.all(r.map(async a=>{let s=te(o,a.name);if(a.isDirectory())return t(s);if(a.isSymbolicLink())throw new Error(`Documentation support files must not use symbolic links: ${Re(e,s)}`);return!a.isFile()||/\.mdx?$/i.test(a.name)?[]:[s]}))).flat()}return n(t,"walk"),t(e)}n(ur,"supportFilesUnder");async function mr(e){let t=[...new Set(e.map(r=>he(r)))].sort(),o=(await O(t,pe,async r=>{try{return{path:r,fingerprint:B(await Le(r))}}catch(a){if(!a||typeof a!="object"||!("code"in a)||a.code!=="ENOENT")throw a;return null}})).filter(r=>r!==null);return G(o)}n(mr,"fingerprintExistingFiles");async function dt(e){try{return await ur(e)}catch(t){if(t&&typeof t=="object"&&"code"in t&&t.code==="ENOENT")return[];throw t}}n(dt,"filesUnderIfPresent");async function Wn(){let e=dr(ct(import.meta.url)),t=[];try{let o=ct(import.meta.resolve("@canofold/markdown/theme")),r=dr(o);t.push(te(r,"tokens.css"),te(r,"styles.css"),te(r,"theme.css"),te(r,"base.css"),o)}catch{}return mr([...await dt(e),...await dt(te(e,"render")),...await dt(ct(new URL("../render",import.meta.url))),...t])}n(Wn,"runtimeFingerprint");async function Vn(e,t,o){let r=[...new Set(t.versions.items.map(i=>i.docsDir))].map(i=>V(e,i,"docsDir")),a=(await Promise.all(r.map(i=>ur(i)))).flat();for(let i of t.styles)a.push(V(e,i,"styles"));let s=[...new Set(a.map(i=>he(i)))].filter(i=>!o.has(i)).sort(),l=await O(s,pe,async i=>({path:Re(e,i),fingerprint:B(await Le(i))}));return G(l)}n(Vn,"supportFingerprint");function Jn(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,demos:e.demos,lastUpdated:e.lastUpdated,...e.previous?{previous:e.previous}:{},...e.next?{next:e.next}:{},frontmatter:e.frontmatter}}n(Jn,"serializablePage");function Xn(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}}n(Xn,"pageLayoutContext");function Yn(e){let t=e.search.provider;return{...e,demos:{setup:e.demos.setup??null,engine:e.demos.engine?{id:e.demos.engine.id,version:e.demos.engine.version??"",cacheKey:e.demos.engine.cacheKey??null}:null},markdown:{...e.markdown,plugins:e.markdown.plugins.map(o=>({name:o.name,version:o.version??"",cacheKey:o.cacheKey??null}))},search:{...e.search,provider:typeof t=="string"?t:{id:t.id,client:t.client,version:t.version??"",cacheKey:t.cacheKey??null}}}}n(Yn,"serializableConfig");async function pr(e,t,o,r=G({extensions:[]}),a,s="build"){let l=new Map;await O(o.pages,pe,async u=>{let w=W(u.relativePath)?await Mo(Ce(u.body).imports,u.sourcePath,e):[],y=await O(w,pe,async S=>({path:Re(e,S),fingerprint:B(await Le(S))}));for(let S of u.demos){let x=a?.demos[S.id];if(!x)continue;let b=x.dependencyPaths?.length?x.dependencyPaths:[x.modulePath];y.push(...await O(b,pe,async m=>({path:Re(e,m),fingerprint:B(await Le(m))})))}y.length!==0&&l.set(fe(u),[...new Map(y.map(S=>[S.path,S])).values()].sort((S,x)=>S.path.localeCompare(x.path)))});let i=new Set([...l.values()].flat().map(u=>he(e,u.path))),c=G(Yn(t)),d=G({canofoldVersion:j,runtimeFingerprint:await Wn(),configFingerprint:c,benchmarkReport:process.env.CANOFOLD_BENCHMARK_REPORT==="1",extensionFingerprint:r,math:o.pages.some(u=>Kn(u.body,t.markdown.plugins,W(u.relativePath)?"mdx":"markdown").math),playground:o.pages.some(u=>u.frontmatter.layout==="playground"),support:await Vn(e,t,i),demoDelivery:a?s:null,demoRuntime:a?{clientUrl:a.clientUrl,markdownClientUrl:a.markdownClientUrl??null,styleUrls:a.styleUrls??[],outputPaths:a.outputPaths??[]}:null,demoEngineDependencies:await mr(a?.dependencyPaths??[])}),p=Object.fromEntries(o.pages.map(u=>[fe(u),{fingerprint:G({page:Jn(u),localComponents:l.get(fe(u))??[],layout:Xn(o,u)}),outputPath:u.outputPath,markdownOutputPath:u.markdownOutputPath,assetOutputPaths:[...ue([u])].sort()}])),f=G({sharedFingerprint:d,pages:p});return{schemaVersion:3,canofoldVersion:j,buildFingerprint:f,sharedFingerprint:d,pages:p,outputs:{}}}n(pr,"createBuildManifest");function is(e,t){if(!ns(e))throw new Error(`Invalid Canofold version: ${e}`);if(!ss(t))throw new Error(`Invalid requiredVersion range: ${t}`);return as(e,t)}n(is,"versionSatisfies");function ls(e){if(e.requiredVersion&&!is(j,e.requiredVersion))throw new Error(`Canofold ${j} does not satisfy requiredVersion ${e.requiredVersion}`)}n(ls,"assertRequiredVersion");async function fr({cwd:e,config:t,graph:o,pages:r,previousPages:a,renderer:s,writeSharedAssets:l,extensions:i,demoManifest:c}){await er({cwd:e,config:t,graph:o,pages:r,previousPages:a,renderer:s,writeSharedAssets:l,demoManifest:c}),await Ct(e,t,o),await or(e,t,o),await tr(e,t),await Ut(e,t,o),await St(e,t,o),await i.generate($(e,t.outputDir),o.pages),process.env.CANOFOLD_BENCHMARK_REPORT==="1"&&await es(mt($(e,t.outputDir),".benchmark.json"),JSON.stringify({maxRssBytes:process.resourceUsage().maxRSS*1024}))}n(fr,"writeBuildOutputs");function gr(e){return mt(ut(e),`.${hr(e)}.backup`)}n(gr,"outputBackupRoot");async function cs(e){let t=gr(e);await Z(t)&&(await Z(e)?await ge(t,{recursive:!0,force:!0}):await Te(t,e))}n(cs,"recoverInterruptedOutputReplacement");async function ds(e,t){let o=gr(e),r=await Z(e);try{r&&await Te(e,o),await Te(t,e)}catch(a){throw r&&await Z(o)&&(await ge(e,{recursive:!0,force:!0}),await Te(o,e)),a}await ge(o,{recursive:!0,force:!0})}n(ds,"replaceOutputDirectory");async function us(e,t,o,r){let a=$(e,t.outputDir),s=new Set(r.flatMap(l=>[l.outputPath,l.markdownOutputPath]).map(F));await Promise.all(o.flatMap(l=>[l.outputPath,l.markdownOutputPath].filter(i=>!s.has(F(i))).map(i=>ge(R(a,i,`removed page output ${i}`),{force:!0}))))}n(us,"removeDeletedPageOutputs");async function ms(e,t,o,r,a){await cs(r);let s=await $t(e.cwd,At(e.cwd),o.extensions),l=await Pt(e.cwd,o,s),i=await be({cwd:e.cwd,config:o,graph:l,mode:e.demoMode==="dev"?"dev":"analyze",server:e.demoServer}),c=await pr(e.cwd,o,l,s.fingerprint,i,e.demoMode==="dev"?"dev":"build"),d=e.noCache?void 0:await Lt(t),p=await Z(r),f=p&&d?await lr(r,d.outputs):p,u=rr({current:c,previous:d,outputExists:p,outputValid:f,forceClean:e.forceClean||e.noCache}),w=e.renderer??rs();if(u.mode==="cached")return oe(`Built ${o.outputDir} (cache hit)`),{config:o,graph:l,incremental:!1,cached:!0,mode:u.mode,changedPages:[],partialReload:!1,reason:u.reason,...i?{demoManifest:i}:{}};let y=new Map(l.pages.map(C=>[fe(C),C])),S=u.changedPageKeys.flatMap(C=>{let M=y.get(C);return M?[M]:[]}),x=mt(ut(r),`.${hr(r)}.tmp-${Qn()}`),b={...o,outputDir:ts(os(e.cwd),x)};await Zn(ut(x),{recursive:!0});try{let C;if(u.mode==="incremental"){await cr(r,x,d?.outputs??{}),C=e.demoMode==="dev"?i:await be({cwd:e.cwd,config:b,graph:l,mode:"build",server:e.demoServer}),await fr({cwd:e.cwd,config:b,graph:l,pages:S,previousPages:d?Object.values(d.pages):[],renderer:w,writeSharedAssets:!1,extensions:s,demoManifest:C});let M=u.removedPageKeys.flatMap(E=>{let Y=d?.pages[E];return Y?[Y]:[]});await us(e.cwd,b,M,Object.values(c.pages))}else C=e.demoMode==="dev"?i:await be({cwd:e.cwd,config:b,graph:l,mode:"build",server:e.demoServer}),w.clear(),await fr({cwd:e.cwd,config:b,graph:l,pages:l.pages,renderer:w,writeSharedAssets:!0,extensions:s,demoManifest:C});await a(),await ds(r,x)}finally{await ge(x,{recursive:!0,force:!0})}let m={...c,outputs:await ir(r)};return await a(),await Rt(t,m),oe(`Built ${o.outputDir} (${u.mode}: ${u.reason})`),{config:o,graph:l,incremental:u.mode==="incremental",cached:!1,mode:u.mode,changedPages:[...new Set(S.map(C=>C.sourceRelativePath))],partialReload:u.mode==="incremental"&&u.changedPageKeys.length===1&&u.removedPageKeys.length===0&&d?.pages[u.changedPageKeys[0]??""]?.outputPath===c.pages[u.changedPageKeys[0]??""]?.outputPath,reason:u.reason,...i?{demoManifest:i}:{}}}n(ms,"runBuildLocked");async function od(e){let t=Nt(e.cwd);await yt(e.cwd,t,"build cache");let o=await kt(e.cwd);ls(o);let r=await Et(e.cwd,o,t);return Tt(t,a=>ms(e,t,o,r,a))}n(od,"runBuild");export{is as a,od as b};
673
+ //# sourceMappingURL=chunk-LGMGXZ4I.js.map