@stacksjs/stx 0.2.83 → 0.2.85

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 (53) hide show
  1. package/dist/app-shell.js +56 -56
  2. package/dist/build-assets.js +6 -6
  3. package/dist/build-mode-detector.js +101 -101
  4. package/dist/build-views.js +155 -155
  5. package/dist/build.js +43 -43
  6. package/dist/caching.js +6 -6
  7. package/dist/cli.js +57 -57
  8. package/dist/component-processing.js +22 -22
  9. package/dist/component-renderer.js +38 -38
  10. package/dist/components.js +101 -101
  11. package/dist/dev-server/index.js +42 -42
  12. package/dist/dev-server/serve-app.js +56 -56
  13. package/dist/dev-server/serve-file.js +56 -56
  14. package/dist/dev-server/serve-markdown.js +42 -42
  15. package/dist/dev-server/serve-multi.js +55 -55
  16. package/dist/dev-server.js +56 -56
  17. package/dist/docs.js +102 -102
  18. package/dist/dynamic-components.js +38 -38
  19. package/dist/includes.js +38 -38
  20. package/dist/index.js +56 -56
  21. package/dist/interactive.js +102 -102
  22. package/dist/lazy-loader.js +101 -101
  23. package/dist/plugin.js +50 -50
  24. package/dist/process.js +37 -37
  25. package/dist/production-builder.js +37 -37
  26. package/dist/production-server.js +37 -37
  27. package/dist/pwa/index.js +101 -101
  28. package/dist/pwa/offline.js +101 -101
  29. package/dist/pwa.js +90 -90
  30. package/dist/render.js +159 -159
  31. package/dist/runtime-injection.js +6 -6
  32. package/dist/serve.js +112 -112
  33. package/dist/signal-processing.js +6 -6
  34. package/dist/signals.js +6 -6
  35. package/dist/site-builder/build.js +103 -103
  36. package/dist/site-builder/index.js +44 -44
  37. package/dist/ssg.js +19 -19
  38. package/dist/ssr.js +89 -89
  39. package/dist/story/cli.js +42 -42
  40. package/dist/story/commands/dev.js +42 -42
  41. package/dist/story/commands/index.js +42 -42
  42. package/dist/story/index.js +42 -42
  43. package/dist/story/renderer.js +102 -102
  44. package/dist/story/server.js +42 -42
  45. package/dist/story/visual-testing.js +102 -102
  46. package/dist/streaming.js +38 -38
  47. package/dist/template-compiler.js +30 -30
  48. package/dist/template-hydrator.js +116 -116
  49. package/dist/testing.js +101 -101
  50. package/dist/utils.js +38 -38
  51. package/dist/variable-extractor.js +11 -11
  52. package/dist/web-components.js +101 -101
  53. package/package.json +5 -5
