@stacksjs/stx 0.2.81 → 0.2.83

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 (55) hide show
  1. package/dist/app-shell.js +15 -5
  2. package/dist/build-assets.js +13 -3
  3. package/dist/build-mode-detector.js +16 -6
  4. package/dist/build-views.js +16 -6
  5. package/dist/build.js +15 -5
  6. package/dist/caching.js +13 -3
  7. package/dist/cli.js +16 -6
  8. package/dist/component-processing.js +15 -5
  9. package/dist/component-renderer.js +15 -5
  10. package/dist/components.js +16 -6
  11. package/dist/dev-server/index.js +16 -6
  12. package/dist/dev-server/serve-app.js +15 -5
  13. package/dist/dev-server/serve-file.js +15 -5
  14. package/dist/dev-server/serve-markdown.js +16 -6
  15. package/dist/dev-server/serve-multi.js +15 -5
  16. package/dist/dev-server.js +15 -5
  17. package/dist/docs.js +16 -6
  18. package/dist/dynamic-components.js +15 -5
  19. package/dist/includes.js +15 -5
  20. package/dist/index.js +15 -5
  21. package/dist/interactive.js +16 -6
  22. package/dist/lazy-loader.js +91 -81
  23. package/dist/plugin.js +15 -5
  24. package/dist/process.js +15 -5
  25. package/dist/production-builder.js +15 -5
  26. package/dist/production-server.js +15 -5
  27. package/dist/pwa/index.js +16 -6
  28. package/dist/pwa/offline.js +16 -6
  29. package/dist/pwa.js +15 -5
  30. package/dist/reactive.js +1 -1
  31. package/dist/render.js +16 -6
  32. package/dist/runtime-injection.js +13 -3
  33. package/dist/serve.js +16 -6
  34. package/dist/signal-processing.js +35 -25
  35. package/dist/signals.js +13 -3
  36. package/dist/site-builder/build.js +16 -6
  37. package/dist/site-builder/index.js +16 -6
  38. package/dist/ssg.js +15 -5
  39. package/dist/ssr.js +16 -6
  40. package/dist/store-loader.js +18 -18
  41. package/dist/story/cli.js +15 -5
  42. package/dist/story/commands/dev.js +16 -6
  43. package/dist/story/commands/index.js +16 -6
  44. package/dist/story/index.js +16 -6
  45. package/dist/story/renderer.js +16 -6
  46. package/dist/story/server.js +16 -6
  47. package/dist/story/visual-testing.js +16 -6
  48. package/dist/streaming.js +15 -5
  49. package/dist/template-compiler.js +16 -6
  50. package/dist/template-hydrator.js +16 -6
  51. package/dist/template-tag-balance.js +1 -1
  52. package/dist/testing.js +140 -130
  53. package/dist/utils.js +15 -5
  54. package/dist/web-components.js +16 -6
  55. package/package.json +5 -5
@@ -535,8 +535,8 @@ ${j}
535
535
  filter: blur(0);
536
536
  transform: scale(1);
537
537
  }
538
- `.trim();f1=new Map});import{createHash as V$}from"crypto";import{readFile as Y3,stat as L$}from"fs/promises";async function h($){try{let Z=await Y3($);return V$("sha256").update(Z).digest("hex").slice(0,16)}catch{return""}}function O$($){return V$("sha256").update($).digest("hex").slice(0,16)}function y0($,Z){let Y=JSON.stringify(Z,Object.keys(Z).sort());return`${O$($)}-${O$(Y)}`}async function h1($){try{return(await L$($)).mtimeMs}catch{return 0}}async function f($){try{return await L$($),!0}catch{return!1}}var G0=()=>{};import{mkdir as X3,readFile as J3,writeFile as G3,readdir as d8,rm as Q3,stat as m8}from"fs/promises";import{join as w$,dirname as K3}from"path";async function U3($){try{await X3($,{recursive:!0})}catch{}}function R$($,Z,Y){return w$($,Y,`${Z}.json`)}async function F$($,Z,Y){if((Date.now()-$.createdAt)/86400000>Y)return!1;if(await h1(Z)!==$.srcMtime)return!1;return!0}async function C0($,Z,Y,G=d1){if(!G.enabled)return null;let X=y0($,Z),J=_0.get(X);if(J){if(await F$(J,$,G.maxAge))return J.lastAccessedAt=Date.now(),J.data;_0.delete(X)}let Q=R$(G.directory,X,Y);if(await f(Q))try{let K=await J3(Q,"utf-8"),U=JSON.parse(K);if(await F$(U,$,G.maxAge))return U.lastAccessedAt=Date.now(),_0.set(X,U),U.data}catch{}return null}async function P0($,Z,Y,G,X=d1){if(!X.enabled)return;let J=y0($,Z),Q=await h($),K=await h1($),U={key:J,src:$,srcHash:Q,srcMtime:K,optionsHash:y0("",Z),data:Y,createdAt:Date.now(),lastAccessedAt:Date.now()};_0.set(J,U);let z=R$(X.directory,J,G);try{await U3(K3(z)),await G3(z,JSON.stringify(U,null,2))}catch(W){console.warn(`[stx-media] Failed to write cache: ${W}`)}}async function v0($,Z=d1){if($==="all")_0.clear();else _0.clear();let Y=$==="all"?["image","video"]:[$];for(let G of Y){let X=w$(Z.directory,G);try{await Q3(X,{recursive:!0,force:!0})}catch{}}}var _0,d1;var m1=V(()=>{G0();_0=new Map,d1={enabled:!0,directory:".stx/media-cache",maxAge:30,maxSize:500}});class f0{config;constructor($={}){this.config={...z3,...$}}async get($,Z){return C0($,Z,"image",this.config)}async set($,Z,Y){return P0($,Z,Y,"image",this.config)}async clear(){return v0("image",this.config)}updateConfig($){this.config={...this.config,...$}}}function u1($){if(!x0)x0=new f0($);else if($)x0.updateConfig($);return x0}async function g0($,Z,Y){let G=Y?{directory:`${Y.outputDir}/../.cache`}:{};return u1(G).get($,Z)}async function h0($,Z,Y,G){let X=G?{directory:`${G.outputDir}/../.cache`}:{};return u1(X).set($,Z,Y)}async function A$(){return u1().clear()}var z3,x0=null;var l1=V(()=>{m1();z3={enabled:!0,directory:".stx/media-cache",maxAge:30,maxSize:500,cacheVariants:!0,cachePlaceholders:!0}});import{resolve as q3,basename as W3,extname as _3,join as B3}from"path";import{mkdir as H3}from"fs/promises";async function c1(){try{return await import("ts-images")}catch{return null}}function N$($){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 j3($,Z){let Y=Z?N$(Z):N$("web"),G=$.formatQuality||{};return{jpeg:{...Y.jpeg,...G.jpeg},png:{...Y.png,...G.png},webp:{...Y.webp,...G.webp},avif:{...Y.avif,...G.avif}}}async function T$($,Z,Y){let G=await c1();if(!G)return console.warn("[stx-media] ts-images not installed, skipping optimization"),{src:$,processed:!1};let X=await g0($,Z,Y);if(X)return X;try{let J=q3($);if(!await f(J))return{src:$,processed:!1,errors:[`Source file not found: ${$}`]};let Q=j3(Y,Z.preset),K=Y.outputDir||"dist/images",U=Y.baseUrl||"/images";await H3(K,{recursive:!0});let z=await h(J),W=W3($,_3($)),q=Z.outputFormat?[Z.outputFormat]:Y.defaultFormats||["avif","webp","jpeg"],B={src:$,processed:!0,variants:[],hash:z},H=null;if(Z.transformations&&Z.transformations.length>0)H=await p1(J,Z.transformations,G);for(let _ of q){let j=Q[_]||{},O=`${W}-${z}.${_}`,F=B3(K,O);try{let L=await G.optimizeImage({input:H||J,output:F,format:_,quality:j.quality,progressive:j.progressive});if(L){if(B.variants.push({path:F,url:`${U}/${O}`,width:L.width||0,height:L.height||0,format:_,size:L.outputSize||0}),!B.originalWidth&&L.width)B.originalWidth=L.width,B.originalHeight=L.height}}catch(L){B.errors=B.errors||[],B.errors.push(`Failed to optimize ${_}: ${L}`)}}if(Z.embedThumbhash||Z.placeholder==="thumbhash")try{let _=await G.generateThumbHash(J);B.placeholder=_.dataUrl}catch(_){B.errors=B.errors||[],B.errors.push(`Failed to generate thumbhash: ${_}`)}if(Z.useDominantColor)try{let _=await G.generatePlaceholder(J,{strategy:"dominant-color"});B.dominantColor=_.dominantColor}catch(_){B.errors=B.errors||[],B.errors.push(`Failed to extract dominant color: ${_}`)}return await h0($,Z,B,Y),B}catch(J){return{src:$,processed:!1,errors:[`Processing failed: ${J}`]}}}async function I$($,Z,Y,G){let X=await c1();if(!X)return{success:!1,error:"ts-images not installed"};try{return{success:!0,size:(await X.optimizeImage({input:$,output:G,format:Z,quality:Y}))?.outputSize}}catch(J){return{success:!1,error:String(J)}}}async function p1($,Z,Y){let G=Y||await c1();if(!G)return console.warn("[stx-media] ts-images not installed, skipping transformations"),null;try{let X=await G.decode($);for(let J of Z){let Q=J.options||{};switch(J.type){case"resize":if(Q.width||Q.height)X=await G.resize(X,{width:Q.width,height:Q.height,fit:Q.fit});break;case"blur":if(Q.sigma!==void 0)X=await G.blur(X,Q.sigma);break;case"sharpen":if(Q.amount!==void 0)X=await G.sharpen(X,Q.amount);break;case"grayscale":X=await G.grayscale(X);break;case"rotate":if(Q.angle!==void 0)X=await G.rotate(X,Q.angle);break;case"flip":X=await G.flip(X);break;case"flop":X=await G.flop(X);break;case"brightness":if(Q.value!==void 0)X=await G.brightness(X,Q.value);break;case"contrast":if(Q.value!==void 0)X=await G.contrast(X,Q.value);break;case"saturation":if(Q.value!==void 0)X=await G.saturation(X,Q.value);break}}return await G.encode(X,"png")}catch(X){return console.error(`[stx-media] Transformation failed: ${X}`),null}}var M$=V(()=>{G0();l1()});import{resolve as O3,basename as V3,extname as L3,join as F3}from"path";import{mkdir as w3}from"fs/promises";async function R3(){try{return await import("ts-images")}catch{return null}}async function D$($,Z,Y){let G=await R3();if(!G)return console.warn("[stx-media] ts-images not installed, skipping responsive generation"),null;let X=O3($);if(!await f(X))return console.warn(`[stx-media] Source file not found: ${$}`),null;try{let J=Z.responsiveWidths||Y.breakpoints||A3,Q=Z.formats||Y.defaultFormats||["avif","webp","jpeg"],K=Y.outputDir||"dist/images",U=Y.baseUrl||"/images";await w3(K,{recursive:!0});let z=await h(X),W=V3($,L3($)),q=Y.formatQuality||{jpeg:{quality:82},png:{quality:80},webp:{quality:82},avif:{quality:75}},B={src:$,byFormat:{},srcsets:{}};for(let _ of Q){B.byFormat[_]=[];let j=[];for(let O of J){let F=`${W}-${O}w-${z}.${_}`,L=F3(K,F),R=`${U}/${F}`;try{let T=q[_]?.quality||80;if(await f(L)){B.byFormat[_].push({path:L,url:R,width:O,height:0,format:_,size:0}),j.push(`${R} ${O}w`);continue}let A=await G.processImage({input:X,output:L,format:_,quality:T,resize:{width:O}});if(A)B.byFormat[_].push({path:L,url:R,width:O,height:A.height||Math.round(O*(A.height||1)/(A.width||1)),format:_,size:A.outputSize||0}),j.push(`${R} ${O}w`)}catch(T){console.warn(`[stx-media] Failed to generate ${_} at ${O}w: ${T}`)}}B.srcsets[_]=j.join(", ")}let H=Z.placeholder||Y.placeholderStrategy||"thumbhash";if(H!=="none")try{if(H==="thumbhash"){let _=await G.generateThumbHash(X);B.placeholder={dataURL:_.dataUrl,width:_.width||32,height:_.height||32,strategy:"thumbhash"}}else{let _=await G.generatePlaceholder(X,{strategy:H,width:20});B.placeholder={dataURL:_.dataURL,width:_.width,height:_.height,strategy:H}}}catch(_){console.warn(`[stx-media] Failed to generate placeholder: ${_}`)}return B.sizes=Z.sizes||N3(J),B}catch(J){return console.error(`[stx-media] Responsive generation failed: ${J}`),null}}function N3($){let Z=[...$].sort((G,X)=>G-X),Y=[];for(let G=0;G<Z.length-1;G++){let X=Z[G];Y.push(`(max-width: ${X}px) ${X}px`)}return Y.push(`${Z[Z.length-1]}px`),Y.join(", ")}function E$($,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 A3;var k$=V(()=>{G0();A3=[320,480,640,768,1024,1280,1536,1920]});var b$={};z0(b$,{setCachedImageResult:()=>h0,processImage:()=>T$,optimizeImage:()=>I$,getCachedImageResult:()=>g0,generateSrcset:()=>E$,generateResponsiveVariants:()=>D$,clearImageCache:()=>A$,applyTransformations:()=>p1,ImageProcessorCache:()=>f0});var S$=V(()=>{M$();k$();l1()});async function T3(){try{return await Promise.resolve().then(() => (S$(),b$))}catch($){if(!y$)console.warn("[stx-media] Image processor not available, some features disabled:",$),y$=!0;return null}}async function d0($,Z={}){let Y=Z,G=$;if(G.process&&!G.skipOptimization){if(Y.tsImagesConfig?.enabled&&!Y.isDev)return E3(G,Y)}if(Y.processedResult?.processed)return s1($,Y.processedResult,Z);if(Y.responsiveVariants)return x$($,Y.responsiveVariants,Z);let{src:X,alt:J,width:Q,height:K,sizes:U,widths:z=W0,dpr:W,formats:q=A0,quality:B=i1,params:H={},placeholder:_="none",placeholderOptions:j={},lazy:O=!0,priority:F=!1,loading:L=F?"eager":u0,decoding:R=m0,fetchpriority:T,objectFit:A,objectPosition:N,crossorigin:w,referrerpolicy:k}=$,I=$.class,E=$.style,b=$.id,M=$.data||{},{isDev:g=!1,baseUrl:Y0=""}=Z;if(g&&!Z.optimize)return D3($);let u,D,o=b||`stx-img-${Math.random().toString(36).slice(2,8)}`;if(_!=="none"&&!F)try{u=await H$(X,{strategy:_,...j}),D=B$(o,u,j)}catch{}let E0=W!==void 0&&Q!==void 0,U0;if(E0)U0=M3($,o,u,Z);else U0=await I3($,o,u,Z);let L0;if(F){let l5=q.includes("webp")?"webp":q[0],k7=C1(X,z,{...H,q:B},l5),b7=typeof U==="object"?P1(U):U||"100vw";L0=`<link rel="preload" as="image" imagesrcset="${k7}" imagesizes="${b7}" />`}let k0=[];if(!C$&&_!=="none")k0.push(g1),C$=!0;if(D)k0.push(D);let E7=O?v$(o):void 0;return{html:U0,preloadLink:L0,css:k0.length>0?k0.join(`
539
- `):void 0,script:E7}}async function I3($,Z,Y,G){let{src:X,alt:J,width:Q,height:K,sizes:U,widths:z=W0,formats:W=A0,quality:q=i1,params:B={},lazy:H=!0,priority:_=!1,loading:j=_?"eager":u0,decoding:O=m0,fetchpriority:F,objectFit:L,objectPosition:R,crossorigin:T,referrerpolicy:A}=$,N=$.class,w=$.style,k=$.data||{},I=typeof U==="object"?P1(U):U||"100vw",E=[];for(let g of W){let Y0=C1(X,z,{...B,q},g),u=v1(g);if(H&&!_)E.push(` <source type="${u}" data-srcset="${Y0}" data-sizes="${I}" />`);else E.push(` <source type="${u}" srcset="${Y0}" sizes="${I}" />`)}let b=n1({src:N0(X,{...B,q}),alt:J,width:Q,height:K,loading:_?void 0:j,decoding:O,fetchpriority:_?"high":F,objectFit:L,objectPosition:R,crossorigin:T,referrerpolicy:A,className:P$(N,Y),style:o1(w,L,R,Y),lazy:H&&!_,data:k}),M;if(Y){let g=`background-image: url('${Y.dataURL}'); background-size: cover; background-position: center;`;M=`<div id="${Z}" class="stx-img-placeholder" style="${g}">
538
+ `.trim();f1=new Map});import{createHash as V$}from"crypto";import{readFile as Y3,stat as L$}from"fs/promises";async function h($){try{let Z=await Y3($);return V$("sha256").update(Z).digest("hex").slice(0,16)}catch{return""}}function O$($){return V$("sha256").update($).digest("hex").slice(0,16)}function y0($,Z){let Y=JSON.stringify(Z,Object.keys(Z).sort());return`${O$($)}-${O$(Y)}`}async function h1($){try{return(await L$($)).mtimeMs}catch{return 0}}async function f($){try{return await L$($),!0}catch{return!1}}var G0=()=>{};import{mkdir as X3,readFile as J3,writeFile as G3,readdir as d8,rm as Q3,stat as m8}from"fs/promises";import{join as w$,dirname as K3}from"path";async function U3($){try{await X3($,{recursive:!0})}catch{}}function R$($,Z,Y){return w$($,Y,`${Z}.json`)}async function F$($,Z,Y){if((Date.now()-$.createdAt)/86400000>Y)return!1;if(await h1(Z)!==$.srcMtime)return!1;return!0}async function C0($,Z,Y,G=d1){if(!G.enabled)return null;let X=y0($,Z),J=_0.get(X);if(J){if(await F$(J,$,G.maxAge))return J.lastAccessedAt=Date.now(),J.data;_0.delete(X)}let Q=R$(G.directory,X,Y);if(await f(Q))try{let K=await J3(Q,"utf-8"),U=JSON.parse(K);if(await F$(U,$,G.maxAge))return U.lastAccessedAt=Date.now(),_0.set(X,U),U.data}catch{}return null}async function P0($,Z,Y,G,X=d1){if(!X.enabled)return;let J=y0($,Z),Q=await h($),K=await h1($),U={key:J,src:$,srcHash:Q,srcMtime:K,optionsHash:y0("",Z),data:Y,createdAt:Date.now(),lastAccessedAt:Date.now()};_0.set(J,U);let z=R$(X.directory,J,G);try{await U3(K3(z)),await G3(z,JSON.stringify(U,null,2))}catch(W){console.warn(`[stx-media] Failed to write cache: ${W}`)}}async function v0($,Z=d1){if($==="all")_0.clear();else _0.clear();let Y=$==="all"?["image","video"]:[$];for(let G of Y){let X=w$(Z.directory,G);try{await Q3(X,{recursive:!0,force:!0})}catch{}}}var _0,d1;var m1=V(()=>{G0();_0=new Map,d1={enabled:!0,directory:".stx/media-cache",maxAge:30,maxSize:500}});class f0{config;constructor($={}){this.config={...z3,...$}}async get($,Z){return C0($,Z,"image",this.config)}async set($,Z,Y){return P0($,Z,Y,"image",this.config)}async clear(){return v0("image",this.config)}updateConfig($){this.config={...this.config,...$}}}function u1($){if(!x0)x0=new f0($);else if($)x0.updateConfig($);return x0}async function g0($,Z,Y){let G=Y?{directory:`${Y.outputDir}/../.cache`}:{};return u1(G).get($,Z)}async function h0($,Z,Y,G){let X=G?{directory:`${G.outputDir}/../.cache`}:{};return u1(X).set($,Z,Y)}async function A$(){return u1().clear()}var z3,x0=null;var l1=V(()=>{m1();z3={enabled:!0,directory:".stx/media-cache",maxAge:30,maxSize:500,cacheVariants:!0,cachePlaceholders:!0}});import{resolve as q3,basename as W3,extname as _3,join as B3}from"path";import{mkdir as H3}from"fs/promises";async function c1(){try{return await import("ts-images")}catch{return null}}function N$($){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 j3($,Z){let Y=Z?N$(Z):N$("web"),G=$.formatQuality||{};return{jpeg:{...Y.jpeg,...G.jpeg},png:{...Y.png,...G.png},webp:{...Y.webp,...G.webp},avif:{...Y.avif,...G.avif}}}async function T$($,Z,Y){let G=await c1();if(!G)return console.warn("[stx-media] ts-images not installed, skipping optimization"),{src:$,processed:!1};let X=await g0($,Z,Y);if(X)return X;try{let J=q3($);if(!await f(J))return{src:$,processed:!1,errors:[`Source file not found: ${$}`]};let Q=j3(Y,Z.preset),K=Y.outputDir||"dist/images",U=Y.baseUrl||"/images";await H3(K,{recursive:!0});let z=await h(J),W=W3($,_3($)),q=Z.outputFormat?[Z.outputFormat]:Y.defaultFormats||["avif","webp","jpeg"],B={src:$,processed:!0,variants:[],hash:z},H=null;if(Z.transformations&&Z.transformations.length>0)H=await p1(J,Z.transformations,G);for(let _ of q){let j=Q[_]||{},O=`${W}-${z}.${_}`,F=B3(K,O);try{let L=await G.optimizeImage({input:H||J,output:F,format:_,quality:j.quality,progressive:j.progressive});if(L){if(B.variants.push({path:F,url:`${U}/${O}`,width:L.width||0,height:L.height||0,format:_,size:L.outputSize||0}),!B.originalWidth&&L.width)B.originalWidth=L.width,B.originalHeight=L.height}}catch(L){B.errors=B.errors||[],B.errors.push(`Failed to optimize ${_}: ${L}`)}}if(Z.embedThumbhash||Z.placeholder==="thumbhash")try{let _=await G.generateThumbHash(J);B.placeholder=_.dataUrl}catch(_){B.errors=B.errors||[],B.errors.push(`Failed to generate thumbhash: ${_}`)}if(Z.useDominantColor)try{let _=await G.generatePlaceholder(J,{strategy:"dominant-color"});B.dominantColor=_.dominantColor}catch(_){B.errors=B.errors||[],B.errors.push(`Failed to extract dominant color: ${_}`)}return await h0($,Z,B,Y),B}catch(J){return{src:$,processed:!1,errors:[`Processing failed: ${J}`]}}}async function I$($,Z,Y,G){let X=await c1();if(!X)return{success:!1,error:"ts-images not installed"};try{return{success:!0,size:(await X.optimizeImage({input:$,output:G,format:Z,quality:Y}))?.outputSize}}catch(J){return{success:!1,error:String(J)}}}async function p1($,Z,Y){let G=Y||await c1();if(!G)return console.warn("[stx-media] ts-images not installed, skipping transformations"),null;try{let X=await G.decode($);for(let J of Z){let Q=J.options||{};switch(J.type){case"resize":if(Q.width||Q.height)X=await G.resize(X,{width:Q.width,height:Q.height,fit:Q.fit});break;case"blur":if(Q.sigma!==void 0)X=await G.blur(X,Q.sigma);break;case"sharpen":if(Q.amount!==void 0)X=await G.sharpen(X,Q.amount);break;case"grayscale":X=await G.grayscale(X);break;case"rotate":if(Q.angle!==void 0)X=await G.rotate(X,Q.angle);break;case"flip":X=await G.flip(X);break;case"flop":X=await G.flop(X);break;case"brightness":if(Q.value!==void 0)X=await G.brightness(X,Q.value);break;case"contrast":if(Q.value!==void 0)X=await G.contrast(X,Q.value);break;case"saturation":if(Q.value!==void 0)X=await G.saturation(X,Q.value);break}}return await G.encode(X,"png")}catch(X){return console.error(`[stx-media] Transformation failed: ${X}`),null}}var M$=V(()=>{G0();l1()});import{resolve as O3,basename as V3,extname as L3,join as F3}from"path";import{mkdir as w3}from"fs/promises";async function R3(){try{return await import("ts-images")}catch{return null}}async function D$($,Z,Y){let G=await R3();if(!G)return console.warn("[stx-media] ts-images not installed, skipping responsive generation"),null;let X=O3($);if(!await f(X))return console.warn(`[stx-media] Source file not found: ${$}`),null;try{let J=Z.responsiveWidths||Y.breakpoints||A3,Q=Z.formats||Y.defaultFormats||["avif","webp","jpeg"],K=Y.outputDir||"dist/images",U=Y.baseUrl||"/images";await w3(K,{recursive:!0});let z=await h(X),W=V3($,L3($)),q=Y.formatQuality||{jpeg:{quality:82},png:{quality:80},webp:{quality:82},avif:{quality:75}},B={src:$,byFormat:{},srcsets:{}};for(let _ of Q){B.byFormat[_]=[];let j=[];for(let O of J){let F=`${W}-${O}w-${z}.${_}`,L=F3(K,F),w=`${U}/${F}`;try{let T=q[_]?.quality||80;if(await f(L)){B.byFormat[_].push({path:L,url:w,width:O,height:0,format:_,size:0}),j.push(`${w} ${O}w`);continue}let A=await G.processImage({input:X,output:L,format:_,quality:T,resize:{width:O}});if(A)B.byFormat[_].push({path:L,url:w,width:O,height:A.height||Math.round(O*(A.height||1)/(A.width||1)),format:_,size:A.outputSize||0}),j.push(`${w} ${O}w`)}catch(T){console.warn(`[stx-media] Failed to generate ${_} at ${O}w: ${T}`)}}B.srcsets[_]=j.join(", ")}let H=Z.placeholder||Y.placeholderStrategy||"thumbhash";if(H!=="none")try{if(H==="thumbhash"){let _=await G.generateThumbHash(X);B.placeholder={dataURL:_.dataUrl,width:_.width||32,height:_.height||32,strategy:"thumbhash"}}else{let _=await G.generatePlaceholder(X,{strategy:H,width:20});B.placeholder={dataURL:_.dataURL,width:_.width,height:_.height,strategy:H}}}catch(_){console.warn(`[stx-media] Failed to generate placeholder: ${_}`)}return B.sizes=Z.sizes||N3(J),B}catch(J){return console.error(`[stx-media] Responsive generation failed: ${J}`),null}}function N3($){let Z=[...$].sort((G,X)=>G-X),Y=[];for(let G=0;G<Z.length-1;G++){let X=Z[G];Y.push(`(max-width: ${X}px) ${X}px`)}return Y.push(`${Z[Z.length-1]}px`),Y.join(", ")}function E$($,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 A3;var k$=V(()=>{G0();A3=[320,480,640,768,1024,1280,1536,1920]});var b$={};z0(b$,{setCachedImageResult:()=>h0,processImage:()=>T$,optimizeImage:()=>I$,getCachedImageResult:()=>g0,generateSrcset:()=>E$,generateResponsiveVariants:()=>D$,clearImageCache:()=>A$,applyTransformations:()=>p1,ImageProcessorCache:()=>f0});var S$=V(()=>{M$();k$();l1()});async function T3(){try{return await Promise.resolve().then(() => (S$(),b$))}catch($){if(!y$)console.warn("[stx-media] Image processor not available, some features disabled:",$),y$=!0;return null}}async function d0($,Z={}){let Y=Z,G=$;if(G.process&&!G.skipOptimization){if(Y.tsImagesConfig?.enabled&&!Y.isDev)return E3(G,Y)}if(Y.processedResult?.processed)return s1($,Y.processedResult,Z);if(Y.responsiveVariants)return x$($,Y.responsiveVariants,Z);let{src:X,alt:J,width:Q,height:K,sizes:U,widths:z=W0,dpr:W,formats:q=A0,quality:B=i1,params:H={},placeholder:_="none",placeholderOptions:j={},lazy:O=!0,priority:F=!1,loading:L=F?"eager":u0,decoding:w=m0,fetchpriority:T,objectFit:A,objectPosition:N,crossorigin:R,referrerpolicy:k}=$,I=$.class,E=$.style,b=$.id,M=$.data||{},{isDev:g=!1,baseUrl:Y0=""}=Z;if(g&&!Z.optimize)return D3($);let u,D,o=b||`stx-img-${Math.random().toString(36).slice(2,8)}`;if(_!=="none"&&!F)try{u=await H$(X,{strategy:_,...j}),D=B$(o,u,j)}catch{}let E0=W!==void 0&&Q!==void 0,U0;if(E0)U0=M3($,o,u,Z);else U0=await I3($,o,u,Z);let L0;if(F){let l5=q.includes("webp")?"webp":q[0],k7=C1(X,z,{...H,q:B},l5),b7=typeof U==="object"?P1(U):U||"100vw";L0=`<link rel="preload" as="image" imagesrcset="${k7}" imagesizes="${b7}" />`}let k0=[];if(!C$&&_!=="none")k0.push(g1),C$=!0;if(D)k0.push(D);let E7=O?v$(o):void 0;return{html:U0,preloadLink:L0,css:k0.length>0?k0.join(`
539
+ `):void 0,script:E7}}async function I3($,Z,Y,G){let{src:X,alt:J,width:Q,height:K,sizes:U,widths:z=W0,formats:W=A0,quality:q=i1,params:B={},lazy:H=!0,priority:_=!1,loading:j=_?"eager":u0,decoding:O=m0,fetchpriority:F,objectFit:L,objectPosition:w,crossorigin:T,referrerpolicy:A}=$,N=$.class,R=$.style,k=$.data||{},I=typeof U==="object"?P1(U):U||"100vw",E=[];for(let g of W){let Y0=C1(X,z,{...B,q},g),u=v1(g);if(H&&!_)E.push(` <source type="${u}" data-srcset="${Y0}" data-sizes="${I}" />`);else E.push(` <source type="${u}" srcset="${Y0}" sizes="${I}" />`)}let b=n1({src:N0(X,{...B,q}),alt:J,width:Q,height:K,loading:_?void 0:j,decoding:O,fetchpriority:_?"high":F,objectFit:L,objectPosition:w,crossorigin:T,referrerpolicy:A,className:P$(N,Y),style:o1(R,L,w,Y),lazy:H&&!_,data:k}),M;if(Y){let g=`background-image: url('${Y.dataURL}'); background-size: cover; background-position: center;`;M=`<div id="${Z}" class="stx-img-placeholder" style="${g}">
540
540
  <picture>
