@devwaren/vanilla-ts 1.0.23 → 1.0.25

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.
package/dist/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var Je=Object.create;var V=Object.defineProperty;var Ze=Object.getOwnPropertyDescriptor;var tn=Object.getOwnPropertyNames;var en=Object.getPrototypeOf,nn=Object.prototype.hasOwnProperty;var ht=(n,t)=>()=>(n&&(t=n(n=0)),t);var te=(n,t)=>{for(var e in t)V(n,e,{get:t[e],enumerable:!0})},ee=(n,t,e,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of tn(t))!nn.call(n,r)&&r!==e&&V(n,r,{get:()=>t[r],enumerable:!(s=Ze(t,r))||s.enumerable});return n};var P=(n,t,e)=>(e=n!=null?Je(en(n)):{},ee(t||!n||!n.__esModule?V(e,"default",{value:n,enumerable:!0}):e,n)),rn=n=>ee(V({},"__esModule",{value:!0}),n);function xe(n,t={}){let e=t.entryType||t.type;if(e==="both"&&(e=R.FILE_DIR_TYPE),e&&(t.type=e),n){if(typeof n!="string")throw new TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");if(e&&!Pe.includes(e))throw new Error(`readdirp: Invalid type passed. Use one of ${Pe.join(", ")}`)}else throw new Error("readdirp: root argument is required. Usage: readdirp(root, options)");return t.root=n,new Ut(t)}var A,be,D,R,qt,Le,Tn,Pe,Sn,_n,Pn,vn,ve,Re,Ut,Me=ht(()=>{"use strict";A=require("fs/promises"),be=require("stream"),D=require("path"),R={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},qt={root:".",fileFilter:n=>!0,directoryFilter:n=>!0,type:R.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(qt);Le="READDIRP_RECURSIVE_ERROR",Tn=new Set(["ENOENT","EPERM","EACCES","ELOOP",Le]),Pe=[R.DIR_TYPE,R.EVERYTHING_TYPE,R.FILE_DIR_TYPE,R.FILE_TYPE],Sn=new Set([R.DIR_TYPE,R.EVERYTHING_TYPE,R.FILE_DIR_TYPE]),_n=new Set([R.EVERYTHING_TYPE,R.FILE_DIR_TYPE,R.FILE_TYPE]),Pn=n=>Tn.has(n.code),vn=process.platform==="win32",ve=n=>!0,Re=n=>{if(n===void 0)return ve;if(typeof n=="function")return n;if(typeof n=="string"){let t=n.trim();return e=>e.basename===t}if(Array.isArray(n)){let t=n.map(e=>e.trim());return e=>t.some(s=>e.basename===s)}return ve},Ut=class extends be.Readable{constructor(t={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:t.highWaterMark});let e={...qt,...t},{root:s,type:r}=e;this._fileFilter=Re(e.fileFilter),this._directoryFilter=Re(e.directoryFilter);let i=e.lstat?A.lstat:A.stat;vn?this._stat=a=>i(a,{bigint:!0}):this._stat=i,this._maxDepth=e.depth??qt.depth,this._wantsDir=r?Sn.has(r):!1,this._wantsFile=r?_n.has(r):!1,this._wantsEverything=r===R.EVERYTHING_TYPE,this._root=(0,D.resolve)(s),this._isDirent=!e.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(s,1)],this.reading=!1,this.parent=void 0}async _read(t){if(!this.reading){this.reading=!0;try{for(;!this.destroyed&&t>0;){let e=this.parent,s=e&&e.files;if(s&&s.length>0){let{path:r,depth:i}=e,a=s.splice(0,t).map(c=>this._formatEntry(c,r)),o=await Promise.all(a);for(let c of o){if(!c)continue;if(this.destroyed)return;let u=await this._getEntryType(c);u==="directory"&&this._directoryFilter(c)?(i<=this._maxDepth&&this.parents.push(this._exploreDir(c.fullPath,i+1)),this._wantsDir&&(this.push(c),t--)):(u==="file"||this._includeAsFile(c))&&this._fileFilter(c)&&this._wantsFile&&(this.push(c),t--)}}else{let r=this.parents.pop();if(!r){this.push(null);break}if(this.parent=await r,this.destroyed)return}}}catch(e){this.destroy(e)}finally{this.reading=!1}}}async _exploreDir(t,e){let s;try{s=await(0,A.readdir)(t,this._rdOptions)}catch(r){this._onError(r)}return{files:s,depth:e,path:t}}async _formatEntry(t,e){let s,r=this._isDirent?t.name:t;try{let i=(0,D.resolve)((0,D.join)(e,r));s={path:(0,D.relative)(this._root,i),fullPath:i,basename:r},s[this._statsProp]=this._isDirent?t:await this._stat(i)}catch(i){this._onError(i);return}return s}_onError(t){Pn(t)&&!this.destroyed?this.emit("warn",t):this.destroy(t)}async _getEntryType(t){if(!t&&this._statsProp in t)return"";let e=t[this._statsProp];if(e.isFile())return"file";if(e.isDirectory())return"directory";if(e&&e.isSymbolicLink()){let s=t.fullPath;try{let r=await(0,A.realpath)(s),i=await(0,A.lstat)(r);if(i.isFile())return"file";if(i.isDirectory()){let a=r.length;if(s.startsWith(r)&&s.substr(a,1)===D.sep){let o=new Error(`Circular symlink detected: "${s}" points to "${r}"`);return o.code=Le,this._onError(o)}return"directory"}}catch(r){return this._onError(r),""}}}_includeAsFile(t){let e=t&&t[this._statsProp];return e&&this._wantsEverything&&!e.isDirectory()}}});function Ae(n,t,e,s,r){let i=(a,o)=>{e(n),r(a,o,{watchedPath:n}),o&&n!==o&&it(g.resolve(n,o),H,g.join(n,o))};try{return(0,O.watch)(n,{persistent:t.persistent},i)}catch(a){s(a);return}}var O,L,g,De,Rn,Bt,Ce,at,ct,Gt,bn,Ln,xn,Fe,w,b,Mn,An,H,rt,z,Dn,Cn,Fn,Kt,Y,Hn,K,He,st,it,On,Yt,In,ot,Oe=ht(()=>{"use strict";O=require("fs"),L=require("fs/promises"),g=P(require("path"),1),De=require("os"),Rn="data",Bt="end",Ce="close",at=()=>{},ct=process.platform,Gt=ct==="win32",bn=ct==="darwin",Ln=ct==="linux",xn=ct==="freebsd",Fe=(0,De.type)()==="OS400",w={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},b=w,Mn="watch",An={lstat:L.lstat,stat:L.stat},H="listeners",rt="errHandlers",z="rawEmitters",Dn=[H,rt,z],Cn=new Set(["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]),Fn=n=>Cn.has(g.extname(n).slice(1).toLowerCase()),Kt=(n,t)=>{n instanceof Set?n.forEach(t):t(n)},Y=(n,t,e)=>{let s=n[t];s instanceof Set||(n[t]=s=new Set([s])),s.add(e)},Hn=n=>t=>{let e=n[t];e instanceof Set?e.clear():delete n[t]},K=(n,t,e)=>{let s=n[t];s instanceof Set?s.delete(e):s===e&&delete n[t]},He=n=>n instanceof Set?n.size===0:!n,st=new Map;it=(n,t,e,s,r)=>{let i=st.get(n);i&&Kt(i[t],a=>{a(e,s,r)})},On=(n,t,e,s)=>{let{listener:r,errHandler:i,rawEmitter:a}=s,o=st.get(t),c;if(!e.persistent)return c=Ae(n,e,r,i,a),c?c.close.bind(c):void 0;if(o)Y(o,H,r),Y(o,rt,i),Y(o,z,a);else{if(c=Ae(n,e,it.bind(null,t,H),i,it.bind(null,t,z)),!c)return;c.on(b.ERROR,async u=>{let l=it.bind(null,t,rt);if(o&&(o.watcherUnusable=!0),Gt&&u.code==="EPERM")try{await(await(0,L.open)(n,"r")).close(),l(u)}catch{}else l(u)}),o={listeners:r,errHandlers:i,rawEmitters:a,watcher:c},st.set(t,o)}return()=>{K(o,H,r),K(o,rt,i),K(o,z,a),He(o.listeners)&&(o.watcher.close(),st.delete(t),Dn.forEach(Hn(o)),o.watcher=void 0,Object.freeze(o))}},Yt=new Map,In=(n,t,e,s)=>{let{listener:r,rawEmitter:i}=s,a=Yt.get(t),o=a&&a.options;return o&&(o.persistent<e.persistent||o.interval>e.interval)&&((0,O.unwatchFile)(t),a=void 0),a?(Y(a,H,r),Y(a,z,i)):(a={listeners:r,rawEmitters:i,options:e,watcher:(0,O.watchFile)(t,e,(c,u)=>{Kt(a.rawEmitters,d=>{d(b.CHANGE,t,{curr:c,prev:u})});let l=c.mtimeMs;(c.size!==u.size||l>u.mtimeMs||l===0)&&Kt(a.listeners,d=>d(n,c))})},Yt.set(t,a)),()=>{K(a,H,r),K(a,z,i),He(a.listeners)&&(Yt.delete(t),(0,O.unwatchFile)(t),a.options=a.watcher=void 0,Object.freeze(a))}},ot=class{constructor(t){this.fsw=t,this._boundHandleError=e=>t._handleError(e)}_watchWithNodeFs(t,e){let s=this.fsw.options,r=g.dirname(t),i=g.basename(t);this.fsw._getWatchedDir(r).add(i);let o=g.resolve(t),c={persistent:s.persistent};e||(e=at);let u;if(s.usePolling){let l=s.interval!==s.binaryInterval;c.interval=l&&Fn(i)?s.binaryInterval:s.interval,u=In(t,o,c,{listener:e,rawEmitter:this.fsw._emitRaw})}else u=On(t,o,c,{listener:e,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return u}_handleFile(t,e,s){if(this.fsw.closed)return;let r=g.dirname(t),i=g.basename(t),a=this.fsw._getWatchedDir(r),o=e;if(a.has(i))return;let c=async(l,d)=>{if(this.fsw._throttle(Mn,t,5)){if(!d||d.mtimeMs===0)try{let f=await(0,L.stat)(t);if(this.fsw.closed)return;let h=f.atimeMs,T=f.mtimeMs;if((!h||h<=T||T!==o.mtimeMs)&&this.fsw._emit(b.CHANGE,t,f),(bn||Ln||xn)&&o.ino!==f.ino){this.fsw._closeFile(l),o=f;let v=this._watchWithNodeFs(t,c);v&&this.fsw._addPathCloser(l,v)}else o=f}catch{this.fsw._remove(r,i)}else if(a.has(i)){let f=d.atimeMs,h=d.mtimeMs;(!f||f<=h||h!==o.mtimeMs)&&this.fsw._emit(b.CHANGE,t,d),o=d}}},u=this._watchWithNodeFs(t,c);if(!(s&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(t)){if(!this.fsw._throttle(b.ADD,t,0))return;this.fsw._emit(b.ADD,t,e)}return u}async _handleSymlink(t,e,s,r){if(this.fsw.closed)return;let i=t.fullPath,a=this.fsw._getWatchedDir(e);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let o;try{o=await(0,L.realpath)(s)}catch{return this.fsw._emitReady(),!0}return this.fsw.closed?void 0:(a.has(r)?this.fsw._symlinkPaths.get(i)!==o&&(this.fsw._symlinkPaths.set(i,o),this.fsw._emit(b.CHANGE,s,t.stats)):(a.add(r),this.fsw._symlinkPaths.set(i,o),this.fsw._emit(b.ADD,s,t.stats)),this.fsw._emitReady(),!0)}if(this.fsw._symlinkPaths.has(i))return!0;this.fsw._symlinkPaths.set(i,!0)}_handleRead(t,e,s,r,i,a,o){if(t=g.join(t,""),o=this.fsw._throttle("readdir",t,1e3),!o)return;let c=this.fsw._getWatchedDir(s.path),u=new Set,l=this.fsw._readdirp(t,{fileFilter:d=>s.filterPath(d),directoryFilter:d=>s.filterDir(d)});if(l)return l.on(Rn,async d=>{if(this.fsw.closed){l=void 0;return}let f=d.path,h=g.join(t,f);if(u.add(f),!(d.stats.isSymbolicLink()&&await this._handleSymlink(d,t,h,f))){if(this.fsw.closed){l=void 0;return}(f===r||!r&&!c.has(f))&&(this.fsw._incrReadyCount(),h=g.join(i,g.relative(i,h)),this._addToNodeFs(h,e,s,a+1))}}).on(b.ERROR,this._boundHandleError),new Promise((d,f)=>{if(!l)return f();l.once(Bt,()=>{if(this.fsw.closed){l=void 0;return}let h=o?o.clear():!1;d(void 0),c.getChildren().filter(T=>T!==t&&!u.has(T)).forEach(T=>{this.fsw._remove(t,T)}),l=void 0,h&&this._handleRead(t,!1,s,r,i,a,o)})})}async _handleDir(t,e,s,r,i,a,o){let c=this.fsw._getWatchedDir(g.dirname(t)),u=c.has(g.basename(t));!(s&&this.fsw.options.ignoreInitial)&&!i&&!u&&this.fsw._emit(b.ADD_DIR,t,e),c.add(g.basename(t)),this.fsw._getWatchedDir(t);let l,d,f=this.fsw.options.depth;if((f==null||r<=f)&&!this.fsw._symlinkPaths.has(o)){if(!i&&(await this._handleRead(t,s,a,i,t,r,l),this.fsw.closed))return;d=this._watchWithNodeFs(t,(h,T)=>{T&&T.mtimeMs===0||this._handleRead(h,!1,a,i,t,r,l)})}return d}async _addToNodeFs(t,e,s,r,i){let a=this.fsw._emitReady;if(this.fsw._isIgnored(t)||this.fsw.closed)return a(),!1;let o=this.fsw._getWatchHelpers(t);s&&(o.filterPath=c=>s.filterPath(c),o.filterDir=c=>s.filterDir(c));try{let c=await An[o.statMethod](o.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(o.watchPath,c))return a(),!1;let u=this.fsw.options.followSymlinks,l;if(c.isDirectory()){let d=g.resolve(t),f=u?await(0,L.realpath)(t):t;if(this.fsw.closed||(l=await this._handleDir(o.watchPath,c,e,r,i,o,f),this.fsw.closed))return;d!==f&&f!==void 0&&this.fsw._symlinkPaths.set(d,f)}else if(c.isSymbolicLink()){let d=u?await(0,L.realpath)(t):t;if(this.fsw.closed)return;let f=g.dirname(o.watchPath);if(this.fsw._getWatchedDir(f).add(o.watchPath),this.fsw._emit(b.ADD,o.watchPath,c),l=await this._handleDir(f,c,e,r,t,o,d),this.fsw.closed)return;d!==void 0&&this.fsw._symlinkPaths.set(g.resolve(t),d)}else l=this._handleFile(o.watchPath,c,e);return a(),l&&this.fsw._addPathCloser(t,l),!1}catch(c){if(this.fsw._handleError(c))return a(),t}}}});var Ke={};te(Ke,{FSWatcher:()=>B,WatchHelper:()=>ut,default:()=>Qn,watch:()=>Ye});function lt(n){return Array.isArray(n)?n:[n]}function qn(n){return typeof n=="function"?n:typeof n=="string"?t=>n===t:n instanceof RegExp?t=>n.test(t):typeof n=="object"&&n!==null?t=>{if(n.path===t)return!0;if(n.recursive){let e=m.relative(n.path,t);return e?!e.startsWith("..")&&!m.isAbsolute(e):!1}return!1}:()=>!1}function Un(n){if(typeof n!="string")throw new Error("string expected");n=m.normalize(n),n=n.replace(/\\/g,"/");let t=!1;n.startsWith("//")&&(t=!0);let e=/\/\//;for(;n.match(e);)n=n.replace(e,"/");return t&&(n="/"+n),n}function ke(n,t,e){let s=Un(t);for(let r=0;r<n.length;r++){let i=n[r];if(i(s,e))return!0}return!1}function Yn(n,t){if(n==null)throw new TypeError("anymatch: specify first argument");let s=lt(n).map(r=>qn(r));return t==null?(r,i)=>ke(s,r,i):ke(s,t)}function Ye(n,t={}){let e=new B(t);return e.add(n),e}var $e,dt,je,m,Vt,kn,qe,Nn,zn,Wn,Ie,$n,jn,Qt,Ne,ze,Ue,We,Kn,Bn,Xt,Gn,Vn,ut,B,Qn,Be=ht(()=>{"use strict";$e=require("fs"),dt=require("fs/promises"),je=require("events"),m=P(require("path"),1);Me();Oe();Vt="/",kn="//",qe=".",Nn="..",zn="string",Wn=/\\/g,Ie=/\/\//,$n=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,jn=/^\.[/\\]/;Qt=n=>typeof n=="object"&&n!==null&&!(n instanceof RegExp);Ne=n=>{let t=lt(n).flat();if(!t.every(e=>typeof e===zn))throw new TypeError(`Non-string provided as watch path: ${t}`);return t.map(Ue)},ze=n=>{let t=n.replace(Wn,Vt),e=!1;for(t.startsWith(kn)&&(e=!0);t.match(Ie);)t=t.replace(Ie,Vt);return e&&(t=Vt+t),t},Ue=n=>ze(m.normalize(ze(n))),We=(n="")=>t=>typeof t=="string"?Ue(m.isAbsolute(t)?t:m.join(n,t)):t,Kn=(n,t)=>m.isAbsolute(n)?n:m.join(t,n),Bn=Object.freeze(new Set),Xt=class{constructor(t,e){this.path=t,this._removeWatcher=e,this.items=new Set}add(t){let{items:e}=this;e&&t!==qe&&t!==Nn&&e.add(t)}async remove(t){let{items:e}=this;if(!e||(e.delete(t),e.size>0))return;let s=this.path;try{await(0,dt.readdir)(s)}catch{this._removeWatcher&&this._removeWatcher(m.dirname(s),m.basename(s))}}has(t){let{items:e}=this;if(e)return e.has(t)}getChildren(){let{items:t}=this;return t?[...t.values()]:[]}dispose(){this.items.clear(),this.path="",this._removeWatcher=at,this.items=Bn,Object.freeze(this)}},Gn="stat",Vn="lstat",ut=class{constructor(t,e,s){this.fsw=s;let r=t;this.path=t=t.replace(jn,""),this.watchPath=r,this.fullWatchPath=m.resolve(r),this.dirParts=[],this.dirParts.forEach(i=>{i.length>1&&i.pop()}),this.followSymlinks=e,this.statMethod=e?Gn:Vn}entryPath(t){return m.join(this.watchPath,m.relative(this.watchPath,t.fullPath))}filterPath(t){let{stats:e}=t;if(e&&e.isSymbolicLink())return this.filterDir(t);let s=this.entryPath(t);return this.fsw._isntIgnored(s,e)&&this.fsw._hasReadPermissions(e)}filterDir(t){return this.fsw._isntIgnored(this.entryPath(t),t.stats)}},B=class extends je.EventEmitter{constructor(t={}){super(),this.closed=!1,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._streams=new Set,this._symlinkPaths=new Map,this._watched=new Map,this._pendingWrites=new Map,this._pendingUnlinks=new Map,this._readyCount=0,this._readyEmitted=!1;let e=t.awaitWriteFinish,s={stabilityThreshold:2e3,pollInterval:100},r={persistent:!0,ignoreInitial:!1,ignorePermissionErrors:!1,interval:100,binaryInterval:300,followSymlinks:!0,usePolling:!1,atomic:!0,...t,ignored:t.ignored?lt(t.ignored):lt([]),awaitWriteFinish:e===!0?s:typeof e=="object"?{...s,...e}:!1};Fe&&(r.usePolling=!0),r.atomic===void 0&&(r.atomic=!r.usePolling);let i=process.env.CHOKIDAR_USEPOLLING;if(i!==void 0){let c=i.toLowerCase();c==="false"||c==="0"?r.usePolling=!1:c==="true"||c==="1"?r.usePolling=!0:r.usePolling=!!c}let a=process.env.CHOKIDAR_INTERVAL;a&&(r.interval=Number.parseInt(a,10));let o=0;this._emitReady=()=>{o++,o>=this._readyCount&&(this._emitReady=at,this._readyEmitted=!0,process.nextTick(()=>this.emit(w.READY)))},this._emitRaw=(...c)=>this.emit(w.RAW,...c),this._boundRemove=this._remove.bind(this),this.options=r,this._nodeFsHandler=new ot(this),Object.freeze(r)}_addIgnoredPath(t){if(Qt(t)){for(let e of this._ignoredPaths)if(Qt(e)&&e.path===t.path&&e.recursive===t.recursive)return}this._ignoredPaths.add(t)}_removeIgnoredPath(t){if(this._ignoredPaths.delete(t),typeof t=="string")for(let e of this._ignoredPaths)Qt(e)&&e.path===t&&this._ignoredPaths.delete(e)}add(t,e,s){let{cwd:r}=this.options;this.closed=!1,this._closePromise=void 0;let i=Ne(t);return r&&(i=i.map(a=>Kn(a,r))),i.forEach(a=>{this._removeIgnoredPath(a)}),this._userIgnored=void 0,this._readyCount||(this._readyCount=0),this._readyCount+=i.length,Promise.all(i.map(async a=>{let o=await this._nodeFsHandler._addToNodeFs(a,!s,void 0,0,e);return o&&this._emitReady(),o})).then(a=>{this.closed||a.forEach(o=>{o&&this.add(m.dirname(o),m.basename(e||o))})}),this}unwatch(t){if(this.closed)return this;let e=Ne(t),{cwd:s}=this.options;return e.forEach(r=>{!m.isAbsolute(r)&&!this._closers.has(r)&&(s&&(r=m.join(s,r)),r=m.resolve(r)),this._closePath(r),this._addIgnoredPath(r),this._watched.has(r)&&this._addIgnoredPath({path:r,recursive:!0}),this._userIgnored=void 0}),this}close(){if(this._closePromise)return this._closePromise;this.closed=!0,this.removeAllListeners();let t=[];return this._closers.forEach(e=>e.forEach(s=>{let r=s();r instanceof Promise&&t.push(r)})),this._streams.forEach(e=>e.destroy()),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach(e=>e.dispose()),this._closers.clear(),this._watched.clear(),this._streams.clear(),this._symlinkPaths.clear(),this._throttled.clear(),this._closePromise=t.length?Promise.all(t).then(()=>{}):Promise.resolve(),this._closePromise}getWatched(){let t={};return this._watched.forEach((e,s)=>{let i=(this.options.cwd?m.relative(this.options.cwd,s):s)||qe;t[i]=e.getChildren().sort()}),t}emitWithAll(t,e){this.emit(t,...e),t!==w.ERROR&&this.emit(w.ALL,t,...e)}async _emit(t,e,s){if(this.closed)return;let r=this.options;Gt&&(e=m.normalize(e)),r.cwd&&(e=m.relative(r.cwd,e));let i=[e];s!=null&&i.push(s);let a=r.awaitWriteFinish,o;if(a&&(o=this._pendingWrites.get(e)))return o.lastChange=new Date,this;if(r.atomic){if(t===w.UNLINK)return this._pendingUnlinks.set(e,[t,...i]),setTimeout(()=>{this._pendingUnlinks.forEach((c,u)=>{this.emit(...c),this.emit(w.ALL,...c),this._pendingUnlinks.delete(u)})},typeof r.atomic=="number"?r.atomic:100),this;t===w.ADD&&this._pendingUnlinks.has(e)&&(t=w.CHANGE,this._pendingUnlinks.delete(e))}if(a&&(t===w.ADD||t===w.CHANGE)&&this._readyEmitted){let c=(u,l)=>{u?(t=w.ERROR,i[0]=u,this.emitWithAll(t,i)):l&&(i.length>1?i[1]=l:i.push(l),this.emitWithAll(t,i))};return this._awaitWriteFinish(e,a.stabilityThreshold,t,c),this}if(t===w.CHANGE&&!this._throttle(w.CHANGE,e,50))return this;if(r.alwaysStat&&s===void 0&&(t===w.ADD||t===w.ADD_DIR||t===w.CHANGE)){let c=r.cwd?m.join(r.cwd,e):e,u;try{u=await(0,dt.stat)(c)}catch{}if(!u||this.closed)return;i.push(u)}return this.emitWithAll(t,i),this}_handleError(t){let e=t&&t.code;return t&&e!=="ENOENT"&&e!=="ENOTDIR"&&(!this.options.ignorePermissionErrors||e!=="EPERM"&&e!=="EACCES")&&this.emit(w.ERROR,t),t||this.closed}_throttle(t,e,s){this._throttled.has(t)||this._throttled.set(t,new Map);let r=this._throttled.get(t);if(!r)throw new Error("invalid throttle");let i=r.get(e);if(i)return i.count++,!1;let a,o=()=>{let u=r.get(e),l=u?u.count:0;return r.delete(e),clearTimeout(a),u&&clearTimeout(u.timeoutObject),l};a=setTimeout(o,s);let c={timeoutObject:a,clear:o,count:0};return r.set(e,c),c}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(t,e,s,r){let i=this.options.awaitWriteFinish;if(typeof i!="object")return;let a=i.pollInterval,o,c=t;this.options.cwd&&!m.isAbsolute(t)&&(c=m.join(this.options.cwd,t));let u=new Date,l=this._pendingWrites;function d(f){(0,$e.stat)(c,(h,T)=>{if(h||!l.has(t)){h&&h.code!=="ENOENT"&&r(h);return}let v=Number(new Date);f&&T.size!==f.size&&(l.get(t).lastChange=v);let I=l.get(t);v-I.lastChange>=e?(l.delete(t),r(void 0,T)):o=setTimeout(d,a,T)})}l.has(t)||(l.set(t,{lastChange:u,cancelWait:()=>(l.delete(t),clearTimeout(o),s)}),o=setTimeout(d,a))}_isIgnored(t,e){if(this.options.atomic&&$n.test(t))return!0;if(!this._userIgnored){let{cwd:s}=this.options,i=(this.options.ignored||[]).map(We(s)),o=[...[...this._ignoredPaths].map(We(s)),...i];this._userIgnored=Yn(o,void 0)}return this._userIgnored(t,e)}_isntIgnored(t,e){return!this._isIgnored(t,e)}_getWatchHelpers(t){return new ut(t,this.options.followSymlinks,this)}_getWatchedDir(t){let e=m.resolve(t);return this._watched.has(e)||this._watched.set(e,new Xt(e,this._boundRemove)),this._watched.get(e)}_hasReadPermissions(t){return this.options.ignorePermissionErrors?!0:!!(Number(t.mode)&256)}_remove(t,e,s){let r=m.join(t,e),i=m.resolve(r);if(s=s??(this._watched.has(r)||this._watched.has(i)),!this._throttle("remove",r,100))return;!s&&this._watched.size===1&&this.add(t,e,!0),this._getWatchedDir(r).getChildren().forEach(f=>this._remove(r,f));let c=this._getWatchedDir(t),u=c.has(e);c.remove(e),this._symlinkPaths.has(i)&&this._symlinkPaths.delete(i);let l=r;if(this.options.cwd&&(l=m.relative(this.options.cwd,r)),this.options.awaitWriteFinish&&this._pendingWrites.has(l)&&this._pendingWrites.get(l).cancelWait()===w.ADD)return;this._watched.delete(r),this._watched.delete(i);let d=s?w.UNLINK_DIR:w.UNLINK;u&&!this._isIgnored(r)&&this._emit(d,r),this._closePath(r)}_closePath(t){this._closeFile(t);let e=m.dirname(t);this._getWatchedDir(e).remove(m.basename(t))}_closeFile(t){let e=this._closers.get(t);e&&(e.forEach(s=>s()),this._closers.delete(t))}_addPathCloser(t,e){if(!e)return;let s=this._closers.get(t);s||(s=[],this._closers.set(t,s)),s.push(e)}_readdirp(t,e){if(this.closed)return;let s={type:w.ALL,alwaysStat:!0,lstat:!0,...e,depth:0},r=xe(t,s);return this._streams.add(r),r.once(Ce,()=>{r=void 0}),r.once(Bt,()=>{r&&(this._streams.delete(r),r=void 0)}),r}};Qn={watch:Ye,FSWatcher:B}});var Xn={};te(Xn,{TSFilebasedRouter:()=>Ge,TSRouter:()=>nt,createClientFunc:()=>ie,createSignal:()=>zt,createTSServerFunc:()=>se,html:()=>pt,initializeRoute:()=>Ve,loadPyFiles:()=>Ht,mapper:()=>re,renderChildRoutes:()=>Ct,useAnchor:()=>q,useAnchorSingle:()=>bt,useInitialDOM:()=>vt,useTSAuth:()=>Mt,useTSCollection:()=>xt,useTSComponent:()=>j,useTSElementEach:()=>Z,useTSElements:()=>_t,useTSEvent:()=>wt,useTSEventAll:()=>Tt,useTSExtractParams:()=>Et,useTSLazy:()=>Ot,useTSMetaData:()=>Lt,useTSNavigate:()=>At,useTSNoReload:()=>Nt,useTSOutlet:()=>Dt,useTSParams:()=>$,useTSPurifier:()=>yt,useTSQuery:()=>et,useTSReactor:()=>Wt,useTSSSRHydration:()=>It,useTSSelect:()=>N,useTSloadBrython:()=>Ft});module.exports=rn(Xn);var ne=P(require("dompurify"),1),mt=null;function sn(){return typeof window>"u"?null:(mt||(mt=(0,ne.default)(window)),mt)}var on=["div","span","p","a","button","ul","li","img","input","form","label","h1","h2","h3","h4","h5","h6","section","main","article","svg","path","circle","rect","line","polyline","polygon","g"],an=["class","id","href","src","alt","title","type","value","name","placeholder","target","rel","data-click","data-change","data-select","data-effect","data-hover","data-submit","data-key","data-event","data-component","data-stagger","data-input"];function cn(n){return/^(https?:\/\/|\/|#)/i.test(n.trim())}function ln(n){if(typeof window>"u")return n;let t=document.createElement("template");return t.innerHTML=n,t.content.querySelectorAll("*").forEach(e=>{[...e.attributes].forEach(s=>{let r=s.name.toLowerCase();if(r.startsWith("on")||r.startsWith("xlink")||r.startsWith("xml")){e.removeAttribute(s.name);return}(r==="href"||r==="src")&&!cn(s.value)&&e.setAttribute(r,"#")}),e.tagName==="A"&&e.getAttribute("target")==="_blank"&&e.setAttribute("rel","noopener noreferrer")}),t.innerHTML}function pt(n,...t){let e=sn(),s=n.reduce((i,a,o)=>{let c=o<t.length?String(t[o]??""):"";return i+a+c},"");if(!e)return s;let r=e.sanitize(s,{ALLOWED_TAGS:on,ALLOWED_ATTR:an,RETURN_DOM:!1});return ln(r)}var re=(n,t)=>n.reduce((e,s,r)=>e+t(s,r),"");function se(n){return n}function ie(n){return new Proxy({},{get(t,e){return async s=>n(e,s)}})}var gt=P(require("dompurify"),1),yt=(n,t)=>{let s={...{ADD_TAGS:["my-custom-tag"]},...t};return typeof n=="string"?gt.default.sanitize(n,s):gt.default.sanitize(n.innerHTML,s)};var wt=(n,t,e)=>{if(!(typeof window>"u"||typeof document>"u"))if(typeof n=="string"){let s=document.getElementById(n);s?s.addEventListener(t,e):console.warn(`Element with id '${n}' not found.`)}else n instanceof HTMLElement?n.addEventListener(t,e):n===document?document.addEventListener(t,e):console.warn("Invalid target parameter provided.")};var oe=require("zustand/vanilla"),ae=P(require("dompurify"),1);function X(n){return ae.default.sanitize(n??"")}function Q(n,t){let e=Object.keys(n),s=Object.keys(t);if(e.length!==s.length)return!1;for(let r of e)if(n[r]!==t[r])return!1;return!0}function un(n,t){let e=[],s=n.replace(/:[^/]+/g,o=>(e.push(o.slice(1)),"([^/]+)")),r=new RegExp(`^${s}$`),i=t.match(r),a={};return i&&e.forEach((o,c)=>{a[o]=X(i[c+1]??"")}),a}function dn(n){let t={},e=new URLSearchParams(n);for(let[s,r]of e.entries())t[s]=X(r);return t}var $=(0,oe.createStore)((n,t)=>({params:{},query:{},setFromPattern:e=>{let s=window.location.pathname,r=un(e,s),i=dn(window.location.search),a=t();(!Q(a.params,r)||!Q(a.query,i))&&n({params:r,query:i})},setFromPatternValues:(e,s)=>{let r={};e.forEach((a,o)=>{r[a]=X(s[o]??"")});let i=t();Q(i.params,r)||n({params:r})},setQuery:e=>{let s={};for(let i in e)s[i]=X(e[i]);let r=t();Q(r.query,s)||n({query:s})},getParam:e=>t().params[e],getQuery:e=>t().query[e]}));function Et(n){let t=$.getState();t.setFromPattern(n);let e=t.params,s=t.query;return{...e,...s}}var Tt=(n,t,e)=>{let s=document.querySelectorAll(n);return s.forEach(r=>{r.addEventListener(t,e)}),()=>{s.forEach(r=>{r.removeEventListener(t,e)})}};var fe=require("motion"),he=P(require("dompurify"),1),St=typeof window<"u"&&typeof document<"u",ce=["div","span","p","a","button","ul","li","img","input","form","label","h1","h2","h3","h4","h5","h6","section","main","article"],le=["class","id","href","src","alt","title","type","value","name","placeholder","data-click","data-change","data-select","data-effect","data-hover","data-submit","data-key","data-event","data-component","data-stagger","data-input","data-children","data-slot","target","rel"],ue=St?(0,he.default)(window):{sanitize:(n,t)=>n};function fn(n){return/^(https?:\/\/|\/|#)/i.test(n.trim())}function hn(n){St&&n.querySelectorAll("*").forEach(t=>{[...t.attributes].forEach(e=>{let s=e.name.toLowerCase();if(s.startsWith("on")){t.removeAttribute(e.name);return}(s==="href"||s==="src")&&!fn(e.value)&&t.setAttribute(s,"#")}),t.tagName==="A"&&t.getAttribute("target")==="_blank"&&t.setAttribute("rel","noopener noreferrer")})}function de(n){let t={},e={},s=400,r=0,i="ease-in-out",a=0,o=!1,c,u;return n.split(/\s+/).forEach(l=>{l==="fade-in"&&(t.opacity=0,e.opacity=1),l==="fade-out"&&(t.opacity=1,e.opacity=0),l==="slide-up"&&(t.y=20,e.y=0),l==="slide-down"&&(t.y=-20,e.y=0),l==="slide-left"&&(t.x=20,e.x=0),l==="slide-right"&&(t.x=-20,e.x=0),l.startsWith("duration-")&&(s=+l.replace("duration-","")),l.startsWith("delay-")&&(r=+l.replace("delay-","")),(l==="linear"||l.startsWith("ease"))&&(i=l),l==="infinite"&&(a=1/0),l==="replay"&&(o=!0),l.startsWith("parallax-y-")&&(c=+l.replace("parallax-y-","")),l.startsWith("parallax-x-")&&(u=+l.replace("parallax-x-",""))}),{from:t,to:e,duration:s,easing:i,delay:r,repeat:a,replay:o,parallaxY:c,parallaxX:u}}function mn(n,t){n.querySelectorAll("[data-component]").forEach(e=>{let s=e.dataset.component;t[s]?.(e)})}var _t=(n,t,e={},s)=>{if(!St||!n)return{html:ue.sanitize(t,{ALLOWED_TAGS:ce,ALLOWED_ATTR:le,...s})};let r=ue.sanitize(t,{ALLOWED_TAGS:ce,ALLOWED_ATTR:le,...s});n.innerHTML=r,hn(n);let i=l=>{let d=l.target.closest("[data-click]");d&&e[d.dataset.click]?.(d)};n.addEventListener("click",i),n.querySelectorAll("[data-input]").forEach(l=>{let d=l.dataset.input;e[d]?.(l),l.addEventListener("input",()=>{e[d]?.(l)})}),mn(n,e);let a=[];n.querySelectorAll("[data-effect]").forEach(l=>{let d=de(l.dataset.effect||"");(d.parallaxX||d.parallaxY)&&a.push({el:l,...d})});let o=!1,c=()=>{o||(o=!0,requestAnimationFrame(()=>{let l=window.scrollY;a.forEach(({el:d,parallaxX:f,parallaxY:h})=>{d.style.transform=`translate3d(${(f||0)*l}px, ${(h||0)*l}px, 0)`}),o=!1}))};window.addEventListener("scroll",c);let u=new IntersectionObserver(l=>{l.forEach(d=>{let f=d.target,h=de(f.dataset.effect||"");d.isIntersecting?(Object.assign(f.style,h.from),setTimeout(()=>{(0,fe.animate)(f,h.to,{duration:h.duration/1e3,easing:h.easing,repeat:h.repeat})},h.delay),h.replay||u.unobserve(f)):h.replay&&Object.assign(f.style,h.from)})});return n.querySelectorAll("[data-effect]").forEach(l=>u.observe(l)),{cleanup(){u.disconnect(),window.removeEventListener("scroll",c),n.removeEventListener("click",i)}}};var Pt=P(require("dompurify"),1),J=null,vt=(n,t)=>{if(typeof document>"u")return;let e=document.getElementById(n);if(!e)return;Pt.default.addHook("uponSanitizeAttribute",(a,o)=>{let c=(o.attrName||"").toLowerCase(),u=(o.attrValue??"").toString().trim();if(c.startsWith("on")){o.keepAttr=!1;return}if((c==="href"||c==="src")&&/^(javascript:|vbscript:|data:|file:|about:)/i.test(u)){o.keepAttr=!1;return}if(c==="class"){let d=u.split(/\s+/).filter(Boolean).filter(f=>{if(/^[a-zA-Z0-9\-\:\/_\[\]\(\)]+$/.test(f)){if(/^bg-\[url\(.*\)\]$/.test(f)){let h=f.replace(/^bg-\[url\(/,"").replace(/\)\]$/,"").replace(/^['"]|['"]$/g,"");return h===""||/^https?:\/\//i.test(h)||/^\/(?!\/)/.test(h)||/^\.{0,2}\//.test(h)}return!0}return!1});o.attrValue=d.join(" ");return}if(c==="style"){o.keepAttr=!1;return}});let s=e.cloneNode(!0),r=Pt.default.sanitize(s.innerHTML,{USE_PROFILES:{html:!0},ALLOWED_TAGS:["div","span","p","h1","h2","h3","h4","h5","h6","ul","ol","li","strong","em","a","img","br","form","button","input","label"],ALLOWED_ATTR:["href","src","alt","title","class","id","type","name","value","placeholder","data-click","data-change","data-submit","data-select","data-hover","data-classlist"],FORBID_TAGS:["script","iframe","object","embed","body","html","svg","math","link","meta"],ALLOW_DATA_ATTR:!0,KEEP_CONTENT:!1,RETURN_DOM_FRAGMENT:!0}),i=Array.from(r.childNodes).map(a=>a.outerHTML||a.textContent||"").join("");if(J!==null&&i!==J){let a=document.createElement("div");t(a);let c=new DOMParser().parseFromString(J,"text/html");for(;e.firstChild;)e.removeChild(e.firstChild);c.body.childNodes.forEach(u=>e.appendChild(u.cloneNode(!0)))}else{for(J=i;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(r),t(e)}};var Rt=P(require("dompurify"),1);typeof window<"u"&&!window.__anchorSinglePopstateHandlerAttached&&(window.addEventListener("popstate",n=>{let t=n.state;t?.scrollPosition!==void 0&&window.scrollTo(0,t.scrollPosition)}),window.__anchorSinglePopstateHandlerAttached=!0);var bt=(n,t,e,s="",r=null)=>{if(!n)return;let i=Rt.default.sanitize(t,{ALLOWED_URI_REGEXP:/^(https?:|\/)/}),a=Rt.default.sanitize(e,{USE_PROFILES:{html:!1}});n.setAttribute("href",i),n.setAttribute("aria-label",a),s&&(n.className=s.trim()),r&&n.replaceChildren(r),typeof window<"u"&&n.addEventListener("click",o=>{o.preventDefault();let u=o.currentTarget.getAttribute("href");if(u){let l=window.scrollY;window.scrollTo(0,0),window.history.pushState({scrollPosition:l},"",u),dispatchEvent(new PopStateEvent("popstate"))}})};var x=P(require("dompurify"),1);var me=(n="'self' 'nonce-rAnd0m123' 'unsafe-inline' 'unsafe-eval'",t="'self' 'nonce-rAnd0m123'",e="'none'",s="'self' https://fonts.googleapis.com https://fonts.gstatic.com",r="'self' https://blogger.googleusercontent.com",i=["'self'","https://fonts.googleapis.com","https://fonts.gstatic.com","https://www.google.com/maps/"],a="'self' https://www.youtube.com",o="'self'",c="/csp-report",u=!1)=>{let l=()=>{try{let d=document.querySelector('meta[http-equiv="Content-Security-Policy"]');d||(d=document.createElement("meta"),d.setAttribute("http-equiv","Content-Security-Policy"),document.head.appendChild(d));let f=u?`report-uri ${c};`:"";d.setAttribute("content",`default-src 'self'; script-src ${n}; style-src ${t}; object-src ${e}; font-src ${s}; img-src ${r}; connect-src ${i.join(" ")}; frame-src ${a}; base-uri ${o}; ${f}`)}catch(d){console.error("Error adding CSP meta element:",d)}};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",l):l()};var Lt=(n,t)=>{let e={name:x.default.sanitize(n.name||""),title:x.default.sanitize(n.title||""),description:x.default.sanitize(n.description||"Default description"),author:x.default.sanitize(n.author||""),favicon:n.favicon},s=S=>{e.name=x.default.sanitize(S),v("name",e.name)},r=S=>{e.title=x.default.sanitize(S),document.title=e.title},i=S=>{e.description=x.default.sanitize(S),v("description",e.description)},a=S=>{e.author=x.default.sanitize(S),v("author",e.author)},o=S=>{e.favicon=x.default.sanitize(S);let p=document.querySelector('link[rel="icon"]');p||(p=document.createElement("link"),p.rel="icon",document.head.appendChild(p)),p.href=e.favicon},c=()=>e.name,u=()=>e.title,l=()=>e.description,d=()=>e.author,f=()=>e.favicon,h=()=>e,T=(S,p)=>{let E=document.createElement("meta");E.setAttribute("name",S),E.setAttribute("content",p),document.head.appendChild(E)},v=(S,p)=>{let E=document.querySelector(`meta[name="${S}"]`);E?E.setAttribute("content",p):T(S,p)},I=()=>{e.title&&(document.title=e.title),e.name&&v("name",e.name),e.description&&v("description",e.description),e.author&&v("author",e.author),e.favicon&&o(e.favicon)};return t&&me(t.scriptSrc,t.styleSrc,t.objectSrc,Array.isArray(t.connectSrc)?t.connectSrc.join(" "):t.connectSrc,t.reportOnly!==void 0?String(t.reportOnly):void 0),I(),{setName:s,setTitle:r,setDescription:i,setAuthor:a,setFavicon:o,getName:c,getTitle:u,getDescription:l,getAuthor:d,getFavicon:f,getAllMetaData:h,appendMetaTagsToHead:I}};var pe=P(require("dompurify"),1),j=(n,t,e,s,r)=>{let i=`#${n}`,a=t.querySelectorAll(i);if(a.length===0)throw new Error(`[useTSComponent] No element found with id '${n}' in the given parent.`);if(a.length>1)throw new Error(`[useTSComponent] Duplicate id '${n}' detected. Found ${a.length} elements.`);let o=a[0];o.innerHTML=pe.default.sanitize(o.innerHTML,{USE_PROFILES:{html:!0}}),e(o,s,r)};var xt=(n,t,e,s=[])=>{let r=new Set;n.forEach((i,a)=>{if(r.has(i)){console.warn(`[useTSCollection] Duplicate ID in collection array: "${i}" \u2014 skipping.`);return}r.add(i);let o=t.querySelectorAll(`#${i}`);if(o.length>1){console.warn(`[useTSCollection] Duplicate ID in DOM: "${i}" (${o.length} elements found) \u2014 skipping component mount.`);return}let c=e[a],u=Array.isArray(s)?s[a]:void 0;typeof c=="function"?j(i,t,c,u):console.warn(`[useTSCollection] No valid component function found for ID: "${i}"`)})};var N=(n,t)=>{let s=(t??document).querySelectorAll(n);if(s.length===0)return process.env.NODE_ENV!=="production"&&console.warn(`[useTSSelect] No element found for selector: '${n}'`),null;if(n.startsWith("#")&&s.length>1){if(process.env.NODE_ENV!=="production")throw new Error(`[useTSSelect] Duplicate ID detected: '${n}'. Found ${s.length} elements with this ID.`);return s[0]}return s.length>1&&process.env.NODE_ENV!=="production"&&console.warn(`[useTSSelect] Multiple elements found for selector: '${n}'. Returning the first one.`),s[0]};var ge=require("jwt-decode"),Mt=(n,t)=>{let e=localStorage.getItem("token");if(!e)return window.location.href=t,null;try{let s=(0,ge.jwtDecode)(e),r=Date.now()/1e3;return s.exp&&s.exp<r&&(console.error("Token has expired"),window.localStorage.removeItem("token"),window.location.href=t),null}catch(s){return console.error("Invalid token:",s),window.location.href=t,null}};var Z=(n,t,e)=>{n.forEach(s=>{t.forEach(r=>{s.addEventListener(r,i=>{e(s,i)})})})};var At=()=>({back:()=>window.history.back(),forward:()=>window.history.forward()});var Dt=(n,t)=>{let e=document.querySelector(`#${n}`)||document.querySelector(`.${n}`);if(!e)return;let s=window.location.pathname.replace(/\/$/,"");for(let r of t){let i=r.path.replace(/\/$/,"");if(s===i||s.startsWith(`${i}/`)){r.component(e);break}}};function Ct(n,t){let e=window.location.pathname.replace(/\/$/,"");t.routes.forEach(s=>{s.children?.length&&s.children.forEach(r=>{let i=r.path.replace(/\/$/,"");if(e===i||e.startsWith(`${i}/`)){let a=n.querySelector(`#${r.outlet}`)||n.querySelector(`.${r.outlet}`);a instanceof HTMLElement&&r.element&&r.element(a)}})})}var Ft=async()=>{let n="https://cdn.jsdelivr.net/npm/brython@3/brython.min.js",t="https://cdn.jsdelivr.net/npm/brython@3/brython_stdlib.js",e=s=>new Promise((r,i)=>{let a=document.createElement("script");a.src=s,a.onload=()=>r(),a.onerror=()=>i(new Error(`Failed to load ${s}`)),document.head.appendChild(a)});await e(n),await e(t),typeof window.brython=="function"?window.brython():console.error("Brython did not load correctly.")},Ht=n=>new Promise((t,e)=>{let s=document.createElement("script");s.type="text/python",s.src=`/src/python/${n}`,s.onload=()=>t(),s.onerror=()=>e(new Error(`Failed to load ${n}`)),document.body.appendChild(s)});function Ot(n){let t=null;return async(e,s)=>{try{if(!t){let r=await n();t=r.default||r}if(typeof t=="function")return t(e,s);if(t instanceof HTMLElement){let r=t.cloneNode(!0);return e?.appendChild(r),r}if(typeof t=="object"&&t!==null&&"render"in t&&typeof t.render=="function")return t.render(e,s);console.warn("useTSLazy: Unsupported module type",t)}catch(r){console.error("useTSLazy failed:",r)}}}var It=n=>typeof window>"u"?{isDOM:null}:{isDOM:n||document.body};var ye=require("lodash-es"),kt=n=>n;typeof window<"u"&&typeof document<"u"&&(kt=n=>{let t=document.createElement("div");return t.innerText=n,t.innerHTML});var pn=n=>{(n?Array.isArray(n)?n:n instanceof HTMLAnchorElement?[n]:Array.from(n):Array.from(document.querySelectorAll("a"))).forEach(e=>{if(!e||e.dataset.anchorEnhanced==="true")return;e.dataset.anchorEnhanced="true";let s=e.getAttribute("class")||"";e.setAttribute("class",kt(s));let r=e.getAttribute("aria-label");r&&e.setAttribute("aria-label",kt(r));let i=e.querySelector(":scope > *");i&&(e.innerHTML="",e.appendChild(i));let a=e.getAttribute("href")||"";if(!a.startsWith("#")){try{if(new URL(a,window.location.href).origin!==window.location.origin)return}catch{return}e.addEventListener("click",o=>{o.preventDefault();let c=e.getAttribute("href")||"";try{let u=new URL(c,window.location.href);window.history.pushState({},"",u.pathname+u.search+u.hash),window.dispatchEvent(new PopStateEvent("popstate"))}catch(u){console.error("Invalid URL in anchor:",c,u)}})}})},gn=(0,ye.debounce)(pn,50),q=n=>{gn(n)};var Nt=n=>{if(!n)return;let t=N("a",n);q(t)};var we=n=>{let t=n,e=[];return[()=>t,a=>{t=typeof a=="function"?a(t):a,e.forEach(o=>o(t))},a=>{e.push(a),a(t)}]};function Ee(n,t,e){let s=()=>{n.textContent=t().toString(),e?.(t())};s();let r=t.set;r&&(t.set=i=>{r(i),s()})}function zt(n){let[t,e,s]=we(n),r=[],i=(()=>t());return i.set=a=>{e(a),r.forEach(o=>o(i()))},i.bind=a=>Ee(a,i),i.subscribe=a=>{r.push(a),a(i())},i}function Wt(n,t){let e={deps:t.map(r=>typeof r=="function"?r():r)},s=n();typeof s=="function"&&(e.cleanup=s),t.forEach((r,i)=>{typeof r=="function"&&"bind"in r&&r.subscribe?.(()=>{let o=r(),c=e.deps[i];if(o!==c){e.cleanup?.(),e.deps[i]=o;let u=n();typeof u=="function"&&(e.cleanup=u)}})})}var y={params:{},query:{}},$t=new Set;function yn(){return{params:{...y.params},query:{...y.query}}}function U(n,t){let e=Object.keys(n),s=Object.keys(t);if(e.length!==s.length)return!1;for(let r of e)if(n[r]!==t[r])return!1;return!0}function F(){let n=yn();$t.forEach(t=>t(n))}function wn(n){let t={};if(!n)return t;let e=n.startsWith("?")?n.slice(1):n;for(let s of e.split("&")){if(!s)continue;let[r,i]=s.split("=");r&&(t[decodeURIComponent(r)]=decodeURIComponent(i||""))}return t}function En(n){let t=new URLSearchParams;for(let s in n){let r=n[s];r!=null&&r!==""&&t.set(s,r)}let e=t.toString();return e?`?${e}`:""}function tt(){if(typeof window>"u")return;let n=window.location.pathname,t=window.location.hash,e=En(y.query);history.replaceState({},"",n+e+t)}var et={getState(){return{params:y.params,query:y.query,getParam:n=>y.params[n],getQuery:n=>y.query[n],setFromPattern(n){if(typeof window>"u")return;let t=n.match(/:([^/]+)/g)?.map(r=>r.slice(1))||[],e=window.location.pathname.split("/").filter(Boolean),s={};t.forEach((r,i)=>{s[r]=e[i]}),U(y.params,s)||(y.params=s,F())},setFromPatternValues(n,t){let e={};n.forEach((s,r)=>{e[s]=t[r]}),U(y.params,e)||(y.params=e,F())},setQuery(n){let t={...y.query,...n};U(y.query,t)||(y.query=t,tt(),F())},replaceQuery(n){U(y.query,n)||(y.query={...n},tt(),F())},removeQuery(n){if(!(n in y.query))return;let t={...y.query};delete t[n],y.query=t,tt(),F()},clearQuery(){Object.keys(y.query).length!==0&&(y.query={},tt(),F())},setQueryFromURL(n){let t=wn(n);U(y.query,t)||(y.query=t,F())},subscribe(n){return $t.add(n),()=>$t.delete(n)}}}};typeof window<"u"&&window.addEventListener("popstate",()=>{et.getState().setQueryFromURL(window.location.search)});var jt=P(require("dompurify"),1);var Se=require("zustand/vanilla"),_e=P(require("dompurify"),1),C=(0,Se.createStore)(n=>({params:{},query:{},setParams:t=>n(()=>({params:Te(t)})),setQuery:t=>n(()=>({query:Te(t)}))}));function Te(n){let t={};for(let e in n)t[e]=_e.default.sanitize(n[e]);return t}var nt=class{routes=[];expectedParams;apiFetcher;constructor(t,e,s){this.routes=t,this.expectedParams=new Set(e),this.apiFetcher=s,window.addEventListener("popstate",this.handlePopState.bind(this)),this.handlePopState()}handlePopState(){let t=window.location.pathname,e=window.location.search,s=this.parseQueryParams(e);if(t.startsWith("/api")&&this.apiFetcher){let a=t.replace("/api/","").split("/")[0],o=Object.fromEntries(new URLSearchParams(e));this.apiFetcher(a,o).then(c=>console.log("API response:",c)).catch(c=>console.error("API error:",c));return}let r=this.findMatchingRoute(t,this.routes);if(r){if(r.routeto){this.navigate(r.routeto);return}let i=this.filterAndSanitizeParams(r.params);C.getState().setParams(i),C.getState().setQuery(s);let a=document.createElement("div");if(r.element?.(a,i,s),r.children){let o=t.slice(r.path.length),c=a.querySelector("#child");c&&this.renderChildren(r.children,o,c,i,s)}}else{let i=this.findMatchingRoute("*",this.routes);if(i){let a=this.filterAndSanitizeParams(i.params);C.getState().setParams(a),C.getState().setQuery(s);let o=document.createElement("div");i.element?.(o,a,s)}}}renderChildren(t,e,s,r,i){if(!t||t.length===0){let o=s.querySelector("#child");o&&o.remove();return}let a=this.findMatchingRoute(e,t);if(a){let o=document.createElement("div");o.id="child";let c={...r,...a.params},u=this.filterAndSanitizeParams(c);if(C.getState().setParams(u),C.getState().setQuery(i),a.element?.(o,u,i),s.appendChild(o),a.children){let l=e.slice(a.path.length);this.renderChildren(a.children,l,o,u,i)}}}parseQueryParams(t){let e={},s=new URLSearchParams(t);for(let[r,i]of s.entries())this.expectedParams.has(r)&&(e[r]=jt.default.sanitize(i));return e}findMatchingRoute(t,e,s={}){for(let r of e){let i=r.path;if(i==="*")return r;{let o=[],c=i.replace(/:[^\s/]+/g,d=>(o.push(d.substring(1)),"([^\\s/]+)")),u=new RegExp(`^${c}(?:/|$)`),l=t.match(u);if(l){let d={...s};if(o.forEach((f,h)=>{d[f]=l[h+1]??""}),r.children){let f=t.slice(l[0].length),h=this.findMatchingRoute(f,r.children,d);if(h)return h}return{...r,params:d}}}}}filterAndSanitizeParams(t){if(!t)return{};let e={};for(let s in t)this.expectedParams.has(s)&&(e[s]=jt.default.sanitize(t[s]??""));return e}navigate(t){history.pushState(null,"",t),this.handlePopState()}addRoute(t){this.routes.push(t)}};var Ge=()=>({name:"ts-filebased-router",async buildStart(){let n=(await import("fs/promises")).default??await import("fs/promises"),t=await import("path"),e=await Promise.resolve().then(()=>(Be(),Ke)),s=t.resolve("src/pages"),r=t.resolve("src/gen"),i=t.resolve("src/routes"),a=t.join(r,"tsrouter.d.ts"),o=t.join(r,"tsrouter.gen.ts"),c=t.join(i,"__root.ts"),u=process.env.NODE_ENV!=="production",l=async p=>n.mkdir(p,{recursive:!0}).catch(()=>{}),d=p=>p.charAt(0).toUpperCase()+p.slice(1),f=p=>{let E="/"+t.relative(s,p).replace(/\\/g,"/");return E=E.replace(/\.ts$/,"").replace(/\/index$/,"")||"/",E.replace(/\[\.\.\.(.+?)\]/g,"*").replace(/\[(.+?)\]/g,":$1")},h=p=>p.replace(/^\//,"").split("/").map(E=>E.startsWith(":")?d(E.slice(1)):E.replace(/\b\w/g,M=>M.toUpperCase()).replace(/[-_]/g,"")).filter(Boolean).join("")||"Index",T=async p=>{let E=await n.readdir(p,{withFileTypes:!0}),M=[];for(let k of E){let W=t.join(p,k.name);k.isDirectory()?M.push(...await T(W)):k.isFile()&&k.name.endsWith(".ts")&&M.push({file:W,route:f(W),name:h(f(W))})}return M},v=()=>`
1
+ "use strict";var Ze=Object.create;var V=Object.defineProperty;var tn=Object.getOwnPropertyDescriptor;var en=Object.getOwnPropertyNames;var nn=Object.getPrototypeOf,rn=Object.prototype.hasOwnProperty;var mt=(n,t)=>()=>(n&&(t=n(n=0)),t);var ee=(n,t)=>{for(var e in t)V(n,e,{get:t[e],enumerable:!0})},ne=(n,t,e,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of en(t))!rn.call(n,r)&&r!==e&&V(n,r,{get:()=>t[r],enumerable:!(s=tn(t,r))||s.enumerable});return n};var v=(n,t,e)=>(e=n!=null?Ze(nn(n)):{},ne(t||!n||!n.__esModule?V(e,"default",{value:n,enumerable:!0}):e,n)),sn=n=>ne(V({},"__esModule",{value:!0}),n);function Me(n,t={}){let e=t.entryType||t.type;if(e==="both"&&(e=R.FILE_DIR_TYPE),e&&(t.type=e),n){if(typeof n!="string")throw new TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");if(e&&!ve.includes(e))throw new Error(`readdirp: Invalid type passed. Use one of ${ve.join(", ")}`)}else throw new Error("readdirp: root argument is required. Usage: readdirp(root, options)");return t.root=n,new Yt(t)}var M,Le,A,R,Ut,xe,Sn,ve,_n,Pn,vn,Rn,Re,be,Yt,Ae=mt(()=>{"use strict";M=require("fs/promises"),Le=require("stream"),A=require("path"),R={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},Ut={root:".",fileFilter:n=>!0,directoryFilter:n=>!0,type:R.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(Ut);xe="READDIRP_RECURSIVE_ERROR",Sn=new Set(["ENOENT","EPERM","EACCES","ELOOP",xe]),ve=[R.DIR_TYPE,R.EVERYTHING_TYPE,R.FILE_DIR_TYPE,R.FILE_TYPE],_n=new Set([R.DIR_TYPE,R.EVERYTHING_TYPE,R.FILE_DIR_TYPE]),Pn=new Set([R.EVERYTHING_TYPE,R.FILE_DIR_TYPE,R.FILE_TYPE]),vn=n=>Sn.has(n.code),Rn=process.platform==="win32",Re=n=>!0,be=n=>{if(n===void 0)return Re;if(typeof n=="function")return n;if(typeof n=="string"){let t=n.trim();return e=>e.basename===t}if(Array.isArray(n)){let t=n.map(e=>e.trim());return e=>t.some(s=>e.basename===s)}return Re},Yt=class extends Le.Readable{constructor(t={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:t.highWaterMark});let e={...Ut,...t},{root:s,type:r}=e;this._fileFilter=be(e.fileFilter),this._directoryFilter=be(e.directoryFilter);let i=e.lstat?M.lstat:M.stat;Rn?this._stat=a=>i(a,{bigint:!0}):this._stat=i,this._maxDepth=e.depth??Ut.depth,this._wantsDir=r?_n.has(r):!1,this._wantsFile=r?Pn.has(r):!1,this._wantsEverything=r===R.EVERYTHING_TYPE,this._root=(0,A.resolve)(s),this._isDirent=!e.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(s,1)],this.reading=!1,this.parent=void 0}async _read(t){if(!this.reading){this.reading=!0;try{for(;!this.destroyed&&t>0;){let e=this.parent,s=e&&e.files;if(s&&s.length>0){let{path:r,depth:i}=e,a=s.splice(0,t).map(c=>this._formatEntry(c,r)),o=await Promise.all(a);for(let c of o){if(!c)continue;if(this.destroyed)return;let u=await this._getEntryType(c);u==="directory"&&this._directoryFilter(c)?(i<=this._maxDepth&&this.parents.push(this._exploreDir(c.fullPath,i+1)),this._wantsDir&&(this.push(c),t--)):(u==="file"||this._includeAsFile(c))&&this._fileFilter(c)&&this._wantsFile&&(this.push(c),t--)}}else{let r=this.parents.pop();if(!r){this.push(null);break}if(this.parent=await r,this.destroyed)return}}}catch(e){this.destroy(e)}finally{this.reading=!1}}}async _exploreDir(t,e){let s;try{s=await(0,M.readdir)(t,this._rdOptions)}catch(r){this._onError(r)}return{files:s,depth:e,path:t}}async _formatEntry(t,e){let s,r=this._isDirent?t.name:t;try{let i=(0,A.resolve)((0,A.join)(e,r));s={path:(0,A.relative)(this._root,i),fullPath:i,basename:r},s[this._statsProp]=this._isDirent?t:await this._stat(i)}catch(i){this._onError(i);return}return s}_onError(t){vn(t)&&!this.destroyed?this.emit("warn",t):this.destroy(t)}async _getEntryType(t){if(!t&&this._statsProp in t)return"";let e=t[this._statsProp];if(e.isFile())return"file";if(e.isDirectory())return"directory";if(e&&e.isSymbolicLink()){let s=t.fullPath;try{let r=await(0,M.realpath)(s),i=await(0,M.lstat)(r);if(i.isFile())return"file";if(i.isDirectory()){let a=r.length;if(s.startsWith(r)&&s.substr(a,1)===A.sep){let o=new Error(`Circular symlink detected: "${s}" points to "${r}"`);return o.code=xe,this._onError(o)}return"directory"}}catch(r){return this._onError(r),""}}}_includeAsFile(t){let e=t&&t[this._statsProp];return e&&this._wantsEverything&&!e.isDirectory()}}});function De(n,t,e,s,r){let i=(a,o)=>{e(n),r(a,o,{watchedPath:n}),o&&n!==o&&it(y.resolve(n,o),O,y.join(n,o))};try{return(0,I.watch)(n,{persistent:t.persistent},i)}catch(a){s(a);return}}var I,L,y,Ce,bn,Gt,Fe,at,ct,Vt,Ln,xn,Mn,He,E,b,An,Dn,O,rt,z,Cn,Fn,Hn,Bt,Y,On,K,Oe,st,it,In,Kt,kn,ot,Ie=mt(()=>{"use strict";I=require("fs"),L=require("fs/promises"),y=v(require("path"),1),Ce=require("os"),bn="data",Gt="end",Fe="close",at=()=>{},ct=process.platform,Vt=ct==="win32",Ln=ct==="darwin",xn=ct==="linux",Mn=ct==="freebsd",He=(0,Ce.type)()==="OS400",E={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},b=E,An="watch",Dn={lstat:L.lstat,stat:L.stat},O="listeners",rt="errHandlers",z="rawEmitters",Cn=[O,rt,z],Fn=new Set(["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]),Hn=n=>Fn.has(y.extname(n).slice(1).toLowerCase()),Bt=(n,t)=>{n instanceof Set?n.forEach(t):t(n)},Y=(n,t,e)=>{let s=n[t];s instanceof Set||(n[t]=s=new Set([s])),s.add(e)},On=n=>t=>{let e=n[t];e instanceof Set?e.clear():delete n[t]},K=(n,t,e)=>{let s=n[t];s instanceof Set?s.delete(e):s===e&&delete n[t]},Oe=n=>n instanceof Set?n.size===0:!n,st=new Map;it=(n,t,e,s,r)=>{let i=st.get(n);i&&Bt(i[t],a=>{a(e,s,r)})},In=(n,t,e,s)=>{let{listener:r,errHandler:i,rawEmitter:a}=s,o=st.get(t),c;if(!e.persistent)return c=De(n,e,r,i,a),c?c.close.bind(c):void 0;if(o)Y(o,O,r),Y(o,rt,i),Y(o,z,a);else{if(c=De(n,e,it.bind(null,t,O),i,it.bind(null,t,z)),!c)return;c.on(b.ERROR,async u=>{let l=it.bind(null,t,rt);if(o&&(o.watcherUnusable=!0),Vt&&u.code==="EPERM")try{await(await(0,L.open)(n,"r")).close(),l(u)}catch{}else l(u)}),o={listeners:r,errHandlers:i,rawEmitters:a,watcher:c},st.set(t,o)}return()=>{K(o,O,r),K(o,rt,i),K(o,z,a),Oe(o.listeners)&&(o.watcher.close(),st.delete(t),Cn.forEach(On(o)),o.watcher=void 0,Object.freeze(o))}},Kt=new Map,kn=(n,t,e,s)=>{let{listener:r,rawEmitter:i}=s,a=Kt.get(t),o=a&&a.options;return o&&(o.persistent<e.persistent||o.interval>e.interval)&&((0,I.unwatchFile)(t),a=void 0),a?(Y(a,O,r),Y(a,z,i)):(a={listeners:r,rawEmitters:i,options:e,watcher:(0,I.watchFile)(t,e,(c,u)=>{Bt(a.rawEmitters,d=>{d(b.CHANGE,t,{curr:c,prev:u})});let l=c.mtimeMs;(c.size!==u.size||l>u.mtimeMs||l===0)&&Bt(a.listeners,d=>d(n,c))})},Kt.set(t,a)),()=>{K(a,O,r),K(a,z,i),Oe(a.listeners)&&(Kt.delete(t),(0,I.unwatchFile)(t),a.options=a.watcher=void 0,Object.freeze(a))}},ot=class{constructor(t){this.fsw=t,this._boundHandleError=e=>t._handleError(e)}_watchWithNodeFs(t,e){let s=this.fsw.options,r=y.dirname(t),i=y.basename(t);this.fsw._getWatchedDir(r).add(i);let o=y.resolve(t),c={persistent:s.persistent};e||(e=at);let u;if(s.usePolling){let l=s.interval!==s.binaryInterval;c.interval=l&&Hn(i)?s.binaryInterval:s.interval,u=kn(t,o,c,{listener:e,rawEmitter:this.fsw._emitRaw})}else u=In(t,o,c,{listener:e,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return u}_handleFile(t,e,s){if(this.fsw.closed)return;let r=y.dirname(t),i=y.basename(t),a=this.fsw._getWatchedDir(r),o=e;if(a.has(i))return;let c=async(l,d)=>{if(this.fsw._throttle(An,t,5)){if(!d||d.mtimeMs===0)try{let f=await(0,L.stat)(t);if(this.fsw.closed)return;let h=f.atimeMs,T=f.mtimeMs;if((!h||h<=T||T!==o.mtimeMs)&&this.fsw._emit(b.CHANGE,t,f),(Ln||xn||Mn)&&o.ino!==f.ino){this.fsw._closeFile(l),o=f;let P=this._watchWithNodeFs(t,c);P&&this.fsw._addPathCloser(l,P)}else o=f}catch{this.fsw._remove(r,i)}else if(a.has(i)){let f=d.atimeMs,h=d.mtimeMs;(!f||f<=h||h!==o.mtimeMs)&&this.fsw._emit(b.CHANGE,t,d),o=d}}},u=this._watchWithNodeFs(t,c);if(!(s&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(t)){if(!this.fsw._throttle(b.ADD,t,0))return;this.fsw._emit(b.ADD,t,e)}return u}async _handleSymlink(t,e,s,r){if(this.fsw.closed)return;let i=t.fullPath,a=this.fsw._getWatchedDir(e);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let o;try{o=await(0,L.realpath)(s)}catch{return this.fsw._emitReady(),!0}return this.fsw.closed?void 0:(a.has(r)?this.fsw._symlinkPaths.get(i)!==o&&(this.fsw._symlinkPaths.set(i,o),this.fsw._emit(b.CHANGE,s,t.stats)):(a.add(r),this.fsw._symlinkPaths.set(i,o),this.fsw._emit(b.ADD,s,t.stats)),this.fsw._emitReady(),!0)}if(this.fsw._symlinkPaths.has(i))return!0;this.fsw._symlinkPaths.set(i,!0)}_handleRead(t,e,s,r,i,a,o){if(t=y.join(t,""),o=this.fsw._throttle("readdir",t,1e3),!o)return;let c=this.fsw._getWatchedDir(s.path),u=new Set,l=this.fsw._readdirp(t,{fileFilter:d=>s.filterPath(d),directoryFilter:d=>s.filterDir(d)});if(l)return l.on(bn,async d=>{if(this.fsw.closed){l=void 0;return}let f=d.path,h=y.join(t,f);if(u.add(f),!(d.stats.isSymbolicLink()&&await this._handleSymlink(d,t,h,f))){if(this.fsw.closed){l=void 0;return}(f===r||!r&&!c.has(f))&&(this.fsw._incrReadyCount(),h=y.join(i,y.relative(i,h)),this._addToNodeFs(h,e,s,a+1))}}).on(b.ERROR,this._boundHandleError),new Promise((d,f)=>{if(!l)return f();l.once(Gt,()=>{if(this.fsw.closed){l=void 0;return}let h=o?o.clear():!1;d(void 0),c.getChildren().filter(T=>T!==t&&!u.has(T)).forEach(T=>{this.fsw._remove(t,T)}),l=void 0,h&&this._handleRead(t,!1,s,r,i,a,o)})})}async _handleDir(t,e,s,r,i,a,o){let c=this.fsw._getWatchedDir(y.dirname(t)),u=c.has(y.basename(t));!(s&&this.fsw.options.ignoreInitial)&&!i&&!u&&this.fsw._emit(b.ADD_DIR,t,e),c.add(y.basename(t)),this.fsw._getWatchedDir(t);let l,d,f=this.fsw.options.depth;if((f==null||r<=f)&&!this.fsw._symlinkPaths.has(o)){if(!i&&(await this._handleRead(t,s,a,i,t,r,l),this.fsw.closed))return;d=this._watchWithNodeFs(t,(h,T)=>{T&&T.mtimeMs===0||this._handleRead(h,!1,a,i,t,r,l)})}return d}async _addToNodeFs(t,e,s,r,i){let a=this.fsw._emitReady;if(this.fsw._isIgnored(t)||this.fsw.closed)return a(),!1;let o=this.fsw._getWatchHelpers(t);s&&(o.filterPath=c=>s.filterPath(c),o.filterDir=c=>s.filterDir(c));try{let c=await Dn[o.statMethod](o.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(o.watchPath,c))return a(),!1;let u=this.fsw.options.followSymlinks,l;if(c.isDirectory()){let d=y.resolve(t),f=u?await(0,L.realpath)(t):t;if(this.fsw.closed||(l=await this._handleDir(o.watchPath,c,e,r,i,o,f),this.fsw.closed))return;d!==f&&f!==void 0&&this.fsw._symlinkPaths.set(d,f)}else if(c.isSymbolicLink()){let d=u?await(0,L.realpath)(t):t;if(this.fsw.closed)return;let f=y.dirname(o.watchPath);if(this.fsw._getWatchedDir(f).add(o.watchPath),this.fsw._emit(b.ADD,o.watchPath,c),l=await this._handleDir(f,c,e,r,t,o,d),this.fsw.closed)return;d!==void 0&&this.fsw._symlinkPaths.set(y.resolve(t),d)}else l=this._handleFile(o.watchPath,c,e);return a(),l&&this.fsw._addPathCloser(t,l),!1}catch(c){if(this.fsw._handleError(c))return a(),t}}}});var Be={};ee(Be,{FSWatcher:()=>B,WatchHelper:()=>ut,default:()=>Xn,watch:()=>Ke});function lt(n){return Array.isArray(n)?n:[n]}function Un(n){return typeof n=="function"?n:typeof n=="string"?t=>n===t:n instanceof RegExp?t=>n.test(t):typeof n=="object"&&n!==null?t=>{if(n.path===t)return!0;if(n.recursive){let e=m.relative(n.path,t);return e?!e.startsWith("..")&&!m.isAbsolute(e):!1}return!1}:()=>!1}function Yn(n){if(typeof n!="string")throw new Error("string expected");n=m.normalize(n),n=n.replace(/\\/g,"/");let t=!1;n.startsWith("//")&&(t=!0);let e=/\/\//;for(;n.match(e);)n=n.replace(e,"/");return t&&(n="/"+n),n}function Ne(n,t,e){let s=Yn(t);for(let r=0;r<n.length;r++){let i=n[r];if(i(s,e))return!0}return!1}function Kn(n,t){if(n==null)throw new TypeError("anymatch: specify first argument");let s=lt(n).map(r=>Un(r));return t==null?(r,i)=>Ne(s,r,i):Ne(s,t)}function Ke(n,t={}){let e=new B(t);return e.add(n),e}var je,dt,qe,m,Qt,Nn,Ue,zn,Wn,$n,ke,jn,qn,Xt,ze,We,Ye,$e,Bn,Gn,Jt,Vn,Qn,ut,B,Xn,Ge=mt(()=>{"use strict";je=require("fs"),dt=require("fs/promises"),qe=require("events"),m=v(require("path"),1);Ae();Ie();Qt="/",Nn="//",Ue=".",zn="..",Wn="string",$n=/\\/g,ke=/\/\//,jn=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,qn=/^\.[/\\]/;Xt=n=>typeof n=="object"&&n!==null&&!(n instanceof RegExp);ze=n=>{let t=lt(n).flat();if(!t.every(e=>typeof e===Wn))throw new TypeError(`Non-string provided as watch path: ${t}`);return t.map(Ye)},We=n=>{let t=n.replace($n,Qt),e=!1;for(t.startsWith(Nn)&&(e=!0);t.match(ke);)t=t.replace(ke,Qt);return e&&(t=Qt+t),t},Ye=n=>We(m.normalize(We(n))),$e=(n="")=>t=>typeof t=="string"?Ye(m.isAbsolute(t)?t:m.join(n,t)):t,Bn=(n,t)=>m.isAbsolute(n)?n:m.join(t,n),Gn=Object.freeze(new Set),Jt=class{constructor(t,e){this.path=t,this._removeWatcher=e,this.items=new Set}add(t){let{items:e}=this;e&&t!==Ue&&t!==zn&&e.add(t)}async remove(t){let{items:e}=this;if(!e||(e.delete(t),e.size>0))return;let s=this.path;try{await(0,dt.readdir)(s)}catch{this._removeWatcher&&this._removeWatcher(m.dirname(s),m.basename(s))}}has(t){let{items:e}=this;if(e)return e.has(t)}getChildren(){let{items:t}=this;return t?[...t.values()]:[]}dispose(){this.items.clear(),this.path="",this._removeWatcher=at,this.items=Gn,Object.freeze(this)}},Vn="stat",Qn="lstat",ut=class{constructor(t,e,s){this.fsw=s;let r=t;this.path=t=t.replace(qn,""),this.watchPath=r,this.fullWatchPath=m.resolve(r),this.dirParts=[],this.dirParts.forEach(i=>{i.length>1&&i.pop()}),this.followSymlinks=e,this.statMethod=e?Vn:Qn}entryPath(t){return m.join(this.watchPath,m.relative(this.watchPath,t.fullPath))}filterPath(t){let{stats:e}=t;if(e&&e.isSymbolicLink())return this.filterDir(t);let s=this.entryPath(t);return this.fsw._isntIgnored(s,e)&&this.fsw._hasReadPermissions(e)}filterDir(t){return this.fsw._isntIgnored(this.entryPath(t),t.stats)}},B=class extends qe.EventEmitter{constructor(t={}){super(),this.closed=!1,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._streams=new Set,this._symlinkPaths=new Map,this._watched=new Map,this._pendingWrites=new Map,this._pendingUnlinks=new Map,this._readyCount=0,this._readyEmitted=!1;let e=t.awaitWriteFinish,s={stabilityThreshold:2e3,pollInterval:100},r={persistent:!0,ignoreInitial:!1,ignorePermissionErrors:!1,interval:100,binaryInterval:300,followSymlinks:!0,usePolling:!1,atomic:!0,...t,ignored:t.ignored?lt(t.ignored):lt([]),awaitWriteFinish:e===!0?s:typeof e=="object"?{...s,...e}:!1};He&&(r.usePolling=!0),r.atomic===void 0&&(r.atomic=!r.usePolling);let i=process.env.CHOKIDAR_USEPOLLING;if(i!==void 0){let c=i.toLowerCase();c==="false"||c==="0"?r.usePolling=!1:c==="true"||c==="1"?r.usePolling=!0:r.usePolling=!!c}let a=process.env.CHOKIDAR_INTERVAL;a&&(r.interval=Number.parseInt(a,10));let o=0;this._emitReady=()=>{o++,o>=this._readyCount&&(this._emitReady=at,this._readyEmitted=!0,process.nextTick(()=>this.emit(E.READY)))},this._emitRaw=(...c)=>this.emit(E.RAW,...c),this._boundRemove=this._remove.bind(this),this.options=r,this._nodeFsHandler=new ot(this),Object.freeze(r)}_addIgnoredPath(t){if(Xt(t)){for(let e of this._ignoredPaths)if(Xt(e)&&e.path===t.path&&e.recursive===t.recursive)return}this._ignoredPaths.add(t)}_removeIgnoredPath(t){if(this._ignoredPaths.delete(t),typeof t=="string")for(let e of this._ignoredPaths)Xt(e)&&e.path===t&&this._ignoredPaths.delete(e)}add(t,e,s){let{cwd:r}=this.options;this.closed=!1,this._closePromise=void 0;let i=ze(t);return r&&(i=i.map(a=>Bn(a,r))),i.forEach(a=>{this._removeIgnoredPath(a)}),this._userIgnored=void 0,this._readyCount||(this._readyCount=0),this._readyCount+=i.length,Promise.all(i.map(async a=>{let o=await this._nodeFsHandler._addToNodeFs(a,!s,void 0,0,e);return o&&this._emitReady(),o})).then(a=>{this.closed||a.forEach(o=>{o&&this.add(m.dirname(o),m.basename(e||o))})}),this}unwatch(t){if(this.closed)return this;let e=ze(t),{cwd:s}=this.options;return e.forEach(r=>{!m.isAbsolute(r)&&!this._closers.has(r)&&(s&&(r=m.join(s,r)),r=m.resolve(r)),this._closePath(r),this._addIgnoredPath(r),this._watched.has(r)&&this._addIgnoredPath({path:r,recursive:!0}),this._userIgnored=void 0}),this}close(){if(this._closePromise)return this._closePromise;this.closed=!0,this.removeAllListeners();let t=[];return this._closers.forEach(e=>e.forEach(s=>{let r=s();r instanceof Promise&&t.push(r)})),this._streams.forEach(e=>e.destroy()),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach(e=>e.dispose()),this._closers.clear(),this._watched.clear(),this._streams.clear(),this._symlinkPaths.clear(),this._throttled.clear(),this._closePromise=t.length?Promise.all(t).then(()=>{}):Promise.resolve(),this._closePromise}getWatched(){let t={};return this._watched.forEach((e,s)=>{let i=(this.options.cwd?m.relative(this.options.cwd,s):s)||Ue;t[i]=e.getChildren().sort()}),t}emitWithAll(t,e){this.emit(t,...e),t!==E.ERROR&&this.emit(E.ALL,t,...e)}async _emit(t,e,s){if(this.closed)return;let r=this.options;Vt&&(e=m.normalize(e)),r.cwd&&(e=m.relative(r.cwd,e));let i=[e];s!=null&&i.push(s);let a=r.awaitWriteFinish,o;if(a&&(o=this._pendingWrites.get(e)))return o.lastChange=new Date,this;if(r.atomic){if(t===E.UNLINK)return this._pendingUnlinks.set(e,[t,...i]),setTimeout(()=>{this._pendingUnlinks.forEach((c,u)=>{this.emit(...c),this.emit(E.ALL,...c),this._pendingUnlinks.delete(u)})},typeof r.atomic=="number"?r.atomic:100),this;t===E.ADD&&this._pendingUnlinks.has(e)&&(t=E.CHANGE,this._pendingUnlinks.delete(e))}if(a&&(t===E.ADD||t===E.CHANGE)&&this._readyEmitted){let c=(u,l)=>{u?(t=E.ERROR,i[0]=u,this.emitWithAll(t,i)):l&&(i.length>1?i[1]=l:i.push(l),this.emitWithAll(t,i))};return this._awaitWriteFinish(e,a.stabilityThreshold,t,c),this}if(t===E.CHANGE&&!this._throttle(E.CHANGE,e,50))return this;if(r.alwaysStat&&s===void 0&&(t===E.ADD||t===E.ADD_DIR||t===E.CHANGE)){let c=r.cwd?m.join(r.cwd,e):e,u;try{u=await(0,dt.stat)(c)}catch{}if(!u||this.closed)return;i.push(u)}return this.emitWithAll(t,i),this}_handleError(t){let e=t&&t.code;return t&&e!=="ENOENT"&&e!=="ENOTDIR"&&(!this.options.ignorePermissionErrors||e!=="EPERM"&&e!=="EACCES")&&this.emit(E.ERROR,t),t||this.closed}_throttle(t,e,s){this._throttled.has(t)||this._throttled.set(t,new Map);let r=this._throttled.get(t);if(!r)throw new Error("invalid throttle");let i=r.get(e);if(i)return i.count++,!1;let a,o=()=>{let u=r.get(e),l=u?u.count:0;return r.delete(e),clearTimeout(a),u&&clearTimeout(u.timeoutObject),l};a=setTimeout(o,s);let c={timeoutObject:a,clear:o,count:0};return r.set(e,c),c}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(t,e,s,r){let i=this.options.awaitWriteFinish;if(typeof i!="object")return;let a=i.pollInterval,o,c=t;this.options.cwd&&!m.isAbsolute(t)&&(c=m.join(this.options.cwd,t));let u=new Date,l=this._pendingWrites;function d(f){(0,je.stat)(c,(h,T)=>{if(h||!l.has(t)){h&&h.code!=="ENOENT"&&r(h);return}let P=Number(new Date);f&&T.size!==f.size&&(l.get(t).lastChange=P);let k=l.get(t);P-k.lastChange>=e?(l.delete(t),r(void 0,T)):o=setTimeout(d,a,T)})}l.has(t)||(l.set(t,{lastChange:u,cancelWait:()=>(l.delete(t),clearTimeout(o),s)}),o=setTimeout(d,a))}_isIgnored(t,e){if(this.options.atomic&&jn.test(t))return!0;if(!this._userIgnored){let{cwd:s}=this.options,i=(this.options.ignored||[]).map($e(s)),o=[...[...this._ignoredPaths].map($e(s)),...i];this._userIgnored=Kn(o,void 0)}return this._userIgnored(t,e)}_isntIgnored(t,e){return!this._isIgnored(t,e)}_getWatchHelpers(t){return new ut(t,this.options.followSymlinks,this)}_getWatchedDir(t){let e=m.resolve(t);return this._watched.has(e)||this._watched.set(e,new Jt(e,this._boundRemove)),this._watched.get(e)}_hasReadPermissions(t){return this.options.ignorePermissionErrors?!0:!!(Number(t.mode)&256)}_remove(t,e,s){let r=m.join(t,e),i=m.resolve(r);if(s=s??(this._watched.has(r)||this._watched.has(i)),!this._throttle("remove",r,100))return;!s&&this._watched.size===1&&this.add(t,e,!0),this._getWatchedDir(r).getChildren().forEach(f=>this._remove(r,f));let c=this._getWatchedDir(t),u=c.has(e);c.remove(e),this._symlinkPaths.has(i)&&this._symlinkPaths.delete(i);let l=r;if(this.options.cwd&&(l=m.relative(this.options.cwd,r)),this.options.awaitWriteFinish&&this._pendingWrites.has(l)&&this._pendingWrites.get(l).cancelWait()===E.ADD)return;this._watched.delete(r),this._watched.delete(i);let d=s?E.UNLINK_DIR:E.UNLINK;u&&!this._isIgnored(r)&&this._emit(d,r),this._closePath(r)}_closePath(t){this._closeFile(t);let e=m.dirname(t);this._getWatchedDir(e).remove(m.basename(t))}_closeFile(t){let e=this._closers.get(t);e&&(e.forEach(s=>s()),this._closers.delete(t))}_addPathCloser(t,e){if(!e)return;let s=this._closers.get(t);s||(s=[],this._closers.set(t,s)),s.push(e)}_readdirp(t,e){if(this.closed)return;let s={type:E.ALL,alwaysStat:!0,lstat:!0,...e,depth:0},r=Me(t,s);return this._streams.add(r),r.once(Fe,()=>{r=void 0}),r.once(Gt,()=>{r&&(this._streams.delete(r),r=void 0)}),r}};Xn={watch:Ke,FSWatcher:B}});var Jn={};ee(Jn,{TSFilebasedRouter:()=>Ve,TSRouter:()=>nt,createClientFunc:()=>oe,createSignal:()=>Wt,createTSServerFunc:()=>ie,html:()=>gt,initializeRoute:()=>Qe,loadPyFiles:()=>Ot,mapper:()=>se,renderChildRoutes:()=>Ft,useAnchor:()=>q,useAnchorSingle:()=>Lt,useInitialDOM:()=>Rt,useTSAuth:()=>At,useTSCollection:()=>Mt,useTSComponent:()=>j,useTSElementEach:()=>Z,useTSElements:()=>Pt,useTSEvent:()=>Et,useTSEventAll:()=>St,useTSExtractParams:()=>Tt,useTSLazy:()=>It,useTSMetaData:()=>xt,useTSNavigate:()=>Dt,useTSNoReload:()=>zt,useTSOutlet:()=>Ct,useTSParams:()=>$,useTSPurifier:()=>wt,useTSQuery:()=>et,useTSReactor:()=>$t,useTSSSRHydration:()=>kt,useTSSelect:()=>N,useTSloadBrython:()=>Ht});module.exports=sn(Jn);var re=v(require("dompurify"),1),pt=null;function on(){return typeof window>"u"?null:(pt||(pt=(0,re.default)(window)),pt)}var an=["div","span","p","a","button","ul","li","img","input","form","label","h1","h2","h3","h4","h5","h6","section","main","article","svg","path","circle","rect","line","polyline","polygon","g"],cn=["class","id","href","src","alt","title","type","value","name","placeholder","target","rel","data-click","data-change","data-select","data-effect","data-hover","data-submit","data-key","data-event","data-component","data-stagger","data-input"];function ln(n){return/^(https?:\/\/|\/|#)/i.test(n.trim())}function un(n){if(typeof window>"u")return n;let t=document.createElement("template");return t.innerHTML=n,t.content.querySelectorAll("*").forEach(e=>{[...e.attributes].forEach(s=>{let r=s.name.toLowerCase();if(r.startsWith("on")||r.startsWith("xlink")||r.startsWith("xml")){e.removeAttribute(s.name);return}(r==="href"||r==="src")&&!ln(s.value)&&e.setAttribute(r,"#")}),e.tagName==="A"&&e.getAttribute("target")==="_blank"&&e.setAttribute("rel","noopener noreferrer")}),t.innerHTML}function gt(n,...t){let e=on(),s=n.reduce((i,a,o)=>{let c=o<t.length?String(t[o]??""):"";return i+a+c},"");if(!e)return s;let r=e.sanitize(s,{ALLOWED_TAGS:an,ALLOWED_ATTR:cn,RETURN_DOM:!1});return un(r)}var se=(n,t)=>n.reduce((e,s,r)=>e+t(s,r),"");function ie(n){return n}function oe(n){return new Proxy({},{get(t,e){return async s=>n(e,s)}})}var yt=v(require("dompurify"),1),wt=(n,t)=>{let s={...{ADD_TAGS:["my-custom-tag"]},...t};return typeof n=="string"?yt.default.sanitize(n,s):yt.default.sanitize(n.innerHTML,s)};var Et=(n,t,e)=>{if(!(typeof window>"u"||typeof document>"u"))if(typeof n=="string"){let s=document.getElementById(n);s?s.addEventListener(t,e):console.warn(`Element with id '${n}' not found.`)}else n instanceof HTMLElement?n.addEventListener(t,e):n===document?document.addEventListener(t,e):console.warn("Invalid target parameter provided.")};var ae=require("zustand/vanilla"),ce=v(require("dompurify"),1);function X(n){return ce.default.sanitize(n??"")}function Q(n,t){let e=Object.keys(n),s=Object.keys(t);if(e.length!==s.length)return!1;for(let r of e)if(n[r]!==t[r])return!1;return!0}function dn(n,t){let e=[],s=n.replace(/:[^/]+/g,o=>(e.push(o.slice(1)),"([^/]+)")),r=new RegExp(`^${s}$`),i=t.match(r),a={};return i&&e.forEach((o,c)=>{a[o]=X(i[c+1]??"")}),a}function fn(n){let t={},e=new URLSearchParams(n);for(let[s,r]of e.entries())t[s]=X(r);return t}var $=(0,ae.createStore)((n,t)=>({params:{},query:{},setFromPattern:e=>{let s=window.location.pathname,r=dn(e,s),i=fn(window.location.search),a=t();(!Q(a.params,r)||!Q(a.query,i))&&n({params:r,query:i})},setFromPatternValues:(e,s)=>{let r={};e.forEach((a,o)=>{r[a]=X(s[o]??"")});let i=t();Q(i.params,r)||n({params:r})},setQuery:e=>{let s={};for(let i in e)s[i]=X(e[i]);let r=t();Q(r.query,s)||n({query:s})},getParam:e=>t().params[e],getQuery:e=>t().query[e]}));function Tt(n){let t=$.getState();t.setFromPattern(n);let e=t.params,s=t.query;return{...e,...s}}var St=(n,t,e)=>{let s=document.querySelectorAll(n);return s.forEach(r=>{r.addEventListener(t,e)}),()=>{s.forEach(r=>{r.removeEventListener(t,e)})}};var he=require("motion"),me=v(require("dompurify"),1),_t=typeof window<"u"&&typeof document<"u",le=["div","span","p","a","button","ul","li","img","input","form","label","h1","h2","h3","h4","h5","h6","section","main","article"],ue=["class","id","href","src","alt","title","type","value","name","placeholder","data-click","data-change","data-select","data-effect","data-hover","data-submit","data-key","data-event","data-component","data-stagger","data-input","data-children","data-slot","target","rel"],de=_t?(0,me.default)(window):{sanitize:(n,t)=>n};function hn(n){return/^(https?:\/\/|\/|#)/i.test(n.trim())}function mn(n){_t&&n.querySelectorAll("*").forEach(t=>{[...t.attributes].forEach(e=>{let s=e.name.toLowerCase();if(s.startsWith("on")){t.removeAttribute(e.name);return}(s==="href"||s==="src")&&!hn(e.value)&&t.setAttribute(s,"#")}),t.tagName==="A"&&t.getAttribute("target")==="_blank"&&t.setAttribute("rel","noopener noreferrer")})}function fe(n){let t={},e={},s=400,r=0,i="ease-in-out",a=0,o=!1,c,u;return n.split(/\s+/).forEach(l=>{l==="fade-in"&&(t.opacity=0,e.opacity=1),l==="fade-out"&&(t.opacity=1,e.opacity=0),l==="slide-up"&&(t.y=20,e.y=0),l==="slide-down"&&(t.y=-20,e.y=0),l==="slide-left"&&(t.x=20,e.x=0),l==="slide-right"&&(t.x=-20,e.x=0),l.startsWith("duration-")&&(s=+l.replace("duration-","")),l.startsWith("delay-")&&(r=+l.replace("delay-","")),(l==="linear"||l.startsWith("ease"))&&(i=l),l==="infinite"&&(a=1/0),l==="replay"&&(o=!0),l.startsWith("parallax-y-")&&(c=+l.replace("parallax-y-","")),l.startsWith("parallax-x-")&&(u=+l.replace("parallax-x-",""))}),{from:t,to:e,duration:s,easing:i,delay:r,repeat:a,replay:o,parallaxY:c,parallaxX:u}}function pn(n,t){n.querySelectorAll("[data-component]").forEach(e=>{let s=e.dataset.component;t[s]?.(e)})}var Pt=(n,t,e={},s)=>{if(!_t||!n)return{html:de.sanitize(t,{ALLOWED_TAGS:le,ALLOWED_ATTR:ue,...s})};let r=de.sanitize(t,{ALLOWED_TAGS:le,ALLOWED_ATTR:ue,...s});n.innerHTML=r,mn(n);let i=l=>{let d=l.target.closest("[data-click]");d&&e[d.dataset.click]?.(d)};n.addEventListener("click",i),n.querySelectorAll("[data-input]").forEach(l=>{let d=l.dataset.input;e[d]?.(l),l.addEventListener("input",()=>{e[d]?.(l)})}),pn(n,e);let a=[];n.querySelectorAll("[data-effect]").forEach(l=>{let d=fe(l.dataset.effect||"");(d.parallaxX||d.parallaxY)&&a.push({el:l,...d})});let o=!1,c=()=>{o||(o=!0,requestAnimationFrame(()=>{let l=window.scrollY;a.forEach(({el:d,parallaxX:f,parallaxY:h})=>{d.style.transform=`translate3d(${(f||0)*l}px, ${(h||0)*l}px, 0)`}),o=!1}))};window.addEventListener("scroll",c);let u=new IntersectionObserver(l=>{l.forEach(d=>{let f=d.target,h=fe(f.dataset.effect||"");d.isIntersecting?(Object.assign(f.style,h.from),setTimeout(()=>{(0,he.animate)(f,h.to,{duration:h.duration/1e3,easing:h.easing,repeat:h.repeat})},h.delay),h.replay||u.unobserve(f)):h.replay&&Object.assign(f.style,h.from)})});return n.querySelectorAll("[data-effect]").forEach(l=>u.observe(l)),{cleanup(){u.disconnect(),window.removeEventListener("scroll",c),n.removeEventListener("click",i)}}};var vt=v(require("dompurify"),1),J=null,Rt=(n,t)=>{if(typeof document>"u")return;let e=document.getElementById(n);if(!e)return;vt.default.addHook("uponSanitizeAttribute",(a,o)=>{let c=(o.attrName||"").toLowerCase(),u=(o.attrValue??"").toString().trim();if(c.startsWith("on")){o.keepAttr=!1;return}if((c==="href"||c==="src")&&/^(javascript:|vbscript:|data:|file:|about:)/i.test(u)){o.keepAttr=!1;return}if(c==="class"){let d=u.split(/\s+/).filter(Boolean).filter(f=>{if(/^[a-zA-Z0-9\-\:\/_\[\]\(\)]+$/.test(f)){if(/^bg-\[url\(.*\)\]$/.test(f)){let h=f.replace(/^bg-\[url\(/,"").replace(/\)\]$/,"").replace(/^['"]|['"]$/g,"");return h===""||/^https?:\/\//i.test(h)||/^\/(?!\/)/.test(h)||/^\.{0,2}\//.test(h)}return!0}return!1});o.attrValue=d.join(" ");return}if(c==="style"){o.keepAttr=!1;return}});let s=e.cloneNode(!0),r=vt.default.sanitize(s.innerHTML,{USE_PROFILES:{html:!0},ALLOWED_TAGS:["div","span","p","h1","h2","h3","h4","h5","h6","ul","ol","li","strong","em","a","img","br","form","button","input","label"],ALLOWED_ATTR:["href","src","alt","title","class","id","type","name","value","placeholder","data-click","data-change","data-submit","data-select","data-hover","data-classlist"],FORBID_TAGS:["script","iframe","object","embed","body","html","svg","math","link","meta"],ALLOW_DATA_ATTR:!0,KEEP_CONTENT:!1,RETURN_DOM_FRAGMENT:!0}),i=Array.from(r.childNodes).map(a=>a.outerHTML||a.textContent||"").join("");if(J!==null&&i!==J){let a=document.createElement("div");t(a);let c=new DOMParser().parseFromString(J,"text/html");for(;e.firstChild;)e.removeChild(e.firstChild);c.body.childNodes.forEach(u=>e.appendChild(u.cloneNode(!0)))}else{for(J=i;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(r),t(e)}};var bt=v(require("dompurify"),1);typeof window<"u"&&!window.__anchorSinglePopstateHandlerAttached&&(window.addEventListener("popstate",n=>{let t=n.state;t?.scrollPosition!==void 0&&window.scrollTo(0,t.scrollPosition)}),window.__anchorSinglePopstateHandlerAttached=!0);var Lt=(n,t,e,s="",r=null)=>{if(!n)return;let i=bt.default.sanitize(t,{ALLOWED_URI_REGEXP:/^(https?:|\/)/}),a=bt.default.sanitize(e,{USE_PROFILES:{html:!1}});n.setAttribute("href",i),n.setAttribute("aria-label",a),s&&(n.className=s.trim()),r&&n.replaceChildren(r),typeof window<"u"&&n.addEventListener("click",o=>{o.preventDefault();let u=o.currentTarget.getAttribute("href");if(u){let l=window.scrollY;window.scrollTo(0,0),window.history.pushState({scrollPosition:l},"",u),dispatchEvent(new PopStateEvent("popstate"))}})};var x=v(require("dompurify"),1);var pe=(n="'self' 'nonce-rAnd0m123' 'unsafe-inline' 'unsafe-eval'",t="'self' 'nonce-rAnd0m123'",e="'none'",s="'self' https://fonts.googleapis.com https://fonts.gstatic.com",r="'self' https://blogger.googleusercontent.com",i=["'self'","https://fonts.googleapis.com","https://fonts.gstatic.com","https://www.google.com/maps/"],a="'self' https://www.youtube.com",o="'self'",c="/csp-report",u=!1)=>{let l=()=>{try{let d=document.querySelector('meta[http-equiv="Content-Security-Policy"]');d||(d=document.createElement("meta"),d.setAttribute("http-equiv","Content-Security-Policy"),document.head.appendChild(d));let f=u?`report-uri ${c};`:"";d.setAttribute("content",`default-src 'self'; script-src ${n}; style-src ${t}; object-src ${e}; font-src ${s}; img-src ${r}; connect-src ${i.join(" ")}; frame-src ${a}; base-uri ${o}; ${f}`)}catch(d){console.error("Error adding CSP meta element:",d)}};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",l):l()};var xt=(n,t)=>{let e={name:x.default.sanitize(n.name||""),title:x.default.sanitize(n.title||""),description:x.default.sanitize(n.description||"Default description"),author:x.default.sanitize(n.author||""),favicon:n.favicon},s=S=>{e.name=x.default.sanitize(S),P("name",e.name)},r=S=>{e.title=x.default.sanitize(S),document.title=e.title},i=S=>{e.description=x.default.sanitize(S),P("description",e.description)},a=S=>{e.author=x.default.sanitize(S),P("author",e.author)},o=S=>{e.favicon=x.default.sanitize(S);let p=document.querySelector('link[rel="icon"]');p||(p=document.createElement("link"),p.rel="icon",document.head.appendChild(p)),p.href=e.favicon},c=()=>e.name,u=()=>e.title,l=()=>e.description,d=()=>e.author,f=()=>e.favicon,h=()=>e,T=(S,p)=>{let g=document.createElement("meta");g.setAttribute("name",S),g.setAttribute("content",p),document.head.appendChild(g)},P=(S,p)=>{let g=document.querySelector(`meta[name="${S}"]`);g?g.setAttribute("content",p):T(S,p)},k=()=>{e.title&&(document.title=e.title),e.name&&P("name",e.name),e.description&&P("description",e.description),e.author&&P("author",e.author),e.favicon&&o(e.favicon)};return t&&pe(t.scriptSrc,t.styleSrc,t.objectSrc,Array.isArray(t.connectSrc)?t.connectSrc.join(" "):t.connectSrc,t.reportOnly!==void 0?String(t.reportOnly):void 0),k(),{setName:s,setTitle:r,setDescription:i,setAuthor:a,setFavicon:o,getName:c,getTitle:u,getDescription:l,getAuthor:d,getFavicon:f,getAllMetaData:h,appendMetaTagsToHead:k}};var ge=v(require("dompurify"),1),j=(n,t,e,s,r)=>{let i=`#${n}`,a=t.querySelectorAll(i);if(a.length===0)throw new Error(`[useTSComponent] No element found with id '${n}' in the given parent.`);if(a.length>1)throw new Error(`[useTSComponent] Duplicate id '${n}' detected. Found ${a.length} elements.`);let o=a[0];o.innerHTML=ge.default.sanitize(o.innerHTML,{USE_PROFILES:{html:!0}}),e(o,s,r)};var Mt=(n,t,e,s=[])=>{let r=new Set;n.forEach((i,a)=>{if(r.has(i)){console.warn(`[useTSCollection] Duplicate ID in collection array: "${i}" \u2014 skipping.`);return}r.add(i);let o=t.querySelectorAll(`#${i}`);if(o.length>1){console.warn(`[useTSCollection] Duplicate ID in DOM: "${i}" (${o.length} elements found) \u2014 skipping component mount.`);return}let c=e[a],u=Array.isArray(s)?s[a]:void 0;typeof c=="function"?j(i,t,c,u):console.warn(`[useTSCollection] No valid component function found for ID: "${i}"`)})};var N=(n,t)=>{let s=(t??document).querySelectorAll(n);if(s.length===0)return process.env.NODE_ENV!=="production"&&console.warn(`[useTSSelect] No element found for selector: '${n}'`),null;if(n.startsWith("#")&&s.length>1){if(process.env.NODE_ENV!=="production")throw new Error(`[useTSSelect] Duplicate ID detected: '${n}'. Found ${s.length} elements with this ID.`);return s[0]}return s.length>1&&process.env.NODE_ENV!=="production"&&console.warn(`[useTSSelect] Multiple elements found for selector: '${n}'. Returning the first one.`),s[0]};var ye=require("jwt-decode"),At=(n,t)=>{let e=localStorage.getItem("token");if(!e)return window.location.href=t,null;try{let s=(0,ye.jwtDecode)(e),r=Date.now()/1e3;return s.exp&&s.exp<r&&(console.error("Token has expired"),window.localStorage.removeItem("token"),window.location.href=t),null}catch(s){return console.error("Invalid token:",s),window.location.href=t,null}};var Z=(n,t,e)=>{n.forEach(s=>{t.forEach(r=>{s.addEventListener(r,i=>{e(s,i)})})})};var Dt=()=>({back:()=>window.history.back(),forward:()=>window.history.forward()});var Ct=(n,t)=>{let e=document.querySelector(`#${n}`)||document.querySelector(`.${n}`);if(!e)return;let s=window.location.pathname.replace(/\/$/,"");for(let r of t){let i=r.path.replace(/\/$/,"");if(s===i||s.startsWith(`${i}/`)){r.component(e);break}}};function Ft(n,t){let e=window.location.pathname.replace(/\/$/,"");t.routes.forEach(s=>{s.children?.length&&s.children.forEach(r=>{let i=r.path.replace(/\/$/,"");if(e===i||e.startsWith(`${i}/`)){let a=n.querySelector(`#${r.outlet}`)||n.querySelector(`.${r.outlet}`);a instanceof HTMLElement&&r.element&&r.element(a)}})})}var Ht=async()=>{let n="https://cdn.jsdelivr.net/npm/brython@3/brython.min.js",t="https://cdn.jsdelivr.net/npm/brython@3/brython_stdlib.js",e=s=>new Promise((r,i)=>{let a=document.createElement("script");a.src=s,a.onload=()=>r(),a.onerror=()=>i(new Error(`Failed to load ${s}`)),document.head.appendChild(a)});await e(n),await e(t),typeof window.brython=="function"?window.brython():console.error("Brython did not load correctly.")},Ot=n=>new Promise((t,e)=>{let s=document.createElement("script");s.type="text/python",s.src=`/src/python/${n}`,s.onload=()=>t(),s.onerror=()=>e(new Error(`Failed to load ${n}`)),document.body.appendChild(s)});function It(n){let t=null;return async(e,s)=>{try{if(!t){let r=await n();t=r.default||r}if(typeof t=="function")return t(e,s);if(t instanceof HTMLElement){let r=t.cloneNode(!0);return e?.appendChild(r),r}if(typeof t=="object"&&t!==null&&"render"in t&&typeof t.render=="function")return t.render(e,s);console.warn("useTSLazy: Unsupported module type",t)}catch(r){console.error("useTSLazy failed:",r)}}}var kt=n=>typeof window>"u"?{isDOM:null}:{isDOM:n||document.body};var we=require("lodash-es"),Nt=n=>n;typeof window<"u"&&typeof document<"u"&&(Nt=n=>{let t=document.createElement("div");return t.innerText=n,t.innerHTML});var gn=n=>{(n?Array.isArray(n)?n:n instanceof HTMLAnchorElement?[n]:Array.from(n):Array.from(document.querySelectorAll("a"))).forEach(e=>{if(!e||e.dataset.anchorEnhanced==="true")return;e.dataset.anchorEnhanced="true";let s=e.getAttribute("class")||"";e.setAttribute("class",Nt(s));let r=e.getAttribute("aria-label");r&&e.setAttribute("aria-label",Nt(r));let i=e.querySelector(":scope > *");i&&(e.innerHTML="",e.appendChild(i));let a=e.getAttribute("href")||"";if(!a.startsWith("#")){try{if(new URL(a,window.location.href).origin!==window.location.origin)return}catch{return}e.addEventListener("click",o=>{o.preventDefault();let c=e.getAttribute("href")||"";try{let u=new URL(c,window.location.href);window.history.pushState({},"",u.pathname+u.search+u.hash),window.dispatchEvent(new PopStateEvent("popstate"))}catch(u){console.error("Invalid URL in anchor:",c,u)}})}})},yn=(0,we.debounce)(gn,50),q=n=>{yn(n)};var zt=n=>{if(!n)return;let t=N("a",n);q(t)};var Ee=n=>{let t=n,e=[];return[()=>t,a=>{t=typeof a=="function"?a(t):a,e.forEach(o=>o(t))},a=>{e.push(a),a(t)}]};function Te(n,t,e){let s=()=>{n.textContent=t().toString(),e?.(t())};s();let r=t.set;r&&(t.set=i=>{r(i),s()})}function Wt(n){let[t,e,s]=Ee(n),r=[],i=(()=>t());return i.set=a=>{e(a),r.forEach(o=>o(i()))},i.bind=a=>Te(a,i),i.subscribe=a=>{r.push(a),a(i())},i}function $t(n,t){let e={deps:t.map(r=>typeof r=="function"?r():r)},s=n();typeof s=="function"&&(e.cleanup=s),t.forEach((r,i)=>{typeof r=="function"&&"bind"in r&&r.subscribe?.(()=>{let o=r(),c=e.deps[i];if(o!==c){e.cleanup?.(),e.deps[i]=o;let u=n();typeof u=="function"&&(e.cleanup=u)}})})}var w={params:{},query:{}},jt=new Set;function wn(){return{params:{...w.params},query:{...w.query}}}function U(n,t){let e=Object.keys(n),s=Object.keys(t);if(e.length!==s.length)return!1;for(let r of e)if(n[r]!==t[r])return!1;return!0}function H(){let n=wn();jt.forEach(t=>t(n))}function En(n){let t={};if(!n)return t;let e=n.startsWith("?")?n.slice(1):n;for(let s of e.split("&")){if(!s)continue;let[r,i]=s.split("=");r&&(t[decodeURIComponent(r)]=decodeURIComponent(i||""))}return t}function Tn(n){let t=new URLSearchParams;for(let s in n){let r=n[s];r!=null&&r!==""&&t.set(s,r)}let e=t.toString();return e?`?${e}`:""}function tt(){if(typeof window>"u")return;let n=window.location.pathname,t=window.location.hash,e=Tn(w.query);history.replaceState({},"",n+e+t)}var et={getState(){return{params:w.params,query:w.query,getParam:n=>w.params[n],getQuery:n=>w.query[n],setFromPattern(n){if(typeof window>"u")return;let t=n.match(/:([^/]+)/g)?.map(r=>r.slice(1))||[],e=window.location.pathname.split("/").filter(Boolean),s={};t.forEach((r,i)=>{s[r]=e[i]}),U(w.params,s)||(w.params=s,H())},setFromPatternValues(n,t){let e={};n.forEach((s,r)=>{e[s]=t[r]}),U(w.params,e)||(w.params=e,H())},setQuery(n){let t={...w.query,...n};U(w.query,t)||(w.query=t,tt(),H())},replaceQuery(n){U(w.query,n)||(w.query={...n},tt(),H())},removeQuery(n){if(!(n in w.query))return;let t={...w.query};delete t[n],w.query=t,tt(),H()},clearQuery(){Object.keys(w.query).length!==0&&(w.query={},tt(),H())},setQueryFromURL(n){let t=En(n);U(w.query,t)||(w.query=t,H())},subscribe(n){return jt.add(n),()=>jt.delete(n)}}}};typeof window<"u"&&window.addEventListener("popstate",()=>{et.getState().setQueryFromURL(window.location.search)});var qt=v(require("dompurify"),1);var _e=require("zustand/vanilla"),Pe=v(require("dompurify"),1),F=(0,_e.createStore)(n=>({params:{},query:{},setParams:t=>n(()=>({params:Se(t)})),setQuery:t=>n(()=>({query:Se(t)}))}));function Se(n){let t={};for(let e in n)t[e]=Pe.default.sanitize(n[e]);return t}var nt=class{routes=[];expectedParams;apiFetcher;constructor(t,e,s){this.routes=t,this.expectedParams=new Set(e),this.apiFetcher=s,window.addEventListener("popstate",this.handlePopState.bind(this)),this.handlePopState()}handlePopState(){let t=window.location.pathname,e=window.location.search,s=this.parseQueryParams(e);if(t.startsWith("/api")&&this.apiFetcher){let a=t.replace("/api/","").split("/")[0],o=Object.fromEntries(new URLSearchParams(e));this.apiFetcher(a,o).then(c=>console.log("API response:",c)).catch(c=>console.error("API error:",c));return}let r=this.findMatchingRoute(t,this.routes);if(r){if(r.routeto){this.navigate(r.routeto);return}let i=this.filterAndSanitizeParams(r.params);F.getState().setParams(i),F.getState().setQuery(s);let a=document.createElement("div");if(r.element?.(a,i,s),r.children){let o=t.slice(r.path.length),c=a.querySelector("#child");c&&this.renderChildren(r.children,o,c,i,s)}}else{let i=this.findMatchingRoute("*",this.routes);if(i){let a=this.filterAndSanitizeParams(i.params);F.getState().setParams(a),F.getState().setQuery(s);let o=document.createElement("div");i.element?.(o,a,s)}}}renderChildren(t,e,s,r,i){if(!t||t.length===0){let o=s.querySelector("#child");o&&o.remove();return}let a=this.findMatchingRoute(e,t);if(a){let o=document.createElement("div");o.id="child";let c={...r,...a.params},u=this.filterAndSanitizeParams(c);if(F.getState().setParams(u),F.getState().setQuery(i),a.element?.(o,u,i),s.appendChild(o),a.children){let l=e.slice(a.path.length);this.renderChildren(a.children,l,o,u,i)}}}parseQueryParams(t){let e={},s=new URLSearchParams(t);for(let[r,i]of s.entries())this.expectedParams.has(r)&&(e[r]=qt.default.sanitize(i));return e}findMatchingRoute(t,e,s={}){for(let r of e){let i=r.path;if(i==="*")return r;{let o=[],c=i.replace(/:[^\s/]+/g,d=>(o.push(d.substring(1)),"([^\\s/]+)")),u=new RegExp(`^${c}(?:/|$)`),l=t.match(u);if(l){let d={...s};if(o.forEach((f,h)=>{d[f]=l[h+1]??""}),r.children){let f=t.slice(l[0].length),h=this.findMatchingRoute(f,r.children,d);if(h)return h}return{...r,params:d}}}}}filterAndSanitizeParams(t){if(!t)return{};let e={};for(let s in t)this.expectedParams.has(s)&&(e[s]=qt.default.sanitize(t[s]??""));return e}navigate(t){history.pushState(null,"",t),this.handlePopState()}addRoute(t){this.routes.push(t)}};var Ve=()=>({name:"ts-filebased-router",async buildStart(){let n=await import("fs/promises"),t=await import("path"),e=await Promise.resolve().then(()=>(Ge(),Be)),s=t.resolve("src/pages"),r=t.resolve("src/gen"),i=t.resolve("src/routes"),a=t.join(r,"tsrouter.d.ts"),o=t.join(r,"tsrouter.gen.ts"),c=t.join(i,"__root.ts"),u=process.env.NODE_ENV!=="production",l=async p=>n.mkdir(p,{recursive:!0}).catch(()=>{}),d=p=>p.charAt(0).toUpperCase()+p.slice(1),f=p=>{let g="/"+t.relative(s,p).replace(/\\/g,"/");return g=g.replace(/\.ts$/,"").replace(/\/index$/,"")||"/",g.replace(/\[\.\.\.(.+?)\]/g,"*").replace(/\[(.+?)\]/g,":$1")},h=p=>p.replace(/^\//,"").split("/").map(g=>g.startsWith(":")?d(g.slice(1)):g.replace(/\b\w/g,D=>D.toUpperCase()).replace(/[-_]/g,"")).filter(Boolean).join("")||"Index",T=async p=>{let g=await n.readdir(p,{withFileTypes:!0}),D=[];for(let C of g){let W=t.join(p,C.name);if(C.isDirectory())D.push(...await T(W));else if(C.isFile()&&C.name.endsWith(".ts")){let ft=f(W);D.push({file:W,route:ft,name:h(ft)})}}return D},P=()=>`
2
2
  import { createRouter } from "../gen/tsrouter.gen";
3
3
  import { useTSParams, initializeRoute } from "@devwaren/vanilla-ts";
4
4
 
@@ -8,12 +8,12 @@ export const Router = async (DOM: HTMLElement) => {
8
8
  await initializeRoute(router);
9
9
  return router;
10
10
  };
11
- `,I=async()=>{let p=`// AUTO-GENERATED TYPES
11
+ `,k=async()=>{let p=`// AUTO-GENERATED TYPES
12
12
  export type Cleanup = undefined | (() => void);
13
13
  export type RenderResult = Cleanup | Promise<Cleanup> | string;
14
14
  export type Component = (DOM: HTMLElement) => RenderResult;
15
15
  export type Module = { default: Component };
16
- `;await l(r),await n.writeFile(a,p,"utf-8")},S=async()=>{let p=await T(s),E=p.find(_=>_.route==="/notfound"),M=p.filter(_=>_.route!=="/notfound");for(let _ of p)if(!(await n.readFile(_.file,"utf-8")).trim()){let G=_.route.includes(":"),Zt=G?_.route.split("/").filter(ft=>ft.startsWith(":")).map(ft=>ft.slice(1)):[],Xe=G?`const { ${Zt.join(", ")} } = useTSExtractParams("${_.route}");`:"";await n.writeFile(_.file,`import { html, useTSElements, useTSMetaData${G?", useTSExtractParams":""} } from "@devwaren/vanilla-ts";
16
+ `;await l(r),await n.writeFile(a,p,"utf-8")},S=async()=>{let p=await T(s),g=p.find(_=>_.route==="/notfound"),D=p.filter(_=>_.route!=="/notfound");for(let _ of p)if(!(await n.readFile(_.file,"utf-8")).trim()){let G=_.route.includes(":"),te=G?_.route.split("/").filter(ht=>ht.startsWith(":")).map(ht=>ht.slice(1)):[],Je=G?`const { ${te.join(", ")} } = useTSExtractParams("${_.route}");`:"";await n.writeFile(_.file,`import { html, useTSElements, useTSMetaData${G?", useTSExtractParams":""} } from "@devwaren/vanilla-ts";
17
17
 
18
18
  export default function ${_.name}(DOM: HTMLElement) {
19
19
  useTSMetaData({
@@ -21,29 +21,29 @@ export default function ${_.name}(DOM: HTMLElement) {
21
21
  description: "${_.name.toLowerCase()}",
22
22
  });
23
23
 
24
- ${Xe}
24
+ ${Je}
25
25
 
26
26
  return useTSElements(DOM, html\`
27
27
  <div>
28
28
  <h1>${_.name.toLowerCase()}</h1>
29
- ${G?`<pre>\${${Zt.join("}, ${")}}</pre>`:""}
29
+ ${G?`<pre>\${${te.join("}, ${")}}</pre>`:""}
30
30
  </div>
31
31
  \`);
32
32
  };
33
- `,"utf-8")}let k=M.map(_=>{let Jt="../pages/"+t.relative(s,_.file).replace(/\\/g,"/").replace(/\.ts$/,"");return`{ path: "${_.route}", name: "${_.name}", component: () => import("${Jt}") as Promise<import("../gen/tsrouter.d").Module> }`}).join(`,
34
- `),Qe=`// AUTO-GENERATED ROUTER
35
- import { useTSElements, useTSParams, html } from "@devwaren/vanilla-ts";
33
+ `,"utf-8")}let C=D.map(_=>{let Zt="../pages/"+t.relative(s,_.file).replace(/\\/g,"/").replace(/\.ts$/,"");return`{ path: "${_.route}", name: "${_.name}", component: () => import("${Zt}") as Promise<import("../gen/tsrouter.d").Module> }`}).join(`,
34
+ `),W=g?`export const NotFound = async (DOM: HTMLElement) => {
35
+ const mod = await import("../pages/${t.relative(s,g.file).replace(/\\/g,"/").replace(/\\.ts$/,"")}");
36
+ return mod.default(DOM);
37
+ };`:"export const NotFound = (DOM: HTMLElement) =>\n useTSElements(DOM, html`<h1>404 - Page Not Found</h1>`);",Xe=`// AUTO-GENERATED ROUTER
38
+ import { ${["useTSParams",...!g?["useTSElements","html"]:[]].join(", ")} } from "@devwaren/vanilla-ts";
36
39
  import type { Module, Component } from "./tsrouter.d";
37
40
 
38
41
  // -----------------------------
39
- ${E?`export const NotFound = async (DOM: HTMLElement) => {
40
- const mod: import("../gen/tsrouter.d").Module = await import("../pages/${t.relative(s,E.file).replace(/\\/g,"/").replace(/\\.ts$/,"")}");
41
- return mod.default(DOM);
42
- };`:"export const NotFound = (DOM: HTMLElement) =>\n useTSElements(DOM, html`<h1>404 - Page Not Found</h1>`);"}
42
+ ${W}
43
43
 
44
44
  // -----------------------------
45
45
  export const routeTree: { path: string; name: string; component: () => Promise<Module> }[] = [
46
- ${k}
46
+ ${C}
47
47
  ];
48
48
 
49
49
  // -----------------------------
@@ -60,12 +60,18 @@ function matchRoute(pathname: string) {
60
60
  for (let i = 0; i < routeSegments.length; i++) {
61
61
  const routeSeg = routeSegments[i];
62
62
  const pathSeg = pathSegments[i];
63
+
63
64
  if (!routeSeg) continue;
64
65
  if (routeSeg === "*") break;
65
66
 
66
67
  if (!pathSeg) { matched = false; break; }
67
- if (routeSeg.startsWith(":")) params[routeSeg.slice(1)] = pathSeg;
68
- else if (routeSeg !== pathSeg) { matched = false; break; }
68
+
69
+ if (routeSeg.startsWith(":")) {
70
+ params[routeSeg.slice(1)] = pathSeg;
71
+ } else if (routeSeg !== pathSeg) {
72
+ matched = false;
73
+ break;
74
+ }
69
75
  }
70
76
 
71
77
  if (matched) return { route: r, params };
@@ -81,6 +87,7 @@ export async function createRouter(DOM: HTMLElement) {
81
87
  async function loadModule(loader: () => Promise<Module>): Promise<Component> {
82
88
  const cached = moduleCache.get(loader);
83
89
  if (cached) return cached;
90
+
84
91
  const mod = await loader();
85
92
  moduleCache.set(loader, mod.default);
86
93
  return mod.default;
@@ -101,26 +108,40 @@ export async function createRouter(DOM: HTMLElement) {
101
108
  componentLoader = matched.route.component;
102
109
  params = matched.params;
103
110
  } else {
104
- componentLoader = async () => ({ default: NotFound as import("../gen/tsrouter.d").Component });
111
+ componentLoader = async () => ({
112
+ default: NotFound as import("../gen/tsrouter.d").Component,
113
+ });
105
114
  }
106
115
 
107
116
  if (push) history.pushState(null, "", url.pathname + url.search);
108
117
 
109
- useTSParams.getState().setFromPatternValues(Object.keys(params), Object.values(params));
118
+ useTSParams.getState().setFromPatternValues(
119
+ Object.keys(params),
120
+ Object.values(params)
121
+ );
110
122
 
111
123
  const query: Record<string, string> = {};
112
- url.searchParams.forEach((v, k) => { query[k] = v; });
124
+ url.searchParams.forEach((v, k) => {
125
+ query[k] = v;
126
+ });
127
+
113
128
  useTSParams.getState().setQuery(query);
114
129
 
115
130
  currentComponentUnmount?.();
131
+
116
132
  const componentFn = await loadModule(componentLoader);
117
133
  const result = await componentFn(DOM);
118
- currentComponentUnmount = typeof result === "function" ? result : null;
119
- if (typeof result === "string") DOM.innerHTML = result;
134
+
135
+ currentComponentUnmount =
136
+ typeof result === "function" ? result : null;
137
+
138
+ if (typeof result === "string") {
139
+ DOM.innerHTML = result;
140
+ }
120
141
  },
121
142
  };
122
143
  };
123
- `;await l(r),await l(i),await n.writeFile(o,Qe,"utf-8"),await n.writeFile(c,v(),"utf-8")};await l(s),await I(),await S(),u&&e.watch(s,{ignoreInitial:!0}).on("all",async(E,M)=>{M.endsWith(".ts")&&(await S(),console.log("\u267B\uFE0F TS Router regenerated"))}),console.log("\u{1F7E2} TS Filebased Router initialized")}});var Ve=async n=>{typeof window>"u"||typeof document>"u"||(await n.navigate(window.location.pathname+window.location.search,!1),window.addEventListener("popstate",()=>{n.navigate(window.location.pathname+window.location.search,!1)}),document.addEventListener("click",t=>{let e=t;if(e.defaultPrevented||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return;let s=e.target.closest("a");if(!s)return;let r=new URL(s.href);r.origin===window.location.origin&&(e.preventDefault(),n.navigate(r.pathname+r.search))}))};0&&(module.exports={TSFilebasedRouter,TSRouter,createClientFunc,createSignal,createTSServerFunc,html,initializeRoute,loadPyFiles,mapper,renderChildRoutes,useAnchor,useAnchorSingle,useInitialDOM,useTSAuth,useTSCollection,useTSComponent,useTSElementEach,useTSElements,useTSEvent,useTSEventAll,useTSExtractParams,useTSLazy,useTSMetaData,useTSNavigate,useTSNoReload,useTSOutlet,useTSParams,useTSPurifier,useTSQuery,useTSReactor,useTSSSRHydration,useTSSelect,useTSloadBrython});
144
+ `;await l(r),await l(i),await n.writeFile(o,Xe,"utf-8"),await n.writeFile(c,P(),"utf-8")};if(await l(s),await k(),await S(),u){let p=e.watch(s,{ignoreInitial:!0}),g=null;p.on("all",(D,C)=>{C.endsWith(".ts")&&(g&&clearTimeout(g),g=setTimeout(async()=>{await S(),console.log("\u267B\uFE0F TS Router regenerated")},100))})}console.log("\u{1F7E2} TS Filebased Router initialized")}});var Qe=async n=>{typeof window>"u"||typeof document>"u"||(await n.navigate(window.location.pathname+window.location.search,!1),window.addEventListener("popstate",()=>{n.navigate(window.location.pathname+window.location.search,!1)}),document.addEventListener("click",t=>{let e=t;if(e.defaultPrevented||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return;let s=e.target.closest("a");if(!s)return;let r=new URL(s.href);r.origin===window.location.origin&&(e.preventDefault(),n.navigate(r.pathname+r.search))}))};0&&(module.exports={TSFilebasedRouter,TSRouter,createClientFunc,createSignal,createTSServerFunc,html,initializeRoute,loadPyFiles,mapper,renderChildRoutes,useAnchor,useAnchorSingle,useInitialDOM,useTSAuth,useTSCollection,useTSComponent,useTSElementEach,useTSElements,useTSEvent,useTSEventAll,useTSExtractParams,useTSLazy,useTSMetaData,useTSNavigate,useTSNoReload,useTSOutlet,useTSParams,useTSPurifier,useTSQuery,useTSReactor,useTSSSRHydration,useTSSelect,useTSloadBrython});
124
145
  /*! Bundled license information:
125
146
 
126
147
  chokidar/esm/index.js:
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import Ae from"dompurify";var I=null;function Ce(){return typeof window>"u"?null:(I||(I=Ae(window)),I)}var He=["div","span","p","a","button","ul","li","img","input","form","label","h1","h2","h3","h4","h5","h6","section","main","article","svg","path","circle","rect","line","polyline","polygon","g"],Oe=["class","id","href","src","alt","title","type","value","name","placeholder","target","rel","data-click","data-change","data-select","data-effect","data-hover","data-submit","data-key","data-event","data-component","data-stagger","data-input"];function De(n){return/^(https?:\/\/|\/|#)/i.test(n.trim())}function Fe(n){if(typeof window>"u")return n;let e=document.createElement("template");return e.innerHTML=n,e.content.querySelectorAll("*").forEach(t=>{[...t.attributes].forEach(r=>{let o=r.name.toLowerCase();if(o.startsWith("on")||o.startsWith("xlink")||o.startsWith("xml")){t.removeAttribute(r.name);return}(o==="href"||o==="src")&&!De(r.value)&&t.setAttribute(o,"#")}),t.tagName==="A"&&t.getAttribute("target")==="_blank"&&t.setAttribute("rel","noopener noreferrer")}),e.innerHTML}function V(n,...e){let t=Ce(),r=n.reduce((s,i,a)=>{let l=a<e.length?String(e[a]??""):"";return s+i+l},"");if(!t)return r;let o=t.sanitize(r,{ALLOWED_TAGS:He,ALLOWED_ATTR:Oe,RETURN_DOM:!1});return Fe(o)}var $e=(n,e)=>n.reduce((t,r,o)=>t+e(r,o),"");function ke(n){return n}function qe(n){return new Proxy({},{get(e,t){return async r=>n(t,r)}})}import G from"dompurify";var Y=(n,e)=>{let r={...{ADD_TAGS:["my-custom-tag"]},...e};return typeof n=="string"?G.sanitize(n,r):G.sanitize(n.innerHTML,r)};var X=(n,e,t)=>{if(!(typeof window>"u"||typeof document>"u"))if(typeof n=="string"){let r=document.getElementById(n);r?r.addEventListener(e,t):console.warn(`Element with id '${n}' not found.`)}else n instanceof HTMLElement?n.addEventListener(e,t):n===document?document.addEventListener(e,t):console.warn("Invalid target parameter provided.")};import{createStore as Ne}from"zustand/vanilla";import Ie from"dompurify";function O(n){return Ie.sanitize(n??"")}function H(n,e){let t=Object.keys(n),r=Object.keys(e);if(t.length!==r.length)return!1;for(let o of t)if(n[o]!==e[o])return!1;return!0}function ze(n,e){let t=[],r=n.replace(/:[^/]+/g,a=>(t.push(a.slice(1)),"([^/]+)")),o=new RegExp(`^${r}$`),s=e.match(o),i={};return s&&t.forEach((a,l)=>{i[a]=O(s[l+1]??"")}),i}function _e(n){let e={},t=new URLSearchParams(n);for(let[r,o]of t.entries())e[r]=O(o);return e}var D=Ne((n,e)=>({params:{},query:{},setFromPattern:t=>{let r=window.location.pathname,o=ze(t,r),s=_e(window.location.search),i=e();(!H(i.params,o)||!H(i.query,s))&&n({params:o,query:s})},setFromPatternValues:(t,r)=>{let o={};t.forEach((i,a)=>{o[i]=O(r[a]??"")});let s=e();H(s.params,o)||n({params:o})},setQuery:t=>{let r={};for(let s in t)r[s]=O(t[s]);let o=e();H(o.query,r)||n({query:r})},getParam:t=>e().params[t],getQuery:t=>e().query[t]}));function J(n){let e=D.getState();e.setFromPattern(n);let t=e.params,r=e.query;return{...t,...r}}var Z=(n,e,t)=>{let r=document.querySelectorAll(n);return r.forEach(o=>{o.addEventListener(e,t)}),()=>{r.forEach(o=>{o.removeEventListener(e,t)})}};import{animate as Ue}from"motion";import je from"dompurify";var z=typeof window<"u"&&typeof document<"u",ee=["div","span","p","a","button","ul","li","img","input","form","label","h1","h2","h3","h4","h5","h6","section","main","article"],te=["class","id","href","src","alt","title","type","value","name","placeholder","data-click","data-change","data-select","data-effect","data-hover","data-submit","data-key","data-event","data-component","data-stagger","data-input","data-children","data-slot","target","rel"],ne=z?je(window):{sanitize:(n,e)=>n};function We(n){return/^(https?:\/\/|\/|#)/i.test(n.trim())}function Qe(n){z&&n.querySelectorAll("*").forEach(e=>{[...e.attributes].forEach(t=>{let r=t.name.toLowerCase();if(r.startsWith("on")){e.removeAttribute(t.name);return}(r==="href"||r==="src")&&!We(t.value)&&e.setAttribute(r,"#")}),e.tagName==="A"&&e.getAttribute("target")==="_blank"&&e.setAttribute("rel","noopener noreferrer")})}function re(n){let e={},t={},r=400,o=0,s="ease-in-out",i=0,a=!1,l,u;return n.split(/\s+/).forEach(c=>{c==="fade-in"&&(e.opacity=0,t.opacity=1),c==="fade-out"&&(e.opacity=1,t.opacity=0),c==="slide-up"&&(e.y=20,t.y=0),c==="slide-down"&&(e.y=-20,t.y=0),c==="slide-left"&&(e.x=20,t.x=0),c==="slide-right"&&(e.x=-20,t.x=0),c.startsWith("duration-")&&(r=+c.replace("duration-","")),c.startsWith("delay-")&&(o=+c.replace("delay-","")),(c==="linear"||c.startsWith("ease"))&&(s=c),c==="infinite"&&(i=1/0),c==="replay"&&(a=!0),c.startsWith("parallax-y-")&&(l=+c.replace("parallax-y-","")),c.startsWith("parallax-x-")&&(u=+c.replace("parallax-x-",""))}),{from:e,to:t,duration:r,easing:s,delay:o,repeat:i,replay:a,parallaxY:l,parallaxX:u}}function Ke(n,e){n.querySelectorAll("[data-component]").forEach(t=>{let r=t.dataset.component;e[r]?.(t)})}var oe=(n,e,t={},r)=>{if(!z||!n)return{html:ne.sanitize(e,{ALLOWED_TAGS:ee,ALLOWED_ATTR:te,...r})};let o=ne.sanitize(e,{ALLOWED_TAGS:ee,ALLOWED_ATTR:te,...r});n.innerHTML=o,Qe(n);let s=c=>{let d=c.target.closest("[data-click]");d&&t[d.dataset.click]?.(d)};n.addEventListener("click",s),n.querySelectorAll("[data-input]").forEach(c=>{let d=c.dataset.input;t[d]?.(c),c.addEventListener("input",()=>{t[d]?.(c)})}),Ke(n,t);let i=[];n.querySelectorAll("[data-effect]").forEach(c=>{let d=re(c.dataset.effect||"");(d.parallaxX||d.parallaxY)&&i.push({el:c,...d})});let a=!1,l=()=>{a||(a=!0,requestAnimationFrame(()=>{let c=window.scrollY;i.forEach(({el:d,parallaxX:g,parallaxY:p})=>{d.style.transform=`translate3d(${(g||0)*c}px, ${(p||0)*c}px, 0)`}),a=!1}))};window.addEventListener("scroll",l);let u=new IntersectionObserver(c=>{c.forEach(d=>{let g=d.target,p=re(g.dataset.effect||"");d.isIntersecting?(Object.assign(g.style,p.from),setTimeout(()=>{Ue(g,p.to,{duration:p.duration/1e3,easing:p.easing,repeat:p.repeat})},p.delay),p.replay||u.unobserve(g)):p.replay&&Object.assign(g.style,p.from)})});return n.querySelectorAll("[data-effect]").forEach(c=>u.observe(c)),{cleanup(){u.disconnect(),window.removeEventListener("scroll",l),n.removeEventListener("click",s)}}};import se from"dompurify";var F=null,ie=(n,e)=>{if(typeof document>"u")return;let t=document.getElementById(n);if(!t)return;se.addHook("uponSanitizeAttribute",(i,a)=>{let l=(a.attrName||"").toLowerCase(),u=(a.attrValue??"").toString().trim();if(l.startsWith("on")){a.keepAttr=!1;return}if((l==="href"||l==="src")&&/^(javascript:|vbscript:|data:|file:|about:)/i.test(u)){a.keepAttr=!1;return}if(l==="class"){let d=u.split(/\s+/).filter(Boolean).filter(g=>{if(/^[a-zA-Z0-9\-\:\/_\[\]\(\)]+$/.test(g)){if(/^bg-\[url\(.*\)\]$/.test(g)){let p=g.replace(/^bg-\[url\(/,"").replace(/\)\]$/,"").replace(/^['"]|['"]$/g,"");return p===""||/^https?:\/\//i.test(p)||/^\/(?!\/)/.test(p)||/^\.{0,2}\//.test(p)}return!0}return!1});a.attrValue=d.join(" ");return}if(l==="style"){a.keepAttr=!1;return}});let r=t.cloneNode(!0),o=se.sanitize(r.innerHTML,{USE_PROFILES:{html:!0},ALLOWED_TAGS:["div","span","p","h1","h2","h3","h4","h5","h6","ul","ol","li","strong","em","a","img","br","form","button","input","label"],ALLOWED_ATTR:["href","src","alt","title","class","id","type","name","value","placeholder","data-click","data-change","data-submit","data-select","data-hover","data-classlist"],FORBID_TAGS:["script","iframe","object","embed","body","html","svg","math","link","meta"],ALLOW_DATA_ATTR:!0,KEEP_CONTENT:!1,RETURN_DOM_FRAGMENT:!0}),s=Array.from(o.childNodes).map(i=>i.outerHTML||i.textContent||"").join("");if(F!==null&&s!==F){let i=document.createElement("div");e(i);let l=new DOMParser().parseFromString(F,"text/html");for(;t.firstChild;)t.removeChild(t.firstChild);l.body.childNodes.forEach(u=>t.appendChild(u.cloneNode(!0)))}else{for(F=s;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(o),e(t)}};import ae from"dompurify";typeof window<"u"&&!window.__anchorSinglePopstateHandlerAttached&&(window.addEventListener("popstate",n=>{let e=n.state;e?.scrollPosition!==void 0&&window.scrollTo(0,e.scrollPosition)}),window.__anchorSinglePopstateHandlerAttached=!0);var ce=(n,e,t,r="",o=null)=>{if(!n)return;let s=ae.sanitize(e,{ALLOWED_URI_REGEXP:/^(https?:|\/)/}),i=ae.sanitize(t,{USE_PROFILES:{html:!1}});n.setAttribute("href",s),n.setAttribute("aria-label",i),r&&(n.className=r.trim()),o&&n.replaceChildren(o),typeof window<"u"&&n.addEventListener("click",a=>{a.preventDefault();let u=a.currentTarget.getAttribute("href");if(u){let c=window.scrollY;window.scrollTo(0,0),window.history.pushState({scrollPosition:c},"",u),dispatchEvent(new PopStateEvent("popstate"))}})};import E from"dompurify";var le=(n="'self' 'nonce-rAnd0m123' 'unsafe-inline' 'unsafe-eval'",e="'self' 'nonce-rAnd0m123'",t="'none'",r="'self' https://fonts.googleapis.com https://fonts.gstatic.com",o="'self' https://blogger.googleusercontent.com",s=["'self'","https://fonts.googleapis.com","https://fonts.gstatic.com","https://www.google.com/maps/"],i="'self' https://www.youtube.com",a="'self'",l="/csp-report",u=!1)=>{let c=()=>{try{let d=document.querySelector('meta[http-equiv="Content-Security-Policy"]');d||(d=document.createElement("meta"),d.setAttribute("http-equiv","Content-Security-Policy"),document.head.appendChild(d));let g=u?`report-uri ${l};`:"";d.setAttribute("content",`default-src 'self'; script-src ${n}; style-src ${e}; object-src ${t}; font-src ${r}; img-src ${o}; connect-src ${s.join(" ")}; frame-src ${i}; base-uri ${a}; ${g}`)}catch(d){console.error("Error adding CSP meta element:",d)}};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",c):c()};var ue=(n,e)=>{let t={name:E.sanitize(n.name||""),title:E.sanitize(n.title||""),description:E.sanitize(n.description||"Default description"),author:E.sanitize(n.author||""),favicon:n.favicon},r=y=>{t.name=E.sanitize(y),v("name",t.name)},o=y=>{t.title=E.sanitize(y),document.title=t.title},s=y=>{t.description=E.sanitize(y),v("description",t.description)},i=y=>{t.author=E.sanitize(y),v("author",t.author)},a=y=>{t.favicon=E.sanitize(y);let m=document.querySelector('link[rel="icon"]');m||(m=document.createElement("link"),m.rel="icon",document.head.appendChild(m)),m.href=t.favicon},l=()=>t.name,u=()=>t.title,c=()=>t.description,d=()=>t.author,g=()=>t.favicon,p=()=>t,x=(y,m)=>{let h=document.createElement("meta");h.setAttribute("name",y),h.setAttribute("content",m),document.head.appendChild(h)},v=(y,m)=>{let h=document.querySelector(`meta[name="${y}"]`);h?h.setAttribute("content",m):x(y,m)},A=()=>{t.title&&(document.title=t.title),t.name&&v("name",t.name),t.description&&v("description",t.description),t.author&&v("author",t.author),t.favicon&&a(t.favicon)};return e&&le(e.scriptSrc,e.styleSrc,e.objectSrc,Array.isArray(e.connectSrc)?e.connectSrc.join(" "):e.connectSrc,e.reportOnly!==void 0?String(e.reportOnly):void 0),A(),{setName:r,setTitle:o,setDescription:s,setAuthor:i,setFavicon:a,getName:l,getTitle:u,getDescription:c,getAuthor:d,getFavicon:g,getAllMetaData:p,appendMetaTagsToHead:A}};import Be from"dompurify";var $=(n,e,t,r,o)=>{let s=`#${n}`,i=e.querySelectorAll(s);if(i.length===0)throw new Error(`[useTSComponent] No element found with id '${n}' in the given parent.`);if(i.length>1)throw new Error(`[useTSComponent] Duplicate id '${n}' detected. Found ${i.length} elements.`);let a=i[0];a.innerHTML=Be.sanitize(a.innerHTML,{USE_PROFILES:{html:!0}}),t(a,r,o)};var de=(n,e,t,r=[])=>{let o=new Set;n.forEach((s,i)=>{if(o.has(s)){console.warn(`[useTSCollection] Duplicate ID in collection array: "${s}" \u2014 skipping.`);return}o.add(s);let a=e.querySelectorAll(`#${s}`);if(a.length>1){console.warn(`[useTSCollection] Duplicate ID in DOM: "${s}" (${a.length} elements found) \u2014 skipping component mount.`);return}let l=t[i],u=Array.isArray(r)?r[i]:void 0;typeof l=="function"?$(s,e,l,u):console.warn(`[useTSCollection] No valid component function found for ID: "${s}"`)})};var b=(n,e)=>{let r=(e??document).querySelectorAll(n);if(r.length===0)return process.env.NODE_ENV!=="production"&&console.warn(`[useTSSelect] No element found for selector: '${n}'`),null;if(n.startsWith("#")&&r.length>1){if(process.env.NODE_ENV!=="production")throw new Error(`[useTSSelect] Duplicate ID detected: '${n}'. Found ${r.length} elements with this ID.`);return r[0]}return r.length>1&&process.env.NODE_ENV!=="production"&&console.warn(`[useTSSelect] Multiple elements found for selector: '${n}'. Returning the first one.`),r[0]};import{jwtDecode as Ve}from"jwt-decode";var me=(n,e)=>{let t=localStorage.getItem("token");if(!t)return window.location.href=e,null;try{let r=Ve(t),o=Date.now()/1e3;return r.exp&&r.exp<o&&(console.error("Token has expired"),window.localStorage.removeItem("token"),window.location.href=e),null}catch(r){return console.error("Invalid token:",r),window.location.href=e,null}};var _=(n,e,t)=>{n.forEach(r=>{e.forEach(o=>{r.addEventListener(o,s=>{t(r,s)})})})};var pe=()=>({back:()=>window.history.back(),forward:()=>window.history.forward()});var fe=(n,e)=>{let t=document.querySelector(`#${n}`)||document.querySelector(`.${n}`);if(!t)return;let r=window.location.pathname.replace(/\/$/,"");for(let o of e){let s=o.path.replace(/\/$/,"");if(r===s||r.startsWith(`${s}/`)){o.component(t);break}}};function ge(n,e){let t=window.location.pathname.replace(/\/$/,"");e.routes.forEach(r=>{r.children?.length&&r.children.forEach(o=>{let s=o.path.replace(/\/$/,"");if(t===s||t.startsWith(`${s}/`)){let i=n.querySelector(`#${o.outlet}`)||n.querySelector(`.${o.outlet}`);i instanceof HTMLElement&&o.element&&o.element(i)}})})}var he=async()=>{let n="https://cdn.jsdelivr.net/npm/brython@3/brython.min.js",e="https://cdn.jsdelivr.net/npm/brython@3/brython_stdlib.js",t=r=>new Promise((o,s)=>{let i=document.createElement("script");i.src=r,i.onload=()=>o(),i.onerror=()=>s(new Error(`Failed to load ${r}`)),document.head.appendChild(i)});await t(n),await t(e),typeof window.brython=="function"?window.brython():console.error("Brython did not load correctly.")},ye=n=>new Promise((e,t)=>{let r=document.createElement("script");r.type="text/python",r.src=`/src/python/${n}`,r.onload=()=>e(),r.onerror=()=>t(new Error(`Failed to load ${n}`)),document.body.appendChild(r)});function Te(n){let e=null;return async(t,r)=>{try{if(!e){let o=await n();e=o.default||o}if(typeof e=="function")return e(t,r);if(e instanceof HTMLElement){let o=e.cloneNode(!0);return t?.appendChild(o),o}if(typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function")return e.render(t,r);console.warn("useTSLazy: Unsupported module type",e)}catch(o){console.error("useTSLazy failed:",o)}}}var Se=n=>typeof window>"u"?{isDOM:null}:{isDOM:n||document.body};import{debounce as Ge}from"lodash-es";var U=n=>n;typeof window<"u"&&typeof document<"u"&&(U=n=>{let e=document.createElement("div");return e.innerText=n,e.innerHTML});var Ye=n=>{(n?Array.isArray(n)?n:n instanceof HTMLAnchorElement?[n]:Array.from(n):Array.from(document.querySelectorAll("a"))).forEach(t=>{if(!t||t.dataset.anchorEnhanced==="true")return;t.dataset.anchorEnhanced="true";let r=t.getAttribute("class")||"";t.setAttribute("class",U(r));let o=t.getAttribute("aria-label");o&&t.setAttribute("aria-label",U(o));let s=t.querySelector(":scope > *");s&&(t.innerHTML="",t.appendChild(s));let i=t.getAttribute("href")||"";if(!i.startsWith("#")){try{if(new URL(i,window.location.href).origin!==window.location.origin)return}catch{return}t.addEventListener("click",a=>{a.preventDefault();let l=t.getAttribute("href")||"";try{let u=new URL(l,window.location.href);window.history.pushState({},"",u.pathname+u.search+u.hash),window.dispatchEvent(new PopStateEvent("popstate"))}catch(u){console.error("Invalid URL in anchor:",l,u)}})}})},Xe=Ge(Ye,50),k=n=>{Xe(n)};var Ee=n=>{if(!n)return;let e=b("a",n);k(e)};var ve=n=>{let e=n,t=[];return[()=>e,i=>{e=typeof i=="function"?i(e):i,t.forEach(a=>a(e))},i=>{t.push(i),i(e)}]};function we(n,e,t){let r=()=>{n.textContent=e().toString(),t?.(e())};r();let o=e.set;o&&(e.set=s=>{o(s),r()})}function Le(n){let[e,t,r]=ve(n),o=[],s=(()=>e());return s.set=i=>{t(i),o.forEach(a=>a(s()))},s.bind=i=>we(i,s),s.subscribe=i=>{o.push(i),i(s())},s}function Re(n,e){let t={deps:e.map(o=>typeof o=="function"?o():o)},r=n();typeof r=="function"&&(t.cleanup=r),e.forEach((o,s)=>{typeof o=="function"&&"bind"in o&&o.subscribe?.(()=>{let a=o(),l=t.deps[s];if(a!==l){t.cleanup?.(),t.deps[s]=a;let u=n();typeof u=="function"&&(t.cleanup=u)}})})}var f={params:{},query:{}},j=new Set;function Je(){return{params:{...f.params},query:{...f.query}}}function P(n,e){let t=Object.keys(n),r=Object.keys(e);if(t.length!==r.length)return!1;for(let o of t)if(n[o]!==e[o])return!1;return!0}function L(){let n=Je();j.forEach(e=>e(n))}function Ze(n){let e={};if(!n)return e;let t=n.startsWith("?")?n.slice(1):n;for(let r of t.split("&")){if(!r)continue;let[o,s]=r.split("=");o&&(e[decodeURIComponent(o)]=decodeURIComponent(s||""))}return e}function et(n){let e=new URLSearchParams;for(let r in n){let o=n[r];o!=null&&o!==""&&e.set(r,o)}let t=e.toString();return t?`?${t}`:""}function q(){if(typeof window>"u")return;let n=window.location.pathname,e=window.location.hash,t=et(f.query);history.replaceState({},"",n+t+e)}var W={getState(){return{params:f.params,query:f.query,getParam:n=>f.params[n],getQuery:n=>f.query[n],setFromPattern(n){if(typeof window>"u")return;let e=n.match(/:([^/]+)/g)?.map(o=>o.slice(1))||[],t=window.location.pathname.split("/").filter(Boolean),r={};e.forEach((o,s)=>{r[o]=t[s]}),P(f.params,r)||(f.params=r,L())},setFromPatternValues(n,e){let t={};n.forEach((r,o)=>{t[r]=e[o]}),P(f.params,t)||(f.params=t,L())},setQuery(n){let e={...f.query,...n};P(f.query,e)||(f.query=e,q(),L())},replaceQuery(n){P(f.query,n)||(f.query={...n},q(),L())},removeQuery(n){if(!(n in f.query))return;let e={...f.query};delete e[n],f.query=e,q(),L()},clearQuery(){Object.keys(f.query).length!==0&&(f.query={},q(),L())},setQueryFromURL(n){let e=Ze(n);P(f.query,e)||(f.query=e,L())},subscribe(n){return j.add(n),()=>j.delete(n)}}}};typeof window<"u"&&window.addEventListener("popstate",()=>{W.getState().setQueryFromURL(window.location.search)});import be from"dompurify";import{createStore as tt}from"zustand/vanilla";import nt from"dompurify";var w=tt(n=>({params:{},query:{},setParams:e=>n(()=>({params:Me(e)})),setQuery:e=>n(()=>({query:Me(e)}))}));function Me(n){let e={};for(let t in n)e[t]=nt.sanitize(n[t]);return e}var Q=class{routes=[];expectedParams;apiFetcher;constructor(e,t,r){this.routes=e,this.expectedParams=new Set(t),this.apiFetcher=r,window.addEventListener("popstate",this.handlePopState.bind(this)),this.handlePopState()}handlePopState(){let e=window.location.pathname,t=window.location.search,r=this.parseQueryParams(t);if(e.startsWith("/api")&&this.apiFetcher){let i=e.replace("/api/","").split("/")[0],a=Object.fromEntries(new URLSearchParams(t));this.apiFetcher(i,a).then(l=>console.log("API response:",l)).catch(l=>console.error("API error:",l));return}let o=this.findMatchingRoute(e,this.routes);if(o){if(o.routeto){this.navigate(o.routeto);return}let s=this.filterAndSanitizeParams(o.params);w.getState().setParams(s),w.getState().setQuery(r);let i=document.createElement("div");if(o.element?.(i,s,r),o.children){let a=e.slice(o.path.length),l=i.querySelector("#child");l&&this.renderChildren(o.children,a,l,s,r)}}else{let s=this.findMatchingRoute("*",this.routes);if(s){let i=this.filterAndSanitizeParams(s.params);w.getState().setParams(i),w.getState().setQuery(r);let a=document.createElement("div");s.element?.(a,i,r)}}}renderChildren(e,t,r,o,s){if(!e||e.length===0){let a=r.querySelector("#child");a&&a.remove();return}let i=this.findMatchingRoute(t,e);if(i){let a=document.createElement("div");a.id="child";let l={...o,...i.params},u=this.filterAndSanitizeParams(l);if(w.getState().setParams(u),w.getState().setQuery(s),i.element?.(a,u,s),r.appendChild(a),i.children){let c=t.slice(i.path.length);this.renderChildren(i.children,c,a,u,s)}}}parseQueryParams(e){let t={},r=new URLSearchParams(e);for(let[o,s]of r.entries())this.expectedParams.has(o)&&(t[o]=be.sanitize(s));return t}findMatchingRoute(e,t,r={}){for(let o of t){let s=o.path;if(s==="*")return o;{let a=[],l=s.replace(/:[^\s/]+/g,d=>(a.push(d.substring(1)),"([^\\s/]+)")),u=new RegExp(`^${l}(?:/|$)`),c=e.match(u);if(c){let d={...r};if(a.forEach((g,p)=>{d[g]=c[p+1]??""}),o.children){let g=e.slice(c[0].length),p=this.findMatchingRoute(g,o.children,d);if(p)return p}return{...o,params:d}}}}}filterAndSanitizeParams(e){if(!e)return{};let t={};for(let r in e)this.expectedParams.has(r)&&(t[r]=be.sanitize(e[r]??""));return t}navigate(e){history.pushState(null,"",e),this.handlePopState()}addRoute(e){this.routes.push(e)}};var rt=()=>({name:"ts-filebased-router",async buildStart(){let n=(await import("fs/promises")).default??await import("fs/promises"),e=await import("path"),t=await import("./esm-KRNKVVL7.js"),r=e.resolve("src/pages"),o=e.resolve("src/gen"),s=e.resolve("src/routes"),i=e.join(o,"tsrouter.d.ts"),a=e.join(o,"tsrouter.gen.ts"),l=e.join(s,"__root.ts"),u=process.env.NODE_ENV!=="production",c=async m=>n.mkdir(m,{recursive:!0}).catch(()=>{}),d=m=>m.charAt(0).toUpperCase()+m.slice(1),g=m=>{let h="/"+e.relative(r,m).replace(/\\/g,"/");return h=h.replace(/\.ts$/,"").replace(/\/index$/,"")||"/",h.replace(/\[\.\.\.(.+?)\]/g,"*").replace(/\[(.+?)\]/g,":$1")},p=m=>m.replace(/^\//,"").split("/").map(h=>h.startsWith(":")?d(h.slice(1)):h.replace(/\b\w/g,S=>S.toUpperCase()).replace(/[-_]/g,"")).filter(Boolean).join("")||"Index",x=async m=>{let h=await n.readdir(m,{withFileTypes:!0}),S=[];for(let R of h){let M=e.join(m,R.name);R.isDirectory()?S.push(...await x(M)):R.isFile()&&R.name.endsWith(".ts")&&S.push({file:M,route:g(M),name:p(g(M))})}return S},v=()=>`
1
+ import Ce from"dompurify";var z=null;function He(){return typeof window>"u"?null:(z||(z=Ce(window)),z)}var Oe=["div","span","p","a","button","ul","li","img","input","form","label","h1","h2","h3","h4","h5","h6","section","main","article","svg","path","circle","rect","line","polyline","polygon","g"],De=["class","id","href","src","alt","title","type","value","name","placeholder","target","rel","data-click","data-change","data-select","data-effect","data-hover","data-submit","data-key","data-event","data-component","data-stagger","data-input"];function Fe(n){return/^(https?:\/\/|\/|#)/i.test(n.trim())}function ke(n){if(typeof window>"u")return n;let e=document.createElement("template");return e.innerHTML=n,e.content.querySelectorAll("*").forEach(t=>{[...t.attributes].forEach(r=>{let o=r.name.toLowerCase();if(o.startsWith("on")||o.startsWith("xlink")||o.startsWith("xml")){t.removeAttribute(r.name);return}(o==="href"||o==="src")&&!Fe(r.value)&&t.setAttribute(o,"#")}),t.tagName==="A"&&t.getAttribute("target")==="_blank"&&t.setAttribute("rel","noopener noreferrer")}),e.innerHTML}function G(n,...e){let t=He(),r=n.reduce((s,i,a)=>{let l=a<e.length?String(e[a]??""):"";return s+i+l},"");if(!t)return r;let o=t.sanitize(r,{ALLOWED_TAGS:Oe,ALLOWED_ATTR:De,RETURN_DOM:!1});return ke(o)}var $e=(n,e)=>n.reduce((t,r,o)=>t+e(r,o),"");function qe(n){return n}function Ne(n){return new Proxy({},{get(e,t){return async r=>n(t,r)}})}import Y from"dompurify";var X=(n,e)=>{let r={...{ADD_TAGS:["my-custom-tag"]},...e};return typeof n=="string"?Y.sanitize(n,r):Y.sanitize(n.innerHTML,r)};var J=(n,e,t)=>{if(!(typeof window>"u"||typeof document>"u"))if(typeof n=="string"){let r=document.getElementById(n);r?r.addEventListener(e,t):console.warn(`Element with id '${n}' not found.`)}else n instanceof HTMLElement?n.addEventListener(e,t):n===document?document.addEventListener(e,t):console.warn("Invalid target parameter provided.")};import{createStore as Ie}from"zustand/vanilla";import ze from"dompurify";function O(n){return ze.sanitize(n??"")}function H(n,e){let t=Object.keys(n),r=Object.keys(e);if(t.length!==r.length)return!1;for(let o of t)if(n[o]!==e[o])return!1;return!0}function _e(n,e){let t=[],r=n.replace(/:[^/]+/g,a=>(t.push(a.slice(1)),"([^/]+)")),o=new RegExp(`^${r}$`),s=e.match(o),i={};return s&&t.forEach((a,l)=>{i[a]=O(s[l+1]??"")}),i}function Ue(n){let e={},t=new URLSearchParams(n);for(let[r,o]of t.entries())e[r]=O(o);return e}var D=Ie((n,e)=>({params:{},query:{},setFromPattern:t=>{let r=window.location.pathname,o=_e(t,r),s=Ue(window.location.search),i=e();(!H(i.params,o)||!H(i.query,s))&&n({params:o,query:s})},setFromPatternValues:(t,r)=>{let o={};t.forEach((i,a)=>{o[i]=O(r[a]??"")});let s=e();H(s.params,o)||n({params:o})},setQuery:t=>{let r={};for(let s in t)r[s]=O(t[s]);let o=e();H(o.query,r)||n({query:r})},getParam:t=>e().params[t],getQuery:t=>e().query[t]}));function Z(n){let e=D.getState();e.setFromPattern(n);let t=e.params,r=e.query;return{...t,...r}}var ee=(n,e,t)=>{let r=document.querySelectorAll(n);return r.forEach(o=>{o.addEventListener(e,t)}),()=>{r.forEach(o=>{o.removeEventListener(e,t)})}};import{animate as je}from"motion";import We from"dompurify";var _=typeof window<"u"&&typeof document<"u",te=["div","span","p","a","button","ul","li","img","input","form","label","h1","h2","h3","h4","h5","h6","section","main","article"],ne=["class","id","href","src","alt","title","type","value","name","placeholder","data-click","data-change","data-select","data-effect","data-hover","data-submit","data-key","data-event","data-component","data-stagger","data-input","data-children","data-slot","target","rel"],re=_?We(window):{sanitize:(n,e)=>n};function Qe(n){return/^(https?:\/\/|\/|#)/i.test(n.trim())}function Ke(n){_&&n.querySelectorAll("*").forEach(e=>{[...e.attributes].forEach(t=>{let r=t.name.toLowerCase();if(r.startsWith("on")){e.removeAttribute(t.name);return}(r==="href"||r==="src")&&!Qe(t.value)&&e.setAttribute(r,"#")}),e.tagName==="A"&&e.getAttribute("target")==="_blank"&&e.setAttribute("rel","noopener noreferrer")})}function oe(n){let e={},t={},r=400,o=0,s="ease-in-out",i=0,a=!1,l,u;return n.split(/\s+/).forEach(c=>{c==="fade-in"&&(e.opacity=0,t.opacity=1),c==="fade-out"&&(e.opacity=1,t.opacity=0),c==="slide-up"&&(e.y=20,t.y=0),c==="slide-down"&&(e.y=-20,t.y=0),c==="slide-left"&&(e.x=20,t.x=0),c==="slide-right"&&(e.x=-20,t.x=0),c.startsWith("duration-")&&(r=+c.replace("duration-","")),c.startsWith("delay-")&&(o=+c.replace("delay-","")),(c==="linear"||c.startsWith("ease"))&&(s=c),c==="infinite"&&(i=1/0),c==="replay"&&(a=!0),c.startsWith("parallax-y-")&&(l=+c.replace("parallax-y-","")),c.startsWith("parallax-x-")&&(u=+c.replace("parallax-x-",""))}),{from:e,to:t,duration:r,easing:s,delay:o,repeat:i,replay:a,parallaxY:l,parallaxX:u}}function Be(n,e){n.querySelectorAll("[data-component]").forEach(t=>{let r=t.dataset.component;e[r]?.(t)})}var se=(n,e,t={},r)=>{if(!_||!n)return{html:re.sanitize(e,{ALLOWED_TAGS:te,ALLOWED_ATTR:ne,...r})};let o=re.sanitize(e,{ALLOWED_TAGS:te,ALLOWED_ATTR:ne,...r});n.innerHTML=o,Ke(n);let s=c=>{let d=c.target.closest("[data-click]");d&&t[d.dataset.click]?.(d)};n.addEventListener("click",s),n.querySelectorAll("[data-input]").forEach(c=>{let d=c.dataset.input;t[d]?.(c),c.addEventListener("input",()=>{t[d]?.(c)})}),Be(n,t);let i=[];n.querySelectorAll("[data-effect]").forEach(c=>{let d=oe(c.dataset.effect||"");(d.parallaxX||d.parallaxY)&&i.push({el:c,...d})});let a=!1,l=()=>{a||(a=!0,requestAnimationFrame(()=>{let c=window.scrollY;i.forEach(({el:d,parallaxX:h,parallaxY:p})=>{d.style.transform=`translate3d(${(h||0)*c}px, ${(p||0)*c}px, 0)`}),a=!1}))};window.addEventListener("scroll",l);let u=new IntersectionObserver(c=>{c.forEach(d=>{let h=d.target,p=oe(h.dataset.effect||"");d.isIntersecting?(Object.assign(h.style,p.from),setTimeout(()=>{je(h,p.to,{duration:p.duration/1e3,easing:p.easing,repeat:p.repeat})},p.delay),p.replay||u.unobserve(h)):p.replay&&Object.assign(h.style,p.from)})});return n.querySelectorAll("[data-effect]").forEach(c=>u.observe(c)),{cleanup(){u.disconnect(),window.removeEventListener("scroll",l),n.removeEventListener("click",s)}}};import ie from"dompurify";var F=null,ae=(n,e)=>{if(typeof document>"u")return;let t=document.getElementById(n);if(!t)return;ie.addHook("uponSanitizeAttribute",(i,a)=>{let l=(a.attrName||"").toLowerCase(),u=(a.attrValue??"").toString().trim();if(l.startsWith("on")){a.keepAttr=!1;return}if((l==="href"||l==="src")&&/^(javascript:|vbscript:|data:|file:|about:)/i.test(u)){a.keepAttr=!1;return}if(l==="class"){let d=u.split(/\s+/).filter(Boolean).filter(h=>{if(/^[a-zA-Z0-9\-\:\/_\[\]\(\)]+$/.test(h)){if(/^bg-\[url\(.*\)\]$/.test(h)){let p=h.replace(/^bg-\[url\(/,"").replace(/\)\]$/,"").replace(/^['"]|['"]$/g,"");return p===""||/^https?:\/\//i.test(p)||/^\/(?!\/)/.test(p)||/^\.{0,2}\//.test(p)}return!0}return!1});a.attrValue=d.join(" ");return}if(l==="style"){a.keepAttr=!1;return}});let r=t.cloneNode(!0),o=ie.sanitize(r.innerHTML,{USE_PROFILES:{html:!0},ALLOWED_TAGS:["div","span","p","h1","h2","h3","h4","h5","h6","ul","ol","li","strong","em","a","img","br","form","button","input","label"],ALLOWED_ATTR:["href","src","alt","title","class","id","type","name","value","placeholder","data-click","data-change","data-submit","data-select","data-hover","data-classlist"],FORBID_TAGS:["script","iframe","object","embed","body","html","svg","math","link","meta"],ALLOW_DATA_ATTR:!0,KEEP_CONTENT:!1,RETURN_DOM_FRAGMENT:!0}),s=Array.from(o.childNodes).map(i=>i.outerHTML||i.textContent||"").join("");if(F!==null&&s!==F){let i=document.createElement("div");e(i);let l=new DOMParser().parseFromString(F,"text/html");for(;t.firstChild;)t.removeChild(t.firstChild);l.body.childNodes.forEach(u=>t.appendChild(u.cloneNode(!0)))}else{for(F=s;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(o),e(t)}};import ce from"dompurify";typeof window<"u"&&!window.__anchorSinglePopstateHandlerAttached&&(window.addEventListener("popstate",n=>{let e=n.state;e?.scrollPosition!==void 0&&window.scrollTo(0,e.scrollPosition)}),window.__anchorSinglePopstateHandlerAttached=!0);var le=(n,e,t,r="",o=null)=>{if(!n)return;let s=ce.sanitize(e,{ALLOWED_URI_REGEXP:/^(https?:|\/)/}),i=ce.sanitize(t,{USE_PROFILES:{html:!1}});n.setAttribute("href",s),n.setAttribute("aria-label",i),r&&(n.className=r.trim()),o&&n.replaceChildren(o),typeof window<"u"&&n.addEventListener("click",a=>{a.preventDefault();let u=a.currentTarget.getAttribute("href");if(u){let c=window.scrollY;window.scrollTo(0,0),window.history.pushState({scrollPosition:c},"",u),dispatchEvent(new PopStateEvent("popstate"))}})};import S from"dompurify";var ue=(n="'self' 'nonce-rAnd0m123' 'unsafe-inline' 'unsafe-eval'",e="'self' 'nonce-rAnd0m123'",t="'none'",r="'self' https://fonts.googleapis.com https://fonts.gstatic.com",o="'self' https://blogger.googleusercontent.com",s=["'self'","https://fonts.googleapis.com","https://fonts.gstatic.com","https://www.google.com/maps/"],i="'self' https://www.youtube.com",a="'self'",l="/csp-report",u=!1)=>{let c=()=>{try{let d=document.querySelector('meta[http-equiv="Content-Security-Policy"]');d||(d=document.createElement("meta"),d.setAttribute("http-equiv","Content-Security-Policy"),document.head.appendChild(d));let h=u?`report-uri ${l};`:"";d.setAttribute("content",`default-src 'self'; script-src ${n}; style-src ${e}; object-src ${t}; font-src ${r}; img-src ${o}; connect-src ${s.join(" ")}; frame-src ${i}; base-uri ${a}; ${h}`)}catch(d){console.error("Error adding CSP meta element:",d)}};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",c):c()};var de=(n,e)=>{let t={name:S.sanitize(n.name||""),title:S.sanitize(n.title||""),description:S.sanitize(n.description||"Default description"),author:S.sanitize(n.author||""),favicon:n.favicon},r=y=>{t.name=S.sanitize(y),E("name",t.name)},o=y=>{t.title=S.sanitize(y),document.title=t.title},s=y=>{t.description=S.sanitize(y),E("description",t.description)},i=y=>{t.author=S.sanitize(y),E("author",t.author)},a=y=>{t.favicon=S.sanitize(y);let m=document.querySelector('link[rel="icon"]');m||(m=document.createElement("link"),m.rel="icon",document.head.appendChild(m)),m.href=t.favicon},l=()=>t.name,u=()=>t.title,c=()=>t.description,d=()=>t.author,h=()=>t.favicon,p=()=>t,x=(y,m)=>{let f=document.createElement("meta");f.setAttribute("name",y),f.setAttribute("content",m),document.head.appendChild(f)},E=(y,m)=>{let f=document.querySelector(`meta[name="${y}"]`);f?f.setAttribute("content",m):x(y,m)},A=()=>{t.title&&(document.title=t.title),t.name&&E("name",t.name),t.description&&E("description",t.description),t.author&&E("author",t.author),t.favicon&&a(t.favicon)};return e&&ue(e.scriptSrc,e.styleSrc,e.objectSrc,Array.isArray(e.connectSrc)?e.connectSrc.join(" "):e.connectSrc,e.reportOnly!==void 0?String(e.reportOnly):void 0),A(),{setName:r,setTitle:o,setDescription:s,setAuthor:i,setFavicon:a,getName:l,getTitle:u,getDescription:c,getAuthor:d,getFavicon:h,getAllMetaData:p,appendMetaTagsToHead:A}};import Ve from"dompurify";var k=(n,e,t,r,o)=>{let s=`#${n}`,i=e.querySelectorAll(s);if(i.length===0)throw new Error(`[useTSComponent] No element found with id '${n}' in the given parent.`);if(i.length>1)throw new Error(`[useTSComponent] Duplicate id '${n}' detected. Found ${i.length} elements.`);let a=i[0];a.innerHTML=Ve.sanitize(a.innerHTML,{USE_PROFILES:{html:!0}}),t(a,r,o)};var me=(n,e,t,r=[])=>{let o=new Set;n.forEach((s,i)=>{if(o.has(s)){console.warn(`[useTSCollection] Duplicate ID in collection array: "${s}" \u2014 skipping.`);return}o.add(s);let a=e.querySelectorAll(`#${s}`);if(a.length>1){console.warn(`[useTSCollection] Duplicate ID in DOM: "${s}" (${a.length} elements found) \u2014 skipping component mount.`);return}let l=t[i],u=Array.isArray(r)?r[i]:void 0;typeof l=="function"?k(s,e,l,u):console.warn(`[useTSCollection] No valid component function found for ID: "${s}"`)})};var b=(n,e)=>{let r=(e??document).querySelectorAll(n);if(r.length===0)return process.env.NODE_ENV!=="production"&&console.warn(`[useTSSelect] No element found for selector: '${n}'`),null;if(n.startsWith("#")&&r.length>1){if(process.env.NODE_ENV!=="production")throw new Error(`[useTSSelect] Duplicate ID detected: '${n}'. Found ${r.length} elements with this ID.`);return r[0]}return r.length>1&&process.env.NODE_ENV!=="production"&&console.warn(`[useTSSelect] Multiple elements found for selector: '${n}'. Returning the first one.`),r[0]};import{jwtDecode as Ge}from"jwt-decode";var pe=(n,e)=>{let t=localStorage.getItem("token");if(!t)return window.location.href=e,null;try{let r=Ge(t),o=Date.now()/1e3;return r.exp&&r.exp<o&&(console.error("Token has expired"),window.localStorage.removeItem("token"),window.location.href=e),null}catch(r){return console.error("Invalid token:",r),window.location.href=e,null}};var U=(n,e,t)=>{n.forEach(r=>{e.forEach(o=>{r.addEventListener(o,s=>{t(r,s)})})})};var fe=()=>({back:()=>window.history.back(),forward:()=>window.history.forward()});var ge=(n,e)=>{let t=document.querySelector(`#${n}`)||document.querySelector(`.${n}`);if(!t)return;let r=window.location.pathname.replace(/\/$/,"");for(let o of e){let s=o.path.replace(/\/$/,"");if(r===s||r.startsWith(`${s}/`)){o.component(t);break}}};function he(n,e){let t=window.location.pathname.replace(/\/$/,"");e.routes.forEach(r=>{r.children?.length&&r.children.forEach(o=>{let s=o.path.replace(/\/$/,"");if(t===s||t.startsWith(`${s}/`)){let i=n.querySelector(`#${o.outlet}`)||n.querySelector(`.${o.outlet}`);i instanceof HTMLElement&&o.element&&o.element(i)}})})}var ye=async()=>{let n="https://cdn.jsdelivr.net/npm/brython@3/brython.min.js",e="https://cdn.jsdelivr.net/npm/brython@3/brython_stdlib.js",t=r=>new Promise((o,s)=>{let i=document.createElement("script");i.src=r,i.onload=()=>o(),i.onerror=()=>s(new Error(`Failed to load ${r}`)),document.head.appendChild(i)});await t(n),await t(e),typeof window.brython=="function"?window.brython():console.error("Brython did not load correctly.")},Te=n=>new Promise((e,t)=>{let r=document.createElement("script");r.type="text/python",r.src=`/src/python/${n}`,r.onload=()=>e(),r.onerror=()=>t(new Error(`Failed to load ${n}`)),document.body.appendChild(r)});function Se(n){let e=null;return async(t,r)=>{try{if(!e){let o=await n();e=o.default||o}if(typeof e=="function")return e(t,r);if(e instanceof HTMLElement){let o=e.cloneNode(!0);return t?.appendChild(o),o}if(typeof e=="object"&&e!==null&&"render"in e&&typeof e.render=="function")return e.render(t,r);console.warn("useTSLazy: Unsupported module type",e)}catch(o){console.error("useTSLazy failed:",o)}}}var Ee=n=>typeof window>"u"?{isDOM:null}:{isDOM:n||document.body};import{debounce as Ye}from"lodash-es";var j=n=>n;typeof window<"u"&&typeof document<"u"&&(j=n=>{let e=document.createElement("div");return e.innerText=n,e.innerHTML});var Xe=n=>{(n?Array.isArray(n)?n:n instanceof HTMLAnchorElement?[n]:Array.from(n):Array.from(document.querySelectorAll("a"))).forEach(t=>{if(!t||t.dataset.anchorEnhanced==="true")return;t.dataset.anchorEnhanced="true";let r=t.getAttribute("class")||"";t.setAttribute("class",j(r));let o=t.getAttribute("aria-label");o&&t.setAttribute("aria-label",j(o));let s=t.querySelector(":scope > *");s&&(t.innerHTML="",t.appendChild(s));let i=t.getAttribute("href")||"";if(!i.startsWith("#")){try{if(new URL(i,window.location.href).origin!==window.location.origin)return}catch{return}t.addEventListener("click",a=>{a.preventDefault();let l=t.getAttribute("href")||"";try{let u=new URL(l,window.location.href);window.history.pushState({},"",u.pathname+u.search+u.hash),window.dispatchEvent(new PopStateEvent("popstate"))}catch(u){console.error("Invalid URL in anchor:",l,u)}})}})},Je=Ye(Xe,50),$=n=>{Je(n)};var ve=n=>{if(!n)return;let e=b("a",n);$(e)};var we=n=>{let e=n,t=[];return[()=>e,i=>{e=typeof i=="function"?i(e):i,t.forEach(a=>a(e))},i=>{t.push(i),i(e)}]};function Le(n,e,t){let r=()=>{n.textContent=e().toString(),t?.(e())};r();let o=e.set;o&&(e.set=s=>{o(s),r()})}function Re(n){let[e,t,r]=we(n),o=[],s=(()=>e());return s.set=i=>{t(i),o.forEach(a=>a(s()))},s.bind=i=>Le(i,s),s.subscribe=i=>{o.push(i),i(s())},s}function Me(n,e){let t={deps:e.map(o=>typeof o=="function"?o():o)},r=n();typeof r=="function"&&(t.cleanup=r),e.forEach((o,s)=>{typeof o=="function"&&"bind"in o&&o.subscribe?.(()=>{let a=o(),l=t.deps[s];if(a!==l){t.cleanup?.(),t.deps[s]=a;let u=n();typeof u=="function"&&(t.cleanup=u)}})})}var g={params:{},query:{}},W=new Set;function Ze(){return{params:{...g.params},query:{...g.query}}}function P(n,e){let t=Object.keys(n),r=Object.keys(e);if(t.length!==r.length)return!1;for(let o of t)if(n[o]!==e[o])return!1;return!0}function R(){let n=Ze();W.forEach(e=>e(n))}function et(n){let e={};if(!n)return e;let t=n.startsWith("?")?n.slice(1):n;for(let r of t.split("&")){if(!r)continue;let[o,s]=r.split("=");o&&(e[decodeURIComponent(o)]=decodeURIComponent(s||""))}return e}function tt(n){let e=new URLSearchParams;for(let r in n){let o=n[r];o!=null&&o!==""&&e.set(r,o)}let t=e.toString();return t?`?${t}`:""}function q(){if(typeof window>"u")return;let n=window.location.pathname,e=window.location.hash,t=tt(g.query);history.replaceState({},"",n+t+e)}var Q={getState(){return{params:g.params,query:g.query,getParam:n=>g.params[n],getQuery:n=>g.query[n],setFromPattern(n){if(typeof window>"u")return;let e=n.match(/:([^/]+)/g)?.map(o=>o.slice(1))||[],t=window.location.pathname.split("/").filter(Boolean),r={};e.forEach((o,s)=>{r[o]=t[s]}),P(g.params,r)||(g.params=r,R())},setFromPatternValues(n,e){let t={};n.forEach((r,o)=>{t[r]=e[o]}),P(g.params,t)||(g.params=t,R())},setQuery(n){let e={...g.query,...n};P(g.query,e)||(g.query=e,q(),R())},replaceQuery(n){P(g.query,n)||(g.query={...n},q(),R())},removeQuery(n){if(!(n in g.query))return;let e={...g.query};delete e[n],g.query=e,q(),R()},clearQuery(){Object.keys(g.query).length!==0&&(g.query={},q(),R())},setQueryFromURL(n){let e=et(n);P(g.query,e)||(g.query=e,R())},subscribe(n){return W.add(n),()=>W.delete(n)}}}};typeof window<"u"&&window.addEventListener("popstate",()=>{Q.getState().setQueryFromURL(window.location.search)});import Pe from"dompurify";import{createStore as nt}from"zustand/vanilla";import rt from"dompurify";var L=nt(n=>({params:{},query:{},setParams:e=>n(()=>({params:be(e)})),setQuery:e=>n(()=>({query:be(e)}))}));function be(n){let e={};for(let t in n)e[t]=rt.sanitize(n[t]);return e}var K=class{routes=[];expectedParams;apiFetcher;constructor(e,t,r){this.routes=e,this.expectedParams=new Set(t),this.apiFetcher=r,window.addEventListener("popstate",this.handlePopState.bind(this)),this.handlePopState()}handlePopState(){let e=window.location.pathname,t=window.location.search,r=this.parseQueryParams(t);if(e.startsWith("/api")&&this.apiFetcher){let i=e.replace("/api/","").split("/")[0],a=Object.fromEntries(new URLSearchParams(t));this.apiFetcher(i,a).then(l=>console.log("API response:",l)).catch(l=>console.error("API error:",l));return}let o=this.findMatchingRoute(e,this.routes);if(o){if(o.routeto){this.navigate(o.routeto);return}let s=this.filterAndSanitizeParams(o.params);L.getState().setParams(s),L.getState().setQuery(r);let i=document.createElement("div");if(o.element?.(i,s,r),o.children){let a=e.slice(o.path.length),l=i.querySelector("#child");l&&this.renderChildren(o.children,a,l,s,r)}}else{let s=this.findMatchingRoute("*",this.routes);if(s){let i=this.filterAndSanitizeParams(s.params);L.getState().setParams(i),L.getState().setQuery(r);let a=document.createElement("div");s.element?.(a,i,r)}}}renderChildren(e,t,r,o,s){if(!e||e.length===0){let a=r.querySelector("#child");a&&a.remove();return}let i=this.findMatchingRoute(t,e);if(i){let a=document.createElement("div");a.id="child";let l={...o,...i.params},u=this.filterAndSanitizeParams(l);if(L.getState().setParams(u),L.getState().setQuery(s),i.element?.(a,u,s),r.appendChild(a),i.children){let c=t.slice(i.path.length);this.renderChildren(i.children,c,a,u,s)}}}parseQueryParams(e){let t={},r=new URLSearchParams(e);for(let[o,s]of r.entries())this.expectedParams.has(o)&&(t[o]=Pe.sanitize(s));return t}findMatchingRoute(e,t,r={}){for(let o of t){let s=o.path;if(s==="*")return o;{let a=[],l=s.replace(/:[^\s/]+/g,d=>(a.push(d.substring(1)),"([^\\s/]+)")),u=new RegExp(`^${l}(?:/|$)`),c=e.match(u);if(c){let d={...r};if(a.forEach((h,p)=>{d[h]=c[p+1]??""}),o.children){let h=e.slice(c[0].length),p=this.findMatchingRoute(h,o.children,d);if(p)return p}return{...o,params:d}}}}}filterAndSanitizeParams(e){if(!e)return{};let t={};for(let r in e)this.expectedParams.has(r)&&(t[r]=Pe.sanitize(e[r]??""));return t}navigate(e){history.pushState(null,"",e),this.handlePopState()}addRoute(e){this.routes.push(e)}};var ot=()=>({name:"ts-filebased-router",async buildStart(){let n=await import("fs/promises"),e=await import("path"),t=await import("./esm-KRNKVVL7.js"),r=e.resolve("src/pages"),o=e.resolve("src/gen"),s=e.resolve("src/routes"),i=e.join(o,"tsrouter.d.ts"),a=e.join(o,"tsrouter.gen.ts"),l=e.join(s,"__root.ts"),u=process.env.NODE_ENV!=="production",c=async m=>n.mkdir(m,{recursive:!0}).catch(()=>{}),d=m=>m.charAt(0).toUpperCase()+m.slice(1),h=m=>{let f="/"+e.relative(r,m).replace(/\\/g,"/");return f=f.replace(/\.ts$/,"").replace(/\/index$/,"")||"/",f.replace(/\[\.\.\.(.+?)\]/g,"*").replace(/\[(.+?)\]/g,":$1")},p=m=>m.replace(/^\//,"").split("/").map(f=>f.startsWith(":")?d(f.slice(1)):f.replace(/\b\w/g,v=>v.toUpperCase()).replace(/[-_]/g,"")).filter(Boolean).join("")||"Index",x=async m=>{let f=await n.readdir(m,{withFileTypes:!0}),v=[];for(let w of f){let M=e.join(m,w.name);if(w.isDirectory())v.push(...await x(M));else if(w.isFile()&&w.name.endsWith(".ts")){let N=h(M);v.push({file:M,route:N,name:p(N)})}}return v},E=()=>`
2
2
  import { createRouter } from "../gen/tsrouter.gen";
3
3
  import { useTSParams, initializeRoute } from "@devwaren/vanilla-ts";
4
4
 
@@ -13,7 +13,7 @@ export type Cleanup = undefined | (() => void);
13
13
  export type RenderResult = Cleanup | Promise<Cleanup> | string;
14
14
  export type Component = (DOM: HTMLElement) => RenderResult;
15
15
  export type Module = { default: Component };
16
- `;await c(o),await n.writeFile(i,m,"utf-8")},y=async()=>{let m=await x(r),h=m.find(T=>T.route==="/notfound"),S=m.filter(T=>T.route!=="/notfound");for(let T of m)if(!(await n.readFile(T.file,"utf-8")).trim()){let C=T.route.includes(":"),B=C?T.route.split("/").filter(N=>N.startsWith(":")).map(N=>N.slice(1)):[],xe=C?`const { ${B.join(", ")} } = useTSExtractParams("${T.route}");`:"";await n.writeFile(T.file,`import { html, useTSElements, useTSMetaData${C?", useTSExtractParams":""} } from "@devwaren/vanilla-ts";
16
+ `;await c(o),await n.writeFile(i,m,"utf-8")},y=async()=>{let m=await x(r),f=m.find(T=>T.route==="/notfound"),v=m.filter(T=>T.route!=="/notfound");for(let T of m)if(!(await n.readFile(T.file,"utf-8")).trim()){let C=T.route.includes(":"),V=C?T.route.split("/").filter(I=>I.startsWith(":")).map(I=>I.slice(1)):[],Ae=C?`const { ${V.join(", ")} } = useTSExtractParams("${T.route}");`:"";await n.writeFile(T.file,`import { html, useTSElements, useTSMetaData${C?", useTSExtractParams":""} } from "@devwaren/vanilla-ts";
17
17
 
18
18
  export default function ${T.name}(DOM: HTMLElement) {
19
19
  useTSMetaData({
@@ -21,29 +21,29 @@ export default function ${T.name}(DOM: HTMLElement) {
21
21
  description: "${T.name.toLowerCase()}",
22
22
  });
23
23
 
24
- ${xe}
24
+ ${Ae}
25
25
 
26
26
  return useTSElements(DOM, html\`
27
27
  <div>
28
28
  <h1>${T.name.toLowerCase()}</h1>
29
- ${C?`<pre>\${${B.join("}, ${")}}</pre>`:""}
29
+ ${C?`<pre>\${${V.join("}, ${")}}</pre>`:""}
30
30
  </div>
31
31
  \`);
32
32
  };
33
- `,"utf-8")}let R=S.map(T=>{let K="../pages/"+e.relative(r,T.file).replace(/\\/g,"/").replace(/\.ts$/,"");return`{ path: "${T.route}", name: "${T.name}", component: () => import("${K}") as Promise<import("../gen/tsrouter.d").Module> }`}).join(`,
34
- `),Pe=`// AUTO-GENERATED ROUTER
35
- import { useTSElements, useTSParams, html } from "@devwaren/vanilla-ts";
33
+ `,"utf-8")}let w=v.map(T=>{let B="../pages/"+e.relative(r,T.file).replace(/\\/g,"/").replace(/\.ts$/,"");return`{ path: "${T.route}", name: "${T.name}", component: () => import("${B}") as Promise<import("../gen/tsrouter.d").Module> }`}).join(`,
34
+ `),M=f?`export const NotFound = async (DOM: HTMLElement) => {
35
+ const mod = await import("../pages/${e.relative(r,f.file).replace(/\\/g,"/").replace(/\\.ts$/,"")}");
36
+ return mod.default(DOM);
37
+ };`:"export const NotFound = (DOM: HTMLElement) =>\n useTSElements(DOM, html`<h1>404 - Page Not Found</h1>`);",xe=`// AUTO-GENERATED ROUTER
38
+ import { ${["useTSParams",...!f?["useTSElements","html"]:[]].join(", ")} } from "@devwaren/vanilla-ts";
36
39
  import type { Module, Component } from "./tsrouter.d";
37
40
 
38
41
  // -----------------------------
39
- ${h?`export const NotFound = async (DOM: HTMLElement) => {
40
- const mod: import("../gen/tsrouter.d").Module = await import("../pages/${e.relative(r,h.file).replace(/\\/g,"/").replace(/\\.ts$/,"")}");
41
- return mod.default(DOM);
42
- };`:"export const NotFound = (DOM: HTMLElement) =>\n useTSElements(DOM, html`<h1>404 - Page Not Found</h1>`);"}
42
+ ${M}
43
43
 
44
44
  // -----------------------------
45
45
  export const routeTree: { path: string; name: string; component: () => Promise<Module> }[] = [
46
- ${R}
46
+ ${w}
47
47
  ];
48
48
 
49
49
  // -----------------------------
@@ -60,12 +60,18 @@ function matchRoute(pathname: string) {
60
60
  for (let i = 0; i < routeSegments.length; i++) {
61
61
  const routeSeg = routeSegments[i];
62
62
  const pathSeg = pathSegments[i];
63
+
63
64
  if (!routeSeg) continue;
64
65
  if (routeSeg === "*") break;
65
66
 
66
67
  if (!pathSeg) { matched = false; break; }
67
- if (routeSeg.startsWith(":")) params[routeSeg.slice(1)] = pathSeg;
68
- else if (routeSeg !== pathSeg) { matched = false; break; }
68
+
69
+ if (routeSeg.startsWith(":")) {
70
+ params[routeSeg.slice(1)] = pathSeg;
71
+ } else if (routeSeg !== pathSeg) {
72
+ matched = false;
73
+ break;
74
+ }
69
75
  }
70
76
 
71
77
  if (matched) return { route: r, params };
@@ -81,6 +87,7 @@ export async function createRouter(DOM: HTMLElement) {
81
87
  async function loadModule(loader: () => Promise<Module>): Promise<Component> {
82
88
  const cached = moduleCache.get(loader);
83
89
  if (cached) return cached;
90
+
84
91
  const mod = await loader();
85
92
  moduleCache.set(loader, mod.default);
86
93
  return mod.default;
@@ -101,23 +108,37 @@ export async function createRouter(DOM: HTMLElement) {
101
108
  componentLoader = matched.route.component;
102
109
  params = matched.params;
103
110
  } else {
104
- componentLoader = async () => ({ default: NotFound as import("../gen/tsrouter.d").Component });
111
+ componentLoader = async () => ({
112
+ default: NotFound as import("../gen/tsrouter.d").Component,
113
+ });
105
114
  }
106
115
 
107
116
  if (push) history.pushState(null, "", url.pathname + url.search);
108
117
 
109
- useTSParams.getState().setFromPatternValues(Object.keys(params), Object.values(params));
118
+ useTSParams.getState().setFromPatternValues(
119
+ Object.keys(params),
120
+ Object.values(params)
121
+ );
110
122
 
111
123
  const query: Record<string, string> = {};
112
- url.searchParams.forEach((v, k) => { query[k] = v; });
124
+ url.searchParams.forEach((v, k) => {
125
+ query[k] = v;
126
+ });
127
+
113
128
  useTSParams.getState().setQuery(query);
114
129
 
115
130
  currentComponentUnmount?.();
131
+
116
132
  const componentFn = await loadModule(componentLoader);
117
133
  const result = await componentFn(DOM);
118
- currentComponentUnmount = typeof result === "function" ? result : null;
119
- if (typeof result === "string") DOM.innerHTML = result;
134
+
135
+ currentComponentUnmount =
136
+ typeof result === "function" ? result : null;
137
+
138
+ if (typeof result === "string") {
139
+ DOM.innerHTML = result;
140
+ }
120
141
  },
121
142
  };
122
143
  };
123
- `;await c(o),await c(s),await n.writeFile(a,Pe,"utf-8"),await n.writeFile(l,v(),"utf-8")};await c(r),await A(),await y(),u&&t.watch(r,{ignoreInitial:!0}).on("all",async(h,S)=>{S.endsWith(".ts")&&(await y(),console.log("\u267B\uFE0F TS Router regenerated"))}),console.log("\u{1F7E2} TS Filebased Router initialized")}});var ot=async n=>{typeof window>"u"||typeof document>"u"||(await n.navigate(window.location.pathname+window.location.search,!1),window.addEventListener("popstate",()=>{n.navigate(window.location.pathname+window.location.search,!1)}),document.addEventListener("click",e=>{let t=e;if(t.defaultPrevented||t.button!==0||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey)return;let r=t.target.closest("a");if(!r)return;let o=new URL(r.href);o.origin===window.location.origin&&(t.preventDefault(),n.navigate(o.pathname+o.search))}))};export{rt as TSFilebasedRouter,Q as TSRouter,qe as createClientFunc,Le as createSignal,ke as createTSServerFunc,V as html,ot as initializeRoute,ye as loadPyFiles,$e as mapper,ge as renderChildRoutes,k as useAnchor,ce as useAnchorSingle,ie as useInitialDOM,me as useTSAuth,de as useTSCollection,$ as useTSComponent,_ as useTSElementEach,oe as useTSElements,X as useTSEvent,Z as useTSEventAll,J as useTSExtractParams,Te as useTSLazy,ue as useTSMetaData,pe as useTSNavigate,Ee as useTSNoReload,fe as useTSOutlet,D as useTSParams,Y as useTSPurifier,W as useTSQuery,Re as useTSReactor,Se as useTSSSRHydration,b as useTSSelect,he as useTSloadBrython};
144
+ `;await c(o),await c(s),await n.writeFile(a,xe,"utf-8"),await n.writeFile(l,E(),"utf-8")};if(await c(r),await A(),await y(),u){let m=t.watch(r,{ignoreInitial:!0}),f=null;m.on("all",(v,w)=>{w.endsWith(".ts")&&(f&&clearTimeout(f),f=setTimeout(async()=>{await y(),console.log("\u267B\uFE0F TS Router regenerated")},100))})}console.log("\u{1F7E2} TS Filebased Router initialized")}});var st=async n=>{typeof window>"u"||typeof document>"u"||(await n.navigate(window.location.pathname+window.location.search,!1),window.addEventListener("popstate",()=>{n.navigate(window.location.pathname+window.location.search,!1)}),document.addEventListener("click",e=>{let t=e;if(t.defaultPrevented||t.button!==0||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey)return;let r=t.target.closest("a");if(!r)return;let o=new URL(r.href);o.origin===window.location.origin&&(t.preventDefault(),n.navigate(o.pathname+o.search))}))};export{ot as TSFilebasedRouter,K as TSRouter,Ne as createClientFunc,Re as createSignal,qe as createTSServerFunc,G as html,st as initializeRoute,Te as loadPyFiles,$e as mapper,he as renderChildRoutes,$ as useAnchor,le as useAnchorSingle,ae as useInitialDOM,pe as useTSAuth,me as useTSCollection,k as useTSComponent,U as useTSElementEach,se as useTSElements,J as useTSEvent,ee as useTSEventAll,Z as useTSExtractParams,Se as useTSLazy,de as useTSMetaData,fe as useTSNavigate,ve as useTSNoReload,ge as useTSOutlet,D as useTSParams,X as useTSPurifier,Q as useTSQuery,Me as useTSReactor,Ee as useTSSSRHydration,b as useTSSelect,ye as useTSloadBrython};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devwaren/vanilla-ts",
3
- "version": "1.0.23",
3
+ "version": "1.0.25",
4
4
  "description": "Vanilla Framework-less TypeScript hooks for SPA development.",
5
5
  "author": "Waren Arapoc Gador",
6
6
  "license": "MIT",