package/dist/ssg.js CHANGED
@@ -742,7 +742,7 @@ catch (e) {
742
742
  `,""}),headContent:Z.trim()}}function QQ($,Z){return $.replace(/@title\s*\(\s*(?:(['"`])(.+?)\1|([^)]+))\s*\)/g,(Y,J,Q,X)=>{let G=J?Q:Z[(X||"").trim()]??X;return R1({title:G}),""})}function GQ($,Z){return $.replace(/@meta\s*\(\s*(['"`])(.+?)\1\s*,\s*(?:(['"`])(.+?)\3|([^)]+))\s*\)/g,(Y,J,Q,X,G,K)=>{let q=X?G:K,W=X?q:Z[(q||"").trim()]??q,U=Q.includes(":")?{property:Q,content:W}:{name:Q,content:W};return R1({meta:[U]}),""})}var Q1,oX,t5;var V5=y(()=>{Q1={},oX=[],t5={}});var $$={};o($$,{stripTypeScript:()=>t6,hasVariables:()=>J9,extractVariables:()=>T1,extractScriptFromTemplate:()=>Y9,convertToCommonJS:()=>x4});import l1 from"path";import w5 from"process";function KQ($){let Z=[],Y=0,J=$.split(`
743
743
  `);for(let Q of J){let X=Y,G=null,K=!1;for(let q=0;q<Q.length;q++){let W=Q[q];if(K){K=!1;continue}if(W==="\\"){K=!0;continue}if(G){if(W===G)G=null;continue}if(W==="'"||W==='"'||W==="`"){G=W;continue}if(W==="/"&&q+1<Q.length&&Q[q+1]==="/")break;if(W==="{")Y++;else if(W==="}")Y--}if(X===0){let q=Q.match(/(?:const|let|var)\s+(\w+)\s*=/);if(q)Z.push(q[1]);else if(/^\s*(?:const|let|var)\s+\w+\s*;?\s*$/.test(Q)){let W=Q.match(/(?:const|let|var)\s+(\w+)/);if(W)Z.push(W[1])}else{let W=Q.match(/(?:const|let|var)\s+(\{[^}]+\}|\[[^\]]+\])\s*=/);if(W){let U=W[1].slice(1,-1).split(",").map((_)=>{let B=_.split(":");return(B.length>1?B[1]:B[0]).trim()}).filter((_)=>/^\w+$/.test(_));Z.push(...U)}}}}return[...new Set(Z)]}function t6($){let Z=$;Z=Z.replace(/^\s*import\s+.*?from\s+['"][^'"]+['"]\s*;?\s*$/gm,""),Z=Z.replace(/^\s*import\s+['"][^'"]+['"]\s*;?\s*$/gm,""),Z=Z.replace(/^\s*interface\s+\w+\s*\{[\s\S]*?\n\}\s*$/gm,""),Z=Z.replace(/^\s*type\s+\w+\s*=[\s\S]*?(?=\n(?:const|let|var|function|export|interface|type|$))/gm,""),Z=Z.replace(/^(\s*(?:export\s+)?(?:const|let|var)\s+)(\w+|\{[^}]+\}|\[[^\]]+\])\s*:\s*[^=]+(\s*=)/gm,"$1$2$3");function Y(J){if(!J.includes(":"))return J;let Q=[],X="",G=0,K=0,q=null;for(let W=0;W<J.length;W++){let z=J[W];if(q){if(X+=z,z===q)q=null;continue}if(z==='"'||z==="'"||z==="`"){q=z,X+=z;continue}if(z==="<")G++;else if(z===">"&&G>0)G--;else if(z==="(")K++;else if(z===")")K--;if(z===","&&G===0&&K===0){Q.push(X),X="";continue}X+=z}if(X)Q.push(X);return Q.map((W)=>{let z=W.trim(),U=z.startsWith("..."),_=U?z.slice(3):z,B=-1,j=0;for(let A=0;A<_.length;A++)if(_[A]==="<")j++;else if(_[A]===">")j--;else if(_[A]===":"&&j===0){B=A;break}if(B===-1)return W;let L=_.substring(0,B).trim().replace(/\?$/,""),F=_.substring(B+1),O=-1,V=0;for(let A=0;A<F.length;A++)if(F[A]==="<")V++;else if(F[A]===">")V--;else if(F[A]==="="&&V===0){O=A;break}let w=U?"...":"";if(O!==-1)return`${w}${L} = ${F.substring(O+1).trim()}`;return`${w}${L}`}).join(", ")}Z=Z.replace(/\b(function\s+\w*\s*)\(([^)]*)\)/g,(J,Q,X)=>{if(!X.includes(":"))return J;return`${Q}(${Y(X)})`});{let J=/\b(function\s+\w*\s*)\(/g,Q,X=[];while((Q=J.exec(Z))!==null){let G=Q.index+Q[0].length-1,K=1,q=G+1,W=0,z=null;while(q<Z.length&&K>0){let B=Z[q];if(z){if(B===z)z=null;q++;continue}if(B==='"'||B==="'"||B==="`"){z=B,q++;continue}if(B==="<")W++;else if(B===">"&&W>0)W--;else if(W===0){if(B==="(")K++;else if(B===")")K--}if(K>0)q++}if(K!==0)continue;let U=Z.substring(G+1,q);if(!U.includes(":"))continue;let _=Y(U);X.push({start:G+1,end:q,replacement:_})}for(let G=X.length-1;G>=0;G--){let{start:K,end:q,replacement:W}=X[G];Z=Z.substring(0,K)+W+Z.substring(q)}}return Z=Z.replace(/\(([^)]*)\)\s*(?::\s*[^=]+)?\s*=>/g,(J,Q)=>{if(!Q.includes(":"))return J;if(Q.includes("{")||Q.includes("}"))return J;return`(${Q.split(",").map((G)=>{let[K,...q]=G.split("="),W=K.split(":")[0].trim();if(q.length>0)return`${W} = ${q.join("=").trim()}`;return W}).join(", ")}) =>`}),Z=Z.replace(/(\))\s*:\s*([A-Z]\w*|void|string|number|boolean|any|unknown|never|null|undefined)(?:<[^>]+>)?(?:\s*\|\s*(?:[A-Z]\w*|void|string|number|boolean|any|unknown|never|null|undefined))*\s*(\{)/g,"$1$3"),Z=Z.replace(/(\b(?:function|class|interface|type|extends|implements)\s+\w+)\s*<[^<>()]*>/g,"$1"),Z=Z.replace(/(\b(?:defineProps|withDefaults|defineEmits|defineSlots|Array|Promise|Map|Set|Record|Partial|Required|Readonly|Pick|Omit|Exclude|Extract))\s*<[^<>()]*>/g,"$1"),Z=Z.replace(/(\w+)\s*<[A-Z][^<>()]*>\s*(?=\()/g,"$1"),Z=Z.replace(/\s+as\s+(?:const|[A-Za-z]\w*(?:\[\])?(?:\s*\|\s*\w+(?:\[\])?)*)/g,""),Z=Z.replace(/\s+satisfies\s+\w+(?:<[^>]*>)?/g,""),Z=Z.replace(/(\w|\)|\])\s*!(?!=)/g,"$1"),Z=Z.replace(/^\s*(?:export\s+)?(?:const\s+)?enum\s+\w+\s*\{[^}]*\}\s*$/gm,""),Z=Z.replace(/(?<=[\s=,(])<[A-Z]\w*(?:\[\])?>/g,""),Z=Z.replace(/\n\s*\n\s*\n/g,`
744
744
 
745
- `),Z}async function T1($,Z,Y,J={}){if(!$.trim())return;let Q;try{let S=new Bun.Transpiler({loader:"ts",target:"browser",define:o0()}),v=$.replace(/^\s*import\s+\w+\s+from\s+['"][^'"]*\.stx['"]\s*;?\s*$/gm,"");v=v.replace(/^\s*import\s+['"][^'"]*\.stx['"]\s*;?\s*$/gm,""),Q=S.transformSync(v)}catch{Q=t6($)}let X={exports:{}},G=X.exports,K=w5.cwd(),q={},W=[...Q.matchAll(/require\s*\(\s*['"]([^'"]+)['"]\s*\)/g)||[]].map((S)=>S[1]).filter((S)=>!S.startsWith("node:")&&!S.startsWith(".")&&!["fs","path","os","child_process","crypto","http","https","url","util","stream","events","buffer","net","querystring","zlib","tls"].includes(S));for(let S of W)try{let v=l1.resolve(K,"node_modules",S),x=l1.join(v,"package.json"),g=JSON.parse(z0("fs").readFileSync(x,"utf8")),u=g.main||"index.js";if(g.exports){let s=typeof g.exports==="string"?g.exports:g.exports["."];if(typeof s==="string")u=s;else if(s?.bun)u=s.bun;else if(s?.import)u=s.import;else if(s?.default)u=s.default}q[S]=await import(l1.resolve(v,u))}catch{}let z=(S)=>{if(q[S])return q[S];return z0(S)},U=Z.props||{},_=Object.assign((S)=>{if(!S)return U;let v={};for(let[x,g]of Object.entries(S)){let u=U[x];if(u!==void 0)v[x]=u;else if(typeof g==="function")v[x]=g();else v[x]=g}return v},U),B=(S)=>{if(!S)return U;let v={...U};for(let[x,g]of Object.entries(S)){let u=g&&typeof g==="object"&&!Array.isArray(g)?g:{type:g};if(v[x]===void 0&&u.default!==void 0)v[x]=typeof u.default==="function"?u.default():u.default}return v},j=()=>Z.slots||{},H=(S,v)=>{let x={...S};for(let[g,u]of Object.entries(v))if(x[g]===void 0)if(typeof u==="function")x[g]=u();else x[g]=u;return x},L=(S)=>{let v=()=>S;return v.set=(x)=>{},v.update=(x)=>{},v},F=(S)=>{let v,x=!1;return()=>{if(!x)try{v=S(),x=!0}catch{v=void 0}return v}},O=(S)=>{},V=(S)=>S(),w=(S)=>{},A=(S)=>{},N=(S)=>{},R=()=>({params:{},query:{},path:"",name:"",fullPath:"",hash:"",matched:[]}),T=()=>({push:(S)=>{},replace:(S)=>{},back:()=>{},forward:()=>{},go:(S)=>{}}),M=(S)=>{R1(S);let v=Z.__stx_runtime_head||{},x=S||{};Z.__stx_runtime_head={...v,...x.title&&{title:x.title},meta:[...v.meta||[],...x.meta||[]],link:[...v.link||[],...x.link||[]],script:[...v.script||[],...x.script||[]],htmlAttrs:{...v.htmlAttrs||{},...x.htmlAttrs||{}},bodyAttrs:{...v.bodyAttrs||{},...x.bodyAttrs||{}}}},I=(S)=>{e5(S);let v=F5();Z.__stx_runtime_head={...Z.__stx_runtime_head||{},...v.title&&{title:v.title},meta:v.meta?[...v.meta]:[]}},D=(S)=>({value:S}),E=(S)=>S,C=(S)=>({value:typeof S==="function"?S():S}),b=(S,v)=>{},k=(S)=>{},P=(S)=>{},h=(S)=>S?S():Promise.resolve(),f=(S)=>(v,...x)=>{},m=(S)=>{},l=(S,v)=>{},Y0=(S,v)=>v,K0=()=>({value:"light"}),O0=()=>({value:!1}),_0={siteId:void 0,API_ENDPOINT:"",ANALYTICS_SITE_ID:void 0,location:{href:"",pathname:"",search:"",hash:"",origin:"",host:"",hostname:"",protocol:"https:",assign:()=>{},replace:()=>{},reload:()=>{}},localStorage:{getItem:()=>null,setItem:()=>{},removeItem:()=>{},clear:()=>{}},sessionStorage:{getItem:()=>null,setItem:()=>{},removeItem:()=>{},clear:()=>{}},fetch:globalThis.fetch,addEventListener:()=>{},removeEventListener:()=>{},setTimeout:()=>0,clearTimeout:()=>{},setInterval:()=>0,clearInterval:()=>{},requestAnimationFrame:()=>0,cancelAnimationFrame:()=>{},alert:()=>{},confirm:()=>!1,prompt:()=>null,getComputedStyle:()=>({}),matchMedia:()=>({matches:!1,addListener:()=>{},removeListener:()=>{}}),getDateRangeParams:()=>"",stx:{}},$0=new Proxy(_0,{get(S,v){if(v in S)return S[v];return},set(S,v,x){return S[v]=x,!0}}),A0={getElementById:()=>null,querySelector:()=>null,querySelectorAll:()=>[],createElement:()=>({}),createTextNode:()=>({}),body:{},head:{},documentElement:{},addEventListener:()=>{},removeEventListener:()=>{}},H0=console;try{let S=x4(Q,Y),v=new Set(Object.keys(U)),x=Object.keys(Z).filter((t)=>!v.has(t)&&t!=="props"),g=x.map((t)=>Z[t]),u=new Set(["break","case","catch","class","const","continue","debugger","default","delete","do","else","export","extends","finally","for","function","if","import","in","instanceof","let","new","return","super","switch","this","throw","try","typeof","var","void","while","with","yield","enum","await","async","module","exports","require","params","window","document","console","state","derived","effect"]),s=[],q0=[];for(let[t,n0]of Object.entries(U)){if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(t))continue;if(u.has(t))continue;if(new RegExp(`(?:^|[\\s;{])(?:const|let|var|function)\\s+${t}\\b`).test(S))continue;s.push(t),q0.push(n0)}let P0=KQ(S).map((t)=>`module.exports.${t} = typeof ${t} !== 'undefined' ? ${t} : module.exports.${t};`).join(`
745
+ `),Z}async function T1($,Z,Y,J={}){if(!$.trim())return;let Q;try{let S=new Bun.Transpiler({loader:"ts",target:"browser",define:o0()}),v=$.replace(/^\s*import\s+\w+\s+from\s+['"][^'"]*\.stx['"]\s*;?\s*$/gm,"");v=v.replace(/^\s*import\s+['"][^'"]*\.stx['"]\s*;?\s*$/gm,""),Q=S.transformSync(v)}catch{Q=t6($)}let X={exports:{}},G=X.exports,K=w5.cwd(),q={},W=[...Q.matchAll(/require\s*\(\s*['"]([^'"]+)['"]\s*\)/g)||[]].map((S)=>S[1]).filter((S)=>!S.startsWith("node:")&&!S.startsWith(".")&&!["fs","path","os","child_process","crypto","http","https","url","util","stream","events","buffer","net","querystring","zlib","tls"].includes(S));for(let S of W)try{let v=l1.resolve(K,"node_modules",S),x=l1.join(v,"package.json"),g=JSON.parse(z0("fs").readFileSync(x,"utf8")),u=g.main||"index.js";if(g.exports){let s=typeof g.exports==="string"?g.exports:g.exports["."];if(typeof s==="string")u=s;else if(s?.bun)u=s.bun;else if(s?.import)u=s.import;else if(s?.default)u=s.default}q[S]=await import(l1.resolve(v,u))}catch{}let z=(S)=>{if(q[S])return q[S];return z0(S)},U=Z.props||{},_=Object.assign((S)=>{if(!S)return U;let v={};for(let[x,g]of Object.entries(S)){let u=U[x];if(u!==void 0)v[x]=u;else if(typeof g==="function")v[x]=g();else v[x]=g}return v},U),B=(S)=>{if(!S)return U;let v={...U};for(let[x,g]of Object.entries(S)){let u=g&&typeof g==="object"&&!Array.isArray(g)?g:{type:g};if(v[x]===void 0&&u.default!==void 0)v[x]=typeof u.default==="function"?u.default():u.default}return v},j=()=>Z.slots||{},H=(S,v)=>{let x={...S};for(let[g,u]of Object.entries(v))if(x[g]===void 0)if(typeof u==="function")x[g]=u();else x[g]=u;return x},L=(S)=>{let v=()=>S;return v.set=(x)=>{},v.update=(x)=>{},v},F=(S)=>{let v,x=!1;return()=>{if(!x)try{v=S(),x=!0}catch{v=void 0}return v}},O=(S)=>{},V=(S)=>S(),w=(S)=>{},A=(S)=>{},N=(S)=>{},R=()=>{let S=Z.__stxServeContext,v=Z.__stxServeSearch??S?.search??"",x=S?.path??"";return{params:Z.params??{},query:Object.fromEntries(new URLSearchParams(v)),path:x,name:"",fullPath:x+v,hash:"",matched:[]}},T=()=>({push:(S)=>{},replace:(S)=>{},back:()=>{},forward:()=>{},go:(S)=>{}}),M=(S)=>{R1(S);let v=Z.__stx_runtime_head||{},x=S||{};Z.__stx_runtime_head={...v,...x.title&&{title:x.title},meta:[...v.meta||[],...x.meta||[]],link:[...v.link||[],...x.link||[]],script:[...v.script||[],...x.script||[]],htmlAttrs:{...v.htmlAttrs||{},...x.htmlAttrs||{}},bodyAttrs:{...v.bodyAttrs||{},...x.bodyAttrs||{}}}},I=(S)=>{e5(S);let v=F5();Z.__stx_runtime_head={...Z.__stx_runtime_head||{},...v.title&&{title:v.title},meta:v.meta?[...v.meta]:[]}},D=(S)=>({value:S}),E=(S)=>S,C=(S)=>({value:typeof S==="function"?S():S}),b=(S,v)=>{},k=(S)=>{},P=(S)=>{},h=(S)=>S?S():Promise.resolve(),f=(S)=>(v,...x)=>{},m=(S)=>{},l=(S,v)=>{},Y0=(S,v)=>v,K0=()=>({value:"light"}),O0=()=>({value:!1}),_0={siteId:void 0,API_ENDPOINT:"",ANALYTICS_SITE_ID:void 0,location:{href:"",pathname:"",search:"",hash:"",origin:"",host:"",hostname:"",protocol:"https:",assign:()=>{},replace:()=>{},reload:()=>{}},localStorage:{getItem:()=>null,setItem:()=>{},removeItem:()=>{},clear:()=>{}},sessionStorage:{getItem:()=>null,setItem:()=>{},removeItem:()=>{},clear:()=>{}},fetch:globalThis.fetch,addEventListener:()=>{},removeEventListener:()=>{},setTimeout:()=>0,clearTimeout:()=>{},setInterval:()=>0,clearInterval:()=>{},requestAnimationFrame:()=>0,cancelAnimationFrame:()=>{},alert:()=>{},confirm:()=>!1,prompt:()=>null,getComputedStyle:()=>({}),matchMedia:()=>({matches:!1,addListener:()=>{},removeListener:()=>{}}),getDateRangeParams:()=>"",stx:{}},$0=new Proxy(_0,{get(S,v){if(v in S)return S[v];return},set(S,v,x){return S[v]=x,!0}}),A0={getElementById:()=>null,querySelector:()=>null,querySelectorAll:()=>[],createElement:()=>({}),createTextNode:()=>({}),body:{},head:{},documentElement:{},addEventListener:()=>{},removeEventListener:()=>{}},H0=console;try{let S=x4(Q,Y),v=new Set(Object.keys(U)),x=Object.keys(Z).filter((t)=>!v.has(t)&&t!=="props"),g=x.map((t)=>Z[t]),u=new Set(["break","case","catch","class","const","continue","debugger","default","delete","do","else","export","extends","finally","for","function","if","import","in","instanceof","let","new","return","super","switch","this","throw","try","typeof","var","void","while","with","yield","enum","await","async","module","exports","require","params","window","document","console","state","derived","effect"]),s=[],q0=[];for(let[t,n0]of Object.entries(U)){if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(t))continue;if(u.has(t))continue;if(new RegExp(`(?:^|[\\s;{])(?:const|let|var|function)\\s+${t}\\b`).test(S))continue;s.push(t),q0.push(n0)}let P0=KQ(S).map((t)=>`module.exports.${t} = typeof ${t} !== 'undefined' ? ${t} : module.exports.${t};`).join(`
746
746
  `),L1=Z.params??{},U0=[],F1=[];for(let t=0;t<x.length;t++){if(x[t]==="params")continue;U0.push(x[t]),F1.push(g[t])}let m5=await Function("module","exports","require","props","$props","defineProps","withDefaults","state","derived","effect","batch","onMount","onDestroy","definePageMeta","useRoute","useRouter","useHead","useSeoMeta","ref","reactive","computed","watch","onMounted","onUnmounted","nextTick","defineEmits","defineExpose","defineSlots","provide","inject","useColorMode","useDark","window","document","console","confirm","alert","fetch","params",...s,...U0,`return (async () => {
747
747
  ${S}
748
748
  ${P0}
@@ -758,11 +758,11 @@ ${$[q]}`,q++;else break}return K=K.trim().replace(/;$/,""),{type:Q,name:X,value:
758
758
  ${X}`,Q++}while(Q<$.length){let X=$[Q].trim();if(X.startsWith(".")||X.startsWith("?."))J+=`
759
759
  ${$[Q]}`,Q++;else break}return{value:J,nextIndex:Q}}function UQ($,Z,Y){let J=Y,Q=Z+1;while(Q<$.length){let X=J.indexOf("{");if(X!==-1){if(S0(J,"{","}",X)!==-1)break}let G=$[Q];J+=`
760
760
  ${G}`,Q++}return{functionCode:J,nextIndex:Q}}function a6($,Z){let Y=Z0($,Z)??Z0(`(${$})`,Z);if(Y!==void 0)return Y;if(!/\bprocess\b/.test($))return;let J={...Z,process:Object.freeze({env:{...w5.env}})};try{return Function(...Object.keys(J),`'use strict'; return (${$});`)(...Object.values(J))}catch{try{return Function(...Object.keys(J),`'use strict'; return ${$};`)(...Object.values(J))}catch{return}}}async function _Q($,Z,Y){let J=$.matchAll(/export\s+(const|let|var)\s+(\w+)\s*=\s*([\s\S]*?)(?=\s*(?:export\s+|$))/g);for(let X of J){let[,,G,K]=X;try{let q=K.trim().replace(/;$/,""),W=a6(q,Z);if(W!==void 0)Z[G]=W}catch(q){console.warn(`Failed to parse export ${G} in fallback:`,q)}}let Q=$.matchAll(/(?:^|\n)\s*(const|let|var)\s+(\w+)\s*=\s*([\s\S]*?)(?=\s*(?:(?:const|let|var|function|export)\s+|$))/g);for(let X of Q){let[,,G,K]=X;if(!(G in Z))try{let q=K.trim().replace(/;$/,""),W=a6(q,Z);if(W!==void 0)Z[G]=W}catch{}}}function Y9($){let Z=$.match(/<script\b[^>]*>([\s\S]*?)<\/script>/i),Y=Z?Z[1]:"",J=Z?$.replace(/<script\b[^>]*>[\s\S]*?<\/script>/i,""):$;return{scriptContent:Y,templateWithoutScript:J}}function J9($){let Z=$.trim();if(!Z)return!1;return/(?:const|let|var|function)\s+\w+/.test(Z)}var A5=y(()=>{V5();h1();T0()});var q9={};o(q9,{renderSlot:()=>Q9,processSlots:()=>K9,parseSlots:()=>X9,parseSlotElement:()=>jQ,extractSlotContent:()=>LQ,applySlots:()=>FQ});function BQ($,Z){let Y=1,J=Z,Q="<template",X="</template";while(J<$.length&&Y>0){let G=$.indexOf("<",J);if(G===-1)break;if(J=G,$.startsWith(Q,J)&&(J+Q.length>=$.length||/[\s>\/]/.test($[J+Q.length]))){Y++,J+=Q.length;continue}if($.startsWith(X,J)){let K=$.indexOf(">",J+X.length);if(K!==-1){if(Y--,Y===0)return K+1;J=K+1;continue}}J++}return Y===0?J:-1}function X9($){let Z={default:"",named:new Map},Y=$,J=/<template\s+(?:#([a-zA-Z][\w-]*)|v-slot:([a-zA-Z][\w-]*)|slot="([a-zA-Z][\w-]*)")(?:\s*=\s*"([^"]*)")?[^>]*>/gi,Q=[],X;while((X=J.exec($))!==null){let[z,U,_,B,j]=X,H=U||_||B,L=X.index+z.length,F=BQ($,L);if(F!==-1){let O=$.slice(L,F-11).trim();Q.push({start:X.index,end:F,slotName:H,content:O,propsBinding:j||void 0}),Z.named.set(H,{name:H,content:O,propsBinding:j||void 0})}}Q.sort((z,U)=>U.start-z.start);for(let z of Q)Y=Y.slice(0,z.start)+Y.slice(z.end);let G=[],K=/<([a-zA-Z][a-zA-Z0-9-]*)\b([^>]*?)\bslot="([^"]+)"([^>]*)>([\s\S]*?)<\/\1>/gi,q;while((q=K.exec(Y))!==null){let[z,U,_,B,j,H]=q,L=_.replace(/\s*slot="[^"]*"\s*/," ").trimEnd(),F=j.replace(/\s*slot="[^"]*"\s*/," ").trimEnd(),O=(L+F).trim(),V=`<${U}${O?" "+O:""}>${H}</${U}>`;G.push({start:q.index,end:q.index+z.length,slotName:B,element:V})}let W=/<([a-zA-Z][a-zA-Z0-9-]*)\b([^>]*?)\bslot="([^"]+)"([^>]*?)\/>/gi;while((q=W.exec(Y))!==null){let[z,U,_,B,j]=q,H=_.replace(/\s*slot="[^"]*"\s*/," ").trimEnd(),L=j.replace(/\s*slot="[^"]*"\s*/," ").trimEnd(),F=(H+L).trim(),O=`<${U}${F?" "+F:""} />`;G.push({start:q.index,end:q.index+z.length,slotName:B,element:O})}G.sort((z,U)=>U.start-z.start);for(let z of G){let U=Z.named.get(z.slotName);if(U)U.content+=z.element;else Z.named.set(z.slotName,{name:z.slotName,content:z.element});Y=Y.slice(0,z.start)+Y.slice(z.end)}return Z.default=Y.trim(),Z}function jQ($){let Z=$.match(/name\s*=\s*["']([^"']+)["']/),Y=Z?Z[1]:"",J={},Q=/:([a-zA-Z][\w-]*)\s*=\s*["']([^"']+)["']/g,X;while((X=Q.exec($))!==null)J[X[1]]=X[2];let G=$.match(/<slot[^>]*>([\s\S]*?)<\/slot>/i),K=G?G[1].trim():"";return{name:Y,props:J,defaultContent:K}}async function Q9($,Z,Y,J){if(!$)return Y;let Q=$.content;if($.propsBinding&&Object.keys(Z).length>0){let X=$.propsBinding.trim(),G={...J};if(X.startsWith("{")&&X.endsWith("}")){let K=X.slice(1,-1).split(",").map((q)=>q.trim()).filter(Boolean);for(let q of K){let[W,z]=q.split(":").map((_)=>_.trim()),U=z||W;if(Z[W]!==void 0)G[U]=Z[W]}}else G[X]=Z;Q=HQ(Q,G)}return Q}function HQ($,Z){return $.replace(/\{\{\s*([^}]+)\s*\}\}/g,(Y,J)=>{try{let Q=J.trim(),X=G9(Q,Z);return m0(String(X??""))}catch{return`{{ ${J} }}`}})}function G9($,Z){if(/^[a-zA-Z_$][\w$]*(\.[a-zA-Z_$][\w$]*)*$/.test($)){let J=$.split("."),Q=Z;for(let X of J)if(Q&&typeof Q==="object"&&X in Q)Q=Q[X];else return;return Q}let Y=$.match(/^([a-zA-Z_$][\w$]*)\s*([+\-*/])\s*(\d+)$/);if(Y){let[,J,Q,X]=Y,G=Z[J],K=parseInt(X,10);if(typeof G==="number")switch(Q){case"+":return G+K;case"-":return G-K;case"*":return G*K;case"/":return G/K}}try{if(!X0($))return;return Q0($,Object.keys(Z))(...Object.values(Z))}catch{return}}async function K9($,Z,Y){let J=$;J=await OQ(J,/<slot\s+name\s*=\s*["']([^"']+)["']([^>]*?)(?:\/>|>([\s\S]*?)<\/slot>)/gi,async(G,K,q,W)=>{let z=Z.named.get(K),U=W?.trim()||"",_=q||"",B={},j=/:([a-zA-Z_$][\w$-]*)\s*=\s*["']([^"']+)["']/g,H;while((H=j.exec(_))!==null){let L=H[1],F=H[2];B[L]=G9(F,Y)}return await Q9(z,B,U,Y)});let X=/<slot\s*(?:\/>|>([\s\S]*?)<\/slot>)/gi;return J=J.replace(X,(G,K)=>{if(G.includes("name="))return G;let q=K?.trim()||"";return Z.default||q}),J}async function OQ($,Z,Y){let J=[],Q=[];$.replace(Z,(K,...q)=>{let W=q[q.length-2];return Q.push({match:K,index:W}),J.push(Y(K,...q.slice(0,-2))),K});let X=await Promise.all(J),G=$;for(let K=Q.length-1;K>=0;K--){let{match:q,index:W}=Q[K];G=G.slice(0,W)+X[K]+G.slice(W+q.length)}return G}function LQ($){let Z=X9($);return{defaultSlot:Z.default,namedSlots:Z.named}}async function FQ($,Z,Y,J){return await K9($,{default:Z,named:Y},J)}var z9=y(()=>{r0();T0()});import VQ from"fs";import d from"path";function W9($){return $.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function AQ($){return/\bjs\b/.test($)||/\blang\s*=\s*["']?(js|javascript)["']?/i.test($)}function w1($){return!AQ($)}function A1($){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,(X)=>{let G=Y.length;return Y.push(X),`"__STX_EXPR_${G}__"`}),Z=Z.replace(/\{\{\{[\s\S]*?\}\}\}/g,(X)=>{let G=Y.length;return Y.push(X),`"__STX_EXPR_${G}__"`}),Z=Z.replace(/\{\{[\s\S]*?\}\}/g,(X)=>{let G=Y.length;return Y.push(X),`"__STX_EXPR_${G}__"`});let Q=new Bun.Transpiler({loader:"ts",target:"browser",define:o0()}).transformSync(Z);for(let X=0;X<Y.length;X++)Q=Q.replace(`"__STX_EXPR_${X}__"`,Y[X]),Q=Q.replace(`'__STX_EXPR_${X}__'`,Y[X]);return Q}catch(Z){if(process.env.STX_DEBUG_TS)console.warn("[STX] TypeScript transpilation error:",Z);return $}}function NQ($){let Z=[],Y=new Set,J=0,Q=0,X=$.length,G=(z)=>{Q++;while(Q<X){if($[Q]==="\\"){Q+=2;continue}if($[Q]===z){Q++;return}Q++}},K=()=>{Q++;while(Q<X){if($[Q]==="\\"){Q+=2;continue}if($[Q]==="`"){Q++;return}if($[Q]==="$"&&$[Q+1]==="{"){Q+=2;let z=1;while(Q<X&&z>0)if($[Q]==="{")z++,Q++;else if($[Q]==="}")z--,Q++;else if($[Q]==="'"||$[Q]==='"')G($[Q]);else if($[Q]==="`")K();else Q++;continue}Q++}},q=()=>{if($[Q]==="/"&&$[Q+1]==="/"){while(Q<X&&$[Q]!==`
761
- `)Q++;return!0}if($[Q]==="/"&&$[Q+1]==="*"){Q+=2;while(Q<X-1&&!($[Q]==="*"&&$[Q+1]==="/"))Q++;return Q+=2,!0}return!1},W=()=>{if(J!==0)return;let z=$.slice(Q).match(/^(const|let|var)\s*\{([^}]+)\}\s*=/);if(z){let j=z[2].split(",").map((H)=>{let L=H.trim().split(":");return L[L.length-1].trim()});for(let H of j)if(H&&/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(H)&&!Y.has(H))Z.push(H),Y.add(H);return}let U=$.slice(Q).match(/^(const|let|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=/);if(U){let j=U[2];if(!Y.has(j))Z.push(j),Y.add(j);return}let _=$.slice(Q).match(/^function\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/);if(_){let j=_[1];if(!Y.has(j))Z.push(j),Y.add(j);return}let B=$.slice(Q).match(/^async\s+function\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/);if(B){let j=B[1];if(!Y.has(j))Z.push(j),Y.add(j)}};while(Q<X){if(q())continue;if($[Q]==="'"||$[Q]==='"'){G($[Q]);continue}if($[Q]==="`"){K();continue}if($[Q]==="{"){J++,Q++;continue}if($[Q]==="}"){J--,Q++;continue}if(J===0&&/[a-z]/i.test($[Q])&&(Q===0||/\s|[;{}()]/.test($[Q-1])))W();Q++}return Z}function RQ($){let Z=[],Y=0,J=0,Q=null;for(let X=0;X<$.length;X++){let G=$[X];if(Q){if(G==="\\"){X++;continue}if(G===Q)Q=null;continue}if(G==='"'||G==="'"||G==="`"){Q=G;continue}if(G==="("||G==="["||G==="{")Y++;else if(G===")"||G==="]"||G==="}")Y--;else if(G===","&&Y===0)Z.push($.slice(J,X)),J=X+1}if(J<$.length)Z.push($.slice(J));return Z}function TQ($){let Z=0,Y=null;for(let J=0;J<$.length;J++){let Q=$[J];if(Y){if(Q==="\\"){J++;continue}if(Q===Y)Y=null;continue}if(Q==='"'||Q==="'"||Q==="`"){Y=Q;continue}if(Q==="("||Q==="["||Q==="{")Z++;else if(Q===")"||Q==="]"||Q==="}")Z--;else if(Q==="="&&Z===0){let X=$[J-1],G=$[J+1];if(X==="!"||X==="<"||X===">"||X==="=")continue;if(G==="="||G===">")continue;return J}}return-1}function MQ($,Z){try{let Y=/=\s*(?:withDefaults\s*\([\s\S]*?defineProps|defineProps)\b/.exec($);if(!Y)return;let J=Y.index-1;while(J>=0&&/\s/.test($[J]))J--;if($[J]!=="}")return;let Q=J,X=0,G=-1;for(;J>=0;J--){let q=$[J];if(q==="}")X++;else if(q==="{"){if(X--,X===0){G=J;break}}}if(G===-1)return;let K=$.slice(G+1,Q);for(let q of RQ(K)){let W=q.trim();if(!W||W.startsWith("..."))continue;let z=TQ(W);if(z===-1)continue;let U=W.slice(0,z).trim();if(!/^[A-Z_$][\w$]*$/i.test(U))continue;if(Z[U]!==void 0)continue;let _=W.slice(z+1).trim();if(!_)continue;try{let B=Object.keys(Z),j=Function(...B,`"use strict"; return (${_});`);Z[U]=j(...B.map((H)=>Z[H]))}catch{}}}catch{}}async function U9($,Z,Y,J,Q){let X=$.endsWith(".stx")?$.slice(0,-4):$,G=(L)=>L.split("-").map((F)=>F.charAt(0).toUpperCase()+F.slice(1)).join(""),K=(L)=>L.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),q=Y.__importedComponents;if(q){for(let L of[X,X.toLowerCase(),G(X),K(X)])if(q.has(L))return!0}let W=[...new Set([`${X}.stx`,`${G(X)}.stx`,`${K(X)}.stx`])],z=typeof Q.root==="string"?d.resolve(Q.root):void 0,U=z??d.dirname(J),_=[],B=(L)=>{if(L&&!_.includes(L))_.push(L)},j=Y.__originalFilePath;if(j)B(d.join(d.dirname(j),"components"));B(Z),B(d.join(d.dirname(J),"components")),B(Q.componentsDir);let H=Q._pluginComponentDirs;if(Array.isArray(H))for(let L of H)B(typeof L==="string"?L:null);if(z)B(d.resolve(z,"resources/views/components")),B(d.resolve(z,"resources/components")),B(d.resolve(z,"src/components")),B(d.resolve(z,"components"));if(X.startsWith("./")||X.startsWith("../"))return c(d.resolve(d.dirname(J),`${X}.stx`));for(let L of _){let F=d.isAbsolute(L)?L:d.resolve(U,L);for(let O of W)if(await c(d.join(F,O)))return!0}return!1}function IQ($){return $==="visible"||$==="idle"||$==="interaction"||$.startsWith("media:")}async function M1($,Z,Y,J,Q,X,G,K=new Set,q){let{extractVariables:W}=await Promise.resolve().then(() => (A5(),$$)),z=K??new Set;if(z.has($))return`[Circular component reference: ${$}]`;let U=new Set(z);U.add($);let _=typeof Z.client==="string"?Z.client.trim():"";if("client"in Z)delete Z.client;let B=_&&_!=="load"&&IQ(_)?_:"";try{let j=(S)=>S.split("-").map((v)=>v.charAt(0).toUpperCase()+v.slice(1)).join(""),H=(S)=>S.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),L=$.endsWith(".stx")?$.slice(0,-4):$,F=null,O=Q.__importedComponents;if(O){let S=[L,L.toLowerCase(),j(L),H(L)];for(let v of S)if(O.has(v)){F=O.get(v);break}}let V=[];if(!F){let S=[`${L}.stx`,`${j(L)}.stx`,`${H(L)}.stx`],v=[...new Set(S)],x=Q.__originalFilePath,g=[];if(x){let U0=d.join(d.dirname(x),"components");g.push(U0)}if(J)g.push(J);let u=d.join(d.dirname(X),"components");if(!g.includes(u))g.push(u);if(G.componentsDir&&G.componentsDir!==J&&!g.includes(G.componentsDir))g.push(G.componentsDir);let s=G._pluginComponentDirs;if(Array.isArray(s)){for(let U0 of s)if(typeof U0==="string"&&!g.includes(U0))g.push(U0)}let q0=typeof G.root==="string"?d.resolve(G.root):void 0,b0=q0??d.dirname(X),P0=[];if(q0)P0.push(d.resolve(q0,"resources/views/components")),P0.push(d.resolve(q0,"resources/components")),P0.push(d.resolve(q0,"src/components")),P0.push(d.resolve(q0,"components"));P0.push(d.resolve(import.meta.dir,"components"));for(let U0 of P0)if(!g.includes(U0))g.push(U0);let L1=[...new Set(g.map((U0)=>{if(!U0)return U0;return d.isAbsolute(U0)?U0:d.resolve(b0,U0)}))];if(g.length=0,g.push(...L1),L.startsWith("./")||L.startsWith("../"))F=d.resolve(d.dirname(X),`${L}.stx`),V.push(F);else for(let U0 of g){if(!U0)continue;for(let F1 of v){let q5=d.join(U0,F1);if(V.push(q5),await c(q5)){F=q5;break}}if(F)break;if(!F)try{let F1=await import("fs");if(!F1.statSync(U0,{throwIfNoEntry:!1})?.isDirectory())continue;let m5=8,t=[{path:U0,depth:0}];while(t.length>0&&!F){let n0=t.pop();if(n0.depth>=m5)continue;let w4;try{w4=F1.readdirSync(n0.path,{withFileTypes:!0})}catch{continue}for(let u5 of w4){if(!u5.isDirectory())continue;if(u5.name==="node_modules"||u5.name.startsWith("."))continue;let Y6=d.join(n0.path,u5.name);for(let mJ of v){let A4=d.join(Y6,mJ);if(V.push(A4),await c(A4)){F=A4;break}}if(F)break;t.push({path:Y6,depth:n0.depth+1})}}}catch{}if(F)break}}if(!F||!await c(F)){let S=V.length>0?`
761
+ `)Q++;return!0}if($[Q]==="/"&&$[Q+1]==="*"){Q+=2;while(Q<X-1&&!($[Q]==="*"&&$[Q+1]==="/"))Q++;return Q+=2,!0}return!1},W=()=>{if(J!==0)return;let z=$.slice(Q).match(/^(const|let|var)\s*\{([^}]+)\}\s*=/);if(z){let j=z[2].split(",").map((H)=>{let L=H.trim().split(":");return L[L.length-1].trim()});for(let H of j)if(H&&/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(H)&&!Y.has(H))Z.push(H),Y.add(H);return}let U=$.slice(Q).match(/^(const|let|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=/);if(U){let j=U[2];if(!Y.has(j))Z.push(j),Y.add(j);return}let _=$.slice(Q).match(/^function\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/);if(_){let j=_[1];if(!Y.has(j))Z.push(j),Y.add(j);return}let B=$.slice(Q).match(/^async\s+function\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/);if(B){let j=B[1];if(!Y.has(j))Z.push(j),Y.add(j)}};while(Q<X){if(q())continue;if($[Q]==="'"||$[Q]==='"'){G($[Q]);continue}if($[Q]==="`"){K();continue}if($[Q]==="{"){J++,Q++;continue}if($[Q]==="}"){J--,Q++;continue}if(J===0&&/[a-z]/i.test($[Q])&&(Q===0||/\s|[;{}()]/.test($[Q-1])))W();Q++}return Z}function RQ($){let Z=[],Y=0,J=0,Q=null;for(let X=0;X<$.length;X++){let G=$[X];if(Q){if(G==="\\"){X++;continue}if(G===Q)Q=null;continue}if(G==='"'||G==="'"||G==="`"){Q=G;continue}if(G==="("||G==="["||G==="{")Y++;else if(G===")"||G==="]"||G==="}")Y--;else if(G===","&&Y===0)Z.push($.slice(J,X)),J=X+1}if(J<$.length)Z.push($.slice(J));return Z}function TQ($){let Z=0,Y=null;for(let J=0;J<$.length;J++){let Q=$[J];if(Y){if(Q==="\\"){J++;continue}if(Q===Y)Y=null;continue}if(Q==='"'||Q==="'"||Q==="`"){Y=Q;continue}if(Q==="("||Q==="["||Q==="{")Z++;else if(Q===")"||Q==="]"||Q==="}")Z--;else if(Q==="="&&Z===0){let X=$[J-1],G=$[J+1];if(X==="!"||X==="<"||X===">"||X==="=")continue;if(G==="="||G===">")continue;return J}}return-1}function MQ($,Z){try{let Y=/=\s*(?:withDefaults\s*\([\s\S]*?defineProps|defineProps)\b/.exec($);if(!Y)return;let J=Y.index-1;while(J>=0&&/\s/.test($[J]))J--;if($[J]!=="}")return;let Q=J,X=0,G=-1;for(;J>=0;J--){let q=$[J];if(q==="}")X++;else if(q==="{"){if(X--,X===0){G=J;break}}}if(G===-1)return;let K=$.slice(G+1,Q);for(let q of RQ(K)){let W=q.trim();if(!W||W.startsWith("..."))continue;let z=TQ(W);if(z===-1)continue;let U=W.slice(0,z).trim();if(!/^[A-Z_$][\w$]*$/i.test(U))continue;if(Z[U]!==void 0)continue;let _=W.slice(z+1).trim();if(!_)continue;try{let B=Object.keys(Z),j=Function(...B,`"use strict"; return (${_});`);Z[U]=j(...B.map((H)=>Z[H]))}catch{}}}catch{}}async function U9($,Z,Y,J,Q){let X=$.endsWith(".stx")?$.slice(0,-4):$,G=(L)=>L.split("-").map((F)=>F.charAt(0).toUpperCase()+F.slice(1)).join(""),K=(L)=>L.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),q=Y.__importedComponents;if(q){for(let L of[X,X.toLowerCase(),G(X),K(X)])if(q.has(L))return!0}let W=[...new Set([`${X}.stx`,`${G(X)}.stx`,`${K(X)}.stx`])],z=typeof Q.root==="string"?d.resolve(Q.root):void 0,U=z??d.dirname(J),_=[],B=(L)=>{if(L&&!_.includes(L))_.push(L)},j=Y.__originalFilePath;if(j)B(d.join(d.dirname(j),"components"));B(Z),B(d.join(d.dirname(J),"components")),B(Q.componentsDir);let H=Q._pluginComponentDirs;if(Array.isArray(H))for(let L of H)B(typeof L==="string"?L:null);if(z)B(d.resolve(z,"resources/views/components")),B(d.resolve(z,"resources/components")),B(d.resolve(z,"src/components")),B(d.resolve(z,"components"));if(X.startsWith("./")||X.startsWith("../"))return c(d.resolve(d.dirname(J),`${X}.stx`));for(let L of _){let F=d.isAbsolute(L)?L:d.resolve(U,L);for(let O of W)if(await c(d.join(F,O)))return!0}return!1}function IQ($){return $==="visible"||$==="idle"||$==="interaction"||$.startsWith("media:")}async function M1($,Z,Y,J,Q,X,G,K=new Set,q){let{extractVariables:W}=await Promise.resolve().then(() => (A5(),$$)),z=K??new Set;if(z.has($))return`[Circular component reference: ${$}]`;let U=new Set(z);U.add($);let _=typeof Z.client==="string"?Z.client.trim():"";if("client"in Z)delete Z.client;let B=_&&_!=="load"&&IQ(_)?_:"";try{let j=(S)=>S.split("-").map((v)=>v.charAt(0).toUpperCase()+v.slice(1)).join(""),H=(S)=>S.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),L=$.endsWith(".stx")?$.slice(0,-4):$,F=null,O=Q.__importedComponents;if(O){let S=[L,L.toLowerCase(),j(L),H(L)];for(let v of S)if(O.has(v)){F=O.get(v);break}}let V=[];if(!F){let S=[`${L}.stx`,`${j(L)}.stx`,`${H(L)}.stx`],v=[...new Set(S)],x=Q.__originalFilePath,g=[];if(x){let U0=d.join(d.dirname(x),"components");g.push(U0)}if(J)g.push(J);let u=d.join(d.dirname(X),"components");if(!g.includes(u))g.push(u);if(G.componentsDir&&G.componentsDir!==J&&!g.includes(G.componentsDir))g.push(G.componentsDir);let s=G._pluginComponentDirs;if(Array.isArray(s)){for(let U0 of s)if(typeof U0==="string"&&!g.includes(U0))g.push(U0)}let q0=typeof G.root==="string"?d.resolve(G.root):void 0,D0=q0??d.dirname(X),P0=[];if(q0)P0.push(d.resolve(q0,"resources/views/components")),P0.push(d.resolve(q0,"resources/components")),P0.push(d.resolve(q0,"src/components")),P0.push(d.resolve(q0,"components"));P0.push(d.resolve(import.meta.dir,"components"));for(let U0 of P0)if(!g.includes(U0))g.push(U0);let L1=[...new Set(g.map((U0)=>{if(!U0)return U0;return d.isAbsolute(U0)?U0:d.resolve(D0,U0)}))];if(g.length=0,g.push(...L1),L.startsWith("./")||L.startsWith("../"))F=d.resolve(d.dirname(X),`${L}.stx`),V.push(F);else for(let U0 of g){if(!U0)continue;for(let F1 of v){let q5=d.join(U0,F1);if(V.push(q5),await c(q5)){F=q5;break}}if(F)break;if(!F)try{let F1=await import("fs");if(!F1.statSync(U0,{throwIfNoEntry:!1})?.isDirectory())continue;let m5=8,t=[{path:U0,depth:0}];while(t.length>0&&!F){let n0=t.pop();if(n0.depth>=m5)continue;let w4;try{w4=F1.readdirSync(n0.path,{withFileTypes:!0})}catch{continue}for(let u5 of w4){if(!u5.isDirectory())continue;if(u5.name==="node_modules"||u5.name.startsWith("."))continue;let Y6=d.join(n0.path,u5.name);for(let mJ of v){let A4=d.join(Y6,mJ);if(V.push(A4),await c(A4)){F=A4;break}}if(F)break;t.push({path:Y6,depth:n0.depth+1})}}}catch{}if(F)break}}if(!F||!await c(F)){let S=V.length>0?`
762
762
  Searched paths:
763
763
  ${V.map((v)=>` - ${v}`).join(`
764
764
  `)}`:"";return`[Error loading component: ENOENT: no such file or directory, open '${$}']${S}`}q.add(F);let w;if(f4.has(F))w=f4.get(F);else try{w=await Bun.file(F).text(),f4.set(F,w)}catch(S){return`[Error loading component: ${S instanceof Error?S.message:String(S)}]`}let A=new Set(["__originalFilePath","__importedComponents"]),N={};for(let[S,v]of Object.entries(Q))if(!S.startsWith("__")||A.has(S))N[S]=v;let R={...N,...Z,props:Z,slot:Y,__processedComponents:U,__sections:{}};MQ(w,R);let T=w,M=T.match(/<template\b(?![^>]*\b(?:id|x-for|x-if|@for|@if|:for|:if)\s*=)[^>]*>([\s\S]*?)<\/template>/i);if(M)T=M[1].trim();let I=/<script\b([^>]*)>([\s\S]*?)<\/script>/gi,D=[...w.matchAll(I)],E=[];for(let S of D){let v=S[1]||"",x=S[2]||"",g=v.includes("server");if(w1(v)&&x.trim())x=A1(x);if(g&&x)try{await W(x,R,F)}catch(s){}if(!g){let s=x.replace(/^\s*const\s*\{[^}]+\}\s*=\s*window\.stx\s*;?\s*\n?/gm,"");if(s.includes("{{")&&s.includes("}}"))s=s0(s,R,F);let q0=v.replace(/\s*\bts\b/g,"").replace(/\s*\blang\s*=\s*["']?(ts|typescript)["']?/gi,"");E.push(`<script${q0}>${s}</script>`)}}let C=w.match(/<style\b([^>]*)>([\s\S]*?)<\/style>/i),b=C?C[1]:"",k=C?C[2]:"",P="",h=b&&/\bscoped\b/i.test(b);if(C)P=`<style${b}>${k}</style>`;let f=T;if(f=f.replace(/<script\b[^>]*>[\s\S]*?<\/script>/gi,""),C)f=f.replace(/<style\b[^>]*>[\s\S]*?<\/style>/gi,"");{let S=/@push\s*\(\s*['"]styles['"]\s*\)([\s\S]*?)@endpush/gi,v=[];if(f=f.replace(S,(x,g)=>{let u=g.match(/<style\b([^>]*)>([\s\S]*?)<\/style>/i);if(u)v.push(`<style${u[1]}>${u[2]}</style>`);return""}),f=f.replace(/@push\s*\(\s*['"][^'"]+['"]\s*\)[\s\S]*?@endpush/gi,""),v.length>0)P=`${P}${v.join(`
765
- `)}`}if(Y&&f.includes("{{ text || slot }}"))f=f.replace(/\{\{\s*text\s*\|\|\s*slot\s*\}\}/g,()=>Y);let{extractSlotContent:m,applySlots:l}=await Promise.resolve().then(() => (z9(),q9)),{defaultSlot:Y0,namedSlots:K0}=m(Y);f=await l(f,Y0||Y,K0,R);for(let[S,v]of Object.entries(R))if(typeof v==="string"){if(v.includes("<")&&v.includes(">")||v.includes("&lt;")||v.includes("&quot;")){let x=b4(v);R[S]=x}}let O0=E.some((S)=>/\b(state|derived|effect)\s*(?:<[^<>()]*>)?\s*\(/.test(S)),_0={...G,componentsDir:d.dirname(F),skipSignalsRuntime:!0,skipEventDirectives:O0,defaultLayout:void 0};R.__stxProcessingDepth=(Q.__stxProcessingDepth||0)+1;let $0=await j0(f,R,F,_0,q),A0=`stx_${L.replace(/[^a-zA-Z0-9]/g,"_")}_${++wQ}_${Math.random().toString(36).slice(2,8)}`,H0=$0;if(O0){let S="";if(Object.keys(Z).length>0)try{S=` data-stx-props="${W9(JSON.stringify(Z))}"`}catch{}let v=B?` stx-hydrate="${W9(B)}"`:"";if(H0=`<div data-stx-scope="${A0}"${S}${v}>${$0}</div>`,H0=E.map((g)=>{let u=g.match(/<script([^>]*)>([\s\S]*)<\/script>/i);if(!u)return g;let[,s,q0]=u,b0=$1(q0),P0=`
765
+ `)}`}if(Y&&f.includes("{{ text || slot }}"))f=f.replace(/\{\{\s*text\s*\|\|\s*slot\s*\}\}/g,()=>Y);let{extractSlotContent:m,applySlots:l}=await Promise.resolve().then(() => (z9(),q9)),{defaultSlot:Y0,namedSlots:K0}=m(Y);f=await l(f,Y0||Y,K0,R);for(let[S,v]of Object.entries(R))if(typeof v==="string"){if(v.includes("<")&&v.includes(">")||v.includes("&lt;")||v.includes("&quot;")){let x=b4(v);R[S]=x}}let O0=E.some((S)=>/\b(state|derived|effect)\s*(?:<[^<>()]*>)?\s*\(/.test(S)),_0={...G,componentsDir:d.dirname(F),skipSignalsRuntime:!0,skipEventDirectives:O0,defaultLayout:void 0};R.__stxProcessingDepth=(Q.__stxProcessingDepth||0)+1;let $0=await j0(f,R,F,_0,q),A0=`stx_${L.replace(/[^a-zA-Z0-9]/g,"_")}_${++wQ}_${Math.random().toString(36).slice(2,8)}`,H0=$0;if(O0){let S="";if(Object.keys(Z).length>0)try{S=` data-stx-props="${W9(JSON.stringify(Z))}"`}catch{}let v=B?` stx-hydrate="${W9(B)}"`:"";if(H0=`<div data-stx-scope="${A0}"${S}${v}>${$0}</div>`,H0=E.map((g)=>{let u=g.match(/<script([^>]*)>([\s\S]*)<\/script>/i);if(!u)return g;let[,s,q0]=u,D0=$1(q0),P0=`
766
766
  (function() {
767
767
  const { state, derived, effect, batch, defineEmits, defineExpose, defineSlots, defineProps, withDefaults, useStore, useFetch, useRef, useQuery, useMutation, useOptimistic, useDebounce, useDebouncedValue, useThrottle, useInterval, useTimeout, useToggle, useCounter, useClickOutside, useFocus, useAsync, useLocalStorage, useSessionStorage, useCookie, useReactiveProp, useEventListener, useWebSocket, useColorMode, useDark, useHead, useSeoMeta, definePageMeta, useRoute, useSearchParams, navigate, goBack, goForward, provide, inject, ref, reactive, computed, watch, watchEffect, nextTick } = window.stx;
768
768
  const __scope = window.stx._scopes = window.stx._scopes || {};
@@ -774,12 +774,12 @@ ${V.map((v)=>` - ${v}`).join(`
774
774
  const onMount = (fn) => __scopeVars.__mountCallbacks.push(fn);
775
775
  const onDestroy = (fn) => __scopeVars.__destroyCallbacks.push(fn);
776
776
 
777
- ${b0}
777
+ ${D0}
778
778
 
779
779
  // Register all defined signals and functions in this scope
780
780
  const __localVars = {};
781
781
  try {
782
- ${NQ(b0).map((L1)=>`if (typeof ${L1} !== 'undefined') __localVars['${L1}'] = ${L1};`).join(`
782
+ ${NQ(D0).map((L1)=>`if (typeof ${L1} !== 'undefined') __localVars['${L1}'] = ${L1};`).join(`
783
783
  `)}
784
784
  }
785
785
  catch (e) {}
@@ -852,7 +852,7 @@ ${r.dim}${K}${r.reset}
852
852
  filter: blur(0);
853
853
  transform: scale(1);
854
854
  }
855
- `.trim();i4=new Map});import{createHash as w9}from"crypto";import{readFile as hQ,stat as A9}from"fs/promises";async function D0($){try{let Z=await hQ($);return w9("sha256").update(Z).digest("hex").slice(0,16)}catch{return""}}function V9($){return w9("sha256").update($).digest("hex").slice(0,16)}function J$($,Z){let Y=JSON.stringify(Z,Object.keys(Z).sort());return`${V9($)}-${V9(Y)}`}async function o4($){try{return(await A9($)).mtimeMs}catch{return 0}}async function I0($){try{return await A9($),!0}catch{return!1}}var I1=()=>{};import{mkdir as dQ,readFile as mQ,writeFile as uQ,readdir as nB,rm as pQ,stat as oB}from"fs/promises";import{join as R9,dirname as lQ}from"path";async function cQ($){try{await dQ($,{recursive:!0})}catch{}}function T9($,Z,Y){return R9($,Y,`${Z}.json`)}async function N9($,Z,Y){if((Date.now()-$.createdAt)/86400000>Y)return!1;if(await o4(Z)!==$.srcMtime)return!1;return!0}async function X$($,Z,Y,J=s4){if(!J.enabled)return null;let Q=J$($,Z),X=i1.get(Q);if(X){if(await N9(X,$,J.maxAge))return X.lastAccessedAt=Date.now(),X.data;i1.delete(Q)}let G=T9(J.directory,Q,Y);if(await I0(G))try{let K=await mQ(G,"utf-8"),q=JSON.parse(K);if(await N9(q,$,J.maxAge))return q.lastAccessedAt=Date.now(),i1.set(Q,q),q.data}catch{}return null}async function Q$($,Z,Y,J,Q=s4){if(!Q.enabled)return;let X=J$($,Z),G=await D0($),K=await o4($),q={key:X,src:$,srcHash:G,srcMtime:K,optionsHash:J$("",Z),data:Y,createdAt:Date.now(),lastAccessedAt:Date.now()};i1.set(X,q);let W=T9(Q.directory,X,J);try{await cQ(lQ(W)),await uQ(W,JSON.stringify(q,null,2))}catch(z){console.warn(`[stx-media] Failed to write cache: ${z}`)}}async function G$($,Z=s4){if($==="all")i1.clear();else i1.clear();let Y=$==="all"?["image","video"]:[$];for(let J of Y){let Q=R9(Z.directory,J);try{await pQ(Q,{recursive:!0,force:!0})}catch{}}}var i1,s4;var r4=y(()=>{I1();i1=new Map,s4={enabled:!0,directory:".stx/media-cache",maxAge:30,maxSize:500}});class q${config;constructor($={}){this.config={...iQ,...$}}async get($,Z){return X$($,Z,"image",this.config)}async set($,Z,Y){return Q$($,Z,Y,"image",this.config)}async clear(){return G$("image",this.config)}updateConfig($){this.config={...this.config,...$}}}function a4($){if(!K$)K$=new q$($);else if($)K$.updateConfig($);return K$}async function z$($,Z,Y){let J=Y?{directory:`${Y.outputDir}/../.cache`}:{};return a4(J).get($,Z)}async function W$($,Z,Y,J){let Q=J?{directory:`${J.outputDir}/../.cache`}:{};return a4(Q).set($,Z,Y)}async function M9(){return a4().clear()}var iQ,K$=null;var t4=y(()=>{r4();iQ={enabled:!0,directory:".stx/media-cache",maxAge:30,maxSize:500,cacheVariants:!0,cachePlaceholders:!0}});import{resolve as nQ,basename as oQ,extname as sQ,join as rQ}from"path";import{mkdir as aQ}from"fs/promises";async function e4(){try{return await import("ts-images")}catch{return null}}function I9($){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 tQ($,Z){let Y=Z?I9(Z):I9("web"),J=$.formatQuality||{};return{jpeg:{...Y.jpeg,...J.jpeg},png:{...Y.png,...J.png},webp:{...Y.webp,...J.webp},avif:{...Y.avif,...J.avif}}}async function D9($,Z,Y){let J=await e4();if(!J)return console.warn("[stx-media] ts-images not installed, skipping optimization"),{src:$,processed:!1};let Q=await z$($,Z,Y);if(Q)return Q;try{let X=nQ($);if(!await I0(X))return{src:$,processed:!1,errors:[`Source file not found: ${$}`]};let G=tQ(Y,Z.preset),K=Y.outputDir||"dist/images",q=Y.baseUrl||"/images";await aQ(K,{recursive:!0});let W=await D0(X),z=oQ($,sQ($)),U=Z.outputFormat?[Z.outputFormat]:Y.defaultFormats||["avif","webp","jpeg"],_={src:$,processed:!0,variants:[],hash:W},B=null;if(Z.transformations&&Z.transformations.length>0)B=await $7(X,Z.transformations,J);for(let j of U){let H=G[j]||{},L=`${z}-${W}.${j}`,F=rQ(K,L);try{let O=await J.optimizeImage({input:B||X,output:F,format:j,quality:H.quality,progressive:H.progressive});if(O){if(_.variants.push({path:F,url:`${q}/${L}`,width:O.width||0,height:O.height||0,format:j,size:O.outputSize||0}),!_.originalWidth&&O.width)_.originalWidth=O.width,_.originalHeight=O.height}}catch(O){_.errors=_.errors||[],_.errors.push(`Failed to optimize ${j}: ${O}`)}}if(Z.embedThumbhash||Z.placeholder==="thumbhash")try{let j=await J.generateThumbHash(X);_.placeholder=j.dataUrl}catch(j){_.errors=_.errors||[],_.errors.push(`Failed to generate thumbhash: ${j}`)}if(Z.useDominantColor)try{let j=await J.generatePlaceholder(X,{strategy:"dominant-color"});_.dominantColor=j.dominantColor}catch(j){_.errors=_.errors||[],_.errors.push(`Failed to extract dominant color: ${j}`)}return await W$($,Z,_,Y),_}catch(X){return{src:$,processed:!1,errors:[`Processing failed: ${X}`]}}}async function E9($,Z,Y,J){let Q=await e4();if(!Q)return{success:!1,error:"ts-images not installed"};try{return{success:!0,size:(await Q.optimizeImage({input:$,output:J,format:Z,quality:Y}))?.outputSize}}catch(X){return{success:!1,error:String(X)}}}async function $7($,Z,Y){let J=Y||await e4();if(!J)return console.warn("[stx-media] ts-images not installed, skipping transformations"),null;try{let Q=await J.decode($);for(let X of Z){let G=X.options||{};switch(X.type){case"resize":if(G.width||G.height)Q=await J.resize(Q,{width:G.width,height:G.height,fit:G.fit});break;case"blur":if(G.sigma!==void 0)Q=await J.blur(Q,G.sigma);break;case"sharpen":if(G.amount!==void 0)Q=await J.sharpen(Q,G.amount);break;case"grayscale":Q=await J.grayscale(Q);break;case"rotate":if(G.angle!==void 0)Q=await J.rotate(Q,G.angle);break;case"flip":Q=await J.flip(Q);break;case"flop":Q=await J.flop(Q);break;case"brightness":if(G.value!==void 0)Q=await J.brightness(Q,G.value);break;case"contrast":if(G.value!==void 0)Q=await J.contrast(Q,G.value);break;case"saturation":if(G.value!==void 0)Q=await J.saturation(Q,G.value);break}}return await J.encode(Q,"png")}catch(Q){return console.error(`[stx-media] Transformation failed: ${Q}`),null}}var k9=y(()=>{I1();t4()});import{resolve as eQ,basename as $G,extname as ZG,join as YG}from"path";import{mkdir as JG}from"fs/promises";async function XG(){try{return await import("ts-images")}catch{return null}}async function b9($,Z,Y){let J=await XG();if(!J)return console.warn("[stx-media] ts-images not installed, skipping responsive generation"),null;let Q=eQ($);if(!await I0(Q))return console.warn(`[stx-media] Source file not found: ${$}`),null;try{let X=Z.responsiveWidths||Y.breakpoints||QG,G=Z.formats||Y.defaultFormats||["avif","webp","jpeg"],K=Y.outputDir||"dist/images",q=Y.baseUrl||"/images";await JG(K,{recursive:!0});let W=await D0(Q),z=$G($,ZG($)),U=Y.formatQuality||{jpeg:{quality:82},png:{quality:80},webp:{quality:82},avif:{quality:75}},_={src:$,byFormat:{},srcsets:{}};for(let j of G){_.byFormat[j]=[];let H=[];for(let L of X){let F=`${z}-${L}w-${W}.${j}`,O=YG(K,F),V=`${q}/${F}`;try{let w=U[j]?.quality||80;if(await I0(O)){_.byFormat[j].push({path:O,url:V,width:L,height:0,format:j,size:0}),H.push(`${V} ${L}w`);continue}let A=await J.processImage({input:Q,output:O,format:j,quality:w,resize:{width:L}});if(A)_.byFormat[j].push({path:O,url:V,width:L,height:A.height||Math.round(L*(A.height||1)/(A.width||1)),format:j,size:A.outputSize||0}),H.push(`${V} ${L}w`)}catch(w){console.warn(`[stx-media] Failed to generate ${j} at ${L}w: ${w}`)}}_.srcsets[j]=H.join(", ")}let B=Z.placeholder||Y.placeholderStrategy||"thumbhash";if(B!=="none")try{if(B==="thumbhash"){let j=await J.generateThumbHash(Q);_.placeholder={dataURL:j.dataUrl,width:j.width||32,height:j.height||32,strategy:"thumbhash"}}else{let j=await J.generatePlaceholder(Q,{strategy:B,width:20});_.placeholder={dataURL:j.dataURL,width:j.width,height:j.height,strategy:B}}}catch(j){console.warn(`[stx-media] Failed to generate placeholder: ${j}`)}return _.sizes=Z.sizes||GG(X),_}catch(X){return console.error(`[stx-media] Responsive generation failed: ${X}`),null}}function GG($){let Z=[...$].sort((J,Q)=>J-Q),Y=[];for(let J=0;J<Z.length-1;J++){let Q=Z[J];Y.push(`(max-width: ${Q}px) ${Q}px`)}return Y.push(`${Z[Z.length-1]}px`),Y.join(", ")}function S9($,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 QG;var y9=y(()=>{I1();QG=[320,480,640,768,1024,1280,1536,1920]});var C9={};o(C9,{setCachedImageResult:()=>W$,processImage:()=>D9,optimizeImage:()=>E9,getCachedImageResult:()=>z$,generateSrcset:()=>S9,generateResponsiveVariants:()=>b9,clearImageCache:()=>M9,applyTransformations:()=>$7,ImageProcessorCache:()=>q$});var P9=y(()=>{k9();y9();t4()});async function KG(){try{return await Promise.resolve().then(() => (P9(),C9))}catch($){if(!v9)console.warn("[stx-media] Image processor not available, some features disabled:",$),v9=!0;return null}}async function U$($,Z={}){let Y=Z,J=$;if(J.process&&!J.skipOptimization){if(Y.tsImagesConfig?.enabled&&!Y.isDev)return UG(J,Y)}if(Y.processedResult?.processed)return X7($,Y.processedResult,Z);if(Y.responsiveVariants)return h9($,Y.responsiveVariants,Z);let{src:Q,alt:X,width:G,height:K,sizes:q,widths:W=c1,dpr:z,formats:U=N5,quality:_=Z7,params:B={},placeholder:j="none",placeholderOptions:H={},lazy:L=!0,priority:F=!1,loading:O=F?"eager":B$,decoding:V=_$,fetchpriority:w,objectFit:A,objectPosition:N,crossorigin:R,referrerpolicy:T}=$,M=$.class,I=$.style,D=$.id,E=$.data||{},{isDev:C=!1,baseUrl:b=""}=Z;if(C&&!Z.optimize)return WG($);let k,P,h=D||`stx-img-${Math.random().toString(36).slice(2,8)}`;if(j!=="none"&&!F)try{k=await L9(Q,{strategy:j,...H}),P=O9(h,k,H)}catch{}let f=z!==void 0&&G!==void 0,m;if(f)m=zG($,h,k,Z);else m=await qG($,h,k,Z);let l;if(F){let O0=U.includes("webp")?"webp":U[0],_0=u4(Q,W,{...B,q:_},O0),$0=typeof q==="object"?p4(q):q||"100vw";l=`<link rel="preload" as="image" imagesrcset="${_0}" imagesizes="${$0}" />`}let Y0=[];if(!x9&&j!=="none")Y0.push(n4),x9=!0;if(P)Y0.push(P);let K0=L?g9(h):void 0;return{html:m,preloadLink:l,css:Y0.length>0?Y0.join(`
855
+ `.trim();i4=new Map});import{createHash as w9}from"crypto";import{readFile as hQ,stat as A9}from"fs/promises";async function E0($){try{let Z=await hQ($);return w9("sha256").update(Z).digest("hex").slice(0,16)}catch{return""}}function V9($){return w9("sha256").update($).digest("hex").slice(0,16)}function J$($,Z){let Y=JSON.stringify(Z,Object.keys(Z).sort());return`${V9($)}-${V9(Y)}`}async function o4($){try{return(await A9($)).mtimeMs}catch{return 0}}async function I0($){try{return await A9($),!0}catch{return!1}}var I1=()=>{};import{mkdir as dQ,readFile as mQ,writeFile as uQ,readdir as nB,rm as pQ,stat as oB}from"fs/promises";import{join as R9,dirname as lQ}from"path";async function cQ($){try{await dQ($,{recursive:!0})}catch{}}function T9($,Z,Y){return R9($,Y,`${Z}.json`)}async function N9($,Z,Y){if((Date.now()-$.createdAt)/86400000>Y)return!1;if(await o4(Z)!==$.srcMtime)return!1;return!0}async function X$($,Z,Y,J=s4){if(!J.enabled)return null;let Q=J$($,Z),X=i1.get(Q);if(X){if(await N9(X,$,J.maxAge))return X.lastAccessedAt=Date.now(),X.data;i1.delete(Q)}let G=T9(J.directory,Q,Y);if(await I0(G))try{let K=await mQ(G,"utf-8"),q=JSON.parse(K);if(await N9(q,$,J.maxAge))return q.lastAccessedAt=Date.now(),i1.set(Q,q),q.data}catch{}return null}async function Q$($,Z,Y,J,Q=s4){if(!Q.enabled)return;let X=J$($,Z),G=await E0($),K=await o4($),q={key:X,src:$,srcHash:G,srcMtime:K,optionsHash:J$("",Z),data:Y,createdAt:Date.now(),lastAccessedAt:Date.now()};i1.set(X,q);let W=T9(Q.directory,X,J);try{await cQ(lQ(W)),await uQ(W,JSON.stringify(q,null,2))}catch(z){console.warn(`[stx-media] Failed to write cache: ${z}`)}}async function G$($,Z=s4){if($==="all")i1.clear();else i1.clear();let Y=$==="all"?["image","video"]:[$];for(let J of Y){let Q=R9(Z.directory,J);try{await pQ(Q,{recursive:!0,force:!0})}catch{}}}var i1,s4;var r4=y(()=>{I1();i1=new Map,s4={enabled:!0,directory:".stx/media-cache",maxAge:30,maxSize:500}});class q${config;constructor($={}){this.config={...iQ,...$}}async get($,Z){return X$($,Z,"image",this.config)}async set($,Z,Y){return Q$($,Z,Y,"image",this.config)}async clear(){return G$("image",this.config)}updateConfig($){this.config={...this.config,...$}}}function a4($){if(!K$)K$=new q$($);else if($)K$.updateConfig($);return K$}async function z$($,Z,Y){let J=Y?{directory:`${Y.outputDir}/../.cache`}:{};return a4(J).get($,Z)}async function W$($,Z,Y,J){let Q=J?{directory:`${J.outputDir}/../.cache`}:{};return a4(Q).set($,Z,Y)}async function M9(){return a4().clear()}var iQ,K$=null;var t4=y(()=>{r4();iQ={enabled:!0,directory:".stx/media-cache",maxAge:30,maxSize:500,cacheVariants:!0,cachePlaceholders:!0}});import{resolve as nQ,basename as oQ,extname as sQ,join as rQ}from"path";import{mkdir as aQ}from"fs/promises";async function e4(){try{return await import("ts-images")}catch{return null}}function I9($){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 tQ($,Z){let Y=Z?I9(Z):I9("web"),J=$.formatQuality||{};return{jpeg:{...Y.jpeg,...J.jpeg},png:{...Y.png,...J.png},webp:{...Y.webp,...J.webp},avif:{...Y.avif,...J.avif}}}async function D9($,Z,Y){let J=await e4();if(!J)return console.warn("[stx-media] ts-images not installed, skipping optimization"),{src:$,processed:!1};let Q=await z$($,Z,Y);if(Q)return Q;try{let X=nQ($);if(!await I0(X))return{src:$,processed:!1,errors:[`Source file not found: ${$}`]};let G=tQ(Y,Z.preset),K=Y.outputDir||"dist/images",q=Y.baseUrl||"/images";await aQ(K,{recursive:!0});let W=await E0(X),z=oQ($,sQ($)),U=Z.outputFormat?[Z.outputFormat]:Y.defaultFormats||["avif","webp","jpeg"],_={src:$,processed:!0,variants:[],hash:W},B=null;if(Z.transformations&&Z.transformations.length>0)B=await $7(X,Z.transformations,J);for(let j of U){let H=G[j]||{},L=`${z}-${W}.${j}`,F=rQ(K,L);try{let O=await J.optimizeImage({input:B||X,output:F,format:j,quality:H.quality,progressive:H.progressive});if(O){if(_.variants.push({path:F,url:`${q}/${L}`,width:O.width||0,height:O.height||0,format:j,size:O.outputSize||0}),!_.originalWidth&&O.width)_.originalWidth=O.width,_.originalHeight=O.height}}catch(O){_.errors=_.errors||[],_.errors.push(`Failed to optimize ${j}: ${O}`)}}if(Z.embedThumbhash||Z.placeholder==="thumbhash")try{let j=await J.generateThumbHash(X);_.placeholder=j.dataUrl}catch(j){_.errors=_.errors||[],_.errors.push(`Failed to generate thumbhash: ${j}`)}if(Z.useDominantColor)try{let j=await J.generatePlaceholder(X,{strategy:"dominant-color"});_.dominantColor=j.dominantColor}catch(j){_.errors=_.errors||[],_.errors.push(`Failed to extract dominant color: ${j}`)}return await W$($,Z,_,Y),_}catch(X){return{src:$,processed:!1,errors:[`Processing failed: ${X}`]}}}async function E9($,Z,Y,J){let Q=await e4();if(!Q)return{success:!1,error:"ts-images not installed"};try{return{success:!0,size:(await Q.optimizeImage({input:$,output:J,format:Z,quality:Y}))?.outputSize}}catch(X){return{success:!1,error:String(X)}}}async function $7($,Z,Y){let J=Y||await e4();if(!J)return console.warn("[stx-media] ts-images not installed, skipping transformations"),null;try{let Q=await J.decode($);for(let X of Z){let G=X.options||{};switch(X.type){case"resize":if(G.width||G.height)Q=await J.resize(Q,{width:G.width,height:G.height,fit:G.fit});break;case"blur":if(G.sigma!==void 0)Q=await J.blur(Q,G.sigma);break;case"sharpen":if(G.amount!==void 0)Q=await J.sharpen(Q,G.amount);break;case"grayscale":Q=await J.grayscale(Q);break;case"rotate":if(G.angle!==void 0)Q=await J.rotate(Q,G.angle);break;case"flip":Q=await J.flip(Q);break;case"flop":Q=await J.flop(Q);break;case"brightness":if(G.value!==void 0)Q=await J.brightness(Q,G.value);break;case"contrast":if(G.value!==void 0)Q=await J.contrast(Q,G.value);break;case"saturation":if(G.value!==void 0)Q=await J.saturation(Q,G.value);break}}return await J.encode(Q,"png")}catch(Q){return console.error(`[stx-media] Transformation failed: ${Q}`),null}}var k9=y(()=>{I1();t4()});import{resolve as eQ,basename as $G,extname as ZG,join as YG}from"path";import{mkdir as JG}from"fs/promises";async function XG(){try{return await import("ts-images")}catch{return null}}async function b9($,Z,Y){let J=await XG();if(!J)return console.warn("[stx-media] ts-images not installed, skipping responsive generation"),null;let Q=eQ($);if(!await I0(Q))return console.warn(`[stx-media] Source file not found: ${$}`),null;try{let X=Z.responsiveWidths||Y.breakpoints||QG,G=Z.formats||Y.defaultFormats||["avif","webp","jpeg"],K=Y.outputDir||"dist/images",q=Y.baseUrl||"/images";await JG(K,{recursive:!0});let W=await E0(Q),z=$G($,ZG($)),U=Y.formatQuality||{jpeg:{quality:82},png:{quality:80},webp:{quality:82},avif:{quality:75}},_={src:$,byFormat:{},srcsets:{}};for(let j of G){_.byFormat[j]=[];let H=[];for(let L of X){let F=`${z}-${L}w-${W}.${j}`,O=YG(K,F),V=`${q}/${F}`;try{let w=U[j]?.quality||80;if(await I0(O)){_.byFormat[j].push({path:O,url:V,width:L,height:0,format:j,size:0}),H.push(`${V} ${L}w`);continue}let A=await J.processImage({input:Q,output:O,format:j,quality:w,resize:{width:L}});if(A)_.byFormat[j].push({path:O,url:V,width:L,height:A.height||Math.round(L*(A.height||1)/(A.width||1)),format:j,size:A.outputSize||0}),H.push(`${V} ${L}w`)}catch(w){console.warn(`[stx-media] Failed to generate ${j} at ${L}w: ${w}`)}}_.srcsets[j]=H.join(", ")}let B=Z.placeholder||Y.placeholderStrategy||"thumbhash";if(B!=="none")try{if(B==="thumbhash"){let j=await J.generateThumbHash(Q);_.placeholder={dataURL:j.dataUrl,width:j.width||32,height:j.height||32,strategy:"thumbhash"}}else{let j=await J.generatePlaceholder(Q,{strategy:B,width:20});_.placeholder={dataURL:j.dataURL,width:j.width,height:j.height,strategy:B}}}catch(j){console.warn(`[stx-media] Failed to generate placeholder: ${j}`)}return _.sizes=Z.sizes||GG(X),_}catch(X){return console.error(`[stx-media] Responsive generation failed: ${X}`),null}}function GG($){let Z=[...$].sort((J,Q)=>J-Q),Y=[];for(let J=0;J<Z.length-1;J++){let Q=Z[J];Y.push(`(max-width: ${Q}px) ${Q}px`)}return Y.push(`${Z[Z.length-1]}px`),Y.join(", ")}function S9($,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 QG;var y9=y(()=>{I1();QG=[320,480,640,768,1024,1280,1536,1920]});var C9={};o(C9,{setCachedImageResult:()=>W$,processImage:()=>D9,optimizeImage:()=>E9,getCachedImageResult:()=>z$,generateSrcset:()=>S9,generateResponsiveVariants:()=>b9,clearImageCache:()=>M9,applyTransformations:()=>$7,ImageProcessorCache:()=>q$});var P9=y(()=>{k9();y9();t4()});async function KG(){try{return await Promise.resolve().then(() => (P9(),C9))}catch($){if(!v9)console.warn("[stx-media] Image processor not available, some features disabled:",$),v9=!0;return null}}async function U$($,Z={}){let Y=Z,J=$;if(J.process&&!J.skipOptimization){if(Y.tsImagesConfig?.enabled&&!Y.isDev)return UG(J,Y)}if(Y.processedResult?.processed)return X7($,Y.processedResult,Z);if(Y.responsiveVariants)return h9($,Y.responsiveVariants,Z);let{src:Q,alt:X,width:G,height:K,sizes:q,widths:W=c1,dpr:z,formats:U=N5,quality:_=Z7,params:B={},placeholder:j="none",placeholderOptions:H={},lazy:L=!0,priority:F=!1,loading:O=F?"eager":B$,decoding:V=_$,fetchpriority:w,objectFit:A,objectPosition:N,crossorigin:R,referrerpolicy:T}=$,M=$.class,I=$.style,D=$.id,E=$.data||{},{isDev:C=!1,baseUrl:b=""}=Z;if(C&&!Z.optimize)return WG($);let k,P,h=D||`stx-img-${Math.random().toString(36).slice(2,8)}`;if(j!=="none"&&!F)try{k=await L9(Q,{strategy:j,...H}),P=O9(h,k,H)}catch{}let f=z!==void 0&&G!==void 0,m;if(f)m=zG($,h,k,Z);else m=await qG($,h,k,Z);let l;if(F){let O0=U.includes("webp")?"webp":U[0],_0=u4(Q,W,{...B,q:_},O0),$0=typeof q==="object"?p4(q):q||"100vw";l=`<link rel="preload" as="image" imagesrcset="${_0}" imagesizes="${$0}" />`}let Y0=[];if(!x9&&j!=="none")Y0.push(n4),x9=!0;if(P)Y0.push(P);let K0=L?g9(h):void 0;return{html:m,preloadLink:l,css:Y0.length>0?Y0.join(`
856
856
  `):void 0,script:K0}}async function qG($,Z,Y,J){let{src:Q,alt:X,width:G,height:K,sizes:q,widths:W=c1,formats:z=N5,quality:U=Z7,params:_={},lazy:B=!0,priority:j=!1,loading:H=j?"eager":B$,decoding:L=_$,fetchpriority:F,objectFit:O,objectPosition:V,crossorigin:w,referrerpolicy:A}=$,N=$.class,R=$.style,T=$.data||{},M=typeof q==="object"?p4(q):q||"100vw",I=[];for(let C of z){let b=u4(Q,W,{..._,q:U},C),k=l4(C);if(B&&!j)I.push(` <source type="${k}" data-srcset="${b}" data-sizes="${M}" />`);else I.push(` <source type="${k}" srcset="${b}" sizes="${M}" />`)}let D=Y7({src:R5(Q,{..._,q:U}),alt:X,width:G,height:K,loading:j?void 0:H,decoding:L,fetchpriority:j?"high":F,objectFit:O,objectPosition:V,crossorigin:w,referrerpolicy:A,className:f9(N,Y),style:J7(R,O,V,Y),lazy:B&&!j,data:T}),E;if(Y){let C=`background-image: url('${Y.dataURL}'); background-size: cover; background-position: center;`;E=`<div id="${Z}" class="stx-img-placeholder" style="${C}">
857
857
  <picture>
858
858
  ${I.join(`
@@ -916,8 +916,8 @@ ${A.join(`
916
916
  `):void 0,script:b}}async function h9($,Z,Y){let J={src:Z.src,processed:!0,variants:[],placeholder:Z.placeholder?.dataURL,originalWidth:Z.placeholder?.width,originalHeight:Z.placeholder?.height};for(let[Q,X]of Object.entries(Z.byFormat))if(X)J.variants.push(...X);return X7($,J,Y)}var v9=!1,Z7=80,_$="async",B$="lazy",x9=!1;var d9=y(()=>{c4();F9()});function _G(){return Y$({name:"img",hasEndTag:!1,description:"Render an optimized responsive image with srcset and lazy loading",transform:async($,Z,Y,J)=>{let{src:Q,alt:X,options:G}=BG($,Z,Y);if(!Q)return console.warn("@img directive: missing src argument"),"<!-- @img: missing src -->";let K={src:Q,alt:X||"",widths:G.widths||c1,formats:G.formats||N5,quality:G.quality,sizes:G.sizes,dpr:G.dpr,params:G.params,placeholder:G.placeholder,placeholderOptions:G.placeholderOptions,lazy:G.lazy!==!1,priority:G.priority||!1,loading:G.loading,decoding:G.decoding,fetchpriority:G.fetchpriority,objectFit:G.objectFit,objectPosition:G.objectPosition,class:G.class,style:G.style,id:G.id,width:G.width,height:G.height},q=Y.__isDev||!1,W=await U$(K,{isDev:q}),z=W.html;if(W.preloadLink)z=W.preloadLink+`
917
917
  `+z;if(W.css)z+=`
918
918
  <style>${W.css}</style>`;if(W.script)z+=`
919
- <script>${W.script}</script>`;return z},defaults:{src:"",alt:"",options:{lazy:!0,placeholder:"none"}}})}function BG($,Z,Y){if(Z.src)return{src:String(Z.src),alt:String(Z.alt||""),options:Z.options||{}};let J=$.trim();if(J.startsWith("@img(")||J.startsWith("("))J=J.replace(/^@img\(/,"").replace(/^\(/,"").replace(/\)$/,"");let Q=jG(J),X=Q7(Q[0],Y)||"",G=Q7(Q[1],Y)||"",K={};if(Q[2]){let q=Q7(Q[2],Y);if(typeof q==="object"&&q!==null)K=q;else if(typeof Q[2]==="string")try{K=JSON.parse(Q[2])}catch{}}return{src:X,alt:G,options:K}}function jG($){let Z=[],Y="",J=!1,Q="",X=0,G=0;for(let K=0;K<$.length;K++){let q=$[K],W=K>0?$[K-1]:"";if((q==='"'||q==="'"||q==="`")&&W!=="\\"){if(!J)J=!0,Q=q;else if(q===Q)J=!1,Q="";else Y+=q;continue}if(!J){if(q==="{")X++;if(q==="}")X--;if(q==="[")G++;if(q==="]")G--;if(q===","&&X===0&&G===0){Z.push(Y.trim()),Y="";continue}}Y+=q}if(Y.trim())Z.push(Y.trim());return Z}function Q7($,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 J=Z[Y];if(J!==void 0)return J}if(Y.startsWith("{")||Y.startsWith("["))try{return JSON.parse(Y)}catch{}return Y}var m9;var u9=y(()=>{m4();d9();c4();m9=_G()});class H${config;constructor($={}){this.config={...HG,...$}}async get($,Z){return X$($,Z,"video",this.config)}async set($,Z,Y){return Q$($,Z,Y,"video",this.config)}async clear(){return G$("video",this.config)}updateConfig($){this.config={...this.config,...$}}}function G7($){if(!j$)j$=new H$($);else if($)j$.updateConfig($);return j$}async function O$($,Z,Y){let J=Y?{directory:`${Y.outputDir}/../.cache`}:{};return G7(J).get($,Z)}async function L$($,Z,Y,J){let Q=J?{directory:`${J.outputDir}/../.cache`}:{};return G7(Q).set($,Z,Y)}async function p9(){return G7().clear()}var HG,j$=null;var K7=y(()=>{r4();HG={enabled:!0,directory:".stx/media-cache",maxAge:30,maxSize:2000,cacheTranscoded:!0,cacheThumbnails:!0,cacheManifests:!0}});import{resolve as q7,basename as z7,extname as W7,join as F$}from"path";import{mkdir as U7}from"fs/promises";async function _7(){try{return await import("ts-videos")}catch{return null}}async function V$($,Z,Y,J){let Q=await _7();if(!Q)return console.warn("[stx-media] ts-videos not installed, cannot generate poster"),null;try{let X=q7($);if(!await I0(X))return null;await U7(Y,{recursive:!0});let G=await D0(X),K=z7($,W7($)),q=Z.format||"webp",W=Z.timestamp||0,z=`${K}-poster-${G}.${q}`,U=F$(Y,z),_=await Q.extractThumbnails(X,{timestamps:[W],width:Z.width||1280,height:Z.height,format:q,quality:Z.quality||85,outputDir:Y,outputPattern:z.replace(`.${q}`,"")});if(_&&_.length>0){let B=_[0];return{path:U,url:`${J}/${z}`,width:B.width||Z.width||1280,height:B.height||720,timestamp:W,size:B.size||0}}return null}catch(X){return console.warn(`[stx-media] Failed to generate poster: ${X}`),null}}async function w$($,Z,Y,J){let Q=await _7();if(!Q)return[];try{let X=q7($);if(!await I0(X))return[];await U7(Y,{recursive:!0});let G=await D0(X),K=z7($,W7($)),q=Z.format||"webp",U=(await new Q.Input(X).getInfo()).duration||60,_=Z.count||10,B=Z.interval||U/_,j=[];for(let L=0;L<_&&L*B<U;L++)j.push(L*B);let H=await Q.extractThumbnails(X,{timestamps:j,width:Z.width||320,format:q,quality:Z.quality||80,outputDir:Y,outputPattern:`${K}-thumb-${G}`});if(H&&H.length>0)return H.map((L,F)=>({path:L.path||F$(Y,`${K}-thumb-${G}-${F}.${q}`),url:`${J}/${K}-thumb-${G}-${F}.${q}`,width:L.width||Z.width||320,height:L.height||180,timestamp:j[F],size:L.size||0}));return[]}catch(X){return console.warn(`[stx-media] Failed to generate thumbnails: ${X}`),[]}}async function l9($,Z,Y,J){let Q=await _7();if(!Q)return console.warn("[stx-media] ts-videos not installed, cannot generate sprite sheet"),null;try{let X=q7($);if(!await I0(X))return null;await U7(Y,{recursive:!0});let G=await D0(X),K=z7($,W7($)),z=(await new Q.Input(X).getInfo()).duration||60,U=Z.columns||10,_=Z.interval||5,B=Z.thumbnailWidth||160,j=Z.thumbnailHeight||90,H=Z.format||"jpeg",L=Math.ceil(z/_),F=Math.ceil(L/U),O=`${K}-sprite-${G}.${H}`,V=F$(Y,O),w=[];for(let N=0;N<L;N++)w.push(N*_);let A=await Q.extractThumbnails(X,{timestamps:w,width:B,height:j,format:H,quality:Z.quality||70,outputDir:F$(Y,".temp")});if(!A||A.length===0)return null;try{let N=await import("ts-images"),R=U*B,T=F*j,M=await N.createSprite({images:A.map((I)=>I.path),columns:U,padding:0,outputPath:V,format:H,quality:Z.quality||70});return{url:`${J}/${O}`,path:V,columns:U,rows:F,thumbnailWidth:B,thumbnailHeight:j,interval:_,totalFrames:L}}catch{return console.warn("[stx-media] ts-images not installed, sprite sheet generation skipped"),null}}catch(X){return console.warn(`[stx-media] Failed to generate sprite sheet: ${X}`),null}}var B7=y(()=>{I1()});import{resolve as i9,basename as n9,extname as o9,join as D1}from"path";import{mkdir as A$,writeFile as s9}from"fs/promises";async function r9(){try{return await import("ts-videos")}catch{return null}}async function N$($,Z,Y,J,Q){let X=await r9();if(!X)return console.warn("[stx-media] ts-videos not installed, cannot generate HLS manifest"),null;try{let G=i9($);if(!await I0(G))return null;let K=await D0(G),q=n9($,o9($)),W=D1(Y,`${q}-${K}-hls`);await A$(W,{recursive:!0});let z=Z.length>0?Z:a9,U=Q?.segmentDuration||6,j=(await new X.Input(G).getInfo()).duration||0,H=[],L=0;for(let V of z){let w=D1(W,V.label);await A$(w,{recursive:!0});let A=`${V.label}.m3u8`,N=D1(w,A);try{let R=await X.generateHLS(G,{outputDir:w,segmentDuration:U,width:V.width,height:V.height,videoBitrate:V.bitrate,audioBitrate:V.audioBitrate,playlistName:V.label});if(R)H.push({quality:V,url:`${J}/${q}-${K}-hls/${V.label}/${A}`,path:N}),L+=R.segmentCount||Math.ceil(j/U)}catch(R){console.warn(`[stx-media] Failed to generate HLS for ${V.label}: ${R}`)}}if(H.length===0)return null;let F=D1(W,"master.m3u8"),O=OG(H,J,q,K);return await s9(F,O),{manifestUrl:`${J}/${q}-${K}-hls/master.m3u8`,manifestPath:F,playlists:H,segmentCount:L,duration:j}}catch(G){return console.warn(`[stx-media] Failed to generate HLS manifest: ${G}`),null}}function OG($,Z,Y,J){let Q=["#EXTM3U","#EXT-X-VERSION:3"];for(let X of $){let{quality:G}=X,K=G.bitrate+(G.audioBitrate||128000),q=`${G.width}x${G.height||Math.round(G.width*9/16)}`;Q.push(`#EXT-X-STREAM-INF:BANDWIDTH=${K},RESOLUTION=${q},NAME="${G.label}"`,`${G.label}/${G.label}.m3u8`)}return Q.join(`
920
- `)}async function R$($,Z,Y,J,Q){let X=await r9();if(!X)return console.warn("[stx-media] ts-videos not installed, cannot generate DASH manifest"),null;try{let G=i9($);if(!await I0(G))return null;let K=await D0(G),q=n9($,o9($)),W=D1(Y,`${q}-${K}-dash`);await A$(W,{recursive:!0});let z=Z.length>0?Z:a9,U=Q?.segmentDuration||4,_=Q?.minBufferTime||2,H=(await new X.Input(G).getInfo()).duration||0,L=[],F=[];for(let A of z){let N=D1(W,A.label);await A$(N,{recursive:!0});try{if(await X.generateDASH(G,{outputDir:N,segmentDuration:U,width:A.width,height:A.height,videoBitrate:A.bitrate,audioBitrate:A.audioBitrate})){if(L.push({bandwidth:A.bitrate,width:A.width,height:A.height||Math.round(A.width*9/16),url:`${J}/${q}-${K}-dash/${A.label}/video`}),A.audioBitrate)F.push({bandwidth:A.audioBitrate,url:`${J}/${q}-${K}-dash/${A.label}/audio`})}}catch(R){console.warn(`[stx-media] Failed to generate DASH for ${A.label}: ${R}`)}}if(L.length===0)return null;let O=D1(W,"manifest.mpd"),V=LG(L,F,H,U,_);await s9(O,V);let w=[{type:"video",representations:L}];if(F.length>0)w.push({type:"audio",representations:F});return{manifestUrl:`${J}/${q}-${K}-dash/manifest.mpd`,manifestPath:O,adaptationSets:w,duration:H}}catch(G){return console.warn(`[stx-media] Failed to generate DASH manifest: ${G}`),null}}function LG($,Z,Y,J,Q){let X=c9(Y),G=c9(Q),K=`<?xml version="1.0" encoding="UTF-8"?>
919
+ <script>${W.script}</script>`;return z},defaults:{src:"",alt:"",options:{lazy:!0,placeholder:"none"}}})}function BG($,Z,Y){if(Z.src)return{src:String(Z.src),alt:String(Z.alt||""),options:Z.options||{}};let J=$.trim();if(J.startsWith("@img(")||J.startsWith("("))J=J.replace(/^@img\(/,"").replace(/^\(/,"").replace(/\)$/,"");let Q=jG(J),X=Q7(Q[0],Y)||"",G=Q7(Q[1],Y)||"",K={};if(Q[2]){let q=Q7(Q[2],Y);if(typeof q==="object"&&q!==null)K=q;else if(typeof Q[2]==="string")try{K=JSON.parse(Q[2])}catch{}}return{src:X,alt:G,options:K}}function jG($){let Z=[],Y="",J=!1,Q="",X=0,G=0;for(let K=0;K<$.length;K++){let q=$[K],W=K>0?$[K-1]:"";if((q==='"'||q==="'"||q==="`")&&W!=="\\"){if(!J)J=!0,Q=q;else if(q===Q)J=!1,Q="";else Y+=q;continue}if(!J){if(q==="{")X++;if(q==="}")X--;if(q==="[")G++;if(q==="]")G--;if(q===","&&X===0&&G===0){Z.push(Y.trim()),Y="";continue}}Y+=q}if(Y.trim())Z.push(Y.trim());return Z}function Q7($,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 J=Z[Y];if(J!==void 0)return J}if(Y.startsWith("{")||Y.startsWith("["))try{return JSON.parse(Y)}catch{}return Y}var m9;var u9=y(()=>{m4();d9();c4();m9=_G()});class H${config;constructor($={}){this.config={...HG,...$}}async get($,Z){return X$($,Z,"video",this.config)}async set($,Z,Y){return Q$($,Z,Y,"video",this.config)}async clear(){return G$("video",this.config)}updateConfig($){this.config={...this.config,...$}}}function G7($){if(!j$)j$=new H$($);else if($)j$.updateConfig($);return j$}async function O$($,Z,Y){let J=Y?{directory:`${Y.outputDir}/../.cache`}:{};return G7(J).get($,Z)}async function L$($,Z,Y,J){let Q=J?{directory:`${J.outputDir}/../.cache`}:{};return G7(Q).set($,Z,Y)}async function p9(){return G7().clear()}var HG,j$=null;var K7=y(()=>{r4();HG={enabled:!0,directory:".stx/media-cache",maxAge:30,maxSize:2000,cacheTranscoded:!0,cacheThumbnails:!0,cacheManifests:!0}});import{resolve as q7,basename as z7,extname as W7,join as F$}from"path";import{mkdir as U7}from"fs/promises";async function _7(){try{return await import("ts-videos")}catch{return null}}async function V$($,Z,Y,J){let Q=await _7();if(!Q)return console.warn("[stx-media] ts-videos not installed, cannot generate poster"),null;try{let X=q7($);if(!await I0(X))return null;await U7(Y,{recursive:!0});let G=await E0(X),K=z7($,W7($)),q=Z.format||"webp",W=Z.timestamp||0,z=`${K}-poster-${G}.${q}`,U=F$(Y,z),_=await Q.extractThumbnails(X,{timestamps:[W],width:Z.width||1280,height:Z.height,format:q,quality:Z.quality||85,outputDir:Y,outputPattern:z.replace(`.${q}`,"")});if(_&&_.length>0){let B=_[0];return{path:U,url:`${J}/${z}`,width:B.width||Z.width||1280,height:B.height||720,timestamp:W,size:B.size||0}}return null}catch(X){return console.warn(`[stx-media] Failed to generate poster: ${X}`),null}}async function w$($,Z,Y,J){let Q=await _7();if(!Q)return[];try{let X=q7($);if(!await I0(X))return[];await U7(Y,{recursive:!0});let G=await E0(X),K=z7($,W7($)),q=Z.format||"webp",U=(await new Q.Input(X).getInfo()).duration||60,_=Z.count||10,B=Z.interval||U/_,j=[];for(let L=0;L<_&&L*B<U;L++)j.push(L*B);let H=await Q.extractThumbnails(X,{timestamps:j,width:Z.width||320,format:q,quality:Z.quality||80,outputDir:Y,outputPattern:`${K}-thumb-${G}`});if(H&&H.length>0)return H.map((L,F)=>({path:L.path||F$(Y,`${K}-thumb-${G}-${F}.${q}`),url:`${J}/${K}-thumb-${G}-${F}.${q}`,width:L.width||Z.width||320,height:L.height||180,timestamp:j[F],size:L.size||0}));return[]}catch(X){return console.warn(`[stx-media] Failed to generate thumbnails: ${X}`),[]}}async function l9($,Z,Y,J){let Q=await _7();if(!Q)return console.warn("[stx-media] ts-videos not installed, cannot generate sprite sheet"),null;try{let X=q7($);if(!await I0(X))return null;await U7(Y,{recursive:!0});let G=await E0(X),K=z7($,W7($)),z=(await new Q.Input(X).getInfo()).duration||60,U=Z.columns||10,_=Z.interval||5,B=Z.thumbnailWidth||160,j=Z.thumbnailHeight||90,H=Z.format||"jpeg",L=Math.ceil(z/_),F=Math.ceil(L/U),O=`${K}-sprite-${G}.${H}`,V=F$(Y,O),w=[];for(let N=0;N<L;N++)w.push(N*_);let A=await Q.extractThumbnails(X,{timestamps:w,width:B,height:j,format:H,quality:Z.quality||70,outputDir:F$(Y,".temp")});if(!A||A.length===0)return null;try{let N=await import("ts-images"),R=U*B,T=F*j,M=await N.createSprite({images:A.map((I)=>I.path),columns:U,padding:0,outputPath:V,format:H,quality:Z.quality||70});return{url:`${J}/${O}`,path:V,columns:U,rows:F,thumbnailWidth:B,thumbnailHeight:j,interval:_,totalFrames:L}}catch{return console.warn("[stx-media] ts-images not installed, sprite sheet generation skipped"),null}}catch(X){return console.warn(`[stx-media] Failed to generate sprite sheet: ${X}`),null}}var B7=y(()=>{I1()});import{resolve as i9,basename as n9,extname as o9,join as D1}from"path";import{mkdir as A$,writeFile as s9}from"fs/promises";async function r9(){try{return await import("ts-videos")}catch{return null}}async function N$($,Z,Y,J,Q){let X=await r9();if(!X)return console.warn("[stx-media] ts-videos not installed, cannot generate HLS manifest"),null;try{let G=i9($);if(!await I0(G))return null;let K=await E0(G),q=n9($,o9($)),W=D1(Y,`${q}-${K}-hls`);await A$(W,{recursive:!0});let z=Z.length>0?Z:a9,U=Q?.segmentDuration||6,j=(await new X.Input(G).getInfo()).duration||0,H=[],L=0;for(let V of z){let w=D1(W,V.label);await A$(w,{recursive:!0});let A=`${V.label}.m3u8`,N=D1(w,A);try{let R=await X.generateHLS(G,{outputDir:w,segmentDuration:U,width:V.width,height:V.height,videoBitrate:V.bitrate,audioBitrate:V.audioBitrate,playlistName:V.label});if(R)H.push({quality:V,url:`${J}/${q}-${K}-hls/${V.label}/${A}`,path:N}),L+=R.segmentCount||Math.ceil(j/U)}catch(R){console.warn(`[stx-media] Failed to generate HLS for ${V.label}: ${R}`)}}if(H.length===0)return null;let F=D1(W,"master.m3u8"),O=OG(H,J,q,K);return await s9(F,O),{manifestUrl:`${J}/${q}-${K}-hls/master.m3u8`,manifestPath:F,playlists:H,segmentCount:L,duration:j}}catch(G){return console.warn(`[stx-media] Failed to generate HLS manifest: ${G}`),null}}function OG($,Z,Y,J){let Q=["#EXTM3U","#EXT-X-VERSION:3"];for(let X of $){let{quality:G}=X,K=G.bitrate+(G.audioBitrate||128000),q=`${G.width}x${G.height||Math.round(G.width*9/16)}`;Q.push(`#EXT-X-STREAM-INF:BANDWIDTH=${K},RESOLUTION=${q},NAME="${G.label}"`,`${G.label}/${G.label}.m3u8`)}return Q.join(`
920
+ `)}async function R$($,Z,Y,J,Q){let X=await r9();if(!X)return console.warn("[stx-media] ts-videos not installed, cannot generate DASH manifest"),null;try{let G=i9($);if(!await I0(G))return null;let K=await E0(G),q=n9($,o9($)),W=D1(Y,`${q}-${K}-dash`);await A$(W,{recursive:!0});let z=Z.length>0?Z:a9,U=Q?.segmentDuration||4,_=Q?.minBufferTime||2,H=(await new X.Input(G).getInfo()).duration||0,L=[],F=[];for(let A of z){let N=D1(W,A.label);await A$(N,{recursive:!0});try{if(await X.generateDASH(G,{outputDir:N,segmentDuration:U,width:A.width,height:A.height,videoBitrate:A.bitrate,audioBitrate:A.audioBitrate})){if(L.push({bandwidth:A.bitrate,width:A.width,height:A.height||Math.round(A.width*9/16),url:`${J}/${q}-${K}-dash/${A.label}/video`}),A.audioBitrate)F.push({bandwidth:A.audioBitrate,url:`${J}/${q}-${K}-dash/${A.label}/audio`})}}catch(R){console.warn(`[stx-media] Failed to generate DASH for ${A.label}: ${R}`)}}if(L.length===0)return null;let O=D1(W,"manifest.mpd"),V=LG(L,F,H,U,_);await s9(O,V);let w=[{type:"video",representations:L}];if(F.length>0)w.push({type:"audio",representations:F});return{manifestUrl:`${J}/${q}-${K}-dash/manifest.mpd`,manifestPath:O,adaptationSets:w,duration:H}}catch(G){return console.warn(`[stx-media] Failed to generate DASH manifest: ${G}`),null}}function LG($,Z,Y,J,Q){let X=c9(Y),G=c9(Q),K=`<?xml version="1.0" encoding="UTF-8"?>
921
921
  <MPD xmlns="urn:mpeg:dash:schema:mpd:2011"
922
922
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
923
923
  xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd"
@@ -943,7 +943,7 @@ ${A.join(`
943
943
  </Representation>
944
944
  `}K+=` </AdaptationSet>
945
945
  `}return K+=` </Period>
946
- </MPD>`,K}function c9($){let Z=Math.floor($/3600),Y=Math.floor($%3600/60),J=Math.floor($%60),Q="PT";if(Z>0)Q+=`${Z}H`;if(Y>0)Q+=`${Y}M`;return Q+=`${J}S`,Q}var a9;var j7=y(()=>{I1();a9=[{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 t9,basename as FG,extname as VG,join as wG}from"path";import{mkdir as AG}from"fs/promises";async function e9(){try{return await import("ts-videos")}catch{return null}}function NG($){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 RG($){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 H7($){let Z=await e9();if(!Z)return null;try{let Y=t9($),Q=await new Z.Input(Y).getInfo();return{duration:Q.duration||0,width:Q.width||0,height:Q.height||0,frameRate:Q.frameRate||0,bitrate:Q.bitrate||0,codec:Q.videoCodec||"",audioCodec:Q.audioCodec}}catch(Y){return console.warn(`[stx-media] Failed to analyze video: ${Y}`),null}}async function $8($,Z,Y,J){let Q=await e9();if(!Q)return console.warn("[stx-media] ts-videos not installed, skipping processing"),{src:$,processed:!1};let X=await O$($,Z,Y);if(X)return X;try{let G=t9($);if(!await I0(G))return{src:$,processed:!1,errors:[`Source file not found: ${$}`]};let K=Y.outputDir||"dist/videos",q=Y.baseUrl||"/videos";await AG(K,{recursive:!0});let W=await D0(G),z=FG($,VG($)),U={src:$,processed:!0,hash:W};J?.({percentage:5,stage:"analyzing"}),U.metadata=await H7(G)||void 0;let _={};if(Z.quality)_.bitrate=NG(Z.quality);if(Z.platform)Object.assign(_,RG(Z.platform));if(Z.transcode)Object.assign(_,Z.transcode);if(Object.keys(_).length>0||Z.process){J?.({percentage:10,stage:"transcoding"});let B=`${z}-${W}.mp4`,j=wG(K,B);try{let H=await TG(G,j,_,Q,(L)=>J?.({percentage:10+L*0.5,stage:"transcoding"}));if(H)U.transcoded={path:j,url:`${q}/${B}`,duration:H.duration,size:H.size,video:{codec:_.codec||"h264",width:H.width,height:H.height,bitrate:H.bitrate,frameRate:H.frameRate},audio:H.audioCodec?{codec:_.audioCodec||"aac",bitrate:_.audioBitrate||128000,sampleRate:_.sampleRate||48000,channels:_.channels||2}:void 0}}catch(H){U.errors=U.errors||[],U.errors.push(`Transcoding failed: ${H}`)}}if(Z.generatePoster){J?.({percentage:65,stage:"generating-poster"});let B=typeof Z.generatePoster==="object"?Z.generatePoster:{timestamp:0},j=await V$(G,B,K,q);if(j)U.poster=j}if(Y.thumbnails?.enabled){J?.({percentage:70,stage:"generating-thumbnails"});let B=await w$(G,Y.thumbnails,K,q);if(B.length>0)U.thumbnails=B}if(Z.streaming){J?.({percentage:80,stage:"generating-manifests"});let B=typeof Z.streaming==="object"?Z.streaming:Y.streaming||{format:"hls"};if(B.format==="hls"||B.format===void 0){let j=await N$(G,B.qualities||Y.streaming?.defaultQualities||[],K,q);if(j)U.streaming={...U.streaming,hls:j}}if(B.format==="dash"){let j=await R$(G,B.qualities||Y.streaming?.defaultQualities||[],K,q);if(j)U.streaming={...U.streaming,dash:j}}}if(Z.spriteSheet)J?.({percentage:90,stage:"generating-sprite-sheet"});return J?.({percentage:100,stage:"complete"}),await L$($,Z,U,Y),U}catch(G){return{src:$,processed:!1,errors:[`Processing failed: ${G}`]}}}async function TG($,Z,Y,J,Q){try{let G=await new J.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)=>{Q?.(K.percentage/100)});return{duration:G.duration||0,size:G.size||0,width:G.width||Y.maxWidth||0,height:G.height||Y.maxHeight||0,bitrate:G.bitrate||Y.bitrate||0,frameRate:G.frameRate||Y.frameRate||30,audioCodec:G.audioCodec}}catch(X){return console.error(`[stx-media] Transcoding failed: ${X}`),null}}var Z8=y(()=>{I1();K7();B7();j7()});var Y8={};o(Y8,{setCachedVideoResult:()=>L$,processVideo:()=>$8,getCachedVideoResult:()=>O$,generateThumbnails:()=>w$,generateSpriteSheet:()=>l9,generatePoster:()=>V$,generateHLSManifest:()=>N$,generateDASHManifest:()=>R$,clearVideoCache:()=>p9,analyzeVideo:()=>H7,VideoProcessorCache:()=>H$});var J8=y(()=>{Z8();B7();j7();K7()});async function Q8(){try{return await Promise.resolve().then(() => (J8(),Y8))}catch($){if(!X8)console.warn("[stx-media] Video processor not available, some features disabled:",$),X8=!0;return null}}async function T$($,Z={}){let Y=Z,J=$;if(J.process&&!J.skipProcessing){if(Y.tsVideosConfig?.enabled&&!Y.isDev)return bG(J,Y)}if(Y.processedResult?.processed)return z8($,Y.processedResult,Z);let Q;if(J.generatePoster&&J.src&&!$.poster)Q=await SG(J,Y);let{src:X,sources:G=[],poster:K,posterPlaceholder:q,controls:W=G8,autoplay:z=!1,muted:U=!1,loop:_=!1,preload:B=K8,playsinline:j=!0,lazy:H=!0,player:L="native",type:F,width:O,height:V,crossorigin:w,disablePictureInPicture:A=!1,disableRemotePlayback:N=!1}=$,R=Q||K,T=$.class,M=$.style,I=$.id||`stx-video-${Math.random().toString(36).slice(2,8)}`;if(L==="ts-video")return DG($,Z);if(F&&F!=="video")return IG(X||"",F,$);let D=G.length>0?G:X?[{src:X,type:q8(X)}]:[],E=[`id="${I}"`];if(W)E.push("controls");if(z)E.push("autoplay");if(U)E.push("muted");if(_)E.push("loop");if(j)E.push("playsinline");if(A)E.push("disablepictureinpicture");if(N)E.push("disableremoteplayback");if(w)E.push(`crossorigin="${w}"`);if(H){if(E.push(`data-preload="${B}"`),E.push('preload="none"'),R)E.push(`data-poster="${w0(R)}"`);E.push("data-stx-lazy")}else if(E.push(`preload="${B}"`),R)E.push(`poster="${w0(R)}"`);if(O)E.push(`width="${O}"`);if(V)E.push(`height="${V}"`);if(T)E.push(`class="${w0(T)}"`);if(M)E.push(`style="${w0(M)}"`);let C=D.map((P)=>{return` <source ${H?`data-src="${w0(P.src)}"`:`src="${w0(P.src)}"`} type="${P.type}"${P.media?` media="${P.media}"`:""} />`}).join(`
946
+ </MPD>`,K}function c9($){let Z=Math.floor($/3600),Y=Math.floor($%3600/60),J=Math.floor($%60),Q="PT";if(Z>0)Q+=`${Z}H`;if(Y>0)Q+=`${Y}M`;return Q+=`${J}S`,Q}var a9;var j7=y(()=>{I1();a9=[{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 t9,basename as FG,extname as VG,join as wG}from"path";import{mkdir as AG}from"fs/promises";async function e9(){try{return await import("ts-videos")}catch{return null}}function NG($){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 RG($){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 H7($){let Z=await e9();if(!Z)return null;try{let Y=t9($),Q=await new Z.Input(Y).getInfo();return{duration:Q.duration||0,width:Q.width||0,height:Q.height||0,frameRate:Q.frameRate||0,bitrate:Q.bitrate||0,codec:Q.videoCodec||"",audioCodec:Q.audioCodec}}catch(Y){return console.warn(`[stx-media] Failed to analyze video: ${Y}`),null}}async function $8($,Z,Y,J){let Q=await e9();if(!Q)return console.warn("[stx-media] ts-videos not installed, skipping processing"),{src:$,processed:!1};let X=await O$($,Z,Y);if(X)return X;try{let G=t9($);if(!await I0(G))return{src:$,processed:!1,errors:[`Source file not found: ${$}`]};let K=Y.outputDir||"dist/videos",q=Y.baseUrl||"/videos";await AG(K,{recursive:!0});let W=await E0(G),z=FG($,VG($)),U={src:$,processed:!0,hash:W};J?.({percentage:5,stage:"analyzing"}),U.metadata=await H7(G)||void 0;let _={};if(Z.quality)_.bitrate=NG(Z.quality);if(Z.platform)Object.assign(_,RG(Z.platform));if(Z.transcode)Object.assign(_,Z.transcode);if(Object.keys(_).length>0||Z.process){J?.({percentage:10,stage:"transcoding"});let B=`${z}-${W}.mp4`,j=wG(K,B);try{let H=await TG(G,j,_,Q,(L)=>J?.({percentage:10+L*0.5,stage:"transcoding"}));if(H)U.transcoded={path:j,url:`${q}/${B}`,duration:H.duration,size:H.size,video:{codec:_.codec||"h264",width:H.width,height:H.height,bitrate:H.bitrate,frameRate:H.frameRate},audio:H.audioCodec?{codec:_.audioCodec||"aac",bitrate:_.audioBitrate||128000,sampleRate:_.sampleRate||48000,channels:_.channels||2}:void 0}}catch(H){U.errors=U.errors||[],U.errors.push(`Transcoding failed: ${H}`)}}if(Z.generatePoster){J?.({percentage:65,stage:"generating-poster"});let B=typeof Z.generatePoster==="object"?Z.generatePoster:{timestamp:0},j=await V$(G,B,K,q);if(j)U.poster=j}if(Y.thumbnails?.enabled){J?.({percentage:70,stage:"generating-thumbnails"});let B=await w$(G,Y.thumbnails,K,q);if(B.length>0)U.thumbnails=B}if(Z.streaming){J?.({percentage:80,stage:"generating-manifests"});let B=typeof Z.streaming==="object"?Z.streaming:Y.streaming||{format:"hls"};if(B.format==="hls"||B.format===void 0){let j=await N$(G,B.qualities||Y.streaming?.defaultQualities||[],K,q);if(j)U.streaming={...U.streaming,hls:j}}if(B.format==="dash"){let j=await R$(G,B.qualities||Y.streaming?.defaultQualities||[],K,q);if(j)U.streaming={...U.streaming,dash:j}}}if(Z.spriteSheet)J?.({percentage:90,stage:"generating-sprite-sheet"});return J?.({percentage:100,stage:"complete"}),await L$($,Z,U,Y),U}catch(G){return{src:$,processed:!1,errors:[`Processing failed: ${G}`]}}}async function TG($,Z,Y,J,Q){try{let G=await new J.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)=>{Q?.(K.percentage/100)});return{duration:G.duration||0,size:G.size||0,width:G.width||Y.maxWidth||0,height:G.height||Y.maxHeight||0,bitrate:G.bitrate||Y.bitrate||0,frameRate:G.frameRate||Y.frameRate||30,audioCodec:G.audioCodec}}catch(X){return console.error(`[stx-media] Transcoding failed: ${X}`),null}}var Z8=y(()=>{I1();K7();B7();j7()});var Y8={};o(Y8,{setCachedVideoResult:()=>L$,processVideo:()=>$8,getCachedVideoResult:()=>O$,generateThumbnails:()=>w$,generateSpriteSheet:()=>l9,generatePoster:()=>V$,generateHLSManifest:()=>N$,generateDASHManifest:()=>R$,clearVideoCache:()=>p9,analyzeVideo:()=>H7,VideoProcessorCache:()=>H$});var J8=y(()=>{Z8();B7();j7();K7()});async function Q8(){try{return await Promise.resolve().then(() => (J8(),Y8))}catch($){if(!X8)console.warn("[stx-media] Video processor not available, some features disabled:",$),X8=!0;return null}}async function T$($,Z={}){let Y=Z,J=$;if(J.process&&!J.skipProcessing){if(Y.tsVideosConfig?.enabled&&!Y.isDev)return bG(J,Y)}if(Y.processedResult?.processed)return z8($,Y.processedResult,Z);let Q;if(J.generatePoster&&J.src&&!$.poster)Q=await SG(J,Y);let{src:X,sources:G=[],poster:K,posterPlaceholder:q,controls:W=G8,autoplay:z=!1,muted:U=!1,loop:_=!1,preload:B=K8,playsinline:j=!0,lazy:H=!0,player:L="native",type:F,width:O,height:V,crossorigin:w,disablePictureInPicture:A=!1,disableRemotePlayback:N=!1}=$,R=Q||K,T=$.class,M=$.style,I=$.id||`stx-video-${Math.random().toString(36).slice(2,8)}`;if(L==="ts-video")return DG($,Z);if(F&&F!=="video")return IG(X||"",F,$);let D=G.length>0?G:X?[{src:X,type:q8(X)}]:[],E=[`id="${I}"`];if(W)E.push("controls");if(z)E.push("autoplay");if(U)E.push("muted");if(_)E.push("loop");if(j)E.push("playsinline");if(A)E.push("disablepictureinpicture");if(N)E.push("disableremoteplayback");if(w)E.push(`crossorigin="${w}"`);if(H){if(E.push(`data-preload="${B}"`),E.push('preload="none"'),R)E.push(`data-poster="${w0(R)}"`);E.push("data-stx-lazy")}else if(E.push(`preload="${B}"`),R)E.push(`poster="${w0(R)}"`);if(O)E.push(`width="${O}"`);if(V)E.push(`height="${V}"`);if(T)E.push(`class="${w0(T)}"`);if(M)E.push(`style="${w0(M)}"`);let C=D.map((P)=>{return` <source ${H?`data-src="${w0(P.src)}"`:`src="${w0(P.src)}"`} type="${P.type}"${P.media?` media="${P.media}"`:""} />`}).join(`
947
947
  `),b=`<video ${E.join(" ")}>
948
948
  ${C}
949
949
  Your browser does not support the video tag.
@@ -1618,7 +1618,7 @@ ${z}
1618
1618
  customElements.define('${Z}', ${G});
1619
1619
  `}async function D8($,Z,Y,J){if(Z.length<1)return a("WebComponent","@webcomponent directive requires at least the tag name parameter",n.INVALID_DIRECTIVE_SYNTAX);let Q=Z[0].replace(/['"]/g,""),G=(Y.__stx_options||{}).componentsDir||"components",K=[I5.join(I5.dirname(J),G,`${Q}.stx`),I5.join(process.cwd(),G,`${Q}.stx`),I5.join(I5.dirname(J),`${Q}.stx`)],q=null;for(let U of K)if(await c(U)){q=await Bun.file(U).text();break}if(!q)return a("WebComponent",`Component file not found: ${Q}.stx`,n.FILE_NOT_FOUND);let W=rG(q,Q);return`<script type="module">
1620
1620
  ${aG(W)}
1621
- </script>`}var E8=y(()=>{Z1();N0()});var k8={};o(k8,{timingPlugin:()=>YK,pluginManager:()=>tG,definePlugin:()=>y$,debugPlugin:()=>ZK,createVariablesPlugin:()=>JK,createFilterPlugin:()=>$K,createDirectivePlugin:()=>eG,PluginManager:()=>T7});function y$($){return $}class T7{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,J]of this.plugins)if(J.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 J of this.sortedPlugins){let Q=J[$];if(Q)try{let X=await Q(Y);if(X){if(X.template!==void 0)Y.template=X.template;if(X.context)Y.context={...Y.context,...X.context};if(X.metadata)Y.metadata={...Y.metadata,...X.metadata};if(X.skip)break}}catch(X){console.error(`Error in plugin "${J.name}" ${$} hook:`,X)}}return Y}async runDirectiveHooks($,Z,Y){let J={...Y};for(let Q of this.sortedPlugins){let X=Q[$];if(X)try{let G=await X(Z,J);if(G){if(G.template!==void 0)J.template=G.template;if(G.context)J.context={...J.context,...G.context};if(G.metadata)J.metadata={...J.metadata,...G.metadata};if(G.skip)break}}catch(G){console.error(`Error in plugin "${Q.name}" ${$} hook:`,G)}}return J}}function eG($,Z,Y={}){return{name:$,...Y,registerDirectives:()=>Z}}function $K($,Z,Y={}){return{name:$,...Y,registerFilters:()=>Z}}function JK($){return y$({name:"stx-variables",version:"1.0.0",description:"Adds predefined variables to template context",beforeProcess(Z){return{context:{...Z.context,...$}}}})}var tG,ZK,YK;var b8=y(()=>{tG=new T7;ZK=y$({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)}}),YK=y$({name:"stx-timing",version:"1.0.0",description:"Measures template processing time",priority:1,beforeProcess($){$.metadata.startTime=performance.now()},afterRender($){let Z=$.metadata.startTime;if(Z){let Y=performance.now()-Z;console.log(`[stx-timing] Processing took ${Y.toFixed(2)}ms`)}}})});var y8={};o(y8,{validateConfig:()=>KK,loadStxConfig:()=>b1,defineStxConfig:()=>GK,defaultConfig:()=>k1,config:()=>I7});import M7 from"fs";import E0 from"path";import{loadConfigWithResult as XK}from"bunfig";function QK($,Z){let Y=Z||"pages";if($)return{root:$,pagesDir:Y};let J=E0.join(process.cwd(),"resources","views"),Q=E0.join(process.cwd(),"resources","layouts");if(M7.existsSync(J)&&M7.existsSync(Q))return{root:"resources",pagesDir:"views"};let X=E0.join(process.cwd(),"resources","views","pages");if(M7.existsSync(X))return{root:"resources/views",pagesDir:Y};return{root:".",pagesDir:Y}}async function b1($){if(!$){if(o1)return o1;if(C$)return C$}let Z=$?E0.resolve($):process.cwd(),Y=S8.get(Z);if(Y)return Y;let J=(async()=>{let X=(await XK({name:"stx",alias:"ui",cwd:Z,defaultConfig:k1,verbose:!1})).config,G=QK(X.root,X.pagesDir);if(X.root=G.root,X.pagesDir=G.pagesDir,X.root&&X.root!=="."){let K=X.root;if(X.partialsDir&&!E0.isAbsolute(X.partialsDir))X.partialsDir=E0.join(K,X.partialsDir);if(X.componentsDir&&!E0.isAbsolute(X.componentsDir))X.componentsDir=E0.join(K,X.componentsDir);if(X.layoutsDir&&!E0.isAbsolute(X.layoutsDir))X.layoutsDir=E0.join(K,X.layoutsDir)}if(X.plugins&&X.plugins.length>0){let{pluginManager:K}=await Promise.resolve().then(() => (b8(),k8)),q=[],W=[];for(let z of X.plugins){let U=typeof z==="string"?z:z[0],_=typeof z==="string"?{}:z[1]||{};try{let B,j;try{B=await import(U),j=E0.dirname(z0.resolve(U))}catch{let L=E0.resolve(process.cwd(),U);B=await import(L),j=E0.dirname(L)}let H=B.default||B;if(K.register(H,X),H.components){let L=E0.resolve(j,H.components);q.push(L)}if(H.pages){let L=E0.resolve(j,H.pages),F=_.path||"/";W.push({dir:L,prefix:F})}if(H.setup){let L={addDirective:(F)=>{X.customDirectives=X.customDirectives||[],X.customDirectives.push(F)},addRoute:(F,O)=>{X.apiRoutes=X.apiRoutes||{},X.apiRoutes[F]=O},addMiddleware:(F)=>{X.middleware=X.middleware||[],X.middleware.push(F)},pluginDir:j,config:X};await H.setup(_,L)}console.log(`[stx] Plugin loaded: ${H.name||U}`)}catch(B){console.warn(`[stx] Failed to load plugin ${U}:`,B.message)}}X._pluginComponentDirs=q,X._pluginPageDirs=W}return X})();if(S8.set(Z,J),!$)C$=J,J.then((Q)=>{o1=Q}).catch(()=>{});return J}function GK($){return $}function KK($){let Z=[],Y=[];if($.partialsDir!==void 0&&typeof $.partialsDir!=="string")Z.push({path:"partialsDir",message:"partialsDir must be a string",severity:"error"});if($.componentsDir!==void 0&&typeof $.componentsDir!=="string")Z.push({path:"componentsDir",message:"componentsDir must be a string",severity:"error"});if($.cache!==void 0&&typeof $.cache!=="boolean")Z.push({path:"cache",message:"cache must be a boolean",severity:"error"});if($.debug!==void 0&&typeof $.debug!=="boolean")Z.push({path:"debug",message:"debug must be a boolean",severity:"error"});if($.streaming){if($.streaming.bufferSize!==void 0){if(typeof $.streaming.bufferSize!=="number"||$.streaming.bufferSize<=0)Z.push({path:"streaming.bufferSize",message:"streaming.bufferSize must be a positive number",severity:"error"})}if($.streaming.timeout!==void 0){if(typeof $.streaming.timeout!=="number"||$.streaming.timeout<=0)Z.push({path:"streaming.timeout",message:"streaming.timeout must be a positive number",severity:"error"})}if($.streaming.strategy!==void 0){let J=["auto","manual","sections"];if(!J.includes($.streaming.strategy))Z.push({path:"streaming.strategy",message:`streaming.strategy must be one of: ${J.join(", ")}`,severity:"error"})}}if($.i18n){if($.i18n.format!==void 0){let J=["json","yaml","yml","js"];if(!J.includes($.i18n.format))Z.push({path:"i18n.format",message:`i18n.format must be one of: ${J.join(", ")}`,severity:"error"})}}if($.animation){if($.animation.defaultDuration!==void 0){if(typeof $.animation.defaultDuration!=="number"||$.animation.defaultDuration<0)Z.push({path:"animation.defaultDuration",message:"animation.defaultDuration must be a non-negative number",severity:"error"})}if($.animation.staggerDelay!==void 0){if(typeof $.animation.staggerDelay!=="number"||$.animation.staggerDelay<0)Z.push({path:"animation.staggerDelay",message:"animation.staggerDelay must be a non-negative number",severity:"error"})}}if($.a11y){if($.a11y.level!==void 0){let J=["AA","AAA"];if(!J.includes($.a11y.level))Z.push({path:"a11y.level",message:`a11y.level must be one of: ${J.join(", ")}`,severity:"error"})}}if($.hydration){if($.hydration.mode!==void 0){let J=["progressive","islands"];if(!J.includes($.hydration.mode))Z.push({path:"hydration.mode",message:`hydration.mode must be one of: ${J.join(", ")}`,severity:"error"})}if($.hydration.preload!==void 0){let J=["none","eager","lazy"];if(!J.includes($.hydration.preload))Z.push({path:"hydration.preload",message:`hydration.preload must be one of: ${J.join(", ")}`,severity:"error"})}}if($.customDirectives)if(!Array.isArray($.customDirectives))Z.push({path:"customDirectives",message:"customDirectives must be an array",severity:"error"});else $.customDirectives.forEach((J,Q)=>{if(!J.name||typeof J.name!=="string")Z.push({path:`customDirectives[${Q}].name`,message:"Custom directive must have a name string",severity:"error"});if(!J.handler||typeof J.handler!=="function")Z.push({path:`customDirectives[${Q}].handler`,message:"Custom directive must have a handler function",severity:"error"})});if($.middleware)if(!Array.isArray($.middleware))Z.push({path:"middleware",message:"middleware must be an array",severity:"error"});else $.middleware.forEach((J,Q)=>{if(!J.name||typeof J.name!=="string")Z.push({path:`middleware[${Q}].name`,message:"Middleware must have a name string",severity:"error"});if(!J.handler||typeof J.handler!=="function")Z.push({path:`middleware[${Q}].handler`,message:"Middleware must have a handler function",severity:"error"});if(!J.timing||!["before","after"].includes(J.timing))Z.push({path:`middleware[${Q}].timing`,message:'Middleware timing must be "before" or "after"',severity:"error"})});if($.debug===!0&&$.cache===!0)Y.push({path:"debug+cache",message:"Debug mode with caching enabled may show stale content during development",severity:"warning"});if($.seo?.enabled===!0&&!$.seo?.defaultConfig?.title)Y.push({path:"seo.defaultConfig.title",message:"SEO is enabled but no default title is set",severity:"warning"});if($.pwa){if($.pwa.enabled===!0&&!$.pwa.manifest?.name)Z.push({path:"pwa.manifest.name",message:"PWA manifest name is required when PWA is enabled",severity:"error"});if($.pwa.manifest?.display!==void 0){let J=["fullscreen","standalone","minimal-ui","browser"];if(!J.includes($.pwa.manifest.display))Z.push({path:"pwa.manifest.display",message:`PWA display must be one of: ${J.join(", ")}`,severity:"error"})}if($.pwa.manifest?.orientation!==void 0){let J=["portrait","landscape","any","portrait-primary","portrait-secondary","landscape-primary","landscape-secondary"];if(!J.includes($.pwa.manifest.orientation))Z.push({path:"pwa.manifest.orientation",message:`PWA orientation must be one of: ${J.join(", ")}`,severity:"error"})}if($.pwa.routes){let J=["cache-first","network-first","stale-while-revalidate","network-only","cache-only"];$.pwa.routes.forEach((Q,X)=>{if(!Q.pattern||typeof Q.pattern!=="string")Z.push({path:`pwa.routes[${X}].pattern`,message:"PWA route must have a pattern string",severity:"error"});if(!J.includes(Q.strategy))Z.push({path:`pwa.routes[${X}].strategy`,message:`PWA route strategy must be one of: ${J.join(", ")}`,severity:"error"});if(Q.maxAgeSeconds!==void 0&&(typeof Q.maxAgeSeconds!=="number"||Q.maxAgeSeconds<0))Z.push({path:`pwa.routes[${X}].maxAgeSeconds`,message:"PWA route maxAgeSeconds must be a non-negative number",severity:"error"});if(Q.maxEntries!==void 0&&(typeof Q.maxEntries!=="number"||Q.maxEntries<1))Z.push({path:`pwa.routes[${X}].maxEntries`,message:"PWA route maxEntries must be a positive number",severity:"error"})})}if($.pwa.icons?.sizes){if(!Array.isArray($.pwa.icons.sizes))Z.push({path:"pwa.icons.sizes",message:"PWA icon sizes must be an array of numbers",severity:"error"});else if($.pwa.icons.sizes.filter((Q)=>typeof Q!=="number"||Q<16||Q>1024).length>0)Z.push({path:"pwa.icons.sizes",message:"PWA icon sizes must be numbers between 16 and 1024",severity:"error"})}if($.pwa.icons?.purpose){let J=["any","maskable","monochrome"];if($.pwa.icons.purpose.filter((X)=>!J.includes(X)).length>0)Z.push({path:"pwa.icons.purpose",message:`PWA icon purpose must be one of: ${J.join(", ")}`,severity:"error"})}if($.pwa.enabled===!0&&!$.pwa.icons?.src)Y.push({path:"pwa.icons.src",message:"PWA is enabled but no icon source specified. Provide a 512x512 PNG for best results.",severity:"warning"});if($.pwa.enabled===!0&&!$.pwa.manifest?.themeColor)Y.push({path:"pwa.manifest.themeColor",message:"PWA theme color not set, defaulting to black",severity:"warning"})}return{valid:Z.length===0,errors:Z,warnings:Y}}var k1,o1=null,S8,C$=null,I7;var s1=y(()=>{R4();T4();M4();I4();d4();u9();L7();j8();R7();E8();k1={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:j9,hasEndTag:!0,description:"Render markdown content to HTML"},{name:"webcomponent",handler:D8,hasEndTag:!1,description:"Include a web component in the template"},Q6,G6,M8,I8,K6,z6,W6,q6,j6,L6,m9,O7,...B8],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}};S8=new Map;I7=new Proxy(k1,{get($,Z){if(o1&&Z in o1)return o1[Z];if(!C$)b1().catch((Y)=>{console.warn("[stx] Failed to load config file:",Y?.message||Y)});return $[Z]}})});var f8={};o(f8,{resetCssCache:()=>_K,resetCrosswindCache:()=>BK,rebuildCrosswindCSS:()=>jK,loadCrosswindConfig:()=>S7,loadCrosswind:()=>b7,injectCrosswindCSS:()=>E5,getCachedCSS:()=>HK,generateCrosswindCSS:()=>x8,extractClassNames:()=>v8,buildCrosswindCSS:()=>P8});import v$ from"fs";import e from"path";function k7($){return Bun.hash($).toString(16).padStart(16,"0").slice(0,16)}function D7($,Z){if(Y1.has($))Y1.delete($);else if(Y1.size>=qK)Y1.delete(Y1.keys().next().value);Y1.set($,Z)}async function zK($){if(!G1)return null;try{let Z=Bun.file(e.join(G1,`cw-${k7($)}.css`));if(!await Z.exists())return null;return await Z.text()}catch{return null}}async function WK($,Z){if(!G1)return;try{if(!v$.existsSync(G1))v$.mkdirSync(G1,{recursive:!0});await Bun.write(e.join(G1,`cw-${k7($)}.css`),Z)}catch{}}async function C8($){try{let Z=await import($);if(Z&&Z.CSSGenerator)return{CSSGenerator:Z.CSSGenerator,config:Z.config,build:Z.build,defaultConfig:Z.defaultConfig}}catch{}return null}function UK(){let $=[],Z=process.env.HOME||process.env.USERPROFILE||"",Y=process.cwd();while(Y!==e.dirname(Y))$.push(e.join(Y,"node_modules","@cwcss","crosswind","dist","index.js")),$.push(e.join(Y,"node_modules","@cwcss","crosswind","src","index.ts")),$.push(e.join(Y,"pantry","@cwcss","crosswind","dist","index.js")),$.push(e.join(Y,"pantry","@cwcss","crosswind","src","index.ts")),$.push(e.join(Y,"node_modules","@stacksjs","crosswind","dist","index.js")),$.push(e.join(Y,"pantry","@stacksjs","crosswind","dist","index.js")),Y=e.dirname(Y);if(Z){let J=[e.join(Z,"Code","Tools","crosswind","packages","crosswind","dist","index.js"),e.join(Z,"Code","Tools","crosswind","packages","crosswind","src","index.ts"),e.join(Z,"repos","stacks-org","crosswind","packages","crosswind","dist","index.js"),e.join(Z,"repos","stacks-org","crosswind","packages","crosswind","src","index.ts"),e.join(Z,"Code","Tools","stx","packages","stx","node_modules","@cwcss","crosswind","dist","index.js"),e.join(Z,"Code","Tools","stx","packages","stx","node_modules","@stacksjs","crosswind","dist","index.js")];$.push(...J)}return $.push(e.join(process.cwd(),"..","crosswind","packages","crosswind","dist","index.js")),$.push(e.join(process.cwd(),"..","crosswind","packages","crosswind","src","index.ts")),$}async function b7(){if(E7)return a1;E7=!0;try{let $=["@cwcss/crosswind","@cwcss/crosswind/dist/index.js","@stacksjs/crosswind","@stacksjs/crosswind/dist/index.js"];for(let Y of $){let J=await C8(Y);if(J){if(a1=J,!process.env.STACKS_DEV_QUIET)console.log(`${B0.green}[Crosswind]${B0.reset} CSS engine loaded`);return a1}}let Z=UK();for(let Y of Z)if(await Bun.file(Y).exists()){let J=await C8(Y);if(J){if(a1=J,!process.env.STACKS_DEV_QUIET)console.log(`${B0.green}[Crosswind]${B0.reset} CSS engine loaded from ${e.dirname(e.dirname(Y))}`);return a1}}throw Error("Crosswind CSSGenerator not found in any location")}catch{return console.warn(`${B0.yellow}[Crosswind] CSS engine not available, Tailwind styles will not be generated${B0.reset}`),console.warn(`${B0.yellow}Run 'bun add @stacksjs/crosswind' to enable CSS generation${B0.reset}`),null}}function _K(){Y1.clear()}function BK(){a1=null,E7=!1,l0=null,D5="",Y1.clear(),P$=null}async function S7($){try{let{loadConfigWithResult:Z}=await import("bunfig"),Y=await Z({name:"crosswind",cwd:$,defaultConfig:{},checkEnv:!1,verbose:!1});if(!Y?.path||!Y.config||Object.keys(Y.config).length===0)return null;let J=e.relative($,Y.path);if(!process.env.STACKS_DEV_QUIET)console.log(`${B0.green}[Crosswind]${B0.reset} Loaded config from ${J||Y.path}`);return Y.config}catch(Z){if(Z instanceof Error&&Z.name==="ConfigNotFoundError")return null;return console.warn(`${B0.yellow}[Crosswind]${B0.reset} Failed to load crosswind config:`,Z instanceof Error?Z.message:Z),null}}async function P8($){if(r1)return D5;r1=!0;try{let Z=await b7();if(!Z||!Z.build)return r1=!1,"";if(!l0)l0=await S7($);if(!l0)return r1=!1,"";let Y=Z.defaultConfig?.theme||{},J=l0.theme||{},Q={...Z.defaultConfig,...l0,theme:{...Y,...J,extend:{...Y.extend||{},...J.extend||{}}}},X=performance.now(),G=await Z.build(Q),K=performance.now()-X;if(D5=G.css,console.log(`${B0.cyan}[Crosswind]${B0.reset} Built ${G.classes.size} classes in ${K.toFixed(1)}ms`),Q.output){let q=e.isAbsolute(Q.output)?Q.output:e.join($,Q.output),W=e.dirname(q);if(!v$.existsSync(W))v$.mkdirSync(W,{recursive:!0});await Bun.write(q,G.css)}return r1=!1,G.css}catch(Z){return console.error(`${B0.red}[Crosswind]${B0.reset} Build error:`,Z),r1=!1,D5}}async function jK($){l0=null,await P8($)}function HK(){return D5}function v8($){let Z=new Set,Y=/class\s*=\s*["']([^"']+)["']/gi,J=Y.exec($);while(J!==null){for(let G of J[1].split(/\s+/))if(G.trim())Z.add(G.trim());J=Y.exec($)}let Q=/(?:x-class|:class)\s*=\s*"([^"]+)"/gi,X=Q.exec($);while(X!==null){let G=X[1].match(/'([^']+)'/g);if(G){for(let K of G)for(let q of K.slice(1,-1).split(/\s+/))if(q.trim())Z.add(q.trim())}X=Q.exec($)}return Z}async function x8($,Z){try{let Y=await b7();if(!Y)return"";let J=v8($);if(J.size===0)return"";let Q=Z?e.resolve(Z):process.cwd();if(!G1)G1=e.join(Q,".stx/cache");let X=[...J].sort().join(" "),G=`${P$||"default"}::${X}`,K=Y1.get(G);if(K!==void 0)return D7(G,K),K;let q=await zK(G);if(q!==null)return D7(G,q),q;if(!l0){let A=null;try{let{loadStxConfig:N}=await Promise.resolve().then(() => (s1(),y8)),R=await N(Q);if(R.css)if(typeof R.css==="string"){let T=e.isAbsolute(R.css)?R.css:e.resolve(Q,R.css);if(await Bun.file(T).exists()){let M=await import(T);A=M.default||M,console.log(`${B0.green}[Crosswind]${B0.reset} Loaded config from stx.config.ts \u2192 ${R.css}`)}}else{if(A={...R.css,content:R.css.content||[],preflight:R.css.preflight??!0,minify:R.css.minify??!1},R.css.config){let T=e.isAbsolute(R.css.config)?R.css.config:e.resolve(Q,R.css.config);if(await Bun.file(T).exists()){let M=await import(T);A={...M.default||M,...A}}}console.log(`${B0.green}[Crosswind]${B0.reset} Using inline CSS config from stx.config.ts`)}}catch{}l0=A||await S7(Q);try{P$=k7(JSON.stringify(l0??{}))}catch{P$="unhashable"}}let W=Y.defaultConfig||Y.config,z=l0||{},U=W.theme||{},B=(z.theme||{}).extend||{},j={...U};if(Object.keys(B).length>0)j.extend=B;let H=[...W.safelist||[],...z.safelist||[]],L={...W,...z,content:[],output:"",preflight:!0,minify:!1,theme:j,safelist:H},F=new Y.CSSGenerator(L);for(let A of H)F.generate(A);for(let A of J)F.generate(A);let O=F.toCSS(!0,!1),V=L.shortcuts||z.shortcuts||{};for(let[A,N]of Object.entries(V)){if(!J.has(A)&&!H.includes(A))continue;let R=N.split(/\s+/).filter(Boolean);for(let T of R)F.generate(T)}O=F.toCSS(!0,!1);let w=O.split(`
1621
+ </script>`}var E8=y(()=>{Z1();N0()});var k8={};o(k8,{timingPlugin:()=>YK,pluginManager:()=>tG,definePlugin:()=>y$,debugPlugin:()=>ZK,createVariablesPlugin:()=>JK,createFilterPlugin:()=>$K,createDirectivePlugin:()=>eG,PluginManager:()=>T7});function y$($){return $}class T7{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,J]of this.plugins)if(J.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 J of this.sortedPlugins){let Q=J[$];if(Q)try{let X=await Q(Y);if(X){if(X.template!==void 0)Y.template=X.template;if(X.context)Y.context={...Y.context,...X.context};if(X.metadata)Y.metadata={...Y.metadata,...X.metadata};if(X.skip)break}}catch(X){console.error(`Error in plugin "${J.name}" ${$} hook:`,X)}}return Y}async runDirectiveHooks($,Z,Y){let J={...Y};for(let Q of this.sortedPlugins){let X=Q[$];if(X)try{let G=await X(Z,J);if(G){if(G.template!==void 0)J.template=G.template;if(G.context)J.context={...J.context,...G.context};if(G.metadata)J.metadata={...J.metadata,...G.metadata};if(G.skip)break}}catch(G){console.error(`Error in plugin "${Q.name}" ${$} hook:`,G)}}return J}}function eG($,Z,Y={}){return{name:$,...Y,registerDirectives:()=>Z}}function $K($,Z,Y={}){return{name:$,...Y,registerFilters:()=>Z}}function JK($){return y$({name:"stx-variables",version:"1.0.0",description:"Adds predefined variables to template context",beforeProcess(Z){return{context:{...Z.context,...$}}}})}var tG,ZK,YK;var b8=y(()=>{tG=new T7;ZK=y$({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)}}),YK=y$({name:"stx-timing",version:"1.0.0",description:"Measures template processing time",priority:1,beforeProcess($){$.metadata.startTime=performance.now()},afterRender($){let Z=$.metadata.startTime;if(Z){let Y=performance.now()-Z;console.log(`[stx-timing] Processing took ${Y.toFixed(2)}ms`)}}})});var y8={};o(y8,{validateConfig:()=>KK,loadStxConfig:()=>b1,defineStxConfig:()=>GK,defaultConfig:()=>k1,config:()=>I7});import M7 from"fs";import k0 from"path";import{loadConfigWithResult as XK}from"bunfig";function QK($,Z){let Y=Z||"pages";if($)return{root:$,pagesDir:Y};let J=k0.join(process.cwd(),"resources","views"),Q=k0.join(process.cwd(),"resources","layouts");if(M7.existsSync(J)&&M7.existsSync(Q))return{root:"resources",pagesDir:"views"};let X=k0.join(process.cwd(),"resources","views","pages");if(M7.existsSync(X))return{root:"resources/views",pagesDir:Y};return{root:".",pagesDir:Y}}async function b1($){if(!$){if(o1)return o1;if(C$)return C$}let Z=$?k0.resolve($):process.cwd(),Y=S8.get(Z);if(Y)return Y;let J=(async()=>{let X=(await XK({name:"stx",alias:"ui",cwd:Z,defaultConfig:k1,verbose:!1})).config,G=QK(X.root,X.pagesDir);if(X.root=G.root,X.pagesDir=G.pagesDir,X.root&&X.root!=="."){let K=X.root;if(X.partialsDir&&!k0.isAbsolute(X.partialsDir))X.partialsDir=k0.join(K,X.partialsDir);if(X.componentsDir&&!k0.isAbsolute(X.componentsDir))X.componentsDir=k0.join(K,X.componentsDir);if(X.layoutsDir&&!k0.isAbsolute(X.layoutsDir))X.layoutsDir=k0.join(K,X.layoutsDir)}if(X.plugins&&X.plugins.length>0){let{pluginManager:K}=await Promise.resolve().then(() => (b8(),k8)),q=[],W=[];for(let z of X.plugins){let U=typeof z==="string"?z:z[0],_=typeof z==="string"?{}:z[1]||{};try{let B,j;try{B=await import(U),j=k0.dirname(z0.resolve(U))}catch{let L=k0.resolve(process.cwd(),U);B=await import(L),j=k0.dirname(L)}let H=B.default||B;if(K.register(H,X),H.components){let L=k0.resolve(j,H.components);q.push(L)}if(H.pages){let L=k0.resolve(j,H.pages),F=_.path||"/";W.push({dir:L,prefix:F})}if(H.setup){let L={addDirective:(F)=>{X.customDirectives=X.customDirectives||[],X.customDirectives.push(F)},addRoute:(F,O)=>{X.apiRoutes=X.apiRoutes||{},X.apiRoutes[F]=O},addMiddleware:(F)=>{X.middleware=X.middleware||[],X.middleware.push(F)},pluginDir:j,config:X};await H.setup(_,L)}console.log(`[stx] Plugin loaded: ${H.name||U}`)}catch(B){console.warn(`[stx] Failed to load plugin ${U}:`,B.message)}}X._pluginComponentDirs=q,X._pluginPageDirs=W}return X})();if(S8.set(Z,J),!$)C$=J,J.then((Q)=>{o1=Q}).catch(()=>{});return J}function GK($){return $}function KK($){let Z=[],Y=[];if($.partialsDir!==void 0&&typeof $.partialsDir!=="string")Z.push({path:"partialsDir",message:"partialsDir must be a string",severity:"error"});if($.componentsDir!==void 0&&typeof $.componentsDir!=="string")Z.push({path:"componentsDir",message:"componentsDir must be a string",severity:"error"});if($.cache!==void 0&&typeof $.cache!=="boolean")Z.push({path:"cache",message:"cache must be a boolean",severity:"error"});if($.debug!==void 0&&typeof $.debug!=="boolean")Z.push({path:"debug",message:"debug must be a boolean",severity:"error"});if($.streaming){if($.streaming.bufferSize!==void 0){if(typeof $.streaming.bufferSize!=="number"||$.streaming.bufferSize<=0)Z.push({path:"streaming.bufferSize",message:"streaming.bufferSize must be a positive number",severity:"error"})}if($.streaming.timeout!==void 0){if(typeof $.streaming.timeout!=="number"||$.streaming.timeout<=0)Z.push({path:"streaming.timeout",message:"streaming.timeout must be a positive number",severity:"error"})}if($.streaming.strategy!==void 0){let J=["auto","manual","sections"];if(!J.includes($.streaming.strategy))Z.push({path:"streaming.strategy",message:`streaming.strategy must be one of: ${J.join(", ")}`,severity:"error"})}}if($.i18n){if($.i18n.format!==void 0){let J=["json","yaml","yml","js"];if(!J.includes($.i18n.format))Z.push({path:"i18n.format",message:`i18n.format must be one of: ${J.join(", ")}`,severity:"error"})}}if($.animation){if($.animation.defaultDuration!==void 0){if(typeof $.animation.defaultDuration!=="number"||$.animation.defaultDuration<0)Z.push({path:"animation.defaultDuration",message:"animation.defaultDuration must be a non-negative number",severity:"error"})}if($.animation.staggerDelay!==void 0){if(typeof $.animation.staggerDelay!=="number"||$.animation.staggerDelay<0)Z.push({path:"animation.staggerDelay",message:"animation.staggerDelay must be a non-negative number",severity:"error"})}}if($.a11y){if($.a11y.level!==void 0){let J=["AA","AAA"];if(!J.includes($.a11y.level))Z.push({path:"a11y.level",message:`a11y.level must be one of: ${J.join(", ")}`,severity:"error"})}}if($.hydration){if($.hydration.mode!==void 0){let J=["progressive","islands"];if(!J.includes($.hydration.mode))Z.push({path:"hydration.mode",message:`hydration.mode must be one of: ${J.join(", ")}`,severity:"error"})}if($.hydration.preload!==void 0){let J=["none","eager","lazy"];if(!J.includes($.hydration.preload))Z.push({path:"hydration.preload",message:`hydration.preload must be one of: ${J.join(", ")}`,severity:"error"})}}if($.customDirectives)if(!Array.isArray($.customDirectives))Z.push({path:"customDirectives",message:"customDirectives must be an array",severity:"error"});else $.customDirectives.forEach((J,Q)=>{if(!J.name||typeof J.name!=="string")Z.push({path:`customDirectives[${Q}].name`,message:"Custom directive must have a name string",severity:"error"});if(!J.handler||typeof J.handler!=="function")Z.push({path:`customDirectives[${Q}].handler`,message:"Custom directive must have a handler function",severity:"error"})});if($.middleware)if(!Array.isArray($.middleware))Z.push({path:"middleware",message:"middleware must be an array",severity:"error"});else $.middleware.forEach((J,Q)=>{if(!J.name||typeof J.name!=="string")Z.push({path:`middleware[${Q}].name`,message:"Middleware must have a name string",severity:"error"});if(!J.handler||typeof J.handler!=="function")Z.push({path:`middleware[${Q}].handler`,message:"Middleware must have a handler function",severity:"error"});if(!J.timing||!["before","after"].includes(J.timing))Z.push({path:`middleware[${Q}].timing`,message:'Middleware timing must be "before" or "after"',severity:"error"})});if($.debug===!0&&$.cache===!0)Y.push({path:"debug+cache",message:"Debug mode with caching enabled may show stale content during development",severity:"warning"});if($.seo?.enabled===!0&&!$.seo?.defaultConfig?.title)Y.push({path:"seo.defaultConfig.title",message:"SEO is enabled but no default title is set",severity:"warning"});if($.pwa){if($.pwa.enabled===!0&&!$.pwa.manifest?.name)Z.push({path:"pwa.manifest.name",message:"PWA manifest name is required when PWA is enabled",severity:"error"});if($.pwa.manifest?.display!==void 0){let J=["fullscreen","standalone","minimal-ui","browser"];if(!J.includes($.pwa.manifest.display))Z.push({path:"pwa.manifest.display",message:`PWA display must be one of: ${J.join(", ")}`,severity:"error"})}if($.pwa.manifest?.orientation!==void 0){let J=["portrait","landscape","any","portrait-primary","portrait-secondary","landscape-primary","landscape-secondary"];if(!J.includes($.pwa.manifest.orientation))Z.push({path:"pwa.manifest.orientation",message:`PWA orientation must be one of: ${J.join(", ")}`,severity:"error"})}if($.pwa.routes){let J=["cache-first","network-first","stale-while-revalidate","network-only","cache-only"];$.pwa.routes.forEach((Q,X)=>{if(!Q.pattern||typeof Q.pattern!=="string")Z.push({path:`pwa.routes[${X}].pattern`,message:"PWA route must have a pattern string",severity:"error"});if(!J.includes(Q.strategy))Z.push({path:`pwa.routes[${X}].strategy`,message:`PWA route strategy must be one of: ${J.join(", ")}`,severity:"error"});if(Q.maxAgeSeconds!==void 0&&(typeof Q.maxAgeSeconds!=="number"||Q.maxAgeSeconds<0))Z.push({path:`pwa.routes[${X}].maxAgeSeconds`,message:"PWA route maxAgeSeconds must be a non-negative number",severity:"error"});if(Q.maxEntries!==void 0&&(typeof Q.maxEntries!=="number"||Q.maxEntries<1))Z.push({path:`pwa.routes[${X}].maxEntries`,message:"PWA route maxEntries must be a positive number",severity:"error"})})}if($.pwa.icons?.sizes){if(!Array.isArray($.pwa.icons.sizes))Z.push({path:"pwa.icons.sizes",message:"PWA icon sizes must be an array of numbers",severity:"error"});else if($.pwa.icons.sizes.filter((Q)=>typeof Q!=="number"||Q<16||Q>1024).length>0)Z.push({path:"pwa.icons.sizes",message:"PWA icon sizes must be numbers between 16 and 1024",severity:"error"})}if($.pwa.icons?.purpose){let J=["any","maskable","monochrome"];if($.pwa.icons.purpose.filter((X)=>!J.includes(X)).length>0)Z.push({path:"pwa.icons.purpose",message:`PWA icon purpose must be one of: ${J.join(", ")}`,severity:"error"})}if($.pwa.enabled===!0&&!$.pwa.icons?.src)Y.push({path:"pwa.icons.src",message:"PWA is enabled but no icon source specified. Provide a 512x512 PNG for best results.",severity:"warning"});if($.pwa.enabled===!0&&!$.pwa.manifest?.themeColor)Y.push({path:"pwa.manifest.themeColor",message:"PWA theme color not set, defaulting to black",severity:"warning"})}return{valid:Z.length===0,errors:Z,warnings:Y}}var k1,o1=null,S8,C$=null,I7;var s1=y(()=>{R4();T4();M4();I4();d4();u9();L7();j8();R7();E8();k1={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:j9,hasEndTag:!0,description:"Render markdown content to HTML"},{name:"webcomponent",handler:D8,hasEndTag:!1,description:"Include a web component in the template"},Q6,G6,M8,I8,K6,z6,W6,q6,j6,L6,m9,O7,...B8],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}};S8=new Map;I7=new Proxy(k1,{get($,Z){if(o1&&Z in o1)return o1[Z];if(!C$)b1().catch((Y)=>{console.warn("[stx] Failed to load config file:",Y?.message||Y)});return $[Z]}})});var f8={};o(f8,{resetCssCache:()=>_K,resetCrosswindCache:()=>BK,rebuildCrosswindCSS:()=>jK,loadCrosswindConfig:()=>S7,loadCrosswind:()=>b7,injectCrosswindCSS:()=>E5,getCachedCSS:()=>HK,generateCrosswindCSS:()=>x8,extractClassNames:()=>v8,buildCrosswindCSS:()=>P8});import v$ from"fs";import e from"path";function k7($){return Bun.hash($).toString(16).padStart(16,"0").slice(0,16)}function D7($,Z){if(Y1.has($))Y1.delete($);else if(Y1.size>=qK)Y1.delete(Y1.keys().next().value);Y1.set($,Z)}async function zK($){if(!G1)return null;try{let Z=Bun.file(e.join(G1,`cw-${k7($)}.css`));if(!await Z.exists())return null;return await Z.text()}catch{return null}}async function WK($,Z){if(!G1)return;try{if(!v$.existsSync(G1))v$.mkdirSync(G1,{recursive:!0});await Bun.write(e.join(G1,`cw-${k7($)}.css`),Z)}catch{}}async function C8($){try{let Z=await import($);if(Z&&Z.CSSGenerator)return{CSSGenerator:Z.CSSGenerator,config:Z.config,build:Z.build,defaultConfig:Z.defaultConfig}}catch{}return null}function UK(){let $=[],Z=process.env.HOME||process.env.USERPROFILE||"",Y=process.cwd();while(Y!==e.dirname(Y))$.push(e.join(Y,"node_modules","@cwcss","crosswind","dist","index.js")),$.push(e.join(Y,"node_modules","@cwcss","crosswind","src","index.ts")),$.push(e.join(Y,"pantry","@cwcss","crosswind","dist","index.js")),$.push(e.join(Y,"pantry","@cwcss","crosswind","src","index.ts")),$.push(e.join(Y,"node_modules","@stacksjs","crosswind","dist","index.js")),$.push(e.join(Y,"pantry","@stacksjs","crosswind","dist","index.js")),Y=e.dirname(Y);if(Z){let J=[e.join(Z,"Code","Tools","crosswind","packages","crosswind","dist","index.js"),e.join(Z,"Code","Tools","crosswind","packages","crosswind","src","index.ts"),e.join(Z,"repos","stacks-org","crosswind","packages","crosswind","dist","index.js"),e.join(Z,"repos","stacks-org","crosswind","packages","crosswind","src","index.ts"),e.join(Z,"Code","Tools","stx","packages","stx","node_modules","@cwcss","crosswind","dist","index.js"),e.join(Z,"Code","Tools","stx","packages","stx","node_modules","@stacksjs","crosswind","dist","index.js")];$.push(...J)}return $.push(e.join(process.cwd(),"..","crosswind","packages","crosswind","dist","index.js")),$.push(e.join(process.cwd(),"..","crosswind","packages","crosswind","src","index.ts")),$}async function b7(){if(E7)return a1;E7=!0;try{let $=["@cwcss/crosswind","@cwcss/crosswind/dist/index.js","@stacksjs/crosswind","@stacksjs/crosswind/dist/index.js"];for(let Y of $){let J=await C8(Y);if(J){if(a1=J,!process.env.STACKS_DEV_QUIET)console.log(`${B0.green}[Crosswind]${B0.reset} CSS engine loaded`);return a1}}let Z=UK();for(let Y of Z)if(await Bun.file(Y).exists()){let J=await C8(Y);if(J){if(a1=J,!process.env.STACKS_DEV_QUIET)console.log(`${B0.green}[Crosswind]${B0.reset} CSS engine loaded from ${e.dirname(e.dirname(Y))}`);return a1}}throw Error("Crosswind CSSGenerator not found in any location")}catch{return console.warn(`${B0.yellow}[Crosswind] CSS engine not available, Tailwind styles will not be generated${B0.reset}`),console.warn(`${B0.yellow}Run 'bun add @stacksjs/crosswind' to enable CSS generation${B0.reset}`),null}}function _K(){Y1.clear()}function BK(){a1=null,E7=!1,l0=null,D5="",Y1.clear(),P$=null}async function S7($){try{let{loadConfigWithResult:Z}=await import("bunfig"),Y=await Z({name:"crosswind",cwd:$,defaultConfig:{},checkEnv:!1,verbose:!1});if(!Y?.path||!Y.config||Object.keys(Y.config).length===0)return null;let J=e.relative($,Y.path);if(!process.env.STACKS_DEV_QUIET)console.log(`${B0.green}[Crosswind]${B0.reset} Loaded config from ${J||Y.path}`);return Y.config}catch(Z){if(Z instanceof Error&&Z.name==="ConfigNotFoundError")return null;return console.warn(`${B0.yellow}[Crosswind]${B0.reset} Failed to load crosswind config:`,Z instanceof Error?Z.message:Z),null}}async function P8($){if(r1)return D5;r1=!0;try{let Z=await b7();if(!Z||!Z.build)return r1=!1,"";if(!l0)l0=await S7($);if(!l0)return r1=!1,"";let Y=Z.defaultConfig?.theme||{},J=l0.theme||{},Q={...Z.defaultConfig,...l0,theme:{...Y,...J,extend:{...Y.extend||{},...J.extend||{}}}},X=performance.now(),G=await Z.build(Q),K=performance.now()-X;if(D5=G.css,console.log(`${B0.cyan}[Crosswind]${B0.reset} Built ${G.classes.size} classes in ${K.toFixed(1)}ms`),Q.output){let q=e.isAbsolute(Q.output)?Q.output:e.join($,Q.output),W=e.dirname(q);if(!v$.existsSync(W))v$.mkdirSync(W,{recursive:!0});await Bun.write(q,G.css)}return r1=!1,G.css}catch(Z){return console.error(`${B0.red}[Crosswind]${B0.reset} Build error:`,Z),r1=!1,D5}}async function jK($){l0=null,await P8($)}function HK(){return D5}function v8($){let Z=new Set,Y=/class\s*=\s*["']([^"']+)["']/gi,J=Y.exec($);while(J!==null){for(let G of J[1].split(/\s+/))if(G.trim())Z.add(G.trim());J=Y.exec($)}let Q=/(?:x-class|:class)\s*=\s*"([^"]+)"/gi,X=Q.exec($);while(X!==null){let G=X[1].match(/'([^']+)'/g);if(G){for(let K of G)for(let q of K.slice(1,-1).split(/\s+/))if(q.trim())Z.add(q.trim())}X=Q.exec($)}return Z}async function x8($,Z){try{let Y=await b7();if(!Y)return"";let J=v8($);if(J.size===0)return"";let Q=Z?e.resolve(Z):process.cwd();if(!G1)G1=e.join(Q,".stx/cache");let X=[...J].sort().join(" "),G=`${P$||"default"}::${X}`,K=Y1.get(G);if(K!==void 0)return D7(G,K),K;let q=await zK(G);if(q!==null)return D7(G,q),q;if(!l0){let A=null;try{let{loadStxConfig:N}=await Promise.resolve().then(() => (s1(),y8)),R=await N(Q);if(R.css)if(typeof R.css==="string"){let T=e.isAbsolute(R.css)?R.css:e.resolve(Q,R.css);if(await Bun.file(T).exists()){let M=await import(T);A=M.default||M,console.log(`${B0.green}[Crosswind]${B0.reset} Loaded config from stx.config.ts \u2192 ${R.css}`)}}else{if(A={...R.css,content:R.css.content||[],preflight:R.css.preflight??!0,minify:R.css.minify??!1},R.css.config){let T=e.isAbsolute(R.css.config)?R.css.config:e.resolve(Q,R.css.config);if(await Bun.file(T).exists()){let M=await import(T);A={...M.default||M,...A}}}console.log(`${B0.green}[Crosswind]${B0.reset} Using inline CSS config from stx.config.ts`)}}catch{}l0=A||await S7(Q);try{P$=k7(JSON.stringify(l0??{}))}catch{P$="unhashable"}}let W=Y.defaultConfig||Y.config,z=l0||{},U=W.theme||{},B=(z.theme||{}).extend||{},j={...U};if(Object.keys(B).length>0)j.extend=B;let H=[...W.safelist||[],...z.safelist||[]],L={...W,...z,content:[],output:"",preflight:!0,minify:!1,theme:j,safelist:H},F=new Y.CSSGenerator(L);for(let A of H)F.generate(A);for(let A of J)F.generate(A);let O=F.toCSS(!0,!1),V=L.shortcuts||z.shortcuts||{};for(let[A,N]of Object.entries(V)){if(!J.has(A)&&!H.includes(A))continue;let R=N.split(/\s+/).filter(Boolean);for(let T of R)F.generate(T)}O=F.toCSS(!0,!1);let w=O.split(`
1622
1622
  `);for(let[A,N]of Object.entries(V)){if(!J.has(A)&&!H.includes(A))continue;let R=N.split(/\s+/).filter(Boolean),T=[],M=[];for(let I of R){let D=I.startsWith("dark:"),b=`.${(D?I.slice(5):I).replace(/\//g,"\\/").replace(/:/g,"\\:").replace(/\./g,"\\.").replace(/\[/g,"\\[").replace(/\]/g,"\\]").replace(/%/g,"\\%")}`;for(let k=0;k<w.length;k++){let P=w[k].trim();if(P===`${b} {`||P.startsWith(`${b} {`)){let h=k,f="";while(h<w.length){if(f+=w[h],w[h].includes("}"))break;h++}let m=f.match(/\{([^}]+)\}/);if(m)if(D)M.push(m[1].trim());else T.push(m[1].trim());break}}}if(T.length)O+=`
1623
1623
  .${A} { ${T.join(" ")} }`;if(M.length)O+=`
1624
1624
  @media (prefers-color-scheme: dark) { .dark .${A} { ${M.join(" ")} } }`}return D7(G,O),WK(G,O),O}catch(Y){return console.warn("Failed to generate Crosswind CSS:",Y),""}}async function E5($,Z){let Y=await x8($,Z);if(!Y)return $;let J=`<style data-crosswind="generated">
@@ -2706,7 +2706,7 @@ else {
2706
2706
  ${q?`{${q}}`:"{}"}
2707
2707
  </script>
2708
2708
  </div>`}}});var hZ={};o(hZ,{warnUnbalancedTags:()=>a7,findUnbalancedTags:()=>gZ});function W1($){return $.replace(/[^\n]/g," ")}function gZ($){let Z=$.replace(/<script\b[^>]*>[\s\S]*?<\/script>/gi,W1).replace(/<style\b[^>]*>[\s\S]*?<\/style>/gi,W1).replace(/<!--[\s\S]*?-->/g,W1).replace(/\{\{\{[\s\S]*?\}\}\}/g,W1).replace(/\{\{[\s\S]*?\}\}/g,W1).replace(/\{!![\s\S]*?!!\}/g,W1).replace(/"[^"]*"/g,W1).replace(/'[^']*'/g,W1),Y=new Map,J=new Map,Q=/<(\/?)([A-Za-z][\w-]*)\b[^>]*?(\/?)>/g,X;while((X=Q.exec(Z))!==null){let K=X[1]==="/",q=X[2],W=X[3]==="/";if(pq.has(q.toLowerCase()))continue;if(W)continue;if(K)J.set(q,(J.get(q)??0)+1);else{let z=Y.get(q);if(z)z.count++;else{let U=Z.slice(0,X.index).split(`
2709
- `).length;Y.set(q,{count:1,firstLine:U})}}}let G=[];for(let K of new Set([...Y.keys(),...J.keys()])){if(lq.has(K.toLowerCase()))continue;let q=Y.get(K)?.count??0,W=J.get(K)??0;if(q!==W)G.push({tag:K,opened:q,closed:W,firstOpenLine:Y.get(K)?.firstLine??0})}return G}function a7($,Z){let Y;try{Y=gZ($)}catch{return}if(Y.length===0)return;let J=`${Z}:${$.length}`;if(fZ.has(J))return;fZ.add(J);let Q=Z?Z.split(/[/\\]/).pop()||Z:"template";for(let{tag:X,opened:G,closed:K,firstOpenLine:q}of Y)if(G>K){let W=q?` (first opened at line ${q})`:"";console.warn(`[stx] ${Q}: <${X}> ${G} opened, ${K} closed \u2014 an unclosed <${X}>${W} may swallow the content that follows it.`)}else console.warn(`[stx] ${Q}: <${X}> ${G} opened, ${K} closed \u2014 ${K-G} stray </${X}>.`)}var pq,lq,fZ;var t7=y(()=>{pq=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),lq=new Set(["html","head","body","p","li","dt","dd","rt","rp","option","optgroup","thead","tbody","tfoot","tr","td","th","colgroup","caption"]);fZ=new Set});import d0 from"path";import e7 from"fs";function dZ($){return $.split("-").map((Z)=>Z.charAt(0).toUpperCase()+Z.slice(1)).join("")}function mZ($){return $.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}class uZ{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,J){let Q=$.endsWith(".stx")?$.slice(0,-4):$,X=J?.__importedComponents;if(X){let B=[Q,Q.toLowerCase(),dZ(Q),mZ(Q)];for(let j of B)if(X.has(j))return X.get(j)}let G=[...new Set([`${Q}.stx`,`${dZ(Q)}.stx`,`${mZ(Q)}.stx`])];if(Q.startsWith("./")||Q.startsWith("../")){let B=d0.resolve(d0.dirname(Z),`${Q}.stx`);if(await c(B))return B;return null}let K=[],q=Y.componentsDir||"",W=J?.__originalFilePath;if(W)K.push(d0.join(d0.dirname(W),"components"));if(q)K.push(q);let z=d0.join(d0.dirname(Z),"components");if(!K.includes(z))K.push(z);let U=process.cwd(),_=[d0.resolve(U,"src/components"),d0.resolve(U,"components"),d0.resolve(import.meta.dir,"components")];for(let B of _)if(!K.includes(B))K.push(B);for(let B of K){if(!B)continue;for(let j of G){let H=d0.join(B,j);if(await c(H))return H}try{if(!e7.statSync(B,{throwIfNoEntry:!1})?.isDirectory())continue;let H=e7.readdirSync(B,{withFileTypes:!0});for(let L of H)if(L.isDirectory()){let F=d0.join(B,L.name);for(let O of G){let V=d0.join(F,O);if(await c(V))return V}}}catch{}}return null}}var y0;var $3=y(()=>{N0();y0=new uZ});function U1($){return $.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function cq($){if($.clientReactive.to)return{value:$.clientReactive.to,reactive:!0};if($.serverDynamic.to!==void 0)return{value:String($.serverDynamic.to),reactive:!1};if(typeof $.static.to==="string")return{value:$.static.to,reactive:!1};return{value:"#",reactive:!1}}var Z3;var Y3=y(()=>{Z3={name:"StxLink",aliases:["stx-link"],render($,Z,Y){let J=cq($),Q=(typeof $.static.class==="string"?$.static.class:"")||(typeof $.static.className==="string"?$.static.className:""),X=typeof $.static.activeClass==="string"?$.static.activeClass:"active",G=typeof $.static.exactActiveClass==="string"?$.static.exactActiveClass:"exact-active",K=$.static.prefetch===!0||$.static.prefetch==="true"||$.serverDynamic.prefetch===!0,q=[];if(J.reactive)q.push(`:href="${U1(J.value)}"`);else q.push(`href="${U1(J.value)}"`);if(Q)q.push(`class="${U1(Q)}"`);if(q.push("data-stx-link"),q.push(`data-stx-active-class="${U1(X)}"`),q.push(`data-stx-exact-active-class="${U1(G)}"`),K)q.push("data-stx-prefetch");let W=new Set(["to","class","className","activeClass","exactActiveClass","prefetch"]);for(let[z,U]of Object.entries($.static)){if(W.has(z))continue;if(typeof U==="boolean"){if(U)q.push(U1(z))}else q.push(`${U1(z)}="${U1(U)}"`)}return`<a ${q.join(" ")}>${Z}</a>`}}});function F0($){return $.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function k0($,Z){if($.serverDynamic[Z]!==void 0)return String($.serverDynamic[Z]);let Y=$.static[Z];if(typeof Y==="string")return Y;return}function X3($,Z,Y=!1){let J=$.serverDynamic[Z];if(J!==void 0)return J!==!1&&J!=="false";let Q=$.static[Z];if(Q!==void 0)return Q!=="false"&&Q!==!1;return Y}function pZ($){if($.includes("(")||$.includes(","))return $;let Z=$.trim().split(/\s+/),Y=[];for(let J of Z)if(J.includes(":")){let[Q,X]=J.split(":"),G=iq[Q];if(G)Y.push(`(max-width: ${G}px) ${X}`);else{let K=Number.parseInt(Q);if(!Number.isNaN(K))Y.push(`(max-width: ${K}px) ${X}`)}}else Y.push(J);return Y.join(", ")}function Q3($,Z,Y,J){return Z.map((Q)=>`${P5($,Q,void 0,Y,J)} ${Q}w`).join(", ")}function nq($,Z,Y,J,Q){return Z.map((X)=>{let G=Y?Y*X:void 0;return`${P5($,G,void 0,J,Q)} ${X}x`}).join(", ")}function P5($,Z,Y,J,Q){if(!J||J==="local"||J==="static")return $;if(J==="cloudinary"){let X=[];if(Z)X.push(`w_${Z}`);if(Y)X.push(`h_${Y}`);if(Q)X.push(`f_${Q}`);X.push("q_auto");let G=X.join(",");return $.replace("/upload/",`/upload/${G}/`)}if(J==="imgix"){let X=new URLSearchParams;if(Z)X.set("w",String(Z));if(Y)X.set("h",String(Y));if(Q)X.set("fm",Q);X.set("auto","format");let G=$.includes("?")?"&":"?";return`${$}${G}${X.toString()}`}if(J==="bunny"){let X=new URLSearchParams;if(Z)X.set("width",String(Z));if(Y)X.set("height",String(Y));if(Q)X.set("format",Q);let G=$.includes("?")?"&":"?";return`${$}${G}${X.toString()}`}return $}function oq($,Z,Y="#e5e7eb"){let J=`<svg xmlns="http://www.w3.org/2000/svg" width="${$}" height="${Z}"><rect width="100%" height="100%" fill="${Y}"/></svg>`;return`data:image/svg+xml;base64,${btoa(J)}`}var iq,J3,G3;var K3=y(()=>{iq={sm:640,md:768,lg:1024,xl:1280,"2xl":1536},J3=[320,640,768,1024,1280,1536,1920];G3={name:"StxImage",aliases:["stx-image","stx-img"],render($,Z,Y){let J=k0($,"src")||"",Q=k0($,"alt")||"",X=k0($,"width"),G=k0($,"height"),K=k0($,"sizes"),q=k0($,"srcset"),W=k0($,"densities"),z=k0($,"format"),U=k0($,"placeholder"),_=k0($,"placeholderColor")||"#e5e7eb",B=k0($,"provider"),j=k0($,"class")||k0($,"className")||"",H=k0($,"style")||"",L=k0($,"quality"),F=X3($,"lazy",!0),O=X3($,"preload",!1),V=X3($,"picture",!1)||!!z,w=X?Number.parseInt(X):void 0,A=G?Number.parseInt(G):void 0,N=q||"",R="";if(!N&&K)N=Q3(J,J3,B,z),R=pZ(K);else if(!N&&W){let b=W.split(/\s+/).map((k)=>Number.parseFloat(k.replace("x","")));N=nq(J,b,w,B,z)}else if(K)R=pZ(K);let T=[];if(H)T.push(H);if(w&&A)T.push(`aspect-ratio:${w}/${A}`);if(U==="blur"||U==="color"||U==="thumbhash"){let b=oq(w||16,A||9,_);T.push(`background-image:url(${b})`),T.push("background-size:cover"),T.push("background-repeat:no-repeat")}else if(U&&U!=="empty"&&U!=="none")T.push(`background-image:url(${F0(U)})`),T.push("background-size:cover"),T.push("background-repeat:no-repeat");let M=P5(J,w,A,B,z),I=[];if(I.push(`src="${F0(M)}"`),I.push(`alt="${F0(Q)}"`),X)I.push(`width="${F0(X)}"`);if(G)I.push(`height="${F0(G)}"`);if(F)I.push('loading="lazy"');if(I.push('decoding="async"'),j)I.push(`class="${F0(j)}"`);if(T.length>0)I.push(`style="${F0(T.join(";"))}"`);if(N)I.push(`srcset="${F0(N)}"`);if(R)I.push(`sizes="${F0(R)}"`);let D=new Set(["src","alt","width","height","lazy","sizes","srcset","placeholder","placeholderColor","class","className","style","format","provider","quality","densities","preload","picture"]);for(let[b,k]of Object.entries($.static)){if(D.has(b))continue;if(typeof k==="boolean"){if(k)I.push(F0(b))}else I.push(`${F0(b)}="${F0(k)}"`)}let E=`<img ${I.join(" ")} />`,C="";if(O){let k=z==="webp"?"image/webp":z==="avif"?"image/avif":"";C=`<link rel="preload" as="image" href="${F0(M)}"${k?` type="${k}"`:""}${N?` imagesrcset="${F0(N)}"`:""}${R?` imagesizes="${F0(R)}"`:""} />
2709
+ `).length;Y.set(q,{count:1,firstLine:U})}}}let G=[];for(let K of new Set([...Y.keys(),...J.keys()])){if(lq.has(K.toLowerCase()))continue;let q=Y.get(K)?.count??0,W=J.get(K)??0;if(q!==W)G.push({tag:K,opened:q,closed:W,firstOpenLine:Y.get(K)?.firstLine??0})}return G}function a7($,Z){let Y;try{Y=gZ($)}catch{return}if(Y.length===0)return;let J=`${Z}:${$.length}`;if(fZ.has(J))return;fZ.add(J);let Q=Z?Z.split(/[/\\]/).pop()||Z:"template";for(let{tag:X,opened:G,closed:K,firstOpenLine:q}of Y)if(G>K){let W=q?` (first opened at line ${q})`:"";console.warn(`[stx] ${Q}: <${X}> ${G} opened, ${K} closed \u2014 an unclosed <${X}>${W} may swallow the content that follows it.`)}else console.warn(`[stx] ${Q}: <${X}> ${G} opened, ${K} closed \u2014 ${K-G} stray </${X}>.`)}var pq,lq,fZ;var t7=y(()=>{pq=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),lq=new Set(["html","head","body","p","li","dt","dd","rt","rp","option","optgroup","thead","tbody","tfoot","tr","td","th","colgroup","caption"]);fZ=new Set});import d0 from"path";import e7 from"fs";function dZ($){return $.split("-").map((Z)=>Z.charAt(0).toUpperCase()+Z.slice(1)).join("")}function mZ($){return $.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}class uZ{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,J){let Q=$.endsWith(".stx")?$.slice(0,-4):$,X=J?.__importedComponents;if(X){let B=[Q,Q.toLowerCase(),dZ(Q),mZ(Q)];for(let j of B)if(X.has(j))return X.get(j)}let G=[...new Set([`${Q}.stx`,`${dZ(Q)}.stx`,`${mZ(Q)}.stx`])];if(Q.startsWith("./")||Q.startsWith("../")){let B=d0.resolve(d0.dirname(Z),`${Q}.stx`);if(await c(B))return B;return null}let K=[],q=Y.componentsDir||"",W=J?.__originalFilePath;if(W)K.push(d0.join(d0.dirname(W),"components"));if(q)K.push(q);let z=d0.join(d0.dirname(Z),"components");if(!K.includes(z))K.push(z);let U=process.cwd(),_=[d0.resolve(U,"src/components"),d0.resolve(U,"components"),d0.resolve(import.meta.dir,"components")];for(let B of _)if(!K.includes(B))K.push(B);for(let B of K){if(!B)continue;for(let j of G){let H=d0.join(B,j);if(await c(H))return H}try{if(!e7.statSync(B,{throwIfNoEntry:!1})?.isDirectory())continue;let H=e7.readdirSync(B,{withFileTypes:!0});for(let L of H)if(L.isDirectory()){let F=d0.join(B,L.name);for(let O of G){let V=d0.join(F,O);if(await c(V))return V}}}catch{}}return null}}var y0;var $3=y(()=>{N0();y0=new uZ});function U1($){return $.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function cq($){if($.clientReactive.to)return{value:$.clientReactive.to,reactive:!0};if($.serverDynamic.to!==void 0)return{value:String($.serverDynamic.to),reactive:!1};if(typeof $.static.to==="string")return{value:$.static.to,reactive:!1};return{value:"#",reactive:!1}}var Z3;var Y3=y(()=>{Z3={name:"StxLink",aliases:["stx-link"],render($,Z,Y){let J=cq($),Q=(typeof $.static.class==="string"?$.static.class:"")||(typeof $.static.className==="string"?$.static.className:""),X=typeof $.static.activeClass==="string"?$.static.activeClass:"active",G=typeof $.static.exactActiveClass==="string"?$.static.exactActiveClass:"exact-active",K=$.static.prefetch===!0||$.static.prefetch==="true"||$.serverDynamic.prefetch===!0,q=[];if(J.reactive)q.push(`:href="${U1(J.value)}"`);else q.push(`href="${U1(J.value)}"`);if(Q)q.push(`class="${U1(Q)}"`);if(q.push("data-stx-link"),q.push(`data-stx-active-class="${U1(X)}"`),q.push(`data-stx-exact-active-class="${U1(G)}"`),K)q.push("data-stx-prefetch");let W=new Set(["to","class","className","activeClass","exactActiveClass","prefetch"]);for(let[z,U]of Object.entries($.static)){if(W.has(z))continue;if(typeof U==="boolean"){if(U)q.push(U1(z))}else q.push(`${U1(z)}="${U1(U)}"`)}return`<a ${q.join(" ")}>${Z}</a>`}}});function F0($){return $.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function b0($,Z){if($.serverDynamic[Z]!==void 0)return String($.serverDynamic[Z]);let Y=$.static[Z];if(typeof Y==="string")return Y;return}function X3($,Z,Y=!1){let J=$.serverDynamic[Z];if(J!==void 0)return J!==!1&&J!=="false";let Q=$.static[Z];if(Q!==void 0)return Q!=="false"&&Q!==!1;return Y}function pZ($){if($.includes("(")||$.includes(","))return $;let Z=$.trim().split(/\s+/),Y=[];for(let J of Z)if(J.includes(":")){let[Q,X]=J.split(":"),G=iq[Q];if(G)Y.push(`(max-width: ${G}px) ${X}`);else{let K=Number.parseInt(Q);if(!Number.isNaN(K))Y.push(`(max-width: ${K}px) ${X}`)}}else Y.push(J);return Y.join(", ")}function Q3($,Z,Y,J){return Z.map((Q)=>`${P5($,Q,void 0,Y,J)} ${Q}w`).join(", ")}function nq($,Z,Y,J,Q){return Z.map((X)=>{let G=Y?Y*X:void 0;return`${P5($,G,void 0,J,Q)} ${X}x`}).join(", ")}function P5($,Z,Y,J,Q){if(!J||J==="local"||J==="static")return $;if(J==="cloudinary"){let X=[];if(Z)X.push(`w_${Z}`);if(Y)X.push(`h_${Y}`);if(Q)X.push(`f_${Q}`);X.push("q_auto");let G=X.join(",");return $.replace("/upload/",`/upload/${G}/`)}if(J==="imgix"){let X=new URLSearchParams;if(Z)X.set("w",String(Z));if(Y)X.set("h",String(Y));if(Q)X.set("fm",Q);X.set("auto","format");let G=$.includes("?")?"&":"?";return`${$}${G}${X.toString()}`}if(J==="bunny"){let X=new URLSearchParams;if(Z)X.set("width",String(Z));if(Y)X.set("height",String(Y));if(Q)X.set("format",Q);let G=$.includes("?")?"&":"?";return`${$}${G}${X.toString()}`}return $}function oq($,Z,Y="#e5e7eb"){let J=`<svg xmlns="http://www.w3.org/2000/svg" width="${$}" height="${Z}"><rect width="100%" height="100%" fill="${Y}"/></svg>`;return`data:image/svg+xml;base64,${btoa(J)}`}var iq,J3,G3;var K3=y(()=>{iq={sm:640,md:768,lg:1024,xl:1280,"2xl":1536},J3=[320,640,768,1024,1280,1536,1920];G3={name:"StxImage",aliases:["stx-image","stx-img"],render($,Z,Y){let J=b0($,"src")||"",Q=b0($,"alt")||"",X=b0($,"width"),G=b0($,"height"),K=b0($,"sizes"),q=b0($,"srcset"),W=b0($,"densities"),z=b0($,"format"),U=b0($,"placeholder"),_=b0($,"placeholderColor")||"#e5e7eb",B=b0($,"provider"),j=b0($,"class")||b0($,"className")||"",H=b0($,"style")||"",L=b0($,"quality"),F=X3($,"lazy",!0),O=X3($,"preload",!1),V=X3($,"picture",!1)||!!z,w=X?Number.parseInt(X):void 0,A=G?Number.parseInt(G):void 0,N=q||"",R="";if(!N&&K)N=Q3(J,J3,B,z),R=pZ(K);else if(!N&&W){let b=W.split(/\s+/).map((k)=>Number.parseFloat(k.replace("x","")));N=nq(J,b,w,B,z)}else if(K)R=pZ(K);let T=[];if(H)T.push(H);if(w&&A)T.push(`aspect-ratio:${w}/${A}`);if(U==="blur"||U==="color"||U==="thumbhash"){let b=oq(w||16,A||9,_);T.push(`background-image:url(${b})`),T.push("background-size:cover"),T.push("background-repeat:no-repeat")}else if(U&&U!=="empty"&&U!=="none")T.push(`background-image:url(${F0(U)})`),T.push("background-size:cover"),T.push("background-repeat:no-repeat");let M=P5(J,w,A,B,z),I=[];if(I.push(`src="${F0(M)}"`),I.push(`alt="${F0(Q)}"`),X)I.push(`width="${F0(X)}"`);if(G)I.push(`height="${F0(G)}"`);if(F)I.push('loading="lazy"');if(I.push('decoding="async"'),j)I.push(`class="${F0(j)}"`);if(T.length>0)I.push(`style="${F0(T.join(";"))}"`);if(N)I.push(`srcset="${F0(N)}"`);if(R)I.push(`sizes="${F0(R)}"`);let D=new Set(["src","alt","width","height","lazy","sizes","srcset","placeholder","placeholderColor","class","className","style","format","provider","quality","densities","preload","picture"]);for(let[b,k]of Object.entries($.static)){if(D.has(b))continue;if(typeof k==="boolean"){if(k)I.push(F0(b))}else I.push(`${F0(b)}="${F0(k)}"`)}let E=`<img ${I.join(" ")} />`,C="";if(O){let k=z==="webp"?"image/webp":z==="avif"?"image/avif":"";C=`<link rel="preload" as="image" href="${F0(M)}"${k?` type="${k}"`:""}${N?` imagesrcset="${F0(N)}"`:""}${R?` imagesizes="${F0(R)}"`:""} />
2710
2710
  `}if(V){let b=[];if(z==="avif"||z==="auto"){let k=P5(J,w,A,B,"avif"),P=N?Q3(J,J3,B,"avif"):`${k}`;b.push(`<source type="image/avif" srcset="${F0(P)}"${R?` sizes="${F0(R)}"`:""} />`)}if(z==="webp"||z==="auto"){let k=P5(J,w,A,B,"webp"),P=N?Q3(J,J3,B,"webp"):`${k}`;b.push(`<source type="image/webp" srcset="${F0(P)}"${R?` sizes="${F0(R)}"`:""} />`)}return`${C}<picture>
2711
2711
  ${b.join(`
2712
2712
  `)}
@@ -7283,10 +7283,10 @@ else {
7283
7283
  var root = scriptEl ? scriptEl.nextElementSibling : null;
7284
7284
  if (!root && scriptEl) root = scriptEl.previousElementSibling || scriptEl.parentElement;
7285
7285
 
7286
- // SPA fallback: during router navigation, script is appended to <body>
7286
+ // SPA fallback: during router navigation, script is appended to body>
7287
7287
  // (not inside the content container), so nextElementSibling won't find the page content.
7288
7288
  // Only use fallback when we genuinely couldn't find a suitable root element.
7289
- // Do NOT fallback just because the script is in <body> \u2014 layout scripts in <body>
7289
+ // Do NOT fallback just because the script is in body> \u2014 layout scripts in body>
7290
7290
  // with valid siblings (e.g. sidebar <aside>) should use those siblings as root.
7291
7291
  var needsFallback = !root || root === document.body
7292
7292
  || (root && root.tagName === 'SCRIPT');
@@ -7605,7 +7605,7 @@ else {
7605
7605
  mountCallbacks.forEach(fn => fn());
7606
7606
  });
7607
7607
 
7608
- // Multi-root fragment fix: a no-<body> setup page tags only the FIRST
7608
+ // Multi-root fragment fix: a no-body> setup page tags only the FIRST
7609
7609
  // top-level element with data-stx (signal-processing.ts marks one element),
7610
7610
  // so sibling root elements were orphaned \u2014 their :if / :for / {{ }} / x-text
7611
7611
  // never hydrated, which read as "{{ }} doesn't work under :if/:for". The
@@ -7702,7 +7702,7 @@ else {
7702
7702
  el.querySelectorAll('[x-cloak]').forEach(function(c) { c.removeAttribute('x-cloak'); });
7703
7703
  });
7704
7704
 
7705
- // Process <head> elements (title, meta) that may contain {{ }} expressions
7705
+ // Process head> elements (title, meta) that may contain {{ }} expressions
7706
7706
  // Use componentScope which now contains variables from processed components
7707
7707
  const headElements = document.querySelectorAll('head title, head meta[content]');
7708
7708
  headElements.forEach(el => {
@@ -7898,7 +7898,7 @@ catch (e) { console.warn('[stx] destroy callback error:', e); }
7898
7898
 
7899
7899
  // Apply new page's SFC setup function. During SPA navigation, re-executed page
7900
7900
  // scripts set window.stx._latestSetup to the new setup function. This takes priority
7901
- // over the stale data-stx attribute on <body> (which has the PREVIOUS page's function name).
7901
+ // over the stale data-stx attribute on body> (which has the PREVIOUS page's function name).
7902
7902
  var usedLatestSetup = false;
7903
7903
  if (window.stx._latestSetup && typeof window.stx._latestSetup === 'function') {
7904
7904
  try {
@@ -7982,7 +7982,7 @@ catch (e) { console.warn('[stx] destroy callback error:', e); }
7982
7982
 
7983
7983
  // Process the container content \u2014 bind {{ }}, :attr, @event directives.
7984
7984
  // Run synchronously (not in setTimeout) so componentScope is captured correctly.
7985
- // The DOMContentLoaded path processes <body> synchronously \u2014 the SPA path must match.
7985
+ // The DOMContentLoaded path processes body> synchronously \u2014 the SPA path must match.
7986
7986
  console.log('[stx:load] container:', container.tagName, '__stx_scope:', !!container.__stx_scope, 'scope keys:', Object.keys(componentScope).slice(0, 10));
7987
7987
  if (!container.__stx_scope) {
7988
7988
  // Dispose previous effects on the container (from prior navigation)
@@ -10831,11 +10831,11 @@ ${g}`);if(/<html\b[^>]*>/i.test(x))return x.replace(/(<html\b[^>]*>)/i,`$1
10831
10831
  ${g}
10832
10832
  </head>`);return x},{renderHead:h,getHead:f}=await Promise.resolve().then(() => (V5(),P4)),m=Z.__stx_runtime_head,l=m&&(m.title||m.meta?.length||m.link?.length)?m:f();if(l.title||l.meta?.length||l.link?.length){let x=h(l);if(x)X=P(X,x)}if(E.headContent)X=P(X,E.headContent);if(G.csp?.enabled&&G.csp.addMetaTag)X=jZ(X,G.csp,Z);if(G.analytics?.enabled)X=l8(X,G);if(G.heatmap?.enabled)X=O6(X,G);if(G.pwa?.enabled&&G.pwa.autoInject!==!1){let{injectPwaTags:x}=await Promise.resolve().then(() => (IJ(),MJ));X=x(X,G)}let Y0=/<script\b(?![^>]*\bserver\b)[^>]*>[\s\S]*?<\/script>/i.test(X),K0=/\bSTX\.\w+/.test(X),O0=/window\.STX\s*=/.test(X);if(Y0&&K0&&!O0){let g=`<script data-stx-scoped>
10833
10833
  ${g8()}
10834
- </script>`;if(X.includes("</head>")){let u=X.indexOf("</head>"),q0=X.slice(0,u).indexOf("<script");if(q0!==-1){let b0=X.slice(0,q0),P0=X.slice(q0);X=b0+g+`
10834
+ </script>`;if(X.includes("</head>")){let u=X.indexOf("</head>"),q0=X.slice(0,u).indexOf("<script");if(q0!==-1){let D0=X.slice(0,q0),P0=X.slice(q0);X=D0+g+`
10835
10835
  `+P0}else X=X.replace("</head>",`${g}
10836
10836
  </head>`)}else if(X.includes("<body"))X=X.replace(/<body([^>]*)>/,`<body$1>
10837
10837
  ${g}`);else X=g+`
10838
- `+X}{let x=/<script\s+server\b[^>]*>/gi,g,u=[];while((g=x.exec(X))!==null){let s=g.index+g[0].length,q0=oU(X,s);if(q0===-1)continue;let b0=q0+9;while(b0<X.length&&/\s/.test(X[b0]))b0++;u.push({start:g.index,end:b0})}for(let s=u.length-1;s>=0;s--){let{start:q0,end:b0}=u[s];X=X.substring(0,q0)+X.substring(b0)}}let _0=a5(X,Y);if(_0.hasScoped)X=_0.html;let $0=Z.__stx_event_bindings||[],A0=!1,H0=[],S=/\s:[a-z][\w.-]*\s*=/.test(X),{scanScriptTags:v}=await Promise.resolve().then(() => (c3(),KY));for(let x of v(X,{skipAttrs:/\bserver\b|\bsrc\s*=|\bdata-stx-scoped\b|\bdata-stx-router\b|\btype\s*=\s*["'](?!(?:text\/javascript|application\/javascript|module)["'])[^"']*["']/}))H0.push({match:x.fullMatch,attrs:x.attrs,content:x.body});for(let{match:x,attrs:g,content:u}of H0){A0=!0;let s=u;r3(u,Y,J.strict);let q0=await _5(u,{eventBindings:$0,attrs:g,hasColonDirectives:S,templateContent:$,filePath:Y,projectRoot:process.cwd(),production:J.buildMode==="compile",serverData:k});X=X.replace(x,()=>q0)}if(A0)Z.__stx_event_bindings=[];return X}var g1="<!--PARENT_CONTENT_PLACEHOLDER-->";var Z$=y(()=>{x$();r5();R4();h8();p8();c8();I4();T4();t8();B5();JZ();QZ();m$();OZ();VZ();NZ();Z1();V5();r0();DZ();yZ();w2();T2();M3();d4();k2();p1();S2();R7();N0();C2();x2();h2();m2();C4();c3();R3();UY();s3();a3();T0();t7();s3();a3()});import V0 from"fs";import J0 from"path";import{matchRoute as R_,Router as cJ}from"stx-router";import{findErrorPage as I_,formatRoutes as D_,generateRouteManifest as E_,generateRouteTypes as k_,matchRoute as b_}from"stx-router";function N4($,Z={}){return new cJ($,Z).routes}Z$();import{createHash as Z_}from"crypto";function Y_($){try{return new Bun.Transpiler({loader:"js",minifyWhitespace:!0}).transformSync($).replace(/\}(var |let |const |function )/g,"};$1").trim()}catch{return $}}var J_=/<script\s+type="stx\/island"\s+data-stx-island="([^"]+)"([^>]*)>([\s\S]*?)<\/script>/g;function X_($){return Bun.hash($).toString(16)}function kJ($,Z={}){if(!$.includes('type="stx/island"'))return{html:$,chunks:[]};let Y=new Map,J=$.replace(J_,(X,G,K,q)=>{let W=q.trim();if(!W)return X;if(/\bdata-stx-src=/.test(K))return X;if(Z.minify)W=Y_(W);let z=X_(W);if(!Y.has(z))Y.set(z,W);let U=Z.integrity?` data-stx-integrity="sha384-${Z_("sha384").update(W).digest("base64")}"`:"";return`<script type="stx/island" data-stx-island="${G}" data-stx-src="/_stx/islands/${z}.js"${U}${K}></script>`}),Q=Array.from(Y,([X,G])=>({hash:X,code:G}));return{html:J,chunks:Q}}var Q_=new Set(["visible","idle"]);function bJ($){if(!$.includes("data-stx-src="))return $;let Z=new Map,Y=/data-stx-scope="([^"]+)"[^>]*?stx-hydrate="([^"]+)"/g,J;while((J=Y.exec($))!==null)Z.set(J[1],J[2]);let Q=new Set,X=/data-stx-island="([^"]+)"[^>]*?data-stx-src="([^"]+)"/g,G;while((G=X.exec($))!==null)if(Q_.has(Z.get(G[1])||""))Q.add(G[2]);let K=$.lastIndexOf("</head>");if(Q.size===0||K===-1)return $;let q=Array.from(Q).filter((W)=>!$.includes(`rel="prefetch" href="${W}"`)).map((W)=>`<link rel="prefetch" href="${W}" as="script">`).join("");if(!q)return $;return $.slice(0,K)+q+$.slice(K)}s1();x$();import{abortNavigation as Dw,clearMiddleware as SJ,createClientCookieManager as Ew,createMiddlewareContext as yJ,createRouteLocation as CJ,createServerCookieManager as kw,createStorageManager as bw,defineMiddleware as Sw,getMiddleware as yw,getMiddlewareNames as PJ,hasMiddleware as Cw,loadMiddlewareFromDirectory as vJ,navigateTo as Pw,registerMiddleware as vw,runMiddleware as xJ}from"stx-router";class fJ{cacheDir;cache=new Map;loaded=!1;constructor($){this.cacheDir=$}async load(){if(this.loaded)return;let $=J0.join(this.cacheDir,"build-cache.json");if(await Bun.file($).exists())try{let Z=JSON.parse(await Bun.file($).text());for(let[Y,J]of Object.entries(Z))this.cache.set(Y,J)}catch{}this.loaded=!0}async save(){await V0.promises.mkdir(this.cacheDir,{recursive:!0});let $=J0.join(this.cacheDir,"build-cache.json"),Z={};for(let[Y,J]of this.cache)Z[Y]=J;await Bun.write($,JSON.stringify(Z))}getHash($,Z){let Y=V0.statSync($),J=`${$}:${Y.mtimeMs}`;for(let X of Z)if(V0.existsSync(X)){let G=V0.statSync(X);J+=`:${X}:${G.mtimeMs}`}let Q=0;for(let X=0;X<J.length;X++){let G=J.charCodeAt(X);Q=(Q<<5)-Q+G,Q=Q&Q}return Math.abs(Q).toString(36)}get($,Z){let Y=this.cache.get($);if(!Y)return null;let J=this.getHash(Z,Y.dependencies??[]);if(Y.hash!==J)return this.cache.delete($),null;return Y.html}set($,Z,Y,J){let Q=this.getHash(Z,Y);this.cache.set($,{hash:Q,html:J,generatedAt:Date.now(),dependencies:Y})}}class gJ{cacheDir;constructor($){this.cacheDir=$}getFilePath($){let Z=$.replace(/[^a-zA-Z0-9]/g,"_")+".json";return J0.join(this.cacheDir,"isr",Z)}async get($){let Z=this.getFilePath($);if(!await Bun.file(Z).exists())return null;try{return JSON.parse(await Bun.file(Z).text())}catch{return null}}async set($,Z){let Y=this.getFilePath($);await V0.promises.mkdir(J0.dirname(Y),{recursive:!0}),await Bun.write(Y,JSON.stringify(Z))}async invalidate($){let Z=this.getFilePath($);if(await Bun.file(Z).exists())await V0.promises.unlink(Z)}async invalidatePattern($){let Z=J0.join(this.cacheDir,"isr");if(!V0.existsSync(Z))return;let Y=await V0.promises.readdir(Z);for(let J of Y){let Q=J.replace(/_/g,"/").replace(".json","");if($.test(Q))await V0.promises.unlink(J0.join(Z,J))}}async needsRevalidation($){let Z=await this.get($);if(!Z)return!0;return Date.now()>Z.revalidateAfter}}async function G_($){try{let Y=(await Bun.file($).text()).match(/<script\s+server\b[^>]*>([\s\S]*?)<\/script>/i);if(!Y)return null;let J=Y[1];if(!J.includes("getStaticPaths"))return null;let Q=J.match(/(?:export\s+)?(?:async\s+)?function\s+getStaticPaths\s*\([^)]*\)\s*\{([\s\S]*?)\n[\t ]*\}/);if(!Q)return null;return await Function(`
10838
+ `+X}{let x=/<script\s+server\b[^>]*>/gi,g,u=[];while((g=x.exec(X))!==null){let s=g.index+g[0].length,q0=oU(X,s);if(q0===-1)continue;let D0=q0+9;while(D0<X.length&&/\s/.test(X[D0]))D0++;u.push({start:g.index,end:D0}),x.lastIndex=D0}for(let s=u.length-1;s>=0;s--){let{start:q0,end:D0}=u[s];X=X.substring(0,q0)+X.substring(D0)}}let _0=a5(X,Y);if(_0.hasScoped)X=_0.html;let $0=Z.__stx_event_bindings||[],A0=!1,H0=[],S=/\s:[a-z][\w.-]*\s*=/.test(X),{scanScriptTags:v}=await Promise.resolve().then(() => (c3(),KY));for(let x of v(X,{skipAttrs:/\bserver\b|\bsrc\s*=|\bdata-stx-scoped\b|\bdata-stx-router\b|\btype\s*=\s*["'](?!(?:text\/javascript|application\/javascript|module)["'])[^"']*["']/}))H0.push({match:x.fullMatch,attrs:x.attrs,content:x.body});for(let{match:x,attrs:g,content:u}of H0){A0=!0;let s=u;r3(u,Y,J.strict);let q0=await _5(u,{eventBindings:$0,attrs:g,hasColonDirectives:S,templateContent:$,filePath:Y,projectRoot:process.cwd(),production:J.buildMode==="compile",serverData:k});X=X.replace(x,()=>q0)}if(A0)Z.__stx_event_bindings=[];return X}var g1="<!--PARENT_CONTENT_PLACEHOLDER-->";var Z$=y(()=>{x$();r5();R4();h8();p8();c8();I4();T4();t8();B5();JZ();QZ();m$();OZ();VZ();NZ();Z1();V5();r0();DZ();yZ();w2();T2();M3();d4();k2();p1();S2();R7();N0();C2();x2();h2();m2();C4();c3();R3();UY();s3();a3();T0();t7();s3();a3()});import V0 from"fs";import J0 from"path";import{matchRoute as R_,Router as cJ}from"stx-router";import{findErrorPage as I_,formatRoutes as D_,generateRouteManifest as E_,generateRouteTypes as k_,matchRoute as b_}from"stx-router";function N4($,Z={}){return new cJ($,Z).routes}Z$();import{createHash as Z_}from"crypto";function Y_($){try{return new Bun.Transpiler({loader:"js",minifyWhitespace:!0}).transformSync($).replace(/\}(var |let |const |function )/g,"};$1").trim()}catch{return $}}var J_=/<script\s+type="stx\/island"\s+data-stx-island="([^"]+)"([^>]*)>([\s\S]*?)<\/script>/g;function X_($){return Bun.hash($).toString(16)}function kJ($,Z={}){if(!$.includes('type="stx/island"'))return{html:$,chunks:[]};let Y=new Map,J=$.replace(J_,(X,G,K,q)=>{let W=q.trim();if(!W)return X;if(/\bdata-stx-src=/.test(K))return X;if(Z.minify)W=Y_(W);let z=X_(W);if(!Y.has(z))Y.set(z,W);let U=Z.integrity?` data-stx-integrity="sha384-${Z_("sha384").update(W).digest("base64")}"`:"";return`<script type="stx/island" data-stx-island="${G}" data-stx-src="/_stx/islands/${z}.js"${U}${K}></script>`}),Q=Array.from(Y,([X,G])=>({hash:X,code:G}));return{html:J,chunks:Q}}var Q_=new Set(["visible","idle"]);function bJ($){if(!$.includes("data-stx-src="))return $;let Z=new Map,Y=/data-stx-scope="([^"]+)"[^>]*?stx-hydrate="([^"]+)"/g,J;while((J=Y.exec($))!==null)Z.set(J[1],J[2]);let Q=new Set,X=/data-stx-island="([^"]+)"[^>]*?data-stx-src="([^"]+)"/g,G;while((G=X.exec($))!==null)if(Q_.has(Z.get(G[1])||""))Q.add(G[2]);let K=$.lastIndexOf("</head>");if(Q.size===0||K===-1)return $;let q=Array.from(Q).filter((W)=>!$.includes(`rel="prefetch" href="${W}"`)).map((W)=>`<link rel="prefetch" href="${W}" as="script">`).join("");if(!q)return $;return $.slice(0,K)+q+$.slice(K)}s1();x$();import{abortNavigation as Dw,clearMiddleware as SJ,createClientCookieManager as Ew,createMiddlewareContext as yJ,createRouteLocation as CJ,createServerCookieManager as kw,createStorageManager as bw,defineMiddleware as Sw,getMiddleware as yw,getMiddlewareNames as PJ,hasMiddleware as Cw,loadMiddlewareFromDirectory as vJ,navigateTo as Pw,registerMiddleware as vw,runMiddleware as xJ}from"stx-router";class fJ{cacheDir;cache=new Map;loaded=!1;constructor($){this.cacheDir=$}async load(){if(this.loaded)return;let $=J0.join(this.cacheDir,"build-cache.json");if(await Bun.file($).exists())try{let Z=JSON.parse(await Bun.file($).text());for(let[Y,J]of Object.entries(Z))this.cache.set(Y,J)}catch{}this.loaded=!0}async save(){await V0.promises.mkdir(this.cacheDir,{recursive:!0});let $=J0.join(this.cacheDir,"build-cache.json"),Z={};for(let[Y,J]of this.cache)Z[Y]=J;await Bun.write($,JSON.stringify(Z))}getHash($,Z){let Y=V0.statSync($),J=`${$}:${Y.mtimeMs}`;for(let X of Z)if(V0.existsSync(X)){let G=V0.statSync(X);J+=`:${X}:${G.mtimeMs}`}let Q=0;for(let X=0;X<J.length;X++){let G=J.charCodeAt(X);Q=(Q<<5)-Q+G,Q=Q&Q}return Math.abs(Q).toString(36)}get($,Z){let Y=this.cache.get($);if(!Y)return null;let J=this.getHash(Z,Y.dependencies??[]);if(Y.hash!==J)return this.cache.delete($),null;return Y.html}set($,Z,Y,J){let Q=this.getHash(Z,Y);this.cache.set($,{hash:Q,html:J,generatedAt:Date.now(),dependencies:Y})}}class gJ{cacheDir;constructor($){this.cacheDir=$}getFilePath($){let Z=$.replace(/[^a-zA-Z0-9]/g,"_")+".json";return J0.join(this.cacheDir,"isr",Z)}async get($){let Z=this.getFilePath($);if(!await Bun.file(Z).exists())return null;try{return JSON.parse(await Bun.file(Z).text())}catch{return null}}async set($,Z){let Y=this.getFilePath($);await V0.promises.mkdir(J0.dirname(Y),{recursive:!0}),await Bun.write(Y,JSON.stringify(Z))}async invalidate($){let Z=this.getFilePath($);if(await Bun.file(Z).exists())await V0.promises.unlink(Z)}async invalidatePattern($){let Z=J0.join(this.cacheDir,"isr");if(!V0.existsSync(Z))return;let Y=await V0.promises.readdir(Z);for(let J of Y){let Q=J.replace(/_/g,"/").replace(".json","");if($.test(Q))await V0.promises.unlink(J0.join(Z,J))}}async needsRevalidation($){let Z=await this.get($);if(!Z)return!0;return Date.now()>Z.revalidateAfter}}async function G_($){try{let Y=(await Bun.file($).text()).match(/<script\s+server\b[^>]*>([\s\S]*?)<\/script>/i);if(!Y)return null;let J=Y[1];if(!J.includes("getStaticPaths"))return null;let Q=J.match(/(?:export\s+)?(?:async\s+)?function\s+getStaticPaths\s*\([^)]*\)\s*\{([\s\S]*?)\n[\t ]*\}/);if(!Q)return null;return await Function(`
10839
10839
  return (async function getStaticPaths() {
10840
10840
  ${Q[1]}
10841
10841
  })()