541
541
  ${E.join(`
542
542
  `)}
@@ -546,7 +546,7 @@ ${E.join(`
546
546
  ${E.join(`
547
547
  `)}
548
548
  <img ${b} />
549
- </picture>`;return M}function M3($,Z,Y,G){let{src:X,alt:J,width:Q,height:K,dpr:U=[1,2,3],quality:z=i1,params:W={},lazy:q=!0,priority:B=!1,loading:H=B?"eager":u0,decoding:_=m0,fetchpriority:j,objectFit:O,objectPosition:F,crossorigin:L,referrerpolicy:R}=$,T=$.class,A=$.style,N=$.data||{},w=typeof Q==="number"?Q:Number.parseInt(String(Q),10),k=_$(X,w,U,{...W,q:z}),I=n1({src:N0(X,{...W,w,q:z}),alt:J,width:Q,height:K,loading:B?void 0:H,decoding:_,fetchpriority:B?"high":j,objectFit:O,objectPosition:F,crossorigin:L,referrerpolicy:R,className:P$(T,Y),style:o1(A,O,F,Y),lazy:q&&!B,data:N}),E=q&&!B?`data-srcset="${k}"`:`srcset="${k}"`;if(Y){let b=`background-image: url('${Y.dataURL}'); background-size: cover; background-position: center;`;return`<div id="${Z}" class="stx-img-placeholder" style="${b}">
549
+ </picture>`;return M}function M3($,Z,Y,G){let{src:X,alt:J,width:Q,height:K,dpr:U=[1,2,3],quality:z=i1,params:W={},lazy:q=!0,priority:B=!1,loading:H=B?"eager":u0,decoding:_=m0,fetchpriority:j,objectFit:O,objectPosition:F,crossorigin:L,referrerpolicy:w}=$,T=$.class,A=$.style,N=$.data||{},R=typeof Q==="number"?Q:Number.parseInt(String(Q),10),k=_$(X,R,U,{...W,q:z}),I=n1({src:N0(X,{...W,w:R,q:z}),alt:J,width:Q,height:K,loading:B?void 0:H,decoding:_,fetchpriority:B?"high":j,objectFit:O,objectPosition:F,crossorigin:L,referrerpolicy:w,className:P$(T,Y),style:o1(A,O,F,Y),lazy:q&&!B,data:N}),E=q&&!B?`data-srcset="${k}"`:`srcset="${k}"`;if(Y){let b=`background-image: url('${Y.dataURL}'); background-size: cover; background-position: center;`;return`<div id="${Z}" class="stx-img-placeholder" style="${b}">
550
550
  <img ${I} ${E} />
551
551
  </div>`}return`<img ${Z?`id="${Z}" `:""}${I} ${E} />`}function D3($){let{src:Z,alt:Y,width:G,height:X,loading:J=u0,decoding:Q=m0,fetchpriority:K,objectFit:U,objectPosition:z,crossorigin:W,referrerpolicy:q,priority:B=!1}=$,H=$.class,_=$.style,j=$.id,O=$.data||{};return{html:`<img ${n1({src:Z,alt:Y,width:G,height:X,loading:B?"eager":J,decoding:Q,fetchpriority:B?"high":K,objectFit:U,objectPosition:z,crossorigin:W,referrerpolicy:q,className:H,style:o1(_,U,z),id:j,data:O})} />`}}function n1($){let Z=[];if($.lazy)Z.push(`data-src="${s($.src)}"`),Z.push('src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"');else Z.push(`src="${s($.src)}"`);if(Z.push(`alt="${s($.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="${s($.className)}"`);if($.style)Z.push(`style="${s($.style)}"`);if($.id)Z.push(`id="${s($.id)}"`);if($.data)for(let[Y,G]of Object.entries($.data))Z.push(`data-${Y}="${s(G)}"`);if($.lazy)Z.push("data-stx-lazy");return Z.join(" ")}function P$($,Z){let Y=[];if($)Y.push($);if(Z)Y.push("stx-img-blur");return Y.join(" ")||""}function o1($,Z,Y,G){let X=[];if(Z)X.push(`object-fit: ${Z}`);if(Y)X.push(`object-position: ${Y}`);if(G)X.push("opacity: 0; transition: opacity 300ms ease-out");if($)X.push($);return X.join("; ")}function s($){return $.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#039;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function v$($){return`
552
552
  (function() {
@@ -585,22 +585,22 @@ ${E.join(`
585
585
 
586
586
  observer.observe(container);
587
587
  })();
588
- `.trim()}async function E3($,Z){let Y=await T3();if(!Y)return d0({...$,process:!1},Z);let G=Z.tsImagesConfig;if($.responsiveWidths&&$.responsiveWidths.length>0||$.widths&&$.widths.length>0||!$.width&&!$.dpr){let J=await Y.generateResponsiveVariants($.src,$,G);if(J)return x$($,J,Z)}else{let J=await Y.processImage($.src,$,G);if(J.processed)return s1($,J,Z)}return d0({...$,process:!1},Z)}async function s1($,Z,Y){let{alt:G,width:X,height:J,lazy:Q=!0,priority:K=!1,objectFit:U,objectPosition:z,crossorigin:W,referrerpolicy:q}=$,B=$.class,H=$.style,_=$.id||`stx-img-${Math.random().toString(36).slice(2,8)}`,j=$.data||{},O=Z.variants||[],F=O.find((D)=>D.format==="jpeg")||O.find((D)=>D.format==="webp")||O[0],L=F?.url||$.src,R=O.filter((D)=>D.format===(F?.format||"jpeg")).map((D)=>`${D.url} ${D.width}w`).join(", "),T=new Map;for(let D of O){if(!T.has(D.format))T.set(D.format,[]);T.get(D.format).push(D)}let A=[],N=["avif","webp","jpeg","png"];for(let D of N){let o=T.get(D);if(o&&o.length>0){let E0=o.map((L0)=>`${L0.url} ${L0.width}w`).join(", "),U0=v1(D);if(Q&&!K)A.push(` <source type="${U0}" data-srcset="${E0}" />`);else A.push(` <source type="${U0}" srcset="${E0}" />`)}}let w=[];if(Q&&!K){if(w.push(`data-src="${s(L)}"`),w.push('src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"'),R)w.push(`data-srcset="${R}"`)}else if(w.push(`src="${s(L)}"`),R)w.push(`srcset="${R}"`);w.push(`alt="${s(G)}"`);let k=X||Z.originalWidth,I=J||Z.originalHeight;if(k)w.push(`width="${k}"`);if(I)w.push(`height="${I}"`);if(!K)w.push(`loading="${Q?"lazy":"eager"}"`);if(w.push('decoding="async"'),K)w.push('fetchpriority="high"');if(W)w.push(`crossorigin="${W}"`);if(q)w.push(`referrerpolicy="${q}"`);let E=[];if(U)E.push(`object-fit: ${U}`);if(z)E.push(`object-position: ${z}`);if(Z.placeholder&&Q)E.push("opacity: 0; transition: opacity 300ms ease-out");if(H)E.push(H);if(E.length>0)w.push(`style="${E.join("; ")}"`);let b=[];if(B)b.push(B);if(Z.placeholder)b.push("stx-img-blur");if(b.length>0)w.push(`class="${b.join(" ")}"`);if(Q&&!K)w.push("data-stx-lazy");for(let[D,o]of Object.entries(j))w.push(`data-${D}="${s(o)}"`);let M;if(Z.placeholder||Z.dominantColor&&$.useDominantColor){let D=Z.placeholder?`background-image: url('${Z.placeholder}'); background-size: cover; background-position: center;`:`background-color: ${Z.dominantColor};`;M=`<div id="${_}" class="stx-img-placeholder" style="${D}">
588
+ `.trim()}async function E3($,Z){let Y=await T3();if(!Y)return d0({...$,process:!1},Z);let G=Z.tsImagesConfig;if($.responsiveWidths&&$.responsiveWidths.length>0||$.widths&&$.widths.length>0||!$.width&&!$.dpr){let J=await Y.generateResponsiveVariants($.src,$,G);if(J)return x$($,J,Z)}else{let J=await Y.processImage($.src,$,G);if(J.processed)return s1($,J,Z)}return d0({...$,process:!1},Z)}async function s1($,Z,Y){let{alt:G,width:X,height:J,lazy:Q=!0,priority:K=!1,objectFit:U,objectPosition:z,crossorigin:W,referrerpolicy:q}=$,B=$.class,H=$.style,_=$.id||`stx-img-${Math.random().toString(36).slice(2,8)}`,j=$.data||{},O=Z.variants||[],F=O.find((D)=>D.format==="jpeg")||O.find((D)=>D.format==="webp")||O[0],L=F?.url||$.src,w=O.filter((D)=>D.format===(F?.format||"jpeg")).map((D)=>`${D.url} ${D.width}w`).join(", "),T=new Map;for(let D of O){if(!T.has(D.format))T.set(D.format,[]);T.get(D.format).push(D)}let A=[],N=["avif","webp","jpeg","png"];for(let D of N){let o=T.get(D);if(o&&o.length>0){let E0=o.map((L0)=>`${L0.url} ${L0.width}w`).join(", "),U0=v1(D);if(Q&&!K)A.push(` <source type="${U0}" data-srcset="${E0}" />`);else A.push(` <source type="${U0}" srcset="${E0}" />`)}}let R=[];if(Q&&!K){if(R.push(`data-src="${s(L)}"`),R.push('src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"'),w)R.push(`data-srcset="${w}"`)}else if(R.push(`src="${s(L)}"`),w)R.push(`srcset="${w}"`);R.push(`alt="${s(G)}"`);let k=X||Z.originalWidth,I=J||Z.originalHeight;if(k)R.push(`width="${k}"`);if(I)R.push(`height="${I}"`);if(!K)R.push(`loading="${Q?"lazy":"eager"}"`);if(R.push('decoding="async"'),K)R.push('fetchpriority="high"');if(W)R.push(`crossorigin="${W}"`);if(q)R.push(`referrerpolicy="${q}"`);let E=[];if(U)E.push(`object-fit: ${U}`);if(z)E.push(`object-position: ${z}`);if(Z.placeholder&&Q)E.push("opacity: 0; transition: opacity 300ms ease-out");if(H)E.push(H);if(E.length>0)R.push(`style="${E.join("; ")}"`);let b=[];if(B)b.push(B);if(Z.placeholder)b.push("stx-img-blur");if(b.length>0)R.push(`class="${b.join(" ")}"`);if(Q&&!K)R.push("data-stx-lazy");for(let[D,o]of Object.entries(j))R.push(`data-${D}="${s(o)}"`);let M;if(Z.placeholder||Z.dominantColor&&$.useDominantColor){let D=Z.placeholder?`background-image: url('${Z.placeholder}'); background-size: cover; background-position: center;`:`background-color: ${Z.dominantColor};`;M=`<div id="${_}" class="stx-img-placeholder" style="${D}">
589
589
  <picture>
590
590
  ${A.join(`
591
591
  `)}
592
- <img ${w.join(" ")} />
592
+ <img ${R.join(" ")} />
593
593
  </picture>
594
594
  </div>`}else M=`<picture${_?` id="${_}"`:""}>
595
595
  ${A.join(`
596
596
  `)}
597
- <img ${w.join(" ")} />
598
- </picture>`;let g=[];if(Z.placeholder)g.push(g1);let Y0=Q?v$(_):void 0,u;if(K&&R)u=`<link rel="preload" as="image" imagesrcset="${R}" />`;return{html:M,preloadLink:u,css:g.length>0?g.join(`
597
+ <img ${R.join(" ")} />
598
+ </picture>`;let g=[];if(Z.placeholder)g.push(g1);let Y0=Q?v$(_):void 0,u;if(K&&w)u=`<link rel="preload" as="image" imagesrcset="${w}" />`;return{html:M,preloadLink:u,css:g.length>0?g.join(`
599
599
  `):void 0,script:Y0}}async function x$($,Z,Y){let G={src:Z.src,processed:!0,variants:[],placeholder:Z.placeholder?.dataURL,originalWidth:Z.placeholder?.width,originalHeight:Z.placeholder?.height};for(let[X,J]of Object.entries(Z.byFormat))if(J)G.variants.push(...J);return s1($,G,Y)}var y$=!1,i1=80,m0="async",u0="lazy",C$=!1;var f$=V(()=>{x1();j$()});function k3(){return S0({name:"img",hasEndTag:!1,description:"Render an optimized responsive image with srcset and lazy loading",transform:async($,Z,Y,G)=>{let{src:X,alt:J,options:Q}=b3($,Z,Y);if(!X)return console.warn("@img directive: missing src argument"),"<!-- @img: missing src -->";let K={src:X,alt:J||"",widths:Q.widths||W0,formats:Q.formats||A0,quality:Q.quality,sizes:Q.sizes,dpr:Q.dpr,params:Q.params,placeholder:Q.placeholder,placeholderOptions:Q.placeholderOptions,lazy:Q.lazy!==!1,priority:Q.priority||!1,loading:Q.loading,decoding:Q.decoding,fetchpriority:Q.fetchpriority,objectFit:Q.objectFit,objectPosition:Q.objectPosition,class:Q.class,style:Q.style,id:Q.id,width:Q.width,height:Q.height},U=Y.__isDev||!1,z=await d0(K,{isDev:U}),W=z.html;if(z.preloadLink)W=z.preloadLink+`
600
600
  `+W;if(z.css)W+=`
601
601
  <style>${z.css}</style>`;if(z.script)W+=`
602
- <script>${z.script}</script>`;return W},defaults:{src:"",alt:"",options:{lazy:!0,placeholder:"none"}}})}function b3($,Z,Y){if(Z.src)return{src:String(Z.src),alt:String(Z.alt||""),options:Z.options||{}};let G=$.trim();if(G.startsWith("@img(")||G.startsWith("("))G=G.replace(/^@img\(/,"").replace(/^\(/,"").replace(/\)$/,"");let X=S3(G),J=r1(X[0],Y)||"",Q=r1(X[1],Y)||"",K={};if(X[2]){let U=r1(X[2],Y);if(typeof U==="object"&&U!==null)K=U;else if(typeof X[2]==="string")try{K=JSON.parse(X[2])}catch{}}return{src:J,alt:Q,options:K}}function S3($){let Z=[],Y="",G=!1,X="",J=0,Q=0;for(let K=0;K<$.length;K++){let U=$[K],z=K>0?$[K-1]:"";if((U==='"'||U==="'"||U==="`")&&z!=="\\"){if(!G)G=!0,X=U;else if(U===X)G=!1,X="";else Y+=U;continue}if(!G){if(U==="{")J++;if(U==="}")J--;if(U==="[")Q++;if(U==="]")Q--;if(U===","&&J===0&&Q===0){Z.push(Y.trim()),Y="";continue}}Y+=U}if(Y.trim())Z.push(Y.trim());return Z}function r1($,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 G=Z[Y];if(G!==void 0)return G}if(Y.startsWith("{")||Y.startsWith("["))try{return JSON.parse(Y)}catch{}return Y}var g$;var h$=V(()=>{y1();f$();x1();g$=k3()});class c0{config;constructor($={}){this.config={...y3,...$}}async get($,Z){return C0($,Z,"video",this.config)}async set($,Z,Y){return P0($,Z,Y,"video",this.config)}async clear(){return v0("video",this.config)}updateConfig($){this.config={...this.config,...$}}}function a1($){if(!l0)l0=new c0($);else if($)l0.updateConfig($);return l0}async function p0($,Z,Y){let G=Y?{directory:`${Y.outputDir}/../.cache`}:{};return a1(G).get($,Z)}async function i0($,Z,Y,G){let X=G?{directory:`${G.outputDir}/../.cache`}:{};return a1(X).set($,Z,Y)}async function d$(){return a1().clear()}var y3,l0=null;var t1=V(()=>{m1();y3={enabled:!0,directory:".stx/media-cache",maxAge:30,maxSize:2000,cacheTranscoded:!0,cacheThumbnails:!0,cacheManifests:!0}});import{resolve as e1,basename as $5,extname as Z5,join as n0}from"path";import{mkdir as Y5}from"fs/promises";async function X5(){try{return await import("ts-videos")}catch{return null}}async function o0($,Z,Y,G){let X=await X5();if(!X)return console.warn("[stx-media] ts-videos not installed, cannot generate poster"),null;try{let J=e1($);if(!await f(J))return null;await Y5(Y,{recursive:!0});let Q=await h(J),K=$5($,Z5($)),U=Z.format||"webp",z=Z.timestamp||0,W=`${K}-poster-${Q}.${U}`,q=n0(Y,W),B=await X.extractThumbnails(J,{timestamps:[z],width:Z.width||1280,height:Z.height,format:U,quality:Z.quality||85,outputDir:Y,outputPattern:W.replace(`.${U}`,"")});if(B&&B.length>0){let H=B[0];return{path:q,url:`${G}/${W}`,width:H.width||Z.width||1280,height:H.height||720,timestamp:z,size:H.size||0}}return null}catch(J){return console.warn(`[stx-media] Failed to generate poster: ${J}`),null}}async function s0($,Z,Y,G){let X=await X5();if(!X)return[];try{let J=e1($);if(!await f(J))return[];await Y5(Y,{recursive:!0});let Q=await h(J),K=$5($,Z5($)),U=Z.format||"webp",q=(await new X.Input(J).getInfo()).duration||60,B=Z.count||10,H=Z.interval||q/B,_=[];for(let O=0;O<B&&O*H<q;O++)_.push(O*H);let j=await X.extractThumbnails(J,{timestamps:_,width:Z.width||320,format:U,quality:Z.quality||80,outputDir:Y,outputPattern:`${K}-thumb-${Q}`});if(j&&j.length>0)return j.map((O,F)=>({path:O.path||n0(Y,`${K}-thumb-${Q}-${F}.${U}`),url:`${G}/${K}-thumb-${Q}-${F}.${U}`,width:O.width||Z.width||320,height:O.height||180,timestamp:_[F],size:O.size||0}));return[]}catch(J){return console.warn(`[stx-media] Failed to generate thumbnails: ${J}`),[]}}async function m$($,Z,Y,G){let X=await X5();if(!X)return console.warn("[stx-media] ts-videos not installed, cannot generate sprite sheet"),null;try{let J=e1($);if(!await f(J))return null;await Y5(Y,{recursive:!0});let Q=await h(J),K=$5($,Z5($)),W=(await new X.Input(J).getInfo()).duration||60,q=Z.columns||10,B=Z.interval||5,H=Z.thumbnailWidth||160,_=Z.thumbnailHeight||90,j=Z.format||"jpeg",O=Math.ceil(W/B),F=Math.ceil(O/q),L=`${K}-sprite-${Q}.${j}`,R=n0(Y,L),T=[];for(let N=0;N<O;N++)T.push(N*B);let A=await X.extractThumbnails(J,{timestamps:T,width:H,height:_,format:j,quality:Z.quality||70,outputDir:n0(Y,".temp")});if(!A||A.length===0)return null;try{let N=await import("ts-images"),w=q*H,k=F*_,I=await N.createSprite({images:A.map((E)=>E.path),columns:q,padding:0,outputPath:R,format:j,quality:Z.quality||70});return{url:`${G}/${L}`,path:R,columns:q,rows:F,thumbnailWidth:H,thumbnailHeight:_,interval:B,totalFrames:O}}catch{return console.warn("[stx-media] ts-images not installed, sprite sheet generation skipped"),null}}catch(J){return console.warn(`[stx-media] Failed to generate sprite sheet: ${J}`),null}}var J5=V(()=>{G0()});import{resolve as l$,basename as c$,extname as p$,join as Q0}from"path";import{mkdir as r0,writeFile as i$}from"fs/promises";async function n$(){try{return await import("ts-videos")}catch{return null}}async function a0($,Z,Y,G,X){let J=await n$();if(!J)return console.warn("[stx-media] ts-videos not installed, cannot generate HLS manifest"),null;try{let Q=l$($);if(!await f(Q))return null;let K=await h(Q),U=c$($,p$($)),z=Q0(Y,`${U}-${K}-hls`);await r0(z,{recursive:!0});let W=Z.length>0?Z:o$,q=X?.segmentDuration||6,_=(await new J.Input(Q).getInfo()).duration||0,j=[],O=0;for(let R of W){let T=Q0(z,R.label);await r0(T,{recursive:!0});let A=`${R.label}.m3u8`,N=Q0(T,A);try{let w=await J.generateHLS(Q,{outputDir:T,segmentDuration:q,width:R.width,height:R.height,videoBitrate:R.bitrate,audioBitrate:R.audioBitrate,playlistName:R.label});if(w)j.push({quality:R,url:`${G}/${U}-${K}-hls/${R.label}/${A}`,path:N}),O+=w.segmentCount||Math.ceil(_/q)}catch(w){console.warn(`[stx-media] Failed to generate HLS for ${R.label}: ${w}`)}}if(j.length===0)return null;let F=Q0(z,"master.m3u8"),L=C3(j,G,U,K);return await i$(F,L),{manifestUrl:`${G}/${U}-${K}-hls/master.m3u8`,manifestPath:F,playlists:j,segmentCount:O,duration:_}}catch(Q){return console.warn(`[stx-media] Failed to generate HLS manifest: ${Q}`),null}}function C3($,Z,Y,G){let X=["#EXTM3U","#EXT-X-VERSION:3"];for(let J of $){let{quality:Q}=J,K=Q.bitrate+(Q.audioBitrate||128000),U=`${Q.width}x${Q.height||Math.round(Q.width*9/16)}`;X.push(`#EXT-X-STREAM-INF:BANDWIDTH=${K},RESOLUTION=${U},NAME="${Q.label}"`,`${Q.label}/${Q.label}.m3u8`)}return X.join(`
603
- `)}async function t0($,Z,Y,G,X){let J=await n$();if(!J)return console.warn("[stx-media] ts-videos not installed, cannot generate DASH manifest"),null;try{let Q=l$($);if(!await f(Q))return null;let K=await h(Q),U=c$($,p$($)),z=Q0(Y,`${U}-${K}-dash`);await r0(z,{recursive:!0});let W=Z.length>0?Z:o$,q=X?.segmentDuration||4,B=X?.minBufferTime||2,j=(await new J.Input(Q).getInfo()).duration||0,O=[],F=[];for(let A of W){let N=Q0(z,A.label);await r0(N,{recursive:!0});try{if(await J.generateDASH(Q,{outputDir:N,segmentDuration:q,width:A.width,height:A.height,videoBitrate:A.bitrate,audioBitrate:A.audioBitrate})){if(O.push({bandwidth:A.bitrate,width:A.width,height:A.height||Math.round(A.width*9/16),url:`${G}/${U}-${K}-dash/${A.label}/video`}),A.audioBitrate)F.push({bandwidth:A.audioBitrate,url:`${G}/${U}-${K}-dash/${A.label}/audio`})}}catch(w){console.warn(`[stx-media] Failed to generate DASH for ${A.label}: ${w}`)}}if(O.length===0)return null;let L=Q0(z,"manifest.mpd"),R=P3(O,F,j,q,B);await i$(L,R);let T=[{type:"video",representations:O}];if(F.length>0)T.push({type:"audio",representations:F});return{manifestUrl:`${G}/${U}-${K}-dash/manifest.mpd`,manifestPath:L,adaptationSets:T,duration:j}}catch(Q){return console.warn(`[stx-media] Failed to generate DASH manifest: ${Q}`),null}}function P3($,Z,Y,G,X){let J=u$(Y),Q=u$(X),K=`<?xml version="1.0" encoding="UTF-8"?>
602
+ <script>${z.script}</script>`;return W},defaults:{src:"",alt:"",options:{lazy:!0,placeholder:"none"}}})}function b3($,Z,Y){if(Z.src)return{src:String(Z.src),alt:String(Z.alt||""),options:Z.options||{}};let G=$.trim();if(G.startsWith("@img(")||G.startsWith("("))G=G.replace(/^@img\(/,"").replace(/^\(/,"").replace(/\)$/,"");let X=S3(G),J=r1(X[0],Y)||"",Q=r1(X[1],Y)||"",K={};if(X[2]){let U=r1(X[2],Y);if(typeof U==="object"&&U!==null)K=U;else if(typeof X[2]==="string")try{K=JSON.parse(X[2])}catch{}}return{src:J,alt:Q,options:K}}function S3($){let Z=[],Y="",G=!1,X="",J=0,Q=0;for(let K=0;K<$.length;K++){let U=$[K],z=K>0?$[K-1]:"";if((U==='"'||U==="'"||U==="`")&&z!=="\\"){if(!G)G=!0,X=U;else if(U===X)G=!1,X="";else Y+=U;continue}if(!G){if(U==="{")J++;if(U==="}")J--;if(U==="[")Q++;if(U==="]")Q--;if(U===","&&J===0&&Q===0){Z.push(Y.trim()),Y="";continue}}Y+=U}if(Y.trim())Z.push(Y.trim());return Z}function r1($,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 G=Z[Y];if(G!==void 0)return G}if(Y.startsWith("{")||Y.startsWith("["))try{return JSON.parse(Y)}catch{}return Y}var g$;var h$=V(()=>{y1();f$();x1();g$=k3()});class c0{config;constructor($={}){this.config={...y3,...$}}async get($,Z){return C0($,Z,"video",this.config)}async set($,Z,Y){return P0($,Z,Y,"video",this.config)}async clear(){return v0("video",this.config)}updateConfig($){this.config={...this.config,...$}}}function a1($){if(!l0)l0=new c0($);else if($)l0.updateConfig($);return l0}async function p0($,Z,Y){let G=Y?{directory:`${Y.outputDir}/../.cache`}:{};return a1(G).get($,Z)}async function i0($,Z,Y,G){let X=G?{directory:`${G.outputDir}/../.cache`}:{};return a1(X).set($,Z,Y)}async function d$(){return a1().clear()}var y3,l0=null;var t1=V(()=>{m1();y3={enabled:!0,directory:".stx/media-cache",maxAge:30,maxSize:2000,cacheTranscoded:!0,cacheThumbnails:!0,cacheManifests:!0}});import{resolve as e1,basename as $5,extname as Z5,join as n0}from"path";import{mkdir as Y5}from"fs/promises";async function X5(){try{return await import("ts-videos")}catch{return null}}async function o0($,Z,Y,G){let X=await X5();if(!X)return console.warn("[stx-media] ts-videos not installed, cannot generate poster"),null;try{let J=e1($);if(!await f(J))return null;await Y5(Y,{recursive:!0});let Q=await h(J),K=$5($,Z5($)),U=Z.format||"webp",z=Z.timestamp||0,W=`${K}-poster-${Q}.${U}`,q=n0(Y,W),B=await X.extractThumbnails(J,{timestamps:[z],width:Z.width||1280,height:Z.height,format:U,quality:Z.quality||85,outputDir:Y,outputPattern:W.replace(`.${U}`,"")});if(B&&B.length>0){let H=B[0];return{path:q,url:`${G}/${W}`,width:H.width||Z.width||1280,height:H.height||720,timestamp:z,size:H.size||0}}return null}catch(J){return console.warn(`[stx-media] Failed to generate poster: ${J}`),null}}async function s0($,Z,Y,G){let X=await X5();if(!X)return[];try{let J=e1($);if(!await f(J))return[];await Y5(Y,{recursive:!0});let Q=await h(J),K=$5($,Z5($)),U=Z.format||"webp",q=(await new X.Input(J).getInfo()).duration||60,B=Z.count||10,H=Z.interval||q/B,_=[];for(let O=0;O<B&&O*H<q;O++)_.push(O*H);let j=await X.extractThumbnails(J,{timestamps:_,width:Z.width||320,format:U,quality:Z.quality||80,outputDir:Y,outputPattern:`${K}-thumb-${Q}`});if(j&&j.length>0)return j.map((O,F)=>({path:O.path||n0(Y,`${K}-thumb-${Q}-${F}.${U}`),url:`${G}/${K}-thumb-${Q}-${F}.${U}`,width:O.width||Z.width||320,height:O.height||180,timestamp:_[F],size:O.size||0}));return[]}catch(J){return console.warn(`[stx-media] Failed to generate thumbnails: ${J}`),[]}}async function m$($,Z,Y,G){let X=await X5();if(!X)return console.warn("[stx-media] ts-videos not installed, cannot generate sprite sheet"),null;try{let J=e1($);if(!await f(J))return null;await Y5(Y,{recursive:!0});let Q=await h(J),K=$5($,Z5($)),W=(await new X.Input(J).getInfo()).duration||60,q=Z.columns||10,B=Z.interval||5,H=Z.thumbnailWidth||160,_=Z.thumbnailHeight||90,j=Z.format||"jpeg",O=Math.ceil(W/B),F=Math.ceil(O/q),L=`${K}-sprite-${Q}.${j}`,w=n0(Y,L),T=[];for(let N=0;N<O;N++)T.push(N*B);let A=await X.extractThumbnails(J,{timestamps:T,width:H,height:_,format:j,quality:Z.quality||70,outputDir:n0(Y,".temp")});if(!A||A.length===0)return null;try{let N=await import("ts-images"),R=q*H,k=F*_,I=await N.createSprite({images:A.map((E)=>E.path),columns:q,padding:0,outputPath:w,format:j,quality:Z.quality||70});return{url:`${G}/${L}`,path:w,columns:q,rows:F,thumbnailWidth:H,thumbnailHeight:_,interval:B,totalFrames:O}}catch{return console.warn("[stx-media] ts-images not installed, sprite sheet generation skipped"),null}}catch(J){return console.warn(`[stx-media] Failed to generate sprite sheet: ${J}`),null}}var J5=V(()=>{G0()});import{resolve as l$,basename as c$,extname as p$,join as Q0}from"path";import{mkdir as r0,writeFile as i$}from"fs/promises";async function n$(){try{return await import("ts-videos")}catch{return null}}async function a0($,Z,Y,G,X){let J=await n$();if(!J)return console.warn("[stx-media] ts-videos not installed, cannot generate HLS manifest"),null;try{let Q=l$($);if(!await f(Q))return null;let K=await h(Q),U=c$($,p$($)),z=Q0(Y,`${U}-${K}-hls`);await r0(z,{recursive:!0});let W=Z.length>0?Z:o$,q=X?.segmentDuration||6,_=(await new J.Input(Q).getInfo()).duration||0,j=[],O=0;for(let w of W){let T=Q0(z,w.label);await r0(T,{recursive:!0});let A=`${w.label}.m3u8`,N=Q0(T,A);try{let R=await J.generateHLS(Q,{outputDir:T,segmentDuration:q,width:w.width,height:w.height,videoBitrate:w.bitrate,audioBitrate:w.audioBitrate,playlistName:w.label});if(R)j.push({quality:w,url:`${G}/${U}-${K}-hls/${w.label}/${A}`,path:N}),O+=R.segmentCount||Math.ceil(_/q)}catch(R){console.warn(`[stx-media] Failed to generate HLS for ${w.label}: ${R}`)}}if(j.length===0)return null;let F=Q0(z,"master.m3u8"),L=C3(j,G,U,K);return await i$(F,L),{manifestUrl:`${G}/${U}-${K}-hls/master.m3u8`,manifestPath:F,playlists:j,segmentCount:O,duration:_}}catch(Q){return console.warn(`[stx-media] Failed to generate HLS manifest: ${Q}`),null}}function C3($,Z,Y,G){let X=["#EXTM3U","#EXT-X-VERSION:3"];for(let J of $){let{quality:Q}=J,K=Q.bitrate+(Q.audioBitrate||128000),U=`${Q.width}x${Q.height||Math.round(Q.width*9/16)}`;X.push(`#EXT-X-STREAM-INF:BANDWIDTH=${K},RESOLUTION=${U},NAME="${Q.label}"`,`${Q.label}/${Q.label}.m3u8`)}return X.join(`
603
+ `)}async function t0($,Z,Y,G,X){let J=await n$();if(!J)return console.warn("[stx-media] ts-videos not installed, cannot generate DASH manifest"),null;try{let Q=l$($);if(!await f(Q))return null;let K=await h(Q),U=c$($,p$($)),z=Q0(Y,`${U}-${K}-dash`);await r0(z,{recursive:!0});let W=Z.length>0?Z:o$,q=X?.segmentDuration||4,B=X?.minBufferTime||2,j=(await new J.Input(Q).getInfo()).duration||0,O=[],F=[];for(let A of W){let N=Q0(z,A.label);await r0(N,{recursive:!0});try{if(await J.generateDASH(Q,{outputDir:N,segmentDuration:q,width:A.width,height:A.height,videoBitrate:A.bitrate,audioBitrate:A.audioBitrate})){if(O.push({bandwidth:A.bitrate,width:A.width,height:A.height||Math.round(A.width*9/16),url:`${G}/${U}-${K}-dash/${A.label}/video`}),A.audioBitrate)F.push({bandwidth:A.audioBitrate,url:`${G}/${U}-${K}-dash/${A.label}/audio`})}}catch(R){console.warn(`[stx-media] Failed to generate DASH for ${A.label}: ${R}`)}}if(O.length===0)return null;let L=Q0(z,"manifest.mpd"),w=P3(O,F,j,q,B);await i$(L,w);let T=[{type:"video",representations:O}];if(F.length>0)T.push({type:"audio",representations:F});return{manifestUrl:`${G}/${U}-${K}-dash/manifest.mpd`,manifestPath:L,adaptationSets:T,duration:j}}catch(Q){return console.warn(`[stx-media] Failed to generate DASH manifest: ${Q}`),null}}function P3($,Z,Y,G,X){let J=u$(Y),Q=u$(X),K=`<?xml version="1.0" encoding="UTF-8"?>
604
604
  <MPD xmlns="urn:mpeg:dash:schema:mpd:2011"
605
605
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
606
606
  xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd"
@@ -626,7 +626,7 @@ ${A.join(`
626
626
  </Representation>
627
627
  `}K+=` </AdaptationSet>
628
628
  `}return K+=` </Period>
629
- </MPD>`,K}function u$($){let Z=Math.floor($/3600),Y=Math.floor($%3600/60),G=Math.floor($%60),X="PT";if(Z>0)X+=`${Z}H`;if(Y>0)X+=`${Y}M`;return X+=`${G}S`,X}var o$;var G5=V(()=>{G0();o$=[{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 s$,basename as v3,extname as x3,join as f3}from"path";import{mkdir as g3}from"fs/promises";async function r$(){try{return await import("ts-videos")}catch{return null}}function h3($){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 d3($){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 Q5($){let Z=await r$();if(!Z)return null;try{let Y=s$($),X=await new Z.Input(Y).getInfo();return{duration:X.duration||0,width:X.width||0,height:X.height||0,frameRate:X.frameRate||0,bitrate:X.bitrate||0,codec:X.videoCodec||"",audioCodec:X.audioCodec}}catch(Y){return console.warn(`[stx-media] Failed to analyze video: ${Y}`),null}}async function a$($,Z,Y,G){let X=await r$();if(!X)return console.warn("[stx-media] ts-videos not installed, skipping processing"),{src:$,processed:!1};let J=await p0($,Z,Y);if(J)return J;try{let Q=s$($);if(!await f(Q))return{src:$,processed:!1,errors:[`Source file not found: ${$}`]};let K=Y.outputDir||"dist/videos",U=Y.baseUrl||"/videos";await g3(K,{recursive:!0});let z=await h(Q),W=v3($,x3($)),q={src:$,processed:!0,hash:z};G?.({percentage:5,stage:"analyzing"}),q.metadata=await Q5(Q)||void 0;let B={};if(Z.quality)B.bitrate=h3(Z.quality);if(Z.platform)Object.assign(B,d3(Z.platform));if(Z.transcode)Object.assign(B,Z.transcode);if(Object.keys(B).length>0||Z.process){G?.({percentage:10,stage:"transcoding"});let H=`${W}-${z}.mp4`,_=f3(K,H);try{let j=await m3(Q,_,B,X,(O)=>G?.({percentage:10+O*0.5,stage:"transcoding"}));if(j)q.transcoded={path:_,url:`${U}/${H}`,duration:j.duration,size:j.size,video:{codec:B.codec||"h264",width:j.width,height:j.height,bitrate:j.bitrate,frameRate:j.frameRate},audio:j.audioCodec?{codec:B.audioCodec||"aac",bitrate:B.audioBitrate||128000,sampleRate:B.sampleRate||48000,channels:B.channels||2}:void 0}}catch(j){q.errors=q.errors||[],q.errors.push(`Transcoding failed: ${j}`)}}if(Z.generatePoster){G?.({percentage:65,stage:"generating-poster"});let H=typeof Z.generatePoster==="object"?Z.generatePoster:{timestamp:0},_=await o0(Q,H,K,U);if(_)q.poster=_}if(Y.thumbnails?.enabled){G?.({percentage:70,stage:"generating-thumbnails"});let H=await s0(Q,Y.thumbnails,K,U);if(H.length>0)q.thumbnails=H}if(Z.streaming){G?.({percentage:80,stage:"generating-manifests"});let H=typeof Z.streaming==="object"?Z.streaming:Y.streaming||{format:"hls"};if(H.format==="hls"||H.format===void 0){let _=await a0(Q,H.qualities||Y.streaming?.defaultQualities||[],K,U);if(_)q.streaming={...q.streaming,hls:_}}if(H.format==="dash"){let _=await t0(Q,H.qualities||Y.streaming?.defaultQualities||[],K,U);if(_)q.streaming={...q.streaming,dash:_}}}if(Z.spriteSheet)G?.({percentage:90,stage:"generating-sprite-sheet"});return G?.({percentage:100,stage:"complete"}),await i0($,Z,q,Y),q}catch(Q){return{src:$,processed:!1,errors:[`Processing failed: ${Q}`]}}}async function m3($,Z,Y,G,X){try{let Q=await new G.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)=>{X?.(K.percentage/100)});return{duration:Q.duration||0,size:Q.size||0,width:Q.width||Y.maxWidth||0,height:Q.height||Y.maxHeight||0,bitrate:Q.bitrate||Y.bitrate||0,frameRate:Q.frameRate||Y.frameRate||30,audioCodec:Q.audioCodec}}catch(J){return console.error(`[stx-media] Transcoding failed: ${J}`),null}}var t$=V(()=>{G0();t1();J5();G5()});var e$={};z0(e$,{setCachedVideoResult:()=>i0,processVideo:()=>a$,getCachedVideoResult:()=>p0,generateThumbnails:()=>s0,generateSpriteSheet:()=>m$,generatePoster:()=>o0,generateHLSManifest:()=>a0,generateDASHManifest:()=>t0,clearVideoCache:()=>d$,analyzeVideo:()=>Q5,VideoProcessorCache:()=>c0});var $4=V(()=>{t$();J5();G5();t1()});async function Y4(){try{return await Promise.resolve().then(() => ($4(),e$))}catch($){if(!Z4)console.warn("[stx-media] Video processor not available, some features disabled:",$),Z4=!0;return null}}async function e0($,Z={}){let Y=Z,G=$;if(G.process&&!G.skipProcessing){if(Y.tsVideosConfig?.enabled&&!Y.isDev)return n3(G,Y)}if(Y.processedResult?.processed)return Q4($,Y.processedResult,Z);let X;if(G.generatePoster&&G.src&&!$.poster)X=await o3(G,Y);let{src:J,sources:Q=[],poster:K,posterPlaceholder:U,controls:z=X4,autoplay:W=!1,muted:q=!1,loop:B=!1,preload:H=J4,playsinline:_=!0,lazy:j=!0,player:O="native",type:F,width:L,height:R,crossorigin:T,disablePictureInPicture:A=!1,disableRemotePlayback:N=!1}=$,w=X||K,k=$.class,I=$.style,E=$.id||`stx-video-${Math.random().toString(36).slice(2,8)}`;if(O==="ts-video")return c3($,Z);if(F&&F!=="video")return l3(J||"",F,$);let b=Q.length>0?Q:J?[{src:J,type:G4(J)}]:[],M=[`id="${E}"`];if(z)M.push("controls");if(W)M.push("autoplay");if(q)M.push("muted");if(B)M.push("loop");if(_)M.push("playsinline");if(A)M.push("disablepictureinpicture");if(N)M.push("disableremoteplayback");if(T)M.push(`crossorigin="${T}"`);if(j){if(M.push(`data-preload="${H}"`),M.push('preload="none"'),w)M.push(`data-poster="${C(w)}"`);M.push("data-stx-lazy")}else if(M.push(`preload="${H}"`),w)M.push(`poster="${C(w)}"`);if(L)M.push(`width="${L}"`);if(R)M.push(`height="${R}"`);if(k)M.push(`class="${C(k)}"`);if(I)M.push(`style="${C(I)}"`);let g=b.map((D)=>{return` <source ${j?`data-src="${C(D.src)}"`:`src="${C(D.src)}"`} type="${D.type}"${D.media?` media="${D.media}"`:""} />`}).join(`
629
+ </MPD>`,K}function u$($){let Z=Math.floor($/3600),Y=Math.floor($%3600/60),G=Math.floor($%60),X="PT";if(Z>0)X+=`${Z}H`;if(Y>0)X+=`${Y}M`;return X+=`${G}S`,X}var o$;var G5=V(()=>{G0();o$=[{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 s$,basename as v3,extname as x3,join as f3}from"path";import{mkdir as g3}from"fs/promises";async function r$(){try{return await import("ts-videos")}catch{return null}}function h3($){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 d3($){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 Q5($){let Z=await r$();if(!Z)return null;try{let Y=s$($),X=await new Z.Input(Y).getInfo();return{duration:X.duration||0,width:X.width||0,height:X.height||0,frameRate:X.frameRate||0,bitrate:X.bitrate||0,codec:X.videoCodec||"",audioCodec:X.audioCodec}}catch(Y){return console.warn(`[stx-media] Failed to analyze video: ${Y}`),null}}async function a$($,Z,Y,G){let X=await r$();if(!X)return console.warn("[stx-media] ts-videos not installed, skipping processing"),{src:$,processed:!1};let J=await p0($,Z,Y);if(J)return J;try{let Q=s$($);if(!await f(Q))return{src:$,processed:!1,errors:[`Source file not found: ${$}`]};let K=Y.outputDir||"dist/videos",U=Y.baseUrl||"/videos";await g3(K,{recursive:!0});let z=await h(Q),W=v3($,x3($)),q={src:$,processed:!0,hash:z};G?.({percentage:5,stage:"analyzing"}),q.metadata=await Q5(Q)||void 0;let B={};if(Z.quality)B.bitrate=h3(Z.quality);if(Z.platform)Object.assign(B,d3(Z.platform));if(Z.transcode)Object.assign(B,Z.transcode);if(Object.keys(B).length>0||Z.process){G?.({percentage:10,stage:"transcoding"});let H=`${W}-${z}.mp4`,_=f3(K,H);try{let j=await m3(Q,_,B,X,(O)=>G?.({percentage:10+O*0.5,stage:"transcoding"}));if(j)q.transcoded={path:_,url:`${U}/${H}`,duration:j.duration,size:j.size,video:{codec:B.codec||"h264",width:j.width,height:j.height,bitrate:j.bitrate,frameRate:j.frameRate},audio:j.audioCodec?{codec:B.audioCodec||"aac",bitrate:B.audioBitrate||128000,sampleRate:B.sampleRate||48000,channels:B.channels||2}:void 0}}catch(j){q.errors=q.errors||[],q.errors.push(`Transcoding failed: ${j}`)}}if(Z.generatePoster){G?.({percentage:65,stage:"generating-poster"});let H=typeof Z.generatePoster==="object"?Z.generatePoster:{timestamp:0},_=await o0(Q,H,K,U);if(_)q.poster=_}if(Y.thumbnails?.enabled){G?.({percentage:70,stage:"generating-thumbnails"});let H=await s0(Q,Y.thumbnails,K,U);if(H.length>0)q.thumbnails=H}if(Z.streaming){G?.({percentage:80,stage:"generating-manifests"});let H=typeof Z.streaming==="object"?Z.streaming:Y.streaming||{format:"hls"};if(H.format==="hls"||H.format===void 0){let _=await a0(Q,H.qualities||Y.streaming?.defaultQualities||[],K,U);if(_)q.streaming={...q.streaming,hls:_}}if(H.format==="dash"){let _=await t0(Q,H.qualities||Y.streaming?.defaultQualities||[],K,U);if(_)q.streaming={...q.streaming,dash:_}}}if(Z.spriteSheet)G?.({percentage:90,stage:"generating-sprite-sheet"});return G?.({percentage:100,stage:"complete"}),await i0($,Z,q,Y),q}catch(Q){return{src:$,processed:!1,errors:[`Processing failed: ${Q}`]}}}async function m3($,Z,Y,G,X){try{let Q=await new G.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)=>{X?.(K.percentage/100)});return{duration:Q.duration||0,size:Q.size||0,width:Q.width||Y.maxWidth||0,height:Q.height||Y.maxHeight||0,bitrate:Q.bitrate||Y.bitrate||0,frameRate:Q.frameRate||Y.frameRate||30,audioCodec:Q.audioCodec}}catch(J){return console.error(`[stx-media] Transcoding failed: ${J}`),null}}var t$=V(()=>{G0();t1();J5();G5()});var e$={};z0(e$,{setCachedVideoResult:()=>i0,processVideo:()=>a$,getCachedVideoResult:()=>p0,generateThumbnails:()=>s0,generateSpriteSheet:()=>m$,generatePoster:()=>o0,generateHLSManifest:()=>a0,generateDASHManifest:()=>t0,clearVideoCache:()=>d$,analyzeVideo:()=>Q5,VideoProcessorCache:()=>c0});var $4=V(()=>{t$();J5();G5();t1()});async function Y4(){try{return await Promise.resolve().then(() => ($4(),e$))}catch($){if(!Z4)console.warn("[stx-media] Video processor not available, some features disabled:",$),Z4=!0;return null}}async function e0($,Z={}){let Y=Z,G=$;if(G.process&&!G.skipProcessing){if(Y.tsVideosConfig?.enabled&&!Y.isDev)return n3(G,Y)}if(Y.processedResult?.processed)return Q4($,Y.processedResult,Z);let X;if(G.generatePoster&&G.src&&!$.poster)X=await o3(G,Y);let{src:J,sources:Q=[],poster:K,posterPlaceholder:U,controls:z=X4,autoplay:W=!1,muted:q=!1,loop:B=!1,preload:H=J4,playsinline:_=!0,lazy:j=!0,player:O="native",type:F,width:L,height:w,crossorigin:T,disablePictureInPicture:A=!1,disableRemotePlayback:N=!1}=$,R=X||K,k=$.class,I=$.style,E=$.id||`stx-video-${Math.random().toString(36).slice(2,8)}`;if(O==="ts-video")return c3($,Z);if(F&&F!=="video")return l3(J||"",F,$);let b=Q.length>0?Q:J?[{src:J,type:G4(J)}]:[],M=[`id="${E}"`];if(z)M.push("controls");if(W)M.push("autoplay");if(q)M.push("muted");if(B)M.push("loop");if(_)M.push("playsinline");if(A)M.push("disablepictureinpicture");if(N)M.push("disableremoteplayback");if(T)M.push(`crossorigin="${T}"`);if(j){if(M.push(`data-preload="${H}"`),M.push('preload="none"'),R)M.push(`data-poster="${C(R)}"`);M.push("data-stx-lazy")}else if(M.push(`preload="${H}"`),R)M.push(`poster="${C(R)}"`);if(L)M.push(`width="${L}"`);if(w)M.push(`height="${w}"`);if(k)M.push(`class="${C(k)}"`);if(I)M.push(`style="${C(I)}"`);let g=b.map((D)=>{return` <source ${j?`data-src="${C(D.src)}"`:`src="${C(D.src)}"`} type="${D.type}"${D.media?` media="${D.media}"`:""} />`}).join(`
630
630
  `),Y0=`<video ${M.join(" ")}>
631
631
  ${g}
632
632
  Your browser does not support the video tag.
@@ -667,7 +667,7 @@ ${g}
667
667
  })();
668
668
  `.trim();return{html:Y0,script:u}}function l3($,Z,Y){let{width:G=640,height:X=360}=Y,J=Y.class,Q=Y.style,K=Y.id||`stx-embed-${Math.random().toString(36).slice(2,8)}`,U,z=null;switch(Z){case"youtube":z=p3($),U=z?`https://www.youtube-nocookie.com/embed/${z}`:$;break;case"vimeo":z=i3($),U=z?`https://player.vimeo.com/video/${z}`:$;break;case"dailymotion":z=$.split("/").pop()||"",U=`https://www.dailymotion.com/embed/video/${z}`;break;case"twitch":z=$.split("/").pop()||"",U=`https://player.twitch.tv/?video=${z}&parent=${typeof window<"u"?window.location.hostname:"localhost"}`;break;default:U=$}let W=[`id="${K}"`,`src="${C(U)}"`,`width="${G}"`,`height="${X}"`,'frameborder="0"',"allowfullscreen",'allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"'];if(J)W.push(`class="${C(J)}"`);if(Q)W.push(`style="${C(Q)}"`);if(Y.lazy)W.push('loading="lazy"');return{html:`<div class="stx-video-embed" style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;">
669
669
  <iframe ${W.join(" ")} style="position:absolute;top:0;left:0;width:100%;height:100%;"></iframe>
670
- </div>`}}function c3($,Z={}){let{src:Y,sources:G=[],poster:X,controls:J=!0,autoplay:Q=!1,muted:K=!1,loop:U=!1,preload:z="metadata",playsinline:W=!0,lazy:q=!0,width:B,height:H}=$,_=$.class,j=$.style,O=$.id||`ts-video-${Math.random().toString(36).slice(2,8)}`,F={src:G.length>0?G:Y,autoplay:Q,loop:U,muted:K,playsinline:W,preload:z,poster:X,controls:J,title:$.title},L=["position: relative",B?`width: ${typeof B==="number"?B+"px":B}`:"width: 100%",H?`height: ${typeof H==="number"?H+"px":H}`:"",j||""].filter(Boolean).join("; "),R=`
670
+ </div>`}}function c3($,Z={}){let{src:Y,sources:G=[],poster:X,controls:J=!0,autoplay:Q=!1,muted:K=!1,loop:U=!1,preload:z="metadata",playsinline:W=!0,lazy:q=!0,width:B,height:H}=$,_=$.class,j=$.style,O=$.id||`ts-video-${Math.random().toString(36).slice(2,8)}`,F={src:G.length>0?G:Y,autoplay:Q,loop:U,muted:K,playsinline:W,preload:z,poster:X,controls:J,title:$.title},L=["position: relative",B?`width: ${typeof B==="number"?B+"px":B}`:"width: 100%",H?`height: ${typeof H==="number"?H+"px":H}`:"",j||""].filter(Boolean).join("; "),w=`
671
671
  <div
672
672
  id="${O}"
673
673
  class="ts-video-player${_?" "+C(_):""}"
@@ -834,7 +834,7 @@ else {
834
834
  .ts-video-player__play-button svg {
835
835
  margin-left: 4px;
836
836
  }
837
- `.trim();return{html:R,script:T,css:A}}function G4($){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 p3($){let Z=[/youtube\.com\/watch\?v=([^&]+)/,/youtube\.com\/embed\/([^?]+)/,/youtu\.be\/([^?]+)/,/youtube\.com\/v\/([^?]+)/];for(let Y of Z){let G=$.match(Y);if(G)return G[1]}return null}function i3($){let Z=$.match(/vimeo\.com\/(\d+)/);return Z?Z[1]:null}function C($){return $.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}async function n3($,Z){let Y=await Y4();if(!Y)return e0({...$,process:!1},Z);let G=Z.tsVideosConfig,X=await Y.processVideo($.src,$,G,$.onProcessProgress);if(X.processed)return Q4($,X,Z);return e0({...$,process:!1},Z)}async function o3($,Z){let Y=await Y4();if(!Y||!$.src)return;let G=typeof $.generatePoster==="object"?$.generatePoster:{timestamp:0},X=Z.tsVideosConfig||{enabled:!0,outputDir:"dist/videos",baseUrl:"/videos"};return(await Y.generatePoster($.src,G,X.outputDir,X.baseUrl||"/videos"))?.url}function Q4($,Z,Y){let{controls:G=X4,autoplay:X=!1,muted:J=!1,loop:Q=!1,preload:K=J4,playsinline:U=!0,lazy:z=!0,width:W,height:q,crossorigin:B,disablePictureInPicture:H=!1,disableRemotePlayback:_=!1}=$,j=$.class,O=$.style,F=$.id||`stx-video-${Math.random().toString(36).slice(2,8)}`,L=$.src,R=G4(L);if(Z.transcoded)L=Z.transcoded.url,R="video/mp4";let T=Z.streaming?.hls||Z.streaming?.dash;if(T){if(Z.streaming?.hls)L=Z.streaming.hls.manifestUrl,R="application/x-mpegURL";else if(Z.streaming?.dash)L=Z.streaming.dash.manifestUrl,R="application/dash+xml"}let A=Z.poster?.url||$.poster,N=[`id="${F}"`];if(G)N.push("controls");if(X)N.push("autoplay");if(J)N.push("muted");if(Q)N.push("loop");if(U)N.push("playsinline");if(H)N.push("disablepictureinpicture");if(_)N.push("disableremoteplayback");if(B)N.push(`crossorigin="${B}"`);if(z){if(N.push(`data-preload="${K}"`),N.push('preload="none"'),A)N.push(`data-poster="${C(A)}"`);N.push("data-stx-lazy")}else if(N.push(`preload="${K}"`),A)N.push(`poster="${C(A)}"`);let w=W||Z.metadata?.width,k=q||Z.metadata?.height;if(w)N.push(`width="${w}"`);if(k)N.push(`height="${k}"`);if(j)N.push(`class="${C(j)}"`);if(O)N.push(`style="${C(O)}"`);let E=` <source ${z?`data-src="${C(L)}"`:`src="${C(L)}"`} type="${R}" />`,b=`<video ${N.join(" ")}>
837
+ `.trim();return{html:w,script:T,css:A}}function G4($){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 p3($){let Z=[/youtube\.com\/watch\?v=([^&]+)/,/youtube\.com\/embed\/([^?]+)/,/youtu\.be\/([^?]+)/,/youtube\.com\/v\/([^?]+)/];for(let Y of Z){let G=$.match(Y);if(G)return G[1]}return null}function i3($){let Z=$.match(/vimeo\.com\/(\d+)/);return Z?Z[1]:null}function C($){return $.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}async function n3($,Z){let Y=await Y4();if(!Y)return e0({...$,process:!1},Z);let G=Z.tsVideosConfig,X=await Y.processVideo($.src,$,G,$.onProcessProgress);if(X.processed)return Q4($,X,Z);return e0({...$,process:!1},Z)}async function o3($,Z){let Y=await Y4();if(!Y||!$.src)return;let G=typeof $.generatePoster==="object"?$.generatePoster:{timestamp:0},X=Z.tsVideosConfig||{enabled:!0,outputDir:"dist/videos",baseUrl:"/videos"};return(await Y.generatePoster($.src,G,X.outputDir,X.baseUrl||"/videos"))?.url}function Q4($,Z,Y){let{controls:G=X4,autoplay:X=!1,muted:J=!1,loop:Q=!1,preload:K=J4,playsinline:U=!0,lazy:z=!0,width:W,height:q,crossorigin:B,disablePictureInPicture:H=!1,disableRemotePlayback:_=!1}=$,j=$.class,O=$.style,F=$.id||`stx-video-${Math.random().toString(36).slice(2,8)}`,L=$.src,w=G4(L);if(Z.transcoded)L=Z.transcoded.url,w="video/mp4";let T=Z.streaming?.hls||Z.streaming?.dash;if(T){if(Z.streaming?.hls)L=Z.streaming.hls.manifestUrl,w="application/x-mpegURL";else if(Z.streaming?.dash)L=Z.streaming.dash.manifestUrl,w="application/dash+xml"}let A=Z.poster?.url||$.poster,N=[`id="${F}"`];if(G)N.push("controls");if(X)N.push("autoplay");if(J)N.push("muted");if(Q)N.push("loop");if(U)N.push("playsinline");if(H)N.push("disablepictureinpicture");if(_)N.push("disableremoteplayback");if(B)N.push(`crossorigin="${B}"`);if(z){if(N.push(`data-preload="${K}"`),N.push('preload="none"'),A)N.push(`data-poster="${C(A)}"`);N.push("data-stx-lazy")}else if(N.push(`preload="${K}"`),A)N.push(`poster="${C(A)}"`);let R=W||Z.metadata?.width,k=q||Z.metadata?.height;if(R)N.push(`width="${R}"`);if(k)N.push(`height="${k}"`);if(j)N.push(`class="${C(j)}"`);if(O)N.push(`style="${C(O)}"`);let E=` <source ${z?`data-src="${C(L)}"`:`src="${C(L)}"`} type="${w}" />`,b=`<video ${N.join(" ")}>
838
838
  ${E}
839
839
  Your browser does not support the video tag.
840
840
  </video>`;if(Z.spriteSheet)b=`<div class="stx-video-wrapper" data-sprite-sheet="${C(Z.spriteSheet.url)}" data-sprite-cols="${Z.spriteSheet.columns}" data-sprite-interval="${Z.spriteSheet.interval}">
@@ -1261,7 +1261,7 @@ ${W}
1261
1261
  customElements.define('${Z}', ${Q});
1262
1262
  `}async function A4($,Z,Y,G){if(Z.length<1)return l("WebComponent","@webcomponent directive requires at least the tag name parameter",d.INVALID_DIRECTIVE_SYNTAX);let X=Z[0].replace(/['"]/g,""),Q=(Y.__stx_options||{}).componentsDir||"components",K=[T0.join(T0.dirname(G),Q,`${X}.stx`),T0.join(process.cwd(),Q,`${X}.stx`),T0.join(T0.dirname(G),`${X}.stx`)],U=null;for(let q of K)if(await c(q)){U=await Bun.file(q).text();break}if(!U)return l("WebComponent",`Component file not found: ${X}.stx`,d.FILE_NOT_FOUND);let z=F6(U,X);return`<script type="module">
1263
1263
  ${w6(z)}
1264
- </script>`}var N4=V(()=>{a();x()});var T4={};z0(T4,{timingPlugin:()=>M6,pluginManager:()=>A6,definePlugin:()=>Y1,debugPlugin:()=>I6,createVariablesPlugin:()=>D6,createFilterPlugin:()=>T6,createDirectivePlugin:()=>N6,PluginManager:()=>O5});function Y1($){return $}class O5{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,G]of this.plugins)if(G.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 G of this.sortedPlugins){let X=G[$];if(X)try{let J=await X(Y);if(J){if(J.template!==void 0)Y.template=J.template;if(J.context)Y.context={...Y.context,...J.context};if(J.metadata)Y.metadata={...Y.metadata,...J.metadata};if(J.skip)break}}catch(J){console.error(`Error in plugin "${G.name}" ${$} hook:`,J)}}return Y}async runDirectiveHooks($,Z,Y){let G={...Y};for(let X of this.sortedPlugins){let J=X[$];if(J)try{let Q=await J(Z,G);if(Q){if(Q.template!==void 0)G.template=Q.template;if(Q.context)G.context={...G.context,...Q.context};if(Q.metadata)G.metadata={...G.metadata,...Q.metadata};if(Q.skip)break}}catch(Q){console.error(`Error in plugin "${X.name}" ${$} hook:`,Q)}}return G}}function N6($,Z,Y={}){return{name:$,...Y,registerDirectives:()=>Z}}function T6($,Z,Y={}){return{name:$,...Y,registerFilters:()=>Z}}function D6($){return Y1({name:"stx-variables",version:"1.0.0",description:"Adds predefined variables to template context",beforeProcess(Z){return{context:{...Z.context,...$}}}})}var A6,I6,M6;var I4=V(()=>{A6=new O5;I6=Y1({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)}}),M6=Y1({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`)}}})});import V5 from"fs";import m from"path";import{loadConfigWithResult as E6}from"bunfig";function k6($,Z){let Y=Z||"pages";if($)return{root:$,pagesDir:Y};let G=m.join(process.cwd(),"resources","views"),X=m.join(process.cwd(),"resources","layouts");if(V5.existsSync(G)&&V5.existsSync(X))return{root:"resources",pagesDir:"views"};let J=m.join(process.cwd(),"resources","views","pages");if(V5.existsSync(J))return{root:"resources/views",pagesDir:Y};return{root:".",pagesDir:Y}}async function b6($){if(!$){if(H0)return H0;if(X1)return X1}let Z=$?m.resolve($):process.cwd(),Y=M4.get(Z);if(Y)return Y;let G=(async()=>{let J=(await E6({name:"stx",alias:"ui",cwd:Z,defaultConfig:D4,verbose:!1})).config,Q=k6(J.root,J.pagesDir);if(J.root=Q.root,J.pagesDir=Q.pagesDir,J.root&&J.root!=="."){let K=J.root;if(J.partialsDir&&!m.isAbsolute(J.partialsDir))J.partialsDir=m.join(K,J.partialsDir);if(J.componentsDir&&!m.isAbsolute(J.componentsDir))J.componentsDir=m.join(K,J.componentsDir);if(J.layoutsDir&&!m.isAbsolute(J.layoutsDir))J.layoutsDir=m.join(K,J.layoutsDir)}if(J.plugins&&J.plugins.length>0){let{pluginManager:K}=await Promise.resolve().then(() => (I4(),T4)),U=[],z=[];for(let W of J.plugins){let q=typeof W==="string"?W:W[0],B=typeof W==="string"?{}:W[1]||{};try{let H,_;try{H=await import(q),_=m.dirname(P.resolve(q))}catch{let O=m.resolve(process.cwd(),q);H=await import(O),_=m.dirname(O)}let j=H.default||H;if(K.register(j,J),j.components){let O=m.resolve(_,j.components);U.push(O)}if(j.pages){let O=m.resolve(_,j.pages),F=B.path||"/";z.push({dir:O,prefix:F})}if(j.setup){let O={addDirective:(F)=>{J.customDirectives=J.customDirectives||[],J.customDirectives.push(F)},addRoute:(F,L)=>{J.apiRoutes=J.apiRoutes||{},J.apiRoutes[F]=L},addMiddleware:(F)=>{J.middleware=J.middleware||[],J.middleware.push(F)},pluginDir:_,config:J};await j.setup(B,O)}console.log(`[stx] Plugin loaded: ${j.name||q}`)}catch(H){console.warn(`[stx] Failed to load plugin ${q}:`,H.message)}}J._pluginComponentDirs=U,J._pluginPageDirs=z}return J})();if(M4.set(Z,G),!$)X1=G,G.then((X)=>{H0=X}).catch(()=>{});return G}var D4,H0=null,M4,X1=null,S6;var E4=V(()=>{I1();E1();k1();D1();S1();h$();U5();W4();j5();N4();D4={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:W$,hasEndTag:!0,description:"Render markdown content to HTML"},{name:"webcomponent",handler:A4,hasEndTag:!1,description:"Include a web component in the template"},s5,r5,w4,R4,Z$,X$,J$,Y$,z$,$$,g$,K5,...q4],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}};M4=new Map;S6=new Proxy(D4,{get($,Z){if(H0&&Z in H0)return H0[Z];if(!X1)b6().catch((Y)=>{console.warn("[stx] Failed to load config file:",Y?.message||Y)});return $[Z]}})});import{createHighlighter as e2}from"ts-syntax-highlighter";var k4=V(()=>{E4();x()});var b4=V(()=>{v()});function j0($,Z,Y,G=0){let X=0,J=G,Q=null,K=0,U=!1;while(J<$.length){let z=$[J];if(Q&&U){U=!1,J++;continue}if(Q&&z==="\\"){U=!0,J++;continue}if(U=!1,(z==='"'||z==="'"||z==="`")&&!Q){Q=z,J++;continue}if(z===Q&&Q!=="`"){Q=null,J++;continue}if(Q==="`"&&z==="$"&&$[J+1]==="{"){K++,J+=2;continue}if(K>0&&z==="}"){K--,J++;continue}if(z==="`"&&Q==="`"&&K===0){Q=null,J++;continue}if(Q){J++;continue}if(z===Z)X++;else if(z===Y){if(X--,X===0)return J}J++}return-1}function J1($,Z){let Y=y6($,Z);return Y.ok?{expression:Y.expression,endPos:Y.endPos}:null}function y6($,Z){let Y=Z;while(Y<$.length&&/\s/.test($[Y]))Y++;if($[Y]!=="(")return{ok:!1,reason:"missing-open-paren",pos:Y};let G=j0($,"(",")",Y);if(G===-1)return{ok:!1,reason:"unclosed-paren",pos:Y};return{ok:!0,expression:$.slice(Y+1,G),endPos:G+1}}function L5($,Z,Y,G){let X=1,J=G,Q=new RegExp(`@${Z}\\s*\\(`,"g"),K=new RegExp(`@${Y}(?![a-z])`,"g");while(J<$.length&&X>0){Q.lastIndex=J,K.lastIndex=J;let U=Q.exec($),z=K.exec($),W=U?U.index:1/0,q=z?z.index:1/0;if(W<q)X++,J=W+U[0].length;else if(q<1/0){if(X--,X===0)return q;J=q+z[0].length}else break}return-1}function S4($,Z){let Y=$.slice(Z).match(/^@if\s*/);if(!Y)return null;let G=Z+Y[0].length,X=J1($,G);if(!X)return null;let J=X.endPos,Q=L5($,"if","endif",J);if(Q===-1)return null;let K=$.slice(J,Q),U=[],z=0,W="if",q=X.expression,B=0,H=0;while(z<K.length){let _=K.indexOf("@",z);if(_===-1)break;z=_;let j=K.substring(_);if(/^@if\s*\(/.test(j)){H++,z++;continue}if(/^@endif(?![a-z])/.test(j)){H--,z+=6;continue}if(H===0){let O=j.match(/^@elseif\s*/);if(O){U.push({type:W,condition:q,content:K.substring(B,z),start:J+B,end:J+z});let F=z+O[0].length,L=J1(K,F);if(!L){z++;continue}W="elseif",q=L.expression,z=L.endPos,B=z;continue}else if(/^@else(?![a-z])/.test(j)){U.push({type:W,condition:q,content:K.substring(B,z),start:J+B,end:J+z}),W="else",q=void 0,z+=5,B=z;continue}}z++}return U.push({type:W,condition:q,content:K.slice(B),start:J+B,end:J+K.length}),{fullMatch:$.slice(Z,Q+6),branches:U,start:Z,end:Q+6}}function G1($){let Z=[],Y=/@if\s*\(/g,G=Y.exec($);while(G!==null){if(Z.some((Q)=>G.index>Q.start&&G.index<Q.end)){G=Y.exec($);continue}let J=S4($,G.index);if(J)Z.push(J),Y.lastIndex=J.end;G=Y.exec($)}return Z}var y4=()=>{};var C4=()=>{};var Q1=V(()=>{y4();C4()});var K1=V(()=>{b4();a();Q1();v()});var P4=()=>{};var v4=()=>{};var x4=V(()=>{a();q0()});var F5=()=>{};var f4=V(()=>{v()});var g4=V(()=>{a();v()});var pY;var d4=V(()=>{K1();J0();q0();v();x();pY=new R0(500)});var m4=V(()=>{q0();x()});var u4=V(()=>{K1();a();J0();Q1();v()});var l4=V(()=>{J0();x()});import{defineRoute as HX,defineRoutes as jX,resetRoutes as OX,route as VX,setAppUrl as LX}from"stx-router";import{route as qX}from"stx-router";var c4=V(()=>{v()});var p4=()=>{};var i4=()=>{};var n4=()=>{};var o4=V(()=>{x();v()});var R5=()=>{};import i from"path";import A5 from"fs";function r4($){return $.split("-").map((Z)=>Z.charAt(0).toUpperCase()+Z.slice(1)).join("")}function a4($){return $.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}class t4{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,G){let X=$.endsWith(".stx")?$.slice(0,-4):$,J=G?.__importedComponents;if(J){let H=[X,X.toLowerCase(),r4(X),a4(X)];for(let _ of H)if(J.has(_))return J.get(_)}let Q=[...new Set([`${X}.stx`,`${r4(X)}.stx`,`${a4(X)}.stx`])];if(X.startsWith("./")||X.startsWith("../")){let H=i.resolve(i.dirname(Z),`${X}.stx`);if(await c(H))return H;return null}let K=[],U=Y.componentsDir||"",z=G?.__originalFilePath;if(z)K.push(i.join(i.dirname(z),"components"));if(U)K.push(U);let W=i.join(i.dirname(Z),"components");if(!K.includes(W))K.push(W);let q=process.cwd(),B=[i.resolve(q,"src/components"),i.resolve(q,"components"),i.resolve(import.meta.dir,"components")];for(let H of B)if(!K.includes(H))K.push(H);for(let H of K){if(!H)continue;for(let _ of Q){let j=i.join(H,_);if(await c(j))return j}try{if(!A5.statSync(H,{throwIfNoEntry:!1})?.isDirectory())continue;let j=A5.readdirSync(H,{withFileTypes:!0});for(let O of j)if(O.isDirectory()){let F=i.join(H,O.name);for(let L of Q){let R=i.join(F,L);if(await c(R))return R}}}catch{}}return null}}var e4;var N5=V(()=>{x();e4=new t4});var T5=()=>{};var I5=()=>{};var M5=()=>{};var D5=()=>{};var k5=()=>{};var b5=()=>{};var S5=()=>{};var y5=()=>{};var C5=()=>{};var P5=()=>{};var $7=V(()=>{T5();I5();M5();D5();k5();b5();S5();y5();C5();P5();N5();T5();I5();M5();D5();k5();b5();S5();y5();C5();P5()});var Z7=V(()=>{v();x();b0()});var Y7=V(()=>{N5();$7();Z7();x();v()});import e6 from"process";function O0($="STX_PUBLIC_"){let Z={},Y={};for(let[G,X]of Object.entries(e6.env)){if(!G.startsWith($)||X===void 0)continue;Z[`import.meta.env.${G}`]=JSON.stringify(X),Y[G]=X}return Z["import.meta.env"]=JSON.stringify(Y),Z}var I0=()=>{};var X7=V(()=>{I0()});var v5=V(()=>{a();v()});var x5=()=>{};var J7=()=>{};function _1($){let Z=$,Y=new Set,G=new Set,X=()=>{if(p)G.add(p);return Z};return X.set=(J)=>{if(!Object.is(J,Z)){let Q=Z;if(Z=J,Y.forEach((K)=>K(Z,Q)),M0)G.forEach((K)=>W1.add(K));else G.forEach((K)=>K())}},X.update=(J)=>{X.set(J(Z))},X.subscribe=(J)=>{return Y.add(J),()=>Y.delete(J)},Object.defineProperty(X,"_isSignal",{value:!0,writable:!1}),X}function B1($){let Z,Y=!0,G=new Set,X=()=>{if(!Y)if(Y=!0,M0)G.forEach((Q)=>W1.add(Q));else G.forEach((Q)=>Q())},J=()=>{if(p)G.add(p);if(Y){let Q=p;p=X,q1.push(X);try{Z=$()}finally{q1.pop(),p=Q}Y=!1}return Z};return Object.defineProperty(J,"_isDerived",{value:!0,writable:!1}),J}function H1($,Z={}){let Y,G=!1,X=()=>{if(G)return;if(Y)Y(),Y=void 0;let J=p;p=X,q1.push(X);try{Y=$()}finally{q1.pop(),p=J}};if(Z.immediate!==!1)X();return()=>{if(G=!0,Y)Y()}}function f5($){if(M0){$();return}M0=!0;try{$()}finally{M0=!1,W1.forEach((Z)=>Z()),W1.clear()}}function g5($){$9.push($)}function h5($){Z9.push($)}function j1($){return typeof $==="function"&&$._isSignal===!0}function O1($){return typeof $==="function"&&$._isDerived===!0}function d5($){if(j1($)||O1($))return $();return $}function V1($){let Z=p;p=null;try{return $()}finally{p=Z}}function Y9($,Z){let Y=typeof $==="function"?$:()=>$,G=_1([]),X=B1(()=>G().reduce((K,U)=>Z(K,U.action),Y())),J=!1;return H1(()=>{if(Y(),!J){J=!0;return}if(V1(()=>G().length))G.set([])}),[X,(K,U)=>{let z={action:K};G.set([...G(),z]);let W=()=>{let q=G().filter((B)=>B!==z);if(q.length!==G().length)G.set(q)};if(U&&typeof U.then==="function")Promise.resolve(U).then(W,W);return W}]}var p=null,q1,M0=!1,W1,$9,Z9;var m5=V(()=>{q1=[],W1=new Set,$9=[],Z9=[]});var Q7={};z0(Q7,{useOptimistic:()=>Y9,untrack:()=>d5,state:()=>_1,peek:()=>V1,onMount:()=>g5,onDestroy:()=>h5,isSignal:()=>j1,isDerived:()=>O1,generateSignalsRuntimeDev:()=>L1,generateSignalsRuntime:()=>G7,effect:()=>H1,derived:()=>B1,default:()=>J9,batch:()=>f5});function G7(){try{let $=X9(L1()),Y=new Bun.Transpiler({loader:"js",minifyWhitespace:!0}).transformSync($);return Y=Y.replace(/\}(var |let |const |function )/g,"};$1"),Y}catch{return L1()}}function X9($){let Z=[],Y=0,G="console.log(";while(Y<$.length){let X=$.indexOf(G,Y);if(X===-1){Z.push($.slice(Y));break}Z.push($.slice(Y,X));let J=1,Q=X+G.length;while(Q<$.length&&J>0){let K=$[Q];if(K==='"'||K==="'"||K==="`"){let U=K;Q++;while(Q<$.length&&$[Q]!==U){if($[Q]==="\\")Q++;Q++}Q++;continue}if(K==="(")J++;else if(K===")")J--;Q++}Z.push("0"),Y=Q}return Z.join("")}function L1(){return`
1264
+ </script>`}var N4=V(()=>{a();x()});var T4={};z0(T4,{timingPlugin:()=>M6,pluginManager:()=>A6,definePlugin:()=>Y1,debugPlugin:()=>I6,createVariablesPlugin:()=>D6,createFilterPlugin:()=>T6,createDirectivePlugin:()=>N6,PluginManager:()=>O5});function Y1($){return $}class O5{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,G]of this.plugins)if(G.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 G of this.sortedPlugins){let X=G[$];if(X)try{let J=await X(Y);if(J){if(J.template!==void 0)Y.template=J.template;if(J.context)Y.context={...Y.context,...J.context};if(J.metadata)Y.metadata={...Y.metadata,...J.metadata};if(J.skip)break}}catch(J){console.error(`Error in plugin "${G.name}" ${$} hook:`,J)}}return Y}async runDirectiveHooks($,Z,Y){let G={...Y};for(let X of this.sortedPlugins){let J=X[$];if(J)try{let Q=await J(Z,G);if(Q){if(Q.template!==void 0)G.template=Q.template;if(Q.context)G.context={...G.context,...Q.context};if(Q.metadata)G.metadata={...G.metadata,...Q.metadata};if(Q.skip)break}}catch(Q){console.error(`Error in plugin "${X.name}" ${$} hook:`,Q)}}return G}}function N6($,Z,Y={}){return{name:$,...Y,registerDirectives:()=>Z}}function T6($,Z,Y={}){return{name:$,...Y,registerFilters:()=>Z}}function D6($){return Y1({name:"stx-variables",version:"1.0.0",description:"Adds predefined variables to template context",beforeProcess(Z){return{context:{...Z.context,...$}}}})}var A6,I6,M6;var I4=V(()=>{A6=new O5;I6=Y1({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)}}),M6=Y1({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`)}}})});import V5 from"fs";import m from"path";import{loadConfigWithResult as E6}from"bunfig";function k6($,Z){let Y=Z||"pages";if($)return{root:$,pagesDir:Y};let G=m.join(process.cwd(),"resources","views"),X=m.join(process.cwd(),"resources","layouts");if(V5.existsSync(G)&&V5.existsSync(X))return{root:"resources",pagesDir:"views"};let J=m.join(process.cwd(),"resources","views","pages");if(V5.existsSync(J))return{root:"resources/views",pagesDir:Y};return{root:".",pagesDir:Y}}async function b6($){if(!$){if(H0)return H0;if(X1)return X1}let Z=$?m.resolve($):process.cwd(),Y=M4.get(Z);if(Y)return Y;let G=(async()=>{let J=(await E6({name:"stx",alias:"ui",cwd:Z,defaultConfig:D4,verbose:!1})).config,Q=k6(J.root,J.pagesDir);if(J.root=Q.root,J.pagesDir=Q.pagesDir,J.root&&J.root!=="."){let K=J.root;if(J.partialsDir&&!m.isAbsolute(J.partialsDir))J.partialsDir=m.join(K,J.partialsDir);if(J.componentsDir&&!m.isAbsolute(J.componentsDir))J.componentsDir=m.join(K,J.componentsDir);if(J.layoutsDir&&!m.isAbsolute(J.layoutsDir))J.layoutsDir=m.join(K,J.layoutsDir)}if(J.plugins&&J.plugins.length>0){let{pluginManager:K}=await Promise.resolve().then(() => (I4(),T4)),U=[],z=[];for(let W of J.plugins){let q=typeof W==="string"?W:W[0],B=typeof W==="string"?{}:W[1]||{};try{let H,_;try{H=await import(q),_=m.dirname(P.resolve(q))}catch{let O=m.resolve(process.cwd(),q);H=await import(O),_=m.dirname(O)}let j=H.default||H;if(K.register(j,J),j.components){let O=m.resolve(_,j.components);U.push(O)}if(j.pages){let O=m.resolve(_,j.pages),F=B.path||"/";z.push({dir:O,prefix:F})}if(j.setup){let O={addDirective:(F)=>{J.customDirectives=J.customDirectives||[],J.customDirectives.push(F)},addRoute:(F,L)=>{J.apiRoutes=J.apiRoutes||{},J.apiRoutes[F]=L},addMiddleware:(F)=>{J.middleware=J.middleware||[],J.middleware.push(F)},pluginDir:_,config:J};await j.setup(B,O)}console.log(`[stx] Plugin loaded: ${j.name||q}`)}catch(H){console.warn(`[stx] Failed to load plugin ${q}:`,H.message)}}J._pluginComponentDirs=U,J._pluginPageDirs=z}return J})();if(M4.set(Z,G),!$)X1=G,G.then((X)=>{H0=X}).catch(()=>{});return G}var D4,H0=null,M4,X1=null,S6;var E4=V(()=>{I1();E1();k1();D1();S1();h$();U5();W4();j5();N4();D4={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:W$,hasEndTag:!0,description:"Render markdown content to HTML"},{name:"webcomponent",handler:A4,hasEndTag:!1,description:"Include a web component in the template"},s5,r5,w4,R4,Z$,X$,J$,Y$,z$,$$,g$,K5,...q4],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}};M4=new Map;S6=new Proxy(D4,{get($,Z){if(H0&&Z in H0)return H0[Z];if(!X1)b6().catch((Y)=>{console.warn("[stx] Failed to load config file:",Y?.message||Y)});return $[Z]}})});import{createHighlighter as e2}from"ts-syntax-highlighter";var k4=V(()=>{E4();x()});var b4=V(()=>{v()});function j0($,Z,Y,G=0){let X=0,J=G,Q=null,K=0,U=!1;while(J<$.length){let z=$[J];if(Q&&U){U=!1,J++;continue}if(Q&&z==="\\"){U=!0,J++;continue}if(U=!1,(z==='"'||z==="'"||z==="`")&&!Q){Q=z,J++;continue}if(z===Q&&Q!=="`"){Q=null,J++;continue}if(Q==="`"&&z==="$"&&$[J+1]==="{"){K++,J+=2;continue}if(K>0&&z==="}"){K--,J++;continue}if(z==="`"&&Q==="`"&&K===0){Q=null,J++;continue}if(Q){J++;continue}if(z===Z)X++;else if(z===Y){if(X--,X===0)return J}J++}return-1}function J1($,Z){let Y=y6($,Z);return Y.ok?{expression:Y.expression,endPos:Y.endPos}:null}function y6($,Z){let Y=Z;while(Y<$.length&&/\s/.test($[Y]))Y++;if($[Y]!=="(")return{ok:!1,reason:"missing-open-paren",pos:Y};let G=j0($,"(",")",Y);if(G===-1)return{ok:!1,reason:"unclosed-paren",pos:Y};return{ok:!0,expression:$.slice(Y+1,G),endPos:G+1}}function L5($,Z,Y,G){let X=1,J=G,Q=new RegExp(`@${Z}\\s*\\(`,"g"),K=new RegExp(`@${Y}(?![a-z])`,"g");while(J<$.length&&X>0){Q.lastIndex=J,K.lastIndex=J;let U=Q.exec($),z=K.exec($),W=U?U.index:1/0,q=z?z.index:1/0;if(W<q)X++,J=W+U[0].length;else if(q<1/0){if(X--,X===0)return q;J=q+z[0].length}else break}return-1}function S4($,Z){let Y=$.slice(Z).match(/^@if\s*/);if(!Y)return null;let G=Z+Y[0].length,X=J1($,G);if(!X)return null;let J=X.endPos,Q=L5($,"if","endif",J);if(Q===-1)return null;let K=$.slice(J,Q),U=[],z=0,W="if",q=X.expression,B=0,H=0;while(z<K.length){let _=K.indexOf("@",z);if(_===-1)break;z=_;let j=K.substring(_);if(/^@if\s*\(/.test(j)){H++,z++;continue}if(/^@endif(?![a-z])/.test(j)){H--,z+=6;continue}if(H===0){let O=j.match(/^@elseif\s*/);if(O){U.push({type:W,condition:q,content:K.substring(B,z),start:J+B,end:J+z});let F=z+O[0].length,L=J1(K,F);if(!L){z++;continue}W="elseif",q=L.expression,z=L.endPos,B=z;continue}else if(/^@else(?![a-z])/.test(j)){U.push({type:W,condition:q,content:K.substring(B,z),start:J+B,end:J+z}),W="else",q=void 0,z+=5,B=z;continue}}z++}return U.push({type:W,condition:q,content:K.slice(B),start:J+B,end:J+K.length}),{fullMatch:$.slice(Z,Q+6),branches:U,start:Z,end:Q+6}}function G1($){let Z=[],Y=/@if\s*\(/g,G=Y.exec($);while(G!==null){if(Z.some((Q)=>G.index>Q.start&&G.index<Q.end)){G=Y.exec($);continue}let J=S4($,G.index);if(J)Z.push(J),Y.lastIndex=J.end;G=Y.exec($)}return Z}var y4=()=>{};var C4=()=>{};var Q1=V(()=>{y4();C4()});var K1=V(()=>{b4();a();Q1();v()});var P4=()=>{};var v4=()=>{};var x4=V(()=>{a();q0()});var F5=()=>{};var f4=V(()=>{v()});var g4=V(()=>{a();v()});var pY;var d4=V(()=>{K1();J0();q0();v();x();pY=new R0(500)});var m4=V(()=>{q0();x()});var u4=V(()=>{K1();a();J0();Q1();v()});var l4=V(()=>{J0();x()});import{defineRoute as HX,defineRoutes as jX,resetRoutes as OX,route as VX,setAppUrl as LX}from"stx-router";import{route as qX}from"stx-router";var c4=V(()=>{v()});var p4=()=>{};var i4=()=>{};var n4=()=>{};var o4=V(()=>{x();v()});var R5=()=>{};import i from"path";import A5 from"fs";function r4($){return $.split("-").map((Z)=>Z.charAt(0).toUpperCase()+Z.slice(1)).join("")}function a4($){return $.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}class t4{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,G){let X=$.endsWith(".stx")?$.slice(0,-4):$,J=G?.__importedComponents;if(J){let H=[X,X.toLowerCase(),r4(X),a4(X)];for(let _ of H)if(J.has(_))return J.get(_)}let Q=[...new Set([`${X}.stx`,`${r4(X)}.stx`,`${a4(X)}.stx`])];if(X.startsWith("./")||X.startsWith("../")){let H=i.resolve(i.dirname(Z),`${X}.stx`);if(await c(H))return H;return null}let K=[],U=Y.componentsDir||"",z=G?.__originalFilePath;if(z)K.push(i.join(i.dirname(z),"components"));if(U)K.push(U);let W=i.join(i.dirname(Z),"components");if(!K.includes(W))K.push(W);let q=process.cwd(),B=[i.resolve(q,"src/components"),i.resolve(q,"components"),i.resolve(import.meta.dir,"components")];for(let H of B)if(!K.includes(H))K.push(H);for(let H of K){if(!H)continue;for(let _ of Q){let j=i.join(H,_);if(await c(j))return j}try{if(!A5.statSync(H,{throwIfNoEntry:!1})?.isDirectory())continue;let j=A5.readdirSync(H,{withFileTypes:!0});for(let O of j)if(O.isDirectory()){let F=i.join(H,O.name);for(let L of Q){let w=i.join(F,L);if(await c(w))return w}}}catch{}}return null}}var e4;var N5=V(()=>{x();e4=new t4});var T5=()=>{};var I5=()=>{};var M5=()=>{};var D5=()=>{};var k5=()=>{};var b5=()=>{};var S5=()=>{};var y5=()=>{};var C5=()=>{};var P5=()=>{};var $7=V(()=>{T5();I5();M5();D5();k5();b5();S5();y5();C5();P5();N5();T5();I5();M5();D5();k5();b5();S5();y5();C5();P5()});var Z7=V(()=>{v();x();b0()});var Y7=V(()=>{N5();$7();Z7();x();v()});import e6 from"process";function O0($="STX_PUBLIC_"){let Z={},Y={};for(let[G,X]of Object.entries(e6.env)){if(!G.startsWith($)||X===void 0)continue;Z[`import.meta.env.${G}`]=JSON.stringify(X),Y[G]=X}return Z["import.meta.env"]=JSON.stringify(Y),Z}var I0=()=>{};var X7=V(()=>{I0()});var v5=V(()=>{a();v()});var x5=()=>{};var J7=()=>{};function _1($){let Z=$,Y=new Set,G=new Set,X=()=>{if(p)G.add(p);return Z};return X.set=(J)=>{if(!Object.is(J,Z)){let Q=Z;if(Z=J,Y.forEach((K)=>K(Z,Q)),M0)G.forEach((K)=>W1.add(K));else G.forEach((K)=>K())}},X.update=(J)=>{X.set(J(Z))},X.subscribe=(J)=>{return Y.add(J),()=>Y.delete(J)},Object.defineProperty(X,"_isSignal",{value:!0,writable:!1}),X}function B1($){let Z,Y=!0,G=new Set,X=()=>{if(!Y)if(Y=!0,M0)G.forEach((Q)=>W1.add(Q));else G.forEach((Q)=>Q())},J=()=>{if(p)G.add(p);if(Y){let Q=p;p=X,q1.push(X);try{Z=$()}finally{q1.pop(),p=Q}Y=!1}return Z};return Object.defineProperty(J,"_isDerived",{value:!0,writable:!1}),J}function H1($,Z={}){let Y,G=!1,X=()=>{if(G)return;if(Y)Y(),Y=void 0;let J=p;p=X,q1.push(X);try{Y=$()}finally{q1.pop(),p=J}};if(Z.immediate!==!1)X();return()=>{if(G=!0,Y)Y()}}function f5($){if(M0){$();return}M0=!0;try{$()}finally{M0=!1,W1.forEach((Z)=>Z()),W1.clear()}}function g5($){$9.push($)}function h5($){Z9.push($)}function j1($){return typeof $==="function"&&$._isSignal===!0}function O1($){return typeof $==="function"&&$._isDerived===!0}function d5($){if(j1($)||O1($))return $();return $}function V1($){let Z=p;p=null;try{return $()}finally{p=Z}}function Y9($,Z){let Y=typeof $==="function"?$:()=>$,G=_1([]),X=B1(()=>G().reduce((K,U)=>Z(K,U.action),Y())),J=!1;return H1(()=>{if(Y(),!J){J=!0;return}if(V1(()=>G().length))G.set([])}),[X,(K,U)=>{let z={action:K};G.set([...G(),z]);let W=()=>{let q=G().filter((B)=>B!==z);if(q.length!==G().length)G.set(q)};if(U&&typeof U.then==="function")Promise.resolve(U).then(W,W);return W}]}var p=null,q1,M0=!1,W1,$9,Z9;var m5=V(()=>{q1=[],W1=new Set,$9=[],Z9=[]});var Q7={};z0(Q7,{useOptimistic:()=>Y9,untrack:()=>d5,state:()=>_1,peek:()=>V1,onMount:()=>g5,onDestroy:()=>h5,isSignal:()=>j1,isDerived:()=>O1,generateSignalsRuntimeDev:()=>L1,generateSignalsRuntime:()=>G7,effect:()=>H1,derived:()=>B1,default:()=>J9,batch:()=>f5});function G7(){try{let $=X9(L1()),Y=new Bun.Transpiler({loader:"js",minifyWhitespace:!0}).transformSync($);return Y=Y.replace(/\}(var |let |const |function )/g,"};$1"),Y}catch{return L1()}}function X9($){let Z=[],Y=0,G="console.log(";while(Y<$.length){let X=$.indexOf(G,Y);if(X===-1){Z.push($.slice(Y));break}Z.push($.slice(Y,X));let J=1,Q=X+G.length;while(Q<$.length&&J>0){let K=$[Q];if(K==='"'||K==="'"||K==="`"){let U=K;Q++;while(Q<$.length&&$[Q]!==U){if($[Q]==="\\")Q++;Q++}Q++;continue}if(K==="(")J++;else if(K===")")J--;Q++}Z.push("0"),Y=Q}return Z.join("")}function L1(){return`
1265
1265
  // STX Signals Runtime (Development Build)
1266
1266
  console.log('[stx] signals runtime loading');
1267
1267
  // Pre-initialization shim: capture onMount/onDestroy calls made before the runtime IIFE runs
@@ -2965,6 +2965,13 @@ catch (e2) {
2965
2965
 
2966
2966
  // Known directive names to exclude from generic :attr binding
2967
2967
  var DIRECTIVE_NAMES = {class:1, style:1, text:1, html:1, show:1, model:1, 'if':1, 'for':1, ref:1};
2968
+ // SVG attributes are case-sensitive, but the HTML parser lowercases
2969
+ // prefixed attribute names \u2014 ':viewBox' arrives as ':viewbox' because
2970
+ // the spec's "adjust SVG attributes" step only covers unprefixed names.
2971
+ // Without restoring the canonical casing, setAttribute('viewbox') creates
2972
+ // a dead duplicate attribute and the real viewBox never updates.
2973
+ var SVG_ATTR_CASE = {attributename:'attributeName', attributetype:'attributeType', basefrequency:'baseFrequency', baseprofile:'baseProfile', calcmode:'calcMode', clippathunits:'clipPathUnits', diffuseconstant:'diffuseConstant', edgemode:'edgeMode', filterunits:'filterUnits', glyphref:'glyphRef', gradienttransform:'gradientTransform', gradientunits:'gradientUnits', kernelmatrix:'kernelMatrix', kernelunitlength:'kernelUnitLength', keypoints:'keyPoints', keysplines:'keySplines', keytimes:'keyTimes', lengthadjust:'lengthAdjust', limitingconeangle:'limitingConeAngle', markerheight:'markerHeight', markerunits:'markerUnits', markerwidth:'markerWidth', maskcontentunits:'maskContentUnits', maskunits:'maskUnits', numoctaves:'numOctaves', pathlength:'pathLength', patterncontentunits:'patternContentUnits', patterntransform:'patternTransform', patternunits:'patternUnits', pointsatx:'pointsAtX', pointsaty:'pointsAtY', pointsatz:'pointsAtZ', preservealpha:'preserveAlpha', preserveaspectratio:'preserveAspectRatio', primitiveunits:'primitiveUnits', refx:'refX', refy:'refY', repeatcount:'repeatCount', repeatdur:'repeatDur', requiredextensions:'requiredExtensions', requiredfeatures:'requiredFeatures', specularconstant:'specularConstant', specularexponent:'specularExponent', spreadmethod:'spreadMethod', startoffset:'startOffset', stddeviation:'stdDeviation', stitchtiles:'stitchTiles', surfacescale:'surfaceScale', systemlanguage:'systemLanguage', tablevalues:'tableValues', targetx:'targetX', targety:'targetY', textlength:'textLength', viewbox:'viewBox', viewtarget:'viewTarget', xchannelselector:'xChannelSelector', ychannelselector:'yChannelSelector', zoomandpan:'zoomAndPan'};
2974
+ var SVG_NS = 'http://www.w3.org/2000/svg';
2968
2975
  var EVENT_RE = /^(click|dblclick|mousedown|mouseup|mousemove|mouseenter|mouseleave|keydown|keyup|keypress|input|change|submit|focus|blur|scroll|resize|touchstart|touchend|touchmove|contextmenu|wheel|pointerdown|pointerup|pointermove)/;
2969
2976
  var KEY_MAP = {enter:'Enter', tab:'Tab', escape:'Escape', space:' ', up:'ArrowUp', down:'ArrowDown', left:'ArrowLeft', right:'ArrowRight', 'delete':'Delete', backspace:'Backspace'};
2970
2977
 
@@ -2989,7 +2996,8 @@ catch (e2) {
2989
2996
  if (name.startsWith('@bind:') || name.startsWith('x-bind:')
2990
2997
  || (name.startsWith(':') && !name.startsWith('::') && !DIRECTIVE_NAMES[name.slice(1).split('.')[0]] && !EVENT_RE.test(name.slice(1)))
2991
2998
  || (name.startsWith('x-') && !X_HANDLED[name.split('.')[0]] && !X_HANDLED[name])) {
2992
- const attrName = name.startsWith('@bind:') ? name.slice(6) : name.startsWith('x-bind:') ? name.slice(7) : name.startsWith('x-') ? name.slice(2) : name.slice(1);
2999
+ let attrName = name.startsWith('@bind:') ? name.slice(6) : name.startsWith('x-bind:') ? name.slice(7) : name.startsWith('x-') ? name.slice(2) : name.slice(1);
3000
+ if (el.namespaceURI === SVG_NS && SVG_ATTR_CASE[attrName]) attrName = SVG_ATTR_CASE[attrName];
2993
3001
  effect(() => {
2994
3002
  const v = evalAttrExpr(value);
2995
3003
  if (v === false || v === null || v === undefined) {
@@ -3368,10 +3376,12 @@ else {
3368
3376
  });
3369
3377
  }
3370
3378
  else if (Array.isArray(value)) {
3371
- el.className = originalClasses + ' ' + value.filter(Boolean).join(' ');
3379
+ var _clsArr = originalClasses + ' ' + value.filter(Boolean).join(' ');
3380
+ if (typeof el.className === 'string') el.className = _clsArr; else el.setAttribute('class', _clsArr);
3372
3381
  }
3373
3382
  else {
3374
- el.className = originalClasses + (value ? ' ' + value : '');
3383
+ var _clsStr = originalClasses + (value ? ' ' + value : '');
3384
+ if (typeof el.className === 'string') el.className = _clsStr; else el.setAttribute('class', _clsStr);
3375
3385
  }
3376
3386
  });
3377
3387
  }
@@ -6491,12 +6501,12 @@ ${q}`);return q+`
6491
6501
  `+$}import{deriveLayoutGroup as nQ}from"stx-router/layout-metadata";var j7=V(()=>{o5();b0();I1();a5();t5();e5();D1();E1();G$();R1();Q$();k4();K1();P4();v4();x4();a();F5();J0();f4();g4();d4();m4();u4();S1();l4();q0();c4();j5();x();p4();i4();n4();o4();R5();V7();Y7();X7();v5();x5();v();J7();v5();x5()});var L7=()=>{};var F7=V(()=>{F5();I0();v()});function D9($){return/\bjs\b/.test($)||/\blang\s*=\s*["']?(js|javascript)["']?/i.test($)}function U1($){return!D9($)}function z1($){try{let Z=$.replace(/^\s*import\s+\w+\s+from\s+['"][^'"]*\.stx['"]\s*;?\s*$/gm,"");Z=Z.replace(/^\s*import\s+['"][^'"]*\.stx['"]\s*;?\s*$/gm,"");let Y=[];Z=Z.replace(/\{!![\s\S]*?!!\}/g,(J)=>{let Q=Y.length;return Y.push(J),`"__STX_EXPR_${Q}__"`}),Z=Z.replace(/\{\{\{[\s\S]*?\}\}\}/g,(J)=>{let Q=Y.length;return Y.push(J),`"__STX_EXPR_${Q}__"`}),Z=Z.replace(/\{\{[\s\S]*?\}\}/g,(J)=>{let Q=Y.length;return Y.push(J),`"__STX_EXPR_${Q}__"`});let X=new Bun.Transpiler({loader:"ts",target:"browser",define:O0()}).transformSync(Z);for(let J=0;J<Y.length;J++)X=X.replace(`"__STX_EXPR_${J}__"`,Y[J]),X=X.replace(`'__STX_EXPR_${J}__'`,Y[J]);return X}catch(Z){if(process.env.STX_DEBUG_TS)console.warn("[STX] TypeScript transpilation error:",Z);return $}}async function c($){return Bun.file($).exists()}var IK;var x=V(()=>{R1();J0();q0();j7();I0();R5();L7();F7();IK=new R0(500)});function w7($,Z){if(!Z)return"";let Y=[];for(let[G,X]of Object.entries(Z)){if(!/^[A-Za-z_$][\w$]*$/.test(G))continue;if(!new RegExp(`\\b${G}\\b`).test($))continue;if(new RegExp(`(?:const|let|var|function|class)\\s+${G}\\b`).test($))continue;let J;try{J=JSON.stringify(X)}catch{continue}if(J===void 0)continue;Y.push(` var ${G} = ${J.replace(/</g,"\\u003c")};`)}if(Y.length===0)return"";return` // stx: server -> client data bridge (seeded from server scope)
6492
6502
  ${Y.join(`
6493
6503
  `)}
6494
- `}var R1=V(()=>{x()});var A7={};z0(A7,{hasUserImports:()=>E9,bundleClientScript:()=>b9});import y from"path";import n from"fs";function E9($){let Z=/^\s*import\s+(?!type\s)/gm;if(!$.match(Z))return!1;let G=/^\s*import\s+(?!type\s).*?\s+from\s+['"]([^'"]+)['"]/gm,X;while((X=G.exec($))!==null){let Q=X[1];if(!R7.some((U)=>U.test(Q)))return console.log("[stx:bundler] detected user import:",Q),!0}let J=/^\s*import\s+['"]([^'"]+)['"]/gm;while((X=J.exec($))!==null){let Q=X[1];if(/\.css(?:\?.*)?$/.test(Q))continue;if(!R7.some((U)=>U.test(Q)))return console.log("[stx:bundler] detected side-effect import:",Q),!0}return!1}function k9($,Z,Y,G){let X=(J,Q)=>{let K=J===Y?Z:y.dirname(J),U=y.resolve(K,Q),z=[U,`${U}.ts`,`${U}.tsx`,`${U}.js`,`${U}.mjs`,`${U}.jsx`,y.join(U,"index.ts"),y.join(U,"index.tsx"),y.join(U,"index.js"),y.join(U,"index.mjs")];for(let W of z)try{if(n.existsSync(W)&&n.statSync(W,{throwIfNoEntry:!1})?.isFile())return W}catch{}return U};return{name:"stx-client-bundle",setup(J){J.onResolve({filter:/^(stx|@stacksjs\/stx|@stacksjs\/browser)$/},(Q)=>({path:Q.path,external:!0})),J.onResolve({filter:/^(@stores|@composables|stx\/stores)$/},(Q)=>({path:Q.path,external:!0})),J.onResolve({filter:/^\.\.?\//},(Q)=>{let K=X(Q.importer,Q.path);return G.add(K),{path:K}}),J.onResolve({filter:/^[@~]\//},(Q)=>{let K=y.resolve($,Q.path.slice(2)),U=[K,`${K}.ts`,`${K}.tsx`,`${K}.js`,`${K}.mjs`,`${K}.jsx`,y.join(K,"index.ts"),y.join(K,"index.tsx"),y.join(K,"index.js"),y.join(K,"index.mjs")];for(let z of U)if(n.existsSync(z)&&n.statSync(z,{throwIfNoEntry:!1})?.isFile())return console.log(`[stx:bundler] resolved ${Q.path[0]}/ import:`,Q.path,"\u2192",z),G.add(z),{path:z};return console.warn(`[stx:bundler] could not resolve ${Q.path[0]}/ import:`,Q.path),{path:K}})}}}async function b9($,Z,Y={}){let G=Y.projectRoot||process.cwd(),X=Y.minify??!1,J=Y.cacheDir||y.join(G,".stx","bundle-cache"),Q=new Bun.CryptoHasher("md5");Q.update($+Z);let K=Q.digest("hex").slice(0,12),U=y.join(J,`${K}.js`),z=y.join(J,`${K}.deps.json`),W=Bun.file(U);if(await W.exists()){let A=Bun.file(z),N=!0;if(await A.exists())try{let w=JSON.parse(await A.text());for(let k of w.files)try{if(n.statSync(k.path).mtimeMs!==k.mtimeMs){N=!1;break}}catch{N=!1;break}}catch{N=!1}if(N)return console.log("[stx:bundler] cache hit:",K),await W.text();console.log("[stx:bundler] cache invalidated by dep change:",K)}let q=y.join(G,".stx","bundle-tmp"),B=y.join(q,`${K}.ts`),H=y.join(q,"out",K);n.mkdirSync(q,{recursive:!0}),n.mkdirSync(H,{recursive:!0});let _=y.dirname(Z),j=[],O=/^(export\s+)?(?:const|let|var)\s+(?:\{([^}]+)\}|(\w+))/gm,F=/^(export\s+)?(?:async\s+)?function\s+(\w+)/gm,L;while((L=O.exec($))!==null){if(L[1])continue;if(L[2])L[2].split(",").forEach((A)=>{let N=A.split(":")[0].trim();if(N)j.push(N)});else if(L[3])j.push(L[3])}while((L=F.exec($))!==null){if(L[1])continue;j.push(L[2])}let R=j.length>0?`
6495
- export { ${j.join(", ")} }`:"";await Bun.write(B,$+R),console.log("[stx:bundler] bundling:",K,"from:",y.basename(Z));let T=new Set;try{let A=await Bun.build({entrypoints:[B],outdir:H,target:"browser",format:"esm",minify:X,plugins:[k9(G,_,B,T)],define:{"process.env.NODE_ENV":X?'"production"':'"development"',...O0()},root:G});if(!A.success){let I=A.logs.filter((E)=>E.level==="error").map((E)=>E.message).join(", ");return console.warn("[stx:bundler] build failed:",I),$}let N="";for(let I of A.outputs){N=await I.text();break}let w=[];for(let I of N.matchAll(/^\s*export\s*\{([^}]*)\}\s*;?\s*$/gm))for(let E of I[1].split(",")){let b=E.trim().match(/^([A-Za-z_$][\w$]*)\s+as\s+([A-Za-z_$][\w$]*)$/);if(b&&b[1]!==b[2])w.push([b[2],b[1]])}if(N=N.replace(/^\s*export\s*\{[^}]*\}\s*;?\s*$/gm,"").replace(/^\s*export\s+default\s+.*$/gm,"").trim(),w.length>0){let I=w.map(([E,b])=>`${JSON.stringify(E)}: ${b}`).join(", ");N+=`
6496
- var __stxScopeRenames = { ${I} };`}console.log("[stx:bundler] bundled:",K,"output:",N.length,"bytes"),n.mkdirSync(J,{recursive:!0}),await Bun.write(U,N);let k=Array.from(T).map((I)=>{try{return{path:I,mtimeMs:n.statSync(I).mtimeMs}}catch{return null}}).filter((I)=>I!==null);return await Bun.write(z,JSON.stringify({files:k})),N}catch(A){let N=A instanceof Error?A.message:String(A),w=A?.errors,k=Array.isArray(w)&&w.length>0?`
6497
- ${w.map((I)=>`- ${I?.message??I}`).join(`
6498
- `)}`:"";return console.warn(`[stx:bundler] error: ${N}${k}`),$}finally{try{n.rmSync(B,{force:!0}),n.rmSync(H,{recursive:!0,force:!0})}catch{}}}var R7;var N7=V(()=>{I0();R7=[/^stx$/,/^@stacksjs\/stx$/,/^@stacksjs\/browser$/,/^@stores$/,/^stx\/stores$/,/^@composables$/]});function y9($,Z={}){let Y=[];A1.lastIndex=0;let G;while((G=A1.exec($))!==null){let X=G[1],J=G.index+G[0].length,Q=$.toLowerCase().indexOf("</script>",J);if(Q===-1)break;let K=Q+9;if(Z.skipAttrs&&Z.skipAttrs.test(X)){A1.lastIndex=K;continue}Y.push({fullMatch:$.slice(G.index,K),attrs:X,body:$.slice(J,Q),start:G.index,end:K}),A1.lastIndex=K}return Y}function C9($){let Z=$.trim(),Y=Z.match(/^([\s\S]+?)\s+as\s+(.+)$/);if(Y){let X=Y[1].trim(),J=Y[2].trim(),{itemVar:Q,indexVar:K}=T7(J);if(Q)return{style:"as",iterable:X,itemVar:Q,indexVar:K}}let G=Z.match(/^(\([^)]+\)|\w+(?:\s*,\s*\w+)?)\s+(?:in|of)\s+([\s\S]+)$/);if(G){let X=G[1].trim(),J=G[2].trim(),{itemVar:Q,indexVar:K}=T7(X);if(Q)return{style:"in",iterable:J,itemVar:Q,indexVar:K}}return{style:"unknown",iterable:null,itemVar:null,indexVar:null}}function T7($){let Z=$.trim(),Y=Z.match(/^(\w+)\s*=>\s*(\w+)$/);if(Y)return{itemVar:Y[2],indexVar:Y[1]};let G=Z.match(/^\(\s*(\w+)(?:\s*,\s*(\w+))?\s*\)$/);if(G)return{itemVar:G[1],indexVar:G[2]||null};let X=Z.match(/^(\w+)\s*,\s*(\w+)$/);if(X)return{itemVar:X[1],indexVar:X[2]};let J=Z.match(/^(\w+)$/);if(J)return{itemVar:J[1],indexVar:null};return{itemVar:null,indexVar:null}}function O7($){return[/@if\s*=/,/@for\s*=/,/@show\s*=/,/@model\s*=/,/@bind:/,/@class\s*=/,/@style\s*=/,/\bx-data\s*=/,/\bstate\s*(?:<[^>]*>)?\s*\(/,/\bderived\s*(?:<[^>]*>)?\s*\(/,/\beffect\s*(?:<[^>]*>)?\s*\(/,/\bref\s*(?:<[^>]*>)?\s*\(/,/\bcomputed\s*(?:<[^>]*>)?\s*\(/,/\breactive\s*(?:<[^>]*>)?\s*\(/,/\bwatch\s*(?:<[^>]*>)?\s*\(/,/\bwatchEffect\s*(?:<[^>]*>)?\s*\(/,/data-stx(?:-auto)?(?![-\w])/,/data-stx-scoped/].some((Y)=>Y.test($))}function P9($){let Z=/@(if\s*\(|endif|elseif\s*\(|else\b)/g,Y=0,G;while((G=Z.exec($))!==null){let X=G[1];if(X.startsWith("if"))Y++;else if(X==="endif")Y--;else if(Y===0)return!0}return!1}function v9($){let Z=new Set,Y=/<script\b(?![^>]*\bserver\b)(?![^>]*\bsrc\s*=)[^>]*>([\s\S]*?)<\/script>/gi,G=/\b(?:const|let|var)\s+([a-zA-Z_$][\w$]*)\s*=\s*(?:state|derived|computed|ref|reactive|signal)\s*(?:<[^>]*>)?\s*\(/g,X;while((X=Y.exec($))!==null){let J=X[1],Q;while((Q=G.exec(J))!==null)Z.add(Q[1])}return Z}function x9($){return $.replace(/'(?:\\.|[^'\\])*'/g,"''").replace(/"(?:\\.|[^"\\])*"/g,'""').replace(/`(?:\\.|[^`\\])*`/g,"``")}function M7($,Z,Y){if(!$)return!1;let G=x9($),X=!1,J=!1,Q=!1,K=/([a-zA-Z_$][\w$]*)/g,U;while((U=K.exec(G))!==null){let B=U[1];if(G.slice(0,U.index).trimEnd().endsWith("."))continue;if(I7.has(B))continue;if(Z.has(B))X=!0;else if(Y&&B in Y)J=!0}let z=/([a-zA-Z_$][\w$]*)(?:\.[a-zA-Z_$][\w$]*)*\s*\(\s*\)/g,W;while((W=z.exec(G))!==null){let B=W[1];if(G.slice(0,W.index).trimEnd().endsWith("."))continue;if(I7.has(B)||Y&&B in Y)continue;Q=!0}return(X||Q)&&!J}function N1($,Z,Y){let G=Y===void 0?` ${Z}`:` ${Z}="${Y.replace(/"/g,"&quot;")}"`,X=$.trim(),J=X.match(D7);if(J&&f9(J[3],J[1])){let[,Q,K,U]=J;return`<${Q}${K}${G}>${U}</${Q}>`}return`<template${G}>${X}</template>`}function f9($,Z){let Y=new RegExp(`<(/)?${Z}(?=[\\s/>])`,"gi"),G=0,X;while((X=Y.exec($))!==null)if(X[1]){if(G--,G<0)return!1}else G++;return!0}function N9($,Z){let Y=$,G=v9($),X=/@if\s*\(/g,J,Q=[];while((J=X.exec(Y))!==null){let K=J.index,U=K+J[0].length,z=1,W=U;while(W<Y.length&&z>0){if(Y[W]==="(")z++;else if(Y[W]===")")z--;W++}if(z!==0)continue;let q=Y.substring(U,W-1).trim(),B=W,H=1,_=B,j=/@(if\s*\(|endif)/g;j.lastIndex=B;let O;while((O=j.exec(Y))!==null)if(O[1].startsWith("if"))H++;else if(O[1]==="endif"){if(H--,H===0){_=O.index+O[0].length;break}}if(H!==0)continue;let F=Y.substring(B,_-6).trim(),L;if(P9(F)){let R=G1(Y.substring(K,_));if(R.length===0)continue;let T=R[0].branches.filter((w)=>w.type!=="else");if(!(T.length>0&&T.every((w)=>M7(w.condition,G,Z))))continue;L=R[0].branches.map((w)=>{if(w.type==="elseif")return N1(w.content,"@else-if",w.condition??"");if(w.type==="else")return N1(w.content,"@else");return N1(w.content,"@if",w.condition??"")}).join(`
6499
- `)}else{if(!M7(q,G,Z))continue;L=N1(F,"@if",q)}Q.push({start:K,end:_,replacement:L})}for(let K=Q.length-1;K>=0;K--){let{start:U,end:z,replacement:W}=Q[K];Y=Y.substring(0,U)+W+Y.substring(z)}return Y}function g9($){let Z=$.trim();if(Z==="")return;if(Z==="true")return!0;if(Z==="false")return!1;if(Z==="null")return!1;if(Z==="undefined")return!1;if(Z==="NaN")return!1;if(/^-?\d+(?:\.\d+)?$/.test(Z)){let X=Number(Z);return X!==0&&!Number.isNaN(X)}let Y=Z.match(/^'((?:\\.|[^'\\])*)'$/);if(Y)return Y[1].length>0;let G=Z.match(/^"((?:\\.|[^"\\])*)"$/);if(G)return G[1].length>0;return}function h9($,Z,Y,G){if(u5.has(Y.toLowerCase()))return G;let X=Y.toLowerCase(),J=$.toLowerCase(),Q=$.length,K=1,U=G;while(U<Q){let z=$.indexOf("<",U);if(z===-1)return-1;if(U=z,$.startsWith("<!--",U)){let H=$.indexOf("-->",U+4);if(H===-1)return-1;U=H+3;continue}let W=/^<(script|style)\b/i.exec($.slice(U,U+8));if(W){let H=$.indexOf(">",U);if(H===-1)return-1;if($[H-1]==="/"){U=H+1;continue}let _=J.indexOf(`</${W[1].toLowerCase()}`,U);if(_===-1)return-1;let j=$.indexOf(">",_);if(j===-1)return-1;U=j+1;continue}if($[U+1]==="/"){let H=/^<\/([a-z][\w-]*)\s*>/i.exec($.slice(U,U+64));if(!H){U++;continue}if(H[1].toLowerCase()===X){if(K--,U+=H[0].length,K===0)return U;continue}U+=H[0].length;continue}let q=/^<([a-z][\w-]*)\b/i.exec($.slice(U,U+64));if(!q){U++;continue}let B=$.indexOf(">",U);if(B===-1)return-1;if(q[1].toLowerCase()===X){let H=$.slice(U,B+1);if(!(/\/\s*>$/.test(H)||u5.has(X)))K++}U=B+1}return-1}function m9($,Z){let Y=Z,G=$.length;for(;;){while(Y<G&&$[Y]!=="<")Y++;if(Y>=G)return!1;if($.startsWith("<!--",Y)){let Q=$.indexOf("-->",Y+4);if(Q===-1)return!1;Y=Q+3;continue}break}if($[Y+1]==="/")return!1;let X=$.indexOf(">",Y);if(X===-1)return!1;let J=$.slice(Y,X+1);return d9.test(J)}function T9($){if(!$.includes(":if")&&!$.includes(":show")&&!$.includes("x-if")&&!$.includes("x-show")&&!$.includes("@if=")&&!$.includes("@show="))return $;let Z=[],Y=/<(script|style)\b[^>]*>[\s\S]*?<\/\1\s*>/gi,G;while((G=Y.exec($))!==null)Z.push([G.index,G.index+G[0].length]);let X=(q)=>Z.some(([B,H])=>q>=B&&q<H),J=/<([a-zA-Z][\w-]*)\b((?:\s+[^=\s>]+(?:=(?:"[^"]*"|'[^']*'|[^\s>]*))?)*?)\s+(:if|:show|x-if|x-show|@if|@show)\s*=\s*"([^"]*)"((?:\s+[^=\s>]+(?:=(?:"[^"]*"|'[^']*'|[^\s>]*))?)*\s*)(\/?)>/g,Q=[],K;while((K=J.exec($))!==null){if(X(K.index))continue;let[q,B,H,_,j,O,F]=K,L=g9(j);if(L===void 0)continue;let R=K.index,T=R+q.length,w=!!F||/\/\s*>$/.test(q)||u5.has(B.toLowerCase())?T:h9($,R,B,T);if(w===-1)continue;if((_===":if"||_==="x-if"||_==="@if")&&m9($,w)){J.lastIndex=T;continue}if(L===!0){let I=`<${B}${H}${O}${F}>`;Q.push({start:R,end:T,replacement:I});continue}Q.push({start:R,end:w,replacement:""}),J.lastIndex=w}if(Q.length===0)return $;Q.sort((q,B)=>q.start-B.start);let U=[],z=-1;for(let q of Q){if(q.start<z)continue;U.push(q),z=q.end}let W=$;for(let q=U.length-1;q>=0;q--){let{start:B,end:H,replacement:_}=U[q];W=W.substring(0,B)+_+W.substring(H)}return W}function I9($,Z){let Y=$,G=/@(for|foreach)\s*\(/g,X,J=[];while((X=G.exec(Y))!==null){let Q=X[1],K=X.index,U=K+X[0].length,z=1,W=U;while(W<Y.length&&z>0){if(Y[W]==="(")z++;else if(Y[W]===")")z--;W++}if(z!==0)continue;let q=Y.substring(U,W-1).trim(),B=W,H=C9(q);if(H.iterable){let N=H.iterable.trim();if(N.startsWith("[")||N.startsWith("{")||N.startsWith("'")||N.startsWith('"')||N.startsWith("`")||/^-?\d/.test(N))continue;if(Z){let w=N.split(/[.[(]/)[0].trim();if(w&&w in Z)continue}}if(H.style==="as")q=H.indexVar?`(${H.itemVar}, ${H.indexVar}) in ${H.iterable}`:`${H.itemVar} in ${H.iterable}`;let _=Q==="for"?"@endfor":"@endforeach",j=1,O=B,F=Q==="for"?new RegExp("@(for(?!each)\\s*\\(|endfor(?!each))","g"):new RegExp(`@(${Q}\\s*\\(|end${Q})`,"g");F.lastIndex=B;let L;while((L=F.exec(Y))!==null)if(L[1].startsWith(Q))j++;else if(j--,j===0){O=L.index+L[0].length;break}if(j!==0)continue;let R=Y.substring(B,O-_.length).trim(),T=R.match(D7),A;if(T){let[,N,w,k]=T;A=`<${N}${w} @for="${q}">${k}</${N}>`}else A=`<template @for="${q}">${R}</template>`;J.push({start:K,end:O,replacement:A})}for(let Q=J.length-1;Q>=0;Q--){let{start:K,end:U,replacement:z}=J[Q];Y=Y.substring(0,K)+z+Y.substring(U)}return Y}function u9($){let Z=new Set,Y=[],G=0,X=0,J=$.length,Q=(W)=>{let q=G+1;while(q<J){let B=$[q];if(B==="\\"){q+=2;continue}if(B===W)return q+1;q++}return J},K=()=>{let W=G+2;while(W<J&&$[W]!==`
6504
+ `}var R1=V(()=>{x()});var A7={};z0(A7,{hasUserImports:()=>E9,bundleClientScript:()=>b9});import y from"path";import n from"fs";function E9($){let Z=/^\s*import\s+(?!type\s)/gm;if(!$.match(Z))return!1;let G=/^\s*import\s+(?!type\s).*?\s+from\s+['"]([^'"]+)['"]/gm,X;while((X=G.exec($))!==null){let Q=X[1];if(!R7.some((U)=>U.test(Q)))return console.log("[stx:bundler] detected user import:",Q),!0}let J=/^\s*import\s+['"]([^'"]+)['"]/gm;while((X=J.exec($))!==null){let Q=X[1];if(/\.css(?:\?.*)?$/.test(Q))continue;if(!R7.some((U)=>U.test(Q)))return console.log("[stx:bundler] detected side-effect import:",Q),!0}return!1}function k9($,Z,Y,G){let X=(J,Q)=>{let K=J===Y?Z:y.dirname(J),U=y.resolve(K,Q),z=[U,`${U}.ts`,`${U}.tsx`,`${U}.js`,`${U}.mjs`,`${U}.jsx`,y.join(U,"index.ts"),y.join(U,"index.tsx"),y.join(U,"index.js"),y.join(U,"index.mjs")];for(let W of z)try{if(n.existsSync(W)&&n.statSync(W,{throwIfNoEntry:!1})?.isFile())return W}catch{}return U};return{name:"stx-client-bundle",setup(J){J.onResolve({filter:/^(stx|@stacksjs\/stx|@stacksjs\/browser)$/},(Q)=>({path:Q.path,external:!0})),J.onResolve({filter:/^(@stores|@composables|stx\/stores)$/},(Q)=>({path:Q.path,external:!0})),J.onResolve({filter:/^\.\.?\//},(Q)=>{let K=X(Q.importer,Q.path);return G.add(K),{path:K}}),J.onResolve({filter:/^[@~]\//},(Q)=>{let K=y.resolve($,Q.path.slice(2)),U=[K,`${K}.ts`,`${K}.tsx`,`${K}.js`,`${K}.mjs`,`${K}.jsx`,y.join(K,"index.ts"),y.join(K,"index.tsx"),y.join(K,"index.js"),y.join(K,"index.mjs")];for(let z of U)if(n.existsSync(z)&&n.statSync(z,{throwIfNoEntry:!1})?.isFile())return console.log(`[stx:bundler] resolved ${Q.path[0]}/ import:`,Q.path,"\u2192",z),G.add(z),{path:z};return console.warn(`[stx:bundler] could not resolve ${Q.path[0]}/ import:`,Q.path),{path:K}})}}}async function b9($,Z,Y={}){let G=Y.projectRoot||process.cwd(),X=Y.minify??!1,J=Y.cacheDir||y.join(G,".stx","bundle-cache"),Q=new Bun.CryptoHasher("md5");Q.update($+Z);let K=Q.digest("hex").slice(0,12),U=y.join(J,`${K}.js`),z=y.join(J,`${K}.deps.json`),W=Bun.file(U);if(await W.exists()){let A=Bun.file(z),N=!0;if(await A.exists())try{let R=JSON.parse(await A.text());for(let k of R.files)try{if(n.statSync(k.path).mtimeMs!==k.mtimeMs){N=!1;break}}catch{N=!1;break}}catch{N=!1}if(N)return console.log("[stx:bundler] cache hit:",K),await W.text();console.log("[stx:bundler] cache invalidated by dep change:",K)}let q=y.join(G,".stx","bundle-tmp"),B=y.join(q,`${K}.ts`),H=y.join(q,"out",K);n.mkdirSync(q,{recursive:!0}),n.mkdirSync(H,{recursive:!0});let _=y.dirname(Z),j=[],O=/^(export\s+)?(?:const|let|var)\s+(?:\{([^}]+)\}|(\w+))/gm,F=/^(export\s+)?(?:async\s+)?function\s+(\w+)/gm,L;while((L=O.exec($))!==null){if(L[1])continue;if(L[2])L[2].split(",").forEach((A)=>{let N=A.split(":")[0].trim();if(N)j.push(N)});else if(L[3])j.push(L[3])}while((L=F.exec($))!==null){if(L[1])continue;j.push(L[2])}let w=j.length>0?`
6505
+ export { ${j.join(", ")} }`:"";await Bun.write(B,$+w),console.log("[stx:bundler] bundling:",K,"from:",y.basename(Z));let T=new Set;try{let A=await Bun.build({entrypoints:[B],outdir:H,target:"browser",format:"esm",minify:X,plugins:[k9(G,_,B,T)],define:{"process.env.NODE_ENV":X?'"production"':'"development"',...O0()},root:G});if(!A.success){let I=A.logs.filter((E)=>E.level==="error").map((E)=>E.message).join(", ");return console.warn("[stx:bundler] build failed:",I),$}let N="";for(let I of A.outputs){N=await I.text();break}let R=[];for(let I of N.matchAll(/^\s*export\s*\{([^}]*)\}\s*;?\s*$/gm))for(let E of I[1].split(",")){let b=E.trim().match(/^([A-Za-z_$][\w$]*)\s+as\s+([A-Za-z_$][\w$]*)$/);if(b&&b[1]!==b[2])R.push([b[2],b[1]])}if(N=N.replace(/^\s*export\s*\{[^}]*\}\s*;?\s*$/gm,"").replace(/^\s*export\s+default\s+.*$/gm,"").trim(),R.length>0){let I=R.map(([E,b])=>`${JSON.stringify(E)}: ${b}`).join(", ");N+=`
6506
+ var __stxScopeRenames = { ${I} };`}console.log("[stx:bundler] bundled:",K,"output:",N.length,"bytes"),n.mkdirSync(J,{recursive:!0}),await Bun.write(U,N);let k=Array.from(T).map((I)=>{try{return{path:I,mtimeMs:n.statSync(I).mtimeMs}}catch{return null}}).filter((I)=>I!==null);return await Bun.write(z,JSON.stringify({files:k})),N}catch(A){let N=A instanceof Error?A.message:String(A),R=A?.errors,k=Array.isArray(R)&&R.length>0?`
6507
+ ${R.map((I)=>`- ${I?.message??I}`).join(`
6508
+ `)}`:"";return console.warn(`[stx:bundler] error: ${N}${k}`),$}finally{try{n.rmSync(B,{force:!0}),n.rmSync(H,{recursive:!0,force:!0})}catch{}}}var R7;var N7=V(()=>{I0();R7=[/^stx$/,/^@stacksjs\/stx$/,/^@stacksjs\/browser$/,/^@stores$/,/^stx\/stores$/,/^@composables$/]});function y9($,Z={}){let Y=[];A1.lastIndex=0;let G;while((G=A1.exec($))!==null){let X=G[1],J=G.index+G[0].length,Q=$.toLowerCase().indexOf("</script>",J);if(Q===-1)break;let K=Q+9;if(Z.skipAttrs&&Z.skipAttrs.test(X)){A1.lastIndex=K;continue}Y.push({fullMatch:$.slice(G.index,K),attrs:X,body:$.slice(J,Q),start:G.index,end:K}),A1.lastIndex=K}return Y}function C9($){let Z=$.trim(),Y=Z.match(/^([\s\S]+?)\s+as\s+(.+)$/);if(Y){let X=Y[1].trim(),J=Y[2].trim(),{itemVar:Q,indexVar:K}=T7(J);if(Q)return{style:"as",iterable:X,itemVar:Q,indexVar:K}}let G=Z.match(/^(\([^)]+\)|\w+(?:\s*,\s*\w+)?)\s+(?:in|of)\s+([\s\S]+)$/);if(G){let X=G[1].trim(),J=G[2].trim(),{itemVar:Q,indexVar:K}=T7(X);if(Q)return{style:"in",iterable:J,itemVar:Q,indexVar:K}}return{style:"unknown",iterable:null,itemVar:null,indexVar:null}}function T7($){let Z=$.trim(),Y=Z.match(/^(\w+)\s*=>\s*(\w+)$/);if(Y)return{itemVar:Y[2],indexVar:Y[1]};let G=Z.match(/^\(\s*(\w+)(?:\s*,\s*(\w+))?\s*\)$/);if(G)return{itemVar:G[1],indexVar:G[2]||null};let X=Z.match(/^(\w+)\s*,\s*(\w+)$/);if(X)return{itemVar:X[1],indexVar:X[2]};let J=Z.match(/^(\w+)$/);if(J)return{itemVar:J[1],indexVar:null};return{itemVar:null,indexVar:null}}function O7($){return[/@if\s*=/,/@for\s*=/,/@show\s*=/,/@model\s*=/,/@bind:/,/@class\s*=/,/@style\s*=/,/\bx-data\s*=/,/\bstate\s*(?:<[^>]*>)?\s*\(/,/\bderived\s*(?:<[^>]*>)?\s*\(/,/\beffect\s*(?:<[^>]*>)?\s*\(/,/\bref\s*(?:<[^>]*>)?\s*\(/,/\bcomputed\s*(?:<[^>]*>)?\s*\(/,/\breactive\s*(?:<[^>]*>)?\s*\(/,/\bwatch\s*(?:<[^>]*>)?\s*\(/,/\bwatchEffect\s*(?:<[^>]*>)?\s*\(/,/data-stx(?:-auto)?(?![-\w])/,/data-stx-scoped/].some((Y)=>Y.test($))}function P9($){let Z=/@(if\s*\(|endif|elseif\s*\(|else\b)/g,Y=0,G;while((G=Z.exec($))!==null){let X=G[1];if(X.startsWith("if"))Y++;else if(X==="endif")Y--;else if(Y===0)return!0}return!1}function v9($){let Z=new Set,Y=/<script\b(?![^>]*\bserver\b)(?![^>]*\bsrc\s*=)[^>]*>([\s\S]*?)<\/script>/gi,G=/\b(?:const|let|var)\s+([a-zA-Z_$][\w$]*)\s*=\s*(?:state|derived|computed|ref|reactive|signal)\s*(?:<[^>]*>)?\s*\(/g,X;while((X=Y.exec($))!==null){let J=X[1],Q;while((Q=G.exec(J))!==null)Z.add(Q[1])}return Z}function x9($){return $.replace(/'(?:\\.|[^'\\])*'/g,"''").replace(/"(?:\\.|[^"\\])*"/g,'""').replace(/`(?:\\.|[^`\\])*`/g,"``")}function M7($,Z,Y){if(!$)return!1;let G=x9($),X=!1,J=!1,Q=!1,K=/([a-zA-Z_$][\w$]*)/g,U;while((U=K.exec(G))!==null){let B=U[1];if(G.slice(0,U.index).trimEnd().endsWith("."))continue;if(I7.has(B))continue;if(Z.has(B))X=!0;else if(Y&&B in Y)J=!0}let z=/([a-zA-Z_$][\w$]*)(?:\.[a-zA-Z_$][\w$]*)*\s*\(\s*\)/g,W;while((W=z.exec(G))!==null){let B=W[1];if(G.slice(0,W.index).trimEnd().endsWith("."))continue;if(I7.has(B)||Y&&B in Y)continue;Q=!0}return(X||Q)&&!J}function N1($,Z,Y){let G=Y===void 0?` ${Z}`:` ${Z}="${Y.replace(/"/g,"&quot;")}"`,X=$.trim(),J=X.match(D7);if(J&&f9(J[3],J[1])){let[,Q,K,U]=J;return`<${Q}${K}${G}>${U}</${Q}>`}return`<template${G}>${X}</template>`}function f9($,Z){let Y=new RegExp(`<(/)?${Z}(?=[\\s/>])`,"gi"),G=0,X;while((X=Y.exec($))!==null)if(X[1]){if(G--,G<0)return!1}else G++;return!0}function N9($,Z){let Y=$,G=v9($),X=/@if\s*\(/g,J,Q=[];while((J=X.exec(Y))!==null){let K=J.index,U=K+J[0].length,z=1,W=U;while(W<Y.length&&z>0){if(Y[W]==="(")z++;else if(Y[W]===")")z--;W++}if(z!==0)continue;let q=Y.substring(U,W-1).trim(),B=W,H=1,_=B,j=/@(if\s*\(|endif)/g;j.lastIndex=B;let O;while((O=j.exec(Y))!==null)if(O[1].startsWith("if"))H++;else if(O[1]==="endif"){if(H--,H===0){_=O.index+O[0].length;break}}if(H!==0)continue;let F=Y.substring(B,_-6).trim(),L;if(P9(F)){let w=G1(Y.substring(K,_));if(w.length===0)continue;let T=w[0].branches.filter((R)=>R.type!=="else");if(!(T.length>0&&T.every((R)=>M7(R.condition,G,Z))))continue;L=w[0].branches.map((R)=>{if(R.type==="elseif")return N1(R.content,"@else-if",R.condition??"");if(R.type==="else")return N1(R.content,"@else");return N1(R.content,"@if",R.condition??"")}).join(`
6509
+ `)}else{if(!M7(q,G,Z))continue;L=N1(F,"@if",q)}Q.push({start:K,end:_,replacement:L})}for(let K=Q.length-1;K>=0;K--){let{start:U,end:z,replacement:W}=Q[K];Y=Y.substring(0,U)+W+Y.substring(z)}return Y}function g9($){let Z=$.trim();if(Z==="")return;if(Z==="true")return!0;if(Z==="false")return!1;if(Z==="null")return!1;if(Z==="undefined")return!1;if(Z==="NaN")return!1;if(/^-?\d+(?:\.\d+)?$/.test(Z)){let X=Number(Z);return X!==0&&!Number.isNaN(X)}let Y=Z.match(/^'((?:\\.|[^'\\])*)'$/);if(Y)return Y[1].length>0;let G=Z.match(/^"((?:\\.|[^"\\])*)"$/);if(G)return G[1].length>0;return}function h9($,Z,Y,G){if(u5.has(Y.toLowerCase()))return G;let X=Y.toLowerCase(),J=$.toLowerCase(),Q=$.length,K=1,U=G;while(U<Q){let z=$.indexOf("<",U);if(z===-1)return-1;if(U=z,$.startsWith("<!--",U)){let H=$.indexOf("-->",U+4);if(H===-1)return-1;U=H+3;continue}let W=/^<(script|style)\b/i.exec($.slice(U,U+8));if(W){let H=$.indexOf(">",U);if(H===-1)return-1;if($[H-1]==="/"){U=H+1;continue}let _=J.indexOf(`</${W[1].toLowerCase()}`,U);if(_===-1)return-1;let j=$.indexOf(">",_);if(j===-1)return-1;U=j+1;continue}if($[U+1]==="/"){let H=/^<\/([a-z][\w-]*)\s*>/i.exec($.slice(U,U+64));if(!H){U++;continue}if(H[1].toLowerCase()===X){if(K--,U+=H[0].length,K===0)return U;continue}U+=H[0].length;continue}let q=/^<([a-z][\w-]*)\b/i.exec($.slice(U,U+64));if(!q){U++;continue}let B=$.indexOf(">",U);if(B===-1)return-1;if(q[1].toLowerCase()===X){let H=$.slice(U,B+1);if(!(/\/\s*>$/.test(H)||u5.has(X)))K++}U=B+1}return-1}function m9($,Z){let Y=Z,G=$.length;for(;;){while(Y<G&&$[Y]!=="<")Y++;if(Y>=G)return!1;if($.startsWith("<!--",Y)){let Q=$.indexOf("-->",Y+4);if(Q===-1)return!1;Y=Q+3;continue}break}if($[Y+1]==="/")return!1;let X=$.indexOf(">",Y);if(X===-1)return!1;let J=$.slice(Y,X+1);return d9.test(J)}function T9($){if(!$.includes(":if")&&!$.includes(":show")&&!$.includes("x-if")&&!$.includes("x-show")&&!$.includes("@if=")&&!$.includes("@show="))return $;let Z=[],Y=/<(script|style)\b[^>]*>[\s\S]*?<\/\1\s*>/gi,G;while((G=Y.exec($))!==null)Z.push([G.index,G.index+G[0].length]);let X=(q)=>Z.some(([B,H])=>q>=B&&q<H),J=/<([a-zA-Z][\w-]*)\b((?:\s+[^=\s>]+(?:=(?:"[^"]*"|'[^']*'|[^\s>]*))?)*?)\s+(:if|:show|x-if|x-show|@if|@show)\s*=\s*"([^"]*)"((?:\s+[^=\s>]+(?:=(?:"[^"]*"|'[^']*'|[^\s>]*))?)*\s*)(\/?)>/g,Q=[],K;while((K=J.exec($))!==null){if(X(K.index))continue;let[q,B,H,_,j,O,F]=K,L=g9(j);if(L===void 0)continue;let w=K.index,T=w+q.length,R=!!F||/\/\s*>$/.test(q)||u5.has(B.toLowerCase())?T:h9($,w,B,T);if(R===-1)continue;if((_===":if"||_==="x-if"||_==="@if")&&m9($,R)){J.lastIndex=T;continue}if(L===!0){let I=`<${B}${H}${O}${F}>`;Q.push({start:w,end:T,replacement:I});continue}Q.push({start:w,end:R,replacement:""}),J.lastIndex=R}if(Q.length===0)return $;Q.sort((q,B)=>q.start-B.start);let U=[],z=-1;for(let q of Q){if(q.start<z)continue;U.push(q),z=q.end}let W=$;for(let q=U.length-1;q>=0;q--){let{start:B,end:H,replacement:_}=U[q];W=W.substring(0,B)+_+W.substring(H)}return W}function I9($,Z){let Y=$,G=/@(for|foreach)\s*\(/g,X,J=[];while((X=G.exec(Y))!==null){let Q=X[1],K=X.index,U=K+X[0].length,z=1,W=U;while(W<Y.length&&z>0){if(Y[W]==="(")z++;else if(Y[W]===")")z--;W++}if(z!==0)continue;let q=Y.substring(U,W-1).trim(),B=W,H=C9(q);if(H.iterable){let N=H.iterable.trim();if(N.startsWith("[")||N.startsWith("{")||N.startsWith("'")||N.startsWith('"')||N.startsWith("`")||/^-?\d/.test(N))continue;if(Z){let R=N.split(/[.[(]/)[0].trim();if(R&&R in Z)continue}}if(H.style==="as")q=H.indexVar?`(${H.itemVar}, ${H.indexVar}) in ${H.iterable}`:`${H.itemVar} in ${H.iterable}`;let _=Q==="for"?"@endfor":"@endforeach",j=1,O=B,F=Q==="for"?new RegExp("@(for(?!each)\\s*\\(|endfor(?!each))","g"):new RegExp(`@(${Q}\\s*\\(|end${Q})`,"g");F.lastIndex=B;let L;while((L=F.exec(Y))!==null)if(L[1].startsWith(Q))j++;else if(j--,j===0){O=L.index+L[0].length;break}if(j!==0)continue;let w=Y.substring(B,O-_.length).trim(),T=w.match(D7),A;if(T){let[,N,R,k]=T;A=`<${N}${R} @for="${q}">${k}</${N}>`}else A=`<template @for="${q}">${w}</template>`;J.push({start:K,end:O,replacement:A})}for(let Q=J.length-1;Q>=0;Q--){let{start:K,end:U,replacement:z}=J[Q];Y=Y.substring(0,K)+z+Y.substring(U)}return Y}function u9($){let Z=new Set,Y=[],G=0,X=0,J=$.length,Q=(W)=>{let q=G+1;while(q<J){let B=$[q];if(B==="\\"){q+=2;continue}if(B===W)return q+1;q++}return J},K=()=>{let W=G+2;while(W<J&&$[W]!==`
6500
6510
  `)W++;return W},U=()=>{let W=G+2;while(W<J-1){if($[W]==="*"&&$[W+1]==="/")return W+2;W++}return J},z=(W)=>{let q=W,B=0;while(q<J){let H=$[q];if(H==="/"&&$[q+1]==="/"){let _=q+2;while(_<J&&$[_]!==`
6501
6511
  `)_++;q=_;continue}if(H==="/"&&$[q+1]==="*"){let _=q+2;while(_<J-1&&!($[_]==="*"&&$[_+1]==="/"))_++;q=_+2;continue}if(H==='"'||H==="'"||H==="`"){let _=q+1;while(_<J){if($[_]==="\\"){_+=2;continue}if($[_]===H){_++;break}_++}q=_;continue}if(H==="("||H==="["||H==="{"){B++,q++;continue}if(H===")"||H==="]"||H==="}"){B--,q++;continue}if(H===";"&&B===0)return q+1;q++}return J};while(G<J){let W=$[G];if(W==="/"&&$[G+1]==="/"){let q=K();Y.push($.slice(G,q)),G=q;continue}if(W==="/"&&$[G+1]==="*"){let q=U();Y.push($.slice(G,q)),G=q;continue}if(W==='"'||W==="'"||W==="`"){let q=Q(W);Y.push($.slice(G,q)),G=q;continue}if(W==="{"){X++,Y.push(W),G++;continue}if(W==="}"){X--,Y.push(W),G++;continue}if(X===0){let q=G>0?$[G-1]:"";if(q===""||/\s/.test(q)||q===";"||q==="}"||q==="{"){let H=$.slice(G).match(/^(const|let|var)\s+([a-zA-Z_$][\w$]*)\s*=/);if(H){let _=H[2],j=z(G+H[0].length);if(Z.has(_)){Y.push(`/* stx: deduped const ${_} */`),G=j;continue}Z.add(_),Y.push($.slice(G,j)),G=j;continue}}}Y.push(W),G++}return Y.join("")}async function l9($,Z,Y){let G=y9($,{skipAttrs:/\bserver\b|\bsrc\s*=|\bdata-stx-scoped\b|\bdata-stx-router\b/}),X=/\b(?:state|derived|effect|ref|reactive|computed|watch|watchEffect|useStore|useLocalStorage|useSessionStorage|useCookie|useReactiveProp|useFetch|useRef|useEventListener|useDebounce|useDebouncedValue|useThrottle|useInterval|useTimeout|useToggle|useCounter|useClickOutside|useFocus|useAsync|useColorMode|useDark|useWebSocket|useRoute|useSearchParams|onMount|onDestroy|defineProps|withDefaults|defineEmits|defineExpose|defineSlots|useOptimistic)\s*(?:<[^>]*>)?\s*\(/,J=[];for(let j of G){let O=j.body;if(U1(j.attrs))O=z1(O);if(X.test(O))J.push({fullMatch:j.fullMatch,attrs:j.attrs,content:O})}if(J.length===0)return{output:$,setupCode:null};let Q=`__stx_setup_${Date.now()}_${S9++}`,{hasUserImports:K,bundleClientScript:U}=await Promise.resolve().then(() => (N7(),A7)),z=[];for(let j=0;j<J.length;j++){let O=J[j].content;if(K(O))console.log("[stx:bundler] bundling signal script imports"),O=await U(O,Z||"",{projectRoot:process.cwd()});O=O.replace(/^\s*import\s+(?:type\s+)?\{[^}]*\}\s+from\s+['"](?:stx|@stacksjs\/stx|@stacksjs\/browser)['"]\s*;?\s*$/gm,"// [stx import stripped \u2014 resolved via window.stx in __stx_setup]");let F=F0(O);z.push(`// \u2500\u2500 merged signal script #${j+1} \u2500\u2500
6502
6512
  ${F}`)}let W=z.join(`
@@ -6509,9 +6519,9 @@ ${B}${W}
6509
6519
  return { ${q} };
6510
6520
  }
6511
6521
  if(window.stx)window.stx._latestSetup=${Q};
6512
- </script>`,_=$;for(let j of J)_=_.split(j.fullMatch).join("");if(_.includes("<body"))_=_.replace(/<body([^>]*)>/,`<body$1 data-stx="${Q}">`);else{let j=["script","style","html","head","meta","link","title","!doctype"];_=_.replace(/<([a-zA-Z][a-zA-Z0-9-]*)\b([^>]*)>/i,(O,F,L)=>{if(j.includes(F.toLowerCase()))return O;return`<${F}${L} data-stx="${Q}">`})}return{output:_,setupCode:H}}function c9($){let Z=$,Y=[],G=new Set,X=0,J=0,Q=Z.length,K="",U=()=>{J++;let _=!1;while(J<Q){let j=Z[J];if(j==="\\"){J+=2;continue}if(j==="["&&!_){_=!0,J++;continue}if(j==="]"&&_){_=!1,J++;continue}if(j==="/"&&!_){J++;while(J<Q&&/[gimsuyd]/.test(Z[J]))J++;return}if(j===`
6522
+ </script>`,_=$;for(let j of J)_=_.split(j.fullMatch).join("");if(_.includes("<body"))_=_.replace(/<body([^>]*)>/,`<body$1 data-stx="${Q}">`);else{let j=["script","style","html","head","meta","link","title","!doctype"],O=!1;_=_.replace(/<([a-zA-Z][a-zA-Z0-9-]*)\b([^>]*)>/gi,(F,L,w)=>{if(O||j.includes(L.toLowerCase()))return F;return O=!0,`<${L}${w} data-stx="${Q}">`})}return{output:_,setupCode:H}}function c9($){let Z=$,Y=[],G=new Set,X=0,J=0,Q=Z.length,K="",U=()=>{J++;let _=!1;while(J<Q){let j=Z[J];if(j==="\\"){J+=2;continue}if(j==="["&&!_){_=!0,J++;continue}if(j==="]"&&_){_=!1,J++;continue}if(j==="/"&&!_){J++;while(J<Q&&/[gimsuyd]/.test(Z[J]))J++;return}if(j===`
6513
6523
  `)return;J++}},z=()=>{if(!K)return!0;if(/[\w)\]]/.test(K))return!1;return!0},W=(_)=>{J++;while(J<Q){if(Z[J]==="\\"){J+=2;continue}if(Z[J]===_){J++;return}J++}},q=()=>{J++;while(J<Q){if(Z[J]==="\\"){J+=2;continue}if(Z[J]==="`"){J++;return}if(Z[J]==="$"&&Z[J+1]==="{"){J+=2;let _=1;while(J<Q&&_>0)if(Z[J]==="{")_++,J++;else if(Z[J]==="}")_--,J++;else if(Z[J]==="'"||Z[J]==='"')W(Z[J]);else if(Z[J]==="`")q();else J++;continue}J++}},B=()=>{if(Z[J]==="/"&&Z[J+1]==="/"){while(J<Q&&Z[J]!==`
6514
- `)J++;return!0}if(Z[J]==="/"&&Z[J+1]==="*"){J+=2;while(J<Q-1&&!(Z[J]==="*"&&Z[J+1]==="/"))J++;return J+=2,!0}return!1},H=()=>{if(X!==0)return;let _=Z.slice(J).match(/^(const|let|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=/);if(_){let R=_[2];if(!G.has(R))Y.push(R),G.add(R);return}let j=Z.slice(J).match(/^(?:const|let|var)\s+\{([^}]+)\}\s*=/);if(j){j[1].split(",").forEach((R)=>{let T=R.trim();if(!T)return;let A=T.indexOf(":"),w=(A>=0?T.slice(A+1).trim():T).split(/[\s=]/)[0];if(w&&!G.has(w))Y.push(w),G.add(w)});return}let O=Z.slice(J).match(/^(?:const|let|var)\s+\[([^\]]+)\]\s*=/);if(O){O[1].split(",").forEach((R)=>{let T=R.trim().replace(/^\.\.\./,"");if(!T)return;let A=T.split(/[\s=]/)[0];if(A&&!G.has(A))Y.push(A),G.add(A)});return}let F=Z.slice(J).match(/^function\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/);if(F){let R=F[1];if(!G.has(R))Y.push(R),G.add(R);return}let L=Z.slice(J).match(/^async\s+function\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/);if(L){let R=L[1];if(!G.has(R))Y.push(R),G.add(R)}};while(J<Q){if(B())continue;if(Z[J]==="'"||Z[J]==='"'){W(Z[J]),K=Z[J-1];continue}if(Z[J]==="`"){q(),K="`";continue}if(Z[J]==="/"&&Z[J+1]!=="/"&&Z[J+1]!=="*"&&z()){U(),K="/";continue}if(Z[J]==="{"){X++,K="{",J++;continue}if(Z[J]==="}"){X--,K="}",J++;continue}if(X===0&&/[a-z]/i.test(Z[J])&&(J===0||/\s|[;{}()]/.test(Z[J-1])))H();if(!/\s/.test(Z[J]))K=Z[J];J++}return Y.join(", ")}async function M9($,Z,Y,G){if(!O7($))return $;let X=$;if(Z.skipSignalsRuntime)return X;let{output:J,setupCode:Q}=await l9(X,Y,G);if(X=J,X=await H7(X,Z),X=B7(X),Q)if(X.includes("</head>"))X=X.replace("</head>",`${Q}
6524
+ `)J++;return!0}if(Z[J]==="/"&&Z[J+1]==="*"){J+=2;while(J<Q-1&&!(Z[J]==="*"&&Z[J+1]==="/"))J++;return J+=2,!0}return!1},H=()=>{if(X!==0)return;let _=Z.slice(J).match(/^(const|let|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=/);if(_){let w=_[2];if(!G.has(w))Y.push(w),G.add(w);return}let j=Z.slice(J).match(/^(?:const|let|var)\s+\{([^}]+)\}\s*=/);if(j){j[1].split(",").forEach((w)=>{let T=w.trim();if(!T)return;let A=T.indexOf(":"),R=(A>=0?T.slice(A+1).trim():T).split(/[\s=]/)[0];if(R&&!G.has(R))Y.push(R),G.add(R)});return}let O=Z.slice(J).match(/^(?:const|let|var)\s+\[([^\]]+)\]\s*=/);if(O){O[1].split(",").forEach((w)=>{let T=w.trim().replace(/^\.\.\./,"");if(!T)return;let A=T.split(/[\s=]/)[0];if(A&&!G.has(A))Y.push(A),G.add(A)});return}let F=Z.slice(J).match(/^function\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/);if(F){let w=F[1];if(!G.has(w))Y.push(w),G.add(w);return}let L=Z.slice(J).match(/^async\s+function\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/);if(L){let w=L[1];if(!G.has(w))Y.push(w),G.add(w)}};while(J<Q){if(B())continue;if(Z[J]==="'"||Z[J]==='"'){W(Z[J]),K=Z[J-1];continue}if(Z[J]==="`"){q(),K="`";continue}if(Z[J]==="/"&&Z[J+1]!=="/"&&Z[J+1]!=="*"&&z()){U(),K="/";continue}if(Z[J]==="{"){X++,K="{",J++;continue}if(Z[J]==="}"){X--,K="}",J++;continue}if(X===0&&/[a-z]/i.test(Z[J])&&(J===0||/\s|[;{}()]/.test(Z[J-1])))H();if(!/\s/.test(Z[J]))K=Z[J];J++}return Y.join(", ")}async function M9($,Z,Y,G){if(!O7($))return $;let X=$;if(Z.skipSignalsRuntime)return X;let{output:J,setupCode:Q}=await l9(X,Y,G);if(X=J,X=await H7(X,Z),X=B7(X),Q)if(X.includes("</head>"))X=X.replace("</head>",`${Q}
6515
6525
  </head>`);else if(X.includes("<body"))X=X.replace(/<body([^>]*)>/,`<body$1>
6516
6526
  ${Q}`);else X=X+`
6517
- `+Q;let U=X.replace(/<script\b[\s\S]*?<\/script>/gi,"").replace(/<style\b[\s\S]*?<\/style>/gi,"").match(/<body([^>]*)>/i),z=U&&/data-stx/.test(U[1]);if(!Q&&!z&&U&&!/data-stx-auto/.test(U[1])){let W=/<body[^>]*>/i,q=/<(script|style)\b[\s\S]*?<\/\1>/gi,B=[],H;while((H=q.exec(X))!==null)B.push([H.index,H.index+H[0].length]);let _=0,j=-1;while(_<X.length){W.lastIndex=_;let O=W.exec(X.slice(_));if(!O)break;let F=_+O.index;if(!B.some(([R,T])=>F>=R&&F<T)){j=F;break}_=F+O[0].length}if(j!==-1){let O=X.slice(0,j),F=X.slice(j).replace(W,(L)=>L.replace(/^<body([^>]*)>$/i,"<body$1 data-stx-auto>"));X=O+F}}return X}var S9=0,A1,D7,I7,u5,d9;var V7=V(()=>{R1();Q1();x();A1=/<script\b([^>]*)>/gi,D7=/^<([a-zA-Z][a-zA-Z0-9-]*)\b((?:\s+[^=\s>]+(?:=(?:"[^"]*"|'[^']*'|[^\s>]*))?)*\s*)>([\s\S]*)<\/\1>$/s;I7=new Set(["true","false","null","undefined","NaN","Infinity","typeof","instanceof","in","of","new","void","delete","this","Math","JSON","Date","Number","String","Boolean","Array","Object","RegExp","Map","Set","Symbol","parseInt","parseFloat","isNaN","isFinite","encodeURIComponent","decodeURIComponent","encodeURI","decodeURI","window","document","console"]);u5=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]);d9=/\s(?::else-if|x-else-if|@else-if|:else|x-else|@else)(?=[=\s/>])/});V7();export{y9 as scanScriptTags,M9 as processSignals,l9 as processScriptSetup,T9 as preEvalLiteralReactiveIfs,C9 as parseLoopExpression,O7 as hasSignalsSyntax,c9 as extractExports,I9 as convertSignalLoopsToAttributes,N9 as convertSignalDirectivesToAttributes};
6527
+ `+Q;let U=X.replace(/<script\b[\s\S]*?<\/script>/gi,"").replace(/<style\b[\s\S]*?<\/style>/gi,"").match(/<body([^>]*)>/i),z=U&&/data-stx/.test(U[1]);if(!Q&&!z&&U&&!/data-stx-auto/.test(U[1])){let W=/<body[^>]*>/i,q=/<(script|style)\b[\s\S]*?<\/\1>/gi,B=[],H;while((H=q.exec(X))!==null)B.push([H.index,H.index+H[0].length]);let _=0,j=-1;while(_<X.length){W.lastIndex=_;let O=W.exec(X.slice(_));if(!O)break;let F=_+O.index;if(!B.some(([w,T])=>F>=w&&F<T)){j=F;break}_=F+O[0].length}if(j!==-1){let O=X.slice(0,j),F=X.slice(j).replace(W,(L)=>L.replace(/^<body([^>]*)>$/i,"<body$1 data-stx-auto>"));X=O+F}}return X}var S9=0,A1,D7,I7,u5,d9;var V7=V(()=>{R1();Q1();x();A1=/<script\b([^>]*)>/gi,D7=/^<([a-zA-Z][a-zA-Z0-9-]*)\b((?:\s+[^=\s>]+(?:=(?:"[^"]*"|'[^']*'|[^\s>]*))?)*\s*)>([\s\S]*)<\/\1>$/s;I7=new Set(["true","false","null","undefined","NaN","Infinity","typeof","instanceof","in","of","new","void","delete","this","Math","JSON","Date","Number","String","Boolean","Array","Object","RegExp","Map","Set","Symbol","parseInt","parseFloat","isNaN","isFinite","encodeURIComponent","decodeURIComponent","encodeURI","decodeURI","window","document","console"]);u5=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]);d9=/\s(?::else-if|x-else-if|@else-if|:else|x-else|@else)(?=[=\s/>])/});V7();export{y9 as scanScriptTags,M9 as processSignals,l9 as processScriptSetup,T9 as preEvalLiteralReactiveIfs,C9 as parseLoopExpression,O7 as hasSignalsSyntax,c9 as extractExports,I9 as convertSignalLoopsToAttributes,N9 as convertSignalDirectivesToAttributes};
package/dist/signals.js CHANGED
@@ -1703,6 +1703,13 @@ catch (e2) {
1703
1703
 
1704
1704
  // Known directive names to exclude from generic :attr binding
1705
1705
  var DIRECTIVE_NAMES = {class:1, style:1, text:1, html:1, show:1, model:1, 'if':1, 'for':1, ref:1};
1706
+ // SVG attributes are case-sensitive, but the HTML parser lowercases
1707
+ // prefixed attribute names \u2014 ':viewBox' arrives as ':viewbox' because
1708
+ // the spec's "adjust SVG attributes" step only covers unprefixed names.
1709
+ // Without restoring the canonical casing, setAttribute('viewbox') creates
1710
+ // a dead duplicate attribute and the real viewBox never updates.
1711
+ var SVG_ATTR_CASE = {attributename:'attributeName', attributetype:'attributeType', basefrequency:'baseFrequency', baseprofile:'baseProfile', calcmode:'calcMode', clippathunits:'clipPathUnits', diffuseconstant:'diffuseConstant', edgemode:'edgeMode', filterunits:'filterUnits', glyphref:'glyphRef', gradienttransform:'gradientTransform', gradientunits:'gradientUnits', kernelmatrix:'kernelMatrix', kernelunitlength:'kernelUnitLength', keypoints:'keyPoints', keysplines:'keySplines', keytimes:'keyTimes', lengthadjust:'lengthAdjust', limitingconeangle:'limitingConeAngle', markerheight:'markerHeight', markerunits:'markerUnits', markerwidth:'markerWidth', maskcontentunits:'maskContentUnits', maskunits:'maskUnits', numoctaves:'numOctaves', pathlength:'pathLength', patterncontentunits:'patternContentUnits', patterntransform:'patternTransform', patternunits:'patternUnits', pointsatx:'pointsAtX', pointsaty:'pointsAtY', pointsatz:'pointsAtZ', preservealpha:'preserveAlpha', preserveaspectratio:'preserveAspectRatio', primitiveunits:'primitiveUnits', refx:'refX', refy:'refY', repeatcount:'repeatCount', repeatdur:'repeatDur', requiredextensions:'requiredExtensions', requiredfeatures:'requiredFeatures', specularconstant:'specularConstant', specularexponent:'specularExponent', spreadmethod:'spreadMethod', startoffset:'startOffset', stddeviation:'stdDeviation', stitchtiles:'stitchTiles', surfacescale:'surfaceScale', systemlanguage:'systemLanguage', tablevalues:'tableValues', targetx:'targetX', targety:'targetY', textlength:'textLength', viewbox:'viewBox', viewtarget:'viewTarget', xchannelselector:'xChannelSelector', ychannelselector:'yChannelSelector', zoomandpan:'zoomAndPan'};
1712
+ var SVG_NS = 'http://www.w3.org/2000/svg';
1706
1713
  var EVENT_RE = /^(click|dblclick|mousedown|mouseup|mousemove|mouseenter|mouseleave|keydown|keyup|keypress|input|change|submit|focus|blur|scroll|resize|touchstart|touchend|touchmove|contextmenu|wheel|pointerdown|pointerup|pointermove)/;
1707
1714
  var KEY_MAP = {enter:'Enter', tab:'Tab', escape:'Escape', space:' ', up:'ArrowUp', down:'ArrowDown', left:'ArrowLeft', right:'ArrowRight', 'delete':'Delete', backspace:'Backspace'};
1708
1715
 
@@ -1727,7 +1734,8 @@ catch (e2) {
1727
1734
  if (name.startsWith('@bind:') || name.startsWith('x-bind:')
1728
1735
  || (name.startsWith(':') && !name.startsWith('::') && !DIRECTIVE_NAMES[name.slice(1).split('.')[0]] && !EVENT_RE.test(name.slice(1)))
1729
1736
  || (name.startsWith('x-') && !X_HANDLED[name.split('.')[0]] && !X_HANDLED[name])) {
1730
- const attrName = name.startsWith('@bind:') ? name.slice(6) : name.startsWith('x-bind:') ? name.slice(7) : name.startsWith('x-') ? name.slice(2) : name.slice(1);
1737
+ let attrName = name.startsWith('@bind:') ? name.slice(6) : name.startsWith('x-bind:') ? name.slice(7) : name.startsWith('x-') ? name.slice(2) : name.slice(1);
1738
+ if (el.namespaceURI === SVG_NS && SVG_ATTR_CASE[attrName]) attrName = SVG_ATTR_CASE[attrName];
1731
1739
  effect(() => {
1732
1740
  const v = evalAttrExpr(value);
1733
1741
  if (v === false || v === null || v === undefined) {
@@ -2106,10 +2114,12 @@ else {
2106
2114
  });
2107
2115
  }
2108
2116
  else if (Array.isArray(value)) {
2109
- el.className = originalClasses + ' ' + value.filter(Boolean).join(' ');
2117
+ var _clsArr = originalClasses + ' ' + value.filter(Boolean).join(' ');
2118
+ if (typeof el.className === 'string') el.className = _clsArr; else el.setAttribute('class', _clsArr);
2110
2119
  }
2111
2120
  else {
2112
- el.className = originalClasses + (value ? ' ' + value : '');
2121
+ var _clsStr = originalClasses + (value ? ' ' + value : '');
2122
+ if (typeof el.className === 'string') el.className = _clsStr; else el.setAttribute('class', _clsStr);
2113
2123
  }
2114
2124
  });
2115
2125
  }