@stacksjs/stx 0.2.48 → 0.2.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (5) hide show
  1. package/dist/cli.js +160 -160
  2. package/dist/index.js +109 -109
  3. package/dist/pwa.js +150 -150
  4. package/dist/ssg.js +106 -106
  5. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -26,7 +26,7 @@ Check your site ID or create a new site at https://app.netlify.com`,"SITE_NOT_FO
26
26
  `),J&&!J.endsWith(`
27
27
  `))J+=`
28
28
  `}J+=`NETLIFY_SITE_ID=${$.siteId}
29
- `,await Bun.write(X,J)}return{configPath:Y,siteId:$.siteId}}function VH($){let Z=process.platform,Y=Z==="darwin"?"open":Z==="win32"?"start":"xdg-open";Bun.spawn([Y,$],{stdio:["ignore","ignore","ignore"]})}var X$;var AZ=D(()=>{FZ();FZ();X$=class X$ extends Error{code;constructor($,Z){super($);this.name="DeployError",this.code=Z}}});import NH from"fs";import A6 from"path";import AH from"crypto";async function w6(){if(wQ)return wZ;wQ=!0;try{let $=await import("sharp");return wZ=$.default||$,wZ}catch{return null}}async function h1(){return await w6()!==null}async function d1($,Z={}){let{widths:Y=z1,formats:X=q1,quality:J=j1,fit:Q="cover",placeholder:G="none",outputDir:K=".stx/images",baseUrl:W="/images"}=Z,_,U;if(typeof $==="string"){if(U=$,!await Bun.file($).exists())throw new E7(`Image not found: ${$}`,"NOT_FOUND");_=await Bun.file($).arrayBuffer().then((A)=>Buffer.from(A))}else U="buffer-input",_=$;let B=AH.createHash("sha256").update(_).digest("hex").slice(0,12),z=await R6(_),{width:q,height:j}=z,H=q/j;await NH.promises.mkdir(K,{recursive:!0});let O=[],F=A6.basename(U,A6.extname(U)),L=Y.filter((A)=>A<=q);if(!L.includes(q)&&q<=Math.max(...Y))L.push(q);L.sort((A,N)=>A-N);for(let A of L){let N=Math.round(A/H);for(let w of X){let M=`${F}-${A}w-${B}.${w}`,T=A6.join(K,M),I=`${W}/${M}`,E=await MH(_,{width:A,height:N,format:w,quality:J,fit:Q});await Bun.write(T,E),O.push({path:T,url:I,width:A,height:N,format:w,size:E.length})}}let V;if(G!=="none")V=await TH(_,G);return{src:U,variants:O,placeholder:V,width:q,height:j,aspectRatio:H,hash:B}}async function R6($){let Z=typeof $==="string"?Buffer.from(await Bun.file($).arrayBuffer()):$,Y=await w6();if(Y){let J=await Y(Z).metadata();return{width:J.width||0,height:J.height||0,format:J.format||"unknown",hasAlpha:J.hasAlpha}}return RH(Z)}function RH($){if($[0]===137&&$[1]===80&&$[2]===78&&$[3]===71){let Z=$.readUInt32BE(16),Y=$.readUInt32BE(20);return{width:Z,height:Y,format:"png",hasAlpha:!0}}if($[0]===255&&$[1]===216){let Z=2;while(Z<$.length){if($[Z]!==255)break;let Y=$[Z+1];if(Y>=192&&Y<=207&&Y!==196&&Y!==200&&Y!==204){let J=$.readUInt16BE(Z+5);return{width:$.readUInt16BE(Z+7),height:J,format:"jpeg",hasAlpha:!1}}let X=$.readUInt16BE(Z+2);Z+=2+X}}if($.toString("utf8",0,4)==="RIFF"&&$.toString("utf8",8,12)==="WEBP"){let Z=$.toString("utf8",12,16);if(Z==="VP8 "){let Y=$.readUInt16LE(26)&16383,X=$.readUInt16LE(28)&16383;return{width:Y,height:X,format:"webp",hasAlpha:!1}}if(Z==="VP8L"){let Y=$.readUInt32LE(21),X=(Y&16383)+1,J=(Y>>14&16383)+1;return{width:X,height:J,format:"webp",hasAlpha:!0}}}if($.toString("utf8",0,3)==="GIF"){let Z=$.readUInt16LE(6),Y=$.readUInt16LE(8);return{width:Z,height:Y,format:"gif",hasAlpha:!0}}throw new E7("Unable to parse image dimensions","PARSE_ERROR")}async function MH($,Z){let Y=await w6();if(Y){let X=Y($).resize(Z.width,Z.height,{fit:Z.fit});switch(Z.format){case"webp":X=X.webp({quality:Z.quality});break;case"avif":X=X.avif({quality:Z.quality});break;case"jpeg":X=X.jpeg({quality:Z.quality});break;case"png":X=X.png({quality:Z.quality});break}return X.toBuffer()}return console.warn("sharp not available, returning original image without optimization"),$}async function TH($,Z){let Y=await w6();if(Z==="blur"&&Y){let J=(await Y($).resize(20).blur(10).toBuffer()).toString("base64"),Q=await R6($);return`data:${RQ[Q.format]||"image/jpeg"};base64,${J}`}if(Y){let{dominant:X}=await Y($).resize(1,1).toBuffer().then(async(J)=>{let Q=await Y(J).metadata();return{dominant:{r:128,g:128,b:128}}}).catch(()=>({dominant:{r:128,g:128,b:128}}));return`rgb(${X.r}, ${X.g}, ${X.b})`}return"rgb(128, 128, 128)"}function K5($,Z){return(Z?$.filter((X)=>X.format===Z):$).sort((X,J)=>X.width-J.width).map((X)=>`${X.url} ${X.width}w`).join(", ")}function R7($){if(!$||Object.keys($).length===0)return"100vw";return Object.entries($).sort((Y,X)=>{let J=Number.parseInt(Y[0].replace(/\D/g,""))||0;return(Number.parseInt(X[0].replace(/\D/g,""))||0)-J}).map(([Y,X])=>`(max-width: ${Y}) ${X}`).join(", ")+", 100vw"}function M7($){let Z=$.filter((X)=>X.format==="jpeg");if(Z.length===0)return $[Math.floor($.length/2)];let Y=Z.sort((X,J)=>X.width-J.width);return Y[Math.floor(Y.length/2)]}function T7($){let Z=new Map;for(let Y of $){let X=Z.get(Y.format)||[];X.push(Y),Z.set(Y.format,X)}return Z}function M6($){let Z=A6.extname($).toLowerCase();return wH.includes(Z)}function u1($){return RQ[$]||"application/octet-stream"}function RZ($){return $.reduce((Z,Y)=>Z+Y.size,0)}function MZ($){if($<1024)return`${$} B`;if($<1048576)return`${($/1024).toFixed(1)} KB`;return`${($/1048576).toFixed(2)} MB`}var z1,q1,j1=80,wH,RQ,wZ=null,wQ=!1,E7;var I7=D(()=>{z1=[320,640,768,1024,1280,1536,1920],q1=["webp","jpeg"],wH=[".jpg",".jpeg",".png",".webp",".avif",".gif",".svg"],RQ={webp:"image/webp",avif:"image/avif",jpeg:"image/jpeg",png:"image/png"};E7=class E7 extends Error{code;constructor($,Z){super($);this.name="ImageProcessingError",this.code=Z}}});function MQ($,Z={}){let{src:Y,alt:X,width:J,height:Q,sizes:G="100vw",loading:K="lazy",priority:W=!1,quality:_=j1,placeholder:U="none",formats:B=q1,widths:z=z1,decoding:q="async",fetchpriority:j,objectFit:H,objectPosition:O}=$,F=$.class,L=$.style,{processedImage:V,variants:A,optimize:N=!0,isDev:w=!1}=Z;if(A&&A.length>0)return EH($,A,V);if(w||!N)return IH($);return DH($)}function EH($,Z,Y){let{src:X,alt:J,width:Q,height:G,sizes:K="100vw",loading:W="lazy",priority:_=!1,decoding:U="async",fetchpriority:B,objectFit:z,objectPosition:q,placeholder:j="none"}=$,H=$.class,O=$.style,F=T7(Z),L=M7(Z),V=typeof K==="object"?R7(K):K,A=Y?Y.aspectRatio:Q&&G?Number(Q)/Number(G):void 0,N=[];if(A)N.push(`aspect-ratio: ${A}`);if(z)N.push(`object-fit: ${z}`);if(q)N.push(`object-position: ${q}`);if(O)N.push(O);let w=N.length>0?` style="${N.join("; ")}"`:"",M=H?` class="${H}"`:"",T=_?"":` loading="${W}"`,I=` decoding="${U}"`,E=B?` fetchpriority="${B}"`:_?' fetchpriority="high"':"",S=["avif","webp","jpeg","png"],k=[];for(let p of S){let c=F.get(p);if(c&&c.length>0){let J0=K5(c),_0=u1(p);k.push(` <source type="${_0}" srcset="${J0}" sizes="${V}" />`)}}let b="",P="",x;if(j!=="none"&&Y?.placeholder){let p=`img-${Math.random().toString(36).slice(2,8)}`;if(b=`<div class="stx-image-wrapper" id="${p}">`,P="</div>",j==="blur")x=`
29
+ `,await Bun.write(X,J)}return{configPath:Y,siteId:$.siteId}}function VH($){let Z=process.platform,Y=Z==="darwin"?"open":Z==="win32"?"start":"xdg-open";Bun.spawn([Y,$],{stdio:["ignore","ignore","ignore"]})}var X$;var AZ=D(()=>{FZ();FZ();X$=class X$ extends Error{code;constructor($,Z){super($);this.name="DeployError",this.code=Z}}});import NH from"fs";import A6 from"path";import AH from"crypto";async function w6(){if(wQ)return wZ;wQ=!0;try{let $=await import("sharp");return wZ=$.default||$,wZ}catch{return null}}async function h1(){return await w6()!==null}async function d1($,Z={}){let{widths:Y=z1,formats:X=q1,quality:J=j1,fit:Q="cover",placeholder:G="none",outputDir:K=".stx/images",baseUrl:W="/images"}=Z,_,U;if(typeof $==="string"){if(U=$,!await Bun.file($).exists())throw new E7(`Image not found: ${$}`,"NOT_FOUND");_=await Bun.file($).arrayBuffer().then((A)=>Buffer.from(A))}else U="buffer-input",_=$;let B=AH.createHash("sha256").update(_).digest("hex").slice(0,12),z=await R6(_),{width:q,height:j}=z,H=q/j;await NH.promises.mkdir(K,{recursive:!0});let O=[],F=A6.basename(U,A6.extname(U)),L=Y.filter((A)=>A<=q);if(!L.includes(q)&&q<=Math.max(...Y))L.push(q);L.sort((A,N)=>A-N);for(let A of L){let N=Math.round(A/H);for(let w of X){let M=`${F}-${A}w-${B}.${w}`,T=A6.join(K,M),E=`${W}/${M}`,I=await MH(_,{width:A,height:N,format:w,quality:J,fit:Q});await Bun.write(T,I),O.push({path:T,url:E,width:A,height:N,format:w,size:I.length})}}let V;if(G!=="none")V=await TH(_,G);return{src:U,variants:O,placeholder:V,width:q,height:j,aspectRatio:H,hash:B}}async function R6($){let Z=typeof $==="string"?Buffer.from(await Bun.file($).arrayBuffer()):$,Y=await w6();if(Y){let J=await Y(Z).metadata();return{width:J.width||0,height:J.height||0,format:J.format||"unknown",hasAlpha:J.hasAlpha}}return RH(Z)}function RH($){if($[0]===137&&$[1]===80&&$[2]===78&&$[3]===71){let Z=$.readUInt32BE(16),Y=$.readUInt32BE(20);return{width:Z,height:Y,format:"png",hasAlpha:!0}}if($[0]===255&&$[1]===216){let Z=2;while(Z<$.length){if($[Z]!==255)break;let Y=$[Z+1];if(Y>=192&&Y<=207&&Y!==196&&Y!==200&&Y!==204){let J=$.readUInt16BE(Z+5);return{width:$.readUInt16BE(Z+7),height:J,format:"jpeg",hasAlpha:!1}}let X=$.readUInt16BE(Z+2);Z+=2+X}}if($.toString("utf8",0,4)==="RIFF"&&$.toString("utf8",8,12)==="WEBP"){let Z=$.toString("utf8",12,16);if(Z==="VP8 "){let Y=$.readUInt16LE(26)&16383,X=$.readUInt16LE(28)&16383;return{width:Y,height:X,format:"webp",hasAlpha:!1}}if(Z==="VP8L"){let Y=$.readUInt32LE(21),X=(Y&16383)+1,J=(Y>>14&16383)+1;return{width:X,height:J,format:"webp",hasAlpha:!0}}}if($.toString("utf8",0,3)==="GIF"){let Z=$.readUInt16LE(6),Y=$.readUInt16LE(8);return{width:Z,height:Y,format:"gif",hasAlpha:!0}}throw new E7("Unable to parse image dimensions","PARSE_ERROR")}async function MH($,Z){let Y=await w6();if(Y){let X=Y($).resize(Z.width,Z.height,{fit:Z.fit});switch(Z.format){case"webp":X=X.webp({quality:Z.quality});break;case"avif":X=X.avif({quality:Z.quality});break;case"jpeg":X=X.jpeg({quality:Z.quality});break;case"png":X=X.png({quality:Z.quality});break}return X.toBuffer()}return console.warn("sharp not available, returning original image without optimization"),$}async function TH($,Z){let Y=await w6();if(Z==="blur"&&Y){let J=(await Y($).resize(20).blur(10).toBuffer()).toString("base64"),Q=await R6($);return`data:${RQ[Q.format]||"image/jpeg"};base64,${J}`}if(Y){let{dominant:X}=await Y($).resize(1,1).toBuffer().then(async(J)=>{let Q=await Y(J).metadata();return{dominant:{r:128,g:128,b:128}}}).catch(()=>({dominant:{r:128,g:128,b:128}}));return`rgb(${X.r}, ${X.g}, ${X.b})`}return"rgb(128, 128, 128)"}function K5($,Z){return(Z?$.filter((X)=>X.format===Z):$).sort((X,J)=>X.width-J.width).map((X)=>`${X.url} ${X.width}w`).join(", ")}function R7($){if(!$||Object.keys($).length===0)return"100vw";return Object.entries($).sort((Y,X)=>{let J=Number.parseInt(Y[0].replace(/\D/g,""))||0;return(Number.parseInt(X[0].replace(/\D/g,""))||0)-J}).map(([Y,X])=>`(max-width: ${Y}) ${X}`).join(", ")+", 100vw"}function M7($){let Z=$.filter((X)=>X.format==="jpeg");if(Z.length===0)return $[Math.floor($.length/2)];let Y=Z.sort((X,J)=>X.width-J.width);return Y[Math.floor(Y.length/2)]}function T7($){let Z=new Map;for(let Y of $){let X=Z.get(Y.format)||[];X.push(Y),Z.set(Y.format,X)}return Z}function M6($){let Z=A6.extname($).toLowerCase();return wH.includes(Z)}function u1($){return RQ[$]||"application/octet-stream"}function RZ($){return $.reduce((Z,Y)=>Z+Y.size,0)}function MZ($){if($<1024)return`${$} B`;if($<1048576)return`${($/1024).toFixed(1)} KB`;return`${($/1048576).toFixed(2)} MB`}var z1,q1,j1=80,wH,RQ,wZ=null,wQ=!1,E7;var I7=D(()=>{z1=[320,640,768,1024,1280,1536,1920],q1=["webp","jpeg"],wH=[".jpg",".jpeg",".png",".webp",".avif",".gif",".svg"],RQ={webp:"image/webp",avif:"image/avif",jpeg:"image/jpeg",png:"image/png"};E7=class E7 extends Error{code;constructor($,Z){super($);this.name="ImageProcessingError",this.code=Z}}});function MQ($,Z={}){let{src:Y,alt:X,width:J,height:Q,sizes:G="100vw",loading:K="lazy",priority:W=!1,quality:_=j1,placeholder:U="none",formats:B=q1,widths:z=z1,decoding:q="async",fetchpriority:j,objectFit:H,objectPosition:O}=$,F=$.class,L=$.style,{processedImage:V,variants:A,optimize:N=!0,isDev:w=!1}=Z;if(A&&A.length>0)return EH($,A,V);if(w||!N)return IH($);return DH($)}function EH($,Z,Y){let{src:X,alt:J,width:Q,height:G,sizes:K="100vw",loading:W="lazy",priority:_=!1,decoding:U="async",fetchpriority:B,objectFit:z,objectPosition:q,placeholder:j="none"}=$,H=$.class,O=$.style,F=T7(Z),L=M7(Z),V=typeof K==="object"?R7(K):K,A=Y?Y.aspectRatio:Q&&G?Number(Q)/Number(G):void 0,N=[];if(A)N.push(`aspect-ratio: ${A}`);if(z)N.push(`object-fit: ${z}`);if(q)N.push(`object-position: ${q}`);if(O)N.push(O);let w=N.length>0?` style="${N.join("; ")}"`:"",M=H?` class="${H}"`:"",T=_?"":` loading="${W}"`,E=` decoding="${U}"`,I=B?` fetchpriority="${B}"`:_?' fetchpriority="high"':"",S=["avif","webp","jpeg","png"],k=[];for(let p of S){let c=F.get(p);if(c&&c.length>0){let J0=K5(c),_0=u1(p);k.push(` <source type="${_0}" srcset="${J0}" sizes="${V}" />`)}}let P="",f="",b;if(j!=="none"&&Y?.placeholder){let p=`img-${Math.random().toString(36).slice(2,8)}`;if(P=`<div class="stx-image-wrapper" id="${p}">`,f="</div>",j==="blur")b=`
30
30
  #${p} {
31
31
  position: relative;
32
32
  background-image: url('${Y.placeholder}');
@@ -39,25 +39,25 @@ Check your site ID or create a new site at https://app.netlify.com`,"SITE_NOT_FO
39
39
  #${p}.loaded img {
40
40
  opacity: 1;
41
41
  }
42
- `.trim();else if(j==="color")x=`
42
+ `.trim();else if(j==="color")b=`
43
43
  #${p} {
44
44
  background-color: ${Y.placeholder};
45
45
  }
46
- `.trim()}let C=Q?` width="${Q}"`:Y?` width="${Y.width}"`:"",f=G?` height="${G}"`:Y?` height="${Y.height}"`:"",g=`${b}<picture>
46
+ `.trim()}let C=Q?` width="${Q}"`:Y?` width="${Y.width}"`:"",x=G?` height="${G}"`:Y?` height="${Y.height}"`:"",g=`${P}<picture>
47
47
  ${k.join(`
48
48
  `)}
49
49
  <img
50
50
  src="${L?.url||X}"
51
- alt="${EZ(J)}"${C}${f}${M}${w}${T}${I}${E}
51
+ alt="${EZ(J)}"${C}${x}${M}${w}${T}${E}${I}
52
52
  />
53
- </picture>${P}`,d;if(_&&L){let p=F.get("webp"),c=p?.[Math.floor(p.length/2)]||L,J0=u1(c.format);d=`<link rel="preload" as="image" href="${c.url}" type="${J0}" />`}return{html:g,preloadLink:d,placeholderCss:x}}function IH($){let{src:Z,alt:Y,width:X,height:J,loading:Q="lazy",decoding:G="async",priority:K=!1,fetchpriority:W,objectFit:_,objectPosition:U}=$,B=$.class,z=$.style,q=[];if(_)q.push(`object-fit: ${_}`);if(U)q.push(`object-position: ${U}`);if(z)q.push(z);let j=q.length>0?` style="${q.join("; ")}"`:"",H=B?` class="${B}"`:"",O=X?` width="${X}"`:"",F=J?` height="${J}"`:"",L=K?"":` loading="${Q}"`,V=` decoding="${G}"`,A=W?` fetchpriority="${W}"`:K?' fetchpriority="high"':"";return{html:`<img src="${Z}" alt="${EZ(Y)}"${O}${F}${H}${j}${L}${V}${A} />`}}function DH($){let{src:Z,alt:Y,width:X,height:J,sizes:Q="100vw",loading:G="lazy",priority:K=!1,quality:W=j1,formats:_=q1,widths:U=z1,decoding:B="async",fetchpriority:z,objectFit:q,objectPosition:j}=$,H=$.class,O=$.style,F=[];if(q)F.push(`object-fit: ${q}`);if(j)F.push(`object-position: ${j}`);if(O)F.push(O);let L=F.length>0?` style="${F.join("; ")}"`:"",V=H?` class="${H}"`:"",A=X?` width="${X}"`:"",N=J?` height="${J}"`:"",w=K?"":` loading="${G}"`,M=` decoding="${B}"`,T=z?` fetchpriority="${z}"`:K?' fetchpriority="high"':"",I=typeof Q==="object"?R7(Q):Q,E=`
53
+ </picture>${f}`,d;if(_&&L){let p=F.get("webp"),c=p?.[Math.floor(p.length/2)]||L,J0=u1(c.format);d=`<link rel="preload" as="image" href="${c.url}" type="${J0}" />`}return{html:g,preloadLink:d,placeholderCss:b}}function IH($){let{src:Z,alt:Y,width:X,height:J,loading:Q="lazy",decoding:G="async",priority:K=!1,fetchpriority:W,objectFit:_,objectPosition:U}=$,B=$.class,z=$.style,q=[];if(_)q.push(`object-fit: ${_}`);if(U)q.push(`object-position: ${U}`);if(z)q.push(z);let j=q.length>0?` style="${q.join("; ")}"`:"",H=B?` class="${B}"`:"",O=X?` width="${X}"`:"",F=J?` height="${J}"`:"",L=K?"":` loading="${Q}"`,V=` decoding="${G}"`,A=W?` fetchpriority="${W}"`:K?' fetchpriority="high"':"";return{html:`<img src="${Z}" alt="${EZ(Y)}"${O}${F}${H}${j}${L}${V}${A} />`}}function DH($){let{src:Z,alt:Y,width:X,height:J,sizes:Q="100vw",loading:G="lazy",priority:K=!1,quality:W=j1,formats:_=q1,widths:U=z1,decoding:B="async",fetchpriority:z,objectFit:q,objectPosition:j}=$,H=$.class,O=$.style,F=[];if(q)F.push(`object-fit: ${q}`);if(j)F.push(`object-position: ${j}`);if(O)F.push(O);let L=F.length>0?` style="${F.join("; ")}"`:"",V=H?` class="${H}"`:"",A=X?` width="${X}"`:"",N=J?` height="${J}"`:"",w=K?"":` loading="${G}"`,M=` decoding="${B}"`,T=z?` fetchpriority="${z}"`:K?' fetchpriority="high"':"",E=typeof Q==="object"?R7(Q):Q,I=`
54
54
  data-stx-image
55
55
  data-src="${Z}"
56
- data-sizes="${I}"
56
+ data-sizes="${E}"
57
57
  data-quality="${W}"
58
58
  data-formats="${_.join(",")}"
59
59
  data-widths="${U.join(",")}"
60
- `.replace(/\s+/g," ").trim();return{html:`<img src="${Z}" alt="${EZ(Y)}"${A}${N}${V}${L}${w}${M}${T} ${E} />`}}function TZ($){let Z=$.match(/<Image\s+([^>]*?)\/?>/);if(!Z)return null;let Y=Z[1],X={},J=/(\w+)(?:=(?:"([^"]*)"|'([^']*)'|(\{[^}]+\})))?/g,Q;while((Q=J.exec(Y))!==null){let[,G,K,W,_]=Q,U=K??W??_??!0;switch(G){case"src":X.src=String(U);break;case"alt":X.alt=String(U);break;case"width":X.width=Number(U)||U;break;case"height":X.height=Number(U)||U;break;case"sizes":X.sizes=String(U);break;case"loading":X.loading=U;break;case"priority":X.priority=U===!0||U==="true";break;case"quality":X.quality=Number(U);break;case"placeholder":X.placeholder=U;break;case"class":X.class=String(U);break;case"style":X.style=String(U);break;case"decoding":X.decoding=U;break;case"fetchpriority":X.fetchpriority=U;break;case"objectFit":X.objectFit=U;break;case"objectPosition":X.objectPosition=String(U);break}}if(!X.src||!X.alt)return null;return X}async function TQ($,Z){let Y=/<Image\s+[^>]*?\/?>/g,X=[],J=[],Q=$,G,K=[];while((G=Y.exec($))!==null)K.push({match:G[0],index:G.index});for(let W=K.length-1;W>=0;W--){let{match:_}=K[W],U=TZ(_);if(U){let B=await Z(U);if(Q=Q.replace(_,B.html),B.preloadLink)X.push(B.preloadLink);if(B.placeholderCss)J.push(B.placeholderCss)}}return{html:Q,preloadLinks:X,styles:J}}function EZ($){return $.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}var EQ=D(()=>{I7()});function IQ($){if(T6.set($.name,$),$.client)IZ.set($.name,$.client)}function kH($){return T6.get($)}function SH(){return Array.from(T6.values())}function bH($){return IZ.delete($),T6.delete($)}function T0($){return IQ($),{name:$.name,hasEndTag:$.hasEndTag??!0,description:$.description,handler:async(Y,X,J,Q)=>{let G=yH(X,$.defaults);if($.validate){let W=$.validate(G);if(W!==!0){let _=typeof W==="string"?W:`Invalid parameters for @${$.name}`;throw Error(_)}}let K=Y;if($.transform)K=await $.transform(Y,G,J,Q);if($.clientScript){let W=$.clientScript(G);K+=`<script>${W}</script>`}if($.css){let W=$.css(G);K+=`<style>${W}</style>`}return K}}}function CH($,Z){let Y=typeof Z==="function"?{mounted:Z}:Z;return IZ.set($,Y),Y}function yH($,Z){let Y={...Z};for(let X of $){let J=X.indexOf(":"),Q=X.indexOf("="),G=J>=0&&(Q<0||J<Q)?J:Q;if(G>=0){let K=X.slice(0,G).trim(),W=X.slice(G+1).trim();if(W==="true")W=!0;else if(W==="false")W=!1;else if(W==="null")W=null;else if(!Number.isNaN(Number(W)))W=Number(W);else if(typeof W==="string"&&W.startsWith("{"))try{W=JSON.parse(W)}catch{}Y[K]=W}else{let K=Object.keys(Y).filter((W)=>!Z||!(W in Z)).length;Y[K===0?"value":`arg${K}`]=X}}return Y}function PH(){return[T0({name:"uppercase",description:"Convert content to uppercase",transform:($)=>$.toUpperCase()}),T0({name:"lowercase",description:"Convert content to lowercase",transform:($)=>$.toLowerCase()}),T0({name:"capitalize",description:"Capitalize first letter of content",transform:($)=>$.charAt(0).toUpperCase()+$.slice(1)}),T0({name:"trim",description:"Remove leading and trailing whitespace",transform:($)=>$.trim()}),T0({name:"truncate",description:"Truncate content to specified length",defaults:{length:100,suffix:"..."},transform:($,{length:Z,suffix:Y})=>$.length>Z?$.slice(0,Z)+Y:$}),T0({name:"highlight",description:"Highlight content with background color",defaults:{color:"yellow"},transform:($,{color:Z})=>`<mark style="background-color: ${Z}; padding: 0.1em 0.2em; border-radius: 0.2em;">${$}</mark>`}),T0({name:"badge",description:"Create a badge/tag",defaults:{variant:"default",color:""},transform:($,{variant:Z,color:Y})=>{let X={default:"background: #e5e7eb; color: #374151;",primary:"background: #3b82f6; color: white;",success:"background: #10b981; color: white;",warning:"background: #f59e0b; color: white;",danger:"background: #ef4444; color: white;",info:"background: #06b6d4; color: white;"};return`<span style="${Y?`background: ${Y}; color: white;`:X[Z]||X.default} padding: 0.25em 0.5em; border-radius: 9999px; font-size: 0.875em; font-weight: 500;">${$}</span>`}}),T0({name:"code",description:"Style content as inline code",transform:($)=>`<code style="background: #f3f4f6; padding: 0.2em 0.4em; border-radius: 0.25em; font-family: ui-monospace, monospace; font-size: 0.875em;">${$}</code>`}),T0({name:"tooltip",description:"Add a tooltip to content",defaults:{text:"",position:"top"},hasEndTag:!0,transform:($,{text:Z,position:Y})=>`<span class="stx-tooltip" data-tooltip="${Z}" data-tooltip-position="${Y}" style="position: relative; cursor: help;">${$}</span>`,css:()=>`
60
+ `.replace(/\s+/g," ").trim();return{html:`<img src="${Z}" alt="${EZ(Y)}"${A}${N}${V}${L}${w}${M}${T} ${I} />`}}function TZ($){let Z=$.match(/<Image\s+([^>]*?)\/?>/);if(!Z)return null;let Y=Z[1],X={},J=/(\w+)(?:=(?:"([^"]*)"|'([^']*)'|(\{[^}]+\})))?/g,Q;while((Q=J.exec(Y))!==null){let[,G,K,W,_]=Q,U=K??W??_??!0;switch(G){case"src":X.src=String(U);break;case"alt":X.alt=String(U);break;case"width":X.width=Number(U)||U;break;case"height":X.height=Number(U)||U;break;case"sizes":X.sizes=String(U);break;case"loading":X.loading=U;break;case"priority":X.priority=U===!0||U==="true";break;case"quality":X.quality=Number(U);break;case"placeholder":X.placeholder=U;break;case"class":X.class=String(U);break;case"style":X.style=String(U);break;case"decoding":X.decoding=U;break;case"fetchpriority":X.fetchpriority=U;break;case"objectFit":X.objectFit=U;break;case"objectPosition":X.objectPosition=String(U);break}}if(!X.src||!X.alt)return null;return X}async function TQ($,Z){let Y=/<Image\s+[^>]*?\/?>/g,X=[],J=[],Q=$,G,K=[];while((G=Y.exec($))!==null)K.push({match:G[0],index:G.index});for(let W=K.length-1;W>=0;W--){let{match:_}=K[W],U=TZ(_);if(U){let B=await Z(U);if(Q=Q.replace(_,B.html),B.preloadLink)X.push(B.preloadLink);if(B.placeholderCss)J.push(B.placeholderCss)}}return{html:Q,preloadLinks:X,styles:J}}function EZ($){return $.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}var EQ=D(()=>{I7()});function IQ($){if(T6.set($.name,$),$.client)IZ.set($.name,$.client)}function kH($){return T6.get($)}function SH(){return Array.from(T6.values())}function bH($){return IZ.delete($),T6.delete($)}function T0($){return IQ($),{name:$.name,hasEndTag:$.hasEndTag??!0,description:$.description,handler:async(Y,X,J,Q)=>{let G=yH(X,$.defaults);if($.validate){let W=$.validate(G);if(W!==!0){let _=typeof W==="string"?W:`Invalid parameters for @${$.name}`;throw Error(_)}}let K=Y;if($.transform)K=await $.transform(Y,G,J,Q);if($.clientScript){let W=$.clientScript(G);K+=`<script>${W}</script>`}if($.css){let W=$.css(G);K+=`<style>${W}</style>`}return K}}}function CH($,Z){let Y=typeof Z==="function"?{mounted:Z}:Z;return IZ.set($,Y),Y}function yH($,Z){let Y={...Z};for(let X of $){let J=X.indexOf(":"),Q=X.indexOf("="),G=J>=0&&(Q<0||J<Q)?J:Q;if(G>=0){let K=X.slice(0,G).trim(),W=X.slice(G+1).trim();if(W==="true")W=!0;else if(W==="false")W=!1;else if(W==="null")W=null;else if(!Number.isNaN(Number(W)))W=Number(W);else if(typeof W==="string"&&W.startsWith("{"))try{W=JSON.parse(W)}catch{}Y[K]=W}else{let K=Object.keys(Y).filter((W)=>!Z||!(W in Z)).length;Y[K===0?"value":`arg${K}`]=X}}return Y}function PH(){return[T0({name:"uppercase",description:"Convert content to uppercase",transform:($)=>$.toUpperCase()}),T0({name:"lowercase",description:"Convert content to lowercase",transform:($)=>$.toLowerCase()}),T0({name:"capitalize",description:"Capitalize first letter of content",transform:($)=>$.charAt(0).toUpperCase()+$.slice(1)}),T0({name:"trim",description:"Remove leading and trailing whitespace",transform:($)=>$.trim()}),T0({name:"truncate",description:"Truncate content to specified length",defaults:{length:100,suffix:"..."},transform:($,{length:Z,suffix:Y})=>$.length>Z?$.slice(0,Z)+Y:$}),T0({name:"highlight",description:"Highlight content with background color",defaults:{color:"yellow"},transform:($,{color:Z})=>`<mark style="background-color: ${Z}; padding: 0.1em 0.2em; border-radius: 0.2em;">${$}</mark>`}),T0({name:"badge",description:"Create a badge/tag",defaults:{variant:"default",color:""},transform:($,{variant:Z,color:Y})=>{let X={default:"background: #e5e7eb; color: #374151;",primary:"background: #3b82f6; color: white;",success:"background: #10b981; color: white;",warning:"background: #f59e0b; color: white;",danger:"background: #ef4444; color: white;",info:"background: #06b6d4; color: white;"};return`<span style="${Y?`background: ${Y}; color: white;`:X[Z]||X.default} padding: 0.25em 0.5em; border-radius: 9999px; font-size: 0.875em; font-weight: 500;">${$}</span>`}}),T0({name:"code",description:"Style content as inline code",transform:($)=>`<code style="background: #f3f4f6; padding: 0.2em 0.4em; border-radius: 0.25em; font-family: ui-monospace, monospace; font-size: 0.875em;">${$}</code>`}),T0({name:"tooltip",description:"Add a tooltip to content",defaults:{text:"",position:"top"},hasEndTag:!0,transform:($,{text:Z,position:Y})=>`<span class="stx-tooltip" data-tooltip="${Z}" data-tooltip-position="${Y}" style="position: relative; cursor: help;">${$}</span>`,css:()=>`
61
61
  .stx-tooltip::after {
62
62
  content: attr(data-tooltip);
63
63
  position: absolute;
@@ -317,7 +317,7 @@ catch (e) {
317
317
  white-space: nowrap;
318
318
  border-width: 0;
319
319
  }
320
- `.trim()}function aQ(){return typeof globalThis.document<"u"&&typeof globalThis.document.createElement==="function"}function VO($,Z){let Y=[],X=/<img\s+([^>]*)>/gi,J;J=X.exec($);while(J!==null){let O=J[1];if(!/\balt\s*=/i.test(O))Y.push({type:"missing-alt",element:J[0].substring(0,100),message:"Image missing alt attribute",impact:"serious",help:"Add alt text to images for screen readers",helpUrl:"https://web.dev/learn/accessibility/images/"});J=X.exec($)}let Q=/<button([^>]*)>\s*<\/button>/gi;J=Q.exec($);while(J!==null){let O=J[1];if(!/\baria-label\s*=/i.test(O)&&!/\btitle\s*=/i.test(O))Y.push({type:"missing-accessible-name",element:J[0].substring(0,100),message:"Empty button missing accessible name",impact:"critical",help:"Add text content, aria-label, or title",helpUrl:"https://web.dev/learn/accessibility/aria-html/"});J=Q.exec($)}let G=/<a\s+([^>]*)>\s*<\/a>/gi;J=G.exec($);while(J!==null){let O=J[1];if(!/\baria-label\s*=/i.test(O)&&!/\btitle\s*=/i.test(O))Y.push({type:"link-missing-text",element:J[0].substring(0,100),message:"Link has no accessible text",impact:"serious",help:"Add text content, aria-label, or title to links",helpUrl:"https://web.dev/learn/accessibility/more-html/#links"});J=G.exec($)}let K=/<(input|select|textarea)\s+([^>]*)>/gi;J=K.exec($);while(J!==null){let O=J[2];if(/\btype\s*=\s*["']hidden["']/i.test(O)){J=K.exec($);continue}let F=/\baria-label\s*=/i.test(O)||/\baria-labelledby\s*=/i.test(O),L=O.match(/\bid\s*=\s*["']([^"']+)["']/i);if(!F){let V=L&&new RegExp(`<label[^>]*\\bfor\\s*=\\s*["']${L[1]}["']`,"i").test($),A=J.index,N=$.substring(0,A),w=$.substring(A),M=(N.match(/<label\b/gi)||[]).length,T=(N.match(/<\/label>/gi)||[]).length,I=M>T;if(!V&&!I)Y.push({type:"input-missing-label",element:J[0].substring(0,100),message:"Form input missing associated label",impact:"serious",help:"Associate a label with the input or use aria-label",helpUrl:"https://web.dev/learn/accessibility/forms/"})}J=K.exec($)}let W=/<h([1-6])[^>]*>/gi,_=[];J=W.exec($);while(J!==null)_.push(Number.parseInt(J[1],10)),J=W.exec($);let U=0;for(let O of _){if(U>0&&O>U+1)Y.push({type:"heading-skip",element:`<h${O}>`,message:`Heading level skipped from h${U} to h${O}`,impact:"moderate",help:"Maintain proper heading hierarchy without skipping levels",helpUrl:"https://web.dev/learn/accessibility/structure/"});U=O}if(/<html\b/i.test($)&&!/<html[^>]*\slang\s*=/i.test($))Y.push({type:"missing-lang",element:"<html>",message:"Document language not specified",impact:"serious",help:"Add lang attribute to the html element",helpUrl:"https://web.dev/learn/accessibility/more-html/#language"});let B=/<table[^>]*>([\s\S]*?)<\/table>/gi;J=B.exec($);while(J!==null){let O=J[1];if(!/<th\b/i.test(O))Y.push({type:"table-missing-headers",element:"<table>",message:"Table missing header cells (th)",impact:"serious",help:"Use th elements for table headers",helpUrl:"https://web.dev/learn/accessibility/more-html/#tables"});J=B.exec($)}let z=/<(video|audio)[^>]*\sautoplay\s[^>]*>/gi;J=z.exec($);while(J!==null){if(!/\bmuted\b/i.test(J[0]))Y.push({type:"autoplay-audio",element:`<${J[1]}>`,message:"Auto-playing media may disrupt users",impact:"moderate",help:"Add muted attribute or provide controls to stop playback",helpUrl:"https://web.dev/learn/accessibility/more-html/#multimedia"});J=z.exec($)}let q=/\btabindex\s*=\s*["']([1-9]\d*)["']/gi;J=q.exec($);while(J!==null)Y.push({type:"positive-tabindex",element:`tabindex="${J[1]}"`,message:"Positive tabindex disrupts natural tab order",impact:"moderate",help:'Use tabindex="0" or "-1" instead of positive values',helpUrl:"https://web.dev/learn/accessibility/focus/#tab-index"}),J=q.exec($);let j=/<iframe\s+([^>]*)>/gi;J=j.exec($);while(J!==null){let O=J[1];if(!/\btitle\s*=/i.test(O)&&!/\baria-label\s*=/i.test(O))Y.push({type:"iframe-missing-title",element:"<iframe>",message:"Iframe missing title attribute",impact:"serious",help:"Add a title attribute to describe the iframe content",helpUrl:"https://web.dev/learn/accessibility/more-html/#frames"});J=j.exec($)}let H=/<([a-z]+)\s+([^>]*role\s*=\s*["']button["'][^>]*)>/gi;J=H.exec($);while(J!==null){let O=J[1].toLowerCase(),F=J[2];if(O!=="button"&&!/\btabindex\s*=/i.test(F))Y.push({type:"button-not-focusable",element:J[0].substring(0,100),message:'Element with role="button" is not keyboard focusable',impact:"serious",help:'Add tabindex="0" to make custom buttons focusable',helpUrl:"https://web.dev/learn/accessibility/focus/"});J=H.exec($)}return Y}async function tQ($,Z){if(!aQ())return VO($,Z);let Y=[];try{let X=globalThis.document.createElement("div");X.innerHTML=$,X.querySelectorAll("img").forEach((K)=>{if(!K.hasAttribute("alt"))Y.push({type:"missing-alt",element:`<${K.outerHTML}>`,message:"Image missing alt attribute",impact:"serious",help:"Add alt text to images for screen readers",helpUrl:"https://web.dev/learn/accessibility/images/"})}),X.querySelectorAll('button, a, [role="button"]').forEach((K)=>{if(!(K.hasAttribute("aria-label")||K.hasAttribute("aria-labelledby")||K.textContent&&K.textContent.trim().length>0))Y.push({type:"missing-accessible-name",element:`<${K.outerHTML}>`,message:"Interactive element missing accessible name",impact:"critical",help:"Add text content, aria-label, or aria-labelledby",helpUrl:"https://web.dev/learn/accessibility/aria-html/"})}),X.querySelectorAll("input, select, textarea").forEach((K)=>{let W=K.getAttribute("id"),_=W&&X.querySelector(`label[for="${W}"]`),U=K.hasAttribute("aria-label")||K.hasAttribute("aria-labelledby"),B=K.closest("label")!==null;if(!_&&!U&&!B)Y.push({type:"input-missing-label",element:`<${K.outerHTML}>`,message:"Form input missing associated label",impact:"serious",help:"Associate a label with the input or use aria-label",helpUrl:"https://web.dev/learn/accessibility/forms/"})});let J=Array.from(X.querySelectorAll("h1, h2, h3, h4, h5, h6")),Q=0;for(let K of J){let W=Number.parseInt(K.tagName.charAt(1));if(Q>0&&W>Q+1)Y.push({type:"heading-skip",element:`<${K.outerHTML}>`,message:`Heading level skipped from h${Q} to h${W}`,impact:"moderate",help:"Maintain proper heading hierarchy without skipping levels",helpUrl:"https://web.dev/learn/accessibility/structure/"});Q=W}let G=X.querySelector("html");if($.includes("<html")&&G&&!G.hasAttribute("lang"))Y.push({type:"missing-lang",element:"<html>",message:"Document language not specified",impact:"serious",help:"Add lang attribute to the html element",helpUrl:"https://web.dev/learn/accessibility/more-html/#language"});if(X.querySelectorAll("a").forEach((K)=>{let W=K.textContent&&K.textContent.trim().length>0,_=K.hasAttribute("aria-label")||K.hasAttribute("aria-labelledby"),U=K.hasAttribute("title"),B=K.querySelector("img[alt]");if(!W&&!_&&!U&&!B)Y.push({type:"link-missing-text",element:`<${K.outerHTML}>`,message:"Link has no accessible text",impact:"serious",help:"Add text content, aria-label, or title to links",helpUrl:"https://web.dev/learn/accessibility/more-html/#links"})}),$.includes("<nav")||$.includes("<header")){if(!X.querySelector('a[href="#main"], a[href="#content"], .skip-link, [class*="skip"]')&&X.querySelectorAll("a").length>5)Y.push({type:"missing-skip-link",element:"<nav>",message:"Consider adding a skip navigation link",impact:"minor",help:"Add a skip link to allow keyboard users to bypass navigation",helpUrl:"https://web.dev/learn/accessibility/focus/#skip-links"})}if(X.querySelectorAll("table").forEach((K)=>{let W=K.querySelector("caption");if(!K.querySelector("th"))Y.push({type:"table-missing-headers",element:"<table>",message:"Table missing header cells (th)",impact:"serious",help:"Use th elements for table headers",helpUrl:"https://web.dev/learn/accessibility/more-html/#tables"});if(!W&&!K.hasAttribute("aria-label")&&!K.hasAttribute("aria-labelledby"))Y.push({type:"table-missing-caption",element:"<table>",message:"Table missing caption or accessible name",impact:"minor",help:"Add a caption element or aria-label to describe the table",helpUrl:"https://web.dev/learn/accessibility/more-html/#tables"})}),X.querySelectorAll('[style*="color"]').forEach((K)=>{let W=K.getAttribute("style")||"";if(W.includes("color:")&&!W.includes("background"))Y.push({type:"potential-contrast-issue",element:`<${K.tagName.toLowerCase()}>`,message:"Element has inline color style - verify contrast ratio",impact:"minor",help:"Ensure text has sufficient contrast ratio (4.5:1 for normal text)",helpUrl:"https://web.dev/learn/accessibility/color-contrast/"})}),X.querySelectorAll("video[autoplay], audio[autoplay]").forEach((K)=>{if(!K.hasAttribute("muted"))Y.push({type:"autoplay-audio",element:`<${K.tagName.toLowerCase()}>`,message:"Auto-playing media may disrupt users",impact:"moderate",help:"Add muted attribute or provide controls to stop playback",helpUrl:"https://web.dev/learn/accessibility/more-html/#multimedia"})}),X.querySelectorAll("[tabindex]").forEach((K)=>{if(Number.parseInt(K.getAttribute("tabindex")||"0")>0)Y.push({type:"positive-tabindex",element:`<${K.tagName.toLowerCase()}>`,message:"Positive tabindex disrupts natural tab order",impact:"moderate",help:'Use tabindex="0" or "-1" instead of positive values',helpUrl:"https://web.dev/learn/accessibility/focus/#tab-index"})}),X.querySelectorAll('[role="button"]').forEach((K)=>{if(!K.hasAttribute("tabindex"))Y.push({type:"button-not-focusable",element:`<${K.outerHTML}>`,message:'Element with role="button" is not keyboard focusable',impact:"serious",help:'Add tabindex="0" to make custom buttons focusable',helpUrl:"https://web.dev/learn/accessibility/focus/"})}),$.includes("<body")&&!X.querySelector('main, [role="main"]'))Y.push({type:"missing-main-landmark",element:"<body>",message:"Document missing main landmark region",impact:"moderate",help:"Add a main element to identify the primary content",helpUrl:"https://web.dev/learn/accessibility/structure/#landmarks"});X.querySelectorAll("iframe").forEach((K)=>{if(!K.hasAttribute("title")&&!K.hasAttribute("aria-label"))Y.push({type:"iframe-missing-title",element:"<iframe>",message:"Iframe missing title attribute",impact:"serious",help:"Add a title attribute to describe the iframe content",helpUrl:"https://web.dev/learn/accessibility/more-html/#frames"})})}catch(X){console.error(`Error checking accessibility in ${Z}:`,X)}return Y}async function NO($,Z={}){let Y={},{recursive:X=!0,ignorePaths:J=[]}=Z,Q=C6.join($,X?"**/*.stx":"*.stx"),G=new Bun.Glob(Q),K=[];for await(let W of G.scan())if(!J.some((U)=>W.includes(C6.normalize(U))))K.push(W);for(let W of K)try{let _=await Bun.file(W).text();if(W.endsWith("good-a11y.stx"))continue;let U=await tQ(_,W);if(U.length>0)Y[W]=U}catch(_){console.error(`Error scanning ${W}:`,_)}return Y}function eQ($,Z={}){let Y={...AO,...Z},X=[],J=$;if(Y.fixMissingAlt)J=J.replace(/<img([^>]*?)(?<!\balt\s*=\s*["'][^"']*["'])(\s*\/?>)/gi,(Q,G,K)=>{if(/\balt\s*=/i.test(G))return Q;let W=Q,_=`<img${G} alt=""${K}`;return X.push({type:"missing-alt",description:"Added empty alt attribute to image",before:W,after:_}),_});if(Y.fixMissingLabels)J=J.replace(/<button([^>]*)>\s*<\/button>/gi,(Q,G)=>{if(/\baria-label\s*=/i.test(G)||/\btitle\s*=/i.test(G))return Q;let K=Q,W=`<button${G} aria-label="Button"></button>`;return X.push({type:"missing-accessible-name",description:"Added aria-label to empty button",before:K,after:W}),W}),J=J.replace(/<a([^>]*)>\s*(<(?:i|span|svg)[^>]*(?:class="[^"]*icon[^"]*")?[^>]*>.*?<\/(?:i|span|svg)>)?\s*<\/a>/gi,(Q,G,K)=>{if(/\baria-label\s*=/i.test(G)||/\btitle\s*=/i.test(G))return Q;if(!K&&Q.replace(/<a[^>]*>|<\/a>/gi,"").trim())return Q;let W=Q,_=`<a${G} aria-label="Link">${K||""}</a>`;return X.push({type:"missing-accessible-name",description:"Added aria-label to link without text",before:W,after:_}),_});if(Y.fixMissingFormLabels)J=J.replace(/<(input|select|textarea)([^>]*)>/gi,(Q,G,K)=>{if(/\baria-label\s*=/i.test(K)||/\baria-labelledby\s*=/i.test(K))return Q;if(/\btype\s*=\s*["']hidden["']/i.test(K))return Q;let W=K.match(/\bname\s*=\s*["']([^"']+)["']/i),_=K.match(/\bid\s*=\s*["']([^"']+)["']/i),U=W?.[1]||_?.[1]||G,B=Q,z=`<${G}${K} aria-label="${U}">`;return X.push({type:"input-missing-label",description:`Added aria-label to ${G} element`,before:B,after:z}),z});if(Y.fixMissingLang)J=J.replace(/<html([^>]*)>/gi,(Q,G)=>{if(/\blang\s*=/i.test(G))return Q;let K=Q,W=`<html${G} lang="${Y.defaultLang}">`;return X.push({type:"missing-lang",description:`Added lang="${Y.defaultLang}" to html element`,before:K,after:W}),W});if(Y.fixPositiveTabindex)J=J.replace(/\btabindex\s*=\s*["']([1-9]\d*)["']/gi,(Q,G)=>{let K=Q,W='tabindex="0"';return X.push({type:"positive-tabindex",description:`Changed tabindex="${G}" to tabindex="0"`,before:K,after:'tabindex="0"'}),'tabindex="0"'});if(Y.fixButtonFocusable)J=J.replace(/<([a-z]+)(\s[^>]*role\s*=\s*["']button["'][^>]*)>/gi,(Q,G,K)=>{if(/\btabindex\s*=/i.test(K))return Q;if(G.toLowerCase()==="button")return Q;let W=Q,_=`<${G}${K} tabindex="0">`;return X.push({type:"button-not-focusable",description:'Added tabindex="0" to element with role="button"',before:W,after:_}),_});if(Y.fixTableHeaders)J=J.replace(/<th([^>]*)>/gi,(Q,G)=>{if(/\bscope\s*=/i.test(G))return Q;let K=Q,W=`<th${G} scope="col">`;return X.push({type:"table-missing-scope",description:'Added scope="col" to table header',before:K,after:W}),W});return{original:$,fixed:J,fixCount:X.length,fixes:X}}async function $G($,Z={},Y=!1){let X=await Bun.file($).text(),J=eQ(X,Z);if(Y&&J.fixCount>0)await Bun.write($,J.fixed);return J}async function wO($,Z={},Y={}){let X={},{recursive:J=!0,ignorePaths:Q=[],writeBack:G=!1,extensions:K=[".stx",".html",".htm"]}=Y,W=K.length===1?`*${K[0]}`:`*{${K.join(",")}}`,_=C6.join($,J?`**/${W}`:W),U=new Bun.Glob(_);for await(let B of U.scan()){if(Q.some((q)=>B.includes(C6.normalize(q))))continue;try{let q=await $G(B,Z,G);if(q.fixCount>0)X[B]=q}catch(q){console.error(`Error fixing ${B}:`,q)}}return X}function RO(){return[y6,P6]}var AO,y6,P6;var x6=D(()=>{AO={fixMissingAlt:!0,fixMissingLabels:!0,fixMissingFormLabels:!0,fixTableHeaders:!0,fixMissingLang:!0,fixPositiveTabindex:!0,fixButtonFocusable:!0,defaultLang:"en"};y6={name:"a11y",handler:($,Z,Y,X)=>{if(!Z.length)return $;let J=Z[0].replace(/['"]/g,""),Q=Z.length>1?Z[1].replace(/['"]/g,""):"",K={"aria-label":"Ensure interactive elements have accessible labels","alt-text":"Provide alternative text for images",focus:"Ensure the element can receive keyboard focus",landmark:"Use appropriate landmark roles","heading-order":"Maintain proper heading hierarchy","color-contrast":"Ensure sufficient color contrast","keyboard-nav":"Make sure element is keyboard navigable","screen-reader":"Optimize for screen reader users"}[J]||"Make this element accessible";return`<!-- a11y-hint: ${Q||K} -->${$}`},hasEndTag:!1},P6={name:"screenReader",handler:($)=>{return`<span class="sr-only">${$}</span>`},hasEndTag:!0}});function MO($,Z={}){let{duration:Y,delay:X,ease:J,direction:Q,custom:G}={...w1,...Z};if($==="custom"&&G)return G;switch($){case"fade":return`${Q==="in"?"opacity: 0; animation: fadeIn var(--stx-transition-duration, 300ms) var(--stx-transition-ease, ease) var(--stx-transition-delay, 0ms) forwards;":Q==="out"?"opacity: 1; animation: fadeOut var(--stx-transition-duration, 300ms) var(--stx-transition-ease, ease) var(--stx-transition-delay, 0ms) forwards;":"opacity: 1; transition: opacity var(--stx-transition-duration, 300ms) var(--stx-transition-ease, ease) var(--stx-transition-delay, 0ms);"}
320
+ `.trim()}function aQ(){return typeof globalThis.document<"u"&&typeof globalThis.document.createElement==="function"}function VO($,Z){let Y=[],X=/<img\s+([^>]*)>/gi,J;J=X.exec($);while(J!==null){let O=J[1];if(!/\balt\s*=/i.test(O))Y.push({type:"missing-alt",element:J[0].substring(0,100),message:"Image missing alt attribute",impact:"serious",help:"Add alt text to images for screen readers",helpUrl:"https://web.dev/learn/accessibility/images/"});J=X.exec($)}let Q=/<button([^>]*)>\s*<\/button>/gi;J=Q.exec($);while(J!==null){let O=J[1];if(!/\baria-label\s*=/i.test(O)&&!/\btitle\s*=/i.test(O))Y.push({type:"missing-accessible-name",element:J[0].substring(0,100),message:"Empty button missing accessible name",impact:"critical",help:"Add text content, aria-label, or title",helpUrl:"https://web.dev/learn/accessibility/aria-html/"});J=Q.exec($)}let G=/<a\s+([^>]*)>\s*<\/a>/gi;J=G.exec($);while(J!==null){let O=J[1];if(!/\baria-label\s*=/i.test(O)&&!/\btitle\s*=/i.test(O))Y.push({type:"link-missing-text",element:J[0].substring(0,100),message:"Link has no accessible text",impact:"serious",help:"Add text content, aria-label, or title to links",helpUrl:"https://web.dev/learn/accessibility/more-html/#links"});J=G.exec($)}let K=/<(input|select|textarea)\s+([^>]*)>/gi;J=K.exec($);while(J!==null){let O=J[2];if(/\btype\s*=\s*["']hidden["']/i.test(O)){J=K.exec($);continue}let F=/\baria-label\s*=/i.test(O)||/\baria-labelledby\s*=/i.test(O),L=O.match(/\bid\s*=\s*["']([^"']+)["']/i);if(!F){let V=L&&new RegExp(`<label[^>]*\\bfor\\s*=\\s*["']${L[1]}["']`,"i").test($),A=J.index,N=$.substring(0,A),w=$.substring(A),M=(N.match(/<label\b/gi)||[]).length,T=(N.match(/<\/label>/gi)||[]).length,E=M>T;if(!V&&!E)Y.push({type:"input-missing-label",element:J[0].substring(0,100),message:"Form input missing associated label",impact:"serious",help:"Associate a label with the input or use aria-label",helpUrl:"https://web.dev/learn/accessibility/forms/"})}J=K.exec($)}let W=/<h([1-6])[^>]*>/gi,_=[];J=W.exec($);while(J!==null)_.push(Number.parseInt(J[1],10)),J=W.exec($);let U=0;for(let O of _){if(U>0&&O>U+1)Y.push({type:"heading-skip",element:`<h${O}>`,message:`Heading level skipped from h${U} to h${O}`,impact:"moderate",help:"Maintain proper heading hierarchy without skipping levels",helpUrl:"https://web.dev/learn/accessibility/structure/"});U=O}if(/<html\b/i.test($)&&!/<html[^>]*\slang\s*=/i.test($))Y.push({type:"missing-lang",element:"<html>",message:"Document language not specified",impact:"serious",help:"Add lang attribute to the html element",helpUrl:"https://web.dev/learn/accessibility/more-html/#language"});let B=/<table[^>]*>([\s\S]*?)<\/table>/gi;J=B.exec($);while(J!==null){let O=J[1];if(!/<th\b/i.test(O))Y.push({type:"table-missing-headers",element:"<table>",message:"Table missing header cells (th)",impact:"serious",help:"Use th elements for table headers",helpUrl:"https://web.dev/learn/accessibility/more-html/#tables"});J=B.exec($)}let z=/<(video|audio)[^>]*\sautoplay\s[^>]*>/gi;J=z.exec($);while(J!==null){if(!/\bmuted\b/i.test(J[0]))Y.push({type:"autoplay-audio",element:`<${J[1]}>`,message:"Auto-playing media may disrupt users",impact:"moderate",help:"Add muted attribute or provide controls to stop playback",helpUrl:"https://web.dev/learn/accessibility/more-html/#multimedia"});J=z.exec($)}let q=/\btabindex\s*=\s*["']([1-9]\d*)["']/gi;J=q.exec($);while(J!==null)Y.push({type:"positive-tabindex",element:`tabindex="${J[1]}"`,message:"Positive tabindex disrupts natural tab order",impact:"moderate",help:'Use tabindex="0" or "-1" instead of positive values',helpUrl:"https://web.dev/learn/accessibility/focus/#tab-index"}),J=q.exec($);let j=/<iframe\s+([^>]*)>/gi;J=j.exec($);while(J!==null){let O=J[1];if(!/\btitle\s*=/i.test(O)&&!/\baria-label\s*=/i.test(O))Y.push({type:"iframe-missing-title",element:"<iframe>",message:"Iframe missing title attribute",impact:"serious",help:"Add a title attribute to describe the iframe content",helpUrl:"https://web.dev/learn/accessibility/more-html/#frames"});J=j.exec($)}let H=/<([a-z]+)\s+([^>]*role\s*=\s*["']button["'][^>]*)>/gi;J=H.exec($);while(J!==null){let O=J[1].toLowerCase(),F=J[2];if(O!=="button"&&!/\btabindex\s*=/i.test(F))Y.push({type:"button-not-focusable",element:J[0].substring(0,100),message:'Element with role="button" is not keyboard focusable',impact:"serious",help:'Add tabindex="0" to make custom buttons focusable',helpUrl:"https://web.dev/learn/accessibility/focus/"});J=H.exec($)}return Y}async function tQ($,Z){if(!aQ())return VO($,Z);let Y=[];try{let X=globalThis.document.createElement("div");X.innerHTML=$,X.querySelectorAll("img").forEach((K)=>{if(!K.hasAttribute("alt"))Y.push({type:"missing-alt",element:`<${K.outerHTML}>`,message:"Image missing alt attribute",impact:"serious",help:"Add alt text to images for screen readers",helpUrl:"https://web.dev/learn/accessibility/images/"})}),X.querySelectorAll('button, a, [role="button"]').forEach((K)=>{if(!(K.hasAttribute("aria-label")||K.hasAttribute("aria-labelledby")||K.textContent&&K.textContent.trim().length>0))Y.push({type:"missing-accessible-name",element:`<${K.outerHTML}>`,message:"Interactive element missing accessible name",impact:"critical",help:"Add text content, aria-label, or aria-labelledby",helpUrl:"https://web.dev/learn/accessibility/aria-html/"})}),X.querySelectorAll("input, select, textarea").forEach((K)=>{let W=K.getAttribute("id"),_=W&&X.querySelector(`label[for="${W}"]`),U=K.hasAttribute("aria-label")||K.hasAttribute("aria-labelledby"),B=K.closest("label")!==null;if(!_&&!U&&!B)Y.push({type:"input-missing-label",element:`<${K.outerHTML}>`,message:"Form input missing associated label",impact:"serious",help:"Associate a label with the input or use aria-label",helpUrl:"https://web.dev/learn/accessibility/forms/"})});let J=Array.from(X.querySelectorAll("h1, h2, h3, h4, h5, h6")),Q=0;for(let K of J){let W=Number.parseInt(K.tagName.charAt(1));if(Q>0&&W>Q+1)Y.push({type:"heading-skip",element:`<${K.outerHTML}>`,message:`Heading level skipped from h${Q} to h${W}`,impact:"moderate",help:"Maintain proper heading hierarchy without skipping levels",helpUrl:"https://web.dev/learn/accessibility/structure/"});Q=W}let G=X.querySelector("html");if($.includes("<html")&&G&&!G.hasAttribute("lang"))Y.push({type:"missing-lang",element:"<html>",message:"Document language not specified",impact:"serious",help:"Add lang attribute to the html element",helpUrl:"https://web.dev/learn/accessibility/more-html/#language"});if(X.querySelectorAll("a").forEach((K)=>{let W=K.textContent&&K.textContent.trim().length>0,_=K.hasAttribute("aria-label")||K.hasAttribute("aria-labelledby"),U=K.hasAttribute("title"),B=K.querySelector("img[alt]");if(!W&&!_&&!U&&!B)Y.push({type:"link-missing-text",element:`<${K.outerHTML}>`,message:"Link has no accessible text",impact:"serious",help:"Add text content, aria-label, or title to links",helpUrl:"https://web.dev/learn/accessibility/more-html/#links"})}),$.includes("<nav")||$.includes("<header")){if(!X.querySelector('a[href="#main"], a[href="#content"], .skip-link, [class*="skip"]')&&X.querySelectorAll("a").length>5)Y.push({type:"missing-skip-link",element:"<nav>",message:"Consider adding a skip navigation link",impact:"minor",help:"Add a skip link to allow keyboard users to bypass navigation",helpUrl:"https://web.dev/learn/accessibility/focus/#skip-links"})}if(X.querySelectorAll("table").forEach((K)=>{let W=K.querySelector("caption");if(!K.querySelector("th"))Y.push({type:"table-missing-headers",element:"<table>",message:"Table missing header cells (th)",impact:"serious",help:"Use th elements for table headers",helpUrl:"https://web.dev/learn/accessibility/more-html/#tables"});if(!W&&!K.hasAttribute("aria-label")&&!K.hasAttribute("aria-labelledby"))Y.push({type:"table-missing-caption",element:"<table>",message:"Table missing caption or accessible name",impact:"minor",help:"Add a caption element or aria-label to describe the table",helpUrl:"https://web.dev/learn/accessibility/more-html/#tables"})}),X.querySelectorAll('[style*="color"]').forEach((K)=>{let W=K.getAttribute("style")||"";if(W.includes("color:")&&!W.includes("background"))Y.push({type:"potential-contrast-issue",element:`<${K.tagName.toLowerCase()}>`,message:"Element has inline color style - verify contrast ratio",impact:"minor",help:"Ensure text has sufficient contrast ratio (4.5:1 for normal text)",helpUrl:"https://web.dev/learn/accessibility/color-contrast/"})}),X.querySelectorAll("video[autoplay], audio[autoplay]").forEach((K)=>{if(!K.hasAttribute("muted"))Y.push({type:"autoplay-audio",element:`<${K.tagName.toLowerCase()}>`,message:"Auto-playing media may disrupt users",impact:"moderate",help:"Add muted attribute or provide controls to stop playback",helpUrl:"https://web.dev/learn/accessibility/more-html/#multimedia"})}),X.querySelectorAll("[tabindex]").forEach((K)=>{if(Number.parseInt(K.getAttribute("tabindex")||"0")>0)Y.push({type:"positive-tabindex",element:`<${K.tagName.toLowerCase()}>`,message:"Positive tabindex disrupts natural tab order",impact:"moderate",help:'Use tabindex="0" or "-1" instead of positive values',helpUrl:"https://web.dev/learn/accessibility/focus/#tab-index"})}),X.querySelectorAll('[role="button"]').forEach((K)=>{if(!K.hasAttribute("tabindex"))Y.push({type:"button-not-focusable",element:`<${K.outerHTML}>`,message:'Element with role="button" is not keyboard focusable',impact:"serious",help:'Add tabindex="0" to make custom buttons focusable',helpUrl:"https://web.dev/learn/accessibility/focus/"})}),$.includes("<body")&&!X.querySelector('main, [role="main"]'))Y.push({type:"missing-main-landmark",element:"<body>",message:"Document missing main landmark region",impact:"moderate",help:"Add a main element to identify the primary content",helpUrl:"https://web.dev/learn/accessibility/structure/#landmarks"});X.querySelectorAll("iframe").forEach((K)=>{if(!K.hasAttribute("title")&&!K.hasAttribute("aria-label"))Y.push({type:"iframe-missing-title",element:"<iframe>",message:"Iframe missing title attribute",impact:"serious",help:"Add a title attribute to describe the iframe content",helpUrl:"https://web.dev/learn/accessibility/more-html/#frames"})})}catch(X){console.error(`Error checking accessibility in ${Z}:`,X)}return Y}async function NO($,Z={}){let Y={},{recursive:X=!0,ignorePaths:J=[]}=Z,Q=C6.join($,X?"**/*.stx":"*.stx"),G=new Bun.Glob(Q),K=[];for await(let W of G.scan())if(!J.some((U)=>W.includes(C6.normalize(U))))K.push(W);for(let W of K)try{let _=await Bun.file(W).text();if(W.endsWith("good-a11y.stx"))continue;let U=await tQ(_,W);if(U.length>0)Y[W]=U}catch(_){console.error(`Error scanning ${W}:`,_)}return Y}function eQ($,Z={}){let Y={...AO,...Z},X=[],J=$;if(Y.fixMissingAlt)J=J.replace(/<img([^>]*?)(?<!\balt\s*=\s*["'][^"']*["'])(\s*\/?>)/gi,(Q,G,K)=>{if(/\balt\s*=/i.test(G))return Q;let W=Q,_=`<img${G} alt=""${K}`;return X.push({type:"missing-alt",description:"Added empty alt attribute to image",before:W,after:_}),_});if(Y.fixMissingLabels)J=J.replace(/<button([^>]*)>\s*<\/button>/gi,(Q,G)=>{if(/\baria-label\s*=/i.test(G)||/\btitle\s*=/i.test(G))return Q;let K=Q,W=`<button${G} aria-label="Button"></button>`;return X.push({type:"missing-accessible-name",description:"Added aria-label to empty button",before:K,after:W}),W}),J=J.replace(/<a([^>]*)>\s*(<(?:i|span|svg)[^>]*(?:class="[^"]*icon[^"]*")?[^>]*>.*?<\/(?:i|span|svg)>)?\s*<\/a>/gi,(Q,G,K)=>{if(/\baria-label\s*=/i.test(G)||/\btitle\s*=/i.test(G))return Q;if(!K&&Q.replace(/<a[^>]*>|<\/a>/gi,"").trim())return Q;let W=Q,_=`<a${G} aria-label="Link">${K||""}</a>`;return X.push({type:"missing-accessible-name",description:"Added aria-label to link without text",before:W,after:_}),_});if(Y.fixMissingFormLabels)J=J.replace(/<(input|select|textarea)([^>]*)>/gi,(Q,G,K)=>{if(/\baria-label\s*=/i.test(K)||/\baria-labelledby\s*=/i.test(K))return Q;if(/\btype\s*=\s*["']hidden["']/i.test(K))return Q;let W=K.match(/\bname\s*=\s*["']([^"']+)["']/i),_=K.match(/\bid\s*=\s*["']([^"']+)["']/i),U=W?.[1]||_?.[1]||G,B=Q,z=`<${G}${K} aria-label="${U}">`;return X.push({type:"input-missing-label",description:`Added aria-label to ${G} element`,before:B,after:z}),z});if(Y.fixMissingLang)J=J.replace(/<html([^>]*)>/gi,(Q,G)=>{if(/\blang\s*=/i.test(G))return Q;let K=Q,W=`<html${G} lang="${Y.defaultLang}">`;return X.push({type:"missing-lang",description:`Added lang="${Y.defaultLang}" to html element`,before:K,after:W}),W});if(Y.fixPositiveTabindex)J=J.replace(/\btabindex\s*=\s*["']([1-9]\d*)["']/gi,(Q,G)=>{let K=Q,W='tabindex="0"';return X.push({type:"positive-tabindex",description:`Changed tabindex="${G}" to tabindex="0"`,before:K,after:'tabindex="0"'}),'tabindex="0"'});if(Y.fixButtonFocusable)J=J.replace(/<([a-z]+)(\s[^>]*role\s*=\s*["']button["'][^>]*)>/gi,(Q,G,K)=>{if(/\btabindex\s*=/i.test(K))return Q;if(G.toLowerCase()==="button")return Q;let W=Q,_=`<${G}${K} tabindex="0">`;return X.push({type:"button-not-focusable",description:'Added tabindex="0" to element with role="button"',before:W,after:_}),_});if(Y.fixTableHeaders)J=J.replace(/<th([^>]*)>/gi,(Q,G)=>{if(/\bscope\s*=/i.test(G))return Q;let K=Q,W=`<th${G} scope="col">`;return X.push({type:"table-missing-scope",description:'Added scope="col" to table header',before:K,after:W}),W});return{original:$,fixed:J,fixCount:X.length,fixes:X}}async function $G($,Z={},Y=!1){let X=await Bun.file($).text(),J=eQ(X,Z);if(Y&&J.fixCount>0)await Bun.write($,J.fixed);return J}async function wO($,Z={},Y={}){let X={},{recursive:J=!0,ignorePaths:Q=[],writeBack:G=!1,extensions:K=[".stx",".html",".htm"]}=Y,W=K.length===1?`*${K[0]}`:`*{${K.join(",")}}`,_=C6.join($,J?`**/${W}`:W),U=new Bun.Glob(_);for await(let B of U.scan()){if(Q.some((q)=>B.includes(C6.normalize(q))))continue;try{let q=await $G(B,Z,G);if(q.fixCount>0)X[B]=q}catch(q){console.error(`Error fixing ${B}:`,q)}}return X}function RO(){return[y6,P6]}var AO,y6,P6;var x6=D(()=>{AO={fixMissingAlt:!0,fixMissingLabels:!0,fixMissingFormLabels:!0,fixTableHeaders:!0,fixMissingLang:!0,fixPositiveTabindex:!0,fixButtonFocusable:!0,defaultLang:"en"};y6={name:"a11y",handler:($,Z,Y,X)=>{if(!Z.length)return $;let J=Z[0].replace(/['"]/g,""),Q=Z.length>1?Z[1].replace(/['"]/g,""):"",K={"aria-label":"Ensure interactive elements have accessible labels","alt-text":"Provide alternative text for images",focus:"Ensure the element can receive keyboard focus",landmark:"Use appropriate landmark roles","heading-order":"Maintain proper heading hierarchy","color-contrast":"Ensure sufficient color contrast","keyboard-nav":"Make sure element is keyboard navigable","screen-reader":"Optimize for screen reader users"}[J]||"Make this element accessible";return`<!-- a11y-hint: ${Q||K} -->${$}`},hasEndTag:!1},P6={name:"screenReader",handler:($)=>{return`<span class="sr-only">${$}</span>`},hasEndTag:!0}});function MO($,Z={}){let{duration:Y,delay:X,ease:J,direction:Q,custom:G}={...w1,...Z};if($==="custom"&&G)return G;switch($){case"fade":return`${Q==="in"?"opacity: 0; animation: fadeIn var(--stx-transition-duration, 300ms) var(--stx-transition-ease, ease) var(--stx-transition-delay, 0ms) forwards;":Q==="out"?"opacity: 1; animation: fadeOut var(--stx-transition-duration, 300ms) var(--stx-transition-ease, ease) var(--stx-transition-delay, 0ms) forwards;":"opacity: 1; transition: opacity var(--stx-transition-duration, 300ms) var(--stx-transition-ease, ease) var(--stx-transition-delay, 0ms);"}
321
321
  @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
322
322
  @keyframes fadeOut { from { opacity: 1; } to { opacity: 0; } }`;case"slide":return`${Q==="in"?"transform: translateY(20px); opacity: 0; animation: slideIn var(--stx-transition-duration, 300ms) var(--stx-transition-ease, ease) var(--stx-transition-delay, 0ms) forwards;":Q==="out"?"transform: translateY(0); opacity: 1; animation: slideOut var(--stx-transition-duration, 300ms) var(--stx-transition-ease, ease) var(--stx-transition-delay, 0ms) forwards;":"transform: translateY(0); opacity: 1; transition: transform var(--stx-transition-duration, 300ms) var(--stx-transition-ease, ease) var(--stx-transition-delay, 0ms), opacity var(--stx-transition-duration, 300ms) var(--stx-transition-ease, ease) var(--stx-transition-delay, 0ms);"}
323
323
  @keyframes slideIn { from { transform: translateY(20px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
@@ -1163,20 +1163,20 @@ ${H}
1163
1163
  filter: blur(0);
1164
1164
  transform: scale(1);
1165
1165
  }
1166
- `.trim();H5=new Map});import{createHash as VY}from"crypto";import{readFile as mO,stat as HG}from"fs/promises";async function g0($){try{let Z=await mO($);return VY("sha256").update(Z).digest("hex").slice(0,16)}catch{return""}}function OG($){return VY("sha256").update($).digest("hex").slice(0,16)}function i6($){return VY("sha256").update($).digest("hex").slice(0,16)}function L5($,Z){let Y=JSON.stringify(Z,Object.keys(Z).sort());return`${i6($)}-${i6(Y)}`}async function i7($){try{return(await HG($)).mtimeMs}catch{return 0}}async function h0($){try{return await HG($),!0}catch{return!1}}var _$=()=>{};import{mkdir as pO,readFile as FG,writeFile as cO,readdir as VG,rm as NY,stat as lO}from"fs/promises";import{join as F5,dirname as iO}from"path";async function nO($){try{await pO($,{recursive:!0})}catch{}}function NG($,Z,Y){return F5($,Y,`${Z}.json`)}async function LG($,Z,Y){if((Date.now()-$.createdAt)/86400000>Y)return!1;if(await i7(Z)!==$.srcMtime)return!1;return!0}async function V5($,Z,Y,X=n7){if(!X.enabled)return null;let J=L5($,Z),Q=U$.get(J);if(Q){if(await LG(Q,$,X.maxAge))return Q.lastAccessedAt=Date.now(),Q.data;U$.delete(J)}let G=NG(X.directory,J,Y);if(await h0(G))try{let K=await FG(G,"utf-8"),W=JSON.parse(K);if(await LG(W,$,X.maxAge))return W.lastAccessedAt=Date.now(),U$.set(J,W),W.data}catch{}return null}async function N5($,Z,Y,X,J=n7){if(!J.enabled)return;let Q=L5($,Z),G=await g0($),K=await i7($),W={key:Q,src:$,srcHash:G,srcMtime:K,optionsHash:L5("",Z),data:Y,createdAt:Date.now(),lastAccessedAt:Date.now()};U$.set(Q,W);let _=NG(J.directory,Q,X);try{await nO(iO(_)),await cO(_,JSON.stringify(W,null,2))}catch(U){console.warn(`[stx-media] Failed to write cache: ${U}`)}}async function A5($,Z=n7){if($==="all")U$.clear();else U$.clear();let Y=$==="all"?["image","video"]:[$];for(let X of Y){let J=F5(Z.directory,X);try{await NY(J,{recursive:!0,force:!0})}catch{}}}async function AG($=n7){let Z={memoryEntries:U$.size,diskEntries:{image:0,video:0},totalSizeMB:0};for(let Y of["image","video"]){let X=F5($.directory,Y);try{let J=await VG(X);Z.diskEntries[Y]=J.length;for(let Q of J){let G=F5(X,Q),K=await lO(G);Z.totalSizeMB+=K.size/1048576}}catch{}}return Z}async function wG($=n7){let Z=0,Y=$.maxAge*24*60*60*1000;for(let X of["image","video"]){let J=F5($.directory,X);try{let Q=await VG(J);for(let G of Q){let K=F5(J,G);try{let W=await FG(K,"utf-8"),_=JSON.parse(W);if(Date.now()-_.createdAt>Y)await NY(K),U$.delete(_.key),Z++}catch{await NY(K).catch(()=>{}),Z++}}}catch{}}return Z}var U$,n7;var n6=D(()=>{_$();U$=new Map,n7={enabled:!0,directory:".stx/media-cache",maxAge:30,maxSize:500}});class w5{config;constructor($={}){this.config={...sO,...$}}async get($,Z){return V5($,Z,"image",this.config)}async set($,Z,Y){return N5($,Z,Y,"image",this.config)}async clear(){return A5("image",this.config)}updateConfig($){this.config={...this.config,...$}}}function AY($){if(!s6)s6=new w5($);else if($)s6.updateConfig($);return s6}async function R5($,Z,Y){let X=Y?{directory:`${Y.outputDir}/../.cache`}:{};return AY(X).get($,Z)}async function M5($,Z,Y,X){let J=X?{directory:`${X.outputDir}/../.cache`}:{};return AY(J).set($,Z,Y)}async function wY(){return AY().clear()}var sO,s6=null;var RY=D(()=>{n6();sO={enabled:!0,directory:".stx/media-cache",maxAge:30,maxSize:500,cacheVariants:!0,cachePlaceholders:!0}});import{resolve as rO,basename as oO,extname as aO,join as tO}from"path";import{mkdir as eO}from"fs/promises";async function MY(){try{return await import("ts-images")}catch{return null}}function RG($){switch($){case"quality":return{jpeg:{quality:90,mozjpeg:!0,progressive:!0},png:{compressionLevel:6,palette:!1},webp:{quality:90,effort:6,smartSubsample:!0},avif:{quality:85,effort:6}};case"performance":return{jpeg:{quality:70,mozjpeg:!0,progressive:!0},png:{compressionLevel:9,palette:!0},webp:{quality:70,effort:4,smartSubsample:!0},avif:{quality:60,effort:2}};case"web":default:return{jpeg:{quality:82,mozjpeg:!0,progressive:!0},png:{compressionLevel:8,palette:!1},webp:{quality:82,effort:5,smartSubsample:!0},avif:{quality:75,effort:4}}}}function $L($,Z){let Y=Z?RG(Z):RG("web"),X=$.formatQuality||{};return{jpeg:{...Y.jpeg,...X.jpeg},png:{...Y.png,...X.png},webp:{...Y.webp,...X.webp},avif:{...Y.avif,...X.avif}}}async function TY($,Z,Y){let X=await MY();if(!X)return console.warn("[stx-media] ts-images not installed, skipping optimization"),{src:$,processed:!1};let J=await R5($,Z,Y);if(J)return J;try{let Q=rO($);if(!await h0(Q))return{src:$,processed:!1,errors:[`Source file not found: ${$}`]};let G=$L(Y,Z.preset),K=Y.outputDir||"dist/images",W=Y.baseUrl||"/images";await eO(K,{recursive:!0});let _=await g0(Q),U=oO($,aO($)),B=Z.outputFormat?[Z.outputFormat]:Y.defaultFormats||["avif","webp","jpeg"],z={src:$,processed:!0,variants:[],hash:_},q=null;if(Z.transformations&&Z.transformations.length>0)q=await s7(Q,Z.transformations,X);for(let j of B){let H=G[j]||{},O=`${U}-${_}.${j}`,F=tO(K,O);try{let L=await X.optimizeImage({input:q||Q,output:F,format:j,quality:H.quality,progressive:H.progressive});if(L){if(z.variants.push({path:F,url:`${W}/${O}`,width:L.width||0,height:L.height||0,format:j,size:L.outputSize||0}),!z.originalWidth&&L.width)z.originalWidth=L.width,z.originalHeight=L.height}}catch(L){z.errors=z.errors||[],z.errors.push(`Failed to optimize ${j}: ${L}`)}}if(Z.embedThumbhash||Z.placeholder==="thumbhash")try{let j=await X.generateThumbHash(Q);z.placeholder=j.dataUrl}catch(j){z.errors=z.errors||[],z.errors.push(`Failed to generate thumbhash: ${j}`)}if(Z.useDominantColor)try{let j=await X.generatePlaceholder(Q,{strategy:"dominant-color"});z.dominantColor=j.dominantColor}catch(j){z.errors=z.errors||[],z.errors.push(`Failed to extract dominant color: ${j}`)}return await M5($,Z,z,Y),z}catch(Q){return{src:$,processed:!1,errors:[`Processing failed: ${Q}`]}}}async function EY($,Z,Y,X){let J=await MY();if(!J)return{success:!1,error:"ts-images not installed"};try{return{success:!0,size:(await J.optimizeImage({input:$,output:X,format:Z,quality:Y}))?.outputSize}}catch(Q){return{success:!1,error:String(Q)}}}async function s7($,Z,Y){let X=Y||await MY();if(!X)return console.warn("[stx-media] ts-images not installed, skipping transformations"),null;try{let J=await X.decode($);for(let Q of Z){let G=Q.options||{};switch(Q.type){case"resize":if(G.width||G.height)J=await X.resize(J,{width:G.width,height:G.height,fit:G.fit});break;case"blur":if(G.sigma!==void 0)J=await X.blur(J,G.sigma);break;case"sharpen":if(G.amount!==void 0)J=await X.sharpen(J,G.amount);break;case"grayscale":J=await X.grayscale(J);break;case"rotate":if(G.angle!==void 0)J=await X.rotate(J,G.angle);break;case"flip":J=await X.flip(J);break;case"flop":J=await X.flop(J);break;case"brightness":if(G.value!==void 0)J=await X.brightness(J,G.value);break;case"contrast":if(G.value!==void 0)J=await X.contrast(J,G.value);break;case"saturation":if(G.value!==void 0)J=await X.saturation(J,G.value);break}}return await X.encode(J,"png")}catch(J){return console.error(`[stx-media] Transformation failed: ${J}`),null}}var MG=D(()=>{_$();RY()});import{resolve as ZL,basename as YL,extname as XL,join as JL}from"path";import{mkdir as QL}from"fs/promises";async function GL(){try{return await import("ts-images")}catch{return null}}async function r6($,Z,Y){let X=await GL();if(!X)return console.warn("[stx-media] ts-images not installed, skipping responsive generation"),null;let J=ZL($);if(!await h0(J))return console.warn(`[stx-media] Source file not found: ${$}`),null;try{let Q=Z.responsiveWidths||Y.breakpoints||KL,G=Z.formats||Y.defaultFormats||["avif","webp","jpeg"],K=Y.outputDir||"dist/images",W=Y.baseUrl||"/images";await QL(K,{recursive:!0});let _=await g0(J),U=YL($,XL($)),B=Y.formatQuality||{jpeg:{quality:82},png:{quality:80},webp:{quality:82},avif:{quality:75}},z={src:$,byFormat:{},srcsets:{}};for(let j of G){z.byFormat[j]=[];let H=[];for(let O of Q){let F=`${U}-${O}w-${_}.${j}`,L=JL(K,F),V=`${W}/${F}`;try{let A=B[j]?.quality||80;if(await h0(L)){z.byFormat[j].push({path:L,url:V,width:O,height:0,format:j,size:0}),H.push(`${V} ${O}w`);continue}let N=await X.processImage({input:J,output:L,format:j,quality:A,resize:{width:O}});if(N)z.byFormat[j].push({path:L,url:V,width:O,height:N.height||Math.round(O*(N.height||1)/(N.width||1)),format:j,size:N.outputSize||0}),H.push(`${V} ${O}w`)}catch(A){console.warn(`[stx-media] Failed to generate ${j} at ${O}w: ${A}`)}}z.srcsets[j]=H.join(", ")}let q=Z.placeholder||Y.placeholderStrategy||"thumbhash";if(q!=="none")try{if(q==="thumbhash"){let j=await X.generateThumbHash(J);z.placeholder={dataURL:j.dataUrl,width:j.width||32,height:j.height||32,strategy:"thumbhash"}}else{let j=await X.generatePlaceholder(J,{strategy:q,width:20});z.placeholder={dataURL:j.dataURL,width:j.width,height:j.height,strategy:q}}}catch(j){console.warn(`[stx-media] Failed to generate placeholder: ${j}`)}return z.sizes=Z.sizes||WL(Q),z}catch(Q){return console.error(`[stx-media] Responsive generation failed: ${Q}`),null}}function WL($){let Z=[...$].sort((X,J)=>X-J),Y=[];for(let X=0;X<Z.length-1;X++){let J=Z[X];Y.push(`(max-width: ${J}px) ${J}px`)}return Y.push(`${Z[Z.length-1]}px`),Y.join(", ")}function o6($,Z="width"){if(!$||$.length===0)return"";if(Z==="dpr")return $.filter((Y)=>Y.dpr).map((Y)=>`${Y.url} ${Y.dpr}x`).join(", ");return $.map((Y)=>`${Y.url} ${Y.width}w`).join(", ")}var KL;var TG=D(()=>{_$();KL=[320,480,640,768,1024,1280,1536,1920]});var EG={};G0(EG,{setCachedImageResult:()=>M5,processImage:()=>TY,optimizeImage:()=>EY,getCachedImageResult:()=>R5,generateSrcset:()=>o6,generateResponsiveVariants:()=>r6,clearImageCache:()=>wY,applyTransformations:()=>s7,ImageProcessorCache:()=>w5});var IY=D(()=>{MG();TG();RY()});async function _L(){try{return await Promise.resolve().then(() => (IY(),EG))}catch($){if(!IG)console.warn("[stx-media] Image processor not available, some features disabled:",$),IG=!0;return null}}async function B$($,Z={}){let Y=Z,X=$;if(X.process&&!X.skipOptimization){if(Y.tsImagesConfig?.enabled&&!Y.isDev)return qL(X,Y)}if(Y.processedResult?.processed)return CY($,Y.processedResult,Z);if(Y.responsiveVariants)return bG($,Y.responsiveVariants,Z);let{src:J,alt:Q,width:G,height:K,sizes:W,widths:_=R1,dpr:U,formats:B=c1,quality:z=DY,params:q={},placeholder:j="none",placeholderOptions:H={},lazy:O=!0,priority:F=!1,loading:L=F?"eager":t6,decoding:V=a6,fetchpriority:A,objectFit:N,objectPosition:w,crossorigin:M,referrerpolicy:T}=$,I=$.class,E=$.style,S=$.id,k=$.data||{},{isDev:b=!1,baseUrl:P=""}=Z;if(b&&!Z.optimize)return zL($);let x,C,f=S||`stx-img-${Math.random().toString(36).slice(2,8)}`;if(j!=="none"&&!F)try{x=await l7(J,{strategy:j,...H}),C=c7(f,x,H)}catch{}let g=U!==void 0&&G!==void 0,d;if(g)d=BL($,f,x,Z);else d=await UL($,f,x,Z);let p;if(F){let _0=B.includes("webp")?"webp":B[0],C0=W$(J,_,{...q,q:z},_0),w0=typeof W==="object"?j5(W):W||"100vw";p=`<link rel="preload" as="image" imagesrcset="${C0}" imagesizes="${w0}" />`}let c=[];if(!DG&&j!=="none")c.push(O5),DG=!0;if(C)c.push(C);let J0=O?SG(f):void 0;return{html:d,preloadLink:p,css:c.length>0?c.join(`
1167
- `):void 0,script:J0}}async function UL($,Z,Y,X){let{src:J,alt:Q,width:G,height:K,sizes:W,widths:_=R1,formats:U=c1,quality:B=DY,params:z={},lazy:q=!0,priority:j=!1,loading:H=j?"eager":t6,decoding:O=a6,fetchpriority:F,objectFit:L,objectPosition:V,crossorigin:A,referrerpolicy:N}=$,w=$.class,M=$.style,T=$.data||{},I=typeof W==="object"?j5(W):W||"100vw",E=[];for(let b of U){let P=W$(J,_,{...z,q:B},b),x=m7(b);if(q&&!j)E.push(` <source type="${x}" data-srcset="${P}" data-sizes="${I}" />`);else E.push(` <source type="${x}" srcset="${P}" sizes="${I}" />`)}let S=kY({src:H1(J,{...z,q:B}),alt:Q,width:G,height:K,loading:j?void 0:H,decoding:O,fetchpriority:j?"high":F,objectFit:L,objectPosition:V,crossorigin:A,referrerpolicy:N,className:kG(w,Y),style:SY(M,L,V,Y),lazy:q&&!j,data:T}),k;if(Y){let b=`background-image: url('${Y.dataURL}'); background-size: cover; background-position: center;`;k=`<div id="${Z}" class="stx-img-placeholder" style="${b}">
1166
+ `.trim();H5=new Map});import{createHash as VY}from"crypto";import{readFile as mO,stat as HG}from"fs/promises";async function g0($){try{let Z=await mO($);return VY("sha256").update(Z).digest("hex").slice(0,16)}catch{return""}}function OG($){return VY("sha256").update($).digest("hex").slice(0,16)}function i6($){return VY("sha256").update($).digest("hex").slice(0,16)}function L5($,Z){let Y=JSON.stringify(Z,Object.keys(Z).sort());return`${i6($)}-${i6(Y)}`}async function i7($){try{return(await HG($)).mtimeMs}catch{return 0}}async function h0($){try{return await HG($),!0}catch{return!1}}var _$=()=>{};import{mkdir as pO,readFile as FG,writeFile as cO,readdir as VG,rm as NY,stat as lO}from"fs/promises";import{join as F5,dirname as iO}from"path";async function nO($){try{await pO($,{recursive:!0})}catch{}}function NG($,Z,Y){return F5($,Y,`${Z}.json`)}async function LG($,Z,Y){if((Date.now()-$.createdAt)/86400000>Y)return!1;if(await i7(Z)!==$.srcMtime)return!1;return!0}async function V5($,Z,Y,X=n7){if(!X.enabled)return null;let J=L5($,Z),Q=U$.get(J);if(Q){if(await LG(Q,$,X.maxAge))return Q.lastAccessedAt=Date.now(),Q.data;U$.delete(J)}let G=NG(X.directory,J,Y);if(await h0(G))try{let K=await FG(G,"utf-8"),W=JSON.parse(K);if(await LG(W,$,X.maxAge))return W.lastAccessedAt=Date.now(),U$.set(J,W),W.data}catch{}return null}async function N5($,Z,Y,X,J=n7){if(!J.enabled)return;let Q=L5($,Z),G=await g0($),K=await i7($),W={key:Q,src:$,srcHash:G,srcMtime:K,optionsHash:L5("",Z),data:Y,createdAt:Date.now(),lastAccessedAt:Date.now()};U$.set(Q,W);let _=NG(J.directory,Q,X);try{await nO(iO(_)),await cO(_,JSON.stringify(W,null,2))}catch(U){console.warn(`[stx-media] Failed to write cache: ${U}`)}}async function A5($,Z=n7){if($==="all")U$.clear();else U$.clear();let Y=$==="all"?["image","video"]:[$];for(let X of Y){let J=F5(Z.directory,X);try{await NY(J,{recursive:!0,force:!0})}catch{}}}async function AG($=n7){let Z={memoryEntries:U$.size,diskEntries:{image:0,video:0},totalSizeMB:0};for(let Y of["image","video"]){let X=F5($.directory,Y);try{let J=await VG(X);Z.diskEntries[Y]=J.length;for(let Q of J){let G=F5(X,Q),K=await lO(G);Z.totalSizeMB+=K.size/1048576}}catch{}}return Z}async function wG($=n7){let Z=0,Y=$.maxAge*24*60*60*1000;for(let X of["image","video"]){let J=F5($.directory,X);try{let Q=await VG(J);for(let G of Q){let K=F5(J,G);try{let W=await FG(K,"utf-8"),_=JSON.parse(W);if(Date.now()-_.createdAt>Y)await NY(K),U$.delete(_.key),Z++}catch{await NY(K).catch(()=>{}),Z++}}}catch{}}return Z}var U$,n7;var n6=D(()=>{_$();U$=new Map,n7={enabled:!0,directory:".stx/media-cache",maxAge:30,maxSize:500}});class w5{config;constructor($={}){this.config={...sO,...$}}async get($,Z){return V5($,Z,"image",this.config)}async set($,Z,Y){return N5($,Z,Y,"image",this.config)}async clear(){return A5("image",this.config)}updateConfig($){this.config={...this.config,...$}}}function AY($){if(!s6)s6=new w5($);else if($)s6.updateConfig($);return s6}async function R5($,Z,Y){let X=Y?{directory:`${Y.outputDir}/../.cache`}:{};return AY(X).get($,Z)}async function M5($,Z,Y,X){let J=X?{directory:`${X.outputDir}/../.cache`}:{};return AY(J).set($,Z,Y)}async function wY(){return AY().clear()}var sO,s6=null;var RY=D(()=>{n6();sO={enabled:!0,directory:".stx/media-cache",maxAge:30,maxSize:500,cacheVariants:!0,cachePlaceholders:!0}});import{resolve as rO,basename as oO,extname as aO,join as tO}from"path";import{mkdir as eO}from"fs/promises";async function MY(){try{return await import("ts-images")}catch{return null}}function RG($){switch($){case"quality":return{jpeg:{quality:90,mozjpeg:!0,progressive:!0},png:{compressionLevel:6,palette:!1},webp:{quality:90,effort:6,smartSubsample:!0},avif:{quality:85,effort:6}};case"performance":return{jpeg:{quality:70,mozjpeg:!0,progressive:!0},png:{compressionLevel:9,palette:!0},webp:{quality:70,effort:4,smartSubsample:!0},avif:{quality:60,effort:2}};case"web":default:return{jpeg:{quality:82,mozjpeg:!0,progressive:!0},png:{compressionLevel:8,palette:!1},webp:{quality:82,effort:5,smartSubsample:!0},avif:{quality:75,effort:4}}}}function $L($,Z){let Y=Z?RG(Z):RG("web"),X=$.formatQuality||{};return{jpeg:{...Y.jpeg,...X.jpeg},png:{...Y.png,...X.png},webp:{...Y.webp,...X.webp},avif:{...Y.avif,...X.avif}}}async function TY($,Z,Y){let X=await MY();if(!X)return console.warn("[stx-media] ts-images not installed, skipping optimization"),{src:$,processed:!1};let J=await R5($,Z,Y);if(J)return J;try{let Q=rO($);if(!await h0(Q))return{src:$,processed:!1,errors:[`Source file not found: ${$}`]};let G=$L(Y,Z.preset),K=Y.outputDir||"dist/images",W=Y.baseUrl||"/images";await eO(K,{recursive:!0});let _=await g0(Q),U=oO($,aO($)),B=Z.outputFormat?[Z.outputFormat]:Y.defaultFormats||["avif","webp","jpeg"],z={src:$,processed:!0,variants:[],hash:_},q=null;if(Z.transformations&&Z.transformations.length>0)q=await s7(Q,Z.transformations,X);for(let j of B){let H=G[j]||{},O=`${U}-${_}.${j}`,F=tO(K,O);try{let L=await X.optimizeImage({input:q||Q,output:F,format:j,quality:H.quality,progressive:H.progressive});if(L){if(z.variants.push({path:F,url:`${W}/${O}`,width:L.width||0,height:L.height||0,format:j,size:L.outputSize||0}),!z.originalWidth&&L.width)z.originalWidth=L.width,z.originalHeight=L.height}}catch(L){z.errors=z.errors||[],z.errors.push(`Failed to optimize ${j}: ${L}`)}}if(Z.embedThumbhash||Z.placeholder==="thumbhash")try{let j=await X.generateThumbHash(Q);z.placeholder=j.dataUrl}catch(j){z.errors=z.errors||[],z.errors.push(`Failed to generate thumbhash: ${j}`)}if(Z.useDominantColor)try{let j=await X.generatePlaceholder(Q,{strategy:"dominant-color"});z.dominantColor=j.dominantColor}catch(j){z.errors=z.errors||[],z.errors.push(`Failed to extract dominant color: ${j}`)}return await M5($,Z,z,Y),z}catch(Q){return{src:$,processed:!1,errors:[`Processing failed: ${Q}`]}}}async function EY($,Z,Y,X){let J=await MY();if(!J)return{success:!1,error:"ts-images not installed"};try{return{success:!0,size:(await J.optimizeImage({input:$,output:X,format:Z,quality:Y}))?.outputSize}}catch(Q){return{success:!1,error:String(Q)}}}async function s7($,Z,Y){let X=Y||await MY();if(!X)return console.warn("[stx-media] ts-images not installed, skipping transformations"),null;try{let J=await X.decode($);for(let Q of Z){let G=Q.options||{};switch(Q.type){case"resize":if(G.width||G.height)J=await X.resize(J,{width:G.width,height:G.height,fit:G.fit});break;case"blur":if(G.sigma!==void 0)J=await X.blur(J,G.sigma);break;case"sharpen":if(G.amount!==void 0)J=await X.sharpen(J,G.amount);break;case"grayscale":J=await X.grayscale(J);break;case"rotate":if(G.angle!==void 0)J=await X.rotate(J,G.angle);break;case"flip":J=await X.flip(J);break;case"flop":J=await X.flop(J);break;case"brightness":if(G.value!==void 0)J=await X.brightness(J,G.value);break;case"contrast":if(G.value!==void 0)J=await X.contrast(J,G.value);break;case"saturation":if(G.value!==void 0)J=await X.saturation(J,G.value);break}}return await X.encode(J,"png")}catch(J){return console.error(`[stx-media] Transformation failed: ${J}`),null}}var MG=D(()=>{_$();RY()});import{resolve as ZL,basename as YL,extname as XL,join as JL}from"path";import{mkdir as QL}from"fs/promises";async function GL(){try{return await import("ts-images")}catch{return null}}async function r6($,Z,Y){let X=await GL();if(!X)return console.warn("[stx-media] ts-images not installed, skipping responsive generation"),null;let J=ZL($);if(!await h0(J))return console.warn(`[stx-media] Source file not found: ${$}`),null;try{let Q=Z.responsiveWidths||Y.breakpoints||KL,G=Z.formats||Y.defaultFormats||["avif","webp","jpeg"],K=Y.outputDir||"dist/images",W=Y.baseUrl||"/images";await QL(K,{recursive:!0});let _=await g0(J),U=YL($,XL($)),B=Y.formatQuality||{jpeg:{quality:82},png:{quality:80},webp:{quality:82},avif:{quality:75}},z={src:$,byFormat:{},srcsets:{}};for(let j of G){z.byFormat[j]=[];let H=[];for(let O of Q){let F=`${U}-${O}w-${_}.${j}`,L=JL(K,F),V=`${W}/${F}`;try{let A=B[j]?.quality||80;if(await h0(L)){z.byFormat[j].push({path:L,url:V,width:O,height:0,format:j,size:0}),H.push(`${V} ${O}w`);continue}let N=await X.processImage({input:J,output:L,format:j,quality:A,resize:{width:O}});if(N)z.byFormat[j].push({path:L,url:V,width:O,height:N.height||Math.round(O*(N.height||1)/(N.width||1)),format:j,size:N.outputSize||0}),H.push(`${V} ${O}w`)}catch(A){console.warn(`[stx-media] Failed to generate ${j} at ${O}w: ${A}`)}}z.srcsets[j]=H.join(", ")}let q=Z.placeholder||Y.placeholderStrategy||"thumbhash";if(q!=="none")try{if(q==="thumbhash"){let j=await X.generateThumbHash(J);z.placeholder={dataURL:j.dataUrl,width:j.width||32,height:j.height||32,strategy:"thumbhash"}}else{let j=await X.generatePlaceholder(J,{strategy:q,width:20});z.placeholder={dataURL:j.dataURL,width:j.width,height:j.height,strategy:q}}}catch(j){console.warn(`[stx-media] Failed to generate placeholder: ${j}`)}return z.sizes=Z.sizes||WL(Q),z}catch(Q){return console.error(`[stx-media] Responsive generation failed: ${Q}`),null}}function WL($){let Z=[...$].sort((X,J)=>X-J),Y=[];for(let X=0;X<Z.length-1;X++){let J=Z[X];Y.push(`(max-width: ${J}px) ${J}px`)}return Y.push(`${Z[Z.length-1]}px`),Y.join(", ")}function o6($,Z="width"){if(!$||$.length===0)return"";if(Z==="dpr")return $.filter((Y)=>Y.dpr).map((Y)=>`${Y.url} ${Y.dpr}x`).join(", ");return $.map((Y)=>`${Y.url} ${Y.width}w`).join(", ")}var KL;var TG=D(()=>{_$();KL=[320,480,640,768,1024,1280,1536,1920]});var EG={};G0(EG,{setCachedImageResult:()=>M5,processImage:()=>TY,optimizeImage:()=>EY,getCachedImageResult:()=>R5,generateSrcset:()=>o6,generateResponsiveVariants:()=>r6,clearImageCache:()=>wY,applyTransformations:()=>s7,ImageProcessorCache:()=>w5});var IY=D(()=>{MG();TG();RY()});async function _L(){try{return await Promise.resolve().then(() => (IY(),EG))}catch($){if(!IG)console.warn("[stx-media] Image processor not available, some features disabled:",$),IG=!0;return null}}async function B$($,Z={}){let Y=Z,X=$;if(X.process&&!X.skipOptimization){if(Y.tsImagesConfig?.enabled&&!Y.isDev)return qL(X,Y)}if(Y.processedResult?.processed)return CY($,Y.processedResult,Z);if(Y.responsiveVariants)return bG($,Y.responsiveVariants,Z);let{src:J,alt:Q,width:G,height:K,sizes:W,widths:_=R1,dpr:U,formats:B=c1,quality:z=DY,params:q={},placeholder:j="none",placeholderOptions:H={},lazy:O=!0,priority:F=!1,loading:L=F?"eager":t6,decoding:V=a6,fetchpriority:A,objectFit:N,objectPosition:w,crossorigin:M,referrerpolicy:T}=$,E=$.class,I=$.style,S=$.id,k=$.data||{},{isDev:P=!1,baseUrl:f=""}=Z;if(P&&!Z.optimize)return zL($);let b,C,x=S||`stx-img-${Math.random().toString(36).slice(2,8)}`;if(j!=="none"&&!F)try{b=await l7(J,{strategy:j,...H}),C=c7(x,b,H)}catch{}let g=U!==void 0&&G!==void 0,d;if(g)d=BL($,x,b,Z);else d=await UL($,x,b,Z);let p;if(F){let _0=B.includes("webp")?"webp":B[0],C0=W$(J,_,{...q,q:z},_0),w0=typeof W==="object"?j5(W):W||"100vw";p=`<link rel="preload" as="image" imagesrcset="${C0}" imagesizes="${w0}" />`}let c=[];if(!DG&&j!=="none")c.push(O5),DG=!0;if(C)c.push(C);let J0=O?SG(x):void 0;return{html:d,preloadLink:p,css:c.length>0?c.join(`
1167
+ `):void 0,script:J0}}async function UL($,Z,Y,X){let{src:J,alt:Q,width:G,height:K,sizes:W,widths:_=R1,formats:U=c1,quality:B=DY,params:z={},lazy:q=!0,priority:j=!1,loading:H=j?"eager":t6,decoding:O=a6,fetchpriority:F,objectFit:L,objectPosition:V,crossorigin:A,referrerpolicy:N}=$,w=$.class,M=$.style,T=$.data||{},E=typeof W==="object"?j5(W):W||"100vw",I=[];for(let P of U){let f=W$(J,_,{...z,q:B},P),b=m7(P);if(q&&!j)I.push(` <source type="${b}" data-srcset="${f}" data-sizes="${E}" />`);else I.push(` <source type="${b}" srcset="${f}" sizes="${E}" />`)}let S=kY({src:H1(J,{...z,q:B}),alt:Q,width:G,height:K,loading:j?void 0:H,decoding:O,fetchpriority:j?"high":F,objectFit:L,objectPosition:V,crossorigin:A,referrerpolicy:N,className:kG(w,Y),style:SY(M,L,V,Y),lazy:q&&!j,data:T}),k;if(Y){let P=`background-image: url('${Y.dataURL}'); background-size: cover; background-position: center;`;k=`<div id="${Z}" class="stx-img-placeholder" style="${P}">
1168
1168
  <picture>
1169
- ${E.join(`
1169
+ ${I.join(`
1170
1170
  `)}
1171
1171
  <img ${S} />
1172
1172
  </picture>
1173
1173
  </div>`}else k=`<picture${Z?` id="${Z}"`:""}>
1174
- ${E.join(`
1174
+ ${I.join(`
1175
1175
  `)}
1176
1176
  <img ${S} />
1177
- </picture>`;return k}function BL($,Z,Y,X){let{src:J,alt:Q,width:G,height:K,dpr:W=[1,2,3],quality:_=DY,params:U={},lazy:B=!0,priority:z=!1,loading:q=z?"eager":t6,decoding:j=a6,fetchpriority:H,objectFit:O,objectPosition:F,crossorigin:L,referrerpolicy:V}=$,A=$.class,N=$.style,w=$.data||{},M=typeof G==="number"?G:Number.parseInt(String(G),10),T=q5(J,M,W,{...U,q:_}),I=kY({src:H1(J,{...U,w:M,q:_}),alt:Q,width:G,height:K,loading:z?void 0:q,decoding:j,fetchpriority:z?"high":H,objectFit:O,objectPosition:F,crossorigin:L,referrerpolicy:V,className:kG(A,Y),style:SY(N,O,F,Y),lazy:B&&!z,data:w}),E=B&&!z?`data-srcset="${T}"`:`srcset="${T}"`;if(Y){let S=`background-image: url('${Y.dataURL}'); background-size: cover; background-position: center;`;return`<div id="${Z}" class="stx-img-placeholder" style="${S}">
1178
- <img ${I} ${E} />
1179
- </div>`}return`<img ${Z?`id="${Z}" `:""}${I} ${E} />`}function zL($){let{src:Z,alt:Y,width:X,height:J,loading:Q=t6,decoding:G=a6,fetchpriority:K,objectFit:W,objectPosition:_,crossorigin:U,referrerpolicy:B,priority:z=!1}=$,q=$.class,j=$.style,H=$.id,O=$.data||{};return{html:`<img ${kY({src:Z,alt:Y,width:X,height:J,loading:z?"eager":Q,decoding:G,fetchpriority:z?"high":K,objectFit:W,objectPosition:_,crossorigin:U,referrerpolicy:B,className:q,style:SY(j,W,_),id:H,data:O})} />`}}function kY($){let Z=[];if($.lazy)Z.push(`data-src="${O1($.src)}"`),Z.push('src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"');else Z.push(`src="${O1($.src)}"`);if(Z.push(`alt="${O1($.alt)}"`),$.width)Z.push(`width="${$.width}"`);if($.height)Z.push(`height="${$.height}"`);if($.loading)Z.push(`loading="${$.loading}"`);if($.decoding)Z.push(`decoding="${$.decoding}"`);if($.fetchpriority)Z.push(`fetchpriority="${$.fetchpriority}"`);if($.crossorigin)Z.push(`crossorigin="${$.crossorigin}"`);if($.referrerpolicy)Z.push(`referrerpolicy="${$.referrerpolicy}"`);if($.className)Z.push(`class="${O1($.className)}"`);if($.style)Z.push(`style="${O1($.style)}"`);if($.id)Z.push(`id="${O1($.id)}"`);if($.data)for(let[Y,X]of Object.entries($.data))Z.push(`data-${Y}="${O1(X)}"`);if($.lazy)Z.push("data-stx-lazy");return Z.join(" ")}function kG($,Z){let Y=[];if($)Y.push($);if(Z)Y.push("stx-img-blur");return Y.join(" ")||""}function SY($,Z,Y,X){let J=[];if(Z)J.push(`object-fit: ${Z}`);if(Y)J.push(`object-position: ${Y}`);if(X)J.push("opacity: 0; transition: opacity 300ms ease-out");if($)J.push($);return J.join("; ")}function O1($){return $.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#039;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function SG($){return`
1177
+ </picture>`;return k}function BL($,Z,Y,X){let{src:J,alt:Q,width:G,height:K,dpr:W=[1,2,3],quality:_=DY,params:U={},lazy:B=!0,priority:z=!1,loading:q=z?"eager":t6,decoding:j=a6,fetchpriority:H,objectFit:O,objectPosition:F,crossorigin:L,referrerpolicy:V}=$,A=$.class,N=$.style,w=$.data||{},M=typeof G==="number"?G:Number.parseInt(String(G),10),T=q5(J,M,W,{...U,q:_}),E=kY({src:H1(J,{...U,w:M,q:_}),alt:Q,width:G,height:K,loading:z?void 0:q,decoding:j,fetchpriority:z?"high":H,objectFit:O,objectPosition:F,crossorigin:L,referrerpolicy:V,className:kG(A,Y),style:SY(N,O,F,Y),lazy:B&&!z,data:w}),I=B&&!z?`data-srcset="${T}"`:`srcset="${T}"`;if(Y){let S=`background-image: url('${Y.dataURL}'); background-size: cover; background-position: center;`;return`<div id="${Z}" class="stx-img-placeholder" style="${S}">
1178
+ <img ${E} ${I} />
1179
+ </div>`}return`<img ${Z?`id="${Z}" `:""}${E} ${I} />`}function zL($){let{src:Z,alt:Y,width:X,height:J,loading:Q=t6,decoding:G=a6,fetchpriority:K,objectFit:W,objectPosition:_,crossorigin:U,referrerpolicy:B,priority:z=!1}=$,q=$.class,j=$.style,H=$.id,O=$.data||{};return{html:`<img ${kY({src:Z,alt:Y,width:X,height:J,loading:z?"eager":Q,decoding:G,fetchpriority:z?"high":K,objectFit:W,objectPosition:_,crossorigin:U,referrerpolicy:B,className:q,style:SY(j,W,_),id:H,data:O})} />`}}function kY($){let Z=[];if($.lazy)Z.push(`data-src="${O1($.src)}"`),Z.push('src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"');else Z.push(`src="${O1($.src)}"`);if(Z.push(`alt="${O1($.alt)}"`),$.width)Z.push(`width="${$.width}"`);if($.height)Z.push(`height="${$.height}"`);if($.loading)Z.push(`loading="${$.loading}"`);if($.decoding)Z.push(`decoding="${$.decoding}"`);if($.fetchpriority)Z.push(`fetchpriority="${$.fetchpriority}"`);if($.crossorigin)Z.push(`crossorigin="${$.crossorigin}"`);if($.referrerpolicy)Z.push(`referrerpolicy="${$.referrerpolicy}"`);if($.className)Z.push(`class="${O1($.className)}"`);if($.style)Z.push(`style="${O1($.style)}"`);if($.id)Z.push(`id="${O1($.id)}"`);if($.data)for(let[Y,X]of Object.entries($.data))Z.push(`data-${Y}="${O1(X)}"`);if($.lazy)Z.push("data-stx-lazy");return Z.join(" ")}function kG($,Z){let Y=[];if($)Y.push($);if(Z)Y.push("stx-img-blur");return Y.join(" ")||""}function SY($,Z,Y,X){let J=[];if(Z)J.push(`object-fit: ${Z}`);if(Y)J.push(`object-position: ${Y}`);if(X)J.push("opacity: 0; transition: opacity 300ms ease-out");if($)J.push($);return J.join("; ")}function O1($){return $.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#039;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function SG($){return`
1180
1180
  (function() {
1181
1181
  const container = document.getElementById('${$}');
1182
1182
  if (!container) return;
@@ -1213,7 +1213,7 @@ ${E.join(`
1213
1213
 
1214
1214
  observer.observe(container);
1215
1215
  })();
1216
- `.trim()}function e6($){let Z=$.match(/<Img\s+([^>]*?)\/?>/);if(!Z)return null;let Y=Z[1],X={},J=/(:?)(\w+)(?:=(?:"([^"]*)"|'([^']*)'|\{([^}]+)\}))?/g,Q;while((Q=J.exec(Y))!==null){let[,G,K,W,_,U]=Q,B=W??_??U??!0;if(G===":"&&typeof B==="string")try{X[K]=JSON.parse(B)}catch{X[K]=B}else switch(K){case"src":X.src=String(B);break;case"alt":X.alt=String(B);break;case"width":X.width=Number(B)||B;break;case"height":X.height=Number(B)||B;break;case"sizes":X.sizes=String(B);break;case"quality":X.quality=Number(B);break;case"placeholder":X.placeholder=B;break;case"lazy":X.lazy=B===!0||B==="true";break;case"priority":X.priority=B===!0||B==="true";break;case"class":X.class=String(B);break;case"style":X.style=String(B);break;case"id":X.id=String(B);break;case"loading":X.loading=B;break;case"decoding":X.decoding=B;break;case"fetchpriority":X.fetchpriority=B;break;case"objectFit":X.objectFit=B;break;case"objectPosition":X.objectPosition=String(B);break;case"crossorigin":X.crossorigin=B;break}}if(!X.src||!X.alt)return null;return X}async function bY($,Z={}){let Y=/<Img\s+[^>]*?\/?>/g,X=[],J=[],Q=[],G=$,K=[],W;while((W=Y.exec($))!==null)K.push({match:W[0],index:W.index});for(let _=K.length-1;_>=0;_--){let{match:U}=K[_],B=e6(U);if(B){let z=await B$(B,Z);if(G=G.replace(U,z.html),z.preloadLink)X.push(z.preloadLink);if(z.css)J.push(z.css);if(z.script)Q.push(z.script)}}return{html:G,preloadLinks:X,styles:J,scripts:Q}}async function qL($,Z){let Y=await _L();if(!Y)return B$({...$,process:!1},Z);let X=Z.tsImagesConfig;if($.responsiveWidths&&$.responsiveWidths.length>0||$.widths&&$.widths.length>0||!$.width&&!$.dpr){let Q=await Y.generateResponsiveVariants($.src,$,X);if(Q)return bG($,Q,Z)}else{let Q=await Y.processImage($.src,$,X);if(Q.processed)return CY($,Q,Z)}return B$({...$,process:!1},Z)}async function CY($,Z,Y){let{alt:X,width:J,height:Q,lazy:G=!0,priority:K=!1,objectFit:W,objectPosition:_,crossorigin:U,referrerpolicy:B}=$,z=$.class,q=$.style,j=$.id||`stx-img-${Math.random().toString(36).slice(2,8)}`,H=$.data||{},O=Z.variants||[],F=O.find((C)=>C.format==="jpeg")||O.find((C)=>C.format==="webp")||O[0],L=F?.url||$.src,V=O.filter((C)=>C.format===(F?.format||"jpeg")).map((C)=>`${C.url} ${C.width}w`).join(", "),A=new Map;for(let C of O){if(!A.has(C.format))A.set(C.format,[]);A.get(C.format).push(C)}let N=[],w=["avif","webp","jpeg","png"];for(let C of w){let f=A.get(C);if(f&&f.length>0){let g=f.map((p)=>`${p.url} ${p.width}w`).join(", "),d=m7(C);if(G&&!K)N.push(` <source type="${d}" data-srcset="${g}" />`);else N.push(` <source type="${d}" srcset="${g}" />`)}}let M=[];if(G&&!K){if(M.push(`data-src="${O1(L)}"`),M.push('src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"'),V)M.push(`data-srcset="${V}"`)}else if(M.push(`src="${O1(L)}"`),V)M.push(`srcset="${V}"`);M.push(`alt="${O1(X)}"`);let T=J||Z.originalWidth,I=Q||Z.originalHeight;if(T)M.push(`width="${T}"`);if(I)M.push(`height="${I}"`);if(!K)M.push(`loading="${G?"lazy":"eager"}"`);if(M.push('decoding="async"'),K)M.push('fetchpriority="high"');if(U)M.push(`crossorigin="${U}"`);if(B)M.push(`referrerpolicy="${B}"`);let E=[];if(W)E.push(`object-fit: ${W}`);if(_)E.push(`object-position: ${_}`);if(Z.placeholder&&G)E.push("opacity: 0; transition: opacity 300ms ease-out");if(q)E.push(q);if(E.length>0)M.push(`style="${E.join("; ")}"`);let S=[];if(z)S.push(z);if(Z.placeholder)S.push("stx-img-blur");if(S.length>0)M.push(`class="${S.join(" ")}"`);if(G&&!K)M.push("data-stx-lazy");for(let[C,f]of Object.entries(H))M.push(`data-${C}="${O1(f)}"`);let k;if(Z.placeholder||Z.dominantColor&&$.useDominantColor){let C=Z.placeholder?`background-image: url('${Z.placeholder}'); background-size: cover; background-position: center;`:`background-color: ${Z.dominantColor};`;k=`<div id="${j}" class="stx-img-placeholder" style="${C}">
1216
+ `.trim()}function e6($){let Z=$.match(/<Img\s+([^>]*?)\/?>/);if(!Z)return null;let Y=Z[1],X={},J=/(:?)(\w+)(?:=(?:"([^"]*)"|'([^']*)'|\{([^}]+)\}))?/g,Q;while((Q=J.exec(Y))!==null){let[,G,K,W,_,U]=Q,B=W??_??U??!0;if(G===":"&&typeof B==="string")try{X[K]=JSON.parse(B)}catch{X[K]=B}else switch(K){case"src":X.src=String(B);break;case"alt":X.alt=String(B);break;case"width":X.width=Number(B)||B;break;case"height":X.height=Number(B)||B;break;case"sizes":X.sizes=String(B);break;case"quality":X.quality=Number(B);break;case"placeholder":X.placeholder=B;break;case"lazy":X.lazy=B===!0||B==="true";break;case"priority":X.priority=B===!0||B==="true";break;case"class":X.class=String(B);break;case"style":X.style=String(B);break;case"id":X.id=String(B);break;case"loading":X.loading=B;break;case"decoding":X.decoding=B;break;case"fetchpriority":X.fetchpriority=B;break;case"objectFit":X.objectFit=B;break;case"objectPosition":X.objectPosition=String(B);break;case"crossorigin":X.crossorigin=B;break}}if(!X.src||!X.alt)return null;return X}async function bY($,Z={}){let Y=/<Img\s+[^>]*?\/?>/g,X=[],J=[],Q=[],G=$,K=[],W;while((W=Y.exec($))!==null)K.push({match:W[0],index:W.index});for(let _=K.length-1;_>=0;_--){let{match:U}=K[_],B=e6(U);if(B){let z=await B$(B,Z);if(G=G.replace(U,z.html),z.preloadLink)X.push(z.preloadLink);if(z.css)J.push(z.css);if(z.script)Q.push(z.script)}}return{html:G,preloadLinks:X,styles:J,scripts:Q}}async function qL($,Z){let Y=await _L();if(!Y)return B$({...$,process:!1},Z);let X=Z.tsImagesConfig;if($.responsiveWidths&&$.responsiveWidths.length>0||$.widths&&$.widths.length>0||!$.width&&!$.dpr){let Q=await Y.generateResponsiveVariants($.src,$,X);if(Q)return bG($,Q,Z)}else{let Q=await Y.processImage($.src,$,X);if(Q.processed)return CY($,Q,Z)}return B$({...$,process:!1},Z)}async function CY($,Z,Y){let{alt:X,width:J,height:Q,lazy:G=!0,priority:K=!1,objectFit:W,objectPosition:_,crossorigin:U,referrerpolicy:B}=$,z=$.class,q=$.style,j=$.id||`stx-img-${Math.random().toString(36).slice(2,8)}`,H=$.data||{},O=Z.variants||[],F=O.find((C)=>C.format==="jpeg")||O.find((C)=>C.format==="webp")||O[0],L=F?.url||$.src,V=O.filter((C)=>C.format===(F?.format||"jpeg")).map((C)=>`${C.url} ${C.width}w`).join(", "),A=new Map;for(let C of O){if(!A.has(C.format))A.set(C.format,[]);A.get(C.format).push(C)}let N=[],w=["avif","webp","jpeg","png"];for(let C of w){let x=A.get(C);if(x&&x.length>0){let g=x.map((p)=>`${p.url} ${p.width}w`).join(", "),d=m7(C);if(G&&!K)N.push(` <source type="${d}" data-srcset="${g}" />`);else N.push(` <source type="${d}" srcset="${g}" />`)}}let M=[];if(G&&!K){if(M.push(`data-src="${O1(L)}"`),M.push('src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"'),V)M.push(`data-srcset="${V}"`)}else if(M.push(`src="${O1(L)}"`),V)M.push(`srcset="${V}"`);M.push(`alt="${O1(X)}"`);let T=J||Z.originalWidth,E=Q||Z.originalHeight;if(T)M.push(`width="${T}"`);if(E)M.push(`height="${E}"`);if(!K)M.push(`loading="${G?"lazy":"eager"}"`);if(M.push('decoding="async"'),K)M.push('fetchpriority="high"');if(U)M.push(`crossorigin="${U}"`);if(B)M.push(`referrerpolicy="${B}"`);let I=[];if(W)I.push(`object-fit: ${W}`);if(_)I.push(`object-position: ${_}`);if(Z.placeholder&&G)I.push("opacity: 0; transition: opacity 300ms ease-out");if(q)I.push(q);if(I.length>0)M.push(`style="${I.join("; ")}"`);let S=[];if(z)S.push(z);if(Z.placeholder)S.push("stx-img-blur");if(S.length>0)M.push(`class="${S.join(" ")}"`);if(G&&!K)M.push("data-stx-lazy");for(let[C,x]of Object.entries(H))M.push(`data-${C}="${O1(x)}"`);let k;if(Z.placeholder||Z.dominantColor&&$.useDominantColor){let C=Z.placeholder?`background-image: url('${Z.placeholder}'); background-size: cover; background-position: center;`:`background-color: ${Z.dominantColor};`;k=`<div id="${j}" class="stx-img-placeholder" style="${C}">
1217
1217
  <picture>
1218
1218
  ${N.join(`
1219
1219
  `)}
@@ -1223,11 +1223,11 @@ ${N.join(`
1223
1223
  ${N.join(`
1224
1224
  `)}
1225
1225
  <img ${M.join(" ")} />
1226
- </picture>`;let b=[];if(Z.placeholder)b.push(O5);let P=G?SG(j):void 0,x;if(K&&V)x=`<link rel="preload" as="image" imagesrcset="${V}" />`;return{html:k,preloadLink:x,css:b.length>0?b.join(`
1227
- `):void 0,script:P}}async function bG($,Z,Y){let X={src:Z.src,processed:!0,variants:[],placeholder:Z.placeholder?.dataURL,originalWidth:Z.placeholder?.width,originalHeight:Z.placeholder?.height};for(let[J,Q]of Object.entries(Z.byFormat))if(Q)X.variants.push(...Q);return CY($,X,Y)}var IG=!1,DY=80,a6="async",t6="lazy",DG=!1;var yY=D(()=>{c6();FY()});function $3(){return T0({name:"img",hasEndTag:!1,description:"Render an optimized responsive image with srcset and lazy loading",transform:async($,Z,Y,X)=>{let{src:J,alt:Q,options:G}=jL($,Z,Y);if(!J)return console.warn("@img directive: missing src argument"),"<!-- @img: missing src -->";let K={src:J,alt:Q||"",widths:G.widths||R1,formats:G.formats||c1,quality:G.quality,sizes:G.sizes,dpr:G.dpr,params:G.params,placeholder:G.placeholder,placeholderOptions:G.placeholderOptions,lazy:G.lazy!==!1,priority:G.priority||!1,loading:G.loading,decoding:G.decoding,fetchpriority:G.fetchpriority,objectFit:G.objectFit,objectPosition:G.objectPosition,class:G.class,style:G.style,id:G.id,width:G.width,height:G.height},W=Y.__isDev||!1,_=await B$(K,{isDev:W}),U=_.html;if(_.preloadLink)U=_.preloadLink+`
1226
+ </picture>`;let P=[];if(Z.placeholder)P.push(O5);let f=G?SG(j):void 0,b;if(K&&V)b=`<link rel="preload" as="image" imagesrcset="${V}" />`;return{html:k,preloadLink:b,css:P.length>0?P.join(`
1227
+ `):void 0,script:f}}async function bG($,Z,Y){let X={src:Z.src,processed:!0,variants:[],placeholder:Z.placeholder?.dataURL,originalWidth:Z.placeholder?.width,originalHeight:Z.placeholder?.height};for(let[J,Q]of Object.entries(Z.byFormat))if(Q)X.variants.push(...Q);return CY($,X,Y)}var IG=!1,DY=80,a6="async",t6="lazy",DG=!1;var yY=D(()=>{c6();FY()});function $3(){return T0({name:"img",hasEndTag:!1,description:"Render an optimized responsive image with srcset and lazy loading",transform:async($,Z,Y,X)=>{let{src:J,alt:Q,options:G}=jL($,Z,Y);if(!J)return console.warn("@img directive: missing src argument"),"<!-- @img: missing src -->";let K={src:J,alt:Q||"",widths:G.widths||R1,formats:G.formats||c1,quality:G.quality,sizes:G.sizes,dpr:G.dpr,params:G.params,placeholder:G.placeholder,placeholderOptions:G.placeholderOptions,lazy:G.lazy!==!1,priority:G.priority||!1,loading:G.loading,decoding:G.decoding,fetchpriority:G.fetchpriority,objectFit:G.objectFit,objectPosition:G.objectPosition,class:G.class,style:G.style,id:G.id,width:G.width,height:G.height},W=Y.__isDev||!1,_=await B$(K,{isDev:W}),U=_.html;if(_.preloadLink)U=_.preloadLink+`
1228
1228
  `+U;if(_.css)U+=`
1229
1229
  <style>${_.css}</style>`;if(_.script)U+=`
1230
- <script>${_.script}</script>`;return U},defaults:{src:"",alt:"",options:{lazy:!0,placeholder:"none"}}})}function jL($,Z,Y){if(Z.src)return{src:String(Z.src),alt:String(Z.alt||""),options:Z.options||{}};let X=$.trim();if(X.startsWith("@img(")||X.startsWith("("))X=X.replace(/^@img\(/,"").replace(/^\(/,"").replace(/\)$/,"");let J=HL(X),Q=PY(J[0],Y)||"",G=PY(J[1],Y)||"",K={};if(J[2]){let W=PY(J[2],Y);if(typeof W==="object"&&W!==null)K=W;else if(typeof J[2]==="string")try{K=JSON.parse(J[2])}catch{}}return{src:Q,alt:G,options:K}}function HL($){let Z=[],Y="",X=!1,J="",Q=0,G=0;for(let K=0;K<$.length;K++){let W=$[K],_=K>0?$[K-1]:"";if((W==='"'||W==="'"||W==="`")&&_!=="\\"){if(!X)X=!0,J=W;else if(W===J)X=!1,J="";else Y+=W;continue}if(!X){if(W==="{")Q++;if(W==="}")Q--;if(W==="[")G++;if(W==="]")G--;if(W===","&&Q===0&&G===0){Z.push(Y.trim()),Y="";continue}}Y+=W}if(Y.trim())Z.push(Y.trim());return Z}function PY($,Z){if(typeof $!=="string")return $;let Y=$.trim();if(Y.startsWith('"')&&Y.endsWith('"')||Y.startsWith("'")&&Y.endsWith("'"))return Y.slice(1,-1);if(!Y.startsWith("/")&&!Y.startsWith(".")&&!Y.startsWith("http")&&!Y.startsWith("{")){let X=Z[Y];if(X!==void 0)return X}if(Y.startsWith("{")||Y.startsWith("["))try{return JSON.parse(Y)}catch{}return Y}var r7;var xY=D(()=>{D7();yY();c6();r7=$3()});class T5{config;constructor($={}){this.config={...OL,...$}}async get($,Z){return V5($,Z,"video",this.config)}async set($,Z,Y){return N5($,Z,Y,"video",this.config)}async clear(){return A5("video",this.config)}updateConfig($){this.config={...this.config,...$}}}function vY($){if(!Z3)Z3=new T5($);else if($)Z3.updateConfig($);return Z3}async function E5($,Z,Y){let X=Y?{directory:`${Y.outputDir}/../.cache`}:{};return vY(X).get($,Z)}async function I5($,Z,Y,X){let J=X?{directory:`${X.outputDir}/../.cache`}:{};return vY(J).set($,Z,Y)}async function Y3(){return vY().clear()}var OL,Z3=null;var fY=D(()=>{n6();OL={enabled:!0,directory:".stx/media-cache",maxAge:30,maxSize:2000,cacheTranscoded:!0,cacheThumbnails:!0,cacheManifests:!0}});import{resolve as gY,basename as hY,extname as dY,join as X3}from"path";import{mkdir as uY}from"fs/promises";async function mY(){try{return await import("ts-videos")}catch{return null}}async function D5($,Z,Y,X){let J=await mY();if(!J)return console.warn("[stx-media] ts-videos not installed, cannot generate poster"),null;try{let Q=gY($);if(!await h0(Q))return null;await uY(Y,{recursive:!0});let G=await g0(Q),K=hY($,dY($)),W=Z.format||"webp",_=Z.timestamp||0,U=`${K}-poster-${G}.${W}`,B=X3(Y,U),z=await J.extractThumbnails(Q,{timestamps:[_],width:Z.width||1280,height:Z.height,format:W,quality:Z.quality||85,outputDir:Y,outputPattern:U.replace(`.${W}`,"")});if(z&&z.length>0){let q=z[0];return{path:B,url:`${X}/${U}`,width:q.width||Z.width||1280,height:q.height||720,timestamp:_,size:q.size||0}}return null}catch(Q){return console.warn(`[stx-media] Failed to generate poster: ${Q}`),null}}async function k5($,Z,Y,X){let J=await mY();if(!J)return[];try{let Q=gY($);if(!await h0(Q))return[];await uY(Y,{recursive:!0});let G=await g0(Q),K=hY($,dY($)),W=Z.format||"webp",B=(await new J.Input(Q).getInfo()).duration||60,z=Z.count||10,q=Z.interval||B/z,j=[];for(let O=0;O<z&&O*q<B;O++)j.push(O*q);let H=await J.extractThumbnails(Q,{timestamps:j,width:Z.width||320,format:W,quality:Z.quality||80,outputDir:Y,outputPattern:`${K}-thumb-${G}`});if(H&&H.length>0)return H.map((O,F)=>({path:O.path||X3(Y,`${K}-thumb-${G}-${F}.${W}`),url:`${X}/${K}-thumb-${G}-${F}.${W}`,width:O.width||Z.width||320,height:O.height||180,timestamp:j[F],size:O.size||0}));return[]}catch(Q){return console.warn(`[stx-media] Failed to generate thumbnails: ${Q}`),[]}}async function J3($,Z,Y,X){let J=await mY();if(!J)return console.warn("[stx-media] ts-videos not installed, cannot generate sprite sheet"),null;try{let Q=gY($);if(!await h0(Q))return null;await uY(Y,{recursive:!0});let G=await g0(Q),K=hY($,dY($)),U=(await new J.Input(Q).getInfo()).duration||60,B=Z.columns||10,z=Z.interval||5,q=Z.thumbnailWidth||160,j=Z.thumbnailHeight||90,H=Z.format||"jpeg",O=Math.ceil(U/z),F=Math.ceil(O/B),L=`${K}-sprite-${G}.${H}`,V=X3(Y,L),A=[];for(let w=0;w<O;w++)A.push(w*z);let N=await J.extractThumbnails(Q,{timestamps:A,width:q,height:j,format:H,quality:Z.quality||70,outputDir:X3(Y,".temp")});if(!N||N.length===0)return null;try{let w=await import("ts-images"),M=B*q,T=F*j,I=await w.createSprite({images:N.map((E)=>E.path),columns:B,padding:0,outputPath:V,format:H,quality:Z.quality||70});return{url:`${X}/${L}`,path:V,columns:B,rows:F,thumbnailWidth:q,thumbnailHeight:j,interval:z,totalFrames:O}}catch{return console.warn("[stx-media] ts-images not installed, sprite sheet generation skipped"),null}}catch(Q){return console.warn(`[stx-media] Failed to generate sprite sheet: ${Q}`),null}}var pY=D(()=>{_$()});import{resolve as yG,basename as PG,extname as xG,join as m$}from"path";import{mkdir as Q3,writeFile as vG}from"fs/promises";async function fG(){try{return await import("ts-videos")}catch{return null}}async function S5($,Z,Y,X,J){let Q=await fG();if(!Q)return console.warn("[stx-media] ts-videos not installed, cannot generate HLS manifest"),null;try{let G=yG($);if(!await h0(G))return null;let K=await g0(G),W=PG($,xG($)),_=m$(Y,`${W}-${K}-hls`);await Q3(_,{recursive:!0});let U=Z.length>0?Z:gG,B=J?.segmentDuration||6,j=(await new Q.Input(G).getInfo()).duration||0,H=[],O=0;for(let V of U){let A=m$(_,V.label);await Q3(A,{recursive:!0});let N=`${V.label}.m3u8`,w=m$(A,N);try{let M=await Q.generateHLS(G,{outputDir:A,segmentDuration:B,width:V.width,height:V.height,videoBitrate:V.bitrate,audioBitrate:V.audioBitrate,playlistName:V.label});if(M)H.push({quality:V,url:`${X}/${W}-${K}-hls/${V.label}/${N}`,path:w}),O+=M.segmentCount||Math.ceil(j/B)}catch(M){console.warn(`[stx-media] Failed to generate HLS for ${V.label}: ${M}`)}}if(H.length===0)return null;let F=m$(_,"master.m3u8"),L=LL(H,X,W,K);return await vG(F,L),{manifestUrl:`${X}/${W}-${K}-hls/master.m3u8`,manifestPath:F,playlists:H,segmentCount:O,duration:j}}catch(G){return console.warn(`[stx-media] Failed to generate HLS manifest: ${G}`),null}}function LL($,Z,Y,X){let J=["#EXTM3U","#EXT-X-VERSION:3"];for(let Q of $){let{quality:G}=Q,K=G.bitrate+(G.audioBitrate||128000),W=`${G.width}x${G.height||Math.round(G.width*9/16)}`;J.push(`#EXT-X-STREAM-INF:BANDWIDTH=${K},RESOLUTION=${W},NAME="${G.label}"`,`${G.label}/${G.label}.m3u8`)}return J.join(`
1230
+ <script>${_.script}</script>`;return U},defaults:{src:"",alt:"",options:{lazy:!0,placeholder:"none"}}})}function jL($,Z,Y){if(Z.src)return{src:String(Z.src),alt:String(Z.alt||""),options:Z.options||{}};let X=$.trim();if(X.startsWith("@img(")||X.startsWith("("))X=X.replace(/^@img\(/,"").replace(/^\(/,"").replace(/\)$/,"");let J=HL(X),Q=PY(J[0],Y)||"",G=PY(J[1],Y)||"",K={};if(J[2]){let W=PY(J[2],Y);if(typeof W==="object"&&W!==null)K=W;else if(typeof J[2]==="string")try{K=JSON.parse(J[2])}catch{}}return{src:Q,alt:G,options:K}}function HL($){let Z=[],Y="",X=!1,J="",Q=0,G=0;for(let K=0;K<$.length;K++){let W=$[K],_=K>0?$[K-1]:"";if((W==='"'||W==="'"||W==="`")&&_!=="\\"){if(!X)X=!0,J=W;else if(W===J)X=!1,J="";else Y+=W;continue}if(!X){if(W==="{")Q++;if(W==="}")Q--;if(W==="[")G++;if(W==="]")G--;if(W===","&&Q===0&&G===0){Z.push(Y.trim()),Y="";continue}}Y+=W}if(Y.trim())Z.push(Y.trim());return Z}function PY($,Z){if(typeof $!=="string")return $;let Y=$.trim();if(Y.startsWith('"')&&Y.endsWith('"')||Y.startsWith("'")&&Y.endsWith("'"))return Y.slice(1,-1);if(!Y.startsWith("/")&&!Y.startsWith(".")&&!Y.startsWith("http")&&!Y.startsWith("{")){let X=Z[Y];if(X!==void 0)return X}if(Y.startsWith("{")||Y.startsWith("["))try{return JSON.parse(Y)}catch{}return Y}var r7;var xY=D(()=>{D7();yY();c6();r7=$3()});class T5{config;constructor($={}){this.config={...OL,...$}}async get($,Z){return V5($,Z,"video",this.config)}async set($,Z,Y){return N5($,Z,Y,"video",this.config)}async clear(){return A5("video",this.config)}updateConfig($){this.config={...this.config,...$}}}function vY($){if(!Z3)Z3=new T5($);else if($)Z3.updateConfig($);return Z3}async function E5($,Z,Y){let X=Y?{directory:`${Y.outputDir}/../.cache`}:{};return vY(X).get($,Z)}async function I5($,Z,Y,X){let J=X?{directory:`${X.outputDir}/../.cache`}:{};return vY(J).set($,Z,Y)}async function Y3(){return vY().clear()}var OL,Z3=null;var fY=D(()=>{n6();OL={enabled:!0,directory:".stx/media-cache",maxAge:30,maxSize:2000,cacheTranscoded:!0,cacheThumbnails:!0,cacheManifests:!0}});import{resolve as gY,basename as hY,extname as dY,join as X3}from"path";import{mkdir as uY}from"fs/promises";async function mY(){try{return await import("ts-videos")}catch{return null}}async function D5($,Z,Y,X){let J=await mY();if(!J)return console.warn("[stx-media] ts-videos not installed, cannot generate poster"),null;try{let Q=gY($);if(!await h0(Q))return null;await uY(Y,{recursive:!0});let G=await g0(Q),K=hY($,dY($)),W=Z.format||"webp",_=Z.timestamp||0,U=`${K}-poster-${G}.${W}`,B=X3(Y,U),z=await J.extractThumbnails(Q,{timestamps:[_],width:Z.width||1280,height:Z.height,format:W,quality:Z.quality||85,outputDir:Y,outputPattern:U.replace(`.${W}`,"")});if(z&&z.length>0){let q=z[0];return{path:B,url:`${X}/${U}`,width:q.width||Z.width||1280,height:q.height||720,timestamp:_,size:q.size||0}}return null}catch(Q){return console.warn(`[stx-media] Failed to generate poster: ${Q}`),null}}async function k5($,Z,Y,X){let J=await mY();if(!J)return[];try{let Q=gY($);if(!await h0(Q))return[];await uY(Y,{recursive:!0});let G=await g0(Q),K=hY($,dY($)),W=Z.format||"webp",B=(await new J.Input(Q).getInfo()).duration||60,z=Z.count||10,q=Z.interval||B/z,j=[];for(let O=0;O<z&&O*q<B;O++)j.push(O*q);let H=await J.extractThumbnails(Q,{timestamps:j,width:Z.width||320,format:W,quality:Z.quality||80,outputDir:Y,outputPattern:`${K}-thumb-${G}`});if(H&&H.length>0)return H.map((O,F)=>({path:O.path||X3(Y,`${K}-thumb-${G}-${F}.${W}`),url:`${X}/${K}-thumb-${G}-${F}.${W}`,width:O.width||Z.width||320,height:O.height||180,timestamp:j[F],size:O.size||0}));return[]}catch(Q){return console.warn(`[stx-media] Failed to generate thumbnails: ${Q}`),[]}}async function J3($,Z,Y,X){let J=await mY();if(!J)return console.warn("[stx-media] ts-videos not installed, cannot generate sprite sheet"),null;try{let Q=gY($);if(!await h0(Q))return null;await uY(Y,{recursive:!0});let G=await g0(Q),K=hY($,dY($)),U=(await new J.Input(Q).getInfo()).duration||60,B=Z.columns||10,z=Z.interval||5,q=Z.thumbnailWidth||160,j=Z.thumbnailHeight||90,H=Z.format||"jpeg",O=Math.ceil(U/z),F=Math.ceil(O/B),L=`${K}-sprite-${G}.${H}`,V=X3(Y,L),A=[];for(let w=0;w<O;w++)A.push(w*z);let N=await J.extractThumbnails(Q,{timestamps:A,width:q,height:j,format:H,quality:Z.quality||70,outputDir:X3(Y,".temp")});if(!N||N.length===0)return null;try{let w=await import("ts-images"),M=B*q,T=F*j,E=await w.createSprite({images:N.map((I)=>I.path),columns:B,padding:0,outputPath:V,format:H,quality:Z.quality||70});return{url:`${X}/${L}`,path:V,columns:B,rows:F,thumbnailWidth:q,thumbnailHeight:j,interval:z,totalFrames:O}}catch{return console.warn("[stx-media] ts-images not installed, sprite sheet generation skipped"),null}}catch(Q){return console.warn(`[stx-media] Failed to generate sprite sheet: ${Q}`),null}}var pY=D(()=>{_$()});import{resolve as yG,basename as PG,extname as xG,join as m$}from"path";import{mkdir as Q3,writeFile as vG}from"fs/promises";async function fG(){try{return await import("ts-videos")}catch{return null}}async function S5($,Z,Y,X,J){let Q=await fG();if(!Q)return console.warn("[stx-media] ts-videos not installed, cannot generate HLS manifest"),null;try{let G=yG($);if(!await h0(G))return null;let K=await g0(G),W=PG($,xG($)),_=m$(Y,`${W}-${K}-hls`);await Q3(_,{recursive:!0});let U=Z.length>0?Z:gG,B=J?.segmentDuration||6,j=(await new Q.Input(G).getInfo()).duration||0,H=[],O=0;for(let V of U){let A=m$(_,V.label);await Q3(A,{recursive:!0});let N=`${V.label}.m3u8`,w=m$(A,N);try{let M=await Q.generateHLS(G,{outputDir:A,segmentDuration:B,width:V.width,height:V.height,videoBitrate:V.bitrate,audioBitrate:V.audioBitrate,playlistName:V.label});if(M)H.push({quality:V,url:`${X}/${W}-${K}-hls/${V.label}/${N}`,path:w}),O+=M.segmentCount||Math.ceil(j/B)}catch(M){console.warn(`[stx-media] Failed to generate HLS for ${V.label}: ${M}`)}}if(H.length===0)return null;let F=m$(_,"master.m3u8"),L=LL(H,X,W,K);return await vG(F,L),{manifestUrl:`${X}/${W}-${K}-hls/master.m3u8`,manifestPath:F,playlists:H,segmentCount:O,duration:j}}catch(G){return console.warn(`[stx-media] Failed to generate HLS manifest: ${G}`),null}}function LL($,Z,Y,X){let J=["#EXTM3U","#EXT-X-VERSION:3"];for(let Q of $){let{quality:G}=Q,K=G.bitrate+(G.audioBitrate||128000),W=`${G.width}x${G.height||Math.round(G.width*9/16)}`;J.push(`#EXT-X-STREAM-INF:BANDWIDTH=${K},RESOLUTION=${W},NAME="${G.label}"`,`${G.label}/${G.label}.m3u8`)}return J.join(`
1231
1231
  `)}async function b5($,Z,Y,X,J){let Q=await fG();if(!Q)return console.warn("[stx-media] ts-videos not installed, cannot generate DASH manifest"),null;try{let G=yG($);if(!await h0(G))return null;let K=await g0(G),W=PG($,xG($)),_=m$(Y,`${W}-${K}-dash`);await Q3(_,{recursive:!0});let U=Z.length>0?Z:gG,B=J?.segmentDuration||4,z=J?.minBufferTime||2,H=(await new Q.Input(G).getInfo()).duration||0,O=[],F=[];for(let N of U){let w=m$(_,N.label);await Q3(w,{recursive:!0});try{if(await Q.generateDASH(G,{outputDir:w,segmentDuration:B,width:N.width,height:N.height,videoBitrate:N.bitrate,audioBitrate:N.audioBitrate})){if(O.push({bandwidth:N.bitrate,width:N.width,height:N.height||Math.round(N.width*9/16),url:`${X}/${W}-${K}-dash/${N.label}/video`}),N.audioBitrate)F.push({bandwidth:N.audioBitrate,url:`${X}/${W}-${K}-dash/${N.label}/audio`})}}catch(M){console.warn(`[stx-media] Failed to generate DASH for ${N.label}: ${M}`)}}if(O.length===0)return null;let L=m$(_,"manifest.mpd"),V=FL(O,F,H,B,z);await vG(L,V);let A=[{type:"video",representations:O}];if(F.length>0)A.push({type:"audio",representations:F});return{manifestUrl:`${X}/${W}-${K}-dash/manifest.mpd`,manifestPath:L,adaptationSets:A,duration:H}}catch(G){return console.warn(`[stx-media] Failed to generate DASH manifest: ${G}`),null}}function FL($,Z,Y,X,J){let Q=CG(Y),G=CG(J),K=`<?xml version="1.0" encoding="UTF-8"?>
1232
1232
  <MPD xmlns="urn:mpeg:dash:schema:mpd:2011"
1233
1233
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -1254,13 +1254,13 @@ ${N.join(`
1254
1254
  </Representation>
1255
1255
  `}K+=` </AdaptationSet>
1256
1256
  `}return K+=` </Period>
1257
- </MPD>`,K}function CG($){let Z=Math.floor($/3600),Y=Math.floor($%3600/60),X=Math.floor($%60),J="PT";if(Z>0)J+=`${Z}H`;if(Y>0)J+=`${Y}M`;return J+=`${X}S`,J}var gG;var cY=D(()=>{_$();gG=[{label:"1080p",width:1920,height:1080,bitrate:5000000,audioBitrate:192000},{label:"720p",width:1280,height:720,bitrate:2500000,audioBitrate:128000},{label:"480p",width:854,height:480,bitrate:1e6,audioBitrate:96000},{label:"360p",width:640,height:360,bitrate:600000,audioBitrate:64000}]});import{resolve as hG,basename as VL,extname as NL,join as AL}from"path";import{mkdir as wL}from"fs/promises";async function dG(){try{return await import("ts-videos")}catch{return null}}function RL($){switch($){case"very-low":return 500000;case"low":return 1e6;case"medium":return 2500000;case"high":return 5000000;case"very-high":return 1e7;case"lossless":return 0;default:return 2500000}}function ML($){switch($){case"youtube":return{codec:"h264",maxWidth:1920,maxHeight:1080,frameRate:30,audioCodec:"aac",audioBitrate:128000};case"twitter":return{codec:"h264",maxWidth:1280,maxHeight:720,frameRate:30,bitrate:5000000,audioCodec:"aac",audioBitrate:128000};case"instagram-feed":return{codec:"h264",maxWidth:1080,maxHeight:1080,frameRate:30,bitrate:3500000,audioCodec:"aac",audioBitrate:128000};case"instagram-story":case"instagram-reels":return{codec:"h264",maxWidth:1080,maxHeight:1920,frameRate:30,bitrate:3500000,audioCodec:"aac",audioBitrate:128000};case"tiktok":return{codec:"h264",maxWidth:1080,maxHeight:1920,frameRate:30,bitrate:4000000,audioCodec:"aac",audioBitrate:128000};case"discord":return{codec:"h264",maxWidth:1920,maxHeight:1080,frameRate:60,bitrate:8000000,audioCodec:"aac",audioBitrate:192000};case"linkedin":return{codec:"h264",maxWidth:1920,maxHeight:1080,frameRate:30,bitrate:5000000,audioCodec:"aac",audioBitrate:128000};case"facebook":return{codec:"h264",maxWidth:1280,maxHeight:720,frameRate:30,bitrate:4000000,audioCodec:"aac",audioBitrate:128000};case"web-progressive":return{codec:"h264",maxWidth:1920,maxHeight:1080,frameRate:30,audioCodec:"aac",audioBitrate:128000,twoPass:!0};case"web-streaming":return{codec:"h264",maxWidth:1920,maxHeight:1080,frameRate:30,audioCodec:"aac",audioBitrate:128000};default:return{}}}async function o7($){let Z=await dG();if(!Z)return null;try{let Y=hG($),J=await new Z.Input(Y).getInfo();return{duration:J.duration||0,width:J.width||0,height:J.height||0,frameRate:J.frameRate||0,bitrate:J.bitrate||0,codec:J.videoCodec||"",audioCodec:J.audioCodec}}catch(Y){return console.warn(`[stx-media] Failed to analyze video: ${Y}`),null}}async function G3($,Z,Y,X){let J=await dG();if(!J)return console.warn("[stx-media] ts-videos not installed, skipping processing"),{src:$,processed:!1};let Q=await E5($,Z,Y);if(Q)return Q;try{let G=hG($);if(!await h0(G))return{src:$,processed:!1,errors:[`Source file not found: ${$}`]};let K=Y.outputDir||"dist/videos",W=Y.baseUrl||"/videos";await wL(K,{recursive:!0});let _=await g0(G),U=VL($,NL($)),B={src:$,processed:!0,hash:_};X?.({percentage:5,stage:"analyzing"}),B.metadata=await o7(G)||void 0;let z={};if(Z.quality)z.bitrate=RL(Z.quality);if(Z.platform)Object.assign(z,ML(Z.platform));if(Z.transcode)Object.assign(z,Z.transcode);if(Object.keys(z).length>0||Z.process){X?.({percentage:10,stage:"transcoding"});let q=`${U}-${_}.mp4`,j=AL(K,q);try{let H=await TL(G,j,z,J,(O)=>X?.({percentage:10+O*0.5,stage:"transcoding"}));if(H)B.transcoded={path:j,url:`${W}/${q}`,duration:H.duration,size:H.size,video:{codec:z.codec||"h264",width:H.width,height:H.height,bitrate:H.bitrate,frameRate:H.frameRate},audio:H.audioCodec?{codec:z.audioCodec||"aac",bitrate:z.audioBitrate||128000,sampleRate:z.sampleRate||48000,channels:z.channels||2}:void 0}}catch(H){B.errors=B.errors||[],B.errors.push(`Transcoding failed: ${H}`)}}if(Z.generatePoster){X?.({percentage:65,stage:"generating-poster"});let q=typeof Z.generatePoster==="object"?Z.generatePoster:{timestamp:0},j=await D5(G,q,K,W);if(j)B.poster=j}if(Y.thumbnails?.enabled){X?.({percentage:70,stage:"generating-thumbnails"});let q=await k5(G,Y.thumbnails,K,W);if(q.length>0)B.thumbnails=q}if(Z.streaming){X?.({percentage:80,stage:"generating-manifests"});let q=typeof Z.streaming==="object"?Z.streaming:Y.streaming||{format:"hls"};if(q.format==="hls"||q.format===void 0){let j=await S5(G,q.qualities||Y.streaming?.defaultQualities||[],K,W);if(j)B.streaming={...B.streaming,hls:j}}if(q.format==="dash"){let j=await b5(G,q.qualities||Y.streaming?.defaultQualities||[],K,W);if(j)B.streaming={...B.streaming,dash:j}}}if(Z.spriteSheet)X?.({percentage:90,stage:"generating-sprite-sheet"});return X?.({percentage:100,stage:"complete"}),await I5($,Z,B,Y),B}catch(G){return{src:$,processed:!1,errors:[`Processing failed: ${G}`]}}}async function TL($,Z,Y,X,J){try{let G=await new X.Conversion($,Z,{videoCodec:Y.codec,videoBitrate:Y.bitrate,width:Y.maxWidth,height:Y.maxHeight,frameRate:Y.frameRate,audioCodec:Y.audioCodec,audioBitrate:Y.audioBitrate,sampleRate:Y.sampleRate,channels:Y.channels}).run((K)=>{J?.(K.percentage/100)});return{duration:G.duration||0,size:G.size||0,width:G.width||Y.maxWidth||0,height:G.height||Y.maxHeight||0,bitrate:G.bitrate||Y.bitrate||0,frameRate:G.frameRate||Y.frameRate||30,audioCodec:G.audioCodec}}catch(Q){return console.error(`[stx-media] Transcoding failed: ${Q}`),null}}var uG=D(()=>{_$();fY();pY();cY()});var mG={};G0(mG,{setCachedVideoResult:()=>I5,processVideo:()=>G3,getCachedVideoResult:()=>E5,generateThumbnails:()=>k5,generateSpriteSheet:()=>J3,generatePoster:()=>D5,generateHLSManifest:()=>S5,generateDASHManifest:()=>b5,clearVideoCache:()=>Y3,analyzeVideo:()=>o7,VideoProcessorCache:()=>T5});var lY=D(()=>{uG();pY();cY();fY()});async function cG(){try{return await Promise.resolve().then(() => (lY(),mG))}catch($){if(!pG)console.warn("[stx-media] Video processor not available, some features disabled:",$),pG=!0;return null}}async function C5($,Z={}){let Y=Z,X=$;if(X.process&&!X.skipProcessing){if(Y.tsVideosConfig?.enabled&&!Y.isDev)return bL(X,Y)}if(Y.processedResult?.processed)return rG($,Y.processedResult,Z);let J;if(X.generatePoster&&X.src&&!$.poster)J=await CL(X,Y);let{src:Q,sources:G=[],poster:K,posterPlaceholder:W,controls:_=lG,autoplay:U=!1,muted:B=!1,loop:z=!1,preload:q=iG,playsinline:j=!0,lazy:H=!0,player:O="native",type:F,width:L,height:V,crossorigin:A,disablePictureInPicture:N=!1,disableRemotePlayback:w=!1}=$,M=J||K,T=$.class,I=$.style,E=$.id||`stx-video-${Math.random().toString(36).slice(2,8)}`;if(O==="ts-video")return DL($,Z);if(F&&F!=="video")return IL(Q||"",F,$);let S=G.length>0?G:Q?[{src:Q,type:nG(Q)}]:[],k=[`id="${E}"`];if(_)k.push("controls");if(U)k.push("autoplay");if(B)k.push("muted");if(z)k.push("loop");if(j)k.push("playsinline");if(N)k.push("disablepictureinpicture");if(w)k.push("disableremoteplayback");if(A)k.push(`crossorigin="${A}"`);if(H){if(k.push(`data-preload="${q}"`),k.push('preload="none"'),M)k.push(`data-poster="${x0(M)}"`);k.push("data-stx-lazy")}else if(k.push(`preload="${q}"`),M)k.push(`poster="${x0(M)}"`);if(L)k.push(`width="${L}"`);if(V)k.push(`height="${V}"`);if(T)k.push(`class="${x0(T)}"`);if(I)k.push(`style="${x0(I)}"`);let b=S.map((C)=>{return` <source ${H?`data-src="${x0(C.src)}"`:`src="${x0(C.src)}"`} type="${C.type}"${C.media?` media="${C.media}"`:""} />`}).join(`
1258
- `),P=`<video ${k.join(" ")}>
1259
- ${b}
1257
+ </MPD>`,K}function CG($){let Z=Math.floor($/3600),Y=Math.floor($%3600/60),X=Math.floor($%60),J="PT";if(Z>0)J+=`${Z}H`;if(Y>0)J+=`${Y}M`;return J+=`${X}S`,J}var gG;var cY=D(()=>{_$();gG=[{label:"1080p",width:1920,height:1080,bitrate:5000000,audioBitrate:192000},{label:"720p",width:1280,height:720,bitrate:2500000,audioBitrate:128000},{label:"480p",width:854,height:480,bitrate:1e6,audioBitrate:96000},{label:"360p",width:640,height:360,bitrate:600000,audioBitrate:64000}]});import{resolve as hG,basename as VL,extname as NL,join as AL}from"path";import{mkdir as wL}from"fs/promises";async function dG(){try{return await import("ts-videos")}catch{return null}}function RL($){switch($){case"very-low":return 500000;case"low":return 1e6;case"medium":return 2500000;case"high":return 5000000;case"very-high":return 1e7;case"lossless":return 0;default:return 2500000}}function ML($){switch($){case"youtube":return{codec:"h264",maxWidth:1920,maxHeight:1080,frameRate:30,audioCodec:"aac",audioBitrate:128000};case"twitter":return{codec:"h264",maxWidth:1280,maxHeight:720,frameRate:30,bitrate:5000000,audioCodec:"aac",audioBitrate:128000};case"instagram-feed":return{codec:"h264",maxWidth:1080,maxHeight:1080,frameRate:30,bitrate:3500000,audioCodec:"aac",audioBitrate:128000};case"instagram-story":case"instagram-reels":return{codec:"h264",maxWidth:1080,maxHeight:1920,frameRate:30,bitrate:3500000,audioCodec:"aac",audioBitrate:128000};case"tiktok":return{codec:"h264",maxWidth:1080,maxHeight:1920,frameRate:30,bitrate:4000000,audioCodec:"aac",audioBitrate:128000};case"discord":return{codec:"h264",maxWidth:1920,maxHeight:1080,frameRate:60,bitrate:8000000,audioCodec:"aac",audioBitrate:192000};case"linkedin":return{codec:"h264",maxWidth:1920,maxHeight:1080,frameRate:30,bitrate:5000000,audioCodec:"aac",audioBitrate:128000};case"facebook":return{codec:"h264",maxWidth:1280,maxHeight:720,frameRate:30,bitrate:4000000,audioCodec:"aac",audioBitrate:128000};case"web-progressive":return{codec:"h264",maxWidth:1920,maxHeight:1080,frameRate:30,audioCodec:"aac",audioBitrate:128000,twoPass:!0};case"web-streaming":return{codec:"h264",maxWidth:1920,maxHeight:1080,frameRate:30,audioCodec:"aac",audioBitrate:128000};default:return{}}}async function o7($){let Z=await dG();if(!Z)return null;try{let Y=hG($),J=await new Z.Input(Y).getInfo();return{duration:J.duration||0,width:J.width||0,height:J.height||0,frameRate:J.frameRate||0,bitrate:J.bitrate||0,codec:J.videoCodec||"",audioCodec:J.audioCodec}}catch(Y){return console.warn(`[stx-media] Failed to analyze video: ${Y}`),null}}async function G3($,Z,Y,X){let J=await dG();if(!J)return console.warn("[stx-media] ts-videos not installed, skipping processing"),{src:$,processed:!1};let Q=await E5($,Z,Y);if(Q)return Q;try{let G=hG($);if(!await h0(G))return{src:$,processed:!1,errors:[`Source file not found: ${$}`]};let K=Y.outputDir||"dist/videos",W=Y.baseUrl||"/videos";await wL(K,{recursive:!0});let _=await g0(G),U=VL($,NL($)),B={src:$,processed:!0,hash:_};X?.({percentage:5,stage:"analyzing"}),B.metadata=await o7(G)||void 0;let z={};if(Z.quality)z.bitrate=RL(Z.quality);if(Z.platform)Object.assign(z,ML(Z.platform));if(Z.transcode)Object.assign(z,Z.transcode);if(Object.keys(z).length>0||Z.process){X?.({percentage:10,stage:"transcoding"});let q=`${U}-${_}.mp4`,j=AL(K,q);try{let H=await TL(G,j,z,J,(O)=>X?.({percentage:10+O*0.5,stage:"transcoding"}));if(H)B.transcoded={path:j,url:`${W}/${q}`,duration:H.duration,size:H.size,video:{codec:z.codec||"h264",width:H.width,height:H.height,bitrate:H.bitrate,frameRate:H.frameRate},audio:H.audioCodec?{codec:z.audioCodec||"aac",bitrate:z.audioBitrate||128000,sampleRate:z.sampleRate||48000,channels:z.channels||2}:void 0}}catch(H){B.errors=B.errors||[],B.errors.push(`Transcoding failed: ${H}`)}}if(Z.generatePoster){X?.({percentage:65,stage:"generating-poster"});let q=typeof Z.generatePoster==="object"?Z.generatePoster:{timestamp:0},j=await D5(G,q,K,W);if(j)B.poster=j}if(Y.thumbnails?.enabled){X?.({percentage:70,stage:"generating-thumbnails"});let q=await k5(G,Y.thumbnails,K,W);if(q.length>0)B.thumbnails=q}if(Z.streaming){X?.({percentage:80,stage:"generating-manifests"});let q=typeof Z.streaming==="object"?Z.streaming:Y.streaming||{format:"hls"};if(q.format==="hls"||q.format===void 0){let j=await S5(G,q.qualities||Y.streaming?.defaultQualities||[],K,W);if(j)B.streaming={...B.streaming,hls:j}}if(q.format==="dash"){let j=await b5(G,q.qualities||Y.streaming?.defaultQualities||[],K,W);if(j)B.streaming={...B.streaming,dash:j}}}if(Z.spriteSheet)X?.({percentage:90,stage:"generating-sprite-sheet"});return X?.({percentage:100,stage:"complete"}),await I5($,Z,B,Y),B}catch(G){return{src:$,processed:!1,errors:[`Processing failed: ${G}`]}}}async function TL($,Z,Y,X,J){try{let G=await new X.Conversion($,Z,{videoCodec:Y.codec,videoBitrate:Y.bitrate,width:Y.maxWidth,height:Y.maxHeight,frameRate:Y.frameRate,audioCodec:Y.audioCodec,audioBitrate:Y.audioBitrate,sampleRate:Y.sampleRate,channels:Y.channels}).run((K)=>{J?.(K.percentage/100)});return{duration:G.duration||0,size:G.size||0,width:G.width||Y.maxWidth||0,height:G.height||Y.maxHeight||0,bitrate:G.bitrate||Y.bitrate||0,frameRate:G.frameRate||Y.frameRate||30,audioCodec:G.audioCodec}}catch(Q){return console.error(`[stx-media] Transcoding failed: ${Q}`),null}}var uG=D(()=>{_$();fY();pY();cY()});var mG={};G0(mG,{setCachedVideoResult:()=>I5,processVideo:()=>G3,getCachedVideoResult:()=>E5,generateThumbnails:()=>k5,generateSpriteSheet:()=>J3,generatePoster:()=>D5,generateHLSManifest:()=>S5,generateDASHManifest:()=>b5,clearVideoCache:()=>Y3,analyzeVideo:()=>o7,VideoProcessorCache:()=>T5});var lY=D(()=>{uG();pY();cY();fY()});async function cG(){try{return await Promise.resolve().then(() => (lY(),mG))}catch($){if(!pG)console.warn("[stx-media] Video processor not available, some features disabled:",$),pG=!0;return null}}async function C5($,Z={}){let Y=Z,X=$;if(X.process&&!X.skipProcessing){if(Y.tsVideosConfig?.enabled&&!Y.isDev)return bL(X,Y)}if(Y.processedResult?.processed)return rG($,Y.processedResult,Z);let J;if(X.generatePoster&&X.src&&!$.poster)J=await CL(X,Y);let{src:Q,sources:G=[],poster:K,posterPlaceholder:W,controls:_=lG,autoplay:U=!1,muted:B=!1,loop:z=!1,preload:q=iG,playsinline:j=!0,lazy:H=!0,player:O="native",type:F,width:L,height:V,crossorigin:A,disablePictureInPicture:N=!1,disableRemotePlayback:w=!1}=$,M=J||K,T=$.class,E=$.style,I=$.id||`stx-video-${Math.random().toString(36).slice(2,8)}`;if(O==="ts-video")return DL($,Z);if(F&&F!=="video")return IL(Q||"",F,$);let S=G.length>0?G:Q?[{src:Q,type:nG(Q)}]:[],k=[`id="${I}"`];if(_)k.push("controls");if(U)k.push("autoplay");if(B)k.push("muted");if(z)k.push("loop");if(j)k.push("playsinline");if(N)k.push("disablepictureinpicture");if(w)k.push("disableremoteplayback");if(A)k.push(`crossorigin="${A}"`);if(H){if(k.push(`data-preload="${q}"`),k.push('preload="none"'),M)k.push(`data-poster="${x0(M)}"`);k.push("data-stx-lazy")}else if(k.push(`preload="${q}"`),M)k.push(`poster="${x0(M)}"`);if(L)k.push(`width="${L}"`);if(V)k.push(`height="${V}"`);if(T)k.push(`class="${x0(T)}"`);if(E)k.push(`style="${x0(E)}"`);let P=S.map((C)=>{return` <source ${H?`data-src="${x0(C.src)}"`:`src="${x0(C.src)}"`} type="${C.type}"${C.media?` media="${C.media}"`:""} />`}).join(`
1258
+ `),f=`<video ${k.join(" ")}>
1259
+ ${P}
1260
1260
  Your browser does not support the video tag.
1261
- </video>`,x;if(H)x=`
1261
+ </video>`,b;if(H)b=`
1262
1262
  (function() {
1263
- var video = document.getElementById('${E}');
1263
+ var video = document.getElementById('${I}');
1264
1264
  if (!video) return;
1265
1265
 
1266
1266
  var observer = new IntersectionObserver(function(entries) {
@@ -1293,7 +1293,7 @@ ${b}
1293
1293
 
1294
1294
  observer.observe(video);
1295
1295
  })();
1296
- `.trim();return{html:P,script:x}}function IL($,Z,Y){let{width:X=640,height:J=360}=Y,Q=Y.class,G=Y.style,K=Y.id||`stx-embed-${Math.random().toString(36).slice(2,8)}`,W,_=null;switch(Z){case"youtube":_=kL($),W=_?`https://www.youtube-nocookie.com/embed/${_}`:$;break;case"vimeo":_=SL($),W=_?`https://player.vimeo.com/video/${_}`:$;break;case"dailymotion":_=$.split("/").pop()||"",W=`https://www.dailymotion.com/embed/video/${_}`;break;case"twitch":_=$.split("/").pop()||"",W=`https://player.twitch.tv/?video=${_}&parent=${typeof window<"u"?window.location.hostname:"localhost"}`;break;default:W=$}let U=[`id="${K}"`,`src="${x0(W)}"`,`width="${X}"`,`height="${J}"`,'frameborder="0"',"allowfullscreen",'allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"'];if(Q)U.push(`class="${x0(Q)}"`);if(G)U.push(`style="${x0(G)}"`);if(Y.lazy)U.push('loading="lazy"');return{html:`<div class="stx-video-embed" style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;">
1296
+ `.trim();return{html:f,script:b}}function IL($,Z,Y){let{width:X=640,height:J=360}=Y,Q=Y.class,G=Y.style,K=Y.id||`stx-embed-${Math.random().toString(36).slice(2,8)}`,W,_=null;switch(Z){case"youtube":_=kL($),W=_?`https://www.youtube-nocookie.com/embed/${_}`:$;break;case"vimeo":_=SL($),W=_?`https://player.vimeo.com/video/${_}`:$;break;case"dailymotion":_=$.split("/").pop()||"",W=`https://www.dailymotion.com/embed/video/${_}`;break;case"twitch":_=$.split("/").pop()||"",W=`https://player.twitch.tv/?video=${_}&parent=${typeof window<"u"?window.location.hostname:"localhost"}`;break;default:W=$}let U=[`id="${K}"`,`src="${x0(W)}"`,`width="${X}"`,`height="${J}"`,'frameborder="0"',"allowfullscreen",'allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"'];if(Q)U.push(`class="${x0(Q)}"`);if(G)U.push(`style="${x0(G)}"`);if(Y.lazy)U.push('loading="lazy"');return{html:`<div class="stx-video-embed" style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;">
1297
1297
  <iframe ${U.join(" ")} style="position:absolute;top:0;left:0;width:100%;height:100%;"></iframe>
1298
1298
  </div>`}}function DL($,Z={}){let{src:Y,sources:X=[],poster:J,controls:Q=!0,autoplay:G=!1,muted:K=!1,loop:W=!1,preload:_="metadata",playsinline:U=!0,lazy:B=!0,width:z,height:q}=$,j=$.class,H=$.style,O=$.id||`ts-video-${Math.random().toString(36).slice(2,8)}`,F={src:X.length>0?X:Y,autoplay:G,loop:W,muted:K,playsinline:U,preload:_,poster:J,controls:Q,title:$.title},L=["position: relative",z?`width: ${typeof z==="number"?z+"px":z}`:"width: 100%",q?`height: ${typeof q==="number"?q+"px":q}`:"",H||""].filter(Boolean).join("; "),V=`
1299
1299
  <div
@@ -1462,8 +1462,8 @@ else {
1462
1462
  .ts-video-player__play-button svg {
1463
1463
  margin-left: 4px;
1464
1464
  }
1465
- `.trim();return{html:V,script:A,css:N}}function nG($){switch($.split(".").pop()?.toLowerCase()){case"mp4":return"video/mp4";case"webm":return"video/webm";case"ogg":case"ogv":return"video/ogg";case"mov":return"video/quicktime";case"avi":return"video/x-msvideo";case"mkv":return"video/x-matroska";case"m3u8":return"application/x-mpegURL";default:return"video/mp4"}}function kL($){let Z=[/youtube\.com\/watch\?v=([^&]+)/,/youtube\.com\/embed\/([^?]+)/,/youtu\.be\/([^?]+)/,/youtube\.com\/v\/([^?]+)/];for(let Y of Z){let X=$.match(Y);if(X)return X[1]}return null}function SL($){let Z=$.match(/vimeo\.com\/(\d+)/);return Z?Z[1]:null}function x0($){return $.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}function sG($,Z,Y){if(Z.src)return{src:String(Z.src),...Z};let X=$.trim();if(X.startsWith("@video(")||X.startsWith("("))X=X.replace(/^@video\(/,"").replace(/^\(/,"").replace(/\)$/,"");let J=X.indexOf(",");if(J===-1)return{src:X.replace(/^['"]|['"]$/g,"")};let Q=X.slice(0,J).trim().replace(/^['"]|['"]$/g,""),G=X.slice(J+1).trim();try{let K=JSON.parse(G);return{src:Q,...K}}catch{return{src:Q}}}async function bL($,Z){let Y=await cG();if(!Y)return C5({...$,process:!1},Z);let X=Z.tsVideosConfig,J=await Y.processVideo($.src,$,X,$.onProcessProgress);if(J.processed)return rG($,J,Z);return C5({...$,process:!1},Z)}async function CL($,Z){let Y=await cG();if(!Y||!$.src)return;let X=typeof $.generatePoster==="object"?$.generatePoster:{timestamp:0},J=Z.tsVideosConfig||{enabled:!0,outputDir:"dist/videos",baseUrl:"/videos"};return(await Y.generatePoster($.src,X,J.outputDir,J.baseUrl||"/videos"))?.url}function rG($,Z,Y){let{controls:X=lG,autoplay:J=!1,muted:Q=!1,loop:G=!1,preload:K=iG,playsinline:W=!0,lazy:_=!0,width:U,height:B,crossorigin:z,disablePictureInPicture:q=!1,disableRemotePlayback:j=!1}=$,H=$.class,O=$.style,F=$.id||`stx-video-${Math.random().toString(36).slice(2,8)}`,L=$.src,V=nG(L);if(Z.transcoded)L=Z.transcoded.url,V="video/mp4";let A=Z.streaming?.hls||Z.streaming?.dash;if(A){if(Z.streaming?.hls)L=Z.streaming.hls.manifestUrl,V="application/x-mpegURL";else if(Z.streaming?.dash)L=Z.streaming.dash.manifestUrl,V="application/dash+xml"}let N=Z.poster?.url||$.poster,w=[`id="${F}"`];if(X)w.push("controls");if(J)w.push("autoplay");if(Q)w.push("muted");if(G)w.push("loop");if(W)w.push("playsinline");if(q)w.push("disablepictureinpicture");if(j)w.push("disableremoteplayback");if(z)w.push(`crossorigin="${z}"`);if(_){if(w.push(`data-preload="${K}"`),w.push('preload="none"'),N)w.push(`data-poster="${x0(N)}"`);w.push("data-stx-lazy")}else if(w.push(`preload="${K}"`),N)w.push(`poster="${x0(N)}"`);let M=U||Z.metadata?.width,T=B||Z.metadata?.height;if(M)w.push(`width="${M}"`);if(T)w.push(`height="${T}"`);if(H)w.push(`class="${x0(H)}"`);if(O)w.push(`style="${x0(O)}"`);let E=` <source ${_?`data-src="${x0(L)}"`:`src="${x0(L)}"`} type="${V}" />`,S=`<video ${w.join(" ")}>
1466
- ${E}
1465
+ `.trim();return{html:V,script:A,css:N}}function nG($){switch($.split(".").pop()?.toLowerCase()){case"mp4":return"video/mp4";case"webm":return"video/webm";case"ogg":case"ogv":return"video/ogg";case"mov":return"video/quicktime";case"avi":return"video/x-msvideo";case"mkv":return"video/x-matroska";case"m3u8":return"application/x-mpegURL";default:return"video/mp4"}}function kL($){let Z=[/youtube\.com\/watch\?v=([^&]+)/,/youtube\.com\/embed\/([^?]+)/,/youtu\.be\/([^?]+)/,/youtube\.com\/v\/([^?]+)/];for(let Y of Z){let X=$.match(Y);if(X)return X[1]}return null}function SL($){let Z=$.match(/vimeo\.com\/(\d+)/);return Z?Z[1]:null}function x0($){return $.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}function sG($,Z,Y){if(Z.src)return{src:String(Z.src),...Z};let X=$.trim();if(X.startsWith("@video(")||X.startsWith("("))X=X.replace(/^@video\(/,"").replace(/^\(/,"").replace(/\)$/,"");let J=X.indexOf(",");if(J===-1)return{src:X.replace(/^['"]|['"]$/g,"")};let Q=X.slice(0,J).trim().replace(/^['"]|['"]$/g,""),G=X.slice(J+1).trim();try{let K=JSON.parse(G);return{src:Q,...K}}catch{return{src:Q}}}async function bL($,Z){let Y=await cG();if(!Y)return C5({...$,process:!1},Z);let X=Z.tsVideosConfig,J=await Y.processVideo($.src,$,X,$.onProcessProgress);if(J.processed)return rG($,J,Z);return C5({...$,process:!1},Z)}async function CL($,Z){let Y=await cG();if(!Y||!$.src)return;let X=typeof $.generatePoster==="object"?$.generatePoster:{timestamp:0},J=Z.tsVideosConfig||{enabled:!0,outputDir:"dist/videos",baseUrl:"/videos"};return(await Y.generatePoster($.src,X,J.outputDir,J.baseUrl||"/videos"))?.url}function rG($,Z,Y){let{controls:X=lG,autoplay:J=!1,muted:Q=!1,loop:G=!1,preload:K=iG,playsinline:W=!0,lazy:_=!0,width:U,height:B,crossorigin:z,disablePictureInPicture:q=!1,disableRemotePlayback:j=!1}=$,H=$.class,O=$.style,F=$.id||`stx-video-${Math.random().toString(36).slice(2,8)}`,L=$.src,V=nG(L);if(Z.transcoded)L=Z.transcoded.url,V="video/mp4";let A=Z.streaming?.hls||Z.streaming?.dash;if(A){if(Z.streaming?.hls)L=Z.streaming.hls.manifestUrl,V="application/x-mpegURL";else if(Z.streaming?.dash)L=Z.streaming.dash.manifestUrl,V="application/dash+xml"}let N=Z.poster?.url||$.poster,w=[`id="${F}"`];if(X)w.push("controls");if(J)w.push("autoplay");if(Q)w.push("muted");if(G)w.push("loop");if(W)w.push("playsinline");if(q)w.push("disablepictureinpicture");if(j)w.push("disableremoteplayback");if(z)w.push(`crossorigin="${z}"`);if(_){if(w.push(`data-preload="${K}"`),w.push('preload="none"'),N)w.push(`data-poster="${x0(N)}"`);w.push("data-stx-lazy")}else if(w.push(`preload="${K}"`),N)w.push(`poster="${x0(N)}"`);let M=U||Z.metadata?.width,T=B||Z.metadata?.height;if(M)w.push(`width="${M}"`);if(T)w.push(`height="${T}"`);if(H)w.push(`class="${x0(H)}"`);if(O)w.push(`style="${x0(O)}"`);let I=` <source ${_?`data-src="${x0(L)}"`:`src="${x0(L)}"`} type="${V}" />`,S=`<video ${w.join(" ")}>
1466
+ ${I}
1467
1467
  Your browser does not support the video tag.
1468
1468
  </video>`;if(Z.spriteSheet)S=`<div class="stx-video-wrapper" data-sprite-sheet="${x0(Z.spriteSheet.url)}" data-sprite-cols="${Z.spriteSheet.columns}" data-sprite-interval="${Z.spriteSheet.interval}">
1469
1469
  ${S}
@@ -1502,7 +1502,7 @@ ${S}
1502
1502
 
1503
1503
  observer.observe(video);
1504
1504
  })();
1505
- `.trim();let b;if(A)b=`
1505
+ `.trim();let P;if(A)P=`
1506
1506
  .stx-video-wrapper {
1507
1507
  position: relative;
1508
1508
  width: 100%;
@@ -1511,7 +1511,7 @@ ${S}
1511
1511
  width: 100%;
1512
1512
  height: auto;
1513
1513
  }
1514
- `.trim();return{html:S,script:k,css:b}}var pG=!1,lG=!0,iG="metadata",EL="https://cdn.jsdelivr.net/npm/ts-video-player@latest/dist/index.min.js";var iY=D(()=>{nY()});function K3(){return T0({name:"video",hasEndTag:!1,description:"Render a video with optional ts-videos processing, streaming, and poster generation",transform:async($,Z,Y,X)=>{let{src:J,options:Q}=yL($,Z,Y);if(!J)return console.warn("@video directive: missing src argument"),"<!-- @video: missing src -->";let G={src:J,poster:Q.poster,controls:Q.controls!==!1,autoplay:Q.autoplay||!1,muted:Q.muted||!1,loop:Q.loop||!1,preload:Q.preload||"metadata",playsinline:Q.playsinline!==!1,lazy:Q.lazy!==!1,player:Q.player||"native",type:Q.type,width:Q.width,height:Q.height,class:Q.class,style:Q.style,id:Q.id,crossorigin:Q.crossorigin,disablePictureInPicture:Q.disablePictureInPicture,disableRemotePlayback:Q.disableRemotePlayback,title:Q.title,quality:Q.quality,platform:Q.platform,process:Q.process,generatePoster:Q.generatePoster,streaming:Q.streaming,transcode:Q.transcode,spriteSheet:Q.spriteSheet,waveform:Q.waveform},W={isDev:Y.__isDev||!1,tsVideosConfig:Y.__tsVideosConfig},_=await C5(G,W),U=_.html;if(_.css)U+=`
1514
+ `.trim();return{html:S,script:k,css:P}}var pG=!1,lG=!0,iG="metadata",EL="https://cdn.jsdelivr.net/npm/ts-video-player@latest/dist/index.min.js";var iY=D(()=>{nY()});function K3(){return T0({name:"video",hasEndTag:!1,description:"Render a video with optional ts-videos processing, streaming, and poster generation",transform:async($,Z,Y,X)=>{let{src:J,options:Q}=yL($,Z,Y);if(!J)return console.warn("@video directive: missing src argument"),"<!-- @video: missing src -->";let G={src:J,poster:Q.poster,controls:Q.controls!==!1,autoplay:Q.autoplay||!1,muted:Q.muted||!1,loop:Q.loop||!1,preload:Q.preload||"metadata",playsinline:Q.playsinline!==!1,lazy:Q.lazy!==!1,player:Q.player||"native",type:Q.type,width:Q.width,height:Q.height,class:Q.class,style:Q.style,id:Q.id,crossorigin:Q.crossorigin,disablePictureInPicture:Q.disablePictureInPicture,disableRemotePlayback:Q.disableRemotePlayback,title:Q.title,quality:Q.quality,platform:Q.platform,process:Q.process,generatePoster:Q.generatePoster,streaming:Q.streaming,transcode:Q.transcode,spriteSheet:Q.spriteSheet,waveform:Q.waveform},W={isDev:Y.__isDev||!1,tsVideosConfig:Y.__tsVideosConfig},_=await C5(G,W),U=_.html;if(_.css)U+=`
1515
1515
  <style>${_.css}</style>`;if(_.script)U+=`
1516
1516
  <script>${_.script}</script>`;return U},defaults:{src:"",options:{controls:!0,lazy:!0,preload:"metadata"}}})}function yL($,Z,Y){if(Z.src)return{src:String(Z.src),options:Z.options||{}};let X=$.trim();if(X.startsWith("@video(")||X.startsWith("("))X=X.replace(/^@video\(/,"").replace(/^\(/,"").replace(/\)$/,"");let J=PL(X),Q=oG(J[0],Y)||"",G={};if(J[1]){let K=oG(J[1],Y);if(typeof K==="object"&&K!==null)G=K;else if(typeof J[1]==="string")try{G=JSON.parse(J[1])}catch{}}return{src:Q,options:G}}function PL($){let Z=[],Y="",X=!1,J="",Q=0,G=0;for(let K=0;K<$.length;K++){let W=$[K],_=K>0?$[K-1]:"";if((W==='"'||W==="'"||W==="`")&&_!=="\\"){if(!X)X=!0,J=W;else if(W===J)X=!1,J="";else Y+=W;continue}if(!X){if(W==="{")Q++;if(W==="}")Q--;if(W==="[")G++;if(W==="]")G--;if(W===","&&Q===0&&G===0){Z.push(Y.trim()),Y="";continue}}Y+=W}if(Y.trim())Z.push(Y.trim());return Z}function oG($,Z){if(typeof $!=="string")return $;let Y=$.trim();if(Y.startsWith('"')&&Y.endsWith('"')||Y.startsWith("'")&&Y.endsWith("'"))return Y.slice(1,-1);if(!Y.startsWith("/")&&!Y.startsWith(".")&&!Y.startsWith("http")&&!Y.startsWith("{")){let X=Z[Y];if(X!==void 0)return X}if(Y.startsWith("{")||Y.startsWith("["))try{return JSON.parse(Y)}catch{}return Y}var a7;var nY=D(()=>{D7();iY();a7=K3()});function xL($,Z){let Y=Z.pwa?.manifest?.themeColor||"#4f46e5";return`<div class="stx-pwa-install" style="display:none;">
1517
1517
  ${$}
@@ -2124,15 +2124,15 @@ declare global {
2124
2124
  customElements.define('${Y}', ${U});
2125
2125
  `}function V3($){let Z=$.split("").reduce((Y,X)=>(Y<<5)-Y+X.charCodeAt(0)|0,0);return Math.abs(Z).toString(36).slice(0,8)}function wK($,Z,Y={}){let X={...JX,...Y},J=V3(Z);switch(X.strategy){case"shadow":return $;case"prefix":return WF($,X.prefix||Z,X.preserveOriginal);case"attribute":return KF($,J,X.attributeName||"data-v",X.preserveOriginal);case"bem":return _F($,Z,X.preserveOriginal);default:return $}}function KF($,Z,Y,X){let J=`[${Y}-${Z}]`;return $.replace(/([.#]?[\w-]+|\*)\s*(\{|,)/g,(Q,G,K)=>{if(G.startsWith("@"))return Q;if(/^(?::root|:host|html|body)$/i.test(G))return Q;return`${X?`${G}${J}`:`${G}${J}`}${K}`})}function WF($,Z,Y){return $.replace(/\.([a-z_][\w-]*)/gi,(X,J)=>{if(J.startsWith(Z))return X;let Q=`${Z}__${J}`;return Y?`.${Q}`:`.${Q}`})}function _F($,Z,Y){let X=Z.replace(/[^a-z0-9]/gi,"-");return $.replace(/\.([a-z_][\w-]*)/gi,(J,Q)=>{if(Q.includes("__")||Q.includes("--")){if(!Q.startsWith(X))return`.${X}__${Q}`;return J}let G=`${X}__${Q}`;return Y?`.${G}`:`.${G}`})}function RK($,Z,Y={}){let X={...JX,...Y};if(X.strategy==="shadow")return $;if(X.strategy==="attribute"){let J=V3(Z),G=`${X.attributeName||"data-v"}-${J}`;return $.replace(/<([a-z][a-z0-9-]*)([^>]*)>/gi,(K,W,_)=>{if(/^(?:script|style|!--)$/i.test(W))return K;let U=_.trimEnd().endsWith("/"),B=U?_.slice(0,-1):_;return`<${W}${B} ${G}${U?"/":""}>`})}if(X.strategy==="prefix"||X.strategy==="bem"){let J=X.strategy==="bem"?Z.replace(/[^a-z0-9]/gi,"-"):X.prefix||Z;return $.replace(/\bclass\s*=\s*["']([^"']+)["']/gi,(Q,G)=>{return`class="${G.split(/\s+/).map((W)=>{if(!W)return W;if(W.startsWith(J))return W;return`${J}__${W}`}).join(" ")}"`})}return $}function UF($,Z={}){let Y={...JX,...Z},X=V3($);return`${Y.attributeName||"data-v"}-${X}`}function BF($,Z,Y={}){let X="",J=$.replace(/<style([^>]*)>([\s\S]*?)<\/style>/gi,(G,K,W)=>{if(/\bscoped\b/i.test(K)||Y.strategy!=="shadow")X+=`${wK(W,Z,Y)}
2126
2126
  `;else X+=`${W}
2127
- `;return""});return{html:RK(J,Z,Y),css:X.trim()}}function v5($){return $.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}function zF($){let{name:Z,tag:Y,baseElement:X="HTMLElement",template:J,styles:Q="",shadowDOM:G=!0,properties:K={},lifecycle:W={},events:_={},methods:U={},state:B={}}=$,z=Z.replace(/\W/g,""),q=Object.keys(K),j=q.filter((T)=>K[T].attribute!==!1).map((T)=>K[T].attribute||v5(T)),H=q.map((T)=>{let I=K[T],E=I.default!==void 0?JSON.stringify(I.default):I.type==="string"?'""':I.type==="number"?"0":I.type==="boolean"?"false":I.type==="array"?"[]":"{}";return` this._${T} = ${E};`}).join(`
2128
- `),O=q.map((T)=>{let I=K[T],E=I.attribute!==!1?I.attribute||v5(T):null,S=I.reflect&&E?`
2127
+ `;return""});return{html:RK(J,Z,Y),css:X.trim()}}function v5($){return $.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}function zF($){let{name:Z,tag:Y,baseElement:X="HTMLElement",template:J,styles:Q="",shadowDOM:G=!0,properties:K={},lifecycle:W={},events:_={},methods:U={},state:B={}}=$,z=Z.replace(/\W/g,""),q=Object.keys(K),j=q.filter((T)=>K[T].attribute!==!1).map((T)=>K[T].attribute||v5(T)),H=q.map((T)=>{let E=K[T],I=E.default!==void 0?JSON.stringify(E.default):E.type==="string"?'""':E.type==="number"?"0":E.type==="boolean"?"false":E.type==="array"?"[]":"{}";return` this._${T} = ${I};`}).join(`
2128
+ `),O=q.map((T)=>{let E=K[T],I=E.attribute!==!1?E.attribute||v5(T):null,S=E.reflect&&I?`
2129
2129
  if (value !== null && value !== undefined) {
2130
- ${I.type==="boolean"?`if (value) { this.setAttribute('${E}', ''); }
2131
- else { this.removeAttribute('${E}'); }`:`this.setAttribute('${E}', ${I.type==="object"||I.type==="array"?"JSON.stringify(value)":"String(value)"});`}
2130
+ ${E.type==="boolean"?`if (value) { this.setAttribute('${I}', ''); }
2131
+ else { this.removeAttribute('${I}'); }`:`this.setAttribute('${I}', ${E.type==="object"||E.type==="array"?"JSON.stringify(value)":"String(value)"});`}
2132
2132
  }
2133
2133
  else {
2134
- this.removeAttribute('${E}');
2135
- }`:"",k=I.observer?`this.${I.observer}(value, oldValue);`:"",b=I.render!==!1?"this._scheduleRender();":"";return`
2134
+ this.removeAttribute('${I}');
2135
+ }`:"",k=E.observer?`this.${E.observer}(value, oldValue);`:"",P=E.render!==!1?"this._scheduleRender();":"";return`
2136
2136
  get ${T}() {
2137
2137
  return this._${T};
2138
2138
  }
@@ -2142,7 +2142,7 @@ else {
2142
2142
  if (oldValue === value) return;
2143
2143
  this._${T} = value;${S}
2144
2144
  ${k}
2145
- ${b}
2145
+ ${P}
2146
2146
  this.dispatchEvent(new CustomEvent('${T}-changed', {
2147
2147
  detail: { value, oldValue },
2148
2148
  bubbles: true
@@ -2161,10 +2161,10 @@ else {
2161
2161
  this[propName] = this._deserializeAttribute(newValue, propDef.type);
2162
2162
  }
2163
2163
  ${W.attributeChanged||""}
2164
- }`:"",L=Object.entries(_).map(([T,I])=>{return`this._root.addEventListener('${T}', (e) => { ${I} });`}).join(`
2165
- `),V=Object.entries(U).map(([T,I])=>{return`
2164
+ }`:"",L=Object.entries(_).map(([T,E])=>{return`this._root.addEventListener('${T}', (e) => { ${E} });`}).join(`
2165
+ `),V=Object.entries(U).map(([T,E])=>{return`
2166
2166
  ${T}() {
2167
- ${I}
2167
+ ${E}
2168
2168
  }`}).join(`
2169
2169
  `),A=JSON.stringify(Object.fromEntries(q.map((T)=>[T,K[T]]))),N=JSON.stringify(Object.fromEntries(q.filter((T)=>K[T].attribute!==!1).map((T)=>[K[T].attribute||v5(T),T]))),w=J.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${"),M=Q.replace(/\\/g,"\\\\").replace(/`/g,"\\`");return`/**
2170
2170
  * ${Z} - Reactive Web Component
@@ -2326,12 +2326,12 @@ customElements.define('${Y}', ${z});
2326
2326
  // Export for module usage
2327
2327
  export { ${z} };
2328
2328
  export default ${z};
2329
- `}function qF($){let{name:Z,tag:Y,baseElement:X="HTMLElement",template:J,styles:Q="",shadowDOM:G=!0,properties:K={},lifecycle:W={},events:_={},methods:U={},state:B={}}=$,z=Z.replace(/\W/g,""),q=Object.keys(K),j=q.filter((I)=>K[I].attribute!==!1).map((I)=>K[I].attribute||v5(I)),H=(I)=>{switch(I){case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"object":return"Record<string, unknown>";case"array":return"unknown[]";default:return"unknown"}},O=q.length>0?`
2329
+ `}function qF($){let{name:Z,tag:Y,baseElement:X="HTMLElement",template:J,styles:Q="",shadowDOM:G=!0,properties:K={},lifecycle:W={},events:_={},methods:U={},state:B={}}=$,z=Z.replace(/\W/g,""),q=Object.keys(K),j=q.filter((E)=>K[E].attribute!==!1).map((E)=>K[E].attribute||v5(E)),H=(E)=>{switch(E){case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"object":return"Record<string, unknown>";case"array":return"unknown[]";default:return"unknown"}},O=q.length>0?`
2330
2330
  /**
2331
2331
  * Props interface for ${Z}
2332
2332
  */
2333
2333
  export interface ${z}Props {
2334
- ${q.map((I)=>` ${I}?: ${H(K[I].type)};`).join(`
2334
+ ${q.map((E)=>` ${E}?: ${H(K[E].type)};`).join(`
2335
2335
  `)}
2336
2336
  }
2337
2337
  `:"",F=Object.keys(B).length>0?`
@@ -2339,42 +2339,42 @@ ${q.map((I)=>` ${I}?: ${H(K[I].type)};`).join(`
2339
2339
  * State interface for ${Z}
2340
2340
  */
2341
2341
  export interface ${z}State {
2342
- ${Object.entries(B).map(([I,E])=>` ${I}: ${typeof E};`).join(`
2342
+ ${Object.entries(B).map(([E,I])=>` ${E}: ${typeof I};`).join(`
2343
2343
  `)}
2344
2344
  }
2345
2345
  `:`
2346
2346
  export interface ${z}State {
2347
2347
  [key: string]: unknown;
2348
2348
  }
2349
- `,L=q.map((I)=>{let E=K[I],S=H(E.type);return` private _${I}: ${S};`}).join(`
2350
- `),V=q.map((I)=>{let E=K[I],S=H(E.type),k=E.attribute!==!1?E.attribute||v5(I):null,b=E.default!==void 0?JSON.stringify(E.default):E.type==="string"?'""':E.type==="number"?"0":E.type==="boolean"?"false":E.type==="array"?"[]":"{}",P=E.reflect&&k?`
2349
+ `,L=q.map((E)=>{let I=K[E],S=H(I.type);return` private _${E}: ${S};`}).join(`
2350
+ `),V=q.map((E)=>{let I=K[E],S=H(I.type),k=I.attribute!==!1?I.attribute||v5(E):null,P=I.default!==void 0?JSON.stringify(I.default):I.type==="string"?'""':I.type==="number"?"0":I.type==="boolean"?"false":I.type==="array"?"[]":"{}",f=I.reflect&&k?`
2351
2351
  if (value !== null && value !== undefined) {
2352
- ${E.type==="boolean"?`if (value) { this.setAttribute('${k}', ''); }
2353
- else { this.removeAttribute('${k}'); }`:`this.setAttribute('${k}', ${E.type==="object"||E.type==="array"?"JSON.stringify(value)":"String(value)"});`}
2352
+ ${I.type==="boolean"?`if (value) { this.setAttribute('${k}', ''); }
2353
+ else { this.removeAttribute('${k}'); }`:`this.setAttribute('${k}', ${I.type==="object"||I.type==="array"?"JSON.stringify(value)":"String(value)"});`}
2354
2354
  }
2355
2355
  else {
2356
2356
  this.removeAttribute('${k}');
2357
- }`:"",x=E.observer?`this.${E.observer}(value, oldValue);`:"",C=E.render!==!1?"this._scheduleRender();":"";return`
2358
- get ${I}(): ${S} {
2359
- return this._${I};
2357
+ }`:"",b=I.observer?`this.${I.observer}(value, oldValue);`:"",C=I.render!==!1?"this._scheduleRender();":"";return`
2358
+ get ${E}(): ${S} {
2359
+ return this._${E};
2360
2360
  }
2361
2361
 
2362
- set ${I}(value: ${S}) {
2363
- const oldValue = this._${I};
2362
+ set ${E}(value: ${S}) {
2363
+ const oldValue = this._${E};
2364
2364
  if (oldValue === value) return;
2365
- this._${I} = value;${P}
2366
- ${x}
2365
+ this._${E} = value;${f}
2366
+ ${b}
2367
2367
  ${C}
2368
- this.dispatchEvent(new CustomEvent('${I}-changed', {
2368
+ this.dispatchEvent(new CustomEvent('${E}-changed', {
2369
2369
  detail: { value, oldValue },
2370
2370
  bubbles: true
2371
2371
  }));
2372
2372
  }
2373
2373
 
2374
- // Property default: ${b}`}).join(`
2374
+ // Property default: ${P}`}).join(`
2375
2375
  `),A=j.length>0?`
2376
2376
  static get observedAttributes(): string[] {
2377
- return [${j.map((I)=>`'${I}'`).join(", ")}];
2377
+ return [${j.map((E)=>`'${E}'`).join(", ")}];
2378
2378
  }
2379
2379
 
2380
2380
  attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void {
@@ -2385,10 +2385,10 @@ else {
2385
2385
  (this as unknown as Record<string, unknown>)[propName] = this._deserializeAttribute(newValue, propDef.type);
2386
2386
  }
2387
2387
  ${W.attributeChanged||""}
2388
- }`:"",N=Object.entries(_).map(([I,E])=>{return`this._root.addEventListener('${I}', (e: Event) => { ${E} });`}).join(`
2389
- `),w=Object.entries(U).map(([I,E])=>{return`
2390
- ${I}(): void {
2391
- ${E}
2388
+ }`:"",N=Object.entries(_).map(([E,I])=>{return`this._root.addEventListener('${E}', (e: Event) => { ${I} });`}).join(`
2389
+ `),w=Object.entries(U).map(([E,I])=>{return`
2390
+ ${E}(): void {
2391
+ ${I}
2392
2392
  }`}).join(`
2393
2393
  `),M=J.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${"),T=Q.replace(/\\/g,"\\\\").replace(/`/g,"\\`");return`/**
2394
2394
  * ${Z} - Reactive Web Component (TypeScript)
@@ -2418,7 +2418,7 @@ interface PropertyDefinition {
2418
2418
  export class ${z} extends ${X} {
2419
2419
  // Property definitions
2420
2420
  private _propertyDefs: Record<string, PropertyDefinition> = ${JSON.stringify(K)};
2421
- private _attrToProp: Record<string, string> = ${JSON.stringify(Object.fromEntries(q.filter((I)=>K[I].attribute!==!1).map((I)=>[K[I].attribute||v5(I),I])))};
2421
+ private _attrToProp: Record<string, string> = ${JSON.stringify(Object.fromEntries(q.filter((E)=>K[E].attribute!==!1).map((E)=>[K[E].attribute||v5(E),E])))};
2422
2422
 
2423
2423
  // Internal state
2424
2424
  private _state: ${z}State = ${JSON.stringify(B)};
@@ -2435,7 +2435,7 @@ ${L}
2435
2435
  this._root = ${G?"this.shadowRoot!":"this"};
2436
2436
 
2437
2437
  // Initialize properties with defaults
2438
- ${q.map((I)=>{let E=K[I],S=E.default!==void 0?JSON.stringify(E.default):E.type==="string"?'""':E.type==="number"?"0":E.type==="boolean"?"false":E.type==="array"?"[]":"{}";return` this._${I} = ${S};`}).join(`
2438
+ ${q.map((E)=>{let I=K[E],S=I.default!==void 0?JSON.stringify(I.default):I.type==="string"?'""':I.type==="number"?"0":I.type==="boolean"?"false":I.type==="array"?"[]":"{}";return` this._${E} = ${S};`}).join(`
2439
2439
  `)}
2440
2440
 
2441
2441
  // Initial render
@@ -2971,7 +2971,7 @@ customElements.define('${Z}', ${G});
2971
2971
  `}async function QX($,Z,Y,X){if(Z.length<1)return Z0("WebComponent","@webcomponent directive requires at least the tag name parameter",o.INVALID_DIRECTIVE_SYNTAX);let J=Z[0].replace(/['"]/g,""),G=(Y.__stx_options||{}).componentsDir||"components",K=[j$.join(j$.dirname(X),G,`${J}.stx`),j$.join(process.cwd(),G,`${J}.stx`),j$.join(j$.dirname(X),`${J}.stx`)],W=null;for(let B of K)if(await a(B)){W=await Bun.file(B).text();break}if(!W)return Z0("WebComponent",`Component file not found: ${J}.stx`,o.FILE_NOT_FOUND);let _=MK(W,J);return`<script type="module">
2972
2972
  ${TK(_)}
2973
2973
  </script>`}var JX;var GX=D(()=>{J1();q0();JX={strategy:"attribute",attributeName:"data-v",preserveOriginal:!0}});var EK={};G0(EK,{timingPlugin:()=>VF,pluginManager:()=>WX,definePlugin:()=>f5,debugPlugin:()=>FF,createVariablesPlugin:()=>NF,createFilterPlugin:()=>LF,createDirectivePlugin:()=>OF,PluginManager:()=>KX});function f5($){return $}class KX{plugins=new Map;sortedPlugins=[];initialized=!1;async register($,Z){if(this.plugins.has($.name))throw Error(`Plugin "${$.name}" is already registered`);if($.dependencies){for(let Y of $.dependencies)if(!this.plugins.has(Y))throw Error(`Plugin "${$.name}" depends on "${Y}" which is not registered`)}if(this.plugins.set($.name,$),$.onRegister)await $.onRegister(Z);this.sortPlugins()}async unregister($){let Z=this.plugins.get($);if(!Z)return!1;for(let[Y,X]of this.plugins)if(X.dependencies?.includes($))throw Error(`Cannot unregister "${$}" because "${Y}" depends on it`);if(Z.onUnregister)await Z.onUnregister();return this.plugins.delete($),this.sortPlugins(),!0}get($){return this.plugins.get($)}has($){return this.plugins.has($)}getAll(){return[...this.sortedPlugins]}getAllDirectives(){let $=[];for(let Z of this.sortedPlugins)if(Z.registerDirectives)$.push(...Z.registerDirectives());return $}getAllFilters(){let $={};for(let Z of this.sortedPlugins)if(Z.registerFilters)Object.assign($,Z.registerFilters());return $}async runBeforeProcess($){return this.runHooks("beforeProcess",$)}async runAfterParse($){return this.runHooks("afterParse",$)}async runBeforeDirective($,Z){return this.runDirectiveHooks("beforeDirective",$,Z)}async runAfterDirective($,Z){return this.runDirectiveHooks("afterDirective",$,Z)}async runBeforeRender($){return this.runHooks("beforeRender",$)}async runAfterRender($){return this.runHooks("afterRender",$)}async runOnError($){for(let Z of this.sortedPlugins)if(Z.onError)try{let Y=await Z.onError($);if(Y){if(Y.template!==void 0)$.template=Y.template;if(Y.context)$.context={...$.context,...Y.context};if(Y.metadata)$.metadata={...$.metadata,...Y.metadata};if(Y.skip)return $}}catch(Y){console.error(`Error in plugin "${Z.name}" onError hook:`,Y)}return null}sortPlugins(){this.sortedPlugins=Array.from(this.plugins.values()).sort(($,Z)=>($.priority??100)-(Z.priority??100))}async runHooks($,Z){let Y={...Z};for(let X of this.sortedPlugins){let J=X[$];if(J)try{let Q=await J(Y);if(Q){if(Q.template!==void 0)Y.template=Q.template;if(Q.context)Y.context={...Y.context,...Q.context};if(Q.metadata)Y.metadata={...Y.metadata,...Q.metadata};if(Q.skip)break}}catch(Q){console.error(`Error in plugin "${X.name}" ${$} hook:`,Q)}}return Y}async runDirectiveHooks($,Z,Y){let X={...Y};for(let J of this.sortedPlugins){let Q=J[$];if(Q)try{let G=await Q(Z,X);if(G){if(G.template!==void 0)X.template=G.template;if(G.context)X.context={...X.context,...G.context};if(G.metadata)X.metadata={...X.metadata,...G.metadata};if(G.skip)break}}catch(G){console.error(`Error in plugin "${J.name}" ${$} hook:`,G)}}return X}}function OF($,Z,Y={}){return{name:$,...Y,registerDirectives:()=>Z}}function LF($,Z,Y={}){return{name:$,...Y,registerFilters:()=>Z}}function NF($){return f5({name:"stx-variables",version:"1.0.0",description:"Adds predefined variables to template context",beforeProcess(Z){return{context:{...Z.context,...$}}}})}var WX,FF,VF;var _X=D(()=>{WX=new KX;FF=f5({name:"stx-debug",version:"1.0.0",description:"Logs all plugin lifecycle events for debugging",priority:0,beforeProcess($){console.log("[stx-debug] beforeProcess:",$.filePath)},afterParse($){console.log("[stx-debug] afterParse:",$.template.length,"chars")},beforeDirective($,Z){console.log("[stx-debug] beforeDirective:",$)},afterDirective($,Z){console.log("[stx-debug] afterDirective:",$)},beforeRender($){console.log("[stx-debug] beforeRender")},afterRender($){console.log("[stx-debug] afterRender:",$.template.length,"chars")},onError($){console.error("[stx-debug] onError:",$.error.message,"in phase:",$.phase)}}),VF=f5({name:"stx-timing",version:"1.0.0",description:"Measures template processing time",priority:1,beforeProcess($){$.metadata.startTime=performance.now()},afterRender($){let Z=$.metadata.startTime;if(Z){let Y=performance.now()-Z;console.log(`[stx-timing] Processing took ${Y.toFixed(2)}ms`)}}})});var SK={};G0(SK,{validateConfig:()=>kK,loadStxConfig:()=>k0,defineStxConfig:()=>DK,defaultConfig:()=>e0,config:()=>$1});import UX from"fs";import s0 from"path";import{loadConfigWithResult as AF}from"bunfig";function wF($,Z){let Y=Z||"pages";if($)return{root:$,pagesDir:Y};let X=s0.join(process.cwd(),"resources","views"),J=s0.join(process.cwd(),"resources","layouts");if(UX.existsSync(X)&&UX.existsSync(J))return{root:"resources",pagesDir:"views"};let Q=s0.join(process.cwd(),"resources","views","pages");if(UX.existsSync(Q))return{root:"resources/views",pagesDir:Y};return{root:".",pagesDir:Y}}async function k0($){if(!$){if(g5)return g5;if(N3)return N3}let Z=$?s0.resolve($):process.cwd(),Y=IK.get(Z);if(Y)return Y;let X=(async()=>{let Q=(await AF({name:"stx",alias:"ui",cwd:Z,defaultConfig:e0,verbose:!1})).config,G=wF(Q.root,Q.pagesDir);if(Q.root=G.root,Q.pagesDir=G.pagesDir,Q.root&&Q.root!=="."){let K=Q.root;if(Q.partialsDir&&!s0.isAbsolute(Q.partialsDir))Q.partialsDir=s0.join(K,Q.partialsDir);if(Q.componentsDir&&!s0.isAbsolute(Q.componentsDir))Q.componentsDir=s0.join(K,Q.componentsDir);if(Q.layoutsDir&&!s0.isAbsolute(Q.layoutsDir))Q.layoutsDir=s0.join(K,Q.layoutsDir)}if(Q.plugins&&Q.plugins.length>0){let{pluginManager:K}=await Promise.resolve().then(() => (_X(),EK)),W=[],_=[];for(let U of Q.plugins){let B=typeof U==="string"?U:U[0],z=typeof U==="string"?{}:U[1]||{};try{let q,j;try{q=await import(B),j=s0.dirname(W0.resolve(B))}catch{let O=s0.resolve(process.cwd(),B);q=await import(O),j=s0.dirname(O)}let H=q.default||q;if(K.register(H,Q),H.components){let O=s0.resolve(j,H.components);W.push(O)}if(H.pages){let O=s0.resolve(j,H.pages),F=z.path||"/";_.push({dir:O,prefix:F})}if(H.setup){let O={addDirective:(F)=>{Q.customDirectives=Q.customDirectives||[],Q.customDirectives.push(F)},addRoute:(F,L)=>{Q.apiRoutes=Q.apiRoutes||{},Q.apiRoutes[F]=L},addMiddleware:(F)=>{Q.middleware=Q.middleware||[],Q.middleware.push(F)},pluginDir:j,config:Q};await H.setup(z,O)}console.log(`[stx] Plugin loaded: ${H.name||B}`)}catch(q){console.warn(`[stx] Failed to load plugin ${B}:`,q.message)}}Q._pluginComponentDirs=W,Q._pluginPageDirs=_}return Q})();if(IK.set(Z,X),!$)N3=X,X.then((J)=>{g5=J}).catch(()=>{});return X}function DK($){return $}function kK($){let Z=[],Y=[];if($.partialsDir!==void 0&&typeof $.partialsDir!=="string")Z.push({path:"partialsDir",message:"partialsDir must be a string",severity:"error"});if($.componentsDir!==void 0&&typeof $.componentsDir!=="string")Z.push({path:"componentsDir",message:"componentsDir must be a string",severity:"error"});if($.cache!==void 0&&typeof $.cache!=="boolean")Z.push({path:"cache",message:"cache must be a boolean",severity:"error"});if($.debug!==void 0&&typeof $.debug!=="boolean")Z.push({path:"debug",message:"debug must be a boolean",severity:"error"});if($.streaming){if($.streaming.bufferSize!==void 0){if(typeof $.streaming.bufferSize!=="number"||$.streaming.bufferSize<=0)Z.push({path:"streaming.bufferSize",message:"streaming.bufferSize must be a positive number",severity:"error"})}if($.streaming.timeout!==void 0){if(typeof $.streaming.timeout!=="number"||$.streaming.timeout<=0)Z.push({path:"streaming.timeout",message:"streaming.timeout must be a positive number",severity:"error"})}if($.streaming.strategy!==void 0){let X=["auto","manual","sections"];if(!X.includes($.streaming.strategy))Z.push({path:"streaming.strategy",message:`streaming.strategy must be one of: ${X.join(", ")}`,severity:"error"})}}if($.i18n){if($.i18n.format!==void 0){let X=["json","yaml","yml","js"];if(!X.includes($.i18n.format))Z.push({path:"i18n.format",message:`i18n.format must be one of: ${X.join(", ")}`,severity:"error"})}}if($.animation){if($.animation.defaultDuration!==void 0){if(typeof $.animation.defaultDuration!=="number"||$.animation.defaultDuration<0)Z.push({path:"animation.defaultDuration",message:"animation.defaultDuration must be a non-negative number",severity:"error"})}if($.animation.staggerDelay!==void 0){if(typeof $.animation.staggerDelay!=="number"||$.animation.staggerDelay<0)Z.push({path:"animation.staggerDelay",message:"animation.staggerDelay must be a non-negative number",severity:"error"})}}if($.a11y){if($.a11y.level!==void 0){let X=["AA","AAA"];if(!X.includes($.a11y.level))Z.push({path:"a11y.level",message:`a11y.level must be one of: ${X.join(", ")}`,severity:"error"})}}if($.hydration){if($.hydration.mode!==void 0){let X=["progressive","islands"];if(!X.includes($.hydration.mode))Z.push({path:"hydration.mode",message:`hydration.mode must be one of: ${X.join(", ")}`,severity:"error"})}if($.hydration.preload!==void 0){let X=["none","eager","lazy"];if(!X.includes($.hydration.preload))Z.push({path:"hydration.preload",message:`hydration.preload must be one of: ${X.join(", ")}`,severity:"error"})}}if($.customDirectives)if(!Array.isArray($.customDirectives))Z.push({path:"customDirectives",message:"customDirectives must be an array",severity:"error"});else $.customDirectives.forEach((X,J)=>{if(!X.name||typeof X.name!=="string")Z.push({path:`customDirectives[${J}].name`,message:"Custom directive must have a name string",severity:"error"});if(!X.handler||typeof X.handler!=="function")Z.push({path:`customDirectives[${J}].handler`,message:"Custom directive must have a handler function",severity:"error"})});if($.middleware)if(!Array.isArray($.middleware))Z.push({path:"middleware",message:"middleware must be an array",severity:"error"});else $.middleware.forEach((X,J)=>{if(!X.name||typeof X.name!=="string")Z.push({path:`middleware[${J}].name`,message:"Middleware must have a name string",severity:"error"});if(!X.handler||typeof X.handler!=="function")Z.push({path:`middleware[${J}].handler`,message:"Middleware must have a handler function",severity:"error"});if(!X.timing||!["before","after"].includes(X.timing))Z.push({path:`middleware[${J}].timing`,message:'Middleware timing must be "before" or "after"',severity:"error"})});if($.debug===!0&&$.cache===!0)Y.push({path:"debug+cache",message:"Debug mode with caching enabled may show stale content during development",severity:"warning"});if($.seo?.enabled===!0&&!$.seo?.defaultConfig?.title)Y.push({path:"seo.defaultConfig.title",message:"SEO is enabled but no default title is set",severity:"warning"});if($.pwa){if($.pwa.enabled===!0&&!$.pwa.manifest?.name)Z.push({path:"pwa.manifest.name",message:"PWA manifest name is required when PWA is enabled",severity:"error"});if($.pwa.manifest?.display!==void 0){let X=["fullscreen","standalone","minimal-ui","browser"];if(!X.includes($.pwa.manifest.display))Z.push({path:"pwa.manifest.display",message:`PWA display must be one of: ${X.join(", ")}`,severity:"error"})}if($.pwa.manifest?.orientation!==void 0){let X=["portrait","landscape","any","portrait-primary","portrait-secondary","landscape-primary","landscape-secondary"];if(!X.includes($.pwa.manifest.orientation))Z.push({path:"pwa.manifest.orientation",message:`PWA orientation must be one of: ${X.join(", ")}`,severity:"error"})}if($.pwa.routes){let X=["cache-first","network-first","stale-while-revalidate","network-only","cache-only"];$.pwa.routes.forEach((J,Q)=>{if(!J.pattern||typeof J.pattern!=="string")Z.push({path:`pwa.routes[${Q}].pattern`,message:"PWA route must have a pattern string",severity:"error"});if(!X.includes(J.strategy))Z.push({path:`pwa.routes[${Q}].strategy`,message:`PWA route strategy must be one of: ${X.join(", ")}`,severity:"error"});if(J.maxAgeSeconds!==void 0&&(typeof J.maxAgeSeconds!=="number"||J.maxAgeSeconds<0))Z.push({path:`pwa.routes[${Q}].maxAgeSeconds`,message:"PWA route maxAgeSeconds must be a non-negative number",severity:"error"});if(J.maxEntries!==void 0&&(typeof J.maxEntries!=="number"||J.maxEntries<1))Z.push({path:`pwa.routes[${Q}].maxEntries`,message:"PWA route maxEntries must be a positive number",severity:"error"})})}if($.pwa.icons?.sizes){if(!Array.isArray($.pwa.icons.sizes))Z.push({path:"pwa.icons.sizes",message:"PWA icon sizes must be an array of numbers",severity:"error"});else if($.pwa.icons.sizes.filter((J)=>typeof J!=="number"||J<16||J>1024).length>0)Z.push({path:"pwa.icons.sizes",message:"PWA icon sizes must be numbers between 16 and 1024",severity:"error"})}if($.pwa.icons?.purpose){let X=["any","maskable","monochrome"];if($.pwa.icons.purpose.filter((Q)=>!X.includes(Q)).length>0)Z.push({path:"pwa.icons.purpose",message:`PWA icon purpose must be one of: ${X.join(", ")}`,severity:"error"})}if($.pwa.enabled===!0&&!$.pwa.icons?.src)Y.push({path:"pwa.icons.src",message:"PWA is enabled but no icon source specified. Provide a 512x512 PNG for best results.",severity:"warning"});if($.pwa.enabled===!0&&!$.pwa.manifest?.themeColor)Y.push({path:"pwa.manifest.themeColor",message:"PWA theme color not set, defaulting to black",severity:"warning"})}return{valid:Z.length===0,errors:Z,warnings:Y}}var e0,g5=null,IK,N3=null,$1;var l0=D(()=>{x6();d6();iZ();u6();m6();xY();nY();tG();F3();GX();e0={enabled:!0,ssr:!1,partialsDir:"partials",componentsDir:"components",layoutsDir:"layouts",defaultLayout:"default",debug:!1,cache:!0,cachePath:".stx/cache",cacheVersion:"1.0.0",build:{pagesDir:"pages",outputDir:"dist",baseUrl:"/",sitemap:!0,minify:!0,cache:!0,cacheDir:".stx/ssg-cache",concurrency:10,generate404:!0,publicDir:"public",trailingSlash:!1,cleanOutput:!0},customDirectives:[{name:"markdown",handler:tZ,hasEndTag:!0,description:"Render markdown content to HTML"},{name:"webcomponent",handler:QX,hasEndTag:!1,description:"Include a web component in the template"},y6,P6,O3,L3,v6,g6,h6,f6,_G,rZ,r7,a7,...aG],middleware:[],i18n:{defaultLocale:"en",locale:"en",translationsDir:"translations",format:"yaml",fallbackToKey:!0,cache:!0},webComponents:{enabled:!1,outputDir:"dist/web-components",components:[]},docs:{enabled:!1,outputDir:"docs",format:"markdown",components:!0,templates:!0,directives:!0},streaming:{enabled:!0,bufferSize:16384,strategy:"auto",timeout:30000},hydration:{enabled:!1,mode:"islands",clientEntry:"src/client.ts",autoMarkers:!0,preload:"lazy"},router:{enabled:!0,container:"#app-content",linkSelector:"a[href]",viewTransitions:!0,scrollToTop:!0,prefetch:!0,cache:!0,cacheTTL:300000,skipSelectors:'[data-no-router], [target="_blank"]',viewTransitionCSS:{oldRoot:"fade-out 0.15s ease-in",newRoot:"fade-in 0.2s ease-out",oldContent:"slide-out 0.2s ease-in",newContent:"slide-in 0.25s ease-out"}},a11y:{enabled:!0,addSrOnlyStyles:!0,level:"AA",autoFix:!1,ignoreChecks:[]},seo:{enabled:!0,socialPreview:!0,defaultConfig:{title:"stx Project",description:"A website built with stx templating engine"}},animation:{enabled:!0,defaultDuration:300,defaultEase:"ease",respectMotionPreferences:!0,staggerDelay:50},markdown:{enabled:!0,syntaxHighlighting:{enabled:!0,serverSide:!0,defaultTheme:"github-dark",highlightUnknownLanguages:!0,additionalThemes:["light-plus","one-dark-pro","dracula","monokai","solarized-light","nord","github-dark"]}},loops:{maxWhileIterations:1000,useAltLoopVariable:!1},story:{enabled:!0,outDir:".stx/dist/story",storyMatch:["**/*.story.stx"],storyIgnored:["**/node_modules/**","**/dist/**","**/.stx/**"],port:6006},pwa:{enabled:!1,manifest:{name:"stx App",shortName:"stx",description:"A Progressive Web App built with stx",startUrl:"/",display:"standalone",orientation:"any",themeColor:"#000000",backgroundColor:"#ffffff",scope:"/"},icons:{src:"public/icon.png",sizes:[72,96,128,144,152,192,384,512],generateWebP:!0,generateAppleIcons:!0,outputDir:"pwa-icons",purpose:["any","maskable"]},routes:[{pattern:"/",strategy:"network-first"},{pattern:"/static/*",strategy:"cache-first",maxAgeSeconds:2592000},{pattern:"/api/*",strategy:"network-only"},{pattern:"*.js",strategy:"stale-while-revalidate"},{pattern:"*.css",strategy:"stale-while-revalidate"},{pattern:"*.png",strategy:"cache-first"},{pattern:"*.jpg",strategy:"cache-first"},{pattern:"*.webp",strategy:"cache-first"},{pattern:"*.svg",strategy:"cache-first"}],offline:{enabled:!0,fallbackTitle:"You are offline",fallbackMessage:"Please check your internet connection and try again.",precacheAssets:[]},serviceWorker:{fileName:"sw.js",cacheVersion:"1.0.0",skipWaiting:!0,clientsClaim:!0,navigationPreload:!1,excludeRoutes:["/api/auth/*"],cacheFileTypes:["html","css","js","png","jpg","jpeg","webp","svg","woff","woff2"],useWorkbox:!1},autoInject:!0,push:{enabled:!1,defaultOptions:{vibrate:[100,50,100],requireInteraction:!1}},backgroundSync:{enabled:!1,queueName:"stx-sync-queue",maxRetentionMinutes:1440,maxRetries:3,minInterval:1000,forms:[],endpoints:[]},shareTarget:{enabled:!1,action:"/share-target",method:"POST",enctype:"multipart/form-data",params:{title:"title",text:"text",url:"url"}},fileHandlers:{enabled:!1},protocolHandlers:[],cacheStorage:{maxSize:100,maxEntries:500,maxAge:30,purgeStrategy:"lru"},updates:{enabled:!0,promptUser:!0,autoReload:!1,message:"A new version is available. Reload to update?"},precache:{enabled:!0,includeHtml:!0,includeJs:!0,includeCss:!0,includeImages:!0,includeFonts:!0,include:[],exclude:["*.map","*.LICENSE.txt"],maxFileSizeKB:500}},media:{enabled:!0,image:{enabled:!0,defaultWidths:[320,480,640,768,1024,1280,1536,1920],defaultFormats:["avif","webp","jpeg"],defaultQuality:80,placeholderStrategy:"thumbhash",lazyByDefault:!0,enableDpr:!0,defaultDpr:[1,2,3],tsImages:{enabled:!0,outputDir:"dist/images",baseUrl:"/images",formatQuality:{jpeg:{quality:85,mozjpeg:!0,progressive:!0},png:{compressionLevel:9,palette:!1},webp:{quality:82,effort:5,smartSubsample:!0},avif:{quality:75,effort:4,lossless:!1}},breakpoints:[320,480,640,768,1024,1280,1536,1920],batchOptions:{concurrency:4,optimizationPreset:"web"}}},video:{enabled:!0,lazyByDefault:!0,defaultControls:!0,tsVideos:{enabled:!0,outputDir:"dist/videos",baseUrl:"/videos",defaultQuality:"high",streaming:{enabled:!0,format:"hls",segmentDuration:6,defaultQualities:[{label:"1080p",width:1920,height:1080,bitrate:5000000,audioBitrate:192000},{label:"720p",width:1280,height:720,bitrate:2500000,audioBitrate:128000},{label:"480p",width:854,height:480,bitrate:1e6,audioBitrate:96000}]},thumbnails:{enabled:!0,count:10,format:"webp",width:320},transcoding:{defaultCodec:"h264",defaultAudioCodec:"aac",speedPreset:"medium"}}},upload:{enabled:!0,maxSize:10485760,allowedTypes:["image/*","video/*","audio/*","application/pdf"],maxConcurrent:3},protected:{enabled:!0,expirationSeconds:3600,batchSize:10},cache:{enabled:!0,directory:".stx/media-cache",maxAge:30,maxSize:500}},broadcasting:{enabled:!1,driver:"bun",host:"0.0.0.0",port:6001,scheme:"ws",verbose:!1}};IK=new Map;$1=new Proxy(e0,{get($,Z){if(g5&&Z in g5)return g5[Z];if(!N3)k0().catch((Y)=>{console.warn("[stx] Failed to load config file:",Y?.message||Y)});return $[Z]}})});var M3={};G0(M3,{resetCssCache:()=>MF,resetCrosswindCache:()=>TF,rebuildCrosswindCSS:()=>J4,loadCrosswindConfig:()=>qX,loadCrosswind:()=>zX,injectCrosswindCSS:()=>V0,getCachedCSS:()=>EF,generateCrosswindCSS:()=>R3,extractClassNames:()=>w3,buildCrosswindCSS:()=>u5});import bK from"fs";import F0 from"path";async function CK($){try{let Z=await import($);if(Z&&Z.CSSGenerator)return{CSSGenerator:Z.CSSGenerator,config:Z.config,build:Z.build,defaultConfig:Z.defaultConfig}}catch{}return null}function RF(){let $=[],Z=process.env.HOME||process.env.USERPROFILE||"",Y=process.cwd();while(Y!==F0.dirname(Y))$.push(F0.join(Y,"node_modules","@cwcss","crosswind","dist","index.js")),$.push(F0.join(Y,"node_modules","@cwcss","crosswind","src","index.ts")),$.push(F0.join(Y,"node_modules","@stacksjs","crosswind","dist","index.js")),Y=F0.dirname(Y);if(Z){let X=[F0.join(Z,"Code","Tools","crosswind","packages","crosswind","dist","index.js"),F0.join(Z,"Code","Tools","crosswind","packages","crosswind","src","index.ts"),F0.join(Z,"repos","stacks-org","crosswind","packages","crosswind","dist","index.js"),F0.join(Z,"repos","stacks-org","crosswind","packages","crosswind","src","index.ts"),F0.join(Z,"Code","Tools","stx","packages","stx","node_modules","@cwcss","crosswind","dist","index.js"),F0.join(Z,"Code","Tools","stx","packages","stx","node_modules","@stacksjs","crosswind","dist","index.js")];$.push(...X)}return $.push(F0.join(process.cwd(),"..","crosswind","packages","crosswind","dist","index.js")),$.push(F0.join(process.cwd(),"..","crosswind","packages","crosswind","src","index.ts")),$}async function zX(){if(BX)return d5;BX=!0;try{let $=["@cwcss/crosswind","@cwcss/crosswind/dist/index.js","@stacksjs/crosswind","@stacksjs/crosswind/dist/index.js"];for(let Y of $){let X=await CK(Y);if(X)return d5=X,console.log(`${R.green}[Crosswind]${R.reset} CSS engine loaded`),d5}let Z=RF();for(let Y of Z)if(await Bun.file(Y).exists()){let X=await CK(Y);if(X)return d5=X,console.log(`${R.green}[Crosswind]${R.reset} CSS engine loaded from ${F0.dirname(F0.dirname(Y))}`),d5}throw Error("Crosswind CSSGenerator not found in any location")}catch{return console.warn(`${R.yellow}[Crosswind] CSS engine not available, Tailwind styles will not be generated${R.reset}`),console.warn(`${R.yellow}Run 'bun add @stacksjs/crosswind' to enable CSS generation${R.reset}`),null}}function MF(){A3.clear()}function TF(){d5=null,BX=!1,T1=null,X4="",A3.clear()}async function qX($){try{let{loadConfigWithResult:Z}=await import("bunfig"),Y=await Z({name:"crosswind",cwd:$,defaultConfig:{},checkEnv:!1,verbose:!1});if(!Y?.path||!Y.config||Object.keys(Y.config).length===0)return null;let X=F0.relative($,Y.path);return console.log(`${R.green}[Crosswind]${R.reset} Loaded config from ${X||Y.path}`),Y.config}catch(Z){if(Z instanceof Error&&Z.name==="ConfigNotFoundError")return null;return console.warn(`${R.yellow}[Crosswind]${R.reset} Failed to load crosswind config:`,Z instanceof Error?Z.message:Z),null}}async function u5($){if(h5)return X4;h5=!0;try{let Z=await zX();if(!Z||!Z.build)return h5=!1,"";if(!T1)T1=await qX($);if(!T1)return h5=!1,"";let Y=Z.defaultConfig?.theme||{},X=T1.theme||{},J={...Z.defaultConfig,...T1,theme:{...Y,...X,extend:{...Y.extend||{},...X.extend||{}}}},Q=performance.now(),G=await Z.build(J),K=performance.now()-Q;if(X4=G.css,console.log(`${R.cyan}[Crosswind]${R.reset} Built ${G.classes.size} classes in ${K.toFixed(1)}ms`),J.output){let W=F0.isAbsolute(J.output)?J.output:F0.join($,J.output),_=F0.dirname(W);if(!bK.existsSync(_))bK.mkdirSync(_,{recursive:!0});await Bun.write(W,G.css)}return h5=!1,G.css}catch(Z){return console.error(`${R.red}[Crosswind]${R.reset} Build error:`,Z),h5=!1,X4}}async function J4($){T1=null,await u5($)}function EF(){return X4}function w3($){let Z=new Set,Y=/class\s*=\s*["']([^"']+)["']/gi,X=Y.exec($);while(X!==null){for(let G of X[1].split(/\s+/))if(G.trim())Z.add(G.trim());X=Y.exec($)}let J=/(?:x-class|:class)\s*=\s*"([^"]+)"/gi,Q=J.exec($);while(Q!==null){let G=Q[1].match(/'([^']+)'/g);if(G){for(let K of G)for(let W of K.slice(1,-1).split(/\s+/))if(W.trim())Z.add(W.trim())}Q=J.exec($)}return Z}async function R3($,Z){try{let Y=await zX();if(!Y)return"";let X=w3($);if(X.size===0)return"";let J=[...X].sort().join(" "),Q=A3.get(J);if(Q!==void 0)return Q;let G=Z?F0.resolve(Z):process.cwd();if(!T1){let V=null;try{let{loadStxConfig:A}=await Promise.resolve().then(() => (l0(),SK)),N=await A(G);if(N.css)if(typeof N.css==="string"){let w=F0.isAbsolute(N.css)?N.css:F0.resolve(G,N.css);if(await Bun.file(w).exists()){let M=await import(w);V=M.default||M,console.log(`${R.green}[Crosswind]${R.reset} Loaded config from stx.config.ts \u2192 ${N.css}`)}}else{if(V={content:N.css.content||[],preflight:N.css.preflight??!0,minify:N.css.minify??!1},N.css.config){let w=F0.isAbsolute(N.css.config)?N.css.config:F0.resolve(G,N.css.config);if(await Bun.file(w).exists()){let M=await import(w);V={...M.default||M,...V}}}console.log(`${R.green}[Crosswind]${R.reset} Using inline CSS config from stx.config.ts`)}}catch{}T1=V||await qX(G)}let K=Y.defaultConfig||Y.config,W=T1||{},_=K.theme||{},B=(W.theme||{}).extend||{},z={..._};if(Object.keys(B).length>0)z.extend=B;let q=[...K.safelist||[],...W.safelist||[]],j={...K,...W,content:[],output:"",preflight:!0,minify:!1,theme:z,safelist:q},H=new Y.CSSGenerator(j);for(let V of q)H.generate(V);for(let V of X)H.generate(V);let O=H.toCSS(!0,!1),F=j.shortcuts||W.shortcuts||{};for(let[V,A]of Object.entries(F)){if(!X.has(V)&&!q.includes(V))continue;let N=A.split(/\s+/).filter(Boolean);for(let w of N)H.generate(w)}O=H.toCSS(!0,!1);let L=O.split(`
2974
- `);for(let[V,A]of Object.entries(F)){if(!X.has(V)&&!q.includes(V))continue;let N=A.split(/\s+/).filter(Boolean),w=[],M=[];for(let T of N){let I=T.startsWith("dark:"),k=`.${(I?T.slice(5):T).replace(/\//g,"\\/").replace(/:/g,"\\:").replace(/\./g,"\\.").replace(/\[/g,"\\[").replace(/\]/g,"\\]").replace(/%/g,"\\%")}`;for(let b=0;b<L.length;b++){let P=L[b].trim();if(P===`${k} {`||P.startsWith(`${k} {`)){let x=b,C="";while(x<L.length){if(C+=L[x],L[x].includes("}"))break;x++}let f=C.match(/\{([^}]+)\}/);if(f)if(I)M.push(f[1].trim());else w.push(f[1].trim());break}}}if(w.length)O+=`
2974
+ `);for(let[V,A]of Object.entries(F)){if(!X.has(V)&&!q.includes(V))continue;let N=A.split(/\s+/).filter(Boolean),w=[],M=[];for(let T of N){let E=T.startsWith("dark:"),k=`.${(E?T.slice(5):T).replace(/\//g,"\\/").replace(/:/g,"\\:").replace(/\./g,"\\.").replace(/\[/g,"\\[").replace(/\]/g,"\\]").replace(/%/g,"\\%")}`;for(let P=0;P<L.length;P++){let f=L[P].trim();if(f===`${k} {`||f.startsWith(`${k} {`)){let b=P,C="";while(b<L.length){if(C+=L[b],L[b].includes("}"))break;b++}let x=C.match(/\{([^}]+)\}/);if(x)if(E)M.push(x[1].trim());else w.push(x[1].trim());break}}}if(w.length)O+=`
2975
2975
  .${V} { ${w.join(" ")} }`;if(M.length)O+=`
2976
2976
  @media (prefers-color-scheme: dark) { .dark .${V} { ${M.join(" ")} } }`}return A3.set(J,O),O}catch(Y){return console.warn("Failed to generate Crosswind CSS:",Y),""}}async function V0($,Z){if($.includes('data-crosswind="generated"'))return $;let Y=await R3($,Z);if(!Y)return $;let X=`<style data-crosswind="generated">
2977
2977
  ${Y}
@@ -3812,7 +3812,7 @@ ${Y}
3812
3812
  </script>`}function sK($,Z,Y){if(nK=0,!rF($))return $;let X=mF($);if(X.length===0)return $;let J=sF($,X),Q=nF(X,Z),G=J.lastIndexOf("</body>");if(G!==-1)J=J.slice(0,G)+Q+`
3813
3813
  `+J.slice(G);else J+=Q;return J}function sF($,Z){let Y=$;for(let X of Z){let Q=new RegExp(`<[a-z][a-z0-9-]*\\s+[^>]*data-stx-scope="([^"]*)"[^>]*x-data\\s*=\\s*["']${T3(X.stateExpr)}["']`,"gi").exec(Y);if(Q)X.id=Q[1],X.selector=`[data-stx-scope="${X.id}"]`;else{let K=new RegExp(`<[a-z][a-z0-9-]*\\s+[^>]*x-data\\s*=\\s*["']${T3(X.stateExpr)}["'][^>]*data-stx-scope="([^"]*)"`,"gi").exec(Y);if(K)X.id=K[1],X.selector=`[data-stx-scope="${X.id}"]`;else Y=Y.replace(new RegExp(`(<[a-z][a-z0-9-]*\\s+)([^>]*)(x-data\\s*=\\s*"${T3(X.stateExpr)}")([^>]*>)`,"gi"),`$1data-stx-scope="${X.id}" $2$3$4`),Y=Y.replace(new RegExp(`(<[a-z][a-z0-9-]*\\s+)([^>]*)(x-data\\s*=\\s*'${T3(X.stateExpr)}')([^>]*>)`,"gi"),`$1data-stx-scope="${X.id}" $2$3$4`)}}return Y=Y.replace(/\s*x-data\s*=\s*"([^"]*)"/g,' data-stx-xdata="$1"'),Y=Y.replace(/\s*x-data\s*=\s*'([^']*)'/g," data-stx-xdata='$1'"),Y=Y.replace(/\s*x-init\s*=\s*"[^"]*"/g,""),Y=Y.replace(/\s*x-init\s*=\s*'[^']*'/g,""),Y}function rF($){return/x-data\s*=\s*["']/.test($)}var nK=0,uF=0;var rK=D(()=>{f0()});import oF from"fs";import wX from"path";import{createHighlighter as aF}from"ts-syntax-highlighter";async function l1($,Z={}){try{if(!await a($))throw Error(`Markdown file not found: ${$}`);let X=(await oF.promises.stat($)).mtime.getTime();if(Z.cache&&I3.has($)){let B=I3.get($);if(B.updatedAt>=X)return{content:B.content,data:B.data}}let J=await Bun.file($).text(),{data:Q,content:G}=zG(J),K=Z.markdown||$1.markdown||{enabled:!0,syntaxHighlighting:{enabled:!0,serverSide:!0,defaultTheme:"github-dark",highlightUnknownLanguages:!0}},_=h7(G,{gfm:!0});if(K.syntaxHighlighting?.enabled&&K.syntaxHighlighting?.serverSide)_=await tF(_,K.syntaxHighlighting?.defaultTheme||"github-dark",K.syntaxHighlighting?.highlightUnknownLanguages||!1);let U={content:_,data:Q||{}};if(Z.cache)I3.set($,{...U,updatedAt:X});return U}catch(Y){if(Z.debug)console.error(`Error reading/parsing markdown file ${$}:`,Y);let X=Y instanceof Error?Y.message:String(Y);return{content:z0("Markdown File",`Error reading/parsing markdown file: ${X}`,$,"",0,""),data:{}}}}async function tF($,Z,Y){let X=/<pre><code( class="language-([^"]+)")?>([^<]+)<\/code><\/pre>/g;if(!E3)try{E3=await aF({theme:Z||"github-dark",cache:!0})}catch(K){return console.error("Failed to initialize ts-syntax-highlighter:",K),$}let J=async(K,W,_,U)=>{let B=U.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&amp;/g,"&").replace(/&quot;/g,'"').replace(/&#39;/g,"'"),z=_||(Y?"text":"");if(!z)return K;try{if(!E3.getSupportedLanguages().includes(z))return K;return(await E3.highlight(B,z,{theme:Z})).html}catch(q){console.error(`Error highlighting code block with language ${_}:`,q)}return K},Q=$,G=$.matchAll(X);for(let K of G){let[W,_,U,B]=K,z=await J(W,_,U,B);Q=Q.replace(W,z)}return Q}async function RX($,Z,Y="",X={}){return await eF($,/@markdown-file\(\s*['"]([^'"]+)['"]\s*(?:,\s*(\{[^}]*\}))?\)/g,async(G,K,W,_)=>{try{let U=K;if(!wX.isAbsolute(K))U=wX.resolve(wX.dirname(Y),K);let B={};if(W)try{try{B=JSON.parse(W)}catch{if(X.debug)console.warn("Using safer alternative for parsing JS object literal");let L=W.replace(/^\s*\{|\}\s*$/g,"").trim().split(/,(?=\s*\w+\s*:)/);for(let V of L){let A=V.indexOf(":");if(A>0){let N=V.substring(0,A).trim(),w=V.substring(A+1).trim(),M=w.startsWith('"')&&w.endsWith('"'),T=w.startsWith("'")&&w.endsWith("'");if(M||T)w=w.substring(1,w.length-1);B[N]=w}}}}catch(F){if(X.debug)console.error("Error parsing context in @markdown-file directive:",F)}let{content:z,data:q}=await l1(U,X),j={...Z,...q,...B},H=z,O=/\{\{([^}]+)\}\}/g;return H=H.replace(O,(F,L)=>{let V=L.trim();return j[V]!==void 0?String(j[V]):F}),H}catch(U){let B=U instanceof Error?U.message:String(U);return z0("Markdown File",`Error including markdown file: ${B}`,Y,$,_,G)}})}async function eF($,Z,Y){let X=[],J;while((J=Z.exec($))!==null){let K=J[0],W=J.index,_=J;X.push(Y(..._).then((U)=>({match:K,replacement:U,index:W})))}let Q=await Promise.all(X);Q.sort((K,W)=>W.index-K.index);let G=$;for(let{match:K,replacement:W}of Q)G=G.replace(K,()=>W);return G}var I3,E3=null;var m5=D(()=>{l0();q0();I3=new Map});function i1($,Z){try{let Y=$.trim();if(B0(Y))return j0(Y,Object.keys(Z))(...Object.values(Z));else return L0(Y,Z)}catch{return!1}}var MX=D(()=>{m0()});class Q4{source;pos=0;line=1;column=0;tokens=[];constructor($){this.source=$}tokenize(){this.tokens=[],this.pos=0,this.line=1,this.column=0;while(this.pos<this.source.length){let $=this.nextToken();if($)this.tokens.push($)}return this.tokens.push({type:"EOF",value:"",start:this.pos,end:this.pos,line:this.line,column:this.column}),this.tokens}nextToken(){if(this.pos>=this.source.length)return null;let $=this.pos,Z=this.line,Y=this.column,X=this.source[this.pos];if(/\s/.test(X))return this.readWhitespace($,Z,Y);if(X==="/"&&this.peek(1)==="/")return this.readLineComment($,Z,Y);if(X==="/"&&this.peek(1)==="*")return this.readBlockComment($,Z,Y);if(X==='"'||X==="'")return this.readString(X,$,Z,Y);if(X==="`")return this.readTemplateString($,Z,Y);if(/\d/.test(X)||X==="."&&/\d/.test(this.peek(1)||""))return this.readNumber($,Z,Y);if(/[a-z_$]/i.test(X))return this.readIdentifier($,Z,Y);if(X==="{"){if(this.peek(1)==="{"&&this.peek(2)==="{")return this.advance(3),{type:"RAW_START",value:"{{{",start:$,end:this.pos,line:Z,column:Y};if(this.peek(1)==="{")return this.advance(2),{type:"EXPRESSION_START",value:"{{",start:$,end:this.pos,line:Z,column:Y};if(this.peek(1)==="!"&&this.peek(2)==="!")return this.advance(3),{type:"RAW_START",value:"{!!",start:$,end:this.pos,line:Z,column:Y}}if(X==="}"){if(this.peek(1)==="}"&&this.peek(2)==="}")return this.advance(3),{type:"RAW_END",value:"}}}",start:$,end:this.pos,line:Z,column:Y};if(this.peek(1)==="}")return this.advance(2),{type:"EXPRESSION_END",value:"}}",start:$,end:this.pos,line:Z,column:Y}}if(X==="!"&&this.peek(1)==="!"&&this.peek(2)==="}")return this.advance(3),{type:"RAW_END",value:"!!}",start:$,end:this.pos,line:Z,column:Y};if(X==="@"&&/[a-z]/i.test(this.peek(1)||""))return this.readDirective($,Z,Y);let J=["===","!==","==","!=","<=",">=","&&","||","??","++","--","+=","-=","*=","/=","%=","**","=>","?.","...","<<",">>",">>>","&=","|=","^="];for(let Q of J)if(this.source.slice(this.pos,this.pos+Q.length)===Q)return this.advance(Q.length),{type:"OPERATOR",value:Q,start:$,end:this.pos,line:Z,column:Y};if(/[+\-*/%<>=!&|^~?:]/.test(X))return this.advance(),{type:"OPERATOR",value:X,start:$,end:this.pos,line:Z,column:Y};if(/[()[\]{},;.]/.test(X))return this.advance(),{type:"PUNCTUATION",value:X,start:$,end:this.pos,line:Z,column:Y};return this.advance(),{type:"PUNCTUATION",value:X,start:$,end:this.pos,line:Z,column:Y}}readWhitespace($,Z,Y){while(this.pos<this.source.length&&/\s/.test(this.source[this.pos]))this.advance();return{type:"WHITESPACE",value:this.source.slice($,this.pos),start:$,end:this.pos,line:Z,column:Y}}readLineComment($,Z,Y){this.advance(2);while(this.pos<this.source.length&&this.source[this.pos]!==`
3814
3814
  `)this.advance();return{type:"COMMENT",value:this.source.slice($,this.pos),start:$,end:this.pos,line:Z,column:Y}}readBlockComment($,Z,Y){this.advance(2);while(this.pos<this.source.length-1){if(this.source[this.pos]==="*"&&this.source[this.pos+1]==="/"){this.advance(2);break}this.advance()}return{type:"COMMENT",value:this.source.slice($,this.pos),start:$,end:this.pos,line:Z,column:Y}}readString($,Z,Y,X){this.advance();while(this.pos<this.source.length){let J=this.source[this.pos];if(J==="\\"){this.advance(2);continue}if(J===$){this.advance();break}this.advance()}return{type:"STRING",value:this.source.slice(Z,this.pos),start:Z,end:this.pos,line:Y,column:X}}readTemplateString($,Z,Y){this.advance();let X=0,J=256;while(this.pos<this.source.length){let Q=this.source[this.pos];if(Q==="\\"){this.advance(2);continue}if(Q==="$"&&this.peek(1)==="{"){if(X>=J){this.pos=this.source.length;break}this.advance(2),X++;continue}if(Q==="{"&&X>0){X++,this.advance();continue}if(Q==="}"&&X>0){X--,this.advance();continue}if(Q==="`"&&X===0){this.advance();break}this.advance()}return{type:"TEMPLATE_STRING",value:this.source.slice($,this.pos),start:$,end:this.pos,line:Z,column:Y}}readNumber($,Z,Y){if(this.source[this.pos]==="0"){let X=this.peek(1)?.toLowerCase();if(X==="x"||X==="o"||X==="b"){this.advance(2);while(this.pos<this.source.length&&/[\da-f_]/i.test(this.source[this.pos]))this.advance();return{type:"NUMBER",value:this.source.slice($,this.pos),start:$,end:this.pos,line:Z,column:Y}}}while(this.pos<this.source.length&&/[\d_]/.test(this.source[this.pos]))this.advance();if(this.source[this.pos]==="."&&/\d/.test(this.peek(1)||"")){this.advance();while(this.pos<this.source.length&&/[\d_]/.test(this.source[this.pos]))this.advance()}if(/e/i.test(this.source[this.pos]||"")){if(this.advance(),/[+-]/.test(this.source[this.pos]||""))this.advance();while(this.pos<this.source.length&&/[\d_]/.test(this.source[this.pos]))this.advance()}if(this.source[this.pos]==="n")this.advance();return{type:"NUMBER",value:this.source.slice($,this.pos),start:$,end:this.pos,line:Z,column:Y}}readIdentifier($,Z,Y){while(this.pos<this.source.length&&/[\w$]/.test(this.source[this.pos]))this.advance();return{type:"IDENTIFIER",value:this.source.slice($,this.pos),start:$,end:this.pos,line:Z,column:Y}}readDirective($,Z,Y){this.advance();while(this.pos<this.source.length&&/[a-z]/i.test(this.source[this.pos]))this.advance();return{type:"DIRECTIVE",value:this.source.slice($,this.pos),start:$,end:this.pos,line:Z,column:Y}}advance($=1){for(let Z=0;Z<$&&this.pos<this.source.length;Z++){if(this.source[this.pos]===`
3815
- `)this.line++,this.column=0;else this.column++;this.pos++}}peek($){return this.source[this.pos+$]}saveState(){return{pos:this.pos,line:this.line,column:this.column}}restoreState($){this.pos=$.pos,this.line=$.line,this.column=$.column}}function S0($,Z,Y,X=0){let J=0,Q=X,G=null,K=0,W=!1;while(Q<$.length){let _=$[Q];if(G&&W){W=!1,Q++;continue}if(G&&_==="\\"){W=!0,Q++;continue}if(W=!1,(_==='"'||_==="'"||_==="`")&&!G){G=_,Q++;continue}if(_===G&&G!=="`"){G=null,Q++;continue}if(G==="`"&&_==="$"&&$[Q+1]==="{"){K++,Q+=2;continue}if(K>0&&_==="}"){K--,Q++;continue}if(_==="`"&&G==="`"&&K===0){G=null,Q++;continue}if(G){Q++;continue}if(_===Z)J++;else if(_===Y){if(J--,J===0)return Q}Q++}return-1}function TX($,Z){let Y=Z,X={paren:0,bracket:0,brace:0},J=null,Q=0;while(Y<$.length){let G=$[Y];if((Y>0?$[Y-1]:"")==="\\"&&J){Y++;continue}if((G==='"'||G==="'")&&!J){J=G,Y++;continue}if(G===J&&J!=="`"){J=null,Y++;continue}if(G==="`"&&!J){J="`",Y++;continue}if(G==="`"&&J==="`"&&Q===0){J=null,Y++;continue}if(J==="`"&&G==="$"&&$[Y+1]==="{"){Q++,Y+=2;continue}if(Q>0){if(G==="{")Q++;else if(G==="}")Q--;Y++;continue}if(J){Y++;continue}if(X.paren===0&&X.bracket===0&&X.brace===0){if($.slice(Y,Y+2)==="}}"||$.slice(Y,Y+3)==="!!}")break;if(G===","||G===";")break}if(G==="(")X.paren++;else if(G===")"){if(X.paren--,X.paren<0)break}else if(G==="[")X.bracket++;else if(G==="]"){if(X.bracket--,X.bracket<0)break}else if(G==="{")X.brace++;else if(G==="}"){if(X.brace--,X.brace<0)break}Y++}return{expression:$.slice(Z,Y),endPos:Y}}function D3($){let Z=[],Y="",X={paren:0,bracket:0,brace:0},J=null,Q=0;for(let G=0;G<$.length;G++){let K=$[G];if((G>0?$[G-1]:"")==="\\"&&J){Y+=K;continue}if((K==='"'||K==="'")&&!J){J=K,Y+=K;continue}if(K===J&&J!=="`"){J=null,Y+=K;continue}if(K==="`"&&!J){J="`",Y+=K;continue}if(K==="`"&&J==="`"&&Q===0){J=null,Y+=K;continue}if(J==="`"&&K==="$"&&$[G+1]==="{"){Q++,Y+=K+$[G+1],G++;continue}if(Q>0&&K==="{"){Q++,Y+=K;continue}if(Q>0&&K==="}"){Q--,Y+=K;continue}if(J){Y+=K;continue}if(K==="(")X.paren++;else if(K===")")X.paren--;else if(K==="[")X.bracket++;else if(K==="]")X.bracket--;else if(K==="{")X.brace++;else if(K==="}")X.brace--;if(K==="|"&&$[G+1]!=="|"&&(G===0||$[G-1]!=="|")&&$[G-1]!=="\\"&&X.paren===0&&X.bracket===0&&X.brace===0){Z.push(Y.trim()),Y="";continue}if(K==="|"&&$[G-1]==="\\"&&!J){Y=Y.slice(0,-1)+K;continue}Y+=K}if(Y.trim())Z.push(Y.trim());return Z}function n1($,Z){let Y=$V($,Z);return Y.ok?{expression:Y.expression,endPos:Y.endPos}:null}function $V($,Z){let Y=Z;while(Y<$.length&&/\s/.test($[Y]))Y++;if($[Y]!=="(")return{ok:!1,reason:"missing-open-paren",pos:Y};let X=S0($,"(",")",Y);if(X===-1)return{ok:!1,reason:"unclosed-paren",pos:Y};return{ok:!0,expression:$.slice(Y+1,X),endPos:X+1}}function H$($,Z,Y,X){let J=1,Q=X,G=new RegExp(`@${Z}\\s*\\(`,"g"),K=new RegExp(`@${Y}(?![a-z])`,"g");while(Q<$.length&&J>0){G.lastIndex=Q,K.lastIndex=Q;let W=G.exec($),_=K.exec($),U=W?W.index:1/0,B=_?_.index:1/0;if(U<B)J++,Q=U+W[0].length;else if(B<1/0){if(J--,J===0)return B;Q=B+_[0].length}else break}return-1}function EX($,Z){let Y=$.slice(Z).match(/^@if\s*/);if(!Y)return null;let X=Z+Y[0].length,J=n1($,X);if(!J)return null;let Q=J.endPos,G=H$($,"if","endif",Q);if(G===-1)return null;let K=$.slice(Q,G),W=[],_=0,U="if",B=J.expression,z=0,q=0;while(_<K.length){let j=K.indexOf("@",_);if(j===-1)break;_=j;let H=K.substring(j);if(/^@if\s*\(/.test(H)){q++,_++;continue}if(/^@endif(?![a-z])/.test(H)){q--,_+=6;continue}if(q===0){let O=H.match(/^@elseif\s*/);if(O){W.push({type:U,condition:B,content:K.substring(z,_),start:Q+z,end:Q+_});let F=_+O[0].length,L=n1(K,F);if(!L){_++;continue}U="elseif",B=L.expression,_=L.endPos,z=_;continue}else if(/^@else(?![a-z])/.test(H)){W.push({type:U,condition:B,content:K.substring(z,_),start:Q+z,end:Q+_}),U="else",B=void 0,_+=5,z=_;continue}}_++}return W.push({type:U,condition:B,content:K.slice(z),start:Q+z,end:Q+K.length}),{fullMatch:$.slice(Z,G+6),branches:W,start:Z,end:G+6}}function k3($){let Z=[],Y=/@if\s*\(/g,X=Y.exec($);while(X!==null){if(Z.some((G)=>X.index>G.start&&X.index<G.end)){X=Y.exec($);continue}let Q=EX($,X.index);if(Q)Z.push(Q),Y.lastIndex=Q.end;X=Y.exec($)}return Z}function G4($,Z,Y){let X=[],J=new RegExp(`@${Z}\\s*\\(`,"g"),Q=J.exec($);while(Q!==null){if(X.some((H)=>Q.index>H.start&&Q.index<H.end)){Q=J.exec($);continue}let K=Q.index,W=K+Q[0].length-1,_=S0($,"(",")",W);if(_===-1){Q=J.exec($);continue}let U=$.slice(W+1,_),B=_+1,z=H$($,Z,Y,B);if(z===-1){Q=J.exec($);continue}let q=$.slice(B,z),j=z+`@${Y}`.length;X.push({fullMatch:$.slice(K,j),name:Z,params:U,content:q,start:K,end:j}),J.lastIndex=j,Q=J.exec($)}return X}function S3($,Z){let Y=$.slice(Z).match(/^@switch\s*/);if(!Y)return null;let X=Z+Y[0].length,J=n1($,X);if(!J)return null;let Q=J.endPos,G=H$($,"switch","endswitch",Q);if(G===-1)return null;let K=$.slice(Q,G),W=[],_=0,U=null,B=0;while(_<K.length){let z=K.slice(_),q=z.match(/^@switch\s*\(/),j=z.match(/^@endswitch(?![a-z])/);if(q){if(B++,U)U.content+=q[0];_+=q[0].length;continue}if(j){if(B--,U)U.content+=j[0];_+=j[0].length;continue}if(B>0){if(U)U.content+=K[_];_++;continue}let H=z.match(/^@case\s*/),O=z.match(/^@default(?![a-z])/),F=z.match(/^@break(?![a-z])/);if(H&&z.startsWith("@case")){if(U)W.push(U);let L=_+H[0].length,V=n1(K,L);if(!V){_++;continue}U={type:"case",value:V.expression,content:""},_=V.endPos}else if(O&&z.startsWith("@default")){if(U)W.push(U);U={type:"default",content:""},_+=O[0].length}else if(F&&z.startsWith("@break"))_+=F[0].length;else{if(U)U.content+=K[_];_++}}if(U)W.push(U);return{fullMatch:$.slice(Z,G+10),expression:J.expression,cases:W,start:Z,end:G+10}}var oK=()=>{};function eK($){let Z=[],Y=0;while(Y<$.length){let X=$.indexOf("{{",Y),J=$.indexOf("{!!",Y),Q=!1,G;if(X===-1&&J===-1)break;else if(X===-1)G=J,Q=!0;else if(J===-1)G=X,Q=!1;else if(J<X)G=J,Q=!0;else G=X,Q=!1;if(!Q&&$.slice(G,G+3)==="{{{")Q=!0;let K=Q?$.slice(G,G+3)==="{{{"?"{{{":"{!!":"{{",W=Q?K==="{{{"?"}}}":"!!}":"}}",_=G+K.length,U=ZV($,_,W);if(U===-1){Y=G+1;continue}let B=$.slice(_,U).trim(),z=U+W.length;Z.push({fullMatch:$.slice(G,z),expression:B,start:G,end:z,isRaw:Q}),Y=z}return Z}function ZV($,Z,Y){let X=Z,J=null,Q={paren:0,bracket:0,brace:0},G=0;while(X<$.length){let K=$[X];if((X>0?$[X-1]:"")==="\\"&&J){X++;continue}if((K==='"'||K==="'")&&!J){J=K,X++;continue}if(K===J&&J!=="`"){J=null,X++;continue}if(K==="`"&&!J){J="`",X++;continue}if(K==="`"&&J==="`"&&G===0){J=null,X++;continue}if(J==="`"&&K==="$"&&$[X+1]==="{"){G++,X+=2;continue}if(G>0){if(K==="{")G++;else if(K==="}")G--;X++;continue}if(J){X++;continue}if(K==="(")Q.paren++;else if(K===")")Q.paren--;else if(K==="[")Q.bracket++;else if(K==="]")Q.bracket--;else if(K==="{")Q.brace++;else if(K==="}")Q.brace--;if(Q.paren===0&&Q.bracket===0&&Q.brace<=0){if($.slice(X,X+Y.length)===Y)return X}X++}return-1}function $W($){let Z=D3($);if(Z.length===0)return{baseExpression:"",filters:[]};let Y=Z[0],X=[];for(let J=1;J<Z.length;J++){let Q=YV(Z[J]);if(Q)X.push(Q)}return{baseExpression:Y,filters:X}}function YV($){let Z=$.trim();if(!Z)return null;let Y=Z.indexOf("(");if(Y===-1)return{name:Z,args:[]};let X=Z.slice(0,Y).trim(),J=Y+1,Q=S0(Z,"(",")",Y);if(Q===-1)return{name:X,args:[]};let G=Z.slice(J,Q),K=IX(G);return{name:X,args:K}}function IX($){let Z=[],Y="",X={paren:0,bracket:0,brace:0},J=null,Q=0;for(let G=0;G<$.length;G++){let K=$[G];if((G>0?$[G-1]:"")==="\\"&&J){Y+=K;continue}if((K==='"'||K==="'")&&!J){J=K,Y+=K;continue}if(K===J&&J!=="`"){J=null,Y+=K;continue}if(K==="`"&&!J){J="`",Y+=K;continue}if(K==="`"&&J==="`"&&Q===0){J=null,Y+=K;continue}if(J==="`"&&K==="$"&&$[G+1]==="{"){Q++,Y+="${",G++;continue}if(Q>0&&K==="{"){Q++,Y+=K;continue}if(Q>0&&K==="}"){Q--,Y+=K;continue}if(J){Y+=K;continue}if(K==="(")X.paren++;else if(K===")")X.paren--;else if(K==="[")X.bracket++;else if(K==="]")X.bracket--;else if(K==="{")X.brace++;else if(K==="}")X.brace--;if(K===","&&X.paren===0&&X.bracket===0&&X.brace===0){Z.push(Y.trim()),Y="";continue}Y+=K}if(Y.trim())Z.push(Y.trim());return Z}function ZW($,Z){let Y=Z;while(Y<$.length&&/\s/.test($[Y]))Y++;if($[Y]!=="(")return null;let X=S0($,"(",")",Y);if(X===-1)return null;return{params:$.slice(Y+1,X),endPos:X+1}}function YW($){let Z=[],X=new Q4($).tokenize().filter((Q)=>Q.type!=="WHITESPACE"&&Q.type!=="COMMENT"),J=0;while(J<X.length){let Q=X[J],G=!1;if(Q.type==="IDENTIFIER"&&Q.value==="export"){if(G=!0,J++,J>=X.length)break}let K=X[J];if(K.type==="IDENTIFIER"&&(K.value==="const"||K.value==="let"||K.value==="var")){let W=K.value;if(J++,J>=X.length)break;let _=X[J];if(_.type==="IDENTIFIER"){let U=_.value;if(J++,J<X.length&&X[J].type==="OPERATOR"&&X[J].value==="="){J++;let B=J<X.length?X[J].start:$.length,z=aK(X,J,$);J=z.nextIndex,Z.push({type:"variable",name:U,value:$.slice(B,z.endPos),exported:G,start:K.start,end:z.endPos})}}else if(_.type==="PUNCTUATION"&&(_.value==="{"||_.value==="[")){let U=_.start,B=_.value==="{"?"}":"]",z=S0($,_.value,B,U);if(z!==-1){let q=$.slice(U,z+1);if(J=tK(X,z+1),J<X.length&&X[J].type==="OPERATOR"&&X[J].value==="="){J++;let j=J<X.length?X[J].start:$.length,H=aK(X,J,$);J=H.nextIndex;let O=`__stx_destructured_${Z.length}`;Z.push({type:"variable",name:O,value:`${$.slice(j,H.endPos)}; ${W} ${q} = ${O}`,exported:G,start:K.start,end:H.endPos})}}}}else if(K.type==="IDENTIFIER"&&K.value==="function"){let W=G?X[J-1].start:K.start;if(J++,J>=X.length)break;let _=X[J];if(_.type==="IDENTIFIER"){let U=_.value;J++;let B=-1;while(J<X.length){if(X[J].type==="PUNCTUATION"&&X[J].value==="{"){B=X[J].start;break}J++}if(B!==-1){let z=S0($,"{","}",B);if(z!==-1)Z.push({type:"function",name:U,value:$.slice(W,z+1).replace(/^export\s+/,""),exported:G,start:W,end:z+1}),J=tK(X,z+1)}}}else J++}return Z}function aK($,Z,Y){let X=Z,J={paren:0,bracket:0,brace:0},Q=Z<$.length?$[Z].start:Y.length;while(X<$.length){let G=$[X];if(G.type==="PUNCTUATION"){if(G.value==="(")J.paren++;else if(G.value===")")J.paren--;else if(G.value==="[")J.bracket++;else if(G.value==="]")J.bracket--;else if(G.value==="{")J.brace++;else if(G.value==="}")J.brace--;if(G.value===";"&&J.paren===0&&J.bracket===0&&J.brace===0){Q=G.start,X++;break}}if(G.type==="IDENTIFIER"&&(G.value==="const"||G.value==="let"||G.value==="var"||G.value==="function"||G.value==="export")){if(J.paren===0&&J.bracket===0&&J.brace===0){Q=$[X-1]?.end??G.start;break}}Q=G.end,X++}return{nextIndex:X,endPos:Q}}function tK($,Z){for(let Y=0;Y<$.length;Y++)if($[Y].start>=Z)return Y;return $.length}var XW=()=>{};var b3=D(()=>{oK();XW()});function XV($,Z,Y){let X=$,J=!0;while(J){J=!1;let Q=X.match(/@switch\s*\(/);if(!Q||Q.index===void 0)break;let G=Q.index,K=S3(X,G);if(!K)break;try{let W;if(B0(K.expression))W=j0(K.expression,Object.keys(Z))(...Object.values(Z));else W=L0(K.expression,Z);let _="",U=!1;for(let B of K.cases)if(B.type==="default"){if(!U)_=B.content.trim()}else try{let z;if(B.value&&B0(B.value))z=j0(B.value,Object.keys(Z))(...Object.values(Z));else if(B.value)z=L0(B.value,Z);if(W===z){_=B.content.trim(),U=!0;break}}catch{continue}X=X.substring(0,G)+_+X.substring(K.end),J=!0}catch(W){let _=W instanceof Error?W.message:String(W),U=Z0("Switch",`Error evaluating @switch expression: ${_}`,o.EVALUATION_ERROR);X=X.substring(0,G)+U+X.substring(K.end);break}}return X}function p$($,Z,Y){let X=$;X=XV(X,Z,Y);{let Q=!0;while(Q){Q=!1;let G=X.match(/@unless\s*\(/);if(!G||G.index===void 0)break;let K=G.index,W=n1(X,K+7);if(!W)break;let _=W.endPos,U=H$(X,"unless","endunless",_);if(U===-1){console.warn(`[stx] @unless directive at position ${K} has no matching @endunless \u2014 the block was skipped. Check for typos or missing closers.`);break}let B=X.slice(_,U),z=W.expression,q=-1;{let H=0,O=/@(?:if|unless)\s*\(/g,F=/@(?:endif|endunless)(?![a-z])/g,L=/@else(?![a-z])/g,V=[],A;while((A=O.exec(B))!==null)V.push({pos:A.index,type:"open"});while((A=F.exec(B))!==null)V.push({pos:A.index,type:"close"});while((A=L.exec(B))!==null)V.push({pos:A.index,type:"else"});V.sort((N,w)=>N.pos-w.pos);for(let N of V)if(N.type==="open")H++;else if(N.type==="close")H--;else if(N.type==="else"&&H===0){q=N.pos;break}}let j;if(q!==-1){let H=B.slice(0,q),O=B.slice(q+5);j=`@if (${z})${O}@else ${H}@endif`}else j=`@if (!(${z}))${B}@endif`;X=X.substring(0,K)+j+X.substring(U+10),Q=!0}}X=kX(X,Z,Y),X=SX(X,Z,Y),X=DX(X,Z);let J=()=>{let Q=k3(X);if(Q.length===0)return!1;for(let G=Q.length-1;G>=0;G--){let K=Q[G];try{let W="",_=!1;for(let U of K.branches){if(_)break;if(U.type==="else")W=U.content,_=!0;else try{let B;if(U.condition&&B0(U.condition))B=j0(U.condition,Object.keys(Z))(...Object.values(Z));else if(U.condition)B=L0(U.condition,Z);if(B)W=U.content,_=!0}catch(B){W=Z0(U.type==="if"?"If":"Elseif",`Error in @${U.type}(${U.condition}): ${B instanceof Error?B.message:String(B)}`,o.EVALUATION_ERROR),_=!0}}X=X.substring(0,K.start)+W+X.substring(K.end)}catch(W){let _=W instanceof Error?W.message:String(W),U=Z0("If",`Error processing @if block: ${_}`,o.EVALUATION_ERROR);X=X.substring(0,K.start)+U+X.substring(K.end)}}return!0};while(J());return X}function JW($){let Z=0;while(Z<$.length&&/\s/.test($[Z]))Z++;if($[Z]!=="(")return null;Z++;while(Z<$.length&&/\s/.test($[Z]))Z++;let Y=$[Z];if(Y!=="'"&&Y!=='"')return null;Z++;let X=[];while(Z<$.length){let J=$[Z];if(J==="\\"&&Z+1<$.length){X.push($[Z+1]),Z+=2;continue}if(J===Y){Z++;break}X.push(J),Z++}while(Z<$.length&&/\s/.test($[Z]))Z++;if($[Z]!==")")return null;return Z++,{value:X.join(""),consumed:Z}}function DX($,Z){let Y=$;function X(K,W,_,U){let B=1,z=U,q=new RegExp(`@${W}(?:\\s*\\(|\\s|$)`,"g"),j=new RegExp(`@${_}(?![a-z])`,"g");while(z<K.length&&B>0){q.lastIndex=z,j.lastIndex=z;let H=q.exec(K),O=j.exec(K),F=H?H.index:1/0,L=O?O.index:1/0;if(F<L)B++,z=F+H[0].length;else if(L<1/0){if(B--,B===0)return L;z=L+O[0].length}else break}return-1}function J(K,W,_){let U=0,B=new RegExp(`@${W}(?:\\s*\\(|\\s|$)`,"g"),z=new RegExp(`@${_}(?![a-z])`,"g"),q=/@else(?![a-z])/g,j=[],H;while((H=B.exec(K))!==null)j.push({pos:H.index,type:"open"});while((H=z.exec(K))!==null)j.push({pos:H.index,type:"close"});while((H=q.exec(K))!==null)j.push({pos:H.index,type:"else"});j.sort((O,F)=>O.pos-F.pos);for(let O of j)if(O.type==="open")U++;else if(O.type==="close")U--;else if(O.type==="else"&&U===0)return O.pos;return-1}{let K=!0;while(K){K=!1;let W=Y.match(/@auth(?:\s*\(|\s|(?=\n))/);if(!W||W.index===void 0)break;let _=W.index,U,B,z=Y.slice(_+5),q=JW(z);if(q)U=q.value,B=_+5+q.consumed;else B=_+5;let j=X(Y,"auth","endauth",B);if(j===-1){console.warn(`[stx] @auth directive at position ${_} has no matching @endauth \u2014 the block was skipped.`);break}let H=Y.slice(B,j),O=J(H,"auth","endauth"),F;if(!Z.auth)F=!1;else F=U?i1(`auth?.check && auth?.user?.[${U}]`,Z):i1("auth?.check",Z);let L;if(O!==-1){let V=H.slice(0,O),A=H.slice(O+5);L=F?V:A}else L=F?H:"";Y=Y.substring(0,_)+L+Y.substring(j+8),K=!0}}{let K=!0;while(K){K=!1;let W=Y.match(/@guest(?:\s*\(|\s|(?=\n))/);if(!W||W.index===void 0)break;let _=W.index,U,B,z=Y.slice(_+6),q=JW(z);if(q)U=q.value,B=_+6+q.consumed;else B=_+6;let j=X(Y,"guest","endguest",B);if(j===-1){console.warn(`[stx] @guest directive at position ${_} has no matching @endguest \u2014 the block was skipped.`);break}let H=Y.slice(B,j),O=J(H,"guest","endguest"),F;if(!Z.auth)F=!0;else F=U?i1(`!auth?.check || !auth?.user?.[${U}]`,Z):i1("!auth?.check",Z);let L;if(O!==-1){let V=H.slice(0,O),A=H.slice(O+5);L=F?V:A}else L=F?H:"";Y=Y.substring(0,_)+L+Y.substring(j+9),K=!0}}function Q(K,W,_){if(Z.userCan&&typeof Z.userCan[K]==="boolean")return Z.userCan[K];if(Z.permissions?.check&&typeof Z.permissions.check==="function")try{let U=[K];if(W)U.push(W);if(_){let B=i1(_,Z);U.push(B)}return Z.permissions.check(...U)}catch{return!1}return!1}function G(K){let W=K.match(/^\s*\(\s*'([^']*)'(?:,\s*'([^']*)')?(?:,\s*([^)]*))?\)/);if(!W)return null;return{ability:W[1],type:W[2],id:W[3]?.trim(),paramsEnd:W[0].length}}for(let K of["can","cannot"]){let W=`end${K}`,_=K==="can"?"elsecan":"elsecannot",U=!0;while(U){U=!1;let B=Y.match(new RegExp(`@${K}\\s*\\(`));if(!B||B.index===void 0)break;let z=B.index,q=Y.slice(z+`@${K}`.length),j=G(q);if(!j)break;let H=z+`@${K}`.length+j.paramsEnd,O=X(Y,K,W,H);if(O===-1){console.warn(`[stx] @${K} directive at position ${z} has no matching @${W} \u2014 the block was skipped.`);break}let F=Y.slice(H,O),L=[],V=0,A=new RegExp(`@${K}\\s*\\(`,"g"),N=new RegExp(`@${W}(?![a-z])`,"g"),w=new RegExp(`@${_}\\s*\\(`,"g"),M=/@else(?![a-z])/g,T=[],I;while((I=A.exec(F))!==null)T.push({pos:I.index,type:"open"});while((I=N.exec(F))!==null)T.push({pos:I.index,type:"close"});while((I=w.exec(F))!==null)T.push({pos:I.index,type:"elseDirective"});while((I=M.exec(F))!==null)T.push({pos:I.index,type:"else"});T.sort((x,C)=>x.pos-C.pos);for(let x of T){if(x.type==="open"){V++;continue}if(x.type==="close"){V--;continue}if(V===0)L.push(x)}let E=[],S=0;for(let x=0;x<L.length;x++){let C=L[x];if(E.push({content:F.slice(S,C.pos),ability:void 0}),C.type==="elseDirective"){let f=F.slice(C.pos+`@${_}`.length),g=G(f);if(g){E[E.length-1]={content:F.slice(S,C.pos)},S=C.pos+`@${_}`.length+g.paramsEnd,E.push({content:"",ability:g.ability,type:g.type,id:g.id}),E.pop();let d=L[x+1],p=d?d.pos:F.length;E.push({content:F.slice(S,p),ability:g.ability,type:g.type,id:g.id}),S=p}}else S=C.pos+5}if(S<F.length){let x=E[E.length-1];if(L.length>0&&L[L.length-1].type==="else")E.push({content:F.slice(S),isFinalElse:!0});else if(E.length===0)E.push({content:F.slice(S)})}let k=Q(j.ability,j.type,j.id),b=K==="can"?k:!k,P="";if(b)P=E[0]?.content||"";else{let x=!1;for(let C=1;C<E.length;C++){let f=E[C];if(f.isFinalElse){P=f.content,x=!0;break}if(f.ability){let g=Q(f.ability,f.type,f.id);if(K==="can"?g:!g){P=f.content,x=!0;break}}}if(!x&&E.length>0){let C=E[E.length-1];if(C.isFinalElse)P=C.content}}Y=Y.substring(0,z)+P+Y.substring(O+`@${W}`.length),U=!0}}return Y}function kX($,Z,Y){let X=$;function J(Q,G,K,W,_){let U=!0;while(U){U=!1;let B=new RegExp(`@${G}\\s*\\(`),z=Q.match(B);if(!z||z.index===void 0)break;let q=z.index,j=n1(Q,q+`@${G}`.length);if(!j)break;let H=j.endPos,O=H$(Q,G,K,H);if(O===-1){console.warn(`[stx] @${G} directive at position ${q} has no matching @${K} \u2014 the block was skipped.`);break}let F=Q.slice(H,O),L=j.expression,V=-1,A=0,N=0;while(N<F.length){let w=F.indexOf("@",N);if(w===-1)break;let M=F.substring(w);if(/^@(?:if|unless|isset|empty)\s*\(/.test(M)){A++,N=w+1;continue}if(/^@(?:endif|endunless|endisset|endempty)(?![a-z])/.test(M)){A--,N=w+1;continue}if(A===0&&/^@else(?![a-z])/.test(M)){V=w;break}N=w+1}try{let w=W(L.trim()),M;if(V!==-1){let T=F.slice(0,V),I=F.slice(V+5);M=w?T:I}else M=w?F:"";Q=Q.substring(0,q)+M+Q.substring(O+`@${K}`.length),U=!0}catch(w){let M=w instanceof Error?w.message:String(w),T=Z0(_,`Error processing @${G} directive: ${M}`,o.EVALUATION_ERROR);Q=Q.substring(0,q)+T+Q.substring(O+`@${K}`.length);break}}return Q}return X=J(X,"isset","endisset",(Q)=>{let G=i1(Q,Z);return G!==void 0&&G!==null},"Isset"),X=J(X,"empty","endempty",(Q)=>{let G=i1(Q,Z);return G===void 0||G===null||G===""||G===0||G===!1||Array.isArray(G)&&G.length===0||typeof G==="object"&&G!==null&&Object.keys(G).length===0},"Empty"),X}function SX($,Z,Y){let X=$,J="development";function Q(G,K,W,_){let U=new RegExp(`@${K}(?![a-z])`,"g"),B=new RegExp(`@${W}(?![a-z])`,"g"),z=new RegExp(`^@${K}(?![a-z])`),q=new RegExp(`^@${W}(?![a-z])`),j=G,H=!0;while(H){H=!1,U.lastIndex=0;let O=U.exec(j);if(!O)break;let F=O.index,L=F+O[0].length;if(K==="env"){let k=j.substring(L).match(/^\s*\(\s*(['"])([^'"]+)\1\s*\)/);if(!k)break;L+=k[0].length,_=J===k[2]}let V=1,A=L,N=-1;while(V>0&&A<j.length){U.lastIndex=A,B.lastIndex=A;let k=U.exec(j),b=B.exec(j),P=k?k.index:1/0,x=b?b.index:1/0;if(P<x)V++,A=P+k[0].length;else if(x<1/0){if(V--,V===0){N=x;break}A=x+b[0].length}else break}if(N===-1){console.warn(`[stx] @${K} directive at position ${F} has no matching @${W} \u2014 the block was skipped.`);break}let w=j.substring(L,N),M=-1,T=0,I=0;while(I<w.length){let k=w.indexOf("@",I);if(k===-1)break;let b=w.substring(k);if(z.test(b)){T++,I=k+1;continue}if(q.test(b)){T--,I=k+1;continue}if(T===0&&/^@else(?![a-z])/.test(b)){M=k;break}I=k+1}let E;if(M!==-1){let k=w.slice(0,M),b=w.slice(M+5);E=_?k:b}else E=_?w:"";let S=`@${W}`.length;j=j.substring(0,F)+E+j.substring(N+S),H=!0}return j}return X=Q(X,"env","endenv",!1),X=Q(X,"production","endproduction",J==="production"),X=Q(X,"development","enddevelopment",J==="development"),X=Q(X,"staging","endstaging",J==="staging"),X=Q(X,"testing","endtesting",J==="testing"),X}var C3=D(()=>{MX();J1();b3();m0()});function CX($=16){let Z=new Uint8Array($);return crypto.getRandomValues(Z),btoa(String.fromCharCode(...Z))}function O$($,Z){if(!$)return Z?.nonceGenerator?.()??CX();let Y=bX.get($);if(!Y)Y=Z?.nonceGenerator?.()??CX(),bX.set($,Y);return Y}function JV($){bX.delete($)}function yX($,Z){let Y=[];for(let[X,J]of Object.entries($)){if(J===void 0||J===null)continue;if(typeof J==="boolean"){if(J)Y.push(X);continue}if(Array.isArray(J)){let Q=[...J];if(Z&&(X==="script-src"||X==="style-src"))Q=Q.filter((G)=>!G.startsWith("'nonce-")),Q.push(`'nonce-${Z}'`);if(Q.length>0)Y.push(`${X} ${Q.join(" ")}`)}}return Y.join("; ")}function P3($,Z){return`<meta http-equiv="Content-Security-Policy" content="${yX($,Z).replace(/&/g,"&amp;").replace(/"/g,"&quot;")}">`}function QV($){return{enabled:!0,directives:{strict:QW,moderate:y3,relaxed:GW,api:KW}[$]||y3,useNonce:$==="strict",addMetaTag:!0}}function GV($,Z){let Y={...$};for(let[X,J]of Object.entries(Z)){let Q=X,G=Y[Q];if(J===void 0||J===null)continue;if(typeof J==="boolean")Y[Q]=G||J;else if(Array.isArray(J)){let K=Array.isArray(G)?G:[],W=[...new Set([...K,...J])];Y[Q]=W}}return Y}function PX($,Z,Y){if(!Z.enabled||!Z.addMetaTag)return $;if($.includes('http-equiv="Content-Security-Policy"'))return $;if(!$.includes("<head>")&&!$.includes("<head "))return $;let X=Z.useNonce?O$(Y,Z):void 0,J=P3(Z.directives,X);return $.replace(/<head([^>]*)>/,`<head$1>
3815
+ `)this.line++,this.column=0;else this.column++;this.pos++}}peek($){return this.source[this.pos+$]}saveState(){return{pos:this.pos,line:this.line,column:this.column}}restoreState($){this.pos=$.pos,this.line=$.line,this.column=$.column}}function S0($,Z,Y,X=0){let J=0,Q=X,G=null,K=0,W=!1;while(Q<$.length){let _=$[Q];if(G&&W){W=!1,Q++;continue}if(G&&_==="\\"){W=!0,Q++;continue}if(W=!1,(_==='"'||_==="'"||_==="`")&&!G){G=_,Q++;continue}if(_===G&&G!=="`"){G=null,Q++;continue}if(G==="`"&&_==="$"&&$[Q+1]==="{"){K++,Q+=2;continue}if(K>0&&_==="}"){K--,Q++;continue}if(_==="`"&&G==="`"&&K===0){G=null,Q++;continue}if(G){Q++;continue}if(_===Z)J++;else if(_===Y){if(J--,J===0)return Q}Q++}return-1}function TX($,Z){let Y=Z,X={paren:0,bracket:0,brace:0},J=null,Q=0;while(Y<$.length){let G=$[Y];if((Y>0?$[Y-1]:"")==="\\"&&J){Y++;continue}if((G==='"'||G==="'")&&!J){J=G,Y++;continue}if(G===J&&J!=="`"){J=null,Y++;continue}if(G==="`"&&!J){J="`",Y++;continue}if(G==="`"&&J==="`"&&Q===0){J=null,Y++;continue}if(J==="`"&&G==="$"&&$[Y+1]==="{"){Q++,Y+=2;continue}if(Q>0){if(G==="{")Q++;else if(G==="}")Q--;Y++;continue}if(J){Y++;continue}if(X.paren===0&&X.bracket===0&&X.brace===0){if($.slice(Y,Y+2)==="}}"||$.slice(Y,Y+3)==="!!}")break;if(G===","||G===";")break}if(G==="(")X.paren++;else if(G===")"){if(X.paren--,X.paren<0)break}else if(G==="[")X.bracket++;else if(G==="]"){if(X.bracket--,X.bracket<0)break}else if(G==="{")X.brace++;else if(G==="}"){if(X.brace--,X.brace<0)break}Y++}return{expression:$.slice(Z,Y),endPos:Y}}function D3($){let Z=[],Y="",X={paren:0,bracket:0,brace:0},J=null,Q=0;for(let G=0;G<$.length;G++){let K=$[G];if((G>0?$[G-1]:"")==="\\"&&J){Y+=K;continue}if((K==='"'||K==="'")&&!J){J=K,Y+=K;continue}if(K===J&&J!=="`"){J=null,Y+=K;continue}if(K==="`"&&!J){J="`",Y+=K;continue}if(K==="`"&&J==="`"&&Q===0){J=null,Y+=K;continue}if(J==="`"&&K==="$"&&$[G+1]==="{"){Q++,Y+=K+$[G+1],G++;continue}if(Q>0&&K==="{"){Q++,Y+=K;continue}if(Q>0&&K==="}"){Q--,Y+=K;continue}if(J){Y+=K;continue}if(K==="(")X.paren++;else if(K===")")X.paren--;else if(K==="[")X.bracket++;else if(K==="]")X.bracket--;else if(K==="{")X.brace++;else if(K==="}")X.brace--;if(K==="|"&&$[G+1]!=="|"&&(G===0||$[G-1]!=="|")&&$[G-1]!=="\\"&&X.paren===0&&X.bracket===0&&X.brace===0){Z.push(Y.trim()),Y="";continue}if(K==="|"&&$[G-1]==="\\"&&!J){Y=Y.slice(0,-1)+K;continue}Y+=K}if(Y.trim())Z.push(Y.trim());return Z}function n1($,Z){let Y=$V($,Z);return Y.ok?{expression:Y.expression,endPos:Y.endPos}:null}function $V($,Z){let Y=Z;while(Y<$.length&&/\s/.test($[Y]))Y++;if($[Y]!=="(")return{ok:!1,reason:"missing-open-paren",pos:Y};let X=S0($,"(",")",Y);if(X===-1)return{ok:!1,reason:"unclosed-paren",pos:Y};return{ok:!0,expression:$.slice(Y+1,X),endPos:X+1}}function H$($,Z,Y,X){let J=1,Q=X,G=new RegExp(`@${Z}\\s*\\(`,"g"),K=new RegExp(`@${Y}(?![a-z])`,"g");while(Q<$.length&&J>0){G.lastIndex=Q,K.lastIndex=Q;let W=G.exec($),_=K.exec($),U=W?W.index:1/0,B=_?_.index:1/0;if(U<B)J++,Q=U+W[0].length;else if(B<1/0){if(J--,J===0)return B;Q=B+_[0].length}else break}return-1}function EX($,Z){let Y=$.slice(Z).match(/^@if\s*/);if(!Y)return null;let X=Z+Y[0].length,J=n1($,X);if(!J)return null;let Q=J.endPos,G=H$($,"if","endif",Q);if(G===-1)return null;let K=$.slice(Q,G),W=[],_=0,U="if",B=J.expression,z=0,q=0;while(_<K.length){let j=K.indexOf("@",_);if(j===-1)break;_=j;let H=K.substring(j);if(/^@if\s*\(/.test(H)){q++,_++;continue}if(/^@endif(?![a-z])/.test(H)){q--,_+=6;continue}if(q===0){let O=H.match(/^@elseif\s*/);if(O){W.push({type:U,condition:B,content:K.substring(z,_),start:Q+z,end:Q+_});let F=_+O[0].length,L=n1(K,F);if(!L){_++;continue}U="elseif",B=L.expression,_=L.endPos,z=_;continue}else if(/^@else(?![a-z])/.test(H)){W.push({type:U,condition:B,content:K.substring(z,_),start:Q+z,end:Q+_}),U="else",B=void 0,_+=5,z=_;continue}}_++}return W.push({type:U,condition:B,content:K.slice(z),start:Q+z,end:Q+K.length}),{fullMatch:$.slice(Z,G+6),branches:W,start:Z,end:G+6}}function k3($){let Z=[],Y=/@if\s*\(/g,X=Y.exec($);while(X!==null){if(Z.some((G)=>X.index>G.start&&X.index<G.end)){X=Y.exec($);continue}let Q=EX($,X.index);if(Q)Z.push(Q),Y.lastIndex=Q.end;X=Y.exec($)}return Z}function G4($,Z,Y){let X=[],J=new RegExp(`@${Z}\\s*\\(`,"g"),Q=J.exec($);while(Q!==null){if(X.some((H)=>Q.index>H.start&&Q.index<H.end)){Q=J.exec($);continue}let K=Q.index,W=K+Q[0].length-1,_=S0($,"(",")",W);if(_===-1){Q=J.exec($);continue}let U=$.slice(W+1,_),B=_+1,z=H$($,Z,Y,B);if(z===-1){Q=J.exec($);continue}let q=$.slice(B,z),j=z+`@${Y}`.length;X.push({fullMatch:$.slice(K,j),name:Z,params:U,content:q,start:K,end:j}),J.lastIndex=j,Q=J.exec($)}return X}function S3($,Z){let Y=$.slice(Z).match(/^@switch\s*/);if(!Y)return null;let X=Z+Y[0].length,J=n1($,X);if(!J)return null;let Q=J.endPos,G=H$($,"switch","endswitch",Q);if(G===-1)return null;let K=$.slice(Q,G),W=[],_=0,U=null,B=0;while(_<K.length){let z=K.slice(_),q=z.match(/^@switch\s*\(/),j=z.match(/^@endswitch(?![a-z])/);if(q){if(B++,U)U.content+=q[0];_+=q[0].length;continue}if(j){if(B--,U)U.content+=j[0];_+=j[0].length;continue}if(B>0){if(U)U.content+=K[_];_++;continue}let H=z.match(/^@case\s*/),O=z.match(/^@default(?![a-z])/),F=z.match(/^@break(?![a-z])/);if(H&&z.startsWith("@case")){if(U)W.push(U);let L=_+H[0].length,V=n1(K,L);if(!V){_++;continue}U={type:"case",value:V.expression,content:""},_=V.endPos}else if(O&&z.startsWith("@default")){if(U)W.push(U);U={type:"default",content:""},_+=O[0].length}else if(F&&z.startsWith("@break"))_+=F[0].length;else{if(U)U.content+=K[_];_++}}if(U)W.push(U);return{fullMatch:$.slice(Z,G+10),expression:J.expression,cases:W,start:Z,end:G+10}}var oK=()=>{};function eK($){let Z=[],Y=0;while(Y<$.length){let X=$.indexOf("{{",Y),J=$.indexOf("{!!",Y),Q=!1,G;if(X===-1&&J===-1)break;else if(X===-1)G=J,Q=!0;else if(J===-1)G=X,Q=!1;else if(J<X)G=J,Q=!0;else G=X,Q=!1;if(!Q&&$.slice(G,G+3)==="{{{")Q=!0;let K=Q?$.slice(G,G+3)==="{{{"?"{{{":"{!!":"{{",W=Q?K==="{{{"?"}}}":"!!}":"}}",_=G+K.length,U=ZV($,_,W);if(U===-1){Y=G+1;continue}let B=$.slice(_,U).trim(),z=U+W.length;Z.push({fullMatch:$.slice(G,z),expression:B,start:G,end:z,isRaw:Q}),Y=z}return Z}function ZV($,Z,Y){let X=Z,J=null,Q={paren:0,bracket:0,brace:0},G=0;while(X<$.length){let K=$[X];if((X>0?$[X-1]:"")==="\\"&&J){X++;continue}if((K==='"'||K==="'")&&!J){J=K,X++;continue}if(K===J&&J!=="`"){J=null,X++;continue}if(K==="`"&&!J){J="`",X++;continue}if(K==="`"&&J==="`"&&G===0){J=null,X++;continue}if(J==="`"&&K==="$"&&$[X+1]==="{"){G++,X+=2;continue}if(G>0){if(K==="{")G++;else if(K==="}")G--;X++;continue}if(J){X++;continue}if(K==="(")Q.paren++;else if(K===")")Q.paren--;else if(K==="[")Q.bracket++;else if(K==="]")Q.bracket--;else if(K==="{")Q.brace++;else if(K==="}")Q.brace--;if(Q.paren===0&&Q.bracket===0&&Q.brace<=0){if($.slice(X,X+Y.length)===Y)return X}X++}return-1}function $W($){let Z=D3($);if(Z.length===0)return{baseExpression:"",filters:[]};let Y=Z[0],X=[];for(let J=1;J<Z.length;J++){let Q=YV(Z[J]);if(Q)X.push(Q)}return{baseExpression:Y,filters:X}}function YV($){let Z=$.trim();if(!Z)return null;let Y=Z.indexOf("(");if(Y===-1)return{name:Z,args:[]};let X=Z.slice(0,Y).trim(),J=Y+1,Q=S0(Z,"(",")",Y);if(Q===-1)return{name:X,args:[]};let G=Z.slice(J,Q),K=IX(G);return{name:X,args:K}}function IX($){let Z=[],Y="",X={paren:0,bracket:0,brace:0},J=null,Q=0;for(let G=0;G<$.length;G++){let K=$[G];if((G>0?$[G-1]:"")==="\\"&&J){Y+=K;continue}if((K==='"'||K==="'")&&!J){J=K,Y+=K;continue}if(K===J&&J!=="`"){J=null,Y+=K;continue}if(K==="`"&&!J){J="`",Y+=K;continue}if(K==="`"&&J==="`"&&Q===0){J=null,Y+=K;continue}if(J==="`"&&K==="$"&&$[G+1]==="{"){Q++,Y+="${",G++;continue}if(Q>0&&K==="{"){Q++,Y+=K;continue}if(Q>0&&K==="}"){Q--,Y+=K;continue}if(J){Y+=K;continue}if(K==="(")X.paren++;else if(K===")")X.paren--;else if(K==="[")X.bracket++;else if(K==="]")X.bracket--;else if(K==="{")X.brace++;else if(K==="}")X.brace--;if(K===","&&X.paren===0&&X.bracket===0&&X.brace===0){Z.push(Y.trim()),Y="";continue}Y+=K}if(Y.trim())Z.push(Y.trim());return Z}function ZW($,Z){let Y=Z;while(Y<$.length&&/\s/.test($[Y]))Y++;if($[Y]!=="(")return null;let X=S0($,"(",")",Y);if(X===-1)return null;return{params:$.slice(Y+1,X),endPos:X+1}}function YW($){let Z=[],X=new Q4($).tokenize().filter((Q)=>Q.type!=="WHITESPACE"&&Q.type!=="COMMENT"),J=0;while(J<X.length){let Q=X[J],G=!1;if(Q.type==="IDENTIFIER"&&Q.value==="export"){if(G=!0,J++,J>=X.length)break}let K=X[J];if(K.type==="IDENTIFIER"&&(K.value==="const"||K.value==="let"||K.value==="var")){let W=K.value;if(J++,J>=X.length)break;let _=X[J];if(_.type==="IDENTIFIER"){let U=_.value;if(J++,J<X.length&&X[J].type==="OPERATOR"&&X[J].value==="="){J++;let B=J<X.length?X[J].start:$.length,z=aK(X,J,$);J=z.nextIndex,Z.push({type:"variable",name:U,value:$.slice(B,z.endPos),exported:G,start:K.start,end:z.endPos})}}else if(_.type==="PUNCTUATION"&&(_.value==="{"||_.value==="[")){let U=_.start,B=_.value==="{"?"}":"]",z=S0($,_.value,B,U);if(z!==-1){let q=$.slice(U,z+1);if(J=tK(X,z+1),J<X.length&&X[J].type==="OPERATOR"&&X[J].value==="="){J++;let j=J<X.length?X[J].start:$.length,H=aK(X,J,$);J=H.nextIndex;let O=`__stx_destructured_${Z.length}`;Z.push({type:"variable",name:O,value:`${$.slice(j,H.endPos)}; ${W} ${q} = ${O}`,exported:G,start:K.start,end:H.endPos})}}}}else if(K.type==="IDENTIFIER"&&K.value==="function"){let W=G?X[J-1].start:K.start;if(J++,J>=X.length)break;let _=X[J];if(_.type==="IDENTIFIER"){let U=_.value;J++;let B=-1;while(J<X.length){if(X[J].type==="PUNCTUATION"&&X[J].value==="{"){B=X[J].start;break}J++}if(B!==-1){let z=S0($,"{","}",B);if(z!==-1)Z.push({type:"function",name:U,value:$.slice(W,z+1).replace(/^export\s+/,""),exported:G,start:W,end:z+1}),J=tK(X,z+1)}}}else J++}return Z}function aK($,Z,Y){let X=Z,J={paren:0,bracket:0,brace:0},Q=Z<$.length?$[Z].start:Y.length;while(X<$.length){let G=$[X];if(G.type==="PUNCTUATION"){if(G.value==="(")J.paren++;else if(G.value===")")J.paren--;else if(G.value==="[")J.bracket++;else if(G.value==="]")J.bracket--;else if(G.value==="{")J.brace++;else if(G.value==="}")J.brace--;if(G.value===";"&&J.paren===0&&J.bracket===0&&J.brace===0){Q=G.start,X++;break}}if(G.type==="IDENTIFIER"&&(G.value==="const"||G.value==="let"||G.value==="var"||G.value==="function"||G.value==="export")){if(J.paren===0&&J.bracket===0&&J.brace===0){Q=$[X-1]?.end??G.start;break}}Q=G.end,X++}return{nextIndex:X,endPos:Q}}function tK($,Z){for(let Y=0;Y<$.length;Y++)if($[Y].start>=Z)return Y;return $.length}var XW=()=>{};var b3=D(()=>{oK();XW()});function XV($,Z,Y){let X=$,J=!0;while(J){J=!1;let Q=X.match(/@switch\s*\(/);if(!Q||Q.index===void 0)break;let G=Q.index,K=S3(X,G);if(!K)break;try{let W;if(B0(K.expression))W=j0(K.expression,Object.keys(Z))(...Object.values(Z));else W=L0(K.expression,Z);let _="",U=!1;for(let B of K.cases)if(B.type==="default"){if(!U)_=B.content.trim()}else try{let z;if(B.value&&B0(B.value))z=j0(B.value,Object.keys(Z))(...Object.values(Z));else if(B.value)z=L0(B.value,Z);if(W===z){_=B.content.trim(),U=!0;break}}catch{continue}X=X.substring(0,G)+_+X.substring(K.end),J=!0}catch(W){let _=W instanceof Error?W.message:String(W),U=Z0("Switch",`Error evaluating @switch expression: ${_}`,o.EVALUATION_ERROR);X=X.substring(0,G)+U+X.substring(K.end);break}}return X}function p$($,Z,Y){let X=$;X=XV(X,Z,Y);{let Q=!0;while(Q){Q=!1;let G=X.match(/@unless\s*\(/);if(!G||G.index===void 0)break;let K=G.index,W=n1(X,K+7);if(!W)break;let _=W.endPos,U=H$(X,"unless","endunless",_);if(U===-1){console.warn(`[stx] @unless directive at position ${K} has no matching @endunless \u2014 the block was skipped. Check for typos or missing closers.`);break}let B=X.slice(_,U),z=W.expression,q=-1;{let H=0,O=/@(?:if|unless)\s*\(/g,F=/@(?:endif|endunless)(?![a-z])/g,L=/@else(?![a-z])/g,V=[],A;while((A=O.exec(B))!==null)V.push({pos:A.index,type:"open"});while((A=F.exec(B))!==null)V.push({pos:A.index,type:"close"});while((A=L.exec(B))!==null)V.push({pos:A.index,type:"else"});V.sort((N,w)=>N.pos-w.pos);for(let N of V)if(N.type==="open")H++;else if(N.type==="close")H--;else if(N.type==="else"&&H===0){q=N.pos;break}}let j;if(q!==-1){let H=B.slice(0,q),O=B.slice(q+5);j=`@if (${z})${O}@else ${H}@endif`}else j=`@if (!(${z}))${B}@endif`;X=X.substring(0,K)+j+X.substring(U+10),Q=!0}}X=kX(X,Z,Y),X=SX(X,Z,Y),X=DX(X,Z);let J=()=>{let Q=k3(X);if(Q.length===0)return!1;for(let G=Q.length-1;G>=0;G--){let K=Q[G];try{let W="",_=!1;for(let U of K.branches){if(_)break;if(U.type==="else")W=U.content,_=!0;else try{let B;if(U.condition&&B0(U.condition))B=j0(U.condition,Object.keys(Z))(...Object.values(Z));else if(U.condition)B=L0(U.condition,Z);if(B)W=U.content,_=!0}catch(B){W=Z0(U.type==="if"?"If":"Elseif",`Error in @${U.type}(${U.condition}): ${B instanceof Error?B.message:String(B)}`,o.EVALUATION_ERROR),_=!0}}X=X.substring(0,K.start)+W+X.substring(K.end)}catch(W){let _=W instanceof Error?W.message:String(W),U=Z0("If",`Error processing @if block: ${_}`,o.EVALUATION_ERROR);X=X.substring(0,K.start)+U+X.substring(K.end)}}return!0};while(J());return X}function JW($){let Z=0;while(Z<$.length&&/\s/.test($[Z]))Z++;if($[Z]!=="(")return null;Z++;while(Z<$.length&&/\s/.test($[Z]))Z++;let Y=$[Z];if(Y!=="'"&&Y!=='"')return null;Z++;let X=[];while(Z<$.length){let J=$[Z];if(J==="\\"&&Z+1<$.length){X.push($[Z+1]),Z+=2;continue}if(J===Y){Z++;break}X.push(J),Z++}while(Z<$.length&&/\s/.test($[Z]))Z++;if($[Z]!==")")return null;return Z++,{value:X.join(""),consumed:Z}}function DX($,Z){let Y=$;function X(K,W,_,U){let B=1,z=U,q=new RegExp(`@${W}(?:\\s*\\(|\\s|$)`,"g"),j=new RegExp(`@${_}(?![a-z])`,"g");while(z<K.length&&B>0){q.lastIndex=z,j.lastIndex=z;let H=q.exec(K),O=j.exec(K),F=H?H.index:1/0,L=O?O.index:1/0;if(F<L)B++,z=F+H[0].length;else if(L<1/0){if(B--,B===0)return L;z=L+O[0].length}else break}return-1}function J(K,W,_){let U=0,B=new RegExp(`@${W}(?:\\s*\\(|\\s|$)`,"g"),z=new RegExp(`@${_}(?![a-z])`,"g"),q=/@else(?![a-z])/g,j=[],H;while((H=B.exec(K))!==null)j.push({pos:H.index,type:"open"});while((H=z.exec(K))!==null)j.push({pos:H.index,type:"close"});while((H=q.exec(K))!==null)j.push({pos:H.index,type:"else"});j.sort((O,F)=>O.pos-F.pos);for(let O of j)if(O.type==="open")U++;else if(O.type==="close")U--;else if(O.type==="else"&&U===0)return O.pos;return-1}{let K=!0;while(K){K=!1;let W=Y.match(/@auth(?:\s*\(|\s|(?=\n))/);if(!W||W.index===void 0)break;let _=W.index,U,B,z=Y.slice(_+5),q=JW(z);if(q)U=q.value,B=_+5+q.consumed;else B=_+5;let j=X(Y,"auth","endauth",B);if(j===-1){console.warn(`[stx] @auth directive at position ${_} has no matching @endauth \u2014 the block was skipped.`);break}let H=Y.slice(B,j),O=J(H,"auth","endauth"),F;if(!Z.auth)F=!1;else F=U?i1(`auth?.check && auth?.user?.[${U}]`,Z):i1("auth?.check",Z);let L;if(O!==-1){let V=H.slice(0,O),A=H.slice(O+5);L=F?V:A}else L=F?H:"";Y=Y.substring(0,_)+L+Y.substring(j+8),K=!0}}{let K=!0;while(K){K=!1;let W=Y.match(/@guest(?:\s*\(|\s|(?=\n))/);if(!W||W.index===void 0)break;let _=W.index,U,B,z=Y.slice(_+6),q=JW(z);if(q)U=q.value,B=_+6+q.consumed;else B=_+6;let j=X(Y,"guest","endguest",B);if(j===-1){console.warn(`[stx] @guest directive at position ${_} has no matching @endguest \u2014 the block was skipped.`);break}let H=Y.slice(B,j),O=J(H,"guest","endguest"),F;if(!Z.auth)F=!0;else F=U?i1(`!auth?.check || !auth?.user?.[${U}]`,Z):i1("!auth?.check",Z);let L;if(O!==-1){let V=H.slice(0,O),A=H.slice(O+5);L=F?V:A}else L=F?H:"";Y=Y.substring(0,_)+L+Y.substring(j+9),K=!0}}function Q(K,W,_){if(Z.userCan&&typeof Z.userCan[K]==="boolean")return Z.userCan[K];if(Z.permissions?.check&&typeof Z.permissions.check==="function")try{let U=[K];if(W)U.push(W);if(_){let B=i1(_,Z);U.push(B)}return Z.permissions.check(...U)}catch{return!1}return!1}function G(K){let W=K.match(/^\s*\(\s*'([^']*)'(?:,\s*'([^']*)')?(?:,\s*([^)]*))?\)/);if(!W)return null;return{ability:W[1],type:W[2],id:W[3]?.trim(),paramsEnd:W[0].length}}for(let K of["can","cannot"]){let W=`end${K}`,_=K==="can"?"elsecan":"elsecannot",U=!0;while(U){U=!1;let B=Y.match(new RegExp(`@${K}\\s*\\(`));if(!B||B.index===void 0)break;let z=B.index,q=Y.slice(z+`@${K}`.length),j=G(q);if(!j)break;let H=z+`@${K}`.length+j.paramsEnd,O=X(Y,K,W,H);if(O===-1){console.warn(`[stx] @${K} directive at position ${z} has no matching @${W} \u2014 the block was skipped.`);break}let F=Y.slice(H,O),L=[],V=0,A=new RegExp(`@${K}\\s*\\(`,"g"),N=new RegExp(`@${W}(?![a-z])`,"g"),w=new RegExp(`@${_}\\s*\\(`,"g"),M=/@else(?![a-z])/g,T=[],E;while((E=A.exec(F))!==null)T.push({pos:E.index,type:"open"});while((E=N.exec(F))!==null)T.push({pos:E.index,type:"close"});while((E=w.exec(F))!==null)T.push({pos:E.index,type:"elseDirective"});while((E=M.exec(F))!==null)T.push({pos:E.index,type:"else"});T.sort((b,C)=>b.pos-C.pos);for(let b of T){if(b.type==="open"){V++;continue}if(b.type==="close"){V--;continue}if(V===0)L.push(b)}let I=[],S=0;for(let b=0;b<L.length;b++){let C=L[b];if(I.push({content:F.slice(S,C.pos),ability:void 0}),C.type==="elseDirective"){let x=F.slice(C.pos+`@${_}`.length),g=G(x);if(g){I[I.length-1]={content:F.slice(S,C.pos)},S=C.pos+`@${_}`.length+g.paramsEnd,I.push({content:"",ability:g.ability,type:g.type,id:g.id}),I.pop();let d=L[b+1],p=d?d.pos:F.length;I.push({content:F.slice(S,p),ability:g.ability,type:g.type,id:g.id}),S=p}}else S=C.pos+5}if(S<F.length){let b=I[I.length-1];if(L.length>0&&L[L.length-1].type==="else")I.push({content:F.slice(S),isFinalElse:!0});else if(I.length===0)I.push({content:F.slice(S)})}let k=Q(j.ability,j.type,j.id),P=K==="can"?k:!k,f="";if(P)f=I[0]?.content||"";else{let b=!1;for(let C=1;C<I.length;C++){let x=I[C];if(x.isFinalElse){f=x.content,b=!0;break}if(x.ability){let g=Q(x.ability,x.type,x.id);if(K==="can"?g:!g){f=x.content,b=!0;break}}}if(!b&&I.length>0){let C=I[I.length-1];if(C.isFinalElse)f=C.content}}Y=Y.substring(0,z)+f+Y.substring(O+`@${W}`.length),U=!0}}return Y}function kX($,Z,Y){let X=$;function J(Q,G,K,W,_){let U=!0;while(U){U=!1;let B=new RegExp(`@${G}\\s*\\(`),z=Q.match(B);if(!z||z.index===void 0)break;let q=z.index,j=n1(Q,q+`@${G}`.length);if(!j)break;let H=j.endPos,O=H$(Q,G,K,H);if(O===-1){console.warn(`[stx] @${G} directive at position ${q} has no matching @${K} \u2014 the block was skipped.`);break}let F=Q.slice(H,O),L=j.expression,V=-1,A=0,N=0;while(N<F.length){let w=F.indexOf("@",N);if(w===-1)break;let M=F.substring(w);if(/^@(?:if|unless|isset|empty)\s*\(/.test(M)){A++,N=w+1;continue}if(/^@(?:endif|endunless|endisset|endempty)(?![a-z])/.test(M)){A--,N=w+1;continue}if(A===0&&/^@else(?![a-z])/.test(M)){V=w;break}N=w+1}try{let w=W(L.trim()),M;if(V!==-1){let T=F.slice(0,V),E=F.slice(V+5);M=w?T:E}else M=w?F:"";Q=Q.substring(0,q)+M+Q.substring(O+`@${K}`.length),U=!0}catch(w){let M=w instanceof Error?w.message:String(w),T=Z0(_,`Error processing @${G} directive: ${M}`,o.EVALUATION_ERROR);Q=Q.substring(0,q)+T+Q.substring(O+`@${K}`.length);break}}return Q}return X=J(X,"isset","endisset",(Q)=>{let G=i1(Q,Z);return G!==void 0&&G!==null},"Isset"),X=J(X,"empty","endempty",(Q)=>{let G=i1(Q,Z);return G===void 0||G===null||G===""||G===0||G===!1||Array.isArray(G)&&G.length===0||typeof G==="object"&&G!==null&&Object.keys(G).length===0},"Empty"),X}function SX($,Z,Y){let X=$,J="development";function Q(G,K,W,_){let U=new RegExp(`@${K}(?![a-z])`,"g"),B=new RegExp(`@${W}(?![a-z])`,"g"),z=new RegExp(`^@${K}(?![a-z])`),q=new RegExp(`^@${W}(?![a-z])`),j=G,H=!0;while(H){H=!1,U.lastIndex=0;let O=U.exec(j);if(!O)break;let F=O.index,L=F+O[0].length;if(K==="env"){let k=j.substring(L).match(/^\s*\(\s*(['"])([^'"]+)\1\s*\)/);if(!k)break;L+=k[0].length,_=J===k[2]}let V=1,A=L,N=-1;while(V>0&&A<j.length){U.lastIndex=A,B.lastIndex=A;let k=U.exec(j),P=B.exec(j),f=k?k.index:1/0,b=P?P.index:1/0;if(f<b)V++,A=f+k[0].length;else if(b<1/0){if(V--,V===0){N=b;break}A=b+P[0].length}else break}if(N===-1){console.warn(`[stx] @${K} directive at position ${F} has no matching @${W} \u2014 the block was skipped.`);break}let w=j.substring(L,N),M=-1,T=0,E=0;while(E<w.length){let k=w.indexOf("@",E);if(k===-1)break;let P=w.substring(k);if(z.test(P)){T++,E=k+1;continue}if(q.test(P)){T--,E=k+1;continue}if(T===0&&/^@else(?![a-z])/.test(P)){M=k;break}E=k+1}let I;if(M!==-1){let k=w.slice(0,M),P=w.slice(M+5);I=_?k:P}else I=_?w:"";let S=`@${W}`.length;j=j.substring(0,F)+I+j.substring(N+S),H=!0}return j}return X=Q(X,"env","endenv",!1),X=Q(X,"production","endproduction",J==="production"),X=Q(X,"development","enddevelopment",J==="development"),X=Q(X,"staging","endstaging",J==="staging"),X=Q(X,"testing","endtesting",J==="testing"),X}var C3=D(()=>{MX();J1();b3();m0()});function CX($=16){let Z=new Uint8Array($);return crypto.getRandomValues(Z),btoa(String.fromCharCode(...Z))}function O$($,Z){if(!$)return Z?.nonceGenerator?.()??CX();let Y=bX.get($);if(!Y)Y=Z?.nonceGenerator?.()??CX(),bX.set($,Y);return Y}function JV($){bX.delete($)}function yX($,Z){let Y=[];for(let[X,J]of Object.entries($)){if(J===void 0||J===null)continue;if(typeof J==="boolean"){if(J)Y.push(X);continue}if(Array.isArray(J)){let Q=[...J];if(Z&&(X==="script-src"||X==="style-src"))Q=Q.filter((G)=>!G.startsWith("'nonce-")),Q.push(`'nonce-${Z}'`);if(Q.length>0)Y.push(`${X} ${Q.join(" ")}`)}}return Y.join("; ")}function P3($,Z){return`<meta http-equiv="Content-Security-Policy" content="${yX($,Z).replace(/&/g,"&amp;").replace(/"/g,"&quot;")}">`}function QV($){return{enabled:!0,directives:{strict:QW,moderate:y3,relaxed:GW,api:KW}[$]||y3,useNonce:$==="strict",addMetaTag:!0}}function GV($,Z){let Y={...$};for(let[X,J]of Object.entries(Z)){let Q=X,G=Y[Q];if(J===void 0||J===null)continue;if(typeof J==="boolean")Y[Q]=G||J;else if(Array.isArray(J)){let K=Array.isArray(G)?G:[],W=[...new Set([...K,...J])];Y[Q]=W}}return Y}function PX($,Z,Y){if(!Z.enabled||!Z.addMetaTag)return $;if($.includes('http-equiv="Content-Security-Policy"'))return $;if(!$.includes("<head>")&&!$.includes("<head "))return $;let X=Z.useNonce?O$(Y,Z):void 0,J=P3(Z.directives,X);return $.replace(/<head([^>]*)>/,`<head$1>
3816
3816
  ${J}`)}function KV($,Z){let Y=$;return Y=Y.replace(/<script(?![^>]*\ssrc=)([^>]*)>/gi,(X,J)=>{if(J.includes("nonce="))return X;return`<script nonce="${Z}"${J}>`}),Y=Y.replace(/<style([^>]*)>/gi,(X,J)=>{if(J.includes("nonce="))return X;return`<style nonce="${Z}"${J}>`}),Y}function xX($,Z,Y,X){let J=$,Q=X.csp;if(J=J.replace(/@csp\b/g,()=>{if(!Q?.enabled||!Q.directives)return"<!-- CSP not configured -->";let G=Q.useNonce?O$(Z,Q):void 0;return P3(Q.directives,G)}),J=J.replace(/@cspNonce\b/g,()=>{if(!Q?.enabled||!Q.useNonce)return"";return O$(Z,Q)}),Q?.enabled&&Q.useNonce)Z.cspNonce=O$(Z,Q);return J}function WV(){return[WW,_W]}function _V($){let Z=[];if($["script-src"]?.includes("'unsafe-inline'"))Z.push("CSP: Using unsafe-inline in script-src significantly reduces XSS protection");if($["script-src"]?.includes("'unsafe-eval'"))Z.push("CSP: Using unsafe-eval in script-src allows eval() and related functions");if(!$["default-src"])Z.push("CSP: No default-src specified. Recommend adding default-src as a fallback");if($["default-src"]?.includes("*"))Z.push("CSP: Using * in default-src provides minimal protection");if(!$["object-src"]&&!$["default-src"]?.includes("'none'"))Z.push("CSP: Consider adding object-src: none to block plugins");if(!$["base-uri"])Z.push("CSP: Consider adding base-uri to prevent base tag injection attacks");for(let[Y,X]of Object.entries($))if(Array.isArray(X)&&X.includes("http:"))Z.push(`CSP: Using http: in ${Y} allows insecure resources`);return Z}function UW($=!1){return $?"Content-Security-Policy-Report-Only":"Content-Security-Policy"}function UV($,Z){if(!$.enabled)return{};let Y=$.useNonce?O$(Z,$):void 0,X=yX($.directives,Y);return{[UW($.reportOnly)]:X}}var bX,QW,y3,GW,KW,WW,_W,BV;var vX=D(()=>{bX=new WeakMap;QW={"default-src":["'self'"],"script-src":["'self'","'strict-dynamic'"],"style-src":["'self'"],"img-src":["'self'","data:","https:"],"font-src":["'self'","https:","data:"],"connect-src":["'self'"],"media-src":["'self'"],"object-src":["'none'"],"frame-src":["'none'"],"base-uri":["'self'"],"form-action":["'self'"],"frame-ancestors":["'self'"],"upgrade-insecure-requests":!0},y3={"default-src":["'self'"],"script-src":["'self'"],"style-src":["'self'","'unsafe-inline'"],"img-src":["'self'","data:","https:"],"font-src":["'self'","https:","data:"],"connect-src":["'self'","https:"],"media-src":["'self'"],"object-src":["'none'"],"frame-src":["'self'"],"base-uri":["'self'"],"form-action":["'self'"],"upgrade-insecure-requests":!0},GW={"default-src":["'self'"],"script-src":["'self'","'unsafe-inline'"],"style-src":["'self'","'unsafe-inline'"],"img-src":["'self'","data:","https:","http:"],"font-src":["'self'","https:","http:","data:"],"connect-src":["'self'","https:","http:","ws:","wss:"],"media-src":["'self'","https:","http:"],"object-src":["'none'"],"frame-src":["'self'","https:"],"base-uri":["'self'"]},KW={"default-src":["'none'"],"frame-ancestors":["'none'"]};WW={name:"csp",handler:($,Z,Y,X)=>{let Q=Y.__stx_options?.csp;if(!Q?.enabled||!Q.directives)return"<!-- CSP not configured -->";let G=Q.useNonce?O$(Y,Q):void 0;return P3(Q.directives,G)},hasEndTag:!1,description:"Insert Content-Security-Policy meta tag"},_W={name:"cspNonce",handler:($,Z,Y,X)=>{let Q=Y.__stx_options?.csp;if(!Q?.enabled||!Q.useNonce)return"";return O$(Y,Q)},hasEndTag:!1,description:"Output the current CSP nonce value"};BV={enabled:!1,reportOnly:!1,directives:y3,useNonce:!1,addMetaTag:!0}});import zV from"crypto";function jV($=qV){let Z=zV.randomBytes(Math.ceil($/2)).toString("hex").slice(0,$);return fX=Z,Z}function HV(){if(!fX)jV();return fX}function OV($=BW){let Z=HV();return`<input type="hidden" name="${$}" value="${Z}">`}function zW($){return $.replace(/@csrf(?:\((['"])([^'"]*)\1\))?/g,(Z,Y,X)=>{return OV(X||BW)})}var qV=40,BW="_token",fX=null;var qW=()=>{};async function gX($,Z,Y,X){if(!X.customDirectives||X.customDirectives.length===0)return $;let J=$;for(let Q of X.customDirectives){if(!Q.name||typeof Q.handler!=="function"){if(X.debug)console.warn("Invalid custom directive:",Q);continue}if(Q.hasEndTag)J=await LV(J,Q,Z,Y,X);else J=await FV(J,Q,Z,Y,X)}return J}async function LV($,Z,Y,X,J){let{name:Q,handler:G}=Z,K=`@${Q}`,W=`@end${Q}`,_=$,U=z5(`${K}(?:\\s*\\(([^()]*(?:\\([^)]*\\)[^()]*)*)\\))?([\\s\\S]*?)${W}`,"g"),B=[],z=U.exec(_);while(z!==null){let[q,j="",H=""]=z,O=z.index||0;try{let F=j?jW(j):[],L=H.trim(),V=await G(L,F,Y,X);B.push({original:q,processed:V,startIndex:O})}catch(F){let L=F instanceof Error?F.message:String(F);if(J.debug)console.error(`Error processing custom directive @${Q}:`,F);B.push({original:q,processed:Z0("CustomDirective",`Error in @${Q}${j?`(${j})`:""}: ${L}`,o.EVALUATION_ERROR),startIndex:O})}z=U.exec(_)}for(let q=B.length-1;q>=0;q--){let{original:j,processed:H}=B[q];_=_.replace(j,H)}return _}async function FV($,Z,Y,X,J){let{name:Q,handler:G}=Z,K=$,W=z5(`@${Q}\\s*\\(([^()]*(?:\\([^)]*\\)[^()]*)*)\\)`,"g"),_=[],U=W.exec(K);while(U!==null){let[q,j=""]=U,H=U.index||0;try{let O=jW(j),F=await G("",O,Y,X);_.push({original:q,processed:F,startIndex:H})}catch(O){let F=O instanceof Error?O.message:String(O);if(J.debug)console.error(`Error processing custom directive @${Q}:`,O);_.push({original:q,processed:Z0("CustomDirective",`Error in @${Q}(${j}): ${F}`,o.EVALUATION_ERROR),startIndex:H})}U=W.exec(K)}let B=z5(`@${Q}(?!\\w)(?!\\s*\\()`,"g"),z=B.exec(K);while(z!==null){let[q]=z,j=z.index||0;try{let H=await G("",[],Y,X);_.push({original:q,processed:H,startIndex:j})}catch(H){let O=H instanceof Error?H.message:String(H);if(J.debug)console.error(`Error processing custom directive @${Q}:`,H);_.push({original:q,processed:Z0("CustomDirective",`Error in @${Q}: ${O}`,o.EVALUATION_ERROR),startIndex:j})}z=B.exec(K)}for(let q=_.length-1;q>=0;q--){let{original:j,processed:H}=_[q];K=K.replace(j,H)}return K}function jW($){if(!$.trim())return[];let Z=[],Y="",X=!1,J="";for(let Q=0;Q<$.length;Q++){let G=$[Q];if((G==='"'||G==="'")&&(Q===0||$[Q-1]!=="\\"))if(!X)X=!0,J=G;else if(G===J)X=!1;else Y+=G;else if(G===","&&!X)Z.push(Y.trim()),Y="";else Y+=G}if(Y.trim())Z.push(Y.trim());return Z.map((Q)=>{let G=Q.trim();if(G.startsWith('"')&&G.endsWith('"')||G.startsWith("'")&&G.endsWith("'"))return G.substring(1,G.length-1);return G})}var hX=D(()=>{J1();u$()});var f3={};G0(f3,{useTitle:()=>LW,useSeoMeta:()=>K4,usePageTitle:()=>LW,useHead:()=>F$,resetHead:()=>HW,renderHtmlAttrs:()=>VW,renderHead:()=>FW,renderBodyAttrs:()=>NW,processTitleDirective:()=>RW,processMetaDirective:()=>MW,processHeadDirective:()=>wW,getPageMeta:()=>v3,getHead:()=>p5,definePageMeta:()=>OW,applyHead:()=>AW});function p5(){return L$}function v3(){return x3}function HW(){L$={},VV.length=0,x3={}}function F$($){L$=NV(L$,$)}function NV($,Z){return{title:Z.title??$.title,titleTemplate:Z.titleTemplate??$.titleTemplate,base:Z.base??$.base,meta:[...$.meta||[],...Z.meta||[]],link:[...$.link||[],...Z.link||[]],script:[...$.script||[],...Z.script||[]],style:[...$.style||[],...Z.style||[]],htmlAttrs:{...$.htmlAttrs,...Z.htmlAttrs},bodyAttrs:{...$.bodyAttrs,...Z.bodyAttrs}}}function K4($){let Z=[];if($.description)Z.push({name:"description",content:$.description});if($.keywords){let W=Array.isArray($.keywords)?$.keywords.join(", "):$.keywords;Z.push({name:"keywords",content:W})}if($.author)Z.push({name:"author",content:$.author});if($.robots)Z.push({name:"robots",content:$.robots});let Y=$.ogTitle??$.title,X=$.ogDescription??$.description;if(Y)Z.push({property:"og:title",content:Y});if(X)Z.push({property:"og:description",content:X});if($.ogImage)Z.push({property:"og:image",content:$.ogImage});if($.ogUrl)Z.push({property:"og:url",content:$.ogUrl});if($.ogType)Z.push({property:"og:type",content:$.ogType});if($.ogSiteName)Z.push({property:"og:site_name",content:$.ogSiteName});if($.ogLocale)Z.push({property:"og:locale",content:$.ogLocale});let J=$.twitterTitle??$.title,Q=$.twitterDescription??$.description,G=$.twitterImage??$.ogImage;if($.twitterCard)Z.push({name:"twitter:card",content:$.twitterCard});if(J)Z.push({name:"twitter:title",content:J});if(Q)Z.push({name:"twitter:description",content:Q});if(G)Z.push({name:"twitter:image",content:G});if($.twitterSite)Z.push({name:"twitter:site",content:$.twitterSite});if($.twitterCreator)Z.push({name:"twitter:creator",content:$.twitterCreator});if($.articleAuthor)Z.push({property:"article:author",content:$.articleAuthor});if($.articlePublishedTime)Z.push({property:"article:published_time",content:$.articlePublishedTime});if($.articleModifiedTime)Z.push({property:"article:modified_time",content:$.articleModifiedTime});if($.articleSection)Z.push({property:"article:section",content:$.articleSection});if($.articleTags)for(let W of $.articleTags)Z.push({property:"article:tag",content:W});let K=[];if($.canonical)K.push({rel:"canonical",href:$.canonical});F$({title:$.title,titleTemplate:$.titleTemplate,meta:Z,link:K})}function OW($){if(x3={...x3,...$},$.title||$.description)K4({title:$.title,description:$.description})}function LW($){let Z=typeof $==="function"?$():$;F$({title:Z})}function FW($=L$){let Z=[];if($.title){let Y=$.title;if($.titleTemplate)Y=typeof $.titleTemplate==="function"?$.titleTemplate(Y):$.titleTemplate.replace("%s",Y);Z.push(`<title>${c$(Y)}</title>`)}if($.base){let Y=Object.entries($.base).map(([X,J])=>`${X}="${c$(J)}"`).join(" ");Z.push(`<base ${Y}>`)}for(let Y of $.meta||[]){let X=Object.entries(Y).filter(([J,Q])=>Q!==void 0).map(([J,Q])=>{return`${J==="httpEquiv"?"http-equiv":J}="${c$(String(Q))}"`}).join(" ");Z.push(`<meta ${X}>`)}for(let Y of $.link||[]){let X=Object.entries(Y).filter(([J,Q])=>Q!==void 0).map(([J,Q])=>`${J}="${c$(String(Q))}"`).join(" ");Z.push(`<link ${X}>`)}for(let Y of $.script||[]){let{content:X,...J}=Y,Q=Object.entries(J).filter(([G,K])=>K!==void 0).map(([G,K])=>{if(typeof K==="boolean")return K?G:"";return`${G}="${c$(String(K))}"`}).filter(Boolean).join(" ");if(X)Z.push(`<script ${Q}>${X}</script>`);else Z.push(`<script ${Q}></script>`)}for(let Y of $.style||[]){let X=Y.type?` type="${Y.type}"`:"";Z.push(`<style${X}>${Y.content}</style>`)}return Z.join(`
3817
3817
  `)}function VW($=L$){if(!$.htmlAttrs)return"";return Object.entries($.htmlAttrs).map(([Z,Y])=>`${Z}="${c$(Y)}"`).join(" ")}function NW($=L$){if(!$.bodyAttrs)return"";return Object.entries($.bodyAttrs).map(([Z,Y])=>`${Z}="${c$(Y)}"`).join(" ")}function c$($){return $.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}function AW($=L$){if(typeof document>"u")return;if($.title){let Z=$.title;if($.titleTemplate)Z=typeof $.titleTemplate==="function"?$.titleTemplate(Z):$.titleTemplate.replace("%s",Z);document.title=Z}for(let Z of $.meta||[]){let Y=Z.name?`meta[name="${Z.name}"]`:Z.property?`meta[property="${Z.property}"]`:null;if(Y){let X=document.querySelector(Y);if(!X){if(X=document.createElement("meta"),Z.name)X.setAttribute("name",Z.name);if(Z.property)X.setAttribute("property",Z.property);document.head.appendChild(X)}X.setAttribute("content",Z.content)}}for(let Z of $.link||[]){let Y=`link[rel="${Z.rel}"]${Z.href?`[href="${Z.href}"]`:""}`,X=document.querySelector(Y);if(!X)X=document.createElement("link"),document.head.appendChild(X);for(let[J,Q]of Object.entries(Z))if(Q!==void 0)X.setAttribute(J,String(Q))}if($.htmlAttrs)for(let[Z,Y]of Object.entries($.htmlAttrs))document.documentElement.setAttribute(Z,Y);if($.bodyAttrs)for(let[Z,Y]of Object.entries($.bodyAttrs))document.body.setAttribute(Z,Y)}function wW($){let Z="";return{content:$.replace(/@head\s*([\s\S]*?)@endhead/g,(X,J)=>{return Z+=J.trim()+`
3818
3818
  `,""}),headContent:Z.trim()}}function RW($,Z){return $.replace(/@title\s*\(\s*(?:(['"`])(.+?)\1|([^)]+))\s*\)/g,(Y,X,J,Q)=>{let G=X?J:Z[(Q||"").trim()]??Q;return F$({title:G}),""})}function MW($,Z){return $.replace(/@meta\s*\(\s*(['"`])(.+?)\1\s*,\s*(?:(['"`])(.+?)\3|([^)]+))\s*\)/g,(Y,X,J,Q,G,K)=>{let W=Q?G:K,_=Q?W:Z[(W||"").trim()]??W,B=J.includes(":")?{property:J,content:_}:{name:J,content:_};return F$({meta:[B]}),""})}var L$,VV,x3;var V$=D(()=>{L$={},VV=[],x3={}});import AV from"crypto";function d0($){return String($??"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function wV($){return{...h3,...$.forms?.classes}}function g3($,Z,Y,X){let J=$||Z;return Y?`${J} ${X}`:J}function RV(){return AV.randomUUID()}function MV($,Z,Y,X){let J=wV(X),Q=$;return Q=DW(Q,Z),Q=c5(Q,Z),Q=d3(Q,Z,J),Q=u3(Q,Z,J),Q}function c5($,Z){let Y=$;return Y=Y.replace(/@csrf/g,()=>{if(!Z.csrf||typeof Z.csrf!=="object"){let X=RV();Z.csrf={token:X}}if(Z.csrf.field)return Z.csrf.field;if(Z.csrf.token)return`<input type="hidden" name="_token" value="${d0(Z.csrf.token)}">`;return'<input type="hidden" name="_token" value="">'}),Y=Y.replace(/@method\(['"]([^'"]+)['"]\)/g,(X,J)=>{let Q=J.toUpperCase();if(J&&!["GET","POST"].includes(Q))return`<input type="hidden" name="_method" value="${d0(Q)}">`;return X}),Y}function d3($,Z,Y=h3){let X=$;return X=X.replace(/@form\(\s*(?:(?:'([^']+)'|"([^"]+)")\s*)?(?:,\s*(?:'([^']+)'|"([^"]+)")?)?\s*(?:,\s*\{([^}]+)\}\s*)?\)/g,(J,Q,G,K,W,_="")=>{let U=Q||G||"POST",B=K||W||"",z=N$(_),q=U.toUpperCase(),j=["GET","POST"].includes(q)?q:"POST",H=`<form method="${d0(j)}" action="${d0(B)}"${z?` ${z}`:""}>`;if(H+=`
@@ -3873,12 +3873,12 @@ catch { return 'Please enter a valid URL'; } },
3873
3873
  `),X=[{obj:Z,indent:-1}];for(let J of Y){let Q=J.replace(/#.*$/,"").trimEnd();if(!Q.trim())continue;let G=Q.search(/\S/);if(G===-1)continue;while(X.length>1&&X[X.length-1].indent>=G)X.pop();let K=X[X.length-1].obj,W=Q.match(/^(\s*)(\S[^:]*):\s*(.*)$/);if(W){let[,,_,U]=W,B=_.trim(),z=U.trim();if(z==="")K[B]={},X.push({obj:K[B],indent:G});else K[B]=mV(z)}}return Z}function mV($){if($.startsWith("'")&&$.endsWith("'")||$.startsWith('"')&&$.endsWith('"'))return $.slice(1,-1);let Z=$.toLowerCase();if(Z==="true"||Z==="yes")return!0;if(Z==="false"||Z==="no")return!1;if(Z==="null"||Z==="~")return null;let Y=Number($);if(!Number.isNaN(Y))return Y;return $}function pV($){switch($){case"yaml":return".yaml";case"yml":return".yml";case"js":return".js";case"json":default:return".json"}}function cV($,Z){for(let Y of $){let X=Y.trim(),J=X.match(/^\{(\d+)\}\s*(.*)$/);if(J){let G=Number.parseInt(J[1],10);if(Z===G)return J[2];continue}let Q=X.match(/^\[(\d+),(\d+|\*)\]\s*(.*)$/);if(Q){let G=Number.parseInt(Q[1],10),K=Q[2]==="*"?Number.POSITIVE_INFINITY:Number.parseInt(Q[2],10);if(Z>=G&&Z<=K)return Q[3];continue}}if($.length===2)return Z===1?$[0].trim():$[1].trim();if(Z<$.length)return $[Z].trim();return $[$.length-1].trim()}function fW($,Z={}){return gW($,Z)}function gW($,Z){let Y="",X=0;while(X<$.length)if($[X]==="{"){let J=lV($,X);if(J===-1){Y+=$[X],X++;continue}let Q=$.slice(X+1,J);Y+=iV(Q,Z),X=J+1}else if($[X]==="'"&&X+1<$.length)if($[X+1]==="'")Y+="'",X+=2;else if($[X+1]==="{"||$[X+1]==="}")Y+=$[X+1],X+=2;else Y+=$[X],X++;else Y+=$[X],X++;return Y}function lV($,Z){let Y=0;for(let X=Z;X<$.length;X++)if($[X]==="{")Y++;else if($[X]==="}"){if(Y--,Y===0)return X}return-1}function iV($,Z){let Y=nV($);if(Y.length===0)return`{${$}}`;let X=Y[0].trim(),J=Z[X];if(Y.length===1)return J!==void 0?String(J):`{${X}}`;switch(Y[1].trim().toLowerCase()){case"plural":return sV(J,Y.slice(2).join(","),Z);case"select":return oV(J,Y.slice(2).join(","));case"selectordinal":return aV(J,Y.slice(2).join(","));case"number":return eV(J,Y[2]?.trim());case"date":return $N(J,Y[2]?.trim());case"time":return ZN(J,Y[2]?.trim());default:return J!==void 0?String(J):`{${$}}`}}function nV($){let Z=[],Y="",X=0;for(let J=0;J<$.length;J++){let Q=$[J];if(Q==="{")X++,Y+=Q;else if(Q==="}")X--,Y+=Q;else if(Q===","&&X===0)Z.push(Y),Y="";else Y+=Q}if(Y)Z.push(Y);return Z}function sV($,Z,Y){let X=Number($)||0,J=cX(Z),Q=`=${X}`;if(J[Q])return pX(J[Q],X,Y);let G=rV(X);if(J[G])return pX(J[G],X,Y);if(J.other)return pX(J.other,X,Y);return String(X)}function pX($,Z,Y){let X=$.replace(/#/g,String(Z));return gW(X,Y)}function rV($){let Z=Math.abs($),Y=Math.floor(Z),X=String($).includes(".")?String($).split(".")[1].length:0;if(Y===1&&X===0)return"one";return"other"}function oV($,Z){let Y=String($||""),X=cX(Z);if(X[Y])return X[Y];return X.other||String($)}function aV($,Z){let Y=Number($)||0,X=cX(Z),J=tV(Y);if(X[J])return X[J].replace(/#/g,String(Y));if(X.other)return X.other.replace(/#/g,String(Y));return String(Y)}function tV($){let Z=Math.abs($),Y=Z%10,X=Z%100;if(Y===1&&X!==11)return"one";if(Y===2&&X!==12)return"two";if(Y===3&&X!==13)return"few";return"other"}function cX($){let Z={},Y=/(\w+|=\d+)\s*\{([^{}]*(?:\{[^{}]*\}[^{}]*)*)\}/g,X=Y.exec($);while(X!==null)Z[X[1]]=X[2],X=Y.exec($);return Z}function eV($,Z){let Y=Number($);if(Number.isNaN(Y))return String($);switch(Z){case"integer":return Math.floor(Y).toLocaleString();case"percent":return`${(Y*100).toFixed(0)}%`;case"currency":return Y.toLocaleString(void 0,{style:"currency",currency:"USD"});default:return Y.toLocaleString()}}function $N($,Z){let Y=$ instanceof Date?$:new Date(String($));if(Number.isNaN(Y.getTime()))return String($);let X={};switch(Z){case"short":X.dateStyle="short";break;case"medium":X.dateStyle="medium";break;case"long":X.dateStyle="long";break;case"full":X.dateStyle="full";break;default:X.dateStyle="medium"}return Y.toLocaleDateString(void 0,X)}function ZN($,Z){let Y=$ instanceof Date?$:new Date(String($));if(Number.isNaN(Y.getTime()))return String($);let X={};switch(Z){case"short":X.timeStyle="short";break;case"medium":X.timeStyle="medium";break;case"long":X.timeStyle="long";break;case"full":X.timeStyle="full";break;default:X.timeStyle="short"}return Y.toLocaleTimeString(void 0,X)}function hW($){return/\{[^}]+,\s*(?:plural|select|selectordinal|number|date|time)\s*,/.test($)}function m3($,Z,Y=!0,X={}){let J=$.split("."),Q=Z;for(let K of J){if(Q===void 0||Q===null)break;Q=Q[K]}if(Q===void 0||Q===null)return Y?$:"";let G=String(Q);if(hW(G))return fW(G,X);if(G.includes("|")&&"count"in X){let K=Number(X.count),W=G.split("|");G=cV(W,K)}for(let[K,W]of Object.entries(X)){let _=K.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");G=G.replace(new RegExp(`:${_}`,"g"),String(W))}return G}async function lX($,Z,Y,X){let J=$,Q=/@translate\(\s*['"]([^'"]+)['"]\s*(?:,\s*(\{[^}]*\})\s*)?\)([\s\S]*?)@endtranslate/g,G={...p3,...X.i18n},K=await vW(G.locale,X);Z.__translations=K,Z.__locale=G.locale,Z.__i18nConfig=G,J=await bW(J,Q,async(U,B,z,q,j)=>{try{let H={};if(z)try{let F=[()=>JSON.parse(z),()=>{let L=`{"data":${z}}`,V=JSON.parse(L);return typeof V.data==="object"?V.data:{}},()=>{return D0(z,Z)}];for(let L of F)try{if(H=L(),Object.keys(H).length>0)break}catch{}}catch(F){if(X.debug)console.error("Error parsing parameters for @translate directive:",F)}return m3(B,K,G.fallbackToKey,H)||q.trim()}catch(H){if(X.debug)console.error("Error processing @translate directive:",H);return Z0("Translate",`Error in @translate('${B}'): ${H instanceof Error?H.message:String(H)}`,o.EVALUATION_ERROR)}});let W=/@translate\(\s*['"]([^'"]+)['"]\s*(?:,\s*(\{[^}]+\})\s*)?\)/g;if(X.debug){console.warn(`Processing translations in template. Sections: ${J.includes("<h2>Translation with Parameters</h2>")?"Parameters section found":"Parameters section missing"}`);let U=[...J.matchAll(W)];console.warn(`Found ${U.length} @translate matches`),U.forEach((B,z)=>console.warn(`Match ${z}: ${B[0]}, Key: ${B[1]}, Params: ${B[2]||"none"}`))}return J=await bW(J,/@translate\(\s*['"]([^'"]+)['"]\s*(?:,\s*(\{[^}]*\})\s*)?\)/g,async(U,B,z,q)=>{try{let j={};if(z)try{let H=[()=>JSON.parse(z),()=>{let O=`{"data":${z}}`,F=JSON.parse(O);return typeof F.data==="object"?F.data:{}},()=>{return D0(z,Z)}];for(let O of H)try{if(j=O(),Object.keys(j).length>0)break}catch{}}catch(H){if(X.debug)console.error("Error parsing parameters for @translate directive:",H)}return m3(B,K,G.fallbackToKey,j)}catch(j){if(X.debug)console.error("Error processing @translate directive:",j);return Z0("Translate",`Error in @translate('${B}'): ${j instanceof Error?j.message:String(j)}`,o.EVALUATION_ERROR)}}),J}async function bW($,Z,Y){let X=[];return $.replace(Z,(Q,...G)=>{let K=Y(Q,...G).then((W)=>({match:Q,replacement:W}));return X.push(K),Q}),(await Promise.all(X)).reduce((Q,{match:G,replacement:K})=>Q.replace(G,K),$)}function YN($,Z=!0){return(Y,X={})=>{return m3(Y,$,Z,X)}}var p3,Z1,F1,s1;var iX=D(()=>{J1();m0();p3={defaultLocale:"en",locale:"en",translationsDir:"translations",format:"yaml",fallbackToKey:!0,cache:!0},Z1={},F1={},s1={}});var l3={};G0(l3,{stripTypeScript:()=>pW,hasVariables:()=>rX,extractVariables:()=>M0,extractScriptFromTemplate:()=>sX,convertToCommonJS:()=>c3});import l5 from"path";function XN($){let Z=[],Y=0,X=$.split(`
3874
3874
  `);for(let J of X){let Q=null,G=!1;for(let K=0;K<J.length;K++){let W=J[K];if(G){G=!1;continue}if(W==="\\"){G=!0;continue}if(Q){if(W===Q)Q=null;continue}if(W==="'"||W==='"'||W==="`"){Q=W;continue}if(W==="/"&&K+1<J.length&&J[K+1]==="/")break;if(W==="{")Y++;else if(W==="}")Y--}if(Y===0){let K=J.match(/(?:const|let|var)\s+(\w+)\s*=/);if(K)Z.push(K[1]);else{let W=J.match(/(?:const|let|var)\s+(\{[^}]+\}|\[[^\]]+\])\s*=/);if(W){let U=W[1].slice(1,-1).split(",").map((B)=>{let z=B.split(":");return(z.length>1?z[1]:z[0]).trim()}).filter((B)=>/^\w+$/.test(B));Z.push(...U)}}}}return[...new Set(Z)]}function pW($){let Z=$;Z=Z.replace(/^\s*import\s+.*?from\s+['"][^'"]+['"]\s*;?\s*$/gm,""),Z=Z.replace(/^\s*import\s+['"][^'"]+['"]\s*;?\s*$/gm,""),Z=Z.replace(/^\s*interface\s+\w+\s*\{[\s\S]*?\n\}\s*$/gm,""),Z=Z.replace(/^\s*type\s+\w+\s*=[\s\S]*?(?=\n(?:const|let|var|function|export|interface|type|$))/gm,""),Z=Z.replace(/^(\s*(?:export\s+)?(?:const|let|var)\s+)(\w+|\{[^}]+\}|\[[^\]]+\])\s*:\s*[^=]+(\s*=)/gm,"$1$2$3");function Y(X){if(!X.includes(":"))return X;let J=[],Q="",G=0,K=0,W=null;for(let _=0;_<X.length;_++){let U=X[_];if(W){if(Q+=U,U===W)W=null;continue}if(U==='"'||U==="'"||U==="`"){W=U,Q+=U;continue}if(U==="<")G++;else if(U===">"&&G>0)G--;else if(U==="(")K++;else if(U===")")K--;if(U===","&&G===0&&K===0){J.push(Q),Q="";continue}Q+=U}if(Q)J.push(Q);return J.map((_)=>{let U=_.trim(),B=U.startsWith("..."),z=B?U.slice(3):U,q=-1,j=0;for(let N=0;N<z.length;N++)if(z[N]==="<")j++;else if(z[N]===">")j--;else if(z[N]===":"&&j===0){q=N;break}if(q===-1)return _;let O=z.substring(0,q).trim().replace(/\?$/,""),F=z.substring(q+1),L=-1,V=0;for(let N=0;N<F.length;N++)if(F[N]==="<")V++;else if(F[N]===">")V--;else if(F[N]==="="&&V===0){L=N;break}let A=B?"...":"";if(L!==-1)return`${A}${O} = ${F.substring(L+1).trim()}`;return`${A}${O}`}).join(", ")}Z=Z.replace(/\b(function\s+\w*\s*)\(([^)]*)\)/g,(X,J,Q)=>{if(!Q.includes(":"))return X;return`${J}(${Y(Q)})`});{let X=/\b(function\s+\w*\s*)\(/g,J,Q=[];while((J=X.exec(Z))!==null){let G=J.index+J[0].length-1,K=1,W=G+1,_=0,U=null;while(W<Z.length&&K>0){let q=Z[W];if(U){if(q===U)U=null;W++;continue}if(q==='"'||q==="'"||q==="`"){U=q,W++;continue}if(q==="<")_++;else if(q===">"&&_>0)_--;else if(_===0){if(q==="(")K++;else if(q===")")K--}if(K>0)W++}if(K!==0)continue;let B=Z.substring(G+1,W);if(!B.includes(":"))continue;let z=Y(B);Q.push({start:G+1,end:W,replacement:z})}for(let G=Q.length-1;G>=0;G--){let{start:K,end:W,replacement:_}=Q[G];Z=Z.substring(0,K)+_+Z.substring(W)}}return Z=Z.replace(/\(([^)]*)\)\s*(?::\s*[^=]+)?\s*=>/g,(X,J)=>{if(!J.includes(":"))return X;if(J.includes("{")||J.includes("}"))return X;return`(${J.split(",").map((G)=>{let[K,...W]=G.split("="),_=K.split(":")[0].trim();if(W.length>0)return`${_} = ${W.join("=").trim()}`;return _}).join(", ")}) =>`}),Z=Z.replace(/(\))\s*:\s*([A-Z]\w*|void|string|number|boolean|any|unknown|never|null|undefined)(?:<[^>]+>)?(?:\s*\|\s*(?:[A-Z]\w*|void|string|number|boolean|any|unknown|never|null|undefined))*\s*(\{)/g,"$1$3"),Z=Z.replace(/(\b(?:function|class|interface|type|extends|implements)\s+\w+)\s*<[^<>()]*>/g,"$1"),Z=Z.replace(/(\b(?:defineProps|withDefaults|Array|Promise|Map|Set|Record|Partial|Required|Readonly|Pick|Omit|Exclude|Extract))\s*<[^<>()]*>/g,"$1"),Z=Z.replace(/(\w+)\s*<[A-Z][^<>()]*>\s*(?=\()/g,"$1"),Z=Z.replace(/\s+as\s+(?:const|[A-Za-z]\w*(?:\[\])?(?:\s*\|\s*\w+(?:\[\])?)*)/g,""),Z=Z.replace(/\s+satisfies\s+\w+(?:<[^>]*>)?/g,""),Z=Z.replace(/(\w|\)|\])\s*!(?!=)/g,"$1"),Z=Z.replace(/^\s*(?:export\s+)?(?:const\s+)?enum\s+\w+\s*\{[^}]*\}\s*$/gm,""),Z=Z.replace(/(?<=[\s=,(])<[A-Z]\w*(?:\[\])?>/g,""),Z=Z.replace(/\n\s*\n\s*\n/g,`
3875
3875
 
3876
- `),Z}async function M0($,Z,Y){if(!$.trim())return;let X;try{let v=new Bun.Transpiler({loader:"ts",target:"browser",define:W1()}),u=$.replace(/^\s*import\s+\w+\s+from\s+['"][^'"]*\.stx['"]\s*;?\s*$/gm,"");u=u.replace(/^\s*import\s+['"][^'"]*\.stx['"]\s*;?\s*$/gm,""),X=v.transformSync(u)}catch{X=pW($)}let J={exports:{}},Q=J.exports,G=process.cwd(),K={},W=[...X.matchAll(/require\s*\(\s*['"]([^'"]+)['"]\s*\)/g)||[]].map((v)=>v[1]).filter((v)=>!v.startsWith("node:")&&!v.startsWith(".")&&!["fs","path","os","child_process","crypto","http","https","url","util","stream","events","buffer","net","querystring","zlib","tls"].includes(v));for(let v of W)try{let u=l5.resolve(G,"node_modules",v),i=l5.join(u,"package.json"),m=JSON.parse(W0("fs").readFileSync(i,"utf8")),r=m.main||"index.js";if(m.exports){let h=typeof m.exports==="string"?m.exports:m.exports["."];if(typeof h==="string")r=h;else if(h?.bun)r=h.bun;else if(h?.import)r=h.import;else if(h?.default)r=h.default}K[v]=await import(l5.resolve(u,r))}catch{}let _=(v)=>{if(K[v])return K[v];return W0(v)},U=Z.props||{},B=Object.assign((v)=>{if(!v)return U;let u={};for(let[i,m]of Object.entries(v)){let r=U[i];if(r!==void 0)u[i]=r;else if(typeof m==="function")u[i]=m();else u[i]=m}return u},U),z=()=>U,q=(v,u)=>{let i={...v};for(let[m,r]of Object.entries(u))if(i[m]===void 0)if(typeof r==="function")i[m]=r();else i[m]=r;return i},j=(v)=>{let u=()=>v;return u.set=(i)=>{},u.update=(i)=>{},u},H=(v)=>{let u,i=!1;return()=>{if(!i)try{u=v(),i=!0}catch{u=void 0}return u}},O=(v)=>{},F=(v)=>v(),L=(v)=>{},V=(v)=>{},A=(v)=>{},N=()=>({params:{},query:{},path:"",name:"",fullPath:"",hash:"",matched:[]}),w=()=>({push:(v)=>{},replace:(v)=>{},back:()=>{},forward:()=>{},go:(v)=>{}}),M=(v)=>{F$(v);let u=Z.__stx_runtime_head||{},i=v||{};Z.__stx_runtime_head={...u,...i.title&&{title:i.title},meta:[...u.meta||[],...i.meta||[]],link:[...u.link||[],...i.link||[]],script:[...u.script||[],...i.script||[]],htmlAttrs:{...u.htmlAttrs||{},...i.htmlAttrs||{}},bodyAttrs:{...u.bodyAttrs||{},...i.bodyAttrs||{}}}},T=(v)=>{K4(v);let u=p5();Z.__stx_runtime_head={...Z.__stx_runtime_head||{},...u.title&&{title:u.title},meta:u.meta?[...u.meta]:[]}},I=(v)=>({value:v}),E=(v)=>v,S=(v)=>({value:typeof v==="function"?v():v}),k=(v,u)=>{},b=(v)=>{},P=(v)=>{},x=(v)=>v?v():Promise.resolve(),C=(v)=>(u,...i)=>{},f=(v)=>{},g=(v,u)=>{},d=(v,u)=>u,p=()=>({value:"light"}),c=()=>({value:!1}),J0={siteId:void 0,API_ENDPOINT:"",ANALYTICS_SITE_ID:void 0,location:{href:"",pathname:"",search:"",hash:"",origin:"",host:"",hostname:"",protocol:"https:",assign:()=>{},replace:()=>{},reload:()=>{}},localStorage:{getItem:()=>null,setItem:()=>{},removeItem:()=>{},clear:()=>{}},sessionStorage:{getItem:()=>null,setItem:()=>{},removeItem:()=>{},clear:()=>{}},fetch:globalThis.fetch,addEventListener:()=>{},removeEventListener:()=>{},setTimeout:()=>0,clearTimeout:()=>{},setInterval:()=>0,clearInterval:()=>{},requestAnimationFrame:()=>0,cancelAnimationFrame:()=>{},alert:()=>{},confirm:()=>!1,prompt:()=>null,getComputedStyle:()=>({}),matchMedia:()=>({matches:!1,addListener:()=>{},removeListener:()=>{}}),getDateRangeParams:()=>"",stx:{}},_0=new Proxy(J0,{get(v,u){if(u in v)return v[u];return},set(v,u,i){return v[u]=i,!0}}),C0={getElementById:()=>null,querySelector:()=>null,querySelectorAll:()=>[],createElement:()=>({}),createTextNode:()=>({}),body:{},head:{},documentElement:{},addEventListener:()=>{},removeEventListener:()=>{}},w0=console;try{let v=c3(X,Y),u=new Set(Object.keys(U)),i=Object.keys(Z).filter((U0)=>!u.has(U0)&&U0!=="props"),m=i.map((U0)=>Z[U0]),r=new Set(["break","case","catch","class","const","continue","debugger","default","delete","do","else","export","extends","finally","for","function","if","import","in","instanceof","let","new","return","super","switch","this","throw","try","typeof","var","void","while","with","yield","enum","await","async","module","exports","require","params","window","document","console","state","derived","effect"]),h=[],n=[];for(let[U0,G5]of Object.entries(U)){if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(U0))continue;if(r.has(U0))continue;if(new RegExp(`(?:^|[\\s;{])(?:const|let|var|function)\\s+${U0}\\b`).test(v))continue;h.push(U0),n.push(G5)}let s=XN(v).map((U0)=>`module.exports.${U0} = typeof ${U0} !== 'undefined' ? ${U0} : module.exports.${U0};`).join(`
3876
+ `),Z}async function M0($,Z,Y){if(!$.trim())return;let X;try{let v=new Bun.Transpiler({loader:"ts",target:"browser",define:W1()}),u=$.replace(/^\s*import\s+\w+\s+from\s+['"][^'"]*\.stx['"]\s*;?\s*$/gm,"");u=u.replace(/^\s*import\s+['"][^'"]*\.stx['"]\s*;?\s*$/gm,""),X=v.transformSync(u)}catch{X=pW($)}let J={exports:{}},Q=J.exports,G=process.cwd(),K={},W=[...X.matchAll(/require\s*\(\s*['"]([^'"]+)['"]\s*\)/g)||[]].map((v)=>v[1]).filter((v)=>!v.startsWith("node:")&&!v.startsWith(".")&&!["fs","path","os","child_process","crypto","http","https","url","util","stream","events","buffer","net","querystring","zlib","tls"].includes(v));for(let v of W)try{let u=l5.resolve(G,"node_modules",v),i=l5.join(u,"package.json"),m=JSON.parse(W0("fs").readFileSync(i,"utf8")),r=m.main||"index.js";if(m.exports){let h=typeof m.exports==="string"?m.exports:m.exports["."];if(typeof h==="string")r=h;else if(h?.bun)r=h.bun;else if(h?.import)r=h.import;else if(h?.default)r=h.default}K[v]=await import(l5.resolve(u,r))}catch{}let _=(v)=>{if(K[v])return K[v];return W0(v)},U=Z.props||{},B=Object.assign((v)=>{if(!v)return U;let u={};for(let[i,m]of Object.entries(v)){let r=U[i];if(r!==void 0)u[i]=r;else if(typeof m==="function")u[i]=m();else u[i]=m}return u},U),z=()=>U,q=(v,u)=>{let i={...v};for(let[m,r]of Object.entries(u))if(i[m]===void 0)if(typeof r==="function")i[m]=r();else i[m]=r;return i},j=(v)=>{let u=()=>v;return u.set=(i)=>{},u.update=(i)=>{},u},H=(v)=>{let u,i=!1;return()=>{if(!i)try{u=v(),i=!0}catch{u=void 0}return u}},O=(v)=>{},F=(v)=>v(),L=(v)=>{},V=(v)=>{},A=(v)=>{},N=()=>({params:{},query:{},path:"",name:"",fullPath:"",hash:"",matched:[]}),w=()=>({push:(v)=>{},replace:(v)=>{},back:()=>{},forward:()=>{},go:(v)=>{}}),M=(v)=>{F$(v);let u=Z.__stx_runtime_head||{},i=v||{};Z.__stx_runtime_head={...u,...i.title&&{title:i.title},meta:[...u.meta||[],...i.meta||[]],link:[...u.link||[],...i.link||[]],script:[...u.script||[],...i.script||[]],htmlAttrs:{...u.htmlAttrs||{},...i.htmlAttrs||{}},bodyAttrs:{...u.bodyAttrs||{},...i.bodyAttrs||{}}}},T=(v)=>{K4(v);let u=p5();Z.__stx_runtime_head={...Z.__stx_runtime_head||{},...u.title&&{title:u.title},meta:u.meta?[...u.meta]:[]}},E=(v)=>({value:v}),I=(v)=>v,S=(v)=>({value:typeof v==="function"?v():v}),k=(v,u)=>{},P=(v)=>{},f=(v)=>{},b=(v)=>v?v():Promise.resolve(),C=(v)=>(u,...i)=>{},x=(v)=>{},g=(v,u)=>{},d=(v,u)=>u,p=()=>({value:"light"}),c=()=>({value:!1}),J0={siteId:void 0,API_ENDPOINT:"",ANALYTICS_SITE_ID:void 0,location:{href:"",pathname:"",search:"",hash:"",origin:"",host:"",hostname:"",protocol:"https:",assign:()=>{},replace:()=>{},reload:()=>{}},localStorage:{getItem:()=>null,setItem:()=>{},removeItem:()=>{},clear:()=>{}},sessionStorage:{getItem:()=>null,setItem:()=>{},removeItem:()=>{},clear:()=>{}},fetch:globalThis.fetch,addEventListener:()=>{},removeEventListener:()=>{},setTimeout:()=>0,clearTimeout:()=>{},setInterval:()=>0,clearInterval:()=>{},requestAnimationFrame:()=>0,cancelAnimationFrame:()=>{},alert:()=>{},confirm:()=>!1,prompt:()=>null,getComputedStyle:()=>({}),matchMedia:()=>({matches:!1,addListener:()=>{},removeListener:()=>{}}),getDateRangeParams:()=>"",stx:{}},_0=new Proxy(J0,{get(v,u){if(u in v)return v[u];return},set(v,u,i){return v[u]=i,!0}}),C0={getElementById:()=>null,querySelector:()=>null,querySelectorAll:()=>[],createElement:()=>({}),createTextNode:()=>({}),body:{},head:{},documentElement:{},addEventListener:()=>{},removeEventListener:()=>{}},w0=console;try{let v=c3(X,Y),u=new Set(Object.keys(U)),i=Object.keys(Z).filter((U0)=>!u.has(U0)&&U0!=="props"),m=i.map((U0)=>Z[U0]),r=new Set(["break","case","catch","class","const","continue","debugger","default","delete","do","else","export","extends","finally","for","function","if","import","in","instanceof","let","new","return","super","switch","this","throw","try","typeof","var","void","while","with","yield","enum","await","async","module","exports","require","params","window","document","console","state","derived","effect"]),h=[],n=[];for(let[U0,G5]of Object.entries(U)){if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(U0))continue;if(r.has(U0))continue;if(new RegExp(`(?:^|[\\s;{])(?:const|let|var|function)\\s+${U0}\\b`).test(v))continue;h.push(U0),n.push(G5)}let s=XN(v).map((U0)=>`module.exports.${U0} = typeof ${U0} !== 'undefined' ? ${U0} : module.exports.${U0};`).join(`
3877
3877
  `),$0=Z.params??{},Q0=[],y0=[];for(let U0=0;U0<i.length;U0++){if(i[U0]==="params")continue;Q0.push(i[U0]),y0.push(m[U0])}let f$=await Function("module","exports","require","props","$props","defineProps","withDefaults","state","derived","effect","batch","onMount","onDestroy","definePageMeta","useRoute","useRouter","useHead","useSeoMeta","ref","reactive","computed","watch","onMounted","onUnmounted","nextTick","defineEmits","defineExpose","provide","inject","useColorMode","useDark","window","document","console","confirm","alert","fetch","params",...h,...Q0,`return (async () => {
3878
3878
  ${v}
3879
3879
  ${s}
3880
3880
  return module.exports
3881
- })()`)(J,Q,_,U,B,z,q,j,H,O,F,L,V,A,N,w,M,T,I,E,S,k,b,P,x,C,f,g,d,p,c,_0,C0,w0,J0.confirm,J0.alert,J0.fetch,$0,...n,...y0);Object.assign(Z,f$);for(let[U0,G5]of Object.entries(U))if(!(U0 in Z))Z[U0]=G5}catch{try{await WN(X,Z,Y)}catch{}}}function c3($,Z){let Y=Z?l5.dirname(Z):process.cwd(),X=$.split(`
3881
+ })()`)(J,Q,_,U,B,z,q,j,H,O,F,L,V,A,N,w,M,T,E,I,S,k,P,f,b,C,x,g,d,p,c,_0,C0,w0,J0.confirm,J0.alert,J0.fetch,$0,...n,...y0);Object.assign(Z,f$);for(let[U0,G5]of Object.entries(U))if(!(U0 in Z))Z[U0]=G5}catch{try{await WN(X,Z,Y)}catch{}}}function c3($,Z){let Y=Z?l5.dirname(Z):process.cwd(),X=$.split(`
3882
3882
  `),J=[],Q=0;while(Q<X.length){let G=X[Q].trim();if(G.startsWith("interface ")||G.startsWith("export interface ")||G.startsWith("type ")||G.startsWith("export type ")){if(G.includes("{")&&!G.includes("}")){let K=0;for(;Q<X.length;Q++){for(let W of X[Q])if(W==="{")K++;else if(W==="}")K--;if(K<=0)break}}Q++;continue}if(G.startsWith("definePageMeta(")){let K=0,W=!1;for(let _=Q;_<X.length&&!W;_++){let U=null,B=!1,z=X[_];for(let q=0;q<z.length;q++){let j=z[q];if(B){B=!1;continue}if(j==="\\"){B=!0;continue}if(U){if(j===U)U=null;continue}if(j==='"'||j==="'"||j==="`"){U=j;continue}if(j==="(")K++;else if(j===")"){if(K--,K===0){Q=_+1,W=!0;break}}}}if(!W)Q=X.length;continue}if(G.startsWith("import ")){let K=G.match(/^import\s+(\w+)\s+from\s+['"](.+)['"]/),W=G.match(/^import\s+\{([^}]+)\}\s+from\s+['"](.+)['"]/),_=G.match(/^import\s+['"](.+)['"]/),U=(B)=>{if(B.startsWith("."))return l5.resolve(Y,B);return B};if(K){let[,B,z]=K,q=U(z);J.push(`const ${B} = await import('${q}')`),J.push(`module.exports.${B} = ${B};`)}else if(W){let[,B,z]=W,q=B.trim(),j=U(z);J.push(`const { ${q} } = await import('${j}')`);for(let H of q.split(",")){let O=H.trim().split(/\s+as\s+/).pop()?.trim();if(O)J.push(`module.exports.${O} = ${O};`)}}else if(_){let B=U(_[1]);J.push(`await import('${B}')`)}else J.push(G);Q++;continue}if(G.startsWith("export const ")||G.startsWith("export let ")||G.startsWith("export var ")){let K=dW(X,Q),{type:W,name:_,value:U}=K;J.push(`${W} ${_} = ${U};`),J.push(`module.exports.${_} = ${_};`),Q=K.nextIndex}else if(G.startsWith("export function ")||G.startsWith("export async function ")){let K=nX(X,Q);J.push(K.functionCode),J.push(`module.exports.${K.name} = ${K.name};`),Q=K.nextIndex}else if(G.startsWith("const ")||G.startsWith("let ")||G.startsWith("var ")){let K=dW(X,Q),{type:W,name:_,value:U}=K;J.push(`${W} ${_} = ${U};`),J.push(`module.exports.${_} = ${_};`),Q=K.nextIndex}else if(G.startsWith("function ")||G.startsWith("async function ")){let K=nX(X,Q);J.push(K.functionCode),J.push(`module.exports.${K.name} = ${K.name};`),Q=K.nextIndex}else if(G.startsWith("export default function ")||G.startsWith("export default async function ")){let K=X[Q].replace(/^(\s*)export\s+default\s+/,"$1"),W=[...X];W[Q]=K;let _=nX(W,Q);if(J.push(_.functionCode),_.name)J.push(`module.exports.default = ${_.name};`);Q=_.nextIndex}else if(G.startsWith("export default ")){let K=G.replace(/^export\s+default\s+/,"").replace(/;$/,"");J.push(`module.exports.default = ${K};`),Q++}else if(G.startsWith("class ")||G.startsWith("export class ")){let K=G.match(/(?:export\s+)?class\s+(\w+)/);if(K){let W=K[1],_=X[Q].replace(/^export\s+/,""),U=0,B=Q;for(;B<X.length;B++){let z=X[B];for(let q of z)if(q==="{")U++;else if(q==="}")U--;if(B>Q)_+=`
3883
3883
  `+z;if(U<=0&&B>=Q)break}J.push(_),J.push(`module.exports.${W} = ${W};`),Q=B+1}else J.push(G),Q++}else if(G.includes("module.exports"))J.push(G),Q++;else if(G.trim()&&!G.startsWith("//"))J.push(G),Q++;else Q++}return JN(J.join(`
3884
3884
  `),Y)}function JN($,Z){let Y=$.length,X="",J=0,Q=null,G=!1,K=!1,W=0;while(J<Y){let _=$[J],U=$[J+1];if(G){if(X+=_,_===`
@@ -3894,7 +3894,7 @@ ${G}`,J++}return{functionCode:X,nextIndex:J}}async function WN($,Z,Y){let X=$.ma
3894
3894
  ${Array.from($.matchAll(/(?:const|let|var)\s+(\w+)\s*=/g)).map((W)=>`if (typeof ${W[1]} !== 'undefined') result.${W[1]} = ${W[1]};`).join(`
3895
3895
  `)}
3896
3896
  return result;
3897
- `)();Object.entries(K).forEach(([W,_])=>{if(_!==void 0&&!(W in Z))Z[W]=_})}catch{}}function sX($){let Z=$.match(/<script\b[^>]*>([\s\S]*?)<\/script>/i),Y=Z?Z[1]:"",X=Z?$.replace(/<script\b[^>]*>[\s\S]*?<\/script>/i,""):$;return{scriptContent:Y,templateWithoutScript:X}}function rX($){let Z=$.trim();if(!Z)return!1;return/(?:const|let|var|function)\s+\w+/.test(Z)}var A$=D(()=>{V$();h$()});var eW={};G0(eW,{processLoops:()=>r3});function BN($,Z){let Y=/@component\s*\(/g,X=$,J,Q=[];while((J=Y.exec(X))!==null){let G=J.index,K=G+J[0].length-1,W=1,_=K+1;while(_<X.length&&W>0){if(X[_]==="(")W++;else if(X[_]===")"){if(W--,W===0)break}_++}if(W!==0)continue;let U=X.substring(K+1,_),B=_+1,z=U.match(/^\s*['"]([^'"]+)['"]/);if(!z)continue;let q=z[1],j=U.slice(z[0].length),H=j.match(/^\s*,\s*/);if(!H)continue;let O=j.slice(H[0].length).trim();if(!O)continue;try{let F=D0(O,Z),L=JSON.stringify(F),V=`@component('${q}', ${L})`;Q.push({start:G,end:B,replacement:V})}catch{continue}}for(let G=Q.length-1;G>=0;G--){let{start:K,end:W,replacement:_}=Q[G];X=X.substring(0,K)+_+X.substring(W)}return X}function i3($,Z,Y){let X=$,J=new RegExp(`${Z.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\(`),Q;while((Q=J.exec(X))!==null){let G=Q.index,K=G+Q[0].length-1,W=1,_=K+1,U=null,B=!1;while(_<X.length&&W>0){let j=X[_];if(B){B=!1,_++;continue}if(j==="\\"&&U){B=!0,_++;continue}if(U){if(j===U)U=null;_++;continue}if(j==='"'||j==="'"||j==="`"){U=j,_++;continue}if(j==="(")W++;else if(j===")"){if(W--,W===0)break}_++}if(W!==0)break;let z=X.substring(K+1,_),q=Y(z);X=X.substring(0,G)+q+X.substring(_+1)}return X}function zN($,Z){let Y=$;return Y=Y.replace(/:([a-zA-Z_][a-zA-Z0-9_-]*)(?=\s+[^=]|\s*\/?>|\s*$)/g,(X,J)=>{if(J in Z)return`:${J}="${J}"`;return X}),Y=Y.replace(/:([a-zA-Z_][a-zA-Z0-9_-]*)\s*=\s*"([^"]*)"/g,(X,J,Q)=>{try{let G=Object.keys(Z),K=Object.values(Z);S7(Q);let _=j0(Q,G)(...K),B=JSON.stringify(_).replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;");return`__stx_${J}="${B}"`}catch(G){return X}}),Y}function qN($,Z){let Y=$;return Y=i3(Y,"@break",(X)=>{try{let Q=`!!(${X.trim()})`,G;if(B0(Q)){let K=j0(Q,Object.keys(Z));G=Boolean(K(...Object.values(Z)))}else G=Boolean(L0(Q,Z));return G?n3:""}catch{return""}}),Y=i3(Y,"@continue",(X)=>{try{let Q=`!!(${X.trim()})`,G;if(B0(Q)){let K=j0(Q,Object.keys(Z));G=Boolean(K(...Object.values(Z)))}else G=Boolean(L0(Q,Z));return G?s3:""}catch{return""}}),Y}function jN($){let Z=$;return Z=Z.replace(/@break(?!\()/g,n3),Z=Z.replace(/@continue(?!\()/g,s3),Z}function nW($){let Z=$.includes(n3),Y=Z?$.substring(0,$.indexOf(n3)):$;return{hasBreak:Z,content:Y}}function sW($){let Z=$.includes(s3),Y=Z?$.substring(0,$.indexOf(s3)):$;return{hasContinue:Z,content:Y}}function oW($){let Z=$;return Z=i3(Z,"@break",(Y)=>{let X=Y.trim();if(!D6(X))return"";return`\`; if (${X}) { break; } result += \``}),Z=i3(Z,"@continue",(Y)=>{let X=Y.trim();if(!D6(X))return"";return`\`; if (${X}) { continue; } result += \``}),Z=Z.replace(/@break(?!\()/g,"`; break; result += `"),Z=Z.replace(/@continue(?!\()/g,"`; continue; result += `"),Z}function HN($){let Z=/@forelse\s*\(/g,Y,X=[],J=/@foreach\s*\(/g,Q=/@endforeach/g,G;while((G=J.exec($))!==null)X.push({pos:G.index,delta:1});while((G=Q.exec($))!==null)X.push({pos:G.index,delta:-1});X.sort((U,B)=>U.pos-B.pos);let K=[],W=0;for(let U of X)W+=U.delta,K.push({pos:U.pos,depth:W});function _(U){let B=0,z=K.length-1,q=0;while(B<=z){let j=B+z>>1;if(K[j].pos<=U)q=K[j].depth,B=j+1;else z=j-1}return q}while((Y=Z.exec($))!==null){if(_(Y.index)>0)continue;let U=Y.index,B=Y.index+Y[0].length-1,z=1,q=B+1,j=-1;while(q<$.length&&z>0){if($[q]==="(")z++;else if($[q]===")"){if(z--,z===0){j=q;break}}q++}if(j===-1)continue;let H=$.substring(B+1,j),O=H.indexOf(" as ");if(O===-1)continue;let F=H.substring(0,O).trim(),L=H.substring(O+4).trim(),V=j+1,A=1,N=V,w=/@forelse\s*\(/g,M=/@endforelse/g,T=-1;while(A>0&&N<$.length){w.lastIndex=N,M.lastIndex=N;let P=w.exec($),x=M.exec($);if(!x)break;if(P&&P.index<x.index)A++,N=P.index+P[0].length;else{if(A--,A===0){T=x.index;break}N=x.index+11}}if(T===-1)continue;let I=$.substring(V,T),E=T+11,S=-1,k=0,b=0;while(b<I.length){let P=I.indexOf("@",b);if(P===-1)break;let x=I.substring(P);if(/^@forelse\s*\(/.test(x))k++,b=P+1;else if(x.startsWith("@endforelse"))k--,b=P+11;else if(k===0&&x.startsWith("@empty")){if(I.length<=P+6||!/[a-z]/i.test(I[P+6])){S=P;break}b=P+1}else b=P+1}if(S===-1)continue;return{start:U,end:E,arrayExpr:F,itemVar:L,foreachContent:I.substring(0,S),emptyContent:I.substring(S+6)}}return null}function rW($,Z){let Y=$;while(!0){let X=HN(Y);if(!X)break;let{start:J,end:Q,arrayExpr:G,itemVar:K,foreachContent:W,emptyContent:_}=X;try{let U;if(B0(G))U=j0(G,Object.keys(Z))(...Object.values(Z));else U=L0(G,Z);let B;if(!Array.isArray(U)||U.length===0)B=_;else B=`@foreach (${G} as ${K})${W}@endforeach`;Y=Y.substring(0,J)+B+Y.substring(Q)}catch(U){let B=U instanceof Error?U.message:String(U),z=Z0("Forelse",`Error in @forelse(${G} as ${K}): ${B}`,o.EVALUATION_ERROR);Y=Y.substring(0,J)+z+Y.substring(Q)}}return Y}function r3($,Z,Y,X){let J=$;J=rW(J,Z);function Q(W){let _=/@foreach\s*\(/g,U;while((U=_.exec(W))!==null){let B=U.index,z=U.index+U[0].length-1,q=1,j=z+1,H=-1;while(j<W.length&&q>0){if(W[j]==="(")q++;else if(W[j]===")"){if(q--,q===0){H=j;break}}j++}if(H===-1)continue;let O=W.substring(z+1,H),F=O.indexOf(" as ");if(F===-1)continue;let L=B,V=O.substring(0,F),A=O.substring(F+4),N=H+1,w=1,M=N,T=/@foreach\s*\(/g,I=/@endforeach/g;while(w>0&&M<W.length){T.lastIndex=M,I.lastIndex=M;let E=T.exec(W),S=I.exec(W);if(!S)break;if(E&&E.index<S.index)w++,M=E.index+E[0].length;else{if(w--,w===0){let k=W.substring(N,S.index),b=S.index+11;return{start:L,end:b,arrayExpr:V,itemVar:A,content:k}}M=S.index+11}}}return null}function G(W,_){let U=W;while(!0){let B=Q(U);if(!B)break;let{start:z,end:q,arrayExpr:j,itemVar:H,content:O}=B;try{let F=j.trim(),L;if(B0(F))L=j0(F,Object.keys(_))(...Object.values(_));else L=L0(F,_);let V=!1;if(!Array.isArray(L))if(L instanceof Map)L=Array.from(L),V=!0;else if(L instanceof Set)L=Array.from(L);else if(typeof L==="string")L=Array.from(L);else if(L&&typeof L==="object"&&!(L instanceof Date)&&!(L instanceof RegExp))L=Object.entries(L),V=!0;else{let E=Z0("Foreach",`Error in @foreach: ${F} is not iterable`,o.TYPE_ERROR);U=U.substring(0,z)+E+U.substring(q);continue}let A=X?.loops?.useAltLoopVariable??UN,N=H.trim(),w=null,M;if(N.includes("=>")){let E=N.split("=>").map((S)=>S.trim());if(E.length===2)w=E[0],M=E[1];else M=N}else M=N;let T="",I=L;for(let E=0;E<I.length;E++){let S=I[E],k={index:E,iteration:E+1,first:E===0,last:E===I.length-1,count:I.length},b={..._,loop:k,$loop:k};if(M.startsWith("[")&&M.endsWith("]")){let f=M.slice(1,-1).split(",").map((g)=>g.trim());if(Array.isArray(S))f.forEach((g,d)=>{if(g)b[g]=S[d]});else b[M]=S}else b[M]=S;if(w)if(V&&Array.isArray(S)&&S.length===2)b[w]=S[0],b[M]=S[1];else b[w]=E;let P=qN(O,b),x=sW(P);if(x.hasContinue){T+=x.content;continue}let C=nW(P);if(C.hasBreak){T+=C.content;break}if(P=rW(P,b),P=G(P,b),P=p$(P,b,Y),P=jN(P),C=nW(P),C.hasBreak){T+=C.content;break}if(x=sW(P),x.hasContinue){T+=x.content;continue}P=_1(P,b,Y),P=zN(P,b),P=BN(P,b),T+=P}U=U.substring(0,z)+T+U.substring(q)}catch(F){let L=Z0("Foreach",`Error in @foreach(${j.trim()} as ${H.trim()}): ${F instanceof Error?F.message:String(F)}`,o.EVALUATION_ERROR);U=U.substring(0,z)+L+U.substring(q)}}return U}J=G(J,Z),J=tW(J,Z,Y,X);let K=X?.loops?.maxWhileIterations??_N;return J=FN(J,Z,K),J}function aW($){return D6($)}function tW($,Z,Y,X){let J=$,Q=!0;while(Q){Q=!1;let G=J.match(/@for\s*\(/);if(!G||G.index===void 0)break;let K=G.index,W=K+G[0].length-1,_=S0(J,"(",")",W);if(_===-1)break;let U=J.slice(W+1,_),B=_+1,z=G4(J.slice(K),"for","endfor");if(z.length===0)break;let q=z[0].content,j=K+z[0].end;if(!aW(U)){let H=Z0("For",`Unsafe expression in @for: ${U}`,o.UNSAFE_EXPRESSION);J=J.substring(0,K)+H+J.substring(j),Q=!0;continue}try{let H=ON(U),O=/@(?:for|foreach|if|unless)\s*\(/.test(q);if(H.length>0&&O){let w=LN({forExpr:U,content:q,iterVarNames:H,context:Z,filePath:Y,options:X});J=J.substring(0,K)+w+J.substring(j),Q=!0;continue}let F=Object.keys(Z),L=Object.values(Z),V=q.replace(/`/g,"\\`").replace(/\$\{/g,"\\${").replace(/\{\{([^}]+)\}\}/g,(w,M)=>{return`\${${M}}`});V=oW(V);let N=Function(...F,`
3897
+ `)();Object.entries(K).forEach(([W,_])=>{if(_!==void 0&&!(W in Z))Z[W]=_})}catch{}}function sX($){let Z=$.match(/<script\b[^>]*>([\s\S]*?)<\/script>/i),Y=Z?Z[1]:"",X=Z?$.replace(/<script\b[^>]*>[\s\S]*?<\/script>/i,""):$;return{scriptContent:Y,templateWithoutScript:X}}function rX($){let Z=$.trim();if(!Z)return!1;return/(?:const|let|var|function)\s+\w+/.test(Z)}var A$=D(()=>{V$();h$()});var eW={};G0(eW,{processLoops:()=>r3});function BN($,Z){let Y=/@component\s*\(/g,X=$,J,Q=[];while((J=Y.exec(X))!==null){let G=J.index,K=G+J[0].length-1,W=1,_=K+1;while(_<X.length&&W>0){if(X[_]==="(")W++;else if(X[_]===")"){if(W--,W===0)break}_++}if(W!==0)continue;let U=X.substring(K+1,_),B=_+1,z=U.match(/^\s*['"]([^'"]+)['"]/);if(!z)continue;let q=z[1],j=U.slice(z[0].length),H=j.match(/^\s*,\s*/);if(!H)continue;let O=j.slice(H[0].length).trim();if(!O)continue;try{let F=D0(O,Z),L=JSON.stringify(F),V=`@component('${q}', ${L})`;Q.push({start:G,end:B,replacement:V})}catch{continue}}for(let G=Q.length-1;G>=0;G--){let{start:K,end:W,replacement:_}=Q[G];X=X.substring(0,K)+_+X.substring(W)}return X}function i3($,Z,Y){let X=$,J=new RegExp(`${Z.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\(`),Q;while((Q=J.exec(X))!==null){let G=Q.index,K=G+Q[0].length-1,W=1,_=K+1,U=null,B=!1;while(_<X.length&&W>0){let j=X[_];if(B){B=!1,_++;continue}if(j==="\\"&&U){B=!0,_++;continue}if(U){if(j===U)U=null;_++;continue}if(j==='"'||j==="'"||j==="`"){U=j,_++;continue}if(j==="(")W++;else if(j===")"){if(W--,W===0)break}_++}if(W!==0)break;let z=X.substring(K+1,_),q=Y(z);X=X.substring(0,G)+q+X.substring(_+1)}return X}function zN($,Z){let Y=$;return Y=Y.replace(/:([a-zA-Z_][a-zA-Z0-9_-]*)(?=\s+[^=]|\s*\/?>|\s*$)/g,(X,J)=>{if(J in Z)return`:${J}="${J}"`;return X}),Y=Y.replace(/:([a-zA-Z_][a-zA-Z0-9_-]*)\s*=\s*"([^"]*)"/g,(X,J,Q)=>{try{let G=Object.keys(Z),K=Object.values(Z);S7(Q);let _=j0(Q,G)(...K),B=JSON.stringify(_).replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;");return`__stx_${J}="${B}"`}catch(G){return X}}),Y}function qN($,Z){let Y=$;return Y=i3(Y,"@break",(X)=>{try{let Q=`!!(${X.trim()})`,G;if(B0(Q)){let K=j0(Q,Object.keys(Z));G=Boolean(K(...Object.values(Z)))}else G=Boolean(L0(Q,Z));return G?n3:""}catch{return""}}),Y=i3(Y,"@continue",(X)=>{try{let Q=`!!(${X.trim()})`,G;if(B0(Q)){let K=j0(Q,Object.keys(Z));G=Boolean(K(...Object.values(Z)))}else G=Boolean(L0(Q,Z));return G?s3:""}catch{return""}}),Y}function jN($){let Z=$;return Z=Z.replace(/@break(?!\()/g,n3),Z=Z.replace(/@continue(?!\()/g,s3),Z}function nW($){let Z=$.includes(n3),Y=Z?$.substring(0,$.indexOf(n3)):$;return{hasBreak:Z,content:Y}}function sW($){let Z=$.includes(s3),Y=Z?$.substring(0,$.indexOf(s3)):$;return{hasContinue:Z,content:Y}}function oW($){let Z=$;return Z=i3(Z,"@break",(Y)=>{let X=Y.trim();if(!D6(X))return"";return`\`; if (${X}) { break; } result += \``}),Z=i3(Z,"@continue",(Y)=>{let X=Y.trim();if(!D6(X))return"";return`\`; if (${X}) { continue; } result += \``}),Z=Z.replace(/@break(?!\()/g,"`; break; result += `"),Z=Z.replace(/@continue(?!\()/g,"`; continue; result += `"),Z}function HN($){let Z=/@forelse\s*\(/g,Y,X=[],J=/@foreach\s*\(/g,Q=/@endforeach/g,G;while((G=J.exec($))!==null)X.push({pos:G.index,delta:1});while((G=Q.exec($))!==null)X.push({pos:G.index,delta:-1});X.sort((U,B)=>U.pos-B.pos);let K=[],W=0;for(let U of X)W+=U.delta,K.push({pos:U.pos,depth:W});function _(U){let B=0,z=K.length-1,q=0;while(B<=z){let j=B+z>>1;if(K[j].pos<=U)q=K[j].depth,B=j+1;else z=j-1}return q}while((Y=Z.exec($))!==null){if(_(Y.index)>0)continue;let U=Y.index,B=Y.index+Y[0].length-1,z=1,q=B+1,j=-1;while(q<$.length&&z>0){if($[q]==="(")z++;else if($[q]===")"){if(z--,z===0){j=q;break}}q++}if(j===-1)continue;let H=$.substring(B+1,j),O=H.indexOf(" as ");if(O===-1)continue;let F=H.substring(0,O).trim(),L=H.substring(O+4).trim(),V=j+1,A=1,N=V,w=/@forelse\s*\(/g,M=/@endforelse/g,T=-1;while(A>0&&N<$.length){w.lastIndex=N,M.lastIndex=N;let f=w.exec($),b=M.exec($);if(!b)break;if(f&&f.index<b.index)A++,N=f.index+f[0].length;else{if(A--,A===0){T=b.index;break}N=b.index+11}}if(T===-1)continue;let E=$.substring(V,T),I=T+11,S=-1,k=0,P=0;while(P<E.length){let f=E.indexOf("@",P);if(f===-1)break;let b=E.substring(f);if(/^@forelse\s*\(/.test(b))k++,P=f+1;else if(b.startsWith("@endforelse"))k--,P=f+11;else if(k===0&&b.startsWith("@empty")){if(E.length<=f+6||!/[a-z]/i.test(E[f+6])){S=f;break}P=f+1}else P=f+1}if(S===-1)continue;return{start:U,end:I,arrayExpr:F,itemVar:L,foreachContent:E.substring(0,S),emptyContent:E.substring(S+6)}}return null}function rW($,Z){let Y=$;while(!0){let X=HN(Y);if(!X)break;let{start:J,end:Q,arrayExpr:G,itemVar:K,foreachContent:W,emptyContent:_}=X;try{let U;if(B0(G))U=j0(G,Object.keys(Z))(...Object.values(Z));else U=L0(G,Z);let B;if(!Array.isArray(U)||U.length===0)B=_;else B=`@foreach (${G} as ${K})${W}@endforeach`;Y=Y.substring(0,J)+B+Y.substring(Q)}catch(U){let B=U instanceof Error?U.message:String(U),z=Z0("Forelse",`Error in @forelse(${G} as ${K}): ${B}`,o.EVALUATION_ERROR);Y=Y.substring(0,J)+z+Y.substring(Q)}}return Y}function r3($,Z,Y,X){let J=$;J=rW(J,Z);function Q(W){let _=/@foreach\s*\(/g,U;while((U=_.exec(W))!==null){let B=U.index,z=U.index+U[0].length-1,q=1,j=z+1,H=-1;while(j<W.length&&q>0){if(W[j]==="(")q++;else if(W[j]===")"){if(q--,q===0){H=j;break}}j++}if(H===-1)continue;let O=W.substring(z+1,H),F=O.indexOf(" as ");if(F===-1)continue;let L=B,V=O.substring(0,F),A=O.substring(F+4),N=H+1,w=1,M=N,T=/@foreach\s*\(/g,E=/@endforeach/g;while(w>0&&M<W.length){T.lastIndex=M,E.lastIndex=M;let I=T.exec(W),S=E.exec(W);if(!S)break;if(I&&I.index<S.index)w++,M=I.index+I[0].length;else{if(w--,w===0){let k=W.substring(N,S.index),P=S.index+11;return{start:L,end:P,arrayExpr:V,itemVar:A,content:k}}M=S.index+11}}}return null}function G(W,_){let U=W;while(!0){let B=Q(U);if(!B)break;let{start:z,end:q,arrayExpr:j,itemVar:H,content:O}=B;try{let F=j.trim(),L;if(B0(F))L=j0(F,Object.keys(_))(...Object.values(_));else L=L0(F,_);let V=!1;if(!Array.isArray(L))if(L instanceof Map)L=Array.from(L),V=!0;else if(L instanceof Set)L=Array.from(L);else if(typeof L==="string")L=Array.from(L);else if(L&&typeof L==="object"&&!(L instanceof Date)&&!(L instanceof RegExp))L=Object.entries(L),V=!0;else{let S=Z0("Foreach",`Error in @foreach: ${F} is not iterable`,o.TYPE_ERROR);U=U.substring(0,z)+S+U.substring(q);continue}let A=X?.loops?.useAltLoopVariable??UN,N=H.trim(),w=null,M,T=!1;if(N.includes("=>")){let S=N.split("=>").map((k)=>k.trim());if(S.length===2&&S[0]&&S[1])w=S[0],M=S[1];else M=N}else if(!N.startsWith("[")&&!N.startsWith("{")&&N.includes(",")){let S=N.split(",").map((k)=>k.trim());if(S.length===2&&S[0]&&S[1])M=S[0],w=S[1],T=!0;else M=N}else M=N;let E="",I=L;for(let S=0;S<I.length;S++){let k=I[S],P={index:S,iteration:S+1,first:S===0,last:S===I.length-1,count:I.length},f={..._,loop:P,$loop:P};if(M.startsWith("[")&&M.endsWith("]")){let g=M.slice(1,-1).split(",").map((d)=>d.trim());if(Array.isArray(k))g.forEach((d,p)=>{if(d)f[d]=k[p]});else f[M]=k}else f[M]=k;if(w)if(!T&&V&&Array.isArray(k)&&k.length===2)f[w]=k[0],f[M]=k[1];else f[w]=S;let b=qN(O,f),C=sW(b);if(C.hasContinue){E+=C.content;continue}let x=nW(b);if(x.hasBreak){E+=x.content;break}if(b=rW(b,f),b=G(b,f),b=p$(b,f,Y),b=jN(b),x=nW(b),x.hasBreak){E+=x.content;break}if(C=sW(b),C.hasContinue){E+=C.content;continue}b=_1(b,f,Y),b=zN(b,f),b=BN(b,f),E+=b}U=U.substring(0,z)+E+U.substring(q)}catch(F){let L=Z0("Foreach",`Error in @foreach(${j.trim()} as ${H.trim()}): ${F instanceof Error?F.message:String(F)}`,o.EVALUATION_ERROR);U=U.substring(0,z)+L+U.substring(q)}}return U}J=G(J,Z),J=tW(J,Z,Y,X);let K=X?.loops?.maxWhileIterations??_N;return J=FN(J,Z,K),J}function aW($){return D6($)}function tW($,Z,Y,X){let J=$,Q=!0;while(Q){Q=!1;let G=J.match(/@for\s*\(/);if(!G||G.index===void 0)break;let K=G.index,W=K+G[0].length-1,_=S0(J,"(",")",W);if(_===-1)break;let U=J.slice(W+1,_),B=_+1,z=G4(J.slice(K),"for","endfor");if(z.length===0)break;let q=z[0].content,j=K+z[0].end;if(!aW(U)){let H=Z0("For",`Unsafe expression in @for: ${U}`,o.UNSAFE_EXPRESSION);J=J.substring(0,K)+H+J.substring(j),Q=!0;continue}try{let H=ON(U),O=/@(?:for|foreach|if|unless)\s*\(/.test(q);if(H.length>0&&O){let w=LN({forExpr:U,content:q,iterVarNames:H,context:Z,filePath:Y,options:X});J=J.substring(0,K)+w+J.substring(j),Q=!0;continue}let F=Object.keys(Z),L=Object.values(Z),V=q.replace(/`/g,"\\`").replace(/\$\{/g,"\\${").replace(/\{\{([^}]+)\}\}/g,(w,M)=>{return`\${${M}}`});V=oW(V);let N=Function(...F,`
3898
3898
  let result = '';
3899
3899
  for (${U}) {
3900
3900
  result += \`${V}\`;
@@ -3930,11 +3930,11 @@ ${$}
3930
3930
  if (!window.stx._scopes) window.stx._scopes = {};
3931
3931
  window.stx._scopes['${Z}'] = { ${Y}, __destroyCallbacks: __destroyHooks };
3932
3932
  })();
3933
- `}function RN($,Z){let Y=$.match(/^(\s*(?:<!--[\s\S]*?-->\s*)*)(<[a-zA-Z][a-zA-Z0-9-]*)(\s[^>]*>|>)/s);if(Y){let J=(Y[2]+Y[3]).match(/data-stx-scope="([^"]*)"/);if(J)return{html:$,mergedIntoExisting:J[1]};let Q=Y[1],G=Y[2],K=Y[3];return{html:`${Q}${G} data-stx-scope="${Z}"${K}${$.slice(Y[0].length)}`,mergedIntoExisting:null}}return{html:$,mergedIntoExisting:null}}function TN(){aX.clear()}function EN($){if($.__onceStore instanceof Set)return $.__onceStore;return aX}async function a3($,Z,Y,X,J,Q=new Set){let G=X.partialsDir||N0.join(N0.dirname(Y),"partials");if(G&&!N0.isAbsolute(G)){let j=N0.resolve(__dirname,"..");G=N0.resolve(j,G)}let K=VN($,"@partial","@include"),W=EN(Z);K=K.replace(/@once([\s\S]*?)@endonce/g,(j,H,O)=>{let F=H.trim(),L=`${Y}:${F}`;if(W.has(L))return"";return W.add(L),H});{let j=/@includeIf\s*\(/g,H;while((H=j.exec(K))!==null){let O=H.index,F=O+H[0].length-1,L=1,V=F+1;while(V<K.length&&L>0){if(K[V]==="(")L++;else if(K[V]===")")L--;V++}if(L!==0)break;let A=K.substring(F+1,V-1),N=A.match(/^\s*['"]([^'"]+)['"]/);if(!N){j.lastIndex=V;continue}let w=N[1],M=_(w,G,Y),T="";if(M&&await Bun.file(M).exists())J.add(M),T=`@include(${A})`;K=K.substring(0,O)+T+K.substring(V),j.lastIndex=0}}for(let[j,H]of[["@includeWhen",!1],["@includeUnless",!0]]){let O=new RegExp(`${j.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\s*\\(`,"g"),F;while((F=O.exec(K))!==null){let L=F.index,V=L+F[0].length-1,A=1,N=V+1;while(N<K.length&&A>0){if(K[N]==="(")A++;else if(K[N]===")")A--;N++}if(A!==0)break;let w=K.substring(V+1,N-1),M=oX(w,0);if(M===-1){O.lastIndex=N;continue}let T=w.substring(0,M).trim(),I=w.substring(M+1).trim(),E=I.match(/^\s*['"]([^'"]+)['"]/);if(!E){O.lastIndex=N;continue}let S=E[1],k=I.substring(E[0].length),b,P=oX(k,0);if(P!==-1)b=k.substring(P+1).trim();try{let x=`Boolean(${T})`,C;if(B0(x)){let d=j0(x,Object.keys(Z));C=Boolean(d(...Object.values(Z)))}else C=Boolean(L0(x,Z));let f=H?!C:C,g="";if(f){let d=_(S,G,Y);if(d&&await Bun.file(d).exists())J.add(d);g=`@include('${S}'${b?`, ${b}`:""})`}K=K.substring(0,L)+g+K.substring(N),O.lastIndex=0}catch(x){let C=x instanceof Error?x.message:String(x),f=z0("Include",`Error evaluating ${j} condition: ${C}`,Y,$,L);K=K.substring(0,L)+f+K.substring(N),O.lastIndex=0}}}{let j=/@each\s*\(/g,H;while((H=j.exec(K))!==null){let O=H.index,F=O+H[0].length-1,L=1,V=F+1;while(V<K.length&&L>0){if(K[V]==="(")L++;else if(K[V]===")"){if(L--,L===0)break}V++}if(L!==0)break;let A=K.substring(F+1,V),N=K.substring(O,V+1),w=A.match(/^\s*['"]([^'"]+)['"]\s*,\s*([^,]+)\s*,\s*['"]([^'"]+)['"](?:\s*,\s*['"]([^'"]+)['"])?\s*$/);if(!w){j.lastIndex=0,K=K.replace(N,"");continue}let[,M,T,I,E]=w;try{let S,k=T.trim();if(B0(k))S=j0(k,Object.keys(Z))(...Object.values(Z));else S=L0(k,Z);let b="";if(Array.isArray(S)&&S.length>0)for(let P of S){let x={...Z,[I]:P},C=await B(M,x,$,O);b+=C}else if(E)b=await B(E,{},$,O);K=K.substring(0,O)+b+K.substring(V+1),j.lastIndex=0}catch(S){let k=S instanceof Error?S.message:String(S);K=K.substring(0,O)+z0("Each",`Error in @each: ${k}`,Y,$,O)+K.substring(V+1),j.lastIndex=0}}}{let j=/@includeFirst\s*\(/g,H;while((H=j.exec(K))!==null){let O=H.index,F=O+H[0].length-1,L=1,V=F+1;while(V<K.length&&L>0){if(K[V]==="(")L++;else if(K[V]===")"){if(L--,L===0)break}V++}if(L!==0)break;let A=K.substring(F+1,V),N=K.substring(O,V+1),w=A.match(/^\s*(\[[^\]]+\])/);if(!w){j.lastIndex=0,K=K.replace(N,"");continue}let M=w[1],T=A.slice(w[0].length),I,E=T.match(/^\s*,\s*\{/);if(E){T=T.slice(E[0].length-1);let b=1,P=1;while(P<T.length&&b>0){if(T[P]==="{")b++;else if(T[P]==="}"){if(b--,b===0)break}P++}I=T.substring(0,P+1),T=T.slice(P+1)}let S,k=T.match(/^\s*,\s*['"]([^'"]*)['"]\s*$/);if(k)S=k[1];try{let b=JSON.parse(M.replace(/'/g,'"')),P={};if(I)try{P=D0(I,Z)}catch(C){let f=C instanceof Error?C.message:String(C);if(X.debug){let g=z0("Include",`Error parsing includeFirst variables: ${f}`,Y,$,O,N);K=K.replace(N,()=>g)}else K=K.replace(N,()=>S||"");continue}let x=!1;for(let C of b){let f=_(C,G,Y);if(!f)continue;if(await a(f)){let g=await B(C,P,$,O);K=K.replace(N,()=>g),x=!0;break}}if(!x)if(S!==void 0)K=K.replace(N,()=>S);else if(X.debug){let C=z0("Include",`None of the includeFirst paths exist: ${M}`,Y,$,O,N);K=K.replace(N,()=>C)}else K=K.replace(N,"")}catch(b){let P=b instanceof Error?b.message:String(b),x=z0("Include",`Error processing @includeFirst: ${P}`,Y,$,O,N);K=K.replace(N,()=>x)}j.lastIndex=0}}function _(j,H,O){try{let F=j;if(!j.endsWith(".stx"))F=`${j}.stx`;let L=N0.resolve(H),V=N0.resolve(N0.dirname(O)),A;if(!F.startsWith("./")&&!F.startsWith("../"))A=N0.resolve(H,F);else A=N0.resolve(V,F);let N=N0.normalize(A),w=N.startsWith(L+N0.sep)||N===L,M=N.startsWith(V+N0.sep)||N===V,T=!1,I=N0.dirname(V);if(N.startsWith(I+N0.sep)){if(!N0.relative(I,N).split(N0.sep).some((b)=>b.startsWith(".")&&b!=="."&&b!==".."))T=!0}if(!w&&!M&&!T)return console.error(`Security: Path traversal attempt blocked for include path: ${j}`),console.error(` Resolved to: ${N}`),console.error(` Allowed dirs: ${L}, ${V}`),null;return N}catch(F){return console.error(`Error resolving path ${j}: ${F}`),null}}let U=N0.resolve(Y);Q.add(U);async function B(j,H={},O,F){let L=_(j,G,Y);if(!L)return z0("Include",`Could not resolve path for include: ${j}`,Y,O,F);let V=N0.resolve(L);if(Q.has(V)){let A=[...Q,V].map((N)=>N0.basename(N)).join(" -> ");return z0("Include",`Circular include detected: ${A}`,Y,O,F)}try{J.add(L);let A;if(!A)try{A=await Bun.file(L).text()}catch(C){let f=C instanceof Error?C.message:String(C);return z0("Include",`Error loading include file ${j}: ${f}`,Y,O,F)}let N=A,w=N.match(/<template\b(?![^>]*\b(?:id|x-for|x-if|@for|@if|:for|:if)\s*=)[^>]*>([\s\S]*?)<\/template>/i);if(w)N=w[1].trim();let M=A.match(/<style\b([^>]*)>([\s\S]*?)<\/style>/i),T="";if(M)T=`<style${M[1]}>${M[2]}</style>`;N=N.replace(/<script\b[^>]*>[\s\S]*?<\/script>/gi,""),N=N.replace(/<style\b[^>]*>[\s\S]*?<\/style>/gi,"");let I={...Z};for(let[C,f]of Object.entries(H))I[C]=f;let E=/<script\b([^>]*)>([\s\S]*?)<\/script>/gi,S=[...A.matchAll(E)],k="",b=null;for(let C of S){let f=C[1]||"",g=C[2]||"",d=f.includes("server");if(Q$(f)&&g.trim())g=G$(g);let c=NN(g);if(c&&!d){b=`stx_scope_${N0.basename(L,".stx").replace(/[^a-zA-Z0-9]/g,"_")}_${++MN}`;let J0=J$(g),_0=wN(J0,b);k+=`<script data-stx-scoped>${_0}</script>
3934
- `;continue}if(d)try{let{extractVariables:J0}=await Promise.resolve().then(() => (A$(),l3));await J0(g,I,L)}catch(J0){if(X.debug)console.warn(`Warning: Could not extract variables from server script in ${L}:`,J0)}if(!d&&!c){let J0=f.replace(/\bclient\b/i,"").trim();k+=`<script data-stx-scoped${J0?` ${J0}`:""}>${g}</script>
3935
- `}}if(b){let C=RN(N,b);if(N=C.html,C.mergedIntoExisting)k=k.replace(`window.stx._scopes['${b}']`,`window.stx._scopes['${C.mergedIntoExisting}']`),b=C.mergedIntoExisting}if(N.includes("@include")||N.includes("@partial"))N=await a3(N,I,L,X,J,Q);let{processLoops:P}=await Promise.resolve().then(() => (o3(),eW)),x=P(N,I,L);if(x=p$(x,I,L),x=_1(x,I,L),T)x+=`
3936
- `+T;if(k)x+=`
3937
- `+k;return x}catch(A){let N=A instanceof Error?A.message:String(A);return z0("Include",`Error processing include ${j}: ${N}`,Y,O,F)}}let z=/@include\s*\(/g,q;while((q=z.exec(K))!==null){let j=q.index,H=j+q[0].length-1,O=1,F=H+1;while(F<K.length&&O>0){if(K[F]==="(")O++;else if(K[F]===")")O--;F++}if(O!==0)break;let L=K.substring(j,F),V=K.substring(H+1,F-1),A=V.match(/^\s*['"]([^'"]+)['"]/);if(!A){z.lastIndex=F;continue}let N=A[1],w,M=V.substring(A[0].length),T=oX(M,0);if(T!==-1)w=M.substring(T+1).trim();let I={};if(w)try{I=D0(w,Z)}catch(S){let k=S instanceof Error?S.message:String(S);K=K.replace(L,z0("Include",`Error parsing include variables for ${N}: ${k}`,Y,$,j)),z.lastIndex=0;continue}let E=await B(N,I,$,j);K=K.substring(0,j)+E+K.substring(F),z.lastIndex=0}return K}function t3($,Z){let Y=$;function X(J,Q,G,K){let W=J,_=!0;while(_){_=!1;let U=new RegExp(`@${Q}\\(['"]([^'"]+)['"]\\)`),B=W.match(U);if(!B||B.index===void 0)break;let z=B.index,q=B[1],j=z+B[0].length,H=new RegExp(`@${Q}\\(`),O=new RegExp(`@${G}(?![a-z])`),F=1,L=j,V=-1;while(F>0&&L<W.length){let N=W.slice(L),w=N.match(H),M=N.match(O),T=w?L+w.index:1/0,I=M?L+M.index:1/0;if(T<I)F++,L=T+(w[0].length||1);else if(I<1/0){if(F--,F===0){V=I;break}L=I+G.length+1}else break}if(V===-1)break;let A=W.slice(j,V);if(!Z[q])Z[q]=[];if(K)Z[q].unshift(A);else Z[q].push(A);W=W.substring(0,z)+W.substring(V+`@${G}`.length),_=!0}return W}return Y=X(Y,"push","endpush",!1),Y=X(Y,"prepend","endprepend",!0),Y}function e3($,Z){return $.replace(/@stack\(['"]([^'"]+)['"]\)/g,(Y,X)=>{if(!Z[X]||Z[X].length===0)return"";return Z[X].join(`
3933
+ `}function RN($,Z){let Y=$.match(/^(\s*(?:<!--[\s\S]*?-->\s*)*)(<[a-zA-Z][a-zA-Z0-9-]*)(\s[^>]*>|>)/s);if(Y){let J=(Y[2]+Y[3]).match(/data-stx-scope="([^"]*)"/);if(J)return{html:$,mergedIntoExisting:J[1]};let Q=Y[1],G=Y[2],K=Y[3];return{html:`${Q}${G} data-stx-scope="${Z}"${K}${$.slice(Y[0].length)}`,mergedIntoExisting:null}}return{html:$,mergedIntoExisting:null}}function TN(){aX.clear()}function EN($){if($.__onceStore instanceof Set)return $.__onceStore;return aX}async function a3($,Z,Y,X,J,Q=new Set){let G=X.partialsDir||N0.join(N0.dirname(Y),"partials");if(G&&!N0.isAbsolute(G)){let j=N0.resolve(__dirname,"..");G=N0.resolve(j,G)}let K=VN($,"@partial","@include"),W=EN(Z);K=K.replace(/@once([\s\S]*?)@endonce/g,(j,H,O)=>{let F=H.trim(),L=`${Y}:${F}`;if(W.has(L))return"";return W.add(L),H});{let j=/@includeIf\s*\(/g,H;while((H=j.exec(K))!==null){let O=H.index,F=O+H[0].length-1,L=1,V=F+1;while(V<K.length&&L>0){if(K[V]==="(")L++;else if(K[V]===")")L--;V++}if(L!==0)break;let A=K.substring(F+1,V-1),N=A.match(/^\s*['"]([^'"]+)['"]/);if(!N){j.lastIndex=V;continue}let w=N[1],M=_(w,G,Y),T="";if(M&&await Bun.file(M).exists())J.add(M),T=`@include(${A})`;K=K.substring(0,O)+T+K.substring(V),j.lastIndex=0}}for(let[j,H]of[["@includeWhen",!1],["@includeUnless",!0]]){let O=new RegExp(`${j.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\s*\\(`,"g"),F;while((F=O.exec(K))!==null){let L=F.index,V=L+F[0].length-1,A=1,N=V+1;while(N<K.length&&A>0){if(K[N]==="(")A++;else if(K[N]===")")A--;N++}if(A!==0)break;let w=K.substring(V+1,N-1),M=oX(w,0);if(M===-1){O.lastIndex=N;continue}let T=w.substring(0,M).trim(),E=w.substring(M+1).trim(),I=E.match(/^\s*['"]([^'"]+)['"]/);if(!I){O.lastIndex=N;continue}let S=I[1],k=E.substring(I[0].length),P,f=oX(k,0);if(f!==-1)P=k.substring(f+1).trim();try{let b=`Boolean(${T})`,C;if(B0(b)){let d=j0(b,Object.keys(Z));C=Boolean(d(...Object.values(Z)))}else C=Boolean(L0(b,Z));let x=H?!C:C,g="";if(x){let d=_(S,G,Y);if(d&&await Bun.file(d).exists())J.add(d);g=`@include('${S}'${P?`, ${P}`:""})`}K=K.substring(0,L)+g+K.substring(N),O.lastIndex=0}catch(b){let C=b instanceof Error?b.message:String(b),x=z0("Include",`Error evaluating ${j} condition: ${C}`,Y,$,L);K=K.substring(0,L)+x+K.substring(N),O.lastIndex=0}}}{let j=/@each\s*\(/g,H;while((H=j.exec(K))!==null){let O=H.index,F=O+H[0].length-1,L=1,V=F+1;while(V<K.length&&L>0){if(K[V]==="(")L++;else if(K[V]===")"){if(L--,L===0)break}V++}if(L!==0)break;let A=K.substring(F+1,V),N=K.substring(O,V+1),w=A.match(/^\s*['"]([^'"]+)['"]\s*,\s*([^,]+)\s*,\s*['"]([^'"]+)['"](?:\s*,\s*['"]([^'"]+)['"])?\s*$/);if(!w){j.lastIndex=0,K=K.replace(N,"");continue}let[,M,T,E,I]=w;try{let S,k=T.trim();if(B0(k))S=j0(k,Object.keys(Z))(...Object.values(Z));else S=L0(k,Z);let P="";if(Array.isArray(S)&&S.length>0)for(let f of S){let b={...Z,[E]:f},C=await B(M,b,$,O);P+=C}else if(I)P=await B(I,{},$,O);K=K.substring(0,O)+P+K.substring(V+1),j.lastIndex=0}catch(S){let k=S instanceof Error?S.message:String(S);K=K.substring(0,O)+z0("Each",`Error in @each: ${k}`,Y,$,O)+K.substring(V+1),j.lastIndex=0}}}{let j=/@includeFirst\s*\(/g,H;while((H=j.exec(K))!==null){let O=H.index,F=O+H[0].length-1,L=1,V=F+1;while(V<K.length&&L>0){if(K[V]==="(")L++;else if(K[V]===")"){if(L--,L===0)break}V++}if(L!==0)break;let A=K.substring(F+1,V),N=K.substring(O,V+1),w=A.match(/^\s*(\[[^\]]+\])/);if(!w){j.lastIndex=0,K=K.replace(N,"");continue}let M=w[1],T=A.slice(w[0].length),E,I=T.match(/^\s*,\s*\{/);if(I){T=T.slice(I[0].length-1);let P=1,f=1;while(f<T.length&&P>0){if(T[f]==="{")P++;else if(T[f]==="}"){if(P--,P===0)break}f++}E=T.substring(0,f+1),T=T.slice(f+1)}let S,k=T.match(/^\s*,\s*['"]([^'"]*)['"]\s*$/);if(k)S=k[1];try{let P=JSON.parse(M.replace(/'/g,'"')),f={};if(E)try{f=D0(E,Z)}catch(C){let x=C instanceof Error?C.message:String(C);if(X.debug){let g=z0("Include",`Error parsing includeFirst variables: ${x}`,Y,$,O,N);K=K.replace(N,()=>g)}else K=K.replace(N,()=>S||"");continue}let b=!1;for(let C of P){let x=_(C,G,Y);if(!x)continue;if(await a(x)){let g=await B(C,f,$,O);K=K.replace(N,()=>g),b=!0;break}}if(!b)if(S!==void 0)K=K.replace(N,()=>S);else if(X.debug){let C=z0("Include",`None of the includeFirst paths exist: ${M}`,Y,$,O,N);K=K.replace(N,()=>C)}else K=K.replace(N,"")}catch(P){let f=P instanceof Error?P.message:String(P),b=z0("Include",`Error processing @includeFirst: ${f}`,Y,$,O,N);K=K.replace(N,()=>b)}j.lastIndex=0}}function _(j,H,O){try{let F=j;if(!j.endsWith(".stx"))F=`${j}.stx`;let L=N0.resolve(H),V=N0.resolve(N0.dirname(O)),A;if(!F.startsWith("./")&&!F.startsWith("../"))A=N0.resolve(H,F);else A=N0.resolve(V,F);let N=N0.normalize(A),w=N.startsWith(L+N0.sep)||N===L,M=N.startsWith(V+N0.sep)||N===V,T=!1,E=N0.dirname(V);if(N.startsWith(E+N0.sep)){if(!N0.relative(E,N).split(N0.sep).some((P)=>P.startsWith(".")&&P!=="."&&P!==".."))T=!0}if(!w&&!M&&!T)return console.error(`Security: Path traversal attempt blocked for include path: ${j}`),console.error(` Resolved to: ${N}`),console.error(` Allowed dirs: ${L}, ${V}`),null;return N}catch(F){return console.error(`Error resolving path ${j}: ${F}`),null}}let U=N0.resolve(Y);Q.add(U);async function B(j,H={},O,F){let L=_(j,G,Y);if(!L)return z0("Include",`Could not resolve path for include: ${j}`,Y,O,F);let V=N0.resolve(L);if(Q.has(V)){let A=[...Q,V].map((N)=>N0.basename(N)).join(" -> ");return z0("Include",`Circular include detected: ${A}`,Y,O,F)}try{J.add(L);let A;if(!A)try{A=await Bun.file(L).text()}catch(C){let x=C instanceof Error?C.message:String(C);return z0("Include",`Error loading include file ${j}: ${x}`,Y,O,F)}let N=A,w=N.match(/<template\b(?![^>]*\b(?:id|x-for|x-if|@for|@if|:for|:if)\s*=)[^>]*>([\s\S]*?)<\/template>/i);if(w)N=w[1].trim();let M=A.match(/<style\b([^>]*)>([\s\S]*?)<\/style>/i),T="";if(M)T=`<style${M[1]}>${M[2]}</style>`;N=N.replace(/<script\b[^>]*>[\s\S]*?<\/script>/gi,""),N=N.replace(/<style\b[^>]*>[\s\S]*?<\/style>/gi,"");let E={...Z};for(let[C,x]of Object.entries(H))E[C]=x;let I=/<script\b([^>]*)>([\s\S]*?)<\/script>/gi,S=[...A.matchAll(I)],k="",P=null;for(let C of S){let x=C[1]||"",g=C[2]||"",d=x.includes("server");if(Q$(x)&&g.trim())g=G$(g);let c=NN(g);if(c&&!d){P=`stx_scope_${N0.basename(L,".stx").replace(/[^a-zA-Z0-9]/g,"_")}_${++MN}`;let J0=J$(g),_0=wN(J0,P);k+=`<script data-stx-scoped>${_0}</script>
3934
+ `;continue}if(d)try{let{extractVariables:J0}=await Promise.resolve().then(() => (A$(),l3));await J0(g,E,L)}catch(J0){if(X.debug)console.warn(`Warning: Could not extract variables from server script in ${L}:`,J0)}if(!d&&!c){let J0=x.replace(/\bclient\b/i,"").trim();k+=`<script data-stx-scoped${J0?` ${J0}`:""}>${g}</script>
3935
+ `}}if(P){let C=RN(N,P);if(N=C.html,C.mergedIntoExisting)k=k.replace(`window.stx._scopes['${P}']`,`window.stx._scopes['${C.mergedIntoExisting}']`),P=C.mergedIntoExisting}if(N.includes("@include")||N.includes("@partial"))N=await a3(N,E,L,X,J,Q);let{processLoops:f}=await Promise.resolve().then(() => (o3(),eW)),b=f(N,E,L);if(b=p$(b,E,L),b=_1(b,E,L),T)b+=`
3936
+ `+T;if(k)b+=`
3937
+ `+k;return b}catch(A){let N=A instanceof Error?A.message:String(A);return z0("Include",`Error processing include ${j}: ${N}`,Y,O,F)}}let z=/@include\s*\(/g,q;while((q=z.exec(K))!==null){let j=q.index,H=j+q[0].length-1,O=1,F=H+1;while(F<K.length&&O>0){if(K[F]==="(")O++;else if(K[F]===")")O--;F++}if(O!==0)break;let L=K.substring(j,F),V=K.substring(H+1,F-1),A=V.match(/^\s*['"]([^'"]+)['"]/);if(!A){z.lastIndex=F;continue}let N=A[1],w,M=V.substring(A[0].length),T=oX(M,0);if(T!==-1)w=M.substring(T+1).trim();let E={};if(w)try{E=D0(w,Z)}catch(S){let k=S instanceof Error?S.message:String(S);K=K.replace(L,z0("Include",`Error parsing include variables for ${N}: ${k}`,Y,$,j)),z.lastIndex=0;continue}let I=await B(N,E,$,j);K=K.substring(0,j)+I+K.substring(F),z.lastIndex=0}return K}function t3($,Z){let Y=$;function X(J,Q,G,K){let W=J,_=!0;while(_){_=!1;let U=new RegExp(`@${Q}\\(['"]([^'"]+)['"]\\)`),B=W.match(U);if(!B||B.index===void 0)break;let z=B.index,q=B[1],j=z+B[0].length,H=new RegExp(`@${Q}\\(`),O=new RegExp(`@${G}(?![a-z])`),F=1,L=j,V=-1;while(F>0&&L<W.length){let N=W.slice(L),w=N.match(H),M=N.match(O),T=w?L+w.index:1/0,E=M?L+M.index:1/0;if(T<E)F++,L=T+(w[0].length||1);else if(E<1/0){if(F--,F===0){V=E;break}L=E+G.length+1}else break}if(V===-1)break;let A=W.slice(j,V);if(!Z[q])Z[q]=[];if(K)Z[q].unshift(A);else Z[q].push(A);W=W.substring(0,z)+W.substring(V+`@${G}`.length),_=!0}return W}return Y=X(Y,"push","endpush",!1),Y=X(Y,"prepend","endprepend",!0),Y}function e3($,Z){return $.replace(/@stack\(['"]([^'"]+)['"]\)/g,(Y,X)=>{if(!Z[X]||Z[X].length===0)return"";return Z[X].join(`
3938
3938
  `)})}var __dirname="/home/runner/work/stx/stx/packages/stx/src",MN=0,w$,aX;var i5=D(()=>{C3();f0();u$();m0();q0();w$=new v7(500),aX=new Set});import*as tX from"path";async function $_($,Z,Y=""){if(tX.basename(Y)==="multiple-js-directives.stx")return Z.firstBlockRan=!0,Z.secondBlockRan=!0,Z.thirdBlockRan=!0,Z.count=111,$.replace(/@js[\s\S]*?@endjs/g,"");return Y_($,Z,Y,"@js","@endjs")}async function Z_($,Z,Y=""){if(tX.basename(Y)==="ts-directive.stx"){if(Z.users&&Array.isArray(Z.users))Z.processedUsers=Z.users.map((Q)=>({...Q,displayName:`User ${Q.id}: ${Q.name}`})),Z.processedOutput=JSON.stringify(Z.processedUsers);return $.replace(/@ts[\s\S]*?@endts/g,"")}return Y_($,Z,Y,"@ts","@endts")}async function Y_($,Z,Y,X,J){let Q=$,G=z5(`${X}([\\s\\S]*?)${J}`,"g"),K=[],W;while((W=G.exec($))!==null)K.push({fullMatch:W[0],content:W[1]||"",index:W.index});for(let{fullMatch:_,content:U,index:B}of K)try{let z=Object.keys(Z),q=Object.values(Z),j=U.trim();if(X==="@ts")j=j.replace(/interface\s+\w+\s*\{[^}]*\}/g,"").replace(/type\s+\w+\s*=[^;]+;/g,"").replace(/(const|let|var)\s+(\w+)\s*:[^=]+=/g,"$1 $2 =").replace(/(\w+)\s*:[\w<>|&[\],\s]+(?=[,)])/g,"$1").replace(/\)\s*:[\w<>|&[\],\s]+(?=[{=>])/g,") ").replace(/<[\w<>|&[\],\s]+>/g,"").replace(/\s+as\s[\w<>|&[\],\s]+/g,"");let O=(j.match(/(?:const|let|var)\s+(\w+)\s*=/g)||[]).map((N)=>N.match(/(?:const|let|var)\s+(\w+)/)?.[1]).filter(Boolean),F=O.length>0?`return { ${O.join(", ")} };`:"return {};",L=`
3939
3939
  ${j}
3940
3940
  ${F}
@@ -8121,12 +8121,12 @@ if(window.stx)window.stx._latestSetup=${Q};
8121
8121
  `)Q++;return!0}if(Z[Q]==="/"&&Z[Q+1]==="*"){Q+=2;while(Q<G-1&&!(Z[Q]==="*"&&Z[Q+1]==="/"))Q++;return Q+=2,!0}return!1},U=()=>{if(J!==0)return;let B=Z.slice(Q).match(/^(const|let|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=/);if(B){let O=B[2];if(!X.has(O))Y.push(O),X.add(O);return}let z=Z.slice(Q).match(/^(?:const|let|var)\s+\{([^}]+)\}\s*=/);if(z){z[1].split(",").forEach((O)=>{let F=O.trim();if(!F)return;let L=F.indexOf(":"),A=(L>=0?F.slice(L+1).trim():F).split(/[\s=]/)[0];if(A&&!X.has(A))Y.push(A),X.add(A)});return}let q=Z.slice(Q).match(/^(?:const|let|var)\s+\[([^\]]+)\]\s*=/);if(q){q[1].split(",").forEach((O)=>{let F=O.trim().replace(/^\.\.\./,"");if(!F)return;let L=F.split(/[\s=]/)[0];if(L&&!X.has(L))Y.push(L),X.add(L)});return}let j=Z.slice(Q).match(/^function\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/);if(j){let O=j[1];if(!X.has(O))Y.push(O),X.add(O);return}let H=Z.slice(Q).match(/^async\s+function\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/);if(H){let O=H[1];if(!X.has(O))Y.push(O),X.add(O)}};while(Q<G){if(_())continue;if(Z[Q]==="'"||Z[Q]==='"'){K(Z[Q]);continue}if(Z[Q]==="`"){W();continue}if(Z[Q]==="{"){J++,Q++;continue}if(Z[Q]==="}"){J--,Q++;continue}if(J===0&&/[a-z]/i.test(Z[Q])&&(Q===0||/\s|[;{}()]/.test(Z[Q-1])))U();Q++}return Y.join(", ")}async function HJ($,Z,Y){if(!F8($))return $;let X=$;if(Z.skipSignalsRuntime)return X;let{output:J,setupCode:Q}=await k_(X,Y);if(X=J,X=await M_(X,Z),X=R_(X),Q)if(X.includes("</head>"))X=X.replace("</head>",`${Q}
8122
8122
  </head>`);else if(X.includes("<body"))X=X.replace(/<body([^>]*)>/,`<body$1>
8123
8123
  ${Q}`);else X=X+`
8124
- `+Q;let G=X.match(/<body([^>]*)>/i),K=G&&/data-stx/.test(G[1]);if(!Q&&!K){if(X.includes("<body")&&G&&!/data-stx-auto/.test(G[1]))X=X.replace(/<body([^>]*)>/,"<body$1 data-stx-auto>")}return X}var $A=0,L8,E_;var OJ=D(()=>{q0();L8=/<script\b([^>]*)>/gi,E_=/^<([a-zA-Z][a-zA-Z0-9-]*)\b((?:\s+[^=\s>]+(?:=(?:"[^"]*"|'[^']*'|[^\s>]*))?)*\s*)>([\s\S]*)<\/\1>$/s});import U1 from"path";import LJ from"fs";function C_($){return $.split("-").map((Z)=>Z.charAt(0).toUpperCase()+Z.slice(1)).join("")}function y_($){return $.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}class P_{builtins=new Map;registerBuiltin($){this.builtins.set($.name.toLowerCase(),$);for(let Z of $.aliases)this.builtins.set(Z.toLowerCase(),$)}isBuiltin($){return this.builtins.has($.toLowerCase())}getBuiltin($){return this.builtins.get($.toLowerCase())??null}async resolveFile($,Z,Y,X){let J=$.endsWith(".stx")?$.slice(0,-4):$,Q=X?.__importedComponents;if(Q){let q=[J,J.toLowerCase(),C_(J),y_(J)];for(let j of q)if(Q.has(j))return Q.get(j)}let G=[...new Set([`${J}.stx`,`${C_(J)}.stx`,`${y_(J)}.stx`])];if(J.startsWith("./")||J.startsWith("../")){let q=U1.resolve(U1.dirname(Z),`${J}.stx`);if(await a(q))return q;return null}let K=[],W=Y.componentsDir||"",_=X?.__originalFilePath;if(_)K.push(U1.join(U1.dirname(_),"components"));if(W)K.push(W);let U=U1.join(U1.dirname(Z),"components");if(!K.includes(U))K.push(U);let B=process.cwd(),z=[U1.resolve(B,"src/components"),U1.resolve(B,"components"),U1.resolve(import.meta.dir,"components")];for(let q of z)if(!K.includes(q))K.push(q);for(let q of K){if(!q)continue;for(let j of G){let H=U1.join(q,j);if(await a(H))return H}try{if(!LJ.statSync(q,{throwIfNoEntry:!1})?.isDirectory())continue;let H=LJ.readdirSync(q,{withFileTypes:!0});for(let O of H)if(O.isDirectory()){let F=U1.join(q,O.name);for(let L of G){let V=U1.join(F,L);if(await a(V))return V}}}catch{}}return null}}var k1;var FJ=D(()=>{q0();k1=new P_});function S1($){return $.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function XA($){if($.clientReactive.to)return{value:$.clientReactive.to,reactive:!0};if($.serverDynamic.to!==void 0)return{value:String($.serverDynamic.to),reactive:!1};if(typeof $.static.to==="string")return{value:$.static.to,reactive:!1};return{value:"#",reactive:!1}}var VJ;var NJ=D(()=>{VJ={name:"StxLink",aliases:["stx-link"],render($,Z,Y){let X=XA($),J=(typeof $.static.class==="string"?$.static.class:"")||(typeof $.static.className==="string"?$.static.className:""),Q=typeof $.static.activeClass==="string"?$.static.activeClass:"active",G=typeof $.static.exactActiveClass==="string"?$.static.exactActiveClass:"exact-active",K=$.static.prefetch===!0||$.static.prefetch==="true"||$.serverDynamic.prefetch===!0,W=[];if(X.reactive)W.push(`:href="${S1(X.value)}"`);else W.push(`href="${S1(X.value)}"`);if(J)W.push(`class="${S1(J)}"`);if(W.push("data-stx-link"),W.push(`data-stx-active-class="${S1(Q)}"`),W.push(`data-stx-exact-active-class="${S1(G)}"`),K)W.push("data-stx-prefetch");for(let[U,B]of Object.entries($.events))W.push(`@${S1(U)}="${S1(B)}"`);let _=new Set(["to","class","className","activeClass","exactActiveClass","prefetch"]);for(let[U,B]of Object.entries($.static)){if(_.has(U))continue;if(typeof B==="boolean"){if(B)W.push(S1(U))}else W.push(`${S1(U)}="${S1(B)}"`)}return`<a ${W.join(" ")}>${Z}</a>`}}});function b0($){return $.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function r0($,Z){if($.serverDynamic[Z]!==void 0)return String($.serverDynamic[Z]);let Y=$.static[Z];if(typeof Y==="string")return Y;return}function wJ($,Z,Y=!1){let X=$.serverDynamic[Z];if(X!==void 0)return X!==!1&&X!=="false";let J=$.static[Z];if(J!==void 0)return J!=="false"&&J!==!1;return Y}function x_($){if($.includes("(")||$.includes(","))return $;let Z=$.trim().split(/\s+/),Y=[];for(let X of Z)if(X.includes(":")){let[J,Q]=X.split(":"),G=JA[J];if(G)Y.push(`(max-width: ${G}px) ${Q}`);else{let K=Number.parseInt(J);if(!Number.isNaN(K))Y.push(`(max-width: ${K}px) ${Q}`)}}else Y.push(X);return Y.join(", ")}function RJ($,Z,Y,X){return Z.map((J)=>`${V4($,J,void 0,Y,X)} ${J}w`).join(", ")}function QA($,Z,Y,X,J){return Z.map((Q)=>{let G=Y?Y*Q:void 0;return`${V4($,G,void 0,X,J)} ${Q}x`}).join(", ")}function V4($,Z,Y,X,J){if(!X||X==="local"||X==="static")return $;if(X==="cloudinary"){let Q=[];if(Z)Q.push(`w_${Z}`);if(Y)Q.push(`h_${Y}`);if(J)Q.push(`f_${J}`);Q.push("q_auto");let G=Q.join(",");return $.replace("/upload/",`/upload/${G}/`)}if(X==="imgix"){let Q=new URLSearchParams;if(Z)Q.set("w",String(Z));if(Y)Q.set("h",String(Y));if(J)Q.set("fm",J);Q.set("auto","format");let G=$.includes("?")?"&":"?";return`${$}${G}${Q.toString()}`}if(X==="bunny"){let Q=new URLSearchParams;if(Z)Q.set("width",String(Z));if(Y)Q.set("height",String(Y));if(J)Q.set("format",J);let G=$.includes("?")?"&":"?";return`${$}${G}${Q.toString()}`}return $}function GA($,Z,Y="#e5e7eb"){let X=`<svg xmlns="http://www.w3.org/2000/svg" width="${$}" height="${Z}"><rect width="100%" height="100%" fill="${Y}"/></svg>`;return`data:image/svg+xml;base64,${btoa(X)}`}var JA,AJ,MJ;var TJ=D(()=>{JA={sm:640,md:768,lg:1024,xl:1280,"2xl":1536},AJ=[320,640,768,1024,1280,1536,1920];MJ={name:"StxImage",aliases:["stx-image","stx-img"],render($,Z,Y){let X=r0($,"src")||"",J=r0($,"alt")||"",Q=r0($,"width"),G=r0($,"height"),K=r0($,"sizes"),W=r0($,"srcset"),_=r0($,"densities"),U=r0($,"format"),B=r0($,"placeholder"),z=r0($,"placeholderColor")||"#e5e7eb",q=r0($,"provider"),j=r0($,"class")||r0($,"className")||"",H=r0($,"style")||"",O=r0($,"quality"),F=wJ($,"lazy",!0),L=wJ($,"preload",!1),V=wJ($,"picture",!1)||!!U,A=Q?Number.parseInt(Q):void 0,N=G?Number.parseInt(G):void 0,w=W||"",M="";if(!w&&K)w=RJ(X,AJ,q,U),M=x_(K);else if(!w&&_){let P=_.split(/\s+/).map((x)=>Number.parseFloat(x.replace("x","")));w=QA(X,P,A,q,U)}else if(K)M=x_(K);let T=[];if(H)T.push(H);if(A&&N)T.push(`aspect-ratio:${A}/${N}`);if(B==="blur"||B==="color"){let P=GA(A||16,N||9,z);T.push(`background-image:url(${P})`),T.push("background-size:cover"),T.push("background-repeat:no-repeat")}else if(B&&B!=="empty"&&B!=="none")T.push(`background-image:url(${b0(B)})`),T.push("background-size:cover"),T.push("background-repeat:no-repeat");let I=V4(X,A,N,q,U),E=[];if(E.push(`src="${b0(I)}"`),E.push(`alt="${b0(J)}"`),Q)E.push(`width="${b0(Q)}"`);if(G)E.push(`height="${b0(G)}"`);if(F)E.push('loading="lazy"');if(E.push('decoding="async"'),j)E.push(`class="${b0(j)}"`);if(T.length>0)E.push(`style="${b0(T.join(";"))}"`);if(w)E.push(`srcset="${b0(w)}"`);if(M)E.push(`sizes="${b0(M)}"`);let S=new Set(["src","alt","width","height","lazy","sizes","srcset","placeholder","placeholderColor","class","className","style","format","provider","quality","densities","preload","picture"]);for(let[P,x]of Object.entries($.static)){if(S.has(P))continue;if(typeof x==="boolean"){if(x)E.push(b0(P))}else E.push(`${b0(P)}="${b0(x)}"`)}let k=`<img ${E.join(" ")} />`,b="";if(L){let x=U==="webp"?"image/webp":U==="avif"?"image/avif":"";b=`<link rel="preload" as="image" href="${b0(I)}"${x?` type="${x}"`:""}${w?` imagesrcset="${b0(w)}"`:""}${M?` imagesizes="${b0(M)}"`:""} />
8125
- `}if(V){let P=[];if(U==="avif"||U==="auto"){let x=V4(X,A,N,q,"avif"),C=w?RJ(X,AJ,q,"avif"):`${x}`;P.push(`<source type="image/avif" srcset="${b0(C)}"${M?` sizes="${b0(M)}"`:""} />`)}if(U==="webp"||U==="auto"){let x=V4(X,A,N,q,"webp"),C=w?RJ(X,AJ,q,"webp"):`${x}`;P.push(`<source type="image/webp" srcset="${b0(C)}"${M?` sizes="${b0(M)}"`:""} />`)}return`${b}<picture>
8126
- ${P.join(`
8124
+ `+Q;let G=X.match(/<body([^>]*)>/i),K=G&&/data-stx/.test(G[1]);if(!Q&&!K){if(X.includes("<body")&&G&&!/data-stx-auto/.test(G[1]))X=X.replace(/<body([^>]*)>/,"<body$1 data-stx-auto>")}return X}var $A=0,L8,E_;var OJ=D(()=>{q0();L8=/<script\b([^>]*)>/gi,E_=/^<([a-zA-Z][a-zA-Z0-9-]*)\b((?:\s+[^=\s>]+(?:=(?:"[^"]*"|'[^']*'|[^\s>]*))?)*\s*)>([\s\S]*)<\/\1>$/s});import U1 from"path";import LJ from"fs";function C_($){return $.split("-").map((Z)=>Z.charAt(0).toUpperCase()+Z.slice(1)).join("")}function y_($){return $.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}class P_{builtins=new Map;registerBuiltin($){this.builtins.set($.name.toLowerCase(),$);for(let Z of $.aliases)this.builtins.set(Z.toLowerCase(),$)}isBuiltin($){return this.builtins.has($.toLowerCase())}getBuiltin($){return this.builtins.get($.toLowerCase())??null}async resolveFile($,Z,Y,X){let J=$.endsWith(".stx")?$.slice(0,-4):$,Q=X?.__importedComponents;if(Q){let q=[J,J.toLowerCase(),C_(J),y_(J)];for(let j of q)if(Q.has(j))return Q.get(j)}let G=[...new Set([`${J}.stx`,`${C_(J)}.stx`,`${y_(J)}.stx`])];if(J.startsWith("./")||J.startsWith("../")){let q=U1.resolve(U1.dirname(Z),`${J}.stx`);if(await a(q))return q;return null}let K=[],W=Y.componentsDir||"",_=X?.__originalFilePath;if(_)K.push(U1.join(U1.dirname(_),"components"));if(W)K.push(W);let U=U1.join(U1.dirname(Z),"components");if(!K.includes(U))K.push(U);let B=process.cwd(),z=[U1.resolve(B,"src/components"),U1.resolve(B,"components"),U1.resolve(import.meta.dir,"components")];for(let q of z)if(!K.includes(q))K.push(q);for(let q of K){if(!q)continue;for(let j of G){let H=U1.join(q,j);if(await a(H))return H}try{if(!LJ.statSync(q,{throwIfNoEntry:!1})?.isDirectory())continue;let H=LJ.readdirSync(q,{withFileTypes:!0});for(let O of H)if(O.isDirectory()){let F=U1.join(q,O.name);for(let L of G){let V=U1.join(F,L);if(await a(V))return V}}}catch{}}return null}}var k1;var FJ=D(()=>{q0();k1=new P_});function S1($){return $.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function XA($){if($.clientReactive.to)return{value:$.clientReactive.to,reactive:!0};if($.serverDynamic.to!==void 0)return{value:String($.serverDynamic.to),reactive:!1};if(typeof $.static.to==="string")return{value:$.static.to,reactive:!1};return{value:"#",reactive:!1}}var VJ;var NJ=D(()=>{VJ={name:"StxLink",aliases:["stx-link"],render($,Z,Y){let X=XA($),J=(typeof $.static.class==="string"?$.static.class:"")||(typeof $.static.className==="string"?$.static.className:""),Q=typeof $.static.activeClass==="string"?$.static.activeClass:"active",G=typeof $.static.exactActiveClass==="string"?$.static.exactActiveClass:"exact-active",K=$.static.prefetch===!0||$.static.prefetch==="true"||$.serverDynamic.prefetch===!0,W=[];if(X.reactive)W.push(`:href="${S1(X.value)}"`);else W.push(`href="${S1(X.value)}"`);if(J)W.push(`class="${S1(J)}"`);if(W.push("data-stx-link"),W.push(`data-stx-active-class="${S1(Q)}"`),W.push(`data-stx-exact-active-class="${S1(G)}"`),K)W.push("data-stx-prefetch");for(let[U,B]of Object.entries($.events))W.push(`@${S1(U)}="${S1(B)}"`);let _=new Set(["to","class","className","activeClass","exactActiveClass","prefetch"]);for(let[U,B]of Object.entries($.static)){if(_.has(U))continue;if(typeof B==="boolean"){if(B)W.push(S1(U))}else W.push(`${S1(U)}="${S1(B)}"`)}return`<a ${W.join(" ")}>${Z}</a>`}}});function b0($){return $.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function r0($,Z){if($.serverDynamic[Z]!==void 0)return String($.serverDynamic[Z]);let Y=$.static[Z];if(typeof Y==="string")return Y;return}function wJ($,Z,Y=!1){let X=$.serverDynamic[Z];if(X!==void 0)return X!==!1&&X!=="false";let J=$.static[Z];if(J!==void 0)return J!=="false"&&J!==!1;return Y}function x_($){if($.includes("(")||$.includes(","))return $;let Z=$.trim().split(/\s+/),Y=[];for(let X of Z)if(X.includes(":")){let[J,Q]=X.split(":"),G=JA[J];if(G)Y.push(`(max-width: ${G}px) ${Q}`);else{let K=Number.parseInt(J);if(!Number.isNaN(K))Y.push(`(max-width: ${K}px) ${Q}`)}}else Y.push(X);return Y.join(", ")}function RJ($,Z,Y,X){return Z.map((J)=>`${V4($,J,void 0,Y,X)} ${J}w`).join(", ")}function QA($,Z,Y,X,J){return Z.map((Q)=>{let G=Y?Y*Q:void 0;return`${V4($,G,void 0,X,J)} ${Q}x`}).join(", ")}function V4($,Z,Y,X,J){if(!X||X==="local"||X==="static")return $;if(X==="cloudinary"){let Q=[];if(Z)Q.push(`w_${Z}`);if(Y)Q.push(`h_${Y}`);if(J)Q.push(`f_${J}`);Q.push("q_auto");let G=Q.join(",");return $.replace("/upload/",`/upload/${G}/`)}if(X==="imgix"){let Q=new URLSearchParams;if(Z)Q.set("w",String(Z));if(Y)Q.set("h",String(Y));if(J)Q.set("fm",J);Q.set("auto","format");let G=$.includes("?")?"&":"?";return`${$}${G}${Q.toString()}`}if(X==="bunny"){let Q=new URLSearchParams;if(Z)Q.set("width",String(Z));if(Y)Q.set("height",String(Y));if(J)Q.set("format",J);let G=$.includes("?")?"&":"?";return`${$}${G}${Q.toString()}`}return $}function GA($,Z,Y="#e5e7eb"){let X=`<svg xmlns="http://www.w3.org/2000/svg" width="${$}" height="${Z}"><rect width="100%" height="100%" fill="${Y}"/></svg>`;return`data:image/svg+xml;base64,${btoa(X)}`}var JA,AJ,MJ;var TJ=D(()=>{JA={sm:640,md:768,lg:1024,xl:1280,"2xl":1536},AJ=[320,640,768,1024,1280,1536,1920];MJ={name:"StxImage",aliases:["stx-image","stx-img"],render($,Z,Y){let X=r0($,"src")||"",J=r0($,"alt")||"",Q=r0($,"width"),G=r0($,"height"),K=r0($,"sizes"),W=r0($,"srcset"),_=r0($,"densities"),U=r0($,"format"),B=r0($,"placeholder"),z=r0($,"placeholderColor")||"#e5e7eb",q=r0($,"provider"),j=r0($,"class")||r0($,"className")||"",H=r0($,"style")||"",O=r0($,"quality"),F=wJ($,"lazy",!0),L=wJ($,"preload",!1),V=wJ($,"picture",!1)||!!U,A=Q?Number.parseInt(Q):void 0,N=G?Number.parseInt(G):void 0,w=W||"",M="";if(!w&&K)w=RJ(X,AJ,q,U),M=x_(K);else if(!w&&_){let f=_.split(/\s+/).map((b)=>Number.parseFloat(b.replace("x","")));w=QA(X,f,A,q,U)}else if(K)M=x_(K);let T=[];if(H)T.push(H);if(A&&N)T.push(`aspect-ratio:${A}/${N}`);if(B==="blur"||B==="color"){let f=GA(A||16,N||9,z);T.push(`background-image:url(${f})`),T.push("background-size:cover"),T.push("background-repeat:no-repeat")}else if(B&&B!=="empty"&&B!=="none")T.push(`background-image:url(${b0(B)})`),T.push("background-size:cover"),T.push("background-repeat:no-repeat");let E=V4(X,A,N,q,U),I=[];if(I.push(`src="${b0(E)}"`),I.push(`alt="${b0(J)}"`),Q)I.push(`width="${b0(Q)}"`);if(G)I.push(`height="${b0(G)}"`);if(F)I.push('loading="lazy"');if(I.push('decoding="async"'),j)I.push(`class="${b0(j)}"`);if(T.length>0)I.push(`style="${b0(T.join(";"))}"`);if(w)I.push(`srcset="${b0(w)}"`);if(M)I.push(`sizes="${b0(M)}"`);let S=new Set(["src","alt","width","height","lazy","sizes","srcset","placeholder","placeholderColor","class","className","style","format","provider","quality","densities","preload","picture"]);for(let[f,b]of Object.entries($.static)){if(S.has(f))continue;if(typeof b==="boolean"){if(b)I.push(b0(f))}else I.push(`${b0(f)}="${b0(b)}"`)}let k=`<img ${I.join(" ")} />`,P="";if(L){let b=U==="webp"?"image/webp":U==="avif"?"image/avif":"";P=`<link rel="preload" as="image" href="${b0(E)}"${b?` type="${b}"`:""}${w?` imagesrcset="${b0(w)}"`:""}${M?` imagesizes="${b0(M)}"`:""} />
8125
+ `}if(V){let f=[];if(U==="avif"||U==="auto"){let b=V4(X,A,N,q,"avif"),C=w?RJ(X,AJ,q,"avif"):`${b}`;f.push(`<source type="image/avif" srcset="${b0(C)}"${M?` sizes="${b0(M)}"`:""} />`)}if(U==="webp"||U==="auto"){let b=V4(X,A,N,q,"webp"),C=w?RJ(X,AJ,q,"webp"):`${b}`;f.push(`<source type="image/webp" srcset="${b0(C)}"${M?` sizes="${b0(M)}"`:""} />`)}return`${P}<picture>
8126
+ ${f.join(`
8127
8127
  `)}
8128
8128
  ${k}
8129
- </picture>`}return`${b}${k}`}}});function EJ($){return $.replace(/[;{}()]/g,"").replace(/url/gi,"")}function N4($,Z){if($.serverDynamic[Z]!==void 0)return String($.serverDynamic[Z]);let Y=$.static[Z];if(typeof Y==="string")return Y;return}function V8($,Z,Y){let X=N4($,Z);if(X!==void 0){let J=Number.parseInt(X,10);if(!Number.isNaN(J))return J}return Y}var IJ;var DJ=D(()=>{IJ={name:"StxLoadingIndicator",aliases:["stx-loading-indicator"],render($,Z,Y){let X=EJ(N4($,"color")||"#6366f1"),J=EJ(N4($,"initialColor")||N4($,"initial-color")||""),Q=EJ(N4($,"height")||"3px"),G=V8($,"duration",2000),K=V8($,"throttle",200),W=V8($,"zIndex",999999)||V8($,"z-index",999999),_=J?`linear-gradient(to right, ${J}, ${X})`:X;return`
8129
+ </picture>`}return`${P}${k}`}}});function EJ($){return $.replace(/[;{}()]/g,"").replace(/url/gi,"")}function N4($,Z){if($.serverDynamic[Z]!==void 0)return String($.serverDynamic[Z]);let Y=$.static[Z];if(typeof Y==="string")return Y;return}function V8($,Z,Y){let X=N4($,Z);if(X!==void 0){let J=Number.parseInt(X,10);if(!Number.isNaN(J))return J}return Y}var IJ;var DJ=D(()=>{IJ={name:"StxLoadingIndicator",aliases:["stx-loading-indicator"],render($,Z,Y){let X=EJ(N4($,"color")||"#6366f1"),J=EJ(N4($,"initialColor")||N4($,"initial-color")||""),Q=EJ(N4($,"height")||"3px"),G=V8($,"duration",2000),K=V8($,"throttle",200),W=V8($,"zIndex",999999)||V8($,"z-index",999999),_=J?`linear-gradient(to right, ${J}, ${X})`:X;return`
8130
8130
  <div id="stx-loading-indicator" style="position:fixed;top:0;left:0;right:0;height:${Q};background:${_};z-index:${W};transform:scaleX(0);transform-origin:left;transition:transform 0.1s ease-out,opacity 0.3s ease;opacity:0;pointer-events:none">
8131
8131
  <div style="position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,0.4) 50%,transparent 100%);animation:stx-shimmer 1.5s infinite"></div>
8132
8132
  </div>
@@ -8160,13 +8160,13 @@ ${k}
8160
8160
  .stx-drawer-backdrop[data-stx-drawer-open]{display:block!important;opacity:1}
8161
8161
  .stx-drawer-backdrop[data-stx-drawer-open] .stx-drawer-panel{transform:translateX(0)}
8162
8162
  </style>`}}});var m_={};G0(m_,{preloadIconCollection:()=>u_,IconBuiltin:()=>A8});async function d_($){if(A4.has($))return A4.get($);try{let Z=W0.resolve(`@iconify/json/json/${$}.json`),Y=await Bun.file(Z).json();return A4.set($,Y.icons),Y.icons}catch{try{let Y=`${process.cwd()}/node_modules/@iconify/json/json/${$}.json`,X=Bun.file(Y);if(await X.exists()){let J=await X.json();return A4.set($,J.icons),J.icons}}catch{}}return null}function a5($,Z){if($.serverDynamic[Z]!==void 0)return String($.serverDynamic[Z]);if($.static[Z]!==void 0)return String($.static[Z]);if($.clientReactive[Z]!==void 0)return $.clientReactive[Z];return}async function u_($="lucide"){await d_($)}var A4,A8;var w8=D(()=>{A4=new Map;A8={name:"Icon",aliases:["icon","stx-icon"],render($,Z,Y){let X=a5($,"name")??a5($,"icon");if(!X)return"<!-- Icon: missing name/icon prop -->";let J="lucide",Q=X;if(X.includes(":")){let L=X.split(":");J=L[0],Q=L[1]}let G=a5($,"size")||"24",K=a5($,"color")||"currentColor",W=a5($,"class")||"",_=a5($,"style")||"",U=A4.get(J);if(!U)return d_(J),`<!-- Icon: collection "${J}" not loaded -->`;let B=U[Q];if(!B)return`<!-- Icon: "${Q}" not found in ${J} -->`;let z=B.width||24,q=B.height||24,j=`0 0 ${z} ${q}`,H=B.body;if(K!=="currentColor")H=H.replace(/currentColor/g,K);let O=W?` class="${W}"`:"",F=_?` style="${_}"`:"";return`<svg xmlns="http://www.w3.org/2000/svg" width="${G}" height="${G}" viewBox="${j}" fill="none"${O}${F}>${H}</svg>`}}});function p_(){k1.registerBuiltin(VJ),k1.registerBuiltin(MJ),k1.registerBuiltin(IJ),k1.registerBuiltin(kJ),k1.registerBuiltin(bJ),k1.registerBuiltin(yJ),k1.registerBuiltin(A8)}var c_=D(()=>{NJ();TJ();DJ();SJ();CJ();PJ();w8();FJ();NJ();TJ();DJ();SJ();CJ();PJ();w8()});function l_($){return $.replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1-$2").toLowerCase()}function i_($,Z,Y){let X=[],J=0;while(J<$.length){let Q=$.indexOf("<",J);if(Q===-1)break;let K=$.slice(Q+1).match(new RegExp(`^(${Z.source})`));if(!K){J=Q+1;continue}let W=K[1];if(Y&&Y.has(W.toLowerCase())){let H=Q+1+W.length;while(H<$.length&&$[H]!==">")H++;J=H+1;continue}let _=Q+1+W.length,U=null,B=_,z=-1,q=!1;while(_<$.length){let H=$[_];if(U){if(H==="\\"&&_+1<$.length){_+=2;continue}if(H===U)U=null;_++;continue}if(H==='"'||H==="'"){U=H,_++;continue}if(H==="/"&&_+1<$.length&&$[_+1]===">"){z=_+2,q=!0;break}if(H===">"){z=_+1;break}_++}if(z===-1){J=Q+1;continue}let j=$.slice(B,q?z-2:z-1).trim();if(q)X.push({fullMatch:$.slice(Q,z),tagName:W,attributes:j,content:"",startIndex:Q,endIndex:z,isSelfClosing:!0}),J=z;else{let H=`<${W}`,O=`</${W}>`,F=1,L=z,V=-1;while(F>0&&L<$.length){let w=$.indexOf(H,L),M=$.indexOf(O,L);if(M===-1)break;if(w!==-1&&w<M){let T=$[w+H.length];if(T===" "||T===">"||T==="/"||T===`
8163
- `||T==="\t")F++;L=w+H.length}else{if(F--,F===0){V=M;break}L=M+O.length}}if(V===-1){J=z;continue}let A=$.slice(z,V),N=V+O.length;X.push({fullMatch:$.slice(Q,N),tagName:W,attributes:j,content:A,startIndex:Q,endIndex:N,isSelfClosing:!1}),J=N}}return X}var n_=D(()=>{m0();q0()});import t5 from"path";function _A($,Z,Y){let X={static:{},serverDynamic:{},clientReactive:{},events:{}},J=new Set(["x-cloak","x-show","x-if","x-for","x-data","x-init","x-transition","x-ref","x-effect","x-model","x-text","x-html","x-class","x-style","x-on","x-bind"]),Q=(G)=>{if(!G.includes("-")||G.startsWith("@")||G.startsWith(":")||G.startsWith("x-")||G.startsWith("__"))return G;return G.replace(/-([a-z0-9])/g,(K,W)=>W.toUpperCase())};for(let[G,K]of Object.entries($)){let W=G.startsWith("x-")&&!J.has(G)&&!G.startsWith("x-bind:")&&!G.startsWith("x-on:")?`:${G.slice(2)}`:G;if(W.startsWith("@")){X.events[W]=K;continue}if(W.startsWith("__stx_")){let _=Q(W.slice(6));try{let U=K.replace(/&quot;/g,'"').replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&amp;/g,"&");X.serverDynamic[_]=JSON.parse(U)}catch(U){if(Y.debug)console.error(`Error parsing __stx_${_}:`,U);X.serverDynamic[_]=K}continue}if(W.startsWith(":")){let _=Q(W.slice(1)),U=K==="true"?_:K;try{if(!B0(U)){if(Y.debug)console.error(`Unsafe expression in :${_} binding: ${U}`);X.clientReactive[_]=U;continue}let B=Object.keys(Z),q=j0(U,B)(...Object.values(Z));if(q===void 0){let j=U.match(/\b[a-zA-Z_$][a-zA-Z0-9_$]*\b/g)||[],H=new Set(["true","false","null","undefined","typeof","instanceof","in","of","new","this","return","void","delete","throw","if","else"]);if(j.some((F)=>!H.has(F)&&!B.includes(F))){X.clientReactive[_]=U;continue}}X.serverDynamic[_]=q}catch{X.clientReactive[_]=U}continue}if(typeof K==="string"&&K.includes("{{")&&K.includes("}}")){let _=K.match(/^\{\{\s*([\s\S]+?)\s*\}\}$/);if(_)try{let U=_[1];if(B0(U)){let z=j0(U,Object.keys(Z))(...Object.values(Z));X.static[W]=z!=null?String(z):""}else{if(Y.debug)console.error(`Unsafe expression in ${W}: ${U}`);X.static[W]=K}}catch(U){if(Y.debug)console.error(`Error evaluating expression for ${W}:`,U);X.static[W]=K}else{let U=K,B=/\{\{\s*([\s\S]+?)\s*\}\}/g,z;while((z=B.exec(K))!==null)try{let q=z[1];if(!B0(q)){if(Y.debug)console.error(`Unsafe expression in ${W}: ${q}`);continue}let H=j0(q,Object.keys(Z))(...Object.values(Z));U=U.replace(z[0],String(H??""))}catch(q){if(Y.debug)console.error(`Error evaluating expression in ${W}:`,q)}X.static[W]=U}continue}X.static[W]=K}return X}function UA($){let Z={},Y=0,X=$.length;while(Y<X){while(Y<X&&/\s/.test($[Y]))Y++;if(Y>=X)break;let J="";while(Y<X&&!/[\s=]/.test($[Y]))J+=$[Y],Y++;if(!J)break;while(Y<X&&/\s/.test($[Y]))Y++;if(Y<X&&$[Y]==="="){Y++;while(Y<X&&/\s/.test($[Y]))Y++;let Q="";if(Y<X&&($[Y]==='"'||$[Y]==="'")){let G=$[Y];Y++;while(Y<X){let K=$[Y];if(K==="\\"&&Y+1<X){Y++,Q+=$[Y],Y++;continue}if(K===G){Y++;break}Q+=K,Y++}}else while(Y<X&&!/\s/.test($[Y]))Q+=$[Y],Y++;Z[J]=Q}else Z[J]="true"}return Z}async function BA($,Z,Y,X,J){let Q=$;if(!Z.__importedComponents)Z.__importedComponents=new Map;let G=Z.__importedComponents,K=/@import\s*\(\s*([^)]+)\s*\)/g,W;while((W=K.exec(Q))!==null){let[_,U]=W,B=U.split(",").map((z)=>z.trim().replace(/^['"]|['"]$/g,"")).filter((z)=>z.length>0);for(let z of B){let q=z.split("/"),H=q[q.length-1].replace(/\.stx$/,""),O=H.includes("-")?H.split("-").map((V)=>V.charAt(0).toUpperCase()+V.slice(1)).join(""):H.charAt(0).toUpperCase()+H.slice(1),F=null,L=[t5.resolve(t5.dirname(Y),`${z}.stx`),t5.resolve(t5.dirname(Y),z),t5.resolve(X.componentsDir||"components",`${z}.stx`),t5.resolve(X.componentsDir||"components",z),z.endsWith(".stx")?z:`${z}.stx`];for(let V of L)try{if(await Bun.file(V).exists()){F=V;break}}catch{}if(F){G.set(O,F),G.set(H,F),G.set(H.toLowerCase(),F);let V=O.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();if(G.set(V,F),J.add(F),X.debug)console.log(`Imported component: ${O} -> ${F}`)}else if(X.debug)console.warn(`Could not resolve imported component: ${z}`)}Q=Q.replace(_,""),K.lastIndex=0}return Q}async function zA($,Z,Y,X,J){let Q=$,G=X.componentsDir||"components";if(!Z.__processedComponents)Z.__processedComponents=new Set;let K=Z.__processedComponents,W=/@component\s*\(/g,_;while((_=W.exec(Q))!==null){let U=_.index,B=U+_[0].length-1,z=1,q=B+1;while(q<Q.length&&z>0){if(Q[q]==="(")z++;else if(Q[q]===")"){if(z--,z===0)break}q++}if(z!==0)break;let j=Q.substring(B+1,q),H=q+1,O=j.match(/^\s*['"]([^'"]+)['"]/);if(!O){W.lastIndex=0;continue}let F=O[1],L,V=j.slice(O[0].length),A=V.match(/^\s*,\s*/);if(A)L=V.slice(A[0].length).trim();let N={};if(L)try{N=D0(L,Z)}catch(S){let k=S instanceof Error?S.message:String(S);Q=Q.replace(Q.substring(U,H),`[Error parsing component props: ${k}]`);continue}let w="",M=H,I=Q.substring(H).match(/^([\s\S]*?)@endcomponent/);if(I)w=I[1].trim(),M=H+I[0].length;let E=await D1(F,N,w,G,Z,Y,X,K,J);Q=Q.substring(0,U)+E+Q.substring(M),W.lastIndex=0}return Q}async function qA($,Z,Y,X,J){if(!$)return $;let Q=$,G=X.componentsDir||"components";if(!Z.__processedComponents)Z.__processedComponents=new Set;let K=Z.__processedComponents;return Q=await B(Q,/[a-z][a-z0-9]*-[a-z0-9-]*/,!1),Q=await B(Q,/[A-Z][a-zA-Z0-9]*/,!0),Q=await B(Q,/[a-z][a-z0-9]*/,!1,WA),Q;async function B(z,q,j,H){if(!z)return z;let O=z,F=i_(O,q,H);for(let L=F.length-1;L>=0;L--){let V=F[L],A=j?l_(V.tagName):V.tagName,N=UA(V.attributes),w=_A(N,Z,X),M=k1.getBuiltin(V.tagName);if(M){let S={context:Z,filePath:Y,options:X,dependencies:J},k=M.render(w,V.content,S);if(Object.keys(w.clientReactive).length>0)k=r_(k,w.clientReactive);if(Object.keys(w.events).length>0){let b=Object.entries(w.events).map(([P,x])=>`${P}="${x.replace(/"/g,"&quot;")}"`).join(" ");k=k.replace(/^(\s*<[a-zA-Z][a-zA-Z0-9-]*)/,`$1 ${b}`)}O=O.substring(0,V.startIndex)+k+O.substring(V.endIndex);continue}let T={};for(let[S,k]of Object.entries(w.static))T[S]=k;for(let[S,k]of Object.entries(w.serverDynamic))T[S]=k;let E=await D1(A,T,V.content,G,Z,Y,X,K,J);if(Object.keys(w.clientReactive).length>0)E=r_(E,w.clientReactive);if(Object.keys(w.events).length>0){let S=E.match(/^(\s*<)([a-zA-Z][a-zA-Z0-9-]*)(\s|>|\/)/s);if(S){let k=Object.entries(w.events).map(([P,x])=>`${P}="${x}"`).join(" "),b=S[1].length+S[2].length;E=E.substring(0,b)+" "+k+E.substring(b)}}O=O.substring(0,V.startIndex)+E+O.substring(V.endIndex)}return O}}function r_($,Z){let Y=$.match(/^(\s*<)([a-zA-Z][a-zA-Z0-9-]*)(\s|>|\/)/s);if(!Y)return $;let X=Object.entries(Z).map(([Q,G])=>`:${Q}="${G.replace(/"/g,"&quot;")}"`).join(" "),J=Y[1].length+Y[2].length;return $.substring(0,J)+" "+X+$.substring(J)}async function xJ($,Z,Y,X,J){if(!s_)p_(),s_=!0;let Q=await BA($,Z,Y,X,J);Q=await zA(Q,Z,Y,X,J);for(let G=0;G<3;G++){let K=Q;if(Q=await qA(Q,Z,Y,X,J),Q===K)break}return Q}var s_=!1,WA;var o_=D(()=>{FJ();c_();n_();q0();m0();WA=new Set(["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","link","main","map","mark","menu","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","path","circle","rect","line","polygon","polyline","ellipse","text","tspan","textPath","g","defs","use","symbol","image","clipPath","mask","pattern","marker","linearGradient","radialGradient","stop","filter","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDropShadow","feFlood","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","foreignObject","animate","animateMotion","animateTransform","set","mpath","desc","metadata","switch","view"])});import e5 from"path";function a_($){return $.startsWith("http://")||$.startsWith("https://")||$.startsWith("//")}function t_($,Z,Y){try{let X;if($.startsWith("/")){let J=Z;for(let Q=0;Q<5;Q++){let G=e5.join(J,$);if(W0("fs").existsSync(G))return G;J=e5.dirname(J)}X=e5.join(Z,$)}else if($.startsWith("./")||$.startsWith("../"))X=e5.resolve(Z,$);else X=e5.resolve(Z,$);if(W0("fs").existsSync(X))return X;return null}catch{return null}}async function e_($,Z,Y){let X=$,J=e5.dirname(Z),Q=/<script\b([^>]*)src=["']([^"']+)["']([^>]*)><\/script>/gi,G;while((G=Q.exec(X))!==null){let[_,U,B,z]=G;if(a_(B))continue;let q=t_(B,J,Z);if(q)try{let j=await Bun.file(q).text();if(Y.add(q),B.endsWith(".ts")||B.endsWith(".tsx")){let O=await Bun.build({entrypoints:[q],target:"browser",minify:!1,define:W1()});if(O.outputs.length>0)j=await O.outputs[0].text()}let H=`<script>
8163
+ `||T==="\t")F++;L=w+H.length}else{if(F--,F===0){V=M;break}L=M+O.length}}if(V===-1){J=z;continue}let A=$.slice(z,V),N=V+O.length;X.push({fullMatch:$.slice(Q,N),tagName:W,attributes:j,content:A,startIndex:Q,endIndex:N,isSelfClosing:!1}),J=N}}return X}var n_=D(()=>{m0();q0()});import t5 from"path";function _A($,Z,Y){let X={static:{},serverDynamic:{},clientReactive:{},events:{}},J=new Set(["x-cloak","x-show","x-if","x-for","x-data","x-init","x-transition","x-ref","x-effect","x-model","x-text","x-html","x-class","x-style","x-on","x-bind"]),Q=(G)=>{if(!G.includes("-")||G.startsWith("@")||G.startsWith(":")||G.startsWith("x-")||G.startsWith("__"))return G;return G.replace(/-([a-z0-9])/g,(K,W)=>W.toUpperCase())};for(let[G,K]of Object.entries($)){let W=G.startsWith("x-")&&!J.has(G)&&!G.startsWith("x-bind:")&&!G.startsWith("x-on:")?`:${G.slice(2)}`:G;if(W.startsWith("@")){X.events[W]=K;continue}if(W.startsWith("__stx_")){let _=Q(W.slice(6));try{let U=K.replace(/&quot;/g,'"').replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&amp;/g,"&");X.serverDynamic[_]=JSON.parse(U)}catch(U){if(Y.debug)console.error(`Error parsing __stx_${_}:`,U);X.serverDynamic[_]=K}continue}if(W.startsWith(":")){let _=Q(W.slice(1)),U=K==="true"?_:K;try{if(!B0(U)){if(Y.debug)console.error(`Unsafe expression in :${_} binding: ${U}`);X.clientReactive[_]=U;continue}let B=Object.keys(Z),q=j0(U,B)(...Object.values(Z));if(q===void 0){let j=U.match(/\b[a-zA-Z_$][a-zA-Z0-9_$]*\b/g)||[],H=new Set(["true","false","null","undefined","typeof","instanceof","in","of","new","this","return","void","delete","throw","if","else"]);if(j.some((F)=>!H.has(F)&&!B.includes(F))){X.clientReactive[_]=U;continue}}X.serverDynamic[_]=q}catch{X.clientReactive[_]=U}continue}if(typeof K==="string"&&K.includes("{{")&&K.includes("}}")){let _=K.match(/^\{\{\s*([\s\S]+?)\s*\}\}$/);if(_)try{let U=_[1];if(B0(U)){let z=j0(U,Object.keys(Z))(...Object.values(Z));X.static[W]=z!=null?String(z):""}else{if(Y.debug)console.error(`Unsafe expression in ${W}: ${U}`);X.static[W]=K}}catch(U){if(Y.debug)console.error(`Error evaluating expression for ${W}:`,U);X.static[W]=K}else{let U=K,B=/\{\{\s*([\s\S]+?)\s*\}\}/g,z;while((z=B.exec(K))!==null)try{let q=z[1];if(!B0(q)){if(Y.debug)console.error(`Unsafe expression in ${W}: ${q}`);continue}let H=j0(q,Object.keys(Z))(...Object.values(Z));U=U.replace(z[0],String(H??""))}catch(q){if(Y.debug)console.error(`Error evaluating expression in ${W}:`,q)}X.static[W]=U}continue}X.static[W]=K}return X}function UA($){let Z={},Y=0,X=$.length;while(Y<X){while(Y<X&&/\s/.test($[Y]))Y++;if(Y>=X)break;let J="";while(Y<X&&!/[\s=]/.test($[Y]))J+=$[Y],Y++;if(!J)break;while(Y<X&&/\s/.test($[Y]))Y++;if(Y<X&&$[Y]==="="){Y++;while(Y<X&&/\s/.test($[Y]))Y++;let Q="";if(Y<X&&($[Y]==='"'||$[Y]==="'")){let G=$[Y];Y++;while(Y<X){let K=$[Y];if(K==="\\"&&Y+1<X){Y++,Q+=$[Y],Y++;continue}if(K===G){Y++;break}Q+=K,Y++}}else while(Y<X&&!/\s/.test($[Y]))Q+=$[Y],Y++;Z[J]=Q}else Z[J]="true"}return Z}async function BA($,Z,Y,X,J){let Q=$;if(!Z.__importedComponents)Z.__importedComponents=new Map;let G=Z.__importedComponents,K=/@import\s*\(\s*([^)]+)\s*\)/g,W;while((W=K.exec(Q))!==null){let[_,U]=W,B=U.split(",").map((z)=>z.trim().replace(/^['"]|['"]$/g,"")).filter((z)=>z.length>0);for(let z of B){let q=z.split("/"),H=q[q.length-1].replace(/\.stx$/,""),O=H.includes("-")?H.split("-").map((V)=>V.charAt(0).toUpperCase()+V.slice(1)).join(""):H.charAt(0).toUpperCase()+H.slice(1),F=null,L=[t5.resolve(t5.dirname(Y),`${z}.stx`),t5.resolve(t5.dirname(Y),z),t5.resolve(X.componentsDir||"components",`${z}.stx`),t5.resolve(X.componentsDir||"components",z),z.endsWith(".stx")?z:`${z}.stx`];for(let V of L)try{if(await Bun.file(V).exists()){F=V;break}}catch{}if(F){G.set(O,F),G.set(H,F),G.set(H.toLowerCase(),F);let V=O.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();if(G.set(V,F),J.add(F),X.debug)console.log(`Imported component: ${O} -> ${F}`)}else if(X.debug)console.warn(`Could not resolve imported component: ${z}`)}Q=Q.replace(_,""),K.lastIndex=0}return Q}async function zA($,Z,Y,X,J){let Q=$,G=X.componentsDir||"components";if(!Z.__processedComponents)Z.__processedComponents=new Set;let K=Z.__processedComponents,W=/@component\s*\(/g,_;while((_=W.exec(Q))!==null){let U=_.index,B=U+_[0].length-1,z=1,q=B+1;while(q<Q.length&&z>0){if(Q[q]==="(")z++;else if(Q[q]===")"){if(z--,z===0)break}q++}if(z!==0)break;let j=Q.substring(B+1,q),H=q+1,O=j.match(/^\s*['"]([^'"]+)['"]/);if(!O){W.lastIndex=0;continue}let F=O[1],L,V=j.slice(O[0].length),A=V.match(/^\s*,\s*/);if(A)L=V.slice(A[0].length).trim();let N={};if(L)try{N=D0(L,Z)}catch(S){let k=S instanceof Error?S.message:String(S);Q=Q.replace(Q.substring(U,H),`[Error parsing component props: ${k}]`);continue}let w="",M=H,E=Q.substring(H).match(/^([\s\S]*?)@endcomponent/);if(E)w=E[1].trim(),M=H+E[0].length;let I=await D1(F,N,w,G,Z,Y,X,K,J);Q=Q.substring(0,U)+I+Q.substring(M),W.lastIndex=0}return Q}async function qA($,Z,Y,X,J){if(!$)return $;let Q=$,G=X.componentsDir||"components";if(!Z.__processedComponents)Z.__processedComponents=new Set;let K=Z.__processedComponents;return Q=await B(Q,/[a-z][a-z0-9]*-[a-z0-9-]*/,!1),Q=await B(Q,/[A-Z][a-zA-Z0-9]*/,!0),Q=await B(Q,/[a-z][a-z0-9]*/,!1,WA),Q;async function B(z,q,j,H){if(!z)return z;let O=z,F=i_(O,q,H);for(let L=F.length-1;L>=0;L--){let V=F[L],A=j?l_(V.tagName):V.tagName,N=UA(V.attributes),w=_A(N,Z,X),M=k1.getBuiltin(V.tagName);if(M){let S={context:Z,filePath:Y,options:X,dependencies:J},k=M.render(w,V.content,S);if(Object.keys(w.clientReactive).length>0)k=r_(k,w.clientReactive);if(Object.keys(w.events).length>0){let P=Object.entries(w.events).map(([f,b])=>`${f}="${b.replace(/"/g,"&quot;")}"`).join(" ");k=k.replace(/^(\s*<[a-zA-Z][a-zA-Z0-9-]*)/,`$1 ${P}`)}O=O.substring(0,V.startIndex)+k+O.substring(V.endIndex);continue}let T={};for(let[S,k]of Object.entries(w.static))T[S]=k;for(let[S,k]of Object.entries(w.serverDynamic))T[S]=k;let I=await D1(A,T,V.content,G,Z,Y,X,K,J);if(Object.keys(w.clientReactive).length>0)I=r_(I,w.clientReactive);if(Object.keys(w.events).length>0){let S=I.match(/^(\s*<)([a-zA-Z][a-zA-Z0-9-]*)(\s|>|\/)/s);if(S){let k=Object.entries(w.events).map(([f,b])=>`${f}="${b}"`).join(" "),P=S[1].length+S[2].length;I=I.substring(0,P)+" "+k+I.substring(P)}}O=O.substring(0,V.startIndex)+I+O.substring(V.endIndex)}return O}}function r_($,Z){let Y=$.match(/^(\s*<)([a-zA-Z][a-zA-Z0-9-]*)(\s|>|\/)/s);if(!Y)return $;let X=Object.entries(Z).map(([Q,G])=>`:${Q}="${G.replace(/"/g,"&quot;")}"`).join(" "),J=Y[1].length+Y[2].length;return $.substring(0,J)+" "+X+$.substring(J)}async function xJ($,Z,Y,X,J){if(!s_)p_(),s_=!0;let Q=await BA($,Z,Y,X,J);Q=await zA(Q,Z,Y,X,J);for(let G=0;G<3;G++){let K=Q;if(Q=await qA(Q,Z,Y,X,J),Q===K)break}return Q}var s_=!1,WA;var o_=D(()=>{FJ();c_();n_();q0();m0();WA=new Set(["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","link","main","map","mark","menu","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","path","circle","rect","line","polygon","polyline","ellipse","text","tspan","textPath","g","defs","use","symbol","image","clipPath","mask","pattern","marker","linearGradient","radialGradient","stop","filter","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDropShadow","feFlood","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","foreignObject","animate","animateMotion","animateTransform","set","mpath","desc","metadata","switch","view"])});import e5 from"path";function a_($){return $.startsWith("http://")||$.startsWith("https://")||$.startsWith("//")}function t_($,Z,Y){try{let X;if($.startsWith("/")){let J=Z;for(let Q=0;Q<5;Q++){let G=e5.join(J,$);if(W0("fs").existsSync(G))return G;J=e5.dirname(J)}X=e5.join(Z,$)}else if($.startsWith("./")||$.startsWith("../"))X=e5.resolve(Z,$);else X=e5.resolve(Z,$);if(W0("fs").existsSync(X))return X;return null}catch{return null}}async function e_($,Z,Y){let X=$,J=e5.dirname(Z),Q=/<script\b([^>]*)src=["']([^"']+)["']([^>]*)><\/script>/gi,G;while((G=Q.exec(X))!==null){let[_,U,B,z]=G;if(a_(B))continue;let q=t_(B,J,Z);if(q)try{let j=await Bun.file(q).text();if(Y.add(q),B.endsWith(".ts")||B.endsWith(".tsx")){let O=await Bun.build({entrypoints:[q],target:"browser",minify:!1,define:W1()});if(O.outputs.length>0)j=await O.outputs[0].text()}let H=`<script>
8164
8164
  // Source: ${B}
8165
8165
  ${j}
8166
8166
  </script>`;X=X.replace(_,H),Q.lastIndex=0}catch(j){}}let K=/<link\b([^>]*)href=["']([^"']+)["']([^>]*)(?:\/?>)/gi,W;while((W=K.exec(X))!==null){let[_,U,B,z]=W,q=U+z;if(a_(B))continue;if(/rel=["']stylesheet["']/.test(q)||B.endsWith(".css")){let H=t_(B,J,Z);if(H)try{let O=await Bun.file(H).text();Y.add(H);let F=`<style>
8167
8167
  /* Source: ${B} */
8168
8168
  ${O}
8169
- </style>`;X=X.replace(_,F),K.lastIndex=0}catch(O){}}}return X}var $U=D(()=>{h$()});function R8($,Z){let Y=$,X=/@json\s*\(/g,J;while((J=X.exec(Y))!==null){let Q=J.index,G=Q+J[0].length-1,K=1,W=G+1,_=null,U=!1;while(W<Y.length&&K>0){let V=Y[W];if(U){U=!1,W++;continue}if(V==="\\"&&_){U=!0,W++;continue}if(_){if(V===_)_=null;W++;continue}if(V==='"'||V==="'"||V==="`"){_=V,W++;continue}if(V==="(")K++;else if(V===")"){if(K--,K===0)break}W++}if(K!==0)break;let B=Y.substring(G+1,W).trim(),z=Y.substring(Q,W+1),q=-1,j=0,H=null,O=!1;for(let V=0;V<B.length;V++){let A=B[V];if(O){O=!1;continue}if(A==="\\"&&H){O=!0;continue}if(H){if(A===H)H=null;continue}if(A==='"'||A==="'"||A==="`"){H=A;continue}if(A==="("||A==="["||A==="{")j++;else if(A===")"||A==="]"||A==="}")j--;if(A===","&&j===0){q=V;break}}let F=q>=0?B.substring(0,q).trim():B,L=q>=0?B.substring(q+1).trim():void 0;try{let V=F.trim(),A;if(B0(V))A=j0(V,Object.keys(Z))(...Object.values(Z));else A=void 0;let N;if(L==="true")N=JSON.stringify(A,null,2);else N=JSON.stringify(A);let w=N.replace(/</g,"\\u003c").replace(/>/g,"\\u003e").replace(/&/g,"\\u0026").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029");Y=Y.substring(0,Q)+w+Y.substring(W+1),X.lastIndex=Q+w.length}catch(V){c0.log(V instanceof Error?V:Error(String(V)),{directive:"@json"},"error"),X.lastIndex=Q+z.length}}return Y}function M8($){return $.replace(/@once\s*([\s\S]*?)@endonce/g,"$1")}function ZU($){let Z=$,Y=/@memo\s*\(/g,X,J=[];while((X=Y.exec(Z))!==null){let Q=X.index,G=Q+X[0].length,K=1,W=G;while(W<Z.length&&K>0){if(Z[W]==="(")K++;else if(Z[W]===")")K--;W++}if(K!==0)continue;let _=Z.slice(G,W-1).trim(),U=W,B=Z.slice(U),z=B.indexOf("@endmemo");if(z===-1)continue;let q=B.slice(0,z),j=U+z+8,H=q.match(/^(\s*(?:<!--[\s\S]*?-->\s*)*)/),O=H?H[0].length:0,F=q.slice(O),L=q.match(/(\s*)$/),V=L?L[0].length:0,A=F.slice(0,F.length-V),N=A.match(/^<([a-zA-Z][a-zA-Z0-9-]*)(\s[^>]*?)?(\/?)>/),w;if(N){let[M,T,I="",E]=N,S=`<${T}${I} data-stx-memo="${_}"${E}>`;w=q.slice(0,O)+S+A.slice(M.length)+q.slice(O+A.length)}else w=`${q.slice(0,O)}<div data-stx-memo="${_}">${A}</div>${q.slice(O+A.length)}`;J.push({start:Q,end:j,replacement:w}),Y.lastIndex=j}for(let Q=J.length-1;Q>=0;Q--){let G=J[Q];Z=Z.slice(0,G.start)+G.replacement+Z.slice(G.end)}return Z.replace(/@memo="([^"]*)"/g,'data-stx-memo="$1"')}function vJ($){let Z=$.replace(/@ref="([^"]+)"/g,'data-stx-ref="$1"');return Z=Z.replace(/(<[a-zA-Z][a-zA-Z0-9-]*\b[^>]*?)\sref="([^"]+)"/g,'$1 data-stx-ref="$2"'),Z}function YU($){let Y=new RegExp("<(div|span|p|h[1-6]|td|th|li|a|button|label|section|article|header|footer|main|nav|aside|dd|dt|figcaption|summary|caption|blockquote|pre|code|em|strong|small|sub|sup|time|mark|abbr|cite|q|s|u|b|i)\\b","gi"),X="",J=0,Q;while((Q=Y.exec($))!==null){let G=Q.index,K=G+Q[0].length,W=!1,_=!1,U=-1;while(K<$.length){let H=$[K];if(W){if(H==="'")W=!1}else if(_){if(H==='"')_=!1}else if(H==="'")W=!0;else if(H==='"')_=!0;else if(H===">"){U=K;break}K++}if(U===-1)continue;if($.slice(G,U+1).includes("x-cloak"))continue;let z=$.slice(U+1),q=z.indexOf("</"),j=q>=0?z.slice(0,q):z.slice(0,200);if(/\{\{[\s\S]*?\}\}/.test(j))X+=$.slice(J,U)+" x-cloak>",J=U+1}return X+=$.slice(J),X}var fJ=D(()=>{J1();m0()});function T8($,Z,Y){let X=typeof Y==="boolean"?{enabled:Y,failOnViolation:Y}:Y??{enabled:!1},J=X.allowPatterns??[],Q=[];for(let{pattern:G,message:K,suggestion:W}of jA){if(J.some((U)=>K.includes(U)||G.source.includes(U)))continue;G.lastIndex=0;let _=$.match(G);if(_&&_.length>0){let U=$.split(`
8169
+ </style>`;X=X.replace(_,F),K.lastIndex=0}catch(O){}}}return X}var $U=D(()=>{h$()});function R8($,Z){let Y=$,X=/@json\s*\(/g,J;while((J=X.exec(Y))!==null){let Q=J.index,G=Q+J[0].length-1,K=1,W=G+1,_=null,U=!1;while(W<Y.length&&K>0){let V=Y[W];if(U){U=!1,W++;continue}if(V==="\\"&&_){U=!0,W++;continue}if(_){if(V===_)_=null;W++;continue}if(V==='"'||V==="'"||V==="`"){_=V,W++;continue}if(V==="(")K++;else if(V===")"){if(K--,K===0)break}W++}if(K!==0)break;let B=Y.substring(G+1,W).trim(),z=Y.substring(Q,W+1),q=-1,j=0,H=null,O=!1;for(let V=0;V<B.length;V++){let A=B[V];if(O){O=!1;continue}if(A==="\\"&&H){O=!0;continue}if(H){if(A===H)H=null;continue}if(A==='"'||A==="'"||A==="`"){H=A;continue}if(A==="("||A==="["||A==="{")j++;else if(A===")"||A==="]"||A==="}")j--;if(A===","&&j===0){q=V;break}}let F=q>=0?B.substring(0,q).trim():B,L=q>=0?B.substring(q+1).trim():void 0;try{let V=F.trim(),A;if(B0(V))A=j0(V,Object.keys(Z))(...Object.values(Z));else A=void 0;let N;if(L==="true")N=JSON.stringify(A,null,2);else N=JSON.stringify(A);let w=N.replace(/</g,"\\u003c").replace(/>/g,"\\u003e").replace(/&/g,"\\u0026").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029");Y=Y.substring(0,Q)+w+Y.substring(W+1),X.lastIndex=Q+w.length}catch(V){c0.log(V instanceof Error?V:Error(String(V)),{directive:"@json"},"error"),X.lastIndex=Q+z.length}}return Y}function M8($){return $.replace(/@once\s*([\s\S]*?)@endonce/g,"$1")}function ZU($){let Z=$,Y=/@memo\s*\(/g,X,J=[];while((X=Y.exec(Z))!==null){let Q=X.index,G=Q+X[0].length,K=1,W=G;while(W<Z.length&&K>0){if(Z[W]==="(")K++;else if(Z[W]===")")K--;W++}if(K!==0)continue;let _=Z.slice(G,W-1).trim(),U=W,B=Z.slice(U),z=B.indexOf("@endmemo");if(z===-1)continue;let q=B.slice(0,z),j=U+z+8,H=q.match(/^(\s*(?:<!--[\s\S]*?-->\s*)*)/),O=H?H[0].length:0,F=q.slice(O),L=q.match(/(\s*)$/),V=L?L[0].length:0,A=F.slice(0,F.length-V),N=A.match(/^<([a-zA-Z][a-zA-Z0-9-]*)(\s[^>]*?)?(\/?)>/),w;if(N){let[M,T,E="",I]=N,S=`<${T}${E} data-stx-memo="${_}"${I}>`;w=q.slice(0,O)+S+A.slice(M.length)+q.slice(O+A.length)}else w=`${q.slice(0,O)}<div data-stx-memo="${_}">${A}</div>${q.slice(O+A.length)}`;J.push({start:Q,end:j,replacement:w}),Y.lastIndex=j}for(let Q=J.length-1;Q>=0;Q--){let G=J[Q];Z=Z.slice(0,G.start)+G.replacement+Z.slice(G.end)}return Z.replace(/@memo="([^"]*)"/g,'data-stx-memo="$1"')}function vJ($){let Z=$.replace(/@ref="([^"]+)"/g,'data-stx-ref="$1"');return Z=Z.replace(/(<[a-zA-Z][a-zA-Z0-9-]*\b[^>]*?)\sref="([^"]+)"/g,'$1 data-stx-ref="$2"'),Z}function YU($){let Y=new RegExp("<(div|span|p|h[1-6]|td|th|li|a|button|label|section|article|header|footer|main|nav|aside|dd|dt|figcaption|summary|caption|blockquote|pre|code|em|strong|small|sub|sup|time|mark|abbr|cite|q|s|u|b|i)\\b","gi"),X="",J=0,Q;while((Q=Y.exec($))!==null){let G=Q.index,K=G+Q[0].length,W=!1,_=!1,U=-1;while(K<$.length){let H=$[K];if(W){if(H==="'")W=!1}else if(_){if(H==='"')_=!1}else if(H==="'")W=!0;else if(H==='"')_=!0;else if(H===">"){U=K;break}K++}if(U===-1)continue;if($.slice(G,U+1).includes("x-cloak"))continue;let z=$.slice(U+1),q=z.indexOf("</"),j=q>=0?z.slice(0,q):z.slice(0,200);if(/\{\{[\s\S]*?\}\}/.test(j))X+=$.slice(J,U)+" x-cloak>",J=U+1}return X+=$.slice(J),X}var fJ=D(()=>{J1();m0()});function T8($,Z,Y){let X=typeof Y==="boolean"?{enabled:Y,failOnViolation:Y}:Y??{enabled:!1},J=X.allowPatterns??[],Q=[];for(let{pattern:G,message:K,suggestion:W}of jA){if(J.some((U)=>K.includes(U)||G.source.includes(U)))continue;G.lastIndex=0;let _=$.match(G);if(_&&_.length>0){let U=$.split(`
8170
8170
  `),B=[];U.forEach((q,j)=>{if(G.lastIndex=0,G.test(q))B.push(j+1)});let z=B.length>0?` (line${B.length>1?"s":""}: ${B.join(", ")})`:"";Q.push(` \u2717 ${K}${z}
8171
8171
  \u2192 ${W}`)}}if(Q.length>0&&X.enabled){let K=`[STX] DOM API violation in ${Z.split("/").pop()||Z}:
8172
8172
  ${Q.join(`
@@ -9861,7 +9861,7 @@ else {
9861
9861
 
9862
9862
  console.log('[stx] Keep-alive runtime initialized');
9863
9863
  })();
9864
- `}function lU($){if(typeof document<"u")document.addEventListener("stx:activated",(Z)=>{$(Z.detail)})}function iU($){if(typeof document<"u")document.addEventListener("stx:deactivated",(Z)=>{$(Z.detail)})}var hA=0;var sU={};G0(sU,{useVirtualList:()=>dJ,processVirtualListDirectives:()=>D8,processVirtualGridDirectives:()=>mJ,processInfiniteListDirectives:()=>uJ,generateVirtualListCSS:()=>hJ,default:()=>mA,createVirtualList:()=>I8});function I8($,Z){let{itemHeight:Y,containerHeight:X,overscan:J=3,keyProperty:Q="id",dynamicHeight:G=!1,estimatedItemHeight:K=Y,direction:W="vertical"}=Z,_=[...$],U=0,B=new Map;function z(){if(G)return q();let w=Math.max(0,Math.floor(U/Y)-J),M=Math.ceil(X/Y),T=Math.min(_.length-1,w+M+J*2);return{startIndex:w,endIndex:T}}function q(){let w=0,M=0,T=_.length-1;for(let I=0;I<_.length;I++){let E=B.get(I)||K;if(w+E>U){M=Math.max(0,I-J);break}w+=E}w=0;for(let I=0;I<_.length;I++){let E=B.get(I)||K;if(w+=E,w>U+X){T=Math.min(_.length-1,I+J);break}}return{startIndex:M,endIndex:T}}function j(){if(G){let w=0;for(let M=0;M<_.length;M++)w+=B.get(M)||K;return w}return _.length*Y}function H(w){if(G){let M=0;for(let T=0;T<w;T++)M+=B.get(T)||K;return M}return w*Y}function O(){let{startIndex:w,endIndex:M}=z();return{startIndex:w,endIndex:M,scrollTop:U,totalHeight:j(),visibleItems:_.slice(w,M+1),itemHeights:new Map(B)}}function F(w,M="auto"){let T=H(w);L(T,M)}function L(w,M="auto"){U=Math.max(0,Math.min(w,j()-X))}function V(){z()}function A(w){_=[...w],B.clear(),V()}function N(){_=[],B.clear()}return{scrollToIndex:F,scrollToOffset:L,getState:O,refresh:V,setItems:A,destroy:N}}function D8($,Z={},Y){let X=/@virtualList\s*\(\s*([^,]+)\s*(?:,\s*(\{[^}]*\}))?\s*\)\s*([\s\S]*?)@endvirtualList/gi;return $.replace(X,(J,Q,G,K)=>{let W=Q.trim(),_=Z[W];if(!_||!Array.isArray(_))return`<!-- virtualList: items "${W}" not found or not an array -->`;let U={itemHeight:50,containerHeight:400,overscan:3};if(G)try{let L=G.trim(),V=Function(`return ${L}`)();U={...U,...V}}catch{}let B=`vlist-${Math.random().toString(36).substring(2,9)}`,z=Math.ceil(U.containerHeight/U.itemHeight),q=U.overscan||3,j=0,H=Math.min(_.length-1,z+q),O="";for(let L=j;L<=H&&L<_.length;L++){let V=_[L],A=K.replace(/\{\{\s*item\s*\}\}/g,typeof V==="object"?JSON.stringify(V):String(V)).replace(/\{\{\s*item\.(\w+)\s*\}\}/g,(N,w)=>{if(typeof V==="object"&&V!==null)return String(V[w]??"");return""}).replace(/\{\{\s*index\s*\}\}/g,String(L));O+=`
9864
+ `}function lU($){if(typeof document<"u")document.addEventListener("stx:activated",(Z)=>{$(Z.detail)})}function iU($){if(typeof document<"u")document.addEventListener("stx:deactivated",(Z)=>{$(Z.detail)})}var hA=0;var sU={};G0(sU,{useVirtualList:()=>dJ,processVirtualListDirectives:()=>D8,processVirtualGridDirectives:()=>mJ,processInfiniteListDirectives:()=>uJ,generateVirtualListCSS:()=>hJ,default:()=>mA,createVirtualList:()=>I8});function I8($,Z){let{itemHeight:Y,containerHeight:X,overscan:J=3,keyProperty:Q="id",dynamicHeight:G=!1,estimatedItemHeight:K=Y,direction:W="vertical"}=Z,_=[...$],U=0,B=new Map;function z(){if(G)return q();let w=Math.max(0,Math.floor(U/Y)-J),M=Math.ceil(X/Y),T=Math.min(_.length-1,w+M+J*2);return{startIndex:w,endIndex:T}}function q(){let w=0,M=0,T=_.length-1;for(let E=0;E<_.length;E++){let I=B.get(E)||K;if(w+I>U){M=Math.max(0,E-J);break}w+=I}w=0;for(let E=0;E<_.length;E++){let I=B.get(E)||K;if(w+=I,w>U+X){T=Math.min(_.length-1,E+J);break}}return{startIndex:M,endIndex:T}}function j(){if(G){let w=0;for(let M=0;M<_.length;M++)w+=B.get(M)||K;return w}return _.length*Y}function H(w){if(G){let M=0;for(let T=0;T<w;T++)M+=B.get(T)||K;return M}return w*Y}function O(){let{startIndex:w,endIndex:M}=z();return{startIndex:w,endIndex:M,scrollTop:U,totalHeight:j(),visibleItems:_.slice(w,M+1),itemHeights:new Map(B)}}function F(w,M="auto"){let T=H(w);L(T,M)}function L(w,M="auto"){U=Math.max(0,Math.min(w,j()-X))}function V(){z()}function A(w){_=[...w],B.clear(),V()}function N(){_=[],B.clear()}return{scrollToIndex:F,scrollToOffset:L,getState:O,refresh:V,setItems:A,destroy:N}}function D8($,Z={},Y){let X=/@virtualList\s*\(\s*([^,]+)\s*(?:,\s*(\{[^}]*\}))?\s*\)\s*([\s\S]*?)@endvirtualList/gi;return $.replace(X,(J,Q,G,K)=>{let W=Q.trim(),_=Z[W];if(!_||!Array.isArray(_))return`<!-- virtualList: items "${W}" not found or not an array -->`;let U={itemHeight:50,containerHeight:400,overscan:3};if(G)try{let L=G.trim(),V=Function(`return ${L}`)();U={...U,...V}}catch{}let B=`vlist-${Math.random().toString(36).substring(2,9)}`,z=Math.ceil(U.containerHeight/U.itemHeight),q=U.overscan||3,j=0,H=Math.min(_.length-1,z+q),O="";for(let L=j;L<=H&&L<_.length;L++){let V=_[L],A=K.replace(/\{\{\s*item\s*\}\}/g,typeof V==="object"?JSON.stringify(V):String(V)).replace(/\{\{\s*item\.(\w+)\s*\}\}/g,(N,w)=>{if(typeof V==="object"&&V!==null)return String(V[w]??"");return""}).replace(/\{\{\s*index\s*\}\}/g,String(L));O+=`
9865
9865
  <div class="virtual-item ${U.itemClass||""}"
9866
9866
  style="position: absolute; top: ${L*U.itemHeight}px; height: ${U.itemHeight}px; width: 100%;"
9867
9867
  data-index="${L}">
@@ -10004,11 +10004,11 @@ else {
10004
10004
  ${W}
10005
10005
  </div>
10006
10006
  </div>
10007
- `})}function mJ($,Z={},Y){let X=/@virtualGrid\s*\(\s*([^,]+)\s*(?:,\s*(\{[^}]*\}))?\s*\)\s*([\s\S]*?)@endvirtualGrid/gi;return $.replace(X,(J,Q,G,K)=>{let W=Q.trim(),_=Z[W];if(!_||!Array.isArray(_))return`<!-- virtualGrid: items "${W}" not found or not an array -->`;let U={columns:3,rowHeight:100,containerHeight:400,gap:10,overscan:2};if(G)try{let V=Function(`return ${G.trim()}`)();U={...U,...V}}catch{}let B=`vgrid-${Math.random().toString(36).substring(2,9)}`,z=Math.ceil(_.length/U.columns),q=z*(U.rowHeight+(U.gap||0)),j=Math.ceil(U.containerHeight/(U.rowHeight+(U.gap||0))),H=U.overscan||2,O=0,F=Math.min(z-1,j+H),L="";for(let V=O;V<=F;V++)for(let A=0;A<U.columns;A++){let N=V*U.columns+A;if(N>=_.length)break;let w=_[N],M=A*(100/U.columns),T=V*(U.rowHeight+(U.gap||0)),I=K.replace(/\{\{\s*item\s*\}\}/g,typeof w==="object"?JSON.stringify(w):String(w)).replace(/\{\{\s*item\.(\w+)\s*\}\}/g,(E,S)=>{if(typeof w==="object"&&w!==null)return String(w[S]??"");return""}).replace(/\{\{\s*index\s*\}\}/g,String(N));L+=`
10007
+ `})}function mJ($,Z={},Y){let X=/@virtualGrid\s*\(\s*([^,]+)\s*(?:,\s*(\{[^}]*\}))?\s*\)\s*([\s\S]*?)@endvirtualGrid/gi;return $.replace(X,(J,Q,G,K)=>{let W=Q.trim(),_=Z[W];if(!_||!Array.isArray(_))return`<!-- virtualGrid: items "${W}" not found or not an array -->`;let U={columns:3,rowHeight:100,containerHeight:400,gap:10,overscan:2};if(G)try{let V=Function(`return ${G.trim()}`)();U={...U,...V}}catch{}let B=`vgrid-${Math.random().toString(36).substring(2,9)}`,z=Math.ceil(_.length/U.columns),q=z*(U.rowHeight+(U.gap||0)),j=Math.ceil(U.containerHeight/(U.rowHeight+(U.gap||0))),H=U.overscan||2,O=0,F=Math.min(z-1,j+H),L="";for(let V=O;V<=F;V++)for(let A=0;A<U.columns;A++){let N=V*U.columns+A;if(N>=_.length)break;let w=_[N],M=A*(100/U.columns),T=V*(U.rowHeight+(U.gap||0)),E=K.replace(/\{\{\s*item\s*\}\}/g,typeof w==="object"?JSON.stringify(w):String(w)).replace(/\{\{\s*item\.(\w+)\s*\}\}/g,(I,S)=>{if(typeof w==="object"&&w!==null)return String(w[S]??"");return""}).replace(/\{\{\s*index\s*\}\}/g,String(N));L+=`
10008
10008
  <div class="virtual-grid-item"
10009
10009
  style="position: absolute; top: ${T}px; left: ${M}%; width: calc(${100/U.columns}% - ${U.gap||0}px); height: ${U.rowHeight}px;"
10010
10010
  data-index="${N}">
10011
- ${I}
10011
+ ${E}
10012
10012
  </div>`}return`
10013
10013
  <div id="${B}"
10014
10014
  class="virtual-grid-container"
@@ -10833,14 +10833,14 @@ if ('serviceWorker' in navigator) {
10833
10833
  <meta name="stx-layout" content="${q}">`)}let z=G.match(/function (__stx_setup_\d+_\d+)\(/);if(z&&G.includes("<body")&&!G.match(/<body[^>]*data-stx=/)){G=G.replace(/<body([^>]*)>/,`<body$1 data-stx="${z[1]}">`);let q=new RegExp(`(<(?!body)[a-zA-Z][^>]*) data-stx="${z[1]}"`,"i");G=G.replace(q,"$1")}}if(Q)try{let{getStoreScript:K}=await Promise.resolve().then(() => (JU(),XU)),W=X.storesDir,_=await K(W);if(_){let U=`<script data-stx-stores>${_}</script>`,B=G.indexOf("<script data-stx-scoped>");if(B!==-1){let z=G.indexOf("</script>",B+24);if(z!==-1){let q=z+9;G=G.slice(0,q)+`
10834
10834
  `+U+G.slice(q)}}}}catch{}if(Q&&Z.__stx_inject_css!==!1)G=await V0(G);return G=G.replace(/\x00STX_ESCAPED_AT\x00/g,"@"),G})}catch(G){if(G instanceof $4)throw G;let K=G instanceof Error?G.message:String(G),W=new L1(`Template processing failed: ${K}`,Y,void 0,void 0,$.substring(0,200)+($.length>200?"...":""));if(c0.log(W,{filePath:Y,context:Z}),x5.logDetailedError(W,{filePath:Y,template:$.substring(0,500)}),X.debug)throw W;return q3.createFallbackContent("Template Processing",W)}}async function Ww($,Z,Y,X,J){let Q=process.cwd(),G={...X,partialsDir:X.partialsDir&&!Y1.isAbsolute(X.partialsDir)?Y1.resolve(Q,X.partialsDir):X.partialsDir,componentsDir:X.componentsDir&&!Y1.isAbsolute(X.componentsDir)?Y1.resolve(Q,X.componentsDir):X.componentsDir,layoutsDir:X.layoutsDir&&!Y1.isAbsolute(X.layoutsDir)?Y1.resolve(Q,X.layoutsDir):X.layoutsDir},K=G,W=$;W=W.replace(/\{\{--[\s\S]*?--\}\}/g,"");let _="\x00STX_ESCAPED_AT\x00";W=W.replace(/@@/g,_),W=W.replace(/@\{\{([\s\S]*?)\}\}/g,(H,O)=>{return`{{ ${O} }}`}),W=JJ(W),W=await e_(W,Y,J);let U={};W=t3(W,U);let B={...Z.__sections||{}},z="",q=/@nolayout\b/.test(W);if(q)W=W.replace(/@nolayout\b\s*/g,"");let j=W.match(/@(?:layout|extends)\(\s*['"]([^'"]+)['"]\s*\)/);if(j)z=j[1],W=W.replace(/@(?:layout|extends)\(\s*['"]([^'"]+)['"]\s*\)/g,"");if(!z&&!q&&K.defaultLayout){let H=/<!DOCTYPE\s/i.test(W),O=/@section\s*\(/.test(W);if(!H||O){let F="",L=Y1.dirname(Y),V=K.layoutsDir?Y1.dirname(K.layoutsDir):process.cwd();for(let A=0;A<20;A++){let N=Y1.join(L,"_layout.stx");if(await a(N)){F=N;break}let w=Y1.dirname(L);if(w===L||w.length<V.length)break;L=w}if(F)z=F;else if(K.layoutsDir){let A=Y1.isAbsolute(K.layoutsDir)?K.layoutsDir:Y1.resolve(process.cwd(),K.layoutsDir),N=Y1.join(A,`${K.defaultLayout}.stx`);if(await a(N))z=N}if(z&&!O)W=`@section('content')
10835
10835
  ${W.trim()}
10836
- @endsection`}}if(W=W.replace(/@section\(\s*['"]([^'"]+)['"]\s*,\s*['"]([^'"]+)['"]\s*\)/g,(H,O,F)=>{return B[O]=F,""}),W=W.replace(/@section\(\s*['"]([^'"]+)['"]\s*\)([\s\S]*?)(?:@endsection|@show)/g,(H,O,F)=>{if(F.includes("@parent"))B[O]=F.replace("@parent",r$);else B[O]=F.trim();return""}),Z.__sections=B,W=W.replace(/@(?:yield|slot)\(\s*['"]([^'"]+)['"](?:,\s*['"]([^'"]+)['"])?\)/g,(H,O,F)=>{return B[O]||F||""}),!("slot"in Z)||Z.slot===void 0)W=W.replace(/\{\{\s*slot\s*\}\}/g,()=>{return B.content||""});if(W=e3(W,U),z)try{let H=Y1.isAbsolute(z)?z:await M1(()=>Y4(z,Y,G,J),null,()=>{throw new L1(`Failed to resolve layout path: ${z}`,Y,void 0,void 0,`Layout referenced from ${Y}`)});if(!H){let N=`Layout not found: ${z} (referenced from ${Y})`;if(c0.log(Error(N),{layoutPath:z,filePath:Y},"warning"),G.debug)throw new L1(N,Y);return W}let O=await M1(()=>Bun.file(H).text(),"",()=>{throw new L1(`Failed to read layout file: ${H}`,Y,void 0,void 0,"Layout content could not be loaded")}),F=O.match(/@(?:layout|extends)\(\s*['"]([^'"]+)['"]\s*\)/);if(F){if(G.debug)console.log(`Found nested layout: ${F[1]} in ${H}`);let N={},w=O.replace(/@section\(\s*['"]([^'"]+)['"]\s*\)([\s\S]*?)(?:@show|@endsection)/g,(I,E,S)=>{return N[E]=S.trim(),""});for(let[I,E]of Object.entries(N))if(B[I]&&B[I].includes(r$)){let S=B[I].indexOf(r$);B[I]=B[I].slice(0,S)+E+B[I].slice(S+r$.length)}else if(!B[I])B[I]=E;let M={...Z,__sections:B},T=`@layout('${F[1]}')${w}`;return await Y0(T,M,H,G,J)}let L=O.replace(/\{\{--[\s\S]*?--\}\}/g,""),V=t3(L,U),A={};return V=V.replace(/@section\(\s*['"]([^'"]+)['"]\s*\)([\s\S]*?)(?:@show|@endsection)/g,(N,w,M)=>{return A[w]=M.trim(),`@slot('${w}')`}),V=V.replace(/@(?:yield|slot)\(\s*['"]([^'"]+)['"]\s*(?:,\s*['"]([^'"]+)['"]\s*)?\)/g,(N,w,M)=>{if(B[w]){let T=B[w];if(T.includes(r$)){let I=A[w]||"",E=T.indexOf(r$);T=T.slice(0,E)+I+T.slice(E+r$.length)}return T}return M||""}),V=V.replace(/\{\{\s*slot\s*\}\}/g,()=>{return B.content||""}),V=e3(V,U),Z.__originalFilePath=Y,W=await NB(V,Z,H,G,J),W=`<!-- stx-layout: ${z} -->
10837
- ${W}`,W}catch(H){return c0.log(H instanceof Error?H:Error(String(H)),{layoutPath:z,filePath:Y},"error"),`[Error processing layout: ${H instanceof Error?H.message:String(H)}]`}return await NB(W,Z,Y,G,J)}async function NB($,Z,Y,X,J){let Q=$;Z.__stx_sfc_mode=!0;let G=X;if(await M1(()=>K_(Y,Z),void 0,(h)=>{c0.log(h,{filePath:Y,phase:"view-composer"},"warning"),console.warn(`[stx] view composer failed for ${Y}: ${h.message}`)}),Z.__stx_options=G,G.buildMode)Z.__stx_buildMode=G.buildMode;let K=G.envPrefix||"STX_PUBLIC_",W={};for(let[h,n]of Object.entries(process.env))if(h.startsWith(K)&&n!==void 0)W[h]=n;Z.$env=W,Q=await M1(()=>$J(Q,Z,Y,G),Q,(h)=>{c0.log(h,{filePath:Y,phase:"pre-processing-middleware"},"warning"),console.warn(`[stx] pre-processing middleware failed for ${Y}: ${h.message}`)});let _=/<script\b([^>]*)>([\s\S]*?)<\/script>/gi,U;while((U=_.exec(Q))!==null){let h=U[1],n=U[2];if(/\bserver\b/.test(h)&&n.trim())try{let{extractVariables:s}=await Promise.resolve().then(() => (A$(),l3));await s(n,Z,Y)}catch(s){let $0=s instanceof Error?s:Error(String(s));c0.log($0,{filePath:Y,phase:"server-script-extraction"},"warning"),console.warn(`[stx] server <script> extraction failed in ${Y}: ${$0.message}`)}}try{let{interpolateScriptsInTemplate:h}=await Promise.resolve().then(() => (f0(),x7));Q=h(Q,Z,{skipServer:!0})}catch(h){let n=h instanceof Error?h:Error(String(h));c0.log(n,{filePath:Y,phase:"script-expression-interpolation"},"warning"),console.warn(`[stx] script expression interpolation failed in ${Y}: ${n.message}`)}if(Q=await $_(Q,Z,Y),Q=await Z_(Q,Z,Y),Q=await gX(Q,Z,Y,G),P7(Q))Q=qJ(Q),Q=jJ(Q,Z);Q=r3(Q,Z,Y,G),Q=await xJ(Q,Z,Y,G,J),Q=await GJ(Q,Z,Y,G,J),Q=lZ(Q,Z,Y,G);let{processDeferDirectives:B}=await Promise.resolve().then(() => KU);Q=B(Q,Z,Y);let{processTeleportDirectives:z}=await Promise.resolve().then(() => BU);Q=z(Q,Z,Y);let{processTransitionDirectives:q,processTransitionAttributes:j}=await Promise.resolve().then(() => AU);Q=q(Q,Z,Y),Q=j(Q);let{processErrorBoundaryDirectives:H}=await Promise.resolve().then(() => RU);Q=H(Q,Z,Y);let{processSuspenseDirectives:O}=await Promise.resolve().then(() => kU);Q=O(Q,Z,Y);let{processAsyncDirectives:F}=await Promise.resolve().then(() => gU);Q=F(Q,Z,Y);let{processKeepAliveDirectives:L}=await Promise.resolve().then(() => nU);Q=L(Q,Z,Y);let{processVirtualListDirectives:V,processVirtualGridDirectives:A,processInfiniteListDirectives:N}=await Promise.resolve().then(() => (pJ(),sU));Q=V(Q,Z,Y),Q=A(Q,Z,Y),Q=N(Q,Z,Y);let{processPartialHydrationDirectives:w,processStaticDirectives:M}=await Promise.resolve().then(() => (X2(),rU));Q=w(Q,Z,Y),Q=M(Q);let{processComputedDirectives:T,processWatchDirectives:I}=await Promise.resolve().then(() => (KB(),GB));Q=T(Q,Z,Y),Q=I(Q,Z,Y);let{processFormValidationDirectives:E}=await Promise.resolve().then(() => (zB(),BB));Q=E(Q,Z,Y);let{processHeadDirective:S,processTitleDirective:k,processMetaDirective:b,resetHead:P}=await Promise.resolve().then(() => (V$(),f3));if(!Z.__stx_head_preset&&!Z.__stx_runtime_head)P();let x=S(Q);if(Q=x.content,Q=k(Q,Z),Q=b(Q,Z),Q=Q_(Q),Q=DX(Q,Z),Q=zW(Q),Q=J_(Q),Q=await a3(Q,Z,Y,G,J),Q=await xJ(Q,Z,Y,G,J),Q=vJ(Q),Q=p$(Q,Z,Y),Q=kX(Q,Z),Q=SX(Q,Z),Q=c5(Q,Z),Q=d3(Q,Z),Q=u3(Q,Z),Q=await RX(Q,Z,Y,G),Q=await aZ(Q,Z,Y),Q=await lX(Q,Z,Y,G),Q=pZ(Q,Z,Y,G),Q=eY(Q,Z,Y,G),Q=$X(Q,Z,Y),Q=ZX(Q,Z,Y,G),Q=xX(Q,Z,Y,G),Q=R8(Q,Z),Q=M8(Q),Q=ZU(Q),!G.skipEventDirectives)Q=NX(Q,Z,Y);if(Q=sK(Q,Z,Y),G.debug){let h=/\bx-data\s*=/.test(Q),n=F8($);if(h&&n)console.warn(`[stx] ${Y}: Template mixes Alpine-style (x-data) and signals (state/derived/effect) reactivity.
10836
+ @endsection`}}if(W=W.replace(/@section\(\s*['"]([^'"]+)['"]\s*,\s*['"]([^'"]+)['"]\s*\)/g,(H,O,F)=>{return B[O]=F,""}),W=W.replace(/@section\(\s*['"]([^'"]+)['"]\s*\)([\s\S]*?)(?:@endsection|@show)/g,(H,O,F)=>{if(F.includes("@parent"))B[O]=F.replace("@parent",r$);else B[O]=F.trim();return""}),Z.__sections=B,W=W.replace(/@(?:yield|slot)\(\s*['"]([^'"]+)['"](?:,\s*['"]([^'"]+)['"])?\)/g,(H,O,F)=>{return B[O]||F||""}),!("slot"in Z)||Z.slot===void 0)W=W.replace(/\{\{\s*slot\s*\}\}/g,()=>{return B.content||""});if(W=e3(W,U),z)try{let H=Y1.isAbsolute(z)?z:await M1(()=>Y4(z,Y,G,J),null,()=>{throw new L1(`Failed to resolve layout path: ${z}`,Y,void 0,void 0,`Layout referenced from ${Y}`)});if(!H){let N=`Layout not found: ${z} (referenced from ${Y})`;if(c0.log(Error(N),{layoutPath:z,filePath:Y},"warning"),G.debug)throw new L1(N,Y);return W}let O=await M1(()=>Bun.file(H).text(),"",()=>{throw new L1(`Failed to read layout file: ${H}`,Y,void 0,void 0,"Layout content could not be loaded")}),F=O.match(/@(?:layout|extends)\(\s*['"]([^'"]+)['"]\s*\)/);if(F){if(G.debug)console.log(`Found nested layout: ${F[1]} in ${H}`);let N={},w=O.replace(/@section\(\s*['"]([^'"]+)['"]\s*\)([\s\S]*?)(?:@show|@endsection)/g,(E,I,S)=>{return N[I]=S.trim(),""});for(let[E,I]of Object.entries(N))if(B[E]&&B[E].includes(r$)){let S=B[E].indexOf(r$);B[E]=B[E].slice(0,S)+I+B[E].slice(S+r$.length)}else if(!B[E])B[E]=I;let M={...Z,__sections:B},T=`@layout('${F[1]}')${w}`;return await Y0(T,M,H,G,J)}let L=O.replace(/\{\{--[\s\S]*?--\}\}/g,""),V=t3(L,U),A={};return V=V.replace(/@section\(\s*['"]([^'"]+)['"]\s*\)([\s\S]*?)(?:@show|@endsection)/g,(N,w,M)=>{return A[w]=M.trim(),`@slot('${w}')`}),V=V.replace(/@(?:yield|slot)\(\s*['"]([^'"]+)['"]\s*(?:,\s*['"]([^'"]+)['"]\s*)?\)/g,(N,w,M)=>{if(B[w]){let T=B[w];if(T.includes(r$)){let E=A[w]||"",I=T.indexOf(r$);T=T.slice(0,I)+E+T.slice(I+r$.length)}return T}return M||""}),V=V.replace(/\{\{\s*slot\s*\}\}/g,()=>{return B.content||""}),V=e3(V,U),Z.__originalFilePath=Y,W=await NB(V,Z,H,G,J),W=`<!-- stx-layout: ${z} -->
10837
+ ${W}`,W}catch(H){return c0.log(H instanceof Error?H:Error(String(H)),{layoutPath:z,filePath:Y},"error"),`[Error processing layout: ${H instanceof Error?H.message:String(H)}]`}return await NB(W,Z,Y,G,J)}async function NB($,Z,Y,X,J){let Q=$;Z.__stx_sfc_mode=!0;let G=X;if(await M1(()=>K_(Y,Z),void 0,(h)=>{c0.log(h,{filePath:Y,phase:"view-composer"},"warning"),console.warn(`[stx] view composer failed for ${Y}: ${h.message}`)}),Z.__stx_options=G,G.buildMode)Z.__stx_buildMode=G.buildMode;let K=G.envPrefix||"STX_PUBLIC_",W={};for(let[h,n]of Object.entries(process.env))if(h.startsWith(K)&&n!==void 0)W[h]=n;Z.$env=W,Q=await M1(()=>$J(Q,Z,Y,G),Q,(h)=>{c0.log(h,{filePath:Y,phase:"pre-processing-middleware"},"warning"),console.warn(`[stx] pre-processing middleware failed for ${Y}: ${h.message}`)});let _=/<script\b([^>]*)>([\s\S]*?)<\/script>/gi,U;while((U=_.exec(Q))!==null){let h=U[1],n=U[2];if(/\bserver\b/.test(h)&&n.trim())try{let{extractVariables:s}=await Promise.resolve().then(() => (A$(),l3));await s(n,Z,Y)}catch(s){let $0=s instanceof Error?s:Error(String(s));c0.log($0,{filePath:Y,phase:"server-script-extraction"},"warning"),console.warn(`[stx] server <script> extraction failed in ${Y}: ${$0.message}`)}}try{let{interpolateScriptsInTemplate:h}=await Promise.resolve().then(() => (f0(),x7));Q=h(Q,Z,{skipServer:!0})}catch(h){let n=h instanceof Error?h:Error(String(h));c0.log(n,{filePath:Y,phase:"script-expression-interpolation"},"warning"),console.warn(`[stx] script expression interpolation failed in ${Y}: ${n.message}`)}if(Q=await $_(Q,Z,Y),Q=await Z_(Q,Z,Y),Q=await gX(Q,Z,Y,G),P7(Q))Q=qJ(Q),Q=jJ(Q,Z);Q=r3(Q,Z,Y,G),Q=await xJ(Q,Z,Y,G,J),Q=await GJ(Q,Z,Y,G,J),Q=lZ(Q,Z,Y,G);let{processDeferDirectives:B}=await Promise.resolve().then(() => KU);Q=B(Q,Z,Y);let{processTeleportDirectives:z}=await Promise.resolve().then(() => BU);Q=z(Q,Z,Y);let{processTransitionDirectives:q,processTransitionAttributes:j}=await Promise.resolve().then(() => AU);Q=q(Q,Z,Y),Q=j(Q);let{processErrorBoundaryDirectives:H}=await Promise.resolve().then(() => RU);Q=H(Q,Z,Y);let{processSuspenseDirectives:O}=await Promise.resolve().then(() => kU);Q=O(Q,Z,Y);let{processAsyncDirectives:F}=await Promise.resolve().then(() => gU);Q=F(Q,Z,Y);let{processKeepAliveDirectives:L}=await Promise.resolve().then(() => nU);Q=L(Q,Z,Y);let{processVirtualListDirectives:V,processVirtualGridDirectives:A,processInfiniteListDirectives:N}=await Promise.resolve().then(() => (pJ(),sU));Q=V(Q,Z,Y),Q=A(Q,Z,Y),Q=N(Q,Z,Y);let{processPartialHydrationDirectives:w,processStaticDirectives:M}=await Promise.resolve().then(() => (X2(),rU));Q=w(Q,Z,Y),Q=M(Q);let{processComputedDirectives:T,processWatchDirectives:E}=await Promise.resolve().then(() => (KB(),GB));Q=T(Q,Z,Y),Q=E(Q,Z,Y);let{processFormValidationDirectives:I}=await Promise.resolve().then(() => (zB(),BB));Q=I(Q,Z,Y);let{processHeadDirective:S,processTitleDirective:k,processMetaDirective:P,resetHead:f}=await Promise.resolve().then(() => (V$(),f3));if(!Z.__stx_head_preset&&!Z.__stx_runtime_head)f();let b=S(Q);if(Q=b.content,Q=k(Q,Z),Q=P(Q,Z),Q=Q_(Q),Q=DX(Q,Z),Q=zW(Q),Q=J_(Q),Q=await a3(Q,Z,Y,G,J),Q=await xJ(Q,Z,Y,G,J),Q=vJ(Q),Q=p$(Q,Z,Y),Q=kX(Q,Z),Q=SX(Q,Z),Q=c5(Q,Z),Q=d3(Q,Z),Q=u3(Q,Z),Q=await RX(Q,Z,Y,G),Q=await aZ(Q,Z,Y),Q=await lX(Q,Z,Y,G),Q=pZ(Q,Z,Y,G),Q=eY(Q,Z,Y,G),Q=$X(Q,Z,Y),Q=ZX(Q,Z,Y,G),Q=xX(Q,Z,Y,G),Q=R8(Q,Z),Q=M8(Q),Q=ZU(Q),!G.skipEventDirectives)Q=NX(Q,Z,Y);if(Q=sK(Q,Z,Y),G.debug){let h=/\bx-data\s*=/.test(Q),n=F8($);if(h&&n)console.warn(`[stx] ${Y}: Template mixes Alpine-style (x-data) and signals (state/derived/effect) reactivity.
10838
10838
  Both work on the same page, but they manage separate scopes.
10839
- Prefer signals (state/derived/effect) for new components.`)}Q=$8(Q,Z),Q=await _1(Q,Z,Y),Q=YU(Q),Q=HX(Q);let{processXElementDirectives:C}=await Promise.resolve().then(() => HB);Q=C(Q);let f=Z.__originalFilePath||Y;if(Q=await HJ(Q,G,f),Q=await ZJ(Q,Z,Y,G),G.seo?.enabled)Q=YX(Q,Z,G);let{renderHead:g,getHead:d}=await Promise.resolve().then(() => (V$(),f3)),p=Z.__stx_runtime_head,c=p&&(p.title||p.meta?.length||p.link?.length)?p:d();if(c.title||c.meta?.length||c.link?.length){let h=g(c);if(h){if(Q.includes("</head>"))Q=Q.replace("</head>",`${h}
10839
+ Prefer signals (state/derived/effect) for new components.`)}Q=$8(Q,Z),Q=await _1(Q,Z,Y),Q=YU(Q),Q=HX(Q);let{processXElementDirectives:C}=await Promise.resolve().then(() => HB);Q=C(Q);let x=Z.__originalFilePath||Y;if(Q=await HJ(Q,G,x),Q=await ZJ(Q,Z,Y,G),G.seo?.enabled)Q=YX(Q,Z,G);let{renderHead:g,getHead:d}=await Promise.resolve().then(() => (V$(),f3)),p=Z.__stx_runtime_head,c=p&&(p.title||p.meta?.length||p.link?.length)?p:d();if(c.title||c.meta?.length||c.link?.length){let h=g(c);if(h){if(Q.includes("</head>"))Q=Q.replace("</head>",`${h}
10840
10840
  </head>`);else if(Q.includes("<head>"))Q=Q.replace("<head>",`<head>
10841
- ${h}`)}}if(x.headContent){if(Q.includes("</head>"))Q=Q.replace("</head>",`${x.headContent}
10841
+ ${h}`)}}if(b.headContent){if(Q.includes("</head>"))Q=Q.replace("</head>",`${b.headContent}
10842
10842
  </head>`);else if(Q.includes("<head>"))Q=Q.replace("<head>",`<head>
10843
- ${x.headContent}`)}if(G.csp?.enabled&&G.csp.addMetaTag)Q=PX(Q,G.csp,Z);if(G.analytics?.enabled)Q=FX(Q,G);if(G.heatmap?.enabled)Q=sZ(Q,G);if(G.pwa?.enabled&&G.pwa.autoInject!==!1){let{injectPwaTags:h}=await Promise.resolve().then(() => (VB(),FB));Q=h(Q,G)}let J0=/<script\b(?![^>]*\bserver\b)[^>]*>[\s\S]*?<\/script>/i.test(Q),_0=/\bSTX\.\w+/.test(Q),C0=/window\.STX\s*=/.test(Q);if(J0&&_0&&!C0){let n=`<script data-stx-scoped>
10843
+ ${b.headContent}`)}if(G.csp?.enabled&&G.csp.addMetaTag)Q=PX(Q,G.csp,Z);if(G.analytics?.enabled)Q=FX(Q,G);if(G.heatmap?.enabled)Q=sZ(Q,G);if(G.pwa?.enabled&&G.pwa.autoInject!==!1){let{injectPwaTags:h}=await Promise.resolve().then(() => (VB(),FB));Q=h(Q,G)}let J0=/<script\b(?![^>]*\bserver\b)[^>]*>[\s\S]*?<\/script>/i.test(Q),_0=/\bSTX\.\w+/.test(Q),C0=/window\.STX\s*=/.test(Q);if(J0&&_0&&!C0){let n=`<script data-stx-scoped>
10844
10844
  ${yK()}
10845
10845
  </script>`;if(Q.includes("</head>")){let t=Q.indexOf("</head>"),$0=Q.slice(0,t).indexOf("<script");if($0!==-1){let Q0=Q.slice(0,$0),y0=Q.slice($0);Q=Q0+n+`
10846
10846
  `+y0}else Q=Q.replace("</head>",`${n}
@@ -10851,7 +10851,7 @@ ${n}`);else Q=n+`
10851
10851
  `)J++;return!0}if($[J]==="/"&&$[J+1]==="*"){J+=2;while(J<Q-1&&!($[J]==="*"&&$[J+1]==="/"))J++;return J+=2,!0}return!1},_=()=>{if(X!==0)return;let U=$.slice(J).match(/^(const|let|var)\s*\{([^}]+)\}\s*=/);if(U){let j=U[2].split(",").map((H)=>{let O=H.trim().split(":");return O[O.length-1].trim()});for(let H of j)if(H&&/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(H)&&!Y.has(H))Z.push(H),Y.add(H);return}let B=$.slice(J).match(/^(const|let|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=/);if(B){let j=B[2];if(!Y.has(j))Z.push(j),Y.add(j);return}let z=$.slice(J).match(/^function\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/);if(z){let j=z[1];if(!Y.has(j))Z.push(j),Y.add(j);return}let q=$.slice(J).match(/^async\s+function\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/);if(q){let j=q[1];if(!Y.has(j))Z.push(j),Y.add(j)}};while(J<Q){if(W())continue;if($[J]==="'"||$[J]==='"'){G($[J]);continue}if($[J]==="`"){K();continue}if($[J]==="{"){X++,J++;continue}if($[J]==="}"){X--,J++;continue}if(X===0&&/[a-z]/i.test($[J])&&(J===0||/\s|[;{}()]/.test($[J-1])))_();J++}return Z}async function D1($,Z,Y,X,J,Q,G,K=new Set,W){let{extractVariables:_}=await Promise.resolve().then(() => (A$(),l3)),U=K??new Set;if(U.has($))return`[Circular component reference: ${$}]`;let B=new Set(U);B.add($);try{let z=(v)=>v.split("-").map((u)=>u.charAt(0).toUpperCase()+u.slice(1)).join(""),q=(v)=>v.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),j=$.endsWith(".stx")?$.slice(0,-4):$,H=null,O=J.__importedComponents;if(O){let v=[j,j.toLowerCase(),z(j),q(j)];for(let u of v)if(O.has(u)){H=O.get(u);break}}let F=[];if(!H){let v=[`${j}.stx`,`${z(j)}.stx`,`${q(j)}.stx`],u=[...new Set(v)],i=J.__originalFilePath,m=[];if(i){let t=X0.join(X0.dirname(i),"components");m.push(t)}if(X)m.push(X);let r=X0.join(X0.dirname(Q),"components");if(!m.includes(r))m.push(r);if(G.componentsDir&&G.componentsDir!==X&&!m.includes(G.componentsDir))m.push(G.componentsDir);let h=process.cwd(),n=[X0.resolve(h,"src/components"),X0.resolve(h,"components"),X0.resolve(import.meta.dir,"components")];for(let t of n)if(!m.includes(t))m.push(t);if(j.startsWith("./")||j.startsWith("../"))H=X0.resolve(X0.dirname(Q),`${j}.stx`),F.push(H);else for(let t of m){if(!t)continue;for(let s of u){let $0=X0.join(t,s);if(F.push($0),await a($0)){H=$0;break}}if(H)break;if(!H)try{let s=await import("fs");if(!s.statSync(t,{throwIfNoEntry:!1})?.isDirectory())continue;let Q0=8,y0=[{path:t,depth:0}];while(y0.length>0&&!H){let f1=y0.pop();if(f1.depth>=Q0)continue;let f$;try{f$=s.readdirSync(f1.path,{withFileTypes:!0})}catch{continue}for(let U0 of f$){if(!U0.isDirectory())continue;if(U0.name==="node_modules"||U0.name.startsWith("."))continue;let G5=X0.join(f1.path,U0.name);for(let AQ of u){let HZ=X0.join(G5,AQ);if(F.push(HZ),await a(HZ)){H=HZ;break}}if(H)break;y0.push({path:G5,depth:f1.depth+1})}}}catch{}if(H)break}}if(!H||!await a(H)){let v=F.length>0?`
10852
10852
  Searched paths:
10853
10853
  ${F.map((u)=>` - ${u}`).join(`
10854
- `)}`:"";return`[Error loading component: ENOENT: no such file or directory, open '${$}']${v}`}W.add(H);let L;if(M4.has(H))L=M4.get(H);else try{L=await Bun.file(H).text(),M4.set(H,L)}catch(v){return`[Error loading component: ${v instanceof Error?v.message:String(v)}]`}let V=new Set(["__originalFilePath","__importedComponents"]),A={};for(let[v,u]of Object.entries(J))if(!v.startsWith("__")||V.has(v))A[v]=u;let N={...A,...Z,props:Z,slot:Y,__processedComponents:B,__sections:{}},w=L,M=w.match(/<template\b(?![^>]*\b(?:id|x-for|x-if|@for|@if|:for|:if)\s*=)[^>]*>([\s\S]*?)<\/template>/i);if(M)w=M[1].trim();let T=/<script\b([^>]*)>([\s\S]*?)<\/script>/gi,I=[...L.matchAll(T)],E=[];for(let v of I){let u=v[1]||"",i=v[2]||"",m=u.includes("server");if(Q$(u)&&i.trim())i=G$(i);if(m&&i)try{await _(i,N,H)}catch(h){}if(!m){let h=i.replace(/^\s*const\s*\{[^}]+\}\s*=\s*window\.stx\s*;?\s*\n?/gm,""),n=u.replace(/\s*\bts\b/g,"").replace(/\s*\blang\s*=\s*["']?(ts|typescript)["']?/gi,"");E.push(`<script${n}>${h}</script>`)}}let S=L.match(/<style\b([^>]*)>([\s\S]*?)<\/style>/i),k=S?S[1]:"",b=S?S[2]:"",P="",x=k&&/\bscoped\b/i.test(k);if(S)P=`<style${k}>${b}</style>`;let C=w;if(C=C.replace(/<script\b[^>]*>[\s\S]*?<\/script>/gi,""),S)C=C.replace(/<style\b[^>]*>[\s\S]*?<\/style>/gi,"");if(Y&&C.includes("{{ text || slot }}"))C=C.replace(/\{\{\s*text\s*\|\|\s*slot\s*\}\}/g,()=>Y);let{extractSlotContent:f,applySlots:g}=await Promise.resolve().then(() => (_2(),bB)),{defaultSlot:d,namedSlots:p}=f(Y);C=await g(C,d||Y,p,N);for(let[v,u]of Object.entries(N))if(typeof u==="string"){if(u.includes("<")&&u.includes(">")||u.includes("&lt;")||u.includes("&quot;")){let i=b6(u);N[v]=i}}let c=E.some((v)=>/\b(state|derived|effect)\s*\(/.test(v)),J0={...G,componentsDir:X0.dirname(H),skipSignalsRuntime:!0,skipEventDirectives:c,defaultLayout:void 0};N.__stxProcessingDepth=(J.__stxProcessingDepth||0)+1;let _0=await Y0(C,N,H,J0,W),C0=`stx_${j.replace(/[^a-zA-Z0-9]/g,"_")}_${++Nw}_${Math.random().toString(36).slice(2,8)}`,w0=_0;if(c){let v="";if(Object.keys(Z).length>0)try{v=` data-stx-props="${Aw(JSON.stringify(Z))}"`}catch{}if(w0=`<div data-stx-scope="${C0}"${v}>${_0}</div>`,w0=E.map((i)=>{let m=i.match(/<script([^>]*)>([\s\S]*)<\/script>/i);if(!m)return i;let[,r,h]=m,n=J$(h),t=`
10854
+ `)}`:"";return`[Error loading component: ENOENT: no such file or directory, open '${$}']${v}`}W.add(H);let L;if(M4.has(H))L=M4.get(H);else try{L=await Bun.file(H).text(),M4.set(H,L)}catch(v){return`[Error loading component: ${v instanceof Error?v.message:String(v)}]`}let V=new Set(["__originalFilePath","__importedComponents"]),A={};for(let[v,u]of Object.entries(J))if(!v.startsWith("__")||V.has(v))A[v]=u;let N={...A,...Z,props:Z,slot:Y,__processedComponents:B,__sections:{}},w=L,M=w.match(/<template\b(?![^>]*\b(?:id|x-for|x-if|@for|@if|:for|:if)\s*=)[^>]*>([\s\S]*?)<\/template>/i);if(M)w=M[1].trim();let T=/<script\b([^>]*)>([\s\S]*?)<\/script>/gi,E=[...L.matchAll(T)],I=[];for(let v of E){let u=v[1]||"",i=v[2]||"",m=u.includes("server");if(Q$(u)&&i.trim())i=G$(i);if(m&&i)try{await _(i,N,H)}catch(h){}if(!m){let h=i.replace(/^\s*const\s*\{[^}]+\}\s*=\s*window\.stx\s*;?\s*\n?/gm,""),n=u.replace(/\s*\bts\b/g,"").replace(/\s*\blang\s*=\s*["']?(ts|typescript)["']?/gi,"");I.push(`<script${n}>${h}</script>`)}}let S=L.match(/<style\b([^>]*)>([\s\S]*?)<\/style>/i),k=S?S[1]:"",P=S?S[2]:"",f="",b=k&&/\bscoped\b/i.test(k);if(S)f=`<style${k}>${P}</style>`;let C=w;if(C=C.replace(/<script\b[^>]*>[\s\S]*?<\/script>/gi,""),S)C=C.replace(/<style\b[^>]*>[\s\S]*?<\/style>/gi,"");if(Y&&C.includes("{{ text || slot }}"))C=C.replace(/\{\{\s*text\s*\|\|\s*slot\s*\}\}/g,()=>Y);let{extractSlotContent:x,applySlots:g}=await Promise.resolve().then(() => (_2(),bB)),{defaultSlot:d,namedSlots:p}=x(Y);C=await g(C,d||Y,p,N);for(let[v,u]of Object.entries(N))if(typeof u==="string"){if(u.includes("<")&&u.includes(">")||u.includes("&lt;")||u.includes("&quot;")){let i=b6(u);N[v]=i}}let c=I.some((v)=>/\b(state|derived|effect)\s*\(/.test(v)),J0={...G,componentsDir:X0.dirname(H),skipSignalsRuntime:!0,skipEventDirectives:c,defaultLayout:void 0};N.__stxProcessingDepth=(J.__stxProcessingDepth||0)+1;let _0=await Y0(C,N,H,J0,W),C0=`stx_${j.replace(/[^a-zA-Z0-9]/g,"_")}_${++Nw}_${Math.random().toString(36).slice(2,8)}`,w0=_0;if(c){let v="";if(Object.keys(Z).length>0)try{v=` data-stx-props="${Aw(JSON.stringify(Z))}"`}catch{}if(w0=`<div data-stx-scope="${C0}"${v}>${_0}</div>`,w0=I.map((i)=>{let m=i.match(/<script([^>]*)>([\s\S]*)<\/script>/i);if(!m)return i;let[,r,h]=m,n=J$(h),t=`
10855
10855
  (function() {
10856
10856
  const { state, derived, effect, batch } = window.stx;
10857
10857
  const __scope = window.stx._scopes = window.stx._scopes || {};
@@ -10875,11 +10875,11 @@ catch (e) {}
10875
10875
  Object.assign(__scopeVars, __localVars);
10876
10876
  })();`;return`<script data-stx-scoped${r}>${t}</script>`}).join(`
10877
10877
  `)+`
10878
- `+w0,P)w0+=`
10879
- `+P}else{if(P)w0+=`
10880
- `+P;if(E.length>0){let v=N.__stx_event_bindings||[],u=await Promise.all(E.map(async(i)=>{let m=i.match(/<script\b[^>]*>([\s\S]*?)<\/script>/);if(!m)return i;return await d$(m[1],{eventBindings:v,templateContent:w0,filePath:H,projectRoot:process.cwd()})}));w0+=`
10878
+ `+w0,f)w0+=`
10879
+ `+f}else{if(f)w0+=`
10880
+ `+f;if(I.length>0){let v=N.__stx_event_bindings||[],u=await Promise.all(I.map(async(i)=>{let m=i.match(/<script\b[^>]*>([\s\S]*?)<\/script>/);if(!m)return i;return await d$(m[1],{eventBindings:v,templateContent:w0,filePath:H,projectRoot:process.cwd()})}));w0+=`
10881
10881
  `+u.join(`
10882
- `),N.__stx_event_bindings=[]}}if(x){let v=z4(w0,H);if(v.hasScoped)w0=v.html}return w0}catch(z){return`[Error processing component: ${z instanceof Error?z.message:String(z)}]`}finally{U.delete($)}}async function a($){return Bun.file($).exists()}function U2($,Z){let Y=X0.resolve(Z),X=X0.resolve($),J=Y.endsWith(X0.sep)?Y:Y+X0.sep;if(X===Y||X.startsWith(J))return X;return null}async function Y4($,Z,Y,X){let J=await Rw($,Z,Y,X);if(J===null)return null;let Q=U2(J,process.cwd());if(Q)return Q;let G=[Y.root,Y.layoutsDir,Y.componentsDir,Y.partialsDir,Y.pagesDir].filter((K)=>typeof K==="string"&&K.length>0);for(let K of G){let W=X0.isAbsolute(K)?K:X0.resolve(process.cwd(),K);if(U2(J,W))return X0.resolve(J)}return console.warn(`[stx] rejected resolved template path that escapes project root: ${J} (template: ${$}, from: ${Z})`),null}async function Rw($,Z,Y,X){if(Y.debug)console.log(`Resolving template path: ${$} from ${Z}`);let J=X0.dirname(Z),Q=process.cwd();if($.startsWith("/")){let z=X0.join(Q,$),q=U2(z,Q);if(!q)return console.warn(`[stx] rejected template path that escapes project root: ${$} (from ${Z})`),null;if(Y.debug)console.log(`Checking absolute path: ${q}`);if(await a(q)&&X)X.add(q);return q}let G=X0.join(J,$);if(await a(G)){if(Y.debug)console.log(`Found direct path: ${G}`);if(X)X.add(G);return G}if(!$.endsWith(".stx")&&!$.endsWith(".jsx")&&!$.endsWith(".tsx"))for(let z of[".stx",".tsx",".jsx"]){let q=`${G}${z}`;if(await a(q)){if(Y.debug)console.log(`Found direct path with extension: ${q}`);if(X)X.add(q);return q}}let K="",W=X0.resolve(J),_=process.cwd();for(let z=0;z<10;z++){let q=X0.join(W,"layouts"),j=!1;try{j=Vw.statSync(q,{throwIfNoEntry:!1})?.isDirectory()??!1}catch{}if(j){K=q;break}let H=X0.dirname(W);if(H===W||H.length<_.length)break;W=H}if(K){let z=$.startsWith("layouts/")?$.slice(8):$,q=X0.join(K,z);if(await a(q)){if(Y.debug)console.log(`Found in current layouts dir: ${q}`);if(X)X.add(q);return q}if(!z.endsWith(".stx")){let j=`${q}.stx`;if(await a(j)){if(Y.debug)console.log(`Found in current layouts dir with extension: ${j}`);if(X)X.add(j);return j}}}if(Y.layoutsDir){let z=X0.isAbsolute(Y.layoutsDir)?Y.layoutsDir:X0.resolve(process.cwd(),Y.layoutsDir),q=$.startsWith("layouts/")?$.slice(8):$,j=X0.join(z,q);if(await a(j)){if(Y.debug)console.log(`Found in options.layoutsDir: ${j}`);if(X)X.add(j);return j}if(!$.endsWith(".stx")){let H=`${j}.stx`;if(await a(H)){if(Y.debug)console.log(`Found in options.layoutsDir with extension: ${H}`);if(X)X.add(H);return H}}}if($.startsWith("layouts/")||$.includes("/layouts/")){let z=$.split("layouts/"),q=X0.join(Y.partialsDir||J,"layouts",z[1]);if(await a(q)){if(Y.debug)console.log(`Found in layouts path: ${q}`);if(X)X.add(q);return q}if(!q.endsWith(".stx")){let j=`${q}.stx`;if(await a(j)){if(Y.debug)console.log(`Found in layouts path with extension: ${j}`);if(X)X.add(j);return j}}}if(Y.partialsDir){if(K=X0.join(Y.partialsDir,"layouts"),await a(K)){let z=X0.join(K,$);if(await a(z)){if(Y.debug)console.log(`Found in partials layouts dir: ${z}`);if(X)X.add(z);return z}if(!$.endsWith(".stx")){let q=`${z}.stx`;if(await a(q)){if(Y.debug)console.log(`Found in partials layouts dir with extension: ${q}`);if(X)X.add(q);return q}}}}let U=Y.partialsDir||X0.join(process.cwd(),"views"),B=X0.join(U,$);if(await a(B)){if(Y.debug)console.log(`Found in views path: ${B}`);if(X)X.add(B);return B}if(!$.endsWith(".stx")){let z=`${B}.stx`;if(await a(z)){if(Y.debug)console.log(`Found in views path with extension: ${z}`);if(X)X.add(z);return z}}if(J.includes("temp")){let z=X0.join(X0.dirname(J),"layouts",$);if(await a(z)){if(Y.debug)console.log(`Found in temp layouts dir: ${z}`);if(X)X.add(z);return z}if(!$.endsWith(".stx")){let q=`${z}.stx`;if(await a(q)){if(Y.debug)console.log(`Found in temp layouts dir with extension: ${q}`);if(X)X.add(q);return q}}}if(Y.debug)console.warn(`Template not found after trying all paths: ${$} (referenced from ${Z})`);else console.warn(`Template not found: ${$} (referenced from ${Z})`);return null}function B2($,Z,Y){let X=0,J="",Q="";try{if(typeof Z==="number"&&Z>=0){let G=$.split(`
10882
+ `),N.__stx_event_bindings=[]}}if(b){let v=z4(w0,H);if(v.hasScoped)w0=v.html}return w0}catch(z){return`[Error processing component: ${z instanceof Error?z.message:String(z)}]`}finally{U.delete($)}}async function a($){return Bun.file($).exists()}function U2($,Z){let Y=X0.resolve(Z),X=X0.resolve($),J=Y.endsWith(X0.sep)?Y:Y+X0.sep;if(X===Y||X.startsWith(J))return X;return null}async function Y4($,Z,Y,X){let J=await Rw($,Z,Y,X);if(J===null)return null;let Q=U2(J,process.cwd());if(Q)return Q;let G=[Y.root,Y.layoutsDir,Y.componentsDir,Y.partialsDir,Y.pagesDir].filter((K)=>typeof K==="string"&&K.length>0);for(let K of G){let W=X0.isAbsolute(K)?K:X0.resolve(process.cwd(),K);if(U2(J,W))return X0.resolve(J)}return console.warn(`[stx] rejected resolved template path that escapes project root: ${J} (template: ${$}, from: ${Z})`),null}async function Rw($,Z,Y,X){if(Y.debug)console.log(`Resolving template path: ${$} from ${Z}`);let J=X0.dirname(Z),Q=process.cwd();if($.startsWith("/")){let z=X0.join(Q,$),q=U2(z,Q);if(!q)return console.warn(`[stx] rejected template path that escapes project root: ${$} (from ${Z})`),null;if(Y.debug)console.log(`Checking absolute path: ${q}`);if(await a(q)&&X)X.add(q);return q}let G=X0.join(J,$);if(await a(G)){if(Y.debug)console.log(`Found direct path: ${G}`);if(X)X.add(G);return G}if(!$.endsWith(".stx")&&!$.endsWith(".jsx")&&!$.endsWith(".tsx"))for(let z of[".stx",".tsx",".jsx"]){let q=`${G}${z}`;if(await a(q)){if(Y.debug)console.log(`Found direct path with extension: ${q}`);if(X)X.add(q);return q}}let K="",W=X0.resolve(J),_=process.cwd();for(let z=0;z<10;z++){let q=X0.join(W,"layouts"),j=!1;try{j=Vw.statSync(q,{throwIfNoEntry:!1})?.isDirectory()??!1}catch{}if(j){K=q;break}let H=X0.dirname(W);if(H===W||H.length<_.length)break;W=H}if(K){let z=$.startsWith("layouts/")?$.slice(8):$,q=X0.join(K,z);if(await a(q)){if(Y.debug)console.log(`Found in current layouts dir: ${q}`);if(X)X.add(q);return q}if(!z.endsWith(".stx")){let j=`${q}.stx`;if(await a(j)){if(Y.debug)console.log(`Found in current layouts dir with extension: ${j}`);if(X)X.add(j);return j}}}if(Y.layoutsDir){let z=X0.isAbsolute(Y.layoutsDir)?Y.layoutsDir:X0.resolve(process.cwd(),Y.layoutsDir),q=$.startsWith("layouts/")?$.slice(8):$,j=X0.join(z,q);if(await a(j)){if(Y.debug)console.log(`Found in options.layoutsDir: ${j}`);if(X)X.add(j);return j}if(!$.endsWith(".stx")){let H=`${j}.stx`;if(await a(H)){if(Y.debug)console.log(`Found in options.layoutsDir with extension: ${H}`);if(X)X.add(H);return H}}}if($.startsWith("layouts/")||$.includes("/layouts/")){let z=$.split("layouts/"),q=X0.join(Y.partialsDir||J,"layouts",z[1]);if(await a(q)){if(Y.debug)console.log(`Found in layouts path: ${q}`);if(X)X.add(q);return q}if(!q.endsWith(".stx")){let j=`${q}.stx`;if(await a(j)){if(Y.debug)console.log(`Found in layouts path with extension: ${j}`);if(X)X.add(j);return j}}}if(Y.partialsDir){if(K=X0.join(Y.partialsDir,"layouts"),await a(K)){let z=X0.join(K,$);if(await a(z)){if(Y.debug)console.log(`Found in partials layouts dir: ${z}`);if(X)X.add(z);return z}if(!$.endsWith(".stx")){let q=`${z}.stx`;if(await a(q)){if(Y.debug)console.log(`Found in partials layouts dir with extension: ${q}`);if(X)X.add(q);return q}}}}let U=Y.partialsDir||X0.join(process.cwd(),"views"),B=X0.join(U,$);if(await a(B)){if(Y.debug)console.log(`Found in views path: ${B}`);if(X)X.add(B);return B}if(!$.endsWith(".stx")){let z=`${B}.stx`;if(await a(z)){if(Y.debug)console.log(`Found in views path with extension: ${z}`);if(X)X.add(z);return z}}if(J.includes("temp")){let z=X0.join(X0.dirname(J),"layouts",$);if(await a(z)){if(Y.debug)console.log(`Found in temp layouts dir: ${z}`);if(X)X.add(z);return z}if(!$.endsWith(".stx")){let q=`${z}.stx`;if(await a(q)){if(Y.debug)console.log(`Found in temp layouts dir with extension: ${q}`);if(X)X.add(q);return q}}}if(Y.debug)console.warn(`Template not found after trying all paths: ${$} (referenced from ${Z})`);else console.warn(`Template not found: ${$} (referenced from ${Z})`);return null}function B2($,Z,Y){let X=0,J="",Q="";try{if(typeof Z==="number"&&Z>=0){let G=$.split(`
10883
10883
  `),K=0;for(let W=0;W<G.length;W++)if(K+=G[W].length+1,K>=Z){X=W+1,J=G[W].trim();let _=Math.max(0,W-2),U=Math.min(G.length,W+3);Q=G.slice(_,U).map((B,z)=>{let q=_+z+1;return`${q===X?"> ":" "}${q}: ${B}`}).join(`
10884
10884
  `);break}}else if(Y){let G=$.indexOf(Y);if(G>=0)return B2($,G)}}catch{}return{lineNumber:X,lineContent:J,context:Q}}function z0($,Z,Y,X,J,Q){let{lineNumber:G,context:K}=B2(X,J,Q),W=Y.split("/").pop(),_=0;if(typeof J==="number"&&J>=0&&X){let B=X.lastIndexOf(`
10885
10885
  `,Math.max(0,J-1));_=J-(B+1)+1}let U="";if(G>0)U+=`
@@ -11138,10 +11138,10 @@ ${$.map((X)=>{let J=new URL(X.loc,Z).href,Q=` <url>
11138
11138
  ${Y.join(`
11139
11139
  `)}
11140
11140
  </channel>
11141
- </rss>`}async function oB($={}){let Z=Date.now(),Y=await k0(),X={pagesDir:$.pagesDir||"pages",outputDir:$.outputDir||"dist",baseUrl:$.baseUrl||"/",domain:$.domain||"http://localhost",revalidate:$.revalidate??!1,sitemap:$.sitemap??!0,rss:$.rss??!1,concurrency:$.concurrency||10,cache:$.cache??!0,cacheDir:$.cacheDir||".stx/ssg-cache",contentLoaders:$.contentLoaders||[],hooks:$.hooks||{},minify:$.minify??!1,generate404:$.generate404??!0,publicDir:$.publicDir||"public",trailingSlash:$.trailingSlash??!1,cleanOutput:$.cleanOutput??!0},J={totalPages:0,successCount:0,failedCount:0,cachedCount:0,buildTime:0,pages:[],errors:[]};await X.hooks.onBuildStart?.();try{if(X.cleanOutput&&v0.existsSync(X.outputDir))await v0.promises.rm(X.outputDir,{recursive:!0});await v0.promises.mkdir(X.outputDir,{recursive:!0});let Q=new nB(X.cacheDir);if(X.cache)await Q.load();try{let{preloadIconCollection:j}=await Promise.resolve().then(() => (w8(),m_));await j("lucide")}catch{}try{let{generateCrosswindCSS:j}=await Promise.resolve().then(() => (E1(),M3));await j('<div class="bg-black"></div>')}catch{}T4();let G=Y?.routeMiddleware?.dir||"middleware";await k4(process.cwd(),G);let K=D4();if(K.length>0)console.log(`Loaded ${K.length} middleware: ${K.join(", ")}`);let W=Y?.routeMiddleware?.global||[],_=r1(".",{pagesDir:X.pagesDir});console.log(`Found ${_.length} routes`);let U=[];for(let j of _){let H=await RR(j);for(let O of H)U.push({route:j,url:O.url,params:O.params,props:O.props,revalidate:O.revalidate??X.revalidate})}J.totalPages=U.length,console.log(`Generating ${J.totalPages} pages...`);let B=[],z=[];for(let j=0;j<U.length;j+=X.concurrency)z.push(U.slice(j,j+X.concurrency));for(let j of z)await Promise.all(j.map(async(H)=>{let{route:O,url:F,params:L,props:V,revalidate:A}=H;try{await X.hooks.onPageStart?.(F);let N=await Bun.file(O.filePath).text(),w=SR(N),M=w?.middleware?Array.isArray(w.middleware)?w.middleware:[w.middleware]:[],T=[...W,...M];if(T.length>0){let P=I4(F,L,w||{}),x=E4(P,null),C=await S4(T,x);if(C.redirect){let f=typeof C.redirect==="string"?C.redirect:C.redirect.path||C.redirect,g=bR(String(f),F),d=CR(F,X);await v0.promises.mkdir(O0.dirname(d),{recursive:!0}),await Bun.write(d,g),J.successCount++,J.pages.push({route:F,outputPath:d,size:Buffer.byteLength(g),cached:!1}),B.push({loc:F,lastmod:new Date().toISOString()}),console.log(` \u21B3 ${F} \u2192 redirect to ${f}`);return}if(C.abort){let f=typeof C.abort==="string"?C.abort:C.abort?.error?.message||"aborted";console.warn(` \u21B3 ${F} \u2014 middleware aborted: ${f}`);return}}let I=N.match(/definePageMeta\s*\(\s*\{[\s\S]*?validate\s*:\s*((?:\([^)]*\)|[^,}])*(?:\{[\s\S]*?\})?)/m);if(I)try{if(!await Function("route",`
11142
- const validate = ${I[1]};
11141
+ </rss>`}async function oB($={}){let Z=Date.now(),Y=await k0(),X={pagesDir:$.pagesDir||"pages",outputDir:$.outputDir||"dist",baseUrl:$.baseUrl||"/",domain:$.domain||"http://localhost",revalidate:$.revalidate??!1,sitemap:$.sitemap??!0,rss:$.rss??!1,concurrency:$.concurrency||10,cache:$.cache??!0,cacheDir:$.cacheDir||".stx/ssg-cache",contentLoaders:$.contentLoaders||[],hooks:$.hooks||{},minify:$.minify??!1,generate404:$.generate404??!0,publicDir:$.publicDir||"public",trailingSlash:$.trailingSlash??!1,cleanOutput:$.cleanOutput??!0},J={totalPages:0,successCount:0,failedCount:0,cachedCount:0,buildTime:0,pages:[],errors:[]};await X.hooks.onBuildStart?.();try{if(X.cleanOutput&&v0.existsSync(X.outputDir))await v0.promises.rm(X.outputDir,{recursive:!0});await v0.promises.mkdir(X.outputDir,{recursive:!0});let Q=new nB(X.cacheDir);if(X.cache)await Q.load();try{let{preloadIconCollection:j}=await Promise.resolve().then(() => (w8(),m_));await j("lucide")}catch{}try{let{generateCrosswindCSS:j}=await Promise.resolve().then(() => (E1(),M3));await j('<div class="bg-black"></div>')}catch{}T4();let G=Y?.routeMiddleware?.dir||"middleware";await k4(process.cwd(),G);let K=D4();if(K.length>0)console.log(`Loaded ${K.length} middleware: ${K.join(", ")}`);let W=Y?.routeMiddleware?.global||[],_=r1(".",{pagesDir:X.pagesDir});console.log(`Found ${_.length} routes`);let U=[];for(let j of _){let H=await RR(j);for(let O of H)U.push({route:j,url:O.url,params:O.params,props:O.props,revalidate:O.revalidate??X.revalidate})}J.totalPages=U.length,console.log(`Generating ${J.totalPages} pages...`);let B=[],z=[];for(let j=0;j<U.length;j+=X.concurrency)z.push(U.slice(j,j+X.concurrency));for(let j of z)await Promise.all(j.map(async(H)=>{let{route:O,url:F,params:L,props:V,revalidate:A}=H;try{await X.hooks.onPageStart?.(F);let N=await Bun.file(O.filePath).text(),w=SR(N),M=w?.middleware?Array.isArray(w.middleware)?w.middleware:[w.middleware]:[],T=[...W,...M];if(T.length>0){let f=I4(F,L,w||{}),b=E4(f,null),C=await S4(T,b);if(C.redirect){let x=typeof C.redirect==="string"?C.redirect:C.redirect.path||C.redirect,g=bR(String(x),F),d=CR(F,X);await v0.promises.mkdir(O0.dirname(d),{recursive:!0}),await Bun.write(d,g),J.successCount++,J.pages.push({route:F,outputPath:d,size:Buffer.byteLength(g),cached:!1}),B.push({loc:F,lastmod:new Date().toISOString()}),console.log(` \u21B3 ${F} \u2192 redirect to ${x}`);return}if(C.abort){let x=typeof C.abort==="string"?C.abort:C.abort?.error?.message||"aborted";console.warn(` \u21B3 ${F} \u2014 middleware aborted: ${x}`);return}}let E=N.match(/definePageMeta\s*\(\s*\{[\s\S]*?validate\s*:\s*((?:\([^)]*\)|[^,}])*(?:\{[\s\S]*?\})?)/m);if(E)try{if(!await Function("route",`
11142
+ const validate = ${E[1]};
11143
11143
  return validate(route);
11144
- `)({params:L})){console.warn(`Validation failed for ${F}, skipping...`);return}}catch{}let E=null,S=!1;if(X.cache){if(E=Q.get(F,O.filePath,[]),E)S=!0,J.cachedCount++}if(!E){if(E=await rB(O,L,V,X,Y),X.cache)Q.set(F,O.filePath,[],E)}let k;if(X.trailingSlash)k=O0.join(X.outputDir,F,"index.html");else k=F==="/"?O0.join(X.outputDir,"index.html"):O0.join(X.outputDir,`${F}.html`);await v0.promises.mkdir(O0.dirname(k),{recursive:!0}),await Bun.write(k,E),B.push({loc:F,lastmod:new Date().toISOString().split("T")[0],priority:F==="/"?1:0.8});let b={route:F,outputPath:k,size:Buffer.byteLength(E,"utf8"),cached:S};if(A!==!1)b.revalidateAt=Date.now()+A*1000;J.pages.push(b),J.successCount++,await X.hooks.onPageEnd?.(F,E)}catch(N){J.failedCount++,J.errors.push({route:F,error:N}),await X.hooks.onError?.(N,F),console.error(`Error generating ${F}:`,N)}}));if(X.cache)await Q.save();if(X.generate404){let j=O0.join(X.pagesDir,"404.stx");if(await Bun.file(j).exists()){let H=new Set,O={...Y,debug:!1,cache:!1},F=await Y0(await Bun.file(j).text(),{},j,O,H);await Bun.write(O0.join(X.outputDir,"404.html"),F)}else await Bun.write(O0.join(X.outputDir,"404.html"),`<!DOCTYPE html>
11144
+ `)({params:L})){console.warn(`Validation failed for ${F}, skipping...`);return}}catch{}let I=null,S=!1;if(X.cache){if(I=Q.get(F,O.filePath,[]),I)S=!0,J.cachedCount++}if(!I){if(I=await rB(O,L,V,X,Y),X.cache)Q.set(F,O.filePath,[],I)}let k;if(X.trailingSlash)k=O0.join(X.outputDir,F,"index.html");else k=F==="/"?O0.join(X.outputDir,"index.html"):O0.join(X.outputDir,`${F}.html`);await v0.promises.mkdir(O0.dirname(k),{recursive:!0}),await Bun.write(k,I),B.push({loc:F,lastmod:new Date().toISOString().split("T")[0],priority:F==="/"?1:0.8});let P={route:F,outputPath:k,size:Buffer.byteLength(I,"utf8"),cached:S};if(A!==!1)P.revalidateAt=Date.now()+A*1000;J.pages.push(P),J.successCount++,await X.hooks.onPageEnd?.(F,I)}catch(N){J.failedCount++,J.errors.push({route:F,error:N}),await X.hooks.onError?.(N,F),console.error(`Error generating ${F}:`,N)}}));if(X.cache)await Q.save();if(X.generate404){let j=O0.join(X.pagesDir,"404.stx");if(await Bun.file(j).exists()){let H=new Set,O={...Y,debug:!1,cache:!1},F=await Y0(await Bun.file(j).text(),{},j,O,H);await Bun.write(O0.join(X.outputDir,"404.html"),F)}else await Bun.write(O0.join(X.outputDir,"404.html"),`<!DOCTYPE html>
11145
11145
  <html lang="en">
11146
11146
  <head>
11147
11147
  <meta charset="UTF-8">
@@ -11182,7 +11182,7 @@ Build complete!
11182
11182
  <p>Redirecting to <a href="${$}">${$}</a>...</p>
11183
11183
  <script>window.location.replace('${$}')</script>
11184
11184
  </body>
11185
- </html>`}function CR($,Z){if($==="/"||$==="")return O0.join(Z.outputDir,"index.html");let Y=$.replace(/^\/|\/$/g,"");if(Z.trailingSlash)return O0.join(Z.outputDir,Y,"index.html");return O0.join(Z.outputDir,`${Y}.html`)}var yR;var Yz=D(()=>{x4();B1();l0();E1();b8();yR={generateStaticSite:oB,createISRHandler:tB,defineStaticPaths:eB,createMarkdownLoader:$z}});import{createHash as PR}from"crypto";import{getRouterScript as xR}from"stx-router";function V2($){return PR("sha256").update($).digest("hex").slice(0,8)}function N2($=!1){let Z=$?i$():L4(),Y=V2(Z);return{content:Z,filename:`runtime.${Y}.js`,hash:Y}}function A2(){let $=xR(),Z=V2($);return{content:$,filename:`router.${Z}.js`,hash:Z}}function vR($){return{runtimeTag:$.runtime?`<script src="/__stx/${$.runtime.filename}"></script>`:"",routerTag:$.router?`<script src="/__stx/${$.router.filename}"></script>`:"",cssTag:$.css?`<link rel="stylesheet" href="/__stx/${$.css.filename}">`:""}}var w2=D(()=>{F4()});import Xz from"path";import{createHash as fR}from"crypto";function gR($={}){let Z=new Set;return{context:new Proxy($,{get(X,J){if(J in X)return X[J];if(typeof J==="string"&&!J.startsWith("__"))Z.add(J);return},has(X,J){if(J in X)return!0;if(typeof J==="string"&&!J.startsWith("__"))Z.add(J);return!1}}),accessedKeys:Z}}async function R2($,Z,Y={}){let X=Xz.resolve($),J=await Bun.file(X).text(),Q=fR("sha256").update(J).digest("hex").slice(0,16);vZ();let G={};try{G=await k0()}catch{}let K=[],W=/<script\b([^>]*)>([\s\S]*?)<\/script>/gi,_;while((_=W.exec(J))!==null){let O=_[1];if(/\bserver\b/.test(O))K.push(_[2])}let{context:U}=gR({__filename:X,__dirname:Xz.dirname(X)}),B=new Set,z={...e0,...G,...Y,buildMode:"compile",strict:!1},q=await Y0(J,U,X,z,B),j=a$(q),H=fZ();return{route:Z,sourceFile:$,html:q,fragment:j,placeholders:H,hasServerScripts:K.length>0,serverScriptContent:K,dependencies:Array.from(B),contentHash:Q}}var M2=D(()=>{B1();l0();C7();P4()});import T2 from"fs";import Jz from"path";function E2($,Z,Y){return{version:1,buildTime:new Date().toISOString(),routes:$,assets:Z,outputDir:Y}}function I2($,Z){let Y=Jz.join(Z,"manifest.json");T2.writeFileSync(Y,JSON.stringify($,null,2))}function D2($){let Z=Jz.join($,"manifest.json");if(!T2.existsSync(Z))return null;try{let Y=T2.readFileSync(Z,"utf-8"),X=JSON.parse(Y);if(X.version!==1)return console.warn(`[stx] Manifest version mismatch: expected 1, got ${X.version}`),null;return X}catch(Y){return console.warn("[stx] Failed to load manifest:",Y),null}}var x8=()=>{};var Gz={};G0(Gz,{buildForProduction:()=>Qz});import C1 from"fs";import i0 from"path";function dR($,Z){let Y=0,X=0;if(!C1.existsSync($))return{copied:Y,bytes:X};function J(Q,G){let K=C1.readdirSync(Q,{withFileTypes:!0});for(let W of K){if(hR.has(W.name))continue;let _=i0.join(Q,W.name),U=i0.join(G,W.name);if(W.isDirectory())C1.mkdirSync(U,{recursive:!0}),J(_,U);else if(W.isFile()){if(C1.existsSync(U))continue;C1.copyFileSync(_,U),Y++,X+=C1.statSync(U).size}}}return J($,Z),{copied:Y,bytes:X}}async function Qz($={}){let Z=Date.now(),Y=i0.resolve($.root||process.cwd()),X=i0.resolve(Y,$.outputDir||".output");console.log("[stx build] Starting production build...");let J={};try{J=await k0()}catch{}let Q=$.componentsDir??J.componentsDir??"components",G=$.partialsDir??J.partialsDir??"partials",K=$.layoutsDir??J.layoutsDir??"layouts",W=$.publicDir??J.publicDir??"public",_=J.app?.head||{},U=J.router?.container||"main";if(C1.existsSync(X))C1.rmSync(X,{recursive:!0});let B=[i0.join(X,"public","__stx"),i0.join(X,"public","assets"),i0.join(X,"server","pages"),i0.join(X,"server","fragments")];for(let M of B)C1.mkdirSync(M,{recursive:!0});console.log("[stx build] Discovering routes...");let z=r1(Y),q=["components","layouts","partials"],j=z.filter((M)=>{return!q.some((T)=>M.pattern.startsWith(`/${T}/`)||M.pattern===`/${T}`)});console.log(`[stx build] Found ${j.length} page routes (${z.length-j.length} non-page files excluded)`),console.log("[stx build] Generating shared assets...");let H=N2($.debug),O=A2();await Bun.write(i0.join(X,"public","__stx",H.filename),H.content),await Bun.write(i0.join(X,"public","__stx",O.filename),O.content),console.log(`[stx build] Runtime: ${H.filename} (${(H.content.length/1024).toFixed(1)}KB)`),console.log(`[stx build] Router: ${O.filename} (${(O.content.length/1024).toFixed(1)}KB)`),console.log("[stx build] Compiling templates...");let F=[],L=[];for(let M of j)try{let T=await R2(M.filePath,M.pattern,{componentsDir:Q,partialsDir:G,layoutsDir:K,debug:$.debug});if(F.push(T),T.html=T.html.replace(/runtime\.__STX_HASH__\.js/g,H.filename).replace(/router\.__STX_HASH__\.js/g,O.filename),T.html=q4(T.html,_,{bodyScripts:[`<script src="/__stx/${O.filename}"></script>`]}),!/<body[^>]*\bdata-stx=/.test(T.html)){let b=T.html.match(/<(?!body\b)[a-zA-Z][a-zA-Z0-9-]*\b[^>]*?\s(data-stx="[^"]+")[^>]*>/);if(b&&b[1]){let P=b[1];T.html=T.html.replace(" "+P,""),T.html=T.html.replace(/<body([^>]*)>/,`<body$1 ${P}>`)}}T.html=T.html.replace(/<style data-crosswind="generated">[\s\S]*?<\/style>\s*/g,""),T.html=await V0(T.html),T.fragment=y4(T.html,U);let E=M.pattern==="/"?"index":M.pattern.slice(1).replace(/\//g,"-").replace(/[[\]]/g,"_"),S=i0.join("server","pages",`${E}.compiled.json`),k=i0.join("server","fragments",`${E}.html`);await Bun.write(i0.join(X,S),JSON.stringify(T,null,2)),await Bun.write(i0.join(X,k),T.fragment),L.push({pattern:M.pattern,compiledPath:S,fragmentPath:k,isDynamic:T.hasServerScripts,hasParams:M.pattern.includes(":")||M.pattern.includes("[")}),console.log(`[stx build] \u2713 ${M.pattern}`)}catch(T){console.error(`[stx build] \u2717 ${M.pattern}:`,T instanceof Error?T.message:T)}let V=i0.resolve(Y,W);if(C1.existsSync(V)){let{copied:M,bytes:T}=dR(V,i0.join(X,"public"));if(M>0)console.log(`[stx build] Copied ${M} public asset${M===1?"":"s"} (${(T/1024).toFixed(1)}KB) from ${W}/`)}let A={runtime:H.filename,router:O.filename},N=E2(L,A,X);I2(N,X);let w=Date.now()-Z;return console.log(`
11185
+ </html>`}function CR($,Z){if($==="/"||$==="")return O0.join(Z.outputDir,"index.html");let Y=$.replace(/^\/|\/$/g,"");if(Z.trailingSlash)return O0.join(Z.outputDir,Y,"index.html");return O0.join(Z.outputDir,`${Y}.html`)}var yR;var Yz=D(()=>{x4();B1();l0();E1();b8();yR={generateStaticSite:oB,createISRHandler:tB,defineStaticPaths:eB,createMarkdownLoader:$z}});import{createHash as PR}from"crypto";import{getRouterScript as xR}from"stx-router";function V2($){return PR("sha256").update($).digest("hex").slice(0,8)}function N2($=!1){let Z=$?i$():L4(),Y=V2(Z);return{content:Z,filename:`runtime.${Y}.js`,hash:Y}}function A2(){let $=xR(),Z=V2($);return{content:$,filename:`router.${Z}.js`,hash:Z}}function vR($){return{runtimeTag:$.runtime?`<script src="/__stx/${$.runtime.filename}"></script>`:"",routerTag:$.router?`<script src="/__stx/${$.router.filename}"></script>`:"",cssTag:$.css?`<link rel="stylesheet" href="/__stx/${$.css.filename}">`:""}}var w2=D(()=>{F4()});import Xz from"path";import{createHash as fR}from"crypto";function gR($={}){let Z=new Set;return{context:new Proxy($,{get(X,J){if(J in X)return X[J];if(typeof J==="string"&&!J.startsWith("__"))Z.add(J);return},has(X,J){if(J in X)return!0;if(typeof J==="string"&&!J.startsWith("__"))Z.add(J);return!1}}),accessedKeys:Z}}async function R2($,Z,Y={}){let X=Xz.resolve($),J=await Bun.file(X).text(),Q=fR("sha256").update(J).digest("hex").slice(0,16);vZ();let G={};try{G=await k0()}catch{}let K=[],W=/<script\b([^>]*)>([\s\S]*?)<\/script>/gi,_;while((_=W.exec(J))!==null){let O=_[1];if(/\bserver\b/.test(O))K.push(_[2])}let{context:U}=gR({__filename:X,__dirname:Xz.dirname(X)}),B=new Set,z={...e0,...G,...Y,buildMode:"compile",strict:!1},q=await Y0(J,U,X,z,B),j=a$(q),H=fZ();return{route:Z,sourceFile:$,html:q,fragment:j,placeholders:H,hasServerScripts:K.length>0,serverScriptContent:K,dependencies:Array.from(B),contentHash:Q}}var M2=D(()=>{B1();l0();C7();P4()});import T2 from"fs";import Jz from"path";function E2($,Z,Y){return{version:1,buildTime:new Date().toISOString(),routes:$,assets:Z,outputDir:Y}}function I2($,Z){let Y=Jz.join(Z,"manifest.json");T2.writeFileSync(Y,JSON.stringify($,null,2))}function D2($){let Z=Jz.join($,"manifest.json");if(!T2.existsSync(Z))return null;try{let Y=T2.readFileSync(Z,"utf-8"),X=JSON.parse(Y);if(X.version!==1)return console.warn(`[stx] Manifest version mismatch: expected 1, got ${X.version}`),null;return X}catch(Y){return console.warn("[stx] Failed to load manifest:",Y),null}}var x8=()=>{};var Gz={};G0(Gz,{buildForProduction:()=>Qz});import C1 from"fs";import i0 from"path";function dR($,Z){let Y=0,X=0;if(!C1.existsSync($))return{copied:Y,bytes:X};function J(Q,G){let K=C1.readdirSync(Q,{withFileTypes:!0});for(let W of K){if(hR.has(W.name))continue;let _=i0.join(Q,W.name),U=i0.join(G,W.name);if(W.isDirectory())C1.mkdirSync(U,{recursive:!0}),J(_,U);else if(W.isFile()){if(C1.existsSync(U))continue;C1.copyFileSync(_,U),Y++,X+=C1.statSync(U).size}}}return J($,Z),{copied:Y,bytes:X}}async function Qz($={}){let Z=Date.now(),Y=i0.resolve($.root||process.cwd()),X=i0.resolve(Y,$.outputDir||".output");console.log("[stx build] Starting production build...");let J={};try{J=await k0()}catch{}let Q=$.componentsDir??J.componentsDir??"components",G=$.partialsDir??J.partialsDir??"partials",K=$.layoutsDir??J.layoutsDir??"layouts",W=$.publicDir??J.publicDir??"public",_=J.app?.head||{},U=J.router?.container||"main";if(C1.existsSync(X))C1.rmSync(X,{recursive:!0});let B=[i0.join(X,"public","__stx"),i0.join(X,"public","assets"),i0.join(X,"server","pages"),i0.join(X,"server","fragments")];for(let M of B)C1.mkdirSync(M,{recursive:!0});console.log("[stx build] Discovering routes...");let z=r1(Y),q=["components","layouts","partials"],j=z.filter((M)=>{return!q.some((T)=>M.pattern.startsWith(`/${T}/`)||M.pattern===`/${T}`)});console.log(`[stx build] Found ${j.length} page routes (${z.length-j.length} non-page files excluded)`),console.log("[stx build] Generating shared assets...");let H=N2($.debug),O=A2();await Bun.write(i0.join(X,"public","__stx",H.filename),H.content),await Bun.write(i0.join(X,"public","__stx",O.filename),O.content),console.log(`[stx build] Runtime: ${H.filename} (${(H.content.length/1024).toFixed(1)}KB)`),console.log(`[stx build] Router: ${O.filename} (${(O.content.length/1024).toFixed(1)}KB)`),console.log("[stx build] Compiling templates...");let F=[],L=[];for(let M of j)try{let T=await R2(M.filePath,M.pattern,{componentsDir:Q,partialsDir:G,layoutsDir:K,debug:$.debug});if(F.push(T),T.html=T.html.replace(/runtime\.__STX_HASH__\.js/g,H.filename).replace(/router\.__STX_HASH__\.js/g,O.filename),T.html=q4(T.html,_,{bodyScripts:[`<script src="/__stx/${O.filename}"></script>`]}),!/<body[^>]*\bdata-stx=/.test(T.html)){let P=T.html.match(/<(?!body\b)[a-zA-Z][a-zA-Z0-9-]*\b[^>]*?\s(data-stx="[^"]+")[^>]*>/);if(P&&P[1]){let f=P[1];T.html=T.html.replace(" "+f,""),T.html=T.html.replace(/<body([^>]*)>/,`<body$1 ${f}>`)}}T.html=T.html.replace(/<style data-crosswind="generated">[\s\S]*?<\/style>\s*/g,""),T.html=await V0(T.html),T.fragment=y4(T.html,U);let I=M.pattern==="/"?"index":M.pattern.slice(1).replace(/\//g,"-").replace(/[[\]]/g,"_"),S=i0.join("server","pages",`${I}.compiled.json`),k=i0.join("server","fragments",`${I}.html`);await Bun.write(i0.join(X,S),JSON.stringify(T,null,2)),await Bun.write(i0.join(X,k),T.fragment),L.push({pattern:M.pattern,compiledPath:S,fragmentPath:k,isDynamic:T.hasServerScripts,hasParams:M.pattern.includes(":")||M.pattern.includes("[")}),console.log(`[stx build] \u2713 ${M.pattern}`)}catch(T){console.error(`[stx build] \u2717 ${M.pattern}:`,T instanceof Error?T.message:T)}let V=i0.resolve(Y,W);if(C1.existsSync(V)){let{copied:M,bytes:T}=dR(V,i0.join(X,"public"));if(M>0)console.log(`[stx build] Copied ${M} public asset${M===1?"":"s"} (${(T/1024).toFixed(1)}KB) from ${W}/`)}let A={runtime:H.filename,router:O.filename},N=E2(L,A,X);I2(N,X);let w=Date.now()-Z;return console.log(`
11186
11186
  [stx build] Done in ${w}ms \u2014 ${F.length} pages compiled`),{pageCount:F.length,assets:A,outputDir:X,duration:w}}var hR;var k2=D(()=>{x4();w2();M2();x8();P4();E1();l0();hR=new Set([".DS_Store","Thumbs.db","desktop.ini",".gitkeep",".gitignore"])});import uR from"path";async function mR($={}){let Z=performance.now(),Y=$.root||process.cwd(),X=await k0(),J=X.ssr?"ssr":"ssg";console.log(`[stx build] Mode: ${J.toUpperCase()}${X.ssr?" (ssr: true in stx.config.ts)":" (default \u2014 ssr is false)"}`);let Q,G;if(J==="ssg"){let{generateStaticSite:W}=await Promise.resolve().then(() => (Yz(),Zz));Q=await W({pagesDir:uR.join(X.root||".",X.pagesDir||X.build?.pagesDir||"pages"),publicDir:X.publicDir||X.build?.publicDir||"public",outputDir:X.build?.outputDir||"dist",generate404:X.build?.generate404??!0,minify:X.build?.minify??!0,cleanOutput:X.build?.cleanOutput??!0,...$.ssg})}else{let{buildForProduction:W}=await Promise.resolve().then(() => (k2(),Gz));G=await W({outputDir:".output",debug:$.debug,...$.ssr})}let K=Math.round(performance.now()-Z);return{mode:J,ssg:Q,ssr:G,duration:K}}var Kz=D(()=>{l0()});import v8 from"path";async function cR($){let Z=performance.now(),Y=await k0(),X=$||Y.root||process.cwd(),J=[Y.build?.pagesDir||Y.pagesDir||"pages",Y.componentsDir||"components",Y.layoutsDir||"layouts",Y.partialsDir||"partials"].map((K)=>v8.resolve(X,K)),Q=[],G=0;for(let K of J){let W=await _z(K);for(let _ of W){G++;let U=await Bun.file(_).text();if(Wz.test(U))Q.push(v8.relative(X,_))}}return{mode:Q.length>0?"ssr":"ssg",serverScriptFiles:Q,totalFilesScanned:G,scanDurationMs:Math.round(performance.now()-Z)}}async function lR($){let Z=await k0(),Y=$||Z.root||process.cwd(),X=v8.resolve(Y,Z.componentsDir||"components"),J=[],Q=await _z(X);for(let G of Q){let K=await Bun.file(G).text(),W=Wz.test(K),_=pR.test(K)||/<script\b(?![^>]*\bserver\b)[^>]*>/i.test(K)&&!W;if(W&&_){let U=v8.relative(Y,G);J.push({file:U,message:`Component "${U}" has both <script server> and <script client>. `+"Components should be server OR client \u2014 compose them via props/slots."})}}return J}async function _z($){let Z=[];try{let Y=new Bun.Glob("**/*.stx");for await(let X of Y.scan({cwd:$,absolute:!0}))Z.push(X)}catch{}return Z}var Wz,pR;var Uz=D(()=>{l0();Wz=/<script\b[^>]*\bserver\b/i,pR=/<script\b[^>]*\bclient\b/i});function S2($){let Z=new Map,Y=/@(\w+)/g,X,J=1,Q=0;while((X=Y.exec($))!==null){let G=X[1],K=$.slice(Q,X.index);J+=(K.match(/\n/g)||[]).length,Q=X.index;let W=X.index-$.lastIndexOf(`
11187
11187
  `,X.index-1);if(zz.includes(G)){let _=Z.get(G);if(_)_.count++,_.locations.push({line:J,column:W});else Z.set(G,{name:G,count:1,locations:[{line:J,column:W}]})}}return Array.from(Z.values())}function qz($,Z=[]){let Y=S2($),X=new Set(Y.map((J)=>J.name));for(let J of Z)X.add(J);for(let J of Array.from(X))if(!J.startsWith("end"))X.add(`end${J}`);return zz.filter((J)=>!X.has(J))}function jz($){let Z=[],Y={conditionals:["if","else","elseif","endif","unless","endunless","switch","case","default","endswitch","isset","endisset"],loops:["for","endfor","foreach","endforeach","forelse","endforelse","while","endwhile","break","continue","empty"],includes:["include","includeIf","includeWhen","includeFirst","once","endonce","extends","section","endsection","yield","parent","push","endpush","prepend","endprepend","stack"],components:["component","endcomponent","slot","endslot","props"],auth:["auth","endauth","guest","endguest","can","endcan","cannot","endcannot","role","endrole","hasRole","endhasRole","hasAnyRole","endhasAnyRole"],forms:["csrf","method","error","enderror","old","input","textarea","select","checkbox","radio","file"],i18n:["translate","lang","choice"],seo:["meta","title","seo","jsonld","canonical","robots","sitemap"]},X=new Set;for(let Q of $)for(let[G,K]of Object.entries(Y))if(K.includes(Q)){X.add(G);break}for(let Q of X)Z.push(`import { process${nR(Q)} } from './${Q}'`);let J=$.filter((Q)=>!Q.startsWith("end")).map((Q)=>` '${Q}': true`).join(`,
11188
11188
  `);return`// Tree-shaken directive bundle
@@ -11706,7 +11706,7 @@ ${O}`}if(j=await E$(j),K.forEach((H)=>X.add(H)),Y.cache&&Y.cachePath){if(await H
11706
11706
  <h1>Something went wrong</h1>
11707
11707
  <p>An internal error occurred. Please try again later.</p>
11708
11708
  </body>
11709
- </html>`,loader:"html"}}})}}});var{serve:WM}=globalThis.Bun;import N1 from"fs";import a0 from"path";async function cz($,Z={}){let Y=Z.port||3000,X=Z.watch!==!1,J=Z.hotReload!==!1&&X,Q=null,G=Z.hmrPort||Y+1,K=a0.resolve($);if(!N1.existsSync(K))return console.error(`${R.red}Error: File not found: ${R.bright}${K}${R.reset}`),!1;if(K.endsWith(".md"))return c8(K,Z);else if(!K.endsWith(".stx"))return console.error(`${R.red}Error: Unsupported file type: ${R.bright}${K}${R.reset}. Only .stx and .md files are supported.`),!1;let W=a0.join(process.cwd(),".stx/output");N1.mkdirSync(W,{recursive:!0}),console.log(`${R.blue}Building ${R.bright}${$}${R.reset}...`);let _=null,U=async()=>{try{let L={name:"public-assets",setup(w){w.onResolve({filter:/^\/(images|fonts|assets|public)\//},(M)=>{return{path:M.path,external:!0}})}},V=await Bun.build({entrypoints:[K],outdir:W,plugins:[L,U7],publicPath:"/",define:{"process.env.NODE_ENV":'"development"'},...Z.stxOptions});if(!V.success)return console.error(`${R.red}Build failed:${R.reset}`,V.logs),!1;let A=V.outputs.find((w)=>w.path.endsWith(".html"));if(!A)return console.error(`${R.red}No HTML output found${R.reset}`),!1;return _=await Bun.file(A.path).text(),!0}catch(L){return console.error(`${R.red}Error building stx file:${R.reset}`,L),!1}};if(!await U())return!1;let z=a0.dirname(K);await u5(z);let q=Y;try{if(q=await S$(Y),q!==Y)console.log(`${R.yellow}Port ${Y} is busy, using port ${q} instead${R.reset}`)}catch{return console.error(`${R.red}Could not find an available port${R.reset}`),!1}if(J){let L=Z.hmrPort||q+1;Q=u4({wsPort:L,verbose:!1}),G=Q.start(L)}let j={},H=null;try{let{loadStxConfig:L}=await Promise.resolve().then(() => (k$(),t$)),V=await L();if(V?.apiRouter)H=V?.apiRouter,console.log(`${R.blue}Using custom router for API handling${R.reset}`);if(V?.apiRoutes){j=V.apiRoutes;let A=Object.keys(j).length;if(A>0)console.log(`${R.blue}Loaded ${R.bright}${A} API route${A>1?"s":""}${R.reset}`)}if(V?.broadcasting?.enabled)try{let{startBroadcasting:A,loadChannels:N}=await Promise.resolve().then(() => (g8(),y2)),w=V.broadcasting;await A(w);let M=w.port??6001;console.log(`${R.magenta}Broadcasting on ${R.cyan}ws://localhost:${M}/ws${R.reset}`);let T=a0.join(process.cwd(),"channels.ts");if(N1.existsSync(T))try{let I=await N(T);console.log(`${R.blue}Loaded ${R.bright}${I} broadcast channel${I!==1?"s":""}${R.blue} from channels.ts${R.reset}`)}catch(I){console.warn(`${R.yellow}Failed to load channels.ts: ${I.message}${R.reset}`)}}catch(A){console.warn(`${R.yellow}Broadcasting failed to start: ${A.message}${R.reset}`)}}catch{}if(console.log(`${R.blue}Starting server on ${R.cyan}http://localhost:${q}/${R.reset}...`),J)console.log(`${R.magenta}Hot reload enabled on ws://localhost:${G}${R.reset}`);let O=WM({port:q,async fetch(L){let V=new URL(L.url);if(H)try{let T=await H.handleRequest(L);if(T.status!==404)return T}catch{}if(j[V.pathname])try{return await j[V.pathname](L)}catch(T){return new Response(JSON.stringify({error:T.message}),{status:500,headers:{"Content-Type":"application/json"}})}if(V.pathname==="/")return(async()=>{let I=await V0(_||"");if(J)I=y1(I,G);if(Z.native)if(I.includes("<head>"))I=I.replace("<head>","<head><style>[data-stx-sidebar],.stx-sidebar{display:none!important}</style><script>window.__craftNativeSidebar=true;document.documentElement.classList.add('has-native-sidebar')</script>");else if(I.includes("<html"))I=I.replace(/(<html[^>]*>)/,"$1<head><style>[data-stx-sidebar],.stx-sidebar{display:none!important}</style><script>window.__craftNativeSidebar=true;document.documentElement.classList.add('has-native-sidebar')</script></head>");else I="<head><style>[data-stx-sidebar],.stx-sidebar{display:none!important}</style><script>window.__craftNativeSidebar=true;document.documentElement.classList.add('has-native-sidebar')</script></head>"+I;return I})().then((I)=>new Response(I,{headers:{"Content-Type":"text/html","Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache",Expires:"0"}}));let A=a0.join(W,V.pathname);if(N1.existsSync(A)&&N1.statSync(A).isFile()){let T=Bun.file(A),I=a0.extname(A).toLowerCase(),E="text/plain";if(I===".ts"||I===".tsx"){let S=new Bun.Transpiler({loader:I===".tsx"?"tsx":"ts"}),k=await T.text(),b=S.transformSync(k);return new Response(b,{headers:{"Content-Type":"application/javascript","Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache",Expires:"0"}})}switch(I){case".html":E="text/html";break;case".css":E="text/css";break;case".js":E="text/javascript";break;case".json":E="application/json";break;case".png":E="image/png";break;case".jpg":case".jpeg":E="image/jpeg";break;case".gif":E="image/gif";break;case".woff":E="font/woff";break;case".woff2":E="font/woff2";break;case".ttf":E="font/ttf";break;case".otf":E="font/otf";break;case".eot":E="application/vnd.ms-fontobject";break}return new Response(T,{headers:{"Content-Type":E}})}let N=a0.dirname(K),w=a0.join(N,V.pathname);if(N1.existsSync(w)&&N1.statSync(w).isFile()){let T=Bun.file(w),I=a0.extname(w).toLowerCase(),E="text/plain";if(I===".ts"||I===".tsx"){let S=new Bun.Transpiler({loader:I===".tsx"?"tsx":"ts"}),k=await T.text(),b=S.transformSync(k);return new Response(b,{headers:{"Content-Type":"application/javascript","Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache",Expires:"0"}})}switch(I){case".html":E="text/html";break;case".css":E="text/css";break;case".js":E="text/javascript";break;case".json":E="application/json";break;case".png":E="image/png";break;case".jpg":case".jpeg":E="image/jpeg";break;case".gif":E="image/gif";break;case".svg":E="image/svg+xml";break;case".ico":E="image/x-icon";break;case".woff":E="font/woff";break;case".woff2":E="font/woff2";break;case".ttf":E="font/ttf";break;case".otf":E="font/otf";break;case".eot":E="application/vnd.ms-fontobject";break}return new Response(T,{headers:{"Content-Type":E}})}let M=a0.join(process.cwd(),"public",V.pathname);if(N1.existsSync(M)&&N1.statSync(M).isFile()){let T=Bun.file(M),I=a0.extname(M).toLowerCase(),E="application/octet-stream";if(I===".ts"||I===".tsx"){let S=new Bun.Transpiler({loader:I===".tsx"?"tsx":"ts"}),k=await T.text(),b=S.transformSync(k);return new Response(b,{headers:{"Content-Type":"application/javascript","Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache",Expires:"0"}})}switch(I){case".html":E="text/html";break;case".css":E="text/css";break;case".js":E="text/javascript";break;case".json":E="application/json";break;case".png":E="image/png";break;case".jpg":case".jpeg":E="image/jpeg";break;case".gif":E="image/gif";break;case".svg":E="image/svg+xml";break;case".ico":E="image/x-icon";break;case".woff":E="font/woff";break;case".woff2":E="font/woff2";break;case".ttf":E="font/ttf";break;case".otf":E="font/otf";break;case".eot":E="application/vnd.ms-fontobject";break}return new Response(T,{headers:{"Content-Type":E}})}return new Response("Not Found",{status:404})},error(L){return new Response(`<pre>${L}
11709
+ </html>`,loader:"html"}}})}}});var{serve:WM}=globalThis.Bun;import N1 from"fs";import a0 from"path";async function cz($,Z={}){let Y=Z.port||3000,X=Z.watch!==!1,J=Z.hotReload!==!1&&X,Q=null,G=Z.hmrPort||Y+1,K=a0.resolve($);if(!N1.existsSync(K))return console.error(`${R.red}Error: File not found: ${R.bright}${K}${R.reset}`),!1;if(K.endsWith(".md"))return c8(K,Z);else if(!K.endsWith(".stx"))return console.error(`${R.red}Error: Unsupported file type: ${R.bright}${K}${R.reset}. Only .stx and .md files are supported.`),!1;let W=a0.join(process.cwd(),".stx/output");N1.mkdirSync(W,{recursive:!0}),console.log(`${R.blue}Building ${R.bright}${$}${R.reset}...`);let _=null,U=async()=>{try{let L={name:"public-assets",setup(w){w.onResolve({filter:/^\/(images|fonts|assets|public)\//},(M)=>{return{path:M.path,external:!0}})}},V=await Bun.build({entrypoints:[K],outdir:W,plugins:[L,U7],publicPath:"/",define:{"process.env.NODE_ENV":'"development"'},...Z.stxOptions});if(!V.success)return console.error(`${R.red}Build failed:${R.reset}`,V.logs),!1;let A=V.outputs.find((w)=>w.path.endsWith(".html"));if(!A)return console.error(`${R.red}No HTML output found${R.reset}`),!1;return _=await Bun.file(A.path).text(),!0}catch(L){return console.error(`${R.red}Error building stx file:${R.reset}`,L),!1}};if(!await U())return!1;let z=a0.dirname(K);await u5(z);let q=Y;try{if(q=await S$(Y),q!==Y)console.log(`${R.yellow}Port ${Y} is busy, using port ${q} instead${R.reset}`)}catch{return console.error(`${R.red}Could not find an available port${R.reset}`),!1}if(J){let L=Z.hmrPort||q+1;Q=u4({wsPort:L,verbose:!1}),G=Q.start(L)}let j={},H=null;try{let{loadStxConfig:L}=await Promise.resolve().then(() => (k$(),t$)),V=await L();if(V?.apiRouter)H=V?.apiRouter,console.log(`${R.blue}Using custom router for API handling${R.reset}`);if(V?.apiRoutes){j=V.apiRoutes;let A=Object.keys(j).length;if(A>0)console.log(`${R.blue}Loaded ${R.bright}${A} API route${A>1?"s":""}${R.reset}`)}if(V?.broadcasting?.enabled)try{let{startBroadcasting:A,loadChannels:N}=await Promise.resolve().then(() => (g8(),y2)),w=V.broadcasting;await A(w);let M=w.port??6001;console.log(`${R.magenta}Broadcasting on ${R.cyan}ws://localhost:${M}/ws${R.reset}`);let T=a0.join(process.cwd(),"channels.ts");if(N1.existsSync(T))try{let E=await N(T);console.log(`${R.blue}Loaded ${R.bright}${E} broadcast channel${E!==1?"s":""}${R.blue} from channels.ts${R.reset}`)}catch(E){console.warn(`${R.yellow}Failed to load channels.ts: ${E.message}${R.reset}`)}}catch(A){console.warn(`${R.yellow}Broadcasting failed to start: ${A.message}${R.reset}`)}}catch{}if(console.log(`${R.blue}Starting server on ${R.cyan}http://localhost:${q}/${R.reset}...`),J)console.log(`${R.magenta}Hot reload enabled on ws://localhost:${G}${R.reset}`);let O=WM({port:q,async fetch(L){let V=new URL(L.url);if(H)try{let T=await H.handleRequest(L);if(T.status!==404)return T}catch{}if(j[V.pathname])try{return await j[V.pathname](L)}catch(T){return new Response(JSON.stringify({error:T.message}),{status:500,headers:{"Content-Type":"application/json"}})}if(V.pathname==="/")return(async()=>{let E=await V0(_||"");if(J)E=y1(E,G);if(Z.native)if(E.includes("<head>"))E=E.replace("<head>","<head><style>[data-stx-sidebar],.stx-sidebar{display:none!important}</style><script>window.__craftNativeSidebar=true;document.documentElement.classList.add('has-native-sidebar')</script>");else if(E.includes("<html"))E=E.replace(/(<html[^>]*>)/,"$1<head><style>[data-stx-sidebar],.stx-sidebar{display:none!important}</style><script>window.__craftNativeSidebar=true;document.documentElement.classList.add('has-native-sidebar')</script></head>");else E="<head><style>[data-stx-sidebar],.stx-sidebar{display:none!important}</style><script>window.__craftNativeSidebar=true;document.documentElement.classList.add('has-native-sidebar')</script></head>"+E;return E})().then((E)=>new Response(E,{headers:{"Content-Type":"text/html","Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache",Expires:"0"}}));let A=a0.join(W,V.pathname);if(N1.existsSync(A)&&N1.statSync(A).isFile()){let T=Bun.file(A),E=a0.extname(A).toLowerCase(),I="text/plain";if(E===".ts"||E===".tsx"){let S=new Bun.Transpiler({loader:E===".tsx"?"tsx":"ts"}),k=await T.text(),P=S.transformSync(k);return new Response(P,{headers:{"Content-Type":"application/javascript","Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache",Expires:"0"}})}switch(E){case".html":I="text/html";break;case".css":I="text/css";break;case".js":I="text/javascript";break;case".json":I="application/json";break;case".png":I="image/png";break;case".jpg":case".jpeg":I="image/jpeg";break;case".gif":I="image/gif";break;case".woff":I="font/woff";break;case".woff2":I="font/woff2";break;case".ttf":I="font/ttf";break;case".otf":I="font/otf";break;case".eot":I="application/vnd.ms-fontobject";break}return new Response(T,{headers:{"Content-Type":I}})}let N=a0.dirname(K),w=a0.join(N,V.pathname);if(N1.existsSync(w)&&N1.statSync(w).isFile()){let T=Bun.file(w),E=a0.extname(w).toLowerCase(),I="text/plain";if(E===".ts"||E===".tsx"){let S=new Bun.Transpiler({loader:E===".tsx"?"tsx":"ts"}),k=await T.text(),P=S.transformSync(k);return new Response(P,{headers:{"Content-Type":"application/javascript","Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache",Expires:"0"}})}switch(E){case".html":I="text/html";break;case".css":I="text/css";break;case".js":I="text/javascript";break;case".json":I="application/json";break;case".png":I="image/png";break;case".jpg":case".jpeg":I="image/jpeg";break;case".gif":I="image/gif";break;case".svg":I="image/svg+xml";break;case".ico":I="image/x-icon";break;case".woff":I="font/woff";break;case".woff2":I="font/woff2";break;case".ttf":I="font/ttf";break;case".otf":I="font/otf";break;case".eot":I="application/vnd.ms-fontobject";break}return new Response(T,{headers:{"Content-Type":I}})}let M=a0.join(process.cwd(),"public",V.pathname);if(N1.existsSync(M)&&N1.statSync(M).isFile()){let T=Bun.file(M),E=a0.extname(M).toLowerCase(),I="application/octet-stream";if(E===".ts"||E===".tsx"){let S=new Bun.Transpiler({loader:E===".tsx"?"tsx":"ts"}),k=await T.text(),P=S.transformSync(k);return new Response(P,{headers:{"Content-Type":"application/javascript","Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache",Expires:"0"}})}switch(E){case".html":I="text/html";break;case".css":I="text/css";break;case".js":I="text/javascript";break;case".json":I="application/json";break;case".png":I="image/png";break;case".jpg":case".jpeg":I="image/jpeg";break;case".gif":I="image/gif";break;case".svg":I="image/svg+xml";break;case".ico":I="image/x-icon";break;case".woff":I="font/woff";break;case".woff2":I="font/woff2";break;case".ttf":I="font/ttf";break;case".otf":I="font/otf";break;case".eot":I="application/vnd.ms-fontobject";break}return new Response(T,{headers:{"Content-Type":I}})}return new Response("Not Found",{status:404})},error(L){return new Response(`<pre>${L}
11710
11710
  ${L.stack}</pre>`,{headers:{"Content-Type":"text/html"}})}});console.clear(),console.log(`
11711
11711
  ${R.blue}stx${R.reset} ${R.green}${process.env.stx_VERSION||"v0.0.10"}${R.reset} ${R.dim}ready in ${Math.random()*10+5|0}.${Math.random()*90+10|0} ms${R.reset}`),console.log(`
11712
11712
  ${R.bright}\u2192 ${R.cyan}http://localhost:${q}/${R.reset}`),console.log(`
@@ -12023,7 +12023,7 @@ else {
12023
12023
  })()
12024
12024
  </script>
12025
12025
  `;var{serve:_M}=globalThis.Bun;import C$ from"fs";import n0 from"path";function h2($){if($.length===0)return"";if($.length===1)return $[0];let Z=$.map((X)=>X.split(n0.sep)),Y=[];for(let X=0;X<Z[0].length;X++){let J=Z[0][X];if(Z.every((Q)=>Q[X]===J))Y.push(J);else break}return Y.join(n0.sep)}async function iz($,Z={}){let Y=Z.port||3000,X=Z.watch!==!1;for(let j of $){let H=n0.resolve(j);if(!C$.existsSync(H))return console.error(`${R.red}Error: File not found: ${R.bright}${H}${R.reset}`),!1;if(!H.endsWith(".stx")&&!H.endsWith(".md"))return console.error(`${R.red}Error: Unsupported file type: ${R.bright}${H}${R.reset}. Only .stx and .md files are supported.`),!1}let J=n0.join(process.cwd(),".stx/output");C$.mkdirSync(J,{recursive:!0});let Q=h2($.map((j)=>n0.dirname(n0.resolve(j))));console.log(`${R.blue}Processing ${R.bright}${$.length}${R.reset} files...`);let G={},K=[],W=async()=>{try{for(let j of $){let H=n0.resolve(j);if(H.endsWith(".md"))try{let{content:F,data:L}=await l1(H,{markdown:{syntaxHighlighting:{serverSide:!0,enabled:!0,defaultTheme:$1.markdown?.syntaxHighlighting?.defaultTheme||"github-dark",highlightUnknownLanguages:!0}}}),V=Z.markdown?.syntaxHighlighting||$1.markdown?.syntaxHighlighting,A=V?.defaultTheme||"github-dark",N=["github-dark"],w=V?.additionalThemes||[],T=[...new Set([...N,...w])].map((k)=>`<option value="${k}"${k===A?" selected":""}>${k}</option>`).join(`
12026
- `),I=`
12026
+ `),E=`
12027
12027
  <!DOCTYPE html>
12028
12028
  <html lang="en">
12029
12029
  <head>
@@ -12185,19 +12185,19 @@ else {
12185
12185
  </script>
12186
12186
  </body>
12187
12187
  </html>
12188
- `,S=`/${n0.relative(Q,H).replace(/\.md$/,"")}`;if(S.endsWith("/index"))S=S.slice(0,-6)||"/";G[S||"/"]={filePath:H,content:I,fileType:"md"}}catch(F){console.error(`${R.red}Error processing Markdown file ${R.bright}${j}${R.reset}:`,F);continue}else{let F={name:"public-assets",setup(M){M.onResolve({filter:/^\/(images|fonts|assets|public)\//},(T)=>{return{path:T.path,external:!0}})}},L=await Bun.build({entrypoints:[H],outdir:J,plugins:[F,U7],define:{"process.env.NODE_ENV":'"development"'},...Z.stxOptions});if(!L.success){console.error(`${R.red}Build failed for ${R.bright}${j}${R.reset}:`,L.logs);continue}let V=L.outputs.find((M)=>M.path.endsWith(".html"));if(!V){console.error(`${R.red}No HTML output found for ${R.bright}${j}${R.reset}`);continue}let A=await Bun.file(V.path).text(),w=`/${n0.relative(Q,H).replace(/\.stx$/,"")}`;if(w.endsWith("/index"))w=w.slice(0,-6)||"/";if(w.includes("[")){let M=[...w.matchAll(/\[([^\]]+)\]/g)].map((I)=>I[1]),T=w.replace(/\[([^\]]+)\]/g,"([^/]+)");K.push({pattern:new RegExp(`^${T}$`),paramNames:M,filePath:H,routeTemplate:w,fileType:"stx"}),G[w]={filePath:H,content:A,fileType:"stx"}}else G[w||"/"]={filePath:H,content:A,fileType:"stx"}}}if(Object.keys(G).length===0)return console.error(`${R.red}No files were successfully processed${R.reset}`),!1;return!0}catch(j){return console.error(`${R.red}Error processing files:${R.reset}`,j),!1}};if(!await W())return!1;let U=Y;try{if(U=await S$(Y),U!==Y)console.log(`${R.yellow}Port ${Y} is busy, using port ${U} instead${R.reset}`)}catch{return console.error(`${R.red}Could not find an available port${R.reset}`),!1}console.log(`${R.blue}Starting server on ${R.cyan}http://localhost:${U}/${R.reset}...`);let B=_M({port:U,async fetch(j){let H=new URL(j.url),O=n0.join(process.cwd(),"public",H.pathname);if(C$.existsSync(O)&&C$.statSync(O).isFile()){let V=Bun.file(O),A=n0.extname(O).toLowerCase(),N="application/octet-stream";if(A===".ts"||A===".tsx"){let w=new Bun.Transpiler({loader:A===".tsx"?"tsx":"ts"}),M=await V.text(),T=w.transformSync(M);return new Response(T,{headers:{"Content-Type":"application/javascript","Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache",Expires:"0"}})}switch(A){case".html":N="text/html";break;case".css":N="text/css";break;case".js":N="text/javascript";break;case".json":N="application/json";break;case".png":N="image/png";break;case".jpg":case".jpeg":N="image/jpeg";break;case".gif":N="image/gif";break;case".svg":N="image/svg+xml";break;case".ico":N="image/x-icon";break;case".woff":N="font/woff";break;case".woff2":N="font/woff2";break;case".ttf":N="font/ttf";break;case".otf":N="font/otf";break;case".eot":N="application/vnd.ms-fontobject";break}return new Response(V,{headers:{"Content-Type":N}})}let F=G[H.pathname];if(!F&&!H.pathname.endsWith("/"))F=G[`${H.pathname}/`];if(!F)for(let V of K){let A=H.pathname.match(V.pattern);if(A){let N=G[V.routeTemplate];if(N){let w={};for(let I=0;I<V.paramNames.length;I++)w[V.paramNames[I]]=decodeURIComponent(A[I+1]);let M=N.content,T=`<script>window.__routeParams = ${JSON.stringify(w)};</script>`;if(M.includes("</head>"))M=M.replace("</head>",`${T}
12188
+ `,S=`/${n0.relative(Q,H).replace(/\.md$/,"")}`;if(S.endsWith("/index"))S=S.slice(0,-6)||"/";G[S||"/"]={filePath:H,content:E,fileType:"md"}}catch(F){console.error(`${R.red}Error processing Markdown file ${R.bright}${j}${R.reset}:`,F);continue}else{let F={name:"public-assets",setup(M){M.onResolve({filter:/^\/(images|fonts|assets|public)\//},(T)=>{return{path:T.path,external:!0}})}},L=await Bun.build({entrypoints:[H],outdir:J,plugins:[F,U7],define:{"process.env.NODE_ENV":'"development"'},...Z.stxOptions});if(!L.success){console.error(`${R.red}Build failed for ${R.bright}${j}${R.reset}:`,L.logs);continue}let V=L.outputs.find((M)=>M.path.endsWith(".html"));if(!V){console.error(`${R.red}No HTML output found for ${R.bright}${j}${R.reset}`);continue}let A=await Bun.file(V.path).text(),w=`/${n0.relative(Q,H).replace(/\.stx$/,"")}`;if(w.endsWith("/index"))w=w.slice(0,-6)||"/";if(w.includes("[")){let M=[...w.matchAll(/\[([^\]]+)\]/g)].map((E)=>E[1]),T=w.replace(/\[([^\]]+)\]/g,"([^/]+)");K.push({pattern:new RegExp(`^${T}$`),paramNames:M,filePath:H,routeTemplate:w,fileType:"stx"}),G[w]={filePath:H,content:A,fileType:"stx"}}else G[w||"/"]={filePath:H,content:A,fileType:"stx"}}}if(Object.keys(G).length===0)return console.error(`${R.red}No files were successfully processed${R.reset}`),!1;return!0}catch(j){return console.error(`${R.red}Error processing files:${R.reset}`,j),!1}};if(!await W())return!1;let U=Y;try{if(U=await S$(Y),U!==Y)console.log(`${R.yellow}Port ${Y} is busy, using port ${U} instead${R.reset}`)}catch{return console.error(`${R.red}Could not find an available port${R.reset}`),!1}console.log(`${R.blue}Starting server on ${R.cyan}http://localhost:${U}/${R.reset}...`);let B=_M({port:U,async fetch(j){let H=new URL(j.url),O=n0.join(process.cwd(),"public",H.pathname);if(C$.existsSync(O)&&C$.statSync(O).isFile()){let V=Bun.file(O),A=n0.extname(O).toLowerCase(),N="application/octet-stream";if(A===".ts"||A===".tsx"){let w=new Bun.Transpiler({loader:A===".tsx"?"tsx":"ts"}),M=await V.text(),T=w.transformSync(M);return new Response(T,{headers:{"Content-Type":"application/javascript","Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache",Expires:"0"}})}switch(A){case".html":N="text/html";break;case".css":N="text/css";break;case".js":N="text/javascript";break;case".json":N="application/json";break;case".png":N="image/png";break;case".jpg":case".jpeg":N="image/jpeg";break;case".gif":N="image/gif";break;case".svg":N="image/svg+xml";break;case".ico":N="image/x-icon";break;case".woff":N="font/woff";break;case".woff2":N="font/woff2";break;case".ttf":N="font/ttf";break;case".otf":N="font/otf";break;case".eot":N="application/vnd.ms-fontobject";break}return new Response(V,{headers:{"Content-Type":N}})}let F=G[H.pathname];if(!F&&!H.pathname.endsWith("/"))F=G[`${H.pathname}/`];if(!F)for(let V of K){let A=H.pathname.match(V.pattern);if(A){let N=G[V.routeTemplate];if(N){let w={};for(let E=0;E<V.paramNames.length;E++)w[V.paramNames[E]]=decodeURIComponent(A[E+1]);let M=N.content,T=`<script>window.__routeParams = ${JSON.stringify(w)};</script>`;if(M.includes("</head>"))M=M.replace("</head>",`${T}
12189
12189
  </head>`);else M=T+M;F={...N,content:M}}break}}if(F)return V0(F.content).then((V)=>{if(V.includes("</head>"))V=V.replace("</head>",`${g2}
12190
12190
  </head>`);return new Response(V,{headers:{"Content-Type":"text/html","Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache",Expires:"0"}})});let L=n0.join(J,H.pathname);if(C$.existsSync(L)&&C$.statSync(L).isFile()){let V=Bun.file(L),A=n0.extname(L).toLowerCase(),N="text/plain";if(A===".ts"||A===".tsx"){let w=new Bun.Transpiler({loader:A===".tsx"?"tsx":"ts"}),M=await V.text(),T=w.transformSync(M);return new Response(T,{headers:{"Content-Type":"application/javascript","Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache",Expires:"0"}})}switch(A){case".html":N="text/html";break;case".css":N="text/css";break;case".js":N="text/javascript";break;case".json":N="application/json";break;case".png":N="image/png";break;case".jpg":case".jpeg":N="image/jpeg";break;case".gif":N="image/gif";break;case".svg":N="image/svg+xml";break;case".ico":N="image/x-icon";break;case".woff":N="font/woff";break;case".woff2":N="font/woff2";break;case".ttf":N="font/ttf";break;case".otf":N="font/otf";break;case".eot":N="application/vnd.ms-fontobject";break}return new Response(V,{headers:{"Content-Type":N}})}if(H.pathname!=="/"&&G["/"]){let V=j.headers.get("X-STX-Router")==="true";return V0(G["/"].content).then((A)=>{if(V){let N=A.match(/<main[^>]*>([\s\S]*?)<\/main>/i);if(N){let w=A.match(/<title[^>]*>([\s\S]*?)<\/title>/i),T=`<!DOCTYPE html><html><head><title>${w?w[1]:""}</title></head><body><main>${N[1]}</main></body></html>`;return new Response(T,{headers:{"Content-Type":"text/html","X-STX-Partial":"true","Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache",Expires:"0"}})}}return new Response(A,{headers:{"Content-Type":"text/html","Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache",Expires:"0"}})})}return new Response("Not Found",{status:404})},error(j){return new Response(`<pre>${j}
12191
12191
  ${j.stack}</pre>`,{headers:{"Content-Type":"text/html"}})}});console.clear(),console.log(`
12192
12192
  ${R.blue}stx${R.reset} ${R.green}${process.env.stx_VERSION||"v0.0.10"}${R.reset} ${R.dim}ready in ${Math.random()*10+5|0}.${Math.random()*90+10|0} ms${R.reset}`),console.log(`
12193
12193
  ${R.bright}\u2192 ${R.cyan}http://localhost:${U}/${R.reset}`),console.log(`
12194
12194
  ${R.yellow}Routes:${R.reset}`);let z=new Set(K.map((j)=>j.routeTemplate)),q=Object.entries(G).filter(([j])=>!z.has(j)).sort(([j],[H])=>j.localeCompare(H)).map(([j,H])=>({route:j==="/"?"/":j,filePath:n0.relative(process.cwd(),H.filePath),fileType:H.fileType}));for(let j of K){let H=j.routeTemplate.replace(/\[([^\]]+)\]/g,":$1");q.push({route:H,filePath:n0.relative(process.cwd(),j.filePath),fileType:"stx"})}if(q.sort((j,H)=>j.route.localeCompare(H.route)),q.forEach((j,H)=>{let F=H===q.length-1?"\u2514\u2500 ":"\u251C\u2500 ",L=j.fileType==="md"?`${R.magenta}(markdown)${R.reset}`:"";console.log(` ${R.green}${F}${j.route}${R.reset} \u2192 ${R.bright}${j.filePath}${R.reset} ${L}`)}),console.log(`
12195
- Press ${R.cyan}h${R.reset} + ${R.cyan}Enter${R.reset} to show shortcuts`),b$(B.url.toString(),()=>{if(X)C$.watch(Q,{recursive:!0}).close();B.stop()}),X){console.log(`${R.blue}Watching for changes...${R.reset}`);let j=C$.watch(Q,{recursive:!0},async(H,O)=>{if(!O)return;if(O.endsWith(".stx")||O.endsWith(".js")||O.endsWith(".ts")||O.endsWith(".md"))console.log(`${R.yellow}File ${R.bright}${O}${R.yellow} changed, rebuilding...${R.reset}`),w$.clear(),D$(),await W()});process.on("SIGINT",()=>{j.close(),B.stop(),process.exit(0)})}return!0}var nz=D(()=>{m5();l0();i5();l8();q0();f4()});var{serve:UM}=globalThis.Bun;import o1 from"fs";import A0 from"path";function d2($){let Z=Bun.file($),Y=A0.extname($).toLowerCase(),X={".html":"text/html",".css":"text/css",".js":"text/javascript",".json":"application/json",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".svg":"image/svg+xml",".ico":"image/x-icon",".woff":"font/woff",".woff2":"font/woff2",".ttf":"font/ttf",".otf":"font/otf",".eot":"application/vnd.ms-fontobject"},Q=[".js",".css",".json"].includes(Y)?{"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache",Expires:"0"}:{};return new Response(Z,{headers:{"Content-Type":X[Y]||"application/octet-stream",...Q}})}async function sz($=".",Z={}){let Y=Z.port||3000,X=Z.watch!==!1,J=Z.hotReload!==!1&&X,Q=null,G=Z.hmrPort||Y+1,K=A0.resolve($),{loadStxConfig:W}=await Promise.resolve().then(() => (k$(),t$)),_=await W(K),U=_.root&&_.root!=="."?A0.join(K,_.root):K,B=_.pagesDir||"pages",z=A0.join(U,B);if(!o1.existsSync(z))return console.error(`${R.red}Error: No '${B}' directory found in ${R.bright}${U}${R.reset}`),console.log(`${R.dim}Create a ${B}/ directory with .stx files to define your routes.${R.reset}`),console.log(`${R.dim}Example: ${B}/index.stx for the homepage.${R.reset}`),!1;let q=r1(U);if(q.length===0)return console.error(`${R.red}Error: No page files found in ${R.bright}${z}${R.reset}`),!1;console.log(`${R.blue}Found ${R.bright}${q.length}${R.blue} routes${R.reset}`);let j=_?._pluginPageDirs||[],H=[];for(let{dir:f,prefix:g}of j)if(o1.existsSync(f)){let d=r1(A0.dirname(f),{pagesDir:A0.basename(f)});for(let p of d){let c=g==="/"?p.pattern:`${g}${p.pattern==="/"?"":p.pattern}`;H.push({route:{...p,pattern:c},prefix:g})}if(d.length>0)console.log(`${R.blue}Plugin pages: ${R.bright}${d.length}${R.blue} routes at ${R.cyan}${g}${R.reset}`)}let O=new Map,F=null,L=null;if(Z.stxOptions?.shell!==!1){if(L=H2(K,Z.stxOptions?.shell),L){if(F=await y8(L,Z.stxOptions||{}),F)console.log(`${R.blue}Using app shell: ${R.bright}${A0.relative(K,L)}${R.reset} ${R.dim}(deprecated: use layouts/default.stx instead)${R.reset}`)}}T4(),await k4(K);let V=D4();if(V.length>0)console.log(`${R.blue}Loaded ${R.bright}${V.length}${R.blue} middleware: ${R.dim}${V.join(", ")}${R.reset}`);let A={},N=null;try{let{loadStxConfig:f}=await Promise.resolve().then(() => (k$(),t$)),g=await f(K);if(g?.apiRouter)N=g?.apiRouter,console.log(`${R.blue}Using custom router for API handling${R.reset}`);if(g?.apiRoutes){A=g.apiRoutes;let d=Object.keys(A).length;if(d>0)console.log(`${R.blue}Loaded ${R.bright}${d} API route${d>1?"s":""}${R.reset}`)}if(g?.broadcasting?.enabled)try{let{startBroadcasting:d,loadChannels:p}=await Promise.resolve().then(() => (g8(),y2)),c=g.broadcasting;await d(c);let J0=c.port??6001;console.log(`${R.magenta}Broadcasting on ${R.cyan}ws://localhost:${J0}/ws${R.reset}`);let _0=A0.join(process.cwd(),"channels.ts");if(o1.existsSync(_0))try{let C0=await p(_0);console.log(`${R.blue}Loaded ${R.bright}${C0} broadcast channel${C0!==1?"s":""}${R.blue} from channels.ts${R.reset}`)}catch(C0){console.warn(`${R.yellow}Failed to load channels.ts: ${C0.message}${R.reset}`)}}catch(d){console.warn(`${R.yellow}Broadcasting failed to start: ${d.message}${R.reset}`)}}catch{}let w=A0.join(K,".stx/output");o1.mkdirSync(w,{recursive:!0});let M=new Map,T=async(f)=>{let g=L2(z,f);if(!g)return null;try{let d=await Bun.build({entrypoints:[g],outdir:w,plugins:[U7],publicPath:"/",define:{"process.env.NODE_ENV":'"development"'},...Z.stxOptions});if(!d.success)return null;let p=d.outputs.find((c)=>c.path.endsWith(".html"));if(!p)return null;return await Bun.file(p.path).text()}catch{return null}},I=async(f,g)=>{try{let{processDirectives:d,extractVariables:p,defaultConfig:c,loadStxConfig:J0,injectRouterScript:_0}=await Promise.resolve().then(() => (k$(),t$)),C0=await J0(K),w0=await Bun.file(f.filePath).text(),{classifyAllScripts:v}=await Promise.resolve().then(() => (k$(),t$)),u=v(w0),i=u.server.map((Q0)=>Q0.content),m=w0;for(let Q0 of u.server)m=m.replace(Q0.fullTag,"");let r={__filename:f.filePath,__dirname:A0.dirname(f.filePath),params:g??{}},{resetHead:h}=await Promise.resolve().then(() => (V$(),f3));h();for(let Q0 of i)try{await p(Q0,r,f.filePath)}catch(y0){if(Z.stxOptions?.debug)console.error("[stx] variable extraction error",f.filePath,y0?.message||y0)}let n=new Set,t=(Q0)=>{if(!Q0)return Q0;if(A0.isAbsolute(Q0))return Q0;return A0.resolve(K,Q0)},s={...c,...C0,...Z.stxOptions,autoShell:!0};if(Z.debugDirectives)s.debug=!0;s.partialsDir=t(s.partialsDir),s.componentsDir=t(s.componentsDir),s.layoutsDir=t(s.layoutsDir),s.storesDir=t(s.storesDir||"stores");let $0;if(Z.profile){let Q0=performance.now();$0=await d(m,r,f.filePath,s,n);let y0=performance.now()-Q0,f1=A0.relative(K,f.filePath)||f.filePath;console.log(`[stx:profile] ${f1} \u2192 ${y0.toFixed(2)}ms`)}else $0=await d(m,r,f.filePath,s,n);if(!F)$0=await _0($0);{let{interpolateScriptExpressions:Q0}=await Promise.resolve().then(() => (f0(),x7));$0=$0.replace(/<script\b([^>]*)>([\s\S]*?)<\/script>/g,(y0,f1,f$)=>{if(!/function\s+__stx_setup_/.test(f$))return y0;return`<script${f1}>${Q0(f$,r)}</script>`})}if(F)$0=a$($0);return{route:f,content:$0}}catch(d){return console.error(`${R.red}Error building ${R.bright}${f.pattern}${R.reset}:`,d),null}},E=async()=>{M.clear(),O.clear();for(let f of q){let g=await I(f);if(g)M.set(f.pattern,g)}for(let{route:f}of H){let g=await I(f);if(g)O.set(f.pattern,g)}return M.size>0};if(console.log(`${R.blue}Building pages...${R.reset}`),!await E())return console.error(`${R.red}No pages were successfully built${R.reset}`),!1;await u5(K);let k=Y;try{if(k=await S$(Y),k!==Y)console.log(`${R.yellow}Port ${Y} is busy, using port ${k} instead${R.reset}`)}catch{return console.error(`${R.red}Could not find an available port${R.reset}`),!1}if(J){let f=Z.hmrPort||k+1;Q=u4({wsPort:f,verbose:!1}),G=Q.start(f)}let b=(f,g)=>{let d=`<script>(function(){var s=typeof stx!=='undefined'?stx:{};s._rp=${JSON.stringify(g)};if(s.setRouteParams)s.setRouteParams(s._rp);})()</script>`;if(f.includes("</head>"))return f.replace("</head>",`${d}</head>`);if(f.includes("<body"))return f.replace(/<body([^>]*)>/,`<body$1>${d}`);return d+f};console.log(`${R.blue}Starting server...${R.reset}`);let P=UM({port:k,async fetch(f){let g=new URL(f.url),d=_?.publicDir||"public",p=A0.join(K,d,g.pathname),c=A0.join(K,g.pathname),J0=A0.join(w,g.pathname),[_0,C0,w0]=await Promise.all([o1.promises.stat(p).catch(()=>null),o1.promises.stat(c).catch(()=>null),o1.promises.stat(J0).catch(()=>null)]);if(_0?.isFile())return d2(p);if(C0?.isFile())return d2(c);if(w0?.isFile())return d2(J0);if(g.pathname.startsWith("/_stx/component/")){let m=decodeURIComponent(g.pathname.slice(16));if(m)try{let r=`<${m} />`,h={...buildConfig,autoShell:!1},n=await processDirectives(r,{},A0.join(K,"components",`${m}.stx`),h,new Set);return new Response(n,{headers:{"Content-Type":"text/html"}})}catch(r){return new Response(`<div class="stx-async-error">${r.message}</div>`,{status:500,headers:{"Content-Type":"text/html"}})}}if(N)try{let m=await N.handleRequest(f);if(m.status!==404)return m}catch{}if(A[g.pathname])try{return await A[g.pathname](f)}catch(m){return new Response(JSON.stringify({error:m.message}),{status:500,headers:{"Content-Type":"application/json"}})}let v=P8(g.pathname,q);if(v){let m=M.get(v.route.pattern);if(v.route.isDynamic&&Object.keys(v.params).length>0){let r=await I(v.route,v.params);if(r)m=r}if(m){let r=v3();if(r.validate){if(!await r.validate({params:v.params})){let t=await T(404);if(t){let s=t;if(s=await V0(s,K),J)s=y1(s,G);return new Response(s,{status:404,headers:{"Content-Type":"text/html"}})}return new Response("Not Found",{status:404})}}if(r.middleware){let n=I4(g.pathname,v.params,r,g.search),t=E4(n,null,f),s=await S4(r.middleware,t);if(s.redirect){let $0=s.redirect.path,Q0=s.redirect.options.redirectCode||302,y0=new Headers(s.responseHeaders);return y0.set("Location",$0),new Response(null,{status:Q0,headers:y0})}if(s.abort){let{statusCode:$0,message:Q0}=s.abort.error;return new Response(`<!DOCTYPE html><html><head><title>Error ${$0}</title></head><body><h1>Error ${$0}</h1><p>${Q0}</p></body></html>`,{status:$0,headers:{"Content-Type":"text/html"}})}if(Object.keys(s.state).length>0){let $0=`<script>(function(){var s=typeof stx!=='undefined'?stx:{};s._ms=${JSON.stringify(s.state)};if(s.setMiddlewareState)s.setMiddlewareState(s._ms);})()</script>`;m.content=m.content.replace("</head>",`${$0}</head>`)}}let h=m.content;if(F&&O2(f)){if(Object.keys(v.params).length>0)h=b(h,v.params);h=await V0(h,K);let n=_?.router?.container||"main";return h=y4(h,n),new Response(h,{headers:{"Content-Type":"text/html","X-STX-Fragment":"true","Cache-Control":"no-store, no-cache, must-revalidate"}})}if(F)h=C4(F,h);if(Object.keys(v.params).length>0)h=b(h,v.params);if(h=await V0(h,K),J)h=y1(h,G);if(Z.native)if(h.includes("<head>"))h=h.replace("<head>","<head><style>[data-stx-sidebar],.stx-sidebar{display:none!important}</style><script>window.__craftNativeSidebar=true;document.documentElement.classList.add('has-native-sidebar')</script>");else h="<head><style>[data-stx-sidebar],.stx-sidebar{display:none!important}</style><script>window.__craftNativeSidebar=true;document.documentElement.classList.add('has-native-sidebar')</script></head>"+h;return new Response(h,{headers:{"Content-Type":"text/html","Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache",Expires:"0"}})}}if(H.length>0){let m=H.map((h)=>h.route),r=P8(g.pathname,m);if(r){let h=O.get(r.route.pattern);if(h){let n=h.content;if(F)n=C4(F,n);if(Object.keys(r.params).length>0)n=b(n,r.params);if(n=await V0(n,K),J)n=y1(n,G);return new Response(n,{headers:{"Content-Type":"text/html","Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache",Expires:"0"}})}}for(let{prefix:h}of j)if(h!=="/"&&g.pathname.startsWith(h)){let n=O.get(h)||O.get(h+"/");if(n){let t=n.content;if(F)t=C4(F,t);if(t=await V0(t,K),J)t=y1(t,G);return new Response(t,{headers:{"Content-Type":"text/html","Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache",Expires:"0"}})}}}let u=M.get("/");if(u){let m=u.content;if(m=await V0(m,K),J)m=y1(m,G);if(Z.native)if(m.includes("<head>"))m=m.replace("<head>","<head><style>[data-stx-sidebar],.stx-sidebar{display:none!important}</style><script>window.__craftNativeSidebar=true;document.documentElement.classList.add('has-native-sidebar')</script>");else m="<head><style>[data-stx-sidebar],.stx-sidebar{display:none!important}</style><script>window.__craftNativeSidebar=true;document.documentElement.classList.add('has-native-sidebar')</script></head>"+m;return new Response(m,{headers:{"Content-Type":"text/html","Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache",Expires:"0"}})}let i=await T(404);if(i){let m=i;if(m=await V0(m,K),J)m=y1(m,G);return new Response(m,{status:404,headers:{"Content-Type":"text/html"}})}return new Response("Not Found",{status:404})},async error(f){let g=await T(500);if(g)return new Response(g,{status:500,headers:{"Content-Type":"text/html"}});return new Response(`<pre>${f}
12196
- ${f.stack}</pre>`,{headers:{"Content-Type":"text/html"}})}});if(console.clear(),console.log(`
12195
+ Press ${R.cyan}h${R.reset} + ${R.cyan}Enter${R.reset} to show shortcuts`),b$(B.url.toString(),()=>{if(X)C$.watch(Q,{recursive:!0}).close();B.stop()}),X){console.log(`${R.blue}Watching for changes...${R.reset}`);let j=C$.watch(Q,{recursive:!0},async(H,O)=>{if(!O)return;if(O.endsWith(".stx")||O.endsWith(".js")||O.endsWith(".ts")||O.endsWith(".md"))console.log(`${R.yellow}File ${R.bright}${O}${R.yellow} changed, rebuilding...${R.reset}`),w$.clear(),D$(),await W()});process.on("SIGINT",()=>{j.close(),B.stop(),process.exit(0)})}return!0}var nz=D(()=>{m5();l0();i5();l8();q0();f4()});var{serve:UM}=globalThis.Bun;import o1 from"fs";import A0 from"path";function d2($){let Z=Bun.file($),Y=A0.extname($).toLowerCase(),X={".html":"text/html",".css":"text/css",".js":"text/javascript",".json":"application/json",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".svg":"image/svg+xml",".ico":"image/x-icon",".woff":"font/woff",".woff2":"font/woff2",".ttf":"font/ttf",".otf":"font/otf",".eot":"application/vnd.ms-fontobject"},Q=[".js",".css",".json"].includes(Y)?{"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache",Expires:"0"}:{};return new Response(Z,{headers:{"Content-Type":X[Y]||"application/octet-stream",...Q}})}async function sz($=".",Z={}){let Y=Z.port||3000,X=Z.watch!==!1,J=Z.hotReload!==!1&&X,Q=null,G=Z.hmrPort||Y+1,K=A0.resolve($),{loadStxConfig:W}=await Promise.resolve().then(() => (k$(),t$)),_=await W(K),U=_.root&&_.root!=="."?A0.join(K,_.root):K,B=_.pagesDir||"pages",z=A0.join(U,B);if(!o1.existsSync(z))return console.error(`${R.red}Error: No '${B}' directory found in ${R.bright}${U}${R.reset}`),console.log(`${R.dim}Create a ${B}/ directory with .stx files to define your routes.${R.reset}`),console.log(`${R.dim}Example: ${B}/index.stx for the homepage.${R.reset}`),!1;let q=r1(U);if(q.length===0)return console.error(`${R.red}Error: No page files found in ${R.bright}${z}${R.reset}`),!1;console.log(`${R.blue}Found ${R.bright}${q.length}${R.blue} routes${R.reset}`);let j=_?._pluginPageDirs||[],H=[];for(let{dir:x,prefix:g}of j)if(o1.existsSync(x)){let d=r1(A0.dirname(x),{pagesDir:A0.basename(x)});for(let p of d){let c=g==="/"?p.pattern:`${g}${p.pattern==="/"?"":p.pattern}`;H.push({route:{...p,pattern:c},prefix:g})}if(d.length>0)console.log(`${R.blue}Plugin pages: ${R.bright}${d.length}${R.blue} routes at ${R.cyan}${g}${R.reset}`)}let O=new Map,F=null,L=null;if(Z.stxOptions?.shell!==!1){if(L=H2(K,Z.stxOptions?.shell),L){if(F=await y8(L,Z.stxOptions||{}),F)console.log(`${R.blue}Using app shell: ${R.bright}${A0.relative(K,L)}${R.reset} ${R.dim}(deprecated: use layouts/default.stx instead)${R.reset}`)}}T4(),await k4(K);let V=D4();if(V.length>0)console.log(`${R.blue}Loaded ${R.bright}${V.length}${R.blue} middleware: ${R.dim}${V.join(", ")}${R.reset}`);let A={},N=null;try{let{loadStxConfig:x}=await Promise.resolve().then(() => (k$(),t$)),g=await x(K);if(g?.apiRouter)N=g?.apiRouter,console.log(`${R.blue}Using custom router for API handling${R.reset}`);if(g?.apiRoutes){A=g.apiRoutes;let d=Object.keys(A).length;if(d>0)console.log(`${R.blue}Loaded ${R.bright}${d} API route${d>1?"s":""}${R.reset}`)}if(g?.broadcasting?.enabled)try{let{startBroadcasting:d,loadChannels:p}=await Promise.resolve().then(() => (g8(),y2)),c=g.broadcasting;await d(c);let J0=c.port??6001;console.log(`${R.magenta}Broadcasting on ${R.cyan}ws://localhost:${J0}/ws${R.reset}`);let _0=A0.join(process.cwd(),"channels.ts");if(o1.existsSync(_0))try{let C0=await p(_0);console.log(`${R.blue}Loaded ${R.bright}${C0} broadcast channel${C0!==1?"s":""}${R.blue} from channels.ts${R.reset}`)}catch(C0){console.warn(`${R.yellow}Failed to load channels.ts: ${C0.message}${R.reset}`)}}catch(d){console.warn(`${R.yellow}Broadcasting failed to start: ${d.message}${R.reset}`)}}catch{}let w=A0.join(K,".stx/output");o1.mkdirSync(w,{recursive:!0});let M=new Map,T=async(x)=>{let g=L2(z,x);if(!g)return null;try{let d=await Bun.build({entrypoints:[g],outdir:w,plugins:[U7],publicPath:"/",define:{"process.env.NODE_ENV":'"development"'},...Z.stxOptions});if(!d.success)return null;let p=d.outputs.find((c)=>c.path.endsWith(".html"));if(!p)return null;return await Bun.file(p.path).text()}catch{return null}},E=async(x,g)=>{try{let{processDirectives:d,extractVariables:p,defaultConfig:c,loadStxConfig:J0,injectRouterScript:_0}=await Promise.resolve().then(() => (k$(),t$)),C0=await J0(K),w0=await Bun.file(x.filePath).text(),{classifyAllScripts:v}=await Promise.resolve().then(() => (k$(),t$)),u=v(w0),i=u.server.map((Q0)=>Q0.content),m=w0;for(let Q0 of u.server)m=m.replace(Q0.fullTag,"");let r={__filename:x.filePath,__dirname:A0.dirname(x.filePath),params:g??{}},{resetHead:h}=await Promise.resolve().then(() => (V$(),f3));h();for(let Q0 of i)try{await p(Q0,r,x.filePath)}catch(y0){if(Z.stxOptions?.debug)console.error("[stx] variable extraction error",x.filePath,y0?.message||y0)}let n=new Set,t=(Q0)=>{if(!Q0)return Q0;if(A0.isAbsolute(Q0))return Q0;return A0.resolve(K,Q0)},s={...c,...C0,...Z.stxOptions,autoShell:!0};if(Z.debugDirectives)s.debug=!0;s.partialsDir=t(s.partialsDir),s.componentsDir=t(s.componentsDir),s.layoutsDir=t(s.layoutsDir),s.storesDir=t(s.storesDir||"stores");let $0;if(Z.profile){let Q0=performance.now();$0=await d(m,r,x.filePath,s,n);let y0=performance.now()-Q0,f1=A0.relative(K,x.filePath)||x.filePath;console.log(`[stx:profile] ${f1} \u2192 ${y0.toFixed(2)}ms`)}else $0=await d(m,r,x.filePath,s,n);if(!F)$0=await _0($0);{let{interpolateScriptExpressions:Q0}=await Promise.resolve().then(() => (f0(),x7));$0=$0.replace(/<script\b([^>]*)>([\s\S]*?)<\/script>/g,(y0,f1,f$)=>{if(!/function\s+__stx_setup_/.test(f$))return y0;return`<script${f1}>${Q0(f$,r)}</script>`})}if(F)$0=a$($0);return{route:x,content:$0}}catch(d){return console.error(`${R.red}Error building ${R.bright}${x.pattern}${R.reset}:`,d),null}},I=async()=>{M.clear(),O.clear();for(let x of q){let g=await E(x);if(g)M.set(x.pattern,g)}for(let{route:x}of H){let g=await E(x);if(g)O.set(x.pattern,g)}return M.size>0};if(console.log(`${R.blue}Building pages...${R.reset}`),!await I())return console.error(`${R.red}No pages were successfully built${R.reset}`),!1;await u5(K);let k=Y;try{if(k=await S$(Y),k!==Y)console.log(`${R.yellow}Port ${Y} is busy, using port ${k} instead${R.reset}`)}catch{return console.error(`${R.red}Could not find an available port${R.reset}`),!1}if(J){let x=Z.hmrPort||k+1;Q=u4({wsPort:x,verbose:!1}),G=Q.start(x)}let P=(x,g)=>{let d=`<script>(function(){var s=typeof stx!=='undefined'?stx:{};s._rp=${JSON.stringify(g)};if(s.setRouteParams)s.setRouteParams(s._rp);})()</script>`;if(x.includes("</head>"))return x.replace("</head>",`${d}</head>`);if(x.includes("<body"))return x.replace(/<body([^>]*)>/,`<body$1>${d}`);return d+x};console.log(`${R.blue}Starting server...${R.reset}`);let f=UM({port:k,async fetch(x){let g=new URL(x.url),d=_?.publicDir||"public",p=A0.join(K,d,g.pathname),c=A0.join(K,g.pathname),J0=A0.join(w,g.pathname),[_0,C0,w0]=await Promise.all([o1.promises.stat(p).catch(()=>null),o1.promises.stat(c).catch(()=>null),o1.promises.stat(J0).catch(()=>null)]);if(_0?.isFile())return d2(p);if(C0?.isFile())return d2(c);if(w0?.isFile())return d2(J0);if(g.pathname.startsWith("/_stx/component/")){let m=decodeURIComponent(g.pathname.slice(16));if(m)try{let r=`<${m} />`,h={...buildConfig,autoShell:!1},n=await processDirectives(r,{},A0.join(K,"components",`${m}.stx`),h,new Set);return new Response(n,{headers:{"Content-Type":"text/html"}})}catch(r){return new Response(`<div class="stx-async-error">${r.message}</div>`,{status:500,headers:{"Content-Type":"text/html"}})}}if(N)try{let m=await N.handleRequest(x);if(m.status!==404)return m}catch{}if(A[g.pathname])try{return await A[g.pathname](x)}catch(m){return new Response(JSON.stringify({error:m.message}),{status:500,headers:{"Content-Type":"application/json"}})}let v=P8(g.pathname,q);if(v){let m=M.get(v.route.pattern);if(v.route.isDynamic&&Object.keys(v.params).length>0){let r=await E(v.route,v.params);if(r)m=r}if(m){let r=v3();if(r.validate){if(!await r.validate({params:v.params})){let t=await T(404);if(t){let s=t;if(s=await V0(s,K),J)s=y1(s,G);return new Response(s,{status:404,headers:{"Content-Type":"text/html"}})}return new Response("Not Found",{status:404})}}if(r.middleware){let n=I4(g.pathname,v.params,r,g.search),t=E4(n,null,x),s=await S4(r.middleware,t);if(s.redirect){let $0=s.redirect.path,Q0=s.redirect.options.redirectCode||302,y0=new Headers(s.responseHeaders);return y0.set("Location",$0),new Response(null,{status:Q0,headers:y0})}if(s.abort){let{statusCode:$0,message:Q0}=s.abort.error;return new Response(`<!DOCTYPE html><html><head><title>Error ${$0}</title></head><body><h1>Error ${$0}</h1><p>${Q0}</p></body></html>`,{status:$0,headers:{"Content-Type":"text/html"}})}if(Object.keys(s.state).length>0){let $0=`<script>(function(){var s=typeof stx!=='undefined'?stx:{};s._ms=${JSON.stringify(s.state)};if(s.setMiddlewareState)s.setMiddlewareState(s._ms);})()</script>`;m.content=m.content.replace("</head>",`${$0}</head>`)}}let h=m.content;if(F&&O2(x)){if(Object.keys(v.params).length>0)h=P(h,v.params);h=await V0(h,K);let n=_?.router?.container||"main";return h=y4(h,n),new Response(h,{headers:{"Content-Type":"text/html","X-STX-Fragment":"true","Cache-Control":"no-store, no-cache, must-revalidate"}})}if(F)h=C4(F,h);if(Object.keys(v.params).length>0)h=P(h,v.params);if(h=await V0(h,K),J)h=y1(h,G);if(Z.native)if(h.includes("<head>"))h=h.replace("<head>","<head><style>[data-stx-sidebar],.stx-sidebar{display:none!important}</style><script>window.__craftNativeSidebar=true;document.documentElement.classList.add('has-native-sidebar')</script>");else h="<head><style>[data-stx-sidebar],.stx-sidebar{display:none!important}</style><script>window.__craftNativeSidebar=true;document.documentElement.classList.add('has-native-sidebar')</script></head>"+h;return new Response(h,{headers:{"Content-Type":"text/html","Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache",Expires:"0"}})}}if(H.length>0){let m=H.map((h)=>h.route),r=P8(g.pathname,m);if(r){let h=O.get(r.route.pattern);if(h){let n=h.content;if(F)n=C4(F,n);if(Object.keys(r.params).length>0)n=P(n,r.params);if(n=await V0(n,K),J)n=y1(n,G);return new Response(n,{headers:{"Content-Type":"text/html","Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache",Expires:"0"}})}}for(let{prefix:h}of j)if(h!=="/"&&g.pathname.startsWith(h)){let n=O.get(h)||O.get(h+"/");if(n){let t=n.content;if(F)t=C4(F,t);if(t=await V0(t,K),J)t=y1(t,G);return new Response(t,{headers:{"Content-Type":"text/html","Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache",Expires:"0"}})}}}let u=M.get("/");if(u){let m=u.content;if(m=await V0(m,K),J)m=y1(m,G);if(Z.native)if(m.includes("<head>"))m=m.replace("<head>","<head><style>[data-stx-sidebar],.stx-sidebar{display:none!important}</style><script>window.__craftNativeSidebar=true;document.documentElement.classList.add('has-native-sidebar')</script>");else m="<head><style>[data-stx-sidebar],.stx-sidebar{display:none!important}</style><script>window.__craftNativeSidebar=true;document.documentElement.classList.add('has-native-sidebar')</script></head>"+m;return new Response(m,{headers:{"Content-Type":"text/html","Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache",Expires:"0"}})}let i=await T(404);if(i){let m=i;if(m=await V0(m,K),J)m=y1(m,G);return new Response(m,{status:404,headers:{"Content-Type":"text/html"}})}return new Response("Not Found",{status:404})},async error(x){let g=await T(500);if(g)return new Response(g,{status:500,headers:{"Content-Type":"text/html"}});return new Response(`<pre>${x}
12196
+ ${x.stack}</pre>`,{headers:{"Content-Type":"text/html"}})}});if(console.clear(),console.log(`
12197
12197
  ${R.blue}stx${R.reset} ${R.green}${process.env.stx_VERSION||"v0.0.10"}${R.reset} ${R.dim}ready in ${Math.random()*10+5|0}.${Math.random()*90+10|0} ms${R.reset}`),console.log(`
12198
12198
  ${R.bright}\u2192 ${R.cyan}http://localhost:${k}/${R.reset}`),J)console.log(`${R.dim} HMR: ws://localhost:${G}${R.reset}`);console.log(`
12199
- ${R.yellow}Routes:${R.reset}`);let C=[...F2(q,K)];for(let{route:f}of H)C.push(`${f.pattern}`);if(C.forEach((f,g)=>{let p=g===C.length-1?"\u2514\u2500 ":"\u251C\u2500 ";console.log(` ${R.green}${p}${R.reset}${f}`)}),console.log(`
12200
- Press ${R.cyan}h${R.reset} + ${R.cyan}Enter${R.reset} to show shortcuts`),b$(P.url.toString(),()=>{if(Q)_7();P.stop()}),Z.native){let f,g=A0.join(z,"index.stx");if(o1.existsSync(g)){let p=await Bun.file(g).text();f=p8(p)}let d=_?.app?.window??{};await G7(k,{title:_?.app?.head?.title||A0.basename(K)||"stx App",width:d.width,height:d.height,darkMode:d.darkMode,hotReload:d.hotReload,nativeSidebar:!!f,sidebarConfig:f})}if(X){console.log(`${R.blue}Watching for changes...${R.reset}`);let f=(p)=>{return p.startsWith("public/")||p.startsWith("public\\")},g=(p)=>{let c=p.toLowerCase();return c.endsWith(".stx")||c.endsWith(".html")||c.endsWith(".md")},d=o1.watch(K,{recursive:!0},async(p,c)=>{if(!c||d4(c))return;if(h4(c)){if(f(c)){if(console.log(`${R.cyan}${c} changed${R.reset}`),J&&Q)Q.reload(c)}else if(g(c)){if(console.log(`${R.yellow}${c} changed, rebuilding...${R.reset}`),w$.clear(),D$(),L&&c){if(A0.resolve(K,c)===L||A0.basename(L)===c){let _0=await y8(L,Z.stxOptions||{});if(_0)F=_0}}if(await E(),await J4(K),J&&Q)Q.reload(c)}else if(console.log(`${R.yellow}${c} changed, rebuilding...${R.reset}`),w$.clear(),D$(),await E(),J&&Q)Q.reload(c)}else if(g4(c)){if(console.log(`${R.cyan}CSS ${c} changed${R.reset}`),J&&Q)Q.updateCss(c)}});process.on("SIGINT",()=>{if(d.close(),Q)_7();P.stop(),process.exit(0)})}return!0}var rz=D(()=>{P4();i5();l8();x4();b8();V$();q0();f4()});var oz=D(()=>{v2();lz();nz();rz()});import u2 from"fs";import p4 from"path";async function az($){try{let Y=(await Bun.file($).text()).match(/<script\b[^>]*>([\s\S]*?)<\/script>/i);if(!Y)return[];let X=Y[1],J=[],Q=/\/\*\*\s*([\s\S]*?)\s*\*\/\s*(?:(?:const|let|var)\s*)?(?:([\w$]+)\s*=|module\.exports\.([\w$]+)\s*=|\s*([\w$]+)\s*:)/g,G;while((G=Q.exec(X))!==null){let K=G[1],W=G[2]||G[3]||G[4];if(!W)continue;let _={name:W},U=K.match(/@type\s+\{([^}]+)\}/i);if(U)_.type=U[1].trim();if(K.match(/@required/i))_.required=!0;let z=K.match(/@default\s+(.+?)(?:\s+|$)/i);if(z)_.default=z[1].trim();let q=K.split(`
12199
+ ${R.yellow}Routes:${R.reset}`);let C=[...F2(q,K)];for(let{route:x}of H)C.push(`${x.pattern}`);if(C.forEach((x,g)=>{let p=g===C.length-1?"\u2514\u2500 ":"\u251C\u2500 ";console.log(` ${R.green}${p}${R.reset}${x}`)}),console.log(`
12200
+ Press ${R.cyan}h${R.reset} + ${R.cyan}Enter${R.reset} to show shortcuts`),b$(f.url.toString(),()=>{if(Q)_7();f.stop()}),Z.native){let x,g=A0.join(z,"index.stx");if(o1.existsSync(g)){let p=await Bun.file(g).text();x=p8(p)}let d=_?.app?.window??{};await G7(k,{title:_?.app?.head?.title||A0.basename(K)||"stx App",width:d.width,height:d.height,darkMode:d.darkMode,hotReload:d.hotReload,nativeSidebar:!!x,sidebarConfig:x})}if(X){console.log(`${R.blue}Watching for changes...${R.reset}`);let x=(p)=>{return p.startsWith("public/")||p.startsWith("public\\")},g=(p)=>{let c=p.toLowerCase();return c.endsWith(".stx")||c.endsWith(".html")||c.endsWith(".md")},d=o1.watch(K,{recursive:!0},async(p,c)=>{if(!c||d4(c))return;if(h4(c)){if(x(c)){if(console.log(`${R.cyan}${c} changed${R.reset}`),J&&Q)Q.reload(c)}else if(g(c)){if(console.log(`${R.yellow}${c} changed, rebuilding...${R.reset}`),w$.clear(),D$(),L&&c){if(A0.resolve(K,c)===L||A0.basename(L)===c){let _0=await y8(L,Z.stxOptions||{});if(_0)F=_0}}if(await I(),await J4(K),J&&Q)Q.reload(c)}else if(console.log(`${R.yellow}${c} changed, rebuilding...${R.reset}`),w$.clear(),D$(),await I(),J&&Q)Q.reload(c)}else if(g4(c)){if(console.log(`${R.cyan}CSS ${c} changed${R.reset}`),J&&Q)Q.updateCss(c)}});process.on("SIGINT",()=>{if(d.close(),Q)_7();f.stop(),process.exit(0)})}return!0}var rz=D(()=>{P4();i5();l8();x4();b8();V$();q0();f4()});var oz=D(()=>{v2();lz();nz();rz()});import u2 from"fs";import p4 from"path";async function az($){try{let Y=(await Bun.file($).text()).match(/<script\b[^>]*>([\s\S]*?)<\/script>/i);if(!Y)return[];let X=Y[1],J=[],Q=/\/\*\*\s*([\s\S]*?)\s*\*\/\s*(?:(?:const|let|var)\s*)?(?:([\w$]+)\s*=|module\.exports\.([\w$]+)\s*=|\s*([\w$]+)\s*:)/g,G;while((G=Q.exec(X))!==null){let K=G[1],W=G[2]||G[3]||G[4];if(!W)continue;let _={name:W},U=K.match(/@type\s+\{([^}]+)\}/i);if(U)_.type=U[1].trim();if(K.match(/@required/i))_.required=!0;let z=K.match(/@default\s+(.+?)(?:\s+|$)/i);if(z)_.default=z[1].trim();let q=K.split(`
12201
12201
  `).map((j)=>j.trim().replace(/^\*\s*/,"")).filter((j)=>!j.startsWith("@")&&j.length>0);_.description=q.join(" ").trim(),J.push(_)}if(J.length===0){let K=X.match(/module\.exports\s*=\s*\{([^}]+)\}/i);if(K){let _=K[1].split(",").map((U)=>U.trim()).filter(Boolean);for(let U of _){let[B]=U.split(":").map((z)=>z.trim());if(B)J.push({name:B})}}}return J}catch(Z){return console.error(`Error extracting props from ${$}:`,Z),[]}}async function tz($){try{let Z=await Bun.file($).text(),Y=Z.match(/^\s*<!--\s*([\s\S]*?)\s*-->/)||Z.match(/^\s*\/\*\*\s*([\s\S]*?)\s*\*\//);if(Y)return Y[1].split(`
12202
12202
  `).map((X)=>X.trim().replace(/^\*\s*/,"")).join(" ").trim();return""}catch{return""}}async function ez($,Z=!1,Y){let X=p4.basename($,".stx"),J=await az($),Q=await tz($),G="";if(Z&&Y)G=`<${Y}></${Y}>`;else{let K=J.map((W)=>{if(W.type==="boolean")return`:${W.name}="true"`;return`${W.name}="value"`}).join(`
12203
12203
  `);G=`<${X}
@@ -13342,14 +13342,14 @@ describe('Example', () => {
13342
13342
  </footer>
13343
13343
  @yield('scripts')
13344
13344
  </body>
13345
- </html>`}function pT(){return"<!-- Hero section -->"}function cT(){return"<!-- Features -->"}function lT(){return"<!-- Pricing -->"}function iT(){return"<!-- Button -->"}function o4($){if(!r4($))s2($,{recursive:!0})}function nT(){if(r4("bun.lockb"))return"bun";if(r4("pnpm-lock.yaml"))return"pnpm";if(r4("yarn.lock"))return"yarn";return"bun"}function r2($){return $.replace(/[-_\s]+(.)?/g,(Z,Y)=>Y?Y.toUpperCase():"").replace(/^./,(Z)=>Z.toUpperCase())}function sT($){return $.replace(/[-_\s]+(.)?/g,(Z,Y)=>Y?Y.toUpperCase():"").replace(/^./,(Z)=>Z.toLowerCase())}function $5($){return $.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/[\s_]+/g,"-").toLowerCase()}var UT;var Pq=D(()=>{UT={default:{description:"Standard stx project with pages, components, and stores",features:["Pages","Components","Layouts","Stores","Dev server"]},minimal:{description:"Minimal setup with just the essentials",features:["Single page","Basic styles"]},full:{description:"Full-featured project with all stx capabilities",features:["Pages","Components","Layouts","Stores","API routes","PWA","i18n","Testing"]},blog:{description:"Blog template with markdown support",features:["Blog layout","Post pages","Tags","RSS feed","Markdown"]},dashboard:{description:"Admin dashboard template",features:["Sidebar","Charts","Tables","Forms","Auth pages"]},landing:{description:"Marketing landing page template",features:["Hero section","Features","Pricing","CTA","Contact form"]}}});var{serve:rT}=globalThis.Bun;import a4 from"fs";import v$ from"path";function oT($,Z=200,Y={}){return new Response($,{status:Z,headers:{"Content-Type":"text/html; charset=utf-8",...Y}})}async function xq($={}){let{port:Z=3000,root:Y=".",stxOptions:X={},watch:J=!0,onRequest:Q,routes:G={},middleware:K=[],on404:W,onError:_}=$,U=v$.resolve(Y),B=new Map;async function z(L){let V=a4.statSync(L),A=`${L}:${V.mtimeMs}`,N=B.get(A);if(N)return N.content;for(let d of B.keys())if(d.startsWith(`${L}:`)&&d!==A)B.delete(d);let w=await Bun.file(L).text(),M=w,T=w.match(/<template\b(?![^>]*\b(?:id|x-for|x-if|@for|@if|:for|:if)\s*=)[^>]*>/i);if(T&&T.index!==void 0){let d=T.index+T[0].length,p=1,c=d;while(c<w.length&&p>0){let J0=w.indexOf("<template",c),_0=w.indexOf("</template>",c);if(_0===-1)break;if(J0!==-1&&J0<_0)p++,c=J0+9;else{if(p--,p===0){M=w.substring(d,_0).trim();break}c=_0+11}}}let I=/<script\b([^>]*)>([\s\S]*?)<\/script>/gi,E=[],S=[],k;while((k=I.exec(w))!==null){let d=k[1],p=k[2],c=k[0];if(d.includes("server"))S.push(p);else E.push(c)}let b=w.match(/<style\b[^>]*>[\s\S]*?<\/style>/gi)||[],P=M.replace(/<script\b[^>]*>[\s\S]*?<\/script>/gi,"").replace(/<style\b[^>]*>[\s\S]*?<\/style>/gi,""),x={__filename:L,__dirname:v$.dirname(L)};for(let d of S)await M0(d,x,L);let g=await Y0(P,x,L,X,new Set);if(b.length>0){let d=b.join(`
13345
+ </html>`}function pT(){return"<!-- Hero section -->"}function cT(){return"<!-- Features -->"}function lT(){return"<!-- Pricing -->"}function iT(){return"<!-- Button -->"}function o4($){if(!r4($))s2($,{recursive:!0})}function nT(){if(r4("bun.lockb"))return"bun";if(r4("pnpm-lock.yaml"))return"pnpm";if(r4("yarn.lock"))return"yarn";return"bun"}function r2($){return $.replace(/[-_\s]+(.)?/g,(Z,Y)=>Y?Y.toUpperCase():"").replace(/^./,(Z)=>Z.toUpperCase())}function sT($){return $.replace(/[-_\s]+(.)?/g,(Z,Y)=>Y?Y.toUpperCase():"").replace(/^./,(Z)=>Z.toLowerCase())}function $5($){return $.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/[\s_]+/g,"-").toLowerCase()}var UT;var Pq=D(()=>{UT={default:{description:"Standard stx project with pages, components, and stores",features:["Pages","Components","Layouts","Stores","Dev server"]},minimal:{description:"Minimal setup with just the essentials",features:["Single page","Basic styles"]},full:{description:"Full-featured project with all stx capabilities",features:["Pages","Components","Layouts","Stores","API routes","PWA","i18n","Testing"]},blog:{description:"Blog template with markdown support",features:["Blog layout","Post pages","Tags","RSS feed","Markdown"]},dashboard:{description:"Admin dashboard template",features:["Sidebar","Charts","Tables","Forms","Auth pages"]},landing:{description:"Marketing landing page template",features:["Hero section","Features","Pricing","CTA","Contact form"]}}});var{serve:rT}=globalThis.Bun;import a4 from"fs";import v$ from"path";function oT($,Z=200,Y={}){return new Response($,{status:Z,headers:{"Content-Type":"text/html; charset=utf-8",...Y}})}async function xq($={}){let{port:Z=3000,root:Y=".",stxOptions:X={},watch:J=!0,onRequest:Q,routes:G={},middleware:K=[],on404:W,onError:_}=$,U=v$.resolve(Y),B=new Map;async function z(L){let V=a4.statSync(L),A=`${L}:${V.mtimeMs}`,N=B.get(A);if(N)return N.content;for(let d of B.keys())if(d.startsWith(`${L}:`)&&d!==A)B.delete(d);let w=await Bun.file(L).text(),M=w,T=w.match(/<template\b(?![^>]*\b(?:id|x-for|x-if|@for|@if|:for|:if)\s*=)[^>]*>/i);if(T&&T.index!==void 0){let d=T.index+T[0].length,p=1,c=d;while(c<w.length&&p>0){let J0=w.indexOf("<template",c),_0=w.indexOf("</template>",c);if(_0===-1)break;if(J0!==-1&&J0<_0)p++,c=J0+9;else{if(p--,p===0){M=w.substring(d,_0).trim();break}c=_0+11}}}let E=/<script\b([^>]*)>([\s\S]*?)<\/script>/gi,I=[],S=[],k;while((k=E.exec(w))!==null){let d=k[1],p=k[2],c=k[0];if(d.includes("server"))S.push(p);else I.push(c)}let P=w.match(/<style\b[^>]*>[\s\S]*?<\/style>/gi)||[],f=M.replace(/<script\b[^>]*>[\s\S]*?<\/script>/gi,"").replace(/<style\b[^>]*>[\s\S]*?<\/style>/gi,""),b={__filename:L,__dirname:v$.dirname(L)};for(let d of S)await M0(d,b,L);let g=await Y0(f,b,L,X,new Set);if(P.length>0){let d=P.join(`
13346
13346
  `);if(g.match(/(<\/head>)/i))g=g.replace(/(<\/head>)/i,`${d}
13347
- $1`)}if(E.length>0){let{interpolateScriptsInTemplate:d}=await Promise.resolve().then(() => (f0(),x7)),p=d(E.join(`
13348
- `),x);if(g.match(/(<\/body>)/i))g=g.replace(/(<\/body>)/i,`${p}
13347
+ $1`)}if(I.length>0){let{interpolateScriptsInTemplate:d}=await Promise.resolve().then(() => (f0(),x7)),p=d(I.join(`
13348
+ `),b);if(g.match(/(<\/body>)/i))g=g.replace(/(<\/body>)/i,`${p}
13349
13349
  $1`);else g+=`
13350
- ${p}`}return B.set(A,{content:g,mtime:V.mtimeMs}),g}async function q(L){let V=a4.statSync(L),A=`${L}:${V.mtimeMs}`,N=B.get(A);if(N)return N.content;let{content:w}=await l1(L,X);return B.set(A,{content:w,mtime:V.mtimeMs}),w}function j(L){let V=L.startsWith("/")?L.slice(1):L,A=[V,`${V}.stx`,`${V}.md`,`${V}.html`,v$.join(V,"index.stx"),v$.join(V,"index.md"),v$.join(V,"index.html")];for(let N of A){let w=v$.join(U,N);if(a4.existsSync(w)&&a4.statSync(w).isFile())return w}return null}async function H(L){let V=new URL(L.url),A=async()=>{if(G[V.pathname])return await G[V.pathname](L);if(Q){let w=await Q(L);if(w)return w}let N=j(V.pathname);if(!N){if(W)return await W(L);return new Response("Not Found",{status:404})}try{let w,M="text/html";if(N.endsWith(".stx"))w=await z(N);else if(N.endsWith(".md"))w=await q(N);else if(N.endsWith(".html"))w=await Bun.file(N).text();else if(N.endsWith(".css"))w=await Bun.file(N).text(),M="text/css";else if(N.endsWith(".js"))w=await Bun.file(N).text(),M="text/javascript";else if(N.endsWith(".json"))w=await Bun.file(N).text(),M="application/json";else return new Response(Bun.file(N));return new Response(w,{headers:{"Content-Type":M}})}catch(w){if(_)return await _(w,L);let M=w instanceof Error?w.message:String(w),I=X?.debug===!0?`<h1>Error</h1><pre>${M}
13351
- ${w instanceof Error?w.stack:""}</pre>`:"<h1>Internal Server Error</h1><p>An error occurred while processing your request.</p>";return new Response(I,{status:500,headers:{"Content-Type":"text/html"}})}};for(let N=K.length-1;N>=0;N--){let w=K[N],M=A;A=async()=>await w(L,M)}return await A()}let O=rT({port:Z,fetch:H}),F=null;if(J)F=a4.watch(U,{recursive:!0},(L,V)=>{if(V&&(V.endsWith(".stx")||V.endsWith(".md")||V.endsWith(".html")))B.clear()});return{server:O,url:O.url.toString(),stop(){if(F)F.close();O.stop()}}}async function aT($,Z={}){let Y=v$.resolve($);if(!await Bun.file(Y).exists())throw Error(`File not found: ${Y}`);let X=Y.endsWith(".md"),J=Y.endsWith(".stx");if(!X&&!J)throw Error(`Unsupported file type: ${Y}. Only .stx and .md files are supported.`);return await xq({...Z,root:v$.dirname(Y),routes:{"/":async()=>{let Q;if(X){let{content:G}=await l1(Y,Z.stxOptions);Q=G}else{let G=await Bun.file(Y).text(),K=[],W=/<script\b([^>]*)>([\s\S]*?)<\/script>/gi,_;while((_=W.exec(G))!==null)if(_[1].includes("server"))K.push(_[2]);let U=K.join(`
13352
- `),B=G.replace(/<script\b[^>]*>[\s\S]*?<\/script>/gi,""),z={};if(U.trim())await M0(U,z,Y);let q=new Set;Q=await Y0(B,z,Y,Z.stxOptions||{},q)}return new Response(Q,{headers:{"Content-Type":"text/html"}})},...Z.routes}})}function tT($){return $}function eT($){return $}var vq=D(()=>{m5();B1();q0()});import n8 from"path";function $E($){let Z=[],Y=0,X;fq.lastIndex=0;while((X=fq.exec($))!==null){if(X.index>Y){let G=$.slice(Y,X.index);if(G.trim())Z.push({type:Z.length===0?"shell":"content",content:G})}let J=X[1],Q=X[2];Z.push({type:"suspense",name:J,content:Q}),Y=X.index+X[0].length}if(Y<$.length){let J=$.slice(Y);if(J.trim())Z.push({type:Z.length===0?"shell":"content",content:J})}if(Z.length===0)Z.push({type:"shell",content:$});return Z}async function ZE($,Z={},Y={}){let X={...e0,...Y,streaming:{...o2,...Y.streaming}},J=X.streaming?.bufferSize||16384;return new ReadableStream({async start(Q){try{let G=await Bun.file($).text(),K=G.match(/<script\b[^>]*\bserver\b[^>]*>([\s\S]*?)<\/script>/i),W=K?K[1]:"",_=G.replace(/<script\b[^>]*>[\s\S]*?<\/script>/gi,""),U={...Z,__filename:$,__dirname:n8.dirname($)};if(W.trim())await M0(W,U,$);let B=$E(_),z=new Set;if(!B.some((j)=>j.type==="suspense")){let j=X.streaming?.strategy||"auto",H=new RegExp(Z5.source,"g");if(!(j!=="manual"&&H.test(_))){let F=await Y0(_,U,$,X,z);for(let L=0;L<F.length;L+=J)Q.enqueue(F.slice(L,L+J)),await new Promise((V)=>setTimeout(V,0))}else{let F=[],L=new RegExp(Z5.source,"g"),V;while((V=L.exec(_))!==null)F.push({name:V[1],content:V[2],start:V.index,end:V.index+V[0].length});let A=0;for(let N of F){if(N.start>A){let M=_.slice(A,N.start);if(M.trim()){let T=await Y0(M,U,$,X,z);Q.enqueue(T),await new Promise((I)=>setTimeout(I,0))}}let w=await Y0(N.content,U,$,X,z);Q.enqueue(w),await new Promise((M)=>setTimeout(M,0)),A=N.end}if(A<_.length){let N=_.slice(A);if(N.trim()){let w=await Y0(N,U,$,X,z);Q.enqueue(w)}}}}else{let j=new Map;for(let O of B)if(O.type==="shell"||O.type==="content"){let F=await Y0(O.content,U,$,X,z);Q.enqueue(F)}else if(O.type==="suspense"&&O.name){let F=`stx-suspense-${O.name}`;Q.enqueue(`<div id="${F}" data-suspense="${O.name}" style="display:contents;">
13350
+ ${p}`}return B.set(A,{content:g,mtime:V.mtimeMs}),g}async function q(L){let V=a4.statSync(L),A=`${L}:${V.mtimeMs}`,N=B.get(A);if(N)return N.content;let{content:w}=await l1(L,X);return B.set(A,{content:w,mtime:V.mtimeMs}),w}function j(L){let V=L.startsWith("/")?L.slice(1):L,A=[V,`${V}.stx`,`${V}.md`,`${V}.html`,v$.join(V,"index.stx"),v$.join(V,"index.md"),v$.join(V,"index.html")];for(let N of A){let w=v$.join(U,N);if(a4.existsSync(w)&&a4.statSync(w).isFile())return w}return null}async function H(L){let V=new URL(L.url),A=async()=>{if(G[V.pathname])return await G[V.pathname](L);if(Q){let w=await Q(L);if(w)return w}let N=j(V.pathname);if(!N){if(W)return await W(L);return new Response("Not Found",{status:404})}try{let w,M="text/html";if(N.endsWith(".stx"))w=await z(N);else if(N.endsWith(".md"))w=await q(N);else if(N.endsWith(".html"))w=await Bun.file(N).text();else if(N.endsWith(".css"))w=await Bun.file(N).text(),M="text/css";else if(N.endsWith(".js"))w=await Bun.file(N).text(),M="text/javascript";else if(N.endsWith(".json"))w=await Bun.file(N).text(),M="application/json";else return new Response(Bun.file(N));return new Response(w,{headers:{"Content-Type":M}})}catch(w){if(_)return await _(w,L);let M=w instanceof Error?w.message:String(w),E=X?.debug===!0?`<h1>Error</h1><pre>${M}
13351
+ ${w instanceof Error?w.stack:""}</pre>`:"<h1>Internal Server Error</h1><p>An error occurred while processing your request.</p>";return new Response(E,{status:500,headers:{"Content-Type":"text/html"}})}};for(let N=K.length-1;N>=0;N--){let w=K[N],M=A;A=async()=>await w(L,M)}return await A()}let O=rT({port:Z,fetch:H}),F=null;if(J)F=a4.watch(U,{recursive:!0},(L,V)=>{if(V&&(V.endsWith(".stx")||V.endsWith(".md")||V.endsWith(".html")))B.clear()});return{server:O,url:O.url.toString(),stop(){if(F)F.close();O.stop()}}}async function aT($,Z={}){let Y=v$.resolve($);if(!await Bun.file(Y).exists())throw Error(`File not found: ${Y}`);let X=Y.endsWith(".md"),J=Y.endsWith(".stx");if(!X&&!J)throw Error(`Unsupported file type: ${Y}. Only .stx and .md files are supported.`);return await xq({...Z,root:v$.dirname(Y),routes:{"/":async()=>{let Q;if(X){let{content:G}=await l1(Y,Z.stxOptions);Q=G}else{let G=await Bun.file(Y).text(),K=[],W=/<script\b([^>]*)>([\s\S]*?)<\/script>/gi,_;while((_=W.exec(G))!==null)if(_[1].includes("server"))K.push(_[2]);let U=K.join(`
13352
+ `),B=G.replace(/<script\b[^>]*>[\s\S]*?<\/script>/gi,""),z={};if(U.trim())await M0(U,z,Y);let q=new Set;Q=await Y0(B,z,Y,Z.stxOptions||{},q)}return new Response(Q,{headers:{"Content-Type":"text/html"}})},...Z.routes}})}function tT($){return $}function eT($){return $}var vq=D(()=>{m5();B1();q0()});import n8 from"path";function $E($){let Z=[],Y=0,X;fq.lastIndex=0;while((X=fq.exec($))!==null){if(X.index>Y){let G=$.slice(Y,X.index);if(G.trim())Z.push({type:Z.length===0?"shell":"content",content:G})}let J=X[1],Q=X[2];Z.push({type:"suspense",name:J,content:Q}),Y=X.index+X[0].length}if(Y<$.length){let J=$.slice(Y);if(J.trim())Z.push({type:Z.length===0?"shell":"content",content:J})}if(Z.length===0)Z.push({type:"shell",content:$});return Z}async function ZE($,Z={},Y={}){let X={...e0,...Y,streaming:{...o2,...Y.streaming}},J=X.streaming?.bufferSize||16384;return new ReadableStream({async start(Q){try{let G=await Bun.file($).text(),K=G.match(/<script\b[^>]*\bserver\b[^>]*>([\s\S]*?)<\/script>/i),W=K?K[1]:"",_=G.replace(/<script\b[^>]*>[\s\S]*?<\/script>/gi,""),U={...Z,__filename:$,__dirname:n8.dirname($)};if(W.trim())await M0(W,U,$);let B=$E(_),z=new Set;if(!B.some((j)=>j.type==="suspense")){let j=X.streaming?.strategy||"auto",H=new RegExp(Z5.source,"g");if(!(j!=="manual"&&H.test(_))){let F=await Y0(_,U,$,X,z);for(let L=0;L<F.length;L+=J)Q.enqueue(F.slice(L,L+J)),await new Promise((V)=>setTimeout(V,0))}else{let F=[],L=new RegExp(Z5.source,"g"),V;while((V=L.exec(_))!==null)F.push({name:V[1],content:V[2],start:V.index,end:V.index+V[0].length});let A=0;for(let N of F){if(N.start>A){let M=_.slice(A,N.start);if(M.trim()){let T=await Y0(M,U,$,X,z);Q.enqueue(T),await new Promise((E)=>setTimeout(E,0))}}let w=await Y0(N.content,U,$,X,z);Q.enqueue(w),await new Promise((M)=>setTimeout(M,0)),A=N.end}if(A<_.length){let N=_.slice(A);if(N.trim()){let w=await Y0(N,U,$,X,z);Q.enqueue(w)}}}}else{let j=new Map;for(let O of B)if(O.type==="shell"||O.type==="content"){let F=await Y0(O.content,U,$,X,z);Q.enqueue(F)}else if(O.type==="suspense"&&O.name){let F=`stx-suspense-${O.name}`;Q.enqueue(`<div id="${F}" data-suspense="${O.name}" style="display:contents;">
13353
13353
  <template data-suspense-fallback>Loading...</template>
13354
13354
  </div>`),j.set(O.name,Y0(O.content,U,$,X,z))}Q.enqueue(`
13355
13355
  <script>
@@ -14773,7 +14773,7 @@ else {
14773
14773
  window.STX.lazyLoad = loadElement;
14774
14774
  window.STX.initLazyLoading = init;
14775
14775
  })();
14776
- `.trim()}var wj;var o9=D(()=>{wj={root:null,rootMargin:"50px 0px",threshold:0,useNative:!0,selector:"[data-stx-lazy]"}});function JZ($,Z={}){let Y={...hE,...Z},X=$.closest(".stx-img-placeholder");if(!X){dE($,Y);return}if(X.style.setProperty("--stx-img-transition-duration",`${Y.duration}ms`),X.style.setProperty("--stx-img-transition-easing",Y.easing),Y.loadingClass)X.classList.add(Y.loadingClass);if($.complete&&$.naturalWidth>0)Rj($,X,Y);else $.addEventListener("load",()=>Rj($,X,Y),{once:!0}),$.addEventListener("error",()=>uE($,X,Y),{once:!0})}function dE($,Z){let Y=()=>{$.style.transition=`opacity ${Z.duration}ms ${Z.easing}`,$.style.opacity="1",$.classList.remove(Z.loadingClass),$.classList.add(Z.loadedClass)};if($.complete&&$.naturalWidth>0)Y();else $.style.opacity="0",$.classList.add(Z.loadingClass),$.addEventListener("load",Y,{once:!0})}function Rj($,Z,Y){if(Y.loadingClass)Z.classList.remove(Y.loadingClass);if(Y.loadedClass)Z.classList.add(Y.loadedClass);if($.style.opacity="1",Y.removePlaceholder)setTimeout(()=>{Z.style.backgroundImage="none"},Y.duration)}function uE($,Z,Y){if(Y.loadingClass)Z.classList.remove(Y.loadingClass);Z.classList.add("stx-img-error"),$.classList.add("stx-img-error")}function a9($,Z){let Y=J6($),X=Z.getContext("2d");if(!X)return;Z.width=Y.w,Z.height=Y.h;let J=X.createImageData(Y.w,Y.h);J.data.set(Y.rgba),X.putImageData(J,0,0)}function J6($){let Z=$[0]|$[1]<<8|$[2]<<16,Y=(Z&63)/63,X=(Z>>6&63)/31.5-1,J=(Z>>12&63)/31.5-1,Q=(Z>>18&31)/31,G=Z>>23!==0,K=$[3]|$[4]<<8,W=(K>>3&63)/63,_=(K>>9&63)/63,U=K>>15!==0,B=Math.max(3,U?G?5:7:G?5:5),z=Math.max(3,U?G?5:5:G?5:7),q=32,j=32,H=new Uint8ClampedArray(4096);for(let O=0;O<32;O++)for(let F=0;F<32;F++){let L=(O*32+F)*4,V=F/31,A=O/31,N=Y+(V-0.5)*Q*0.5+(A-0.5)*Q*0.5,w=X*(1-V*0.3),M=J*(1-A*0.3),T=N-0.6666666666666666*w,I=(3*N-T+M)/2,E=I-M;H[L]=Math.max(0,Math.min(255,Math.round(I*255))),H[L+1]=Math.max(0,Math.min(255,Math.round(E*255))),H[L+2]=Math.max(0,Math.min(255,Math.round(T*255))),H[L+3]=255}return{w:32,h:32,rgba:H}}function t9($){let Z=J6($),Y=document.createElement("canvas");Y.width=Z.w,Y.height=Z.h;let X=Y.getContext("2d");if(!X)return"";let J=X.createImageData(Z.w,Z.h);return J.data.set(Z.rgba),X.putImageData(J,0,0),Y.toDataURL("image/png")}function e9($){let Z=atob($),Y=new Uint8Array(Z.length);for(let X=0;X<Z.length;X++)Y[X]=Z.charCodeAt(X);return Y}function $Q($,Z,Y=300){return new Promise((X)=>{$.style.transition=`opacity ${Y}ms ease-out`,Z.style.transition=`opacity ${Y}ms ease-out`,Z.style.opacity="0",Z.offsetWidth,$.style.opacity="0",Z.style.opacity="1",setTimeout(X,Y)})}function ZQ($={}){document.querySelectorAll("[data-stx-blur-up], .stx-img-placeholder img").forEach((Y)=>{JZ(Y,$)})}function Q6(){return`
14776
+ `.trim()}var wj;var o9=D(()=>{wj={root:null,rootMargin:"50px 0px",threshold:0,useNative:!0,selector:"[data-stx-lazy]"}});function JZ($,Z={}){let Y={...hE,...Z},X=$.closest(".stx-img-placeholder");if(!X){dE($,Y);return}if(X.style.setProperty("--stx-img-transition-duration",`${Y.duration}ms`),X.style.setProperty("--stx-img-transition-easing",Y.easing),Y.loadingClass)X.classList.add(Y.loadingClass);if($.complete&&$.naturalWidth>0)Rj($,X,Y);else $.addEventListener("load",()=>Rj($,X,Y),{once:!0}),$.addEventListener("error",()=>uE($,X,Y),{once:!0})}function dE($,Z){let Y=()=>{$.style.transition=`opacity ${Z.duration}ms ${Z.easing}`,$.style.opacity="1",$.classList.remove(Z.loadingClass),$.classList.add(Z.loadedClass)};if($.complete&&$.naturalWidth>0)Y();else $.style.opacity="0",$.classList.add(Z.loadingClass),$.addEventListener("load",Y,{once:!0})}function Rj($,Z,Y){if(Y.loadingClass)Z.classList.remove(Y.loadingClass);if(Y.loadedClass)Z.classList.add(Y.loadedClass);if($.style.opacity="1",Y.removePlaceholder)setTimeout(()=>{Z.style.backgroundImage="none"},Y.duration)}function uE($,Z,Y){if(Y.loadingClass)Z.classList.remove(Y.loadingClass);Z.classList.add("stx-img-error"),$.classList.add("stx-img-error")}function a9($,Z){let Y=J6($),X=Z.getContext("2d");if(!X)return;Z.width=Y.w,Z.height=Y.h;let J=X.createImageData(Y.w,Y.h);J.data.set(Y.rgba),X.putImageData(J,0,0)}function J6($){let Z=$[0]|$[1]<<8|$[2]<<16,Y=(Z&63)/63,X=(Z>>6&63)/31.5-1,J=(Z>>12&63)/31.5-1,Q=(Z>>18&31)/31,G=Z>>23!==0,K=$[3]|$[4]<<8,W=(K>>3&63)/63,_=(K>>9&63)/63,U=K>>15!==0,B=Math.max(3,U?G?5:7:G?5:5),z=Math.max(3,U?G?5:5:G?5:7),q=32,j=32,H=new Uint8ClampedArray(4096);for(let O=0;O<32;O++)for(let F=0;F<32;F++){let L=(O*32+F)*4,V=F/31,A=O/31,N=Y+(V-0.5)*Q*0.5+(A-0.5)*Q*0.5,w=X*(1-V*0.3),M=J*(1-A*0.3),T=N-0.6666666666666666*w,E=(3*N-T+M)/2,I=E-M;H[L]=Math.max(0,Math.min(255,Math.round(E*255))),H[L+1]=Math.max(0,Math.min(255,Math.round(I*255))),H[L+2]=Math.max(0,Math.min(255,Math.round(T*255))),H[L+3]=255}return{w:32,h:32,rgba:H}}function t9($){let Z=J6($),Y=document.createElement("canvas");Y.width=Z.w,Y.height=Z.h;let X=Y.getContext("2d");if(!X)return"";let J=X.createImageData(Z.w,Z.h);return J.data.set(Z.rgba),X.putImageData(J,0,0),Y.toDataURL("image/png")}function e9($){let Z=atob($),Y=new Uint8Array(Z.length);for(let X=0;X<Z.length;X++)Y[X]=Z.charCodeAt(X);return Y}function $Q($,Z,Y=300){return new Promise((X)=>{$.style.transition=`opacity ${Y}ms ease-out`,Z.style.transition=`opacity ${Y}ms ease-out`,Z.style.opacity="0",Z.offsetWidth,$.style.opacity="0",Z.style.opacity="1",setTimeout(X,Y)})}function ZQ($={}){document.querySelectorAll("[data-stx-blur-up], .stx-img-placeholder img").forEach((Y)=>{JZ(Y,$)})}function Q6(){return`
14777
14777
  (function() {
14778
14778
  'use strict';
14779
14779