@erickxavier/no-js 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/no.js +4 -4
- package/dist/cjs/no.js.map +3 -3
- package/dist/esm/no.js +4 -4
- package/dist/esm/no.js.map +3 -3
- package/dist/iife/no.js +4 -4
- package/dist/iife/no.js.map +3 -3
- package/package.json +9 -2
- package/src/directives/binding.js +1 -1
- package/src/directives/conditionals.js +5 -0
- package/src/directives/i18n.js +2 -1
- package/src/directives/loops.js +14 -10
- package/src/directives/validation.js +30 -14
- package/src/evaluate.js +13 -1
- package/src/i18n.js +17 -1
- package/src/index.js +1 -1
package/dist/esm/no.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* No.JS v1.0.
|
|
2
|
+
* No.JS v1.0.2 — The HTML-First Reactive Framework
|
|
3
3
|
* No more JavaScript. Just HTML attributes with superpowers.
|
|
4
4
|
* @license MIT
|
|
5
5
|
* @see https://github.com/erickillian/nojs
|
|
6
6
|
*/
|
|
7
|
-
var p={baseApiUrl:"",headers:{},timeout:1e4,retries:0,retryDelay:1e3,credentials:"same-origin",csrf:null,cache:{strategy:"none",ttl:3e5},templates:{cache:!0},router:{mode:"history",base:"/",scrollBehavior:"top"},i18n:{defaultLocale:"en",fallbackLocale:"en",detectBrowser:!1},debug:!1,devtools:!1,csp:null,sanitize:!0},rt={request:[],response:[]},G={},
|
|
7
|
+
var p={baseApiUrl:"",headers:{},timeout:1e4,retries:0,retryDelay:1e3,credentials:"same-origin",csrf:null,cache:{strategy:"none",ttl:3e5},templates:{cache:!0},router:{mode:"history",base:"/",scrollBehavior:"top"},i18n:{defaultLocale:"en",fallbackLocale:"en",detectBrowser:!1},debug:!1,devtools:!1,csp:null,sanitize:!0},rt={request:[],response:[]},G={},O={},bt=new Set,w={},Q={},ht=new Map,nt={},j=null;function wt(t){j=t}function k(...t){p.debug&&console.log("[No.JS]",...t)}function X(...t){console.warn("[No.JS]",...t)}function ot(){for(let t of bt)t()}function Z(t,e,r){e.$watch(r),typeof t=="string"&&t.includes("$store")&&bt.add(r)}function ft(t,e){(G[t]||[]).forEach(r=>r(e))}var gt=new Set;function vt(t){return gt.add(t),()=>gt.delete(t)}var U={_locale:"en",locales:{},get locale(){return this._locale},set locale(t){this._locale!==t&&(this._locale=t,gt.forEach(e=>e()))},t(t,e={}){let r=U.locales[U.locale]||U.locales[p.i18n.fallbackLocale]||{},n=t.split(".").reduce((o,s)=>o?.[s],r);if(n==null)return t;if(typeof n=="string"&&n.includes("|")&&e.count!=null){let o=n.split("|").map(s=>s.trim());n=Number(e.count)===1?o[0]:o[1]||o[0]}return typeof n=="string"&&(n=n.replace(/\{(\w+)\}/g,(o,s)=>e[s]!=null?e[s]:"")),n}};var Rt=0,Pt=new Set;function L(t={},e=null){let r=new Set,n={};Object.assign(n,t);let o=!1;function s(){if(!o){o=!0;try{Rt>0?r.forEach(f=>Pt.add(f)):r.forEach(f=>f())}finally{o=!1}}}let i={get(f,u){if(u==="__isProxy")return!0;if(u==="__raw")return f;if(u==="__listeners")return r;if(u==="$watch")return c=>(r.add(c),()=>r.delete(c));if(u==="$notify")return s;if(u==="$set")return(c,l)=>{a[c]=l};if(u==="$parent")return e;if(u==="$refs")return nt;if(u==="$store")return O;if(u==="$route")return j?j.current:{};if(u==="$router")return j;if(u==="$i18n")return U;if(u==="$form")return f.$form||null;if(u in f)return f[u];if(e&&e.__isProxy)return e[u]},set(f,u,c){let l=f[u];return f[u]=c,l!==c&&s(),!0},has(f,u){return u in f?!0:e&&e.__isProxy?u in e:!1}},a=new Proxy(n,i);return a}function yt(t){let e=new Set,r={},n=t;for(;n&&n.__isProxy;){let o=n.__raw;for(let s of Object.keys(o))e.has(s)||(e.add(s),r[s]=o[s]);n=n.$parent}return{keys:[...e],vals:r}}var At=new Map;function V(t,e,r){let n={};for(let u=0;u<e.length;u++)n[e[u]]=r[u];function o(u,c){return u.split(".").reduce((l,d)=>l?.[d],c)}function s(u){let c=u.trim();if(c==="true")return!0;if(c==="false")return!1;if(c==="null")return null;if(c!=="undefined")return/^-?\d+(\.\d+)?$/.test(c)?Number(c):/^(['"`]).*\1$/.test(c)?c.slice(1,-1):o(c,n)}let i=t.trim(),a=i.match(/^(.+?)\s*\?\s*(.+?)\s*:\s*(.+)$/);if(a){let u=V(a[1].trim(),e,r);return V(u?a[2].trim():a[3].trim(),e,r)}if(i.includes("||")){let u=i.split("||");for(let c of u){let l=V(c.trim(),e,r);if(l)return l}return V(u[u.length-1].trim(),e,r)}if(i.includes("&&")){let u=i.split("&&"),c;for(let l of u)if(c=V(l.trim(),e,r),!c)return c;return c}let f=i.match(/^(.+?)\s*(===|!==|==|!=|>=|<=|>|<)\s*(.+)$/);if(f){let u=s(f[1]),c=s(f[3]);switch(f[2]){case"===":return u===c;case"!==":return u!==c;case"==":return u==c;case"!=":return u!=c;case">=":return u>=c;case"<=":return u<=c;case">":return u>c;case"<":return u<c}}return i.startsWith("!")?!V(i.slice(1).trim(),e,r):s(i)}function jt(t){let e=[],r="",n=0,o=!1,s="";for(let i=0;i<t.length;i++){let a=t[i];if(o){r+=a,a===s&&t[i-1]!=="\\"&&(o=!1);continue}if(a==="'"||a==='"'||a==="`"){o=!0,s=a,r+=a;continue}if(a==="("||a==="["||a==="{"){n++,r+=a;continue}if(a===")"||a==="]"||a==="}"){n--,r+=a;continue}if(a==="|"&&n===0&&t[i+1]!=="|"&&t[i-1]!=="|"){e.push(r.trim()),r="";continue}r+=a}return e.push(r.trim()),e}function Ut(t,e){let r=e.indexOf(":"),n,o;r===-1?(n=e.trim(),o=null):(n=e.substring(0,r).trim(),o=e.substring(r+1).trim());let s=w[n];if(!s)return X(`Unknown filter: ${n}`),t;let i=o?Ft(o):[];return s(t,...i)}function Ft(t){let e=[],r="",n=!1,o="";for(let s of t){if(n){if(s===o){n=!1;continue}r+=s;continue}if(s==="'"||s==='"'){n=!0,o=s;continue}if(s===","){e.push(r.trim()),r="";continue}r+=s}return r.trim()&&e.push(r.trim()),e.map(s=>{let i=Number(s);return isNaN(i)?s:i})}function _(t,e){if(!(t==null||t===""))try{let r=jt(t),n=r[0],{keys:o,vals:s}=yt(e),i=["$store","$route","$router","$i18n","$refs","$form"];for(let c of i)o.includes(c)||(o.push(c),s[c]=e[c]);let a=o,f=a.map(c=>s[c]),u;if(p.csp==="strict")u=V(n,a,f);else{let c=n+"|"+a.join(","),l=At.get(c);l||(l=new Function(...a,`return (${n})`),At.set(c,l)),u=l(...f)}for(let c=1;c<r.length;c++)u=Ut(u,r[c]);return u}catch{return}}function F(t,e,r={}){try{let{keys:n,vals:o}=yt(e),s={$store:O,$route:j?.current,$router:j,$i18n:U,$refs:e.$refs};Object.assign(s,r);for(let[d,m]of Object.entries(s))n.includes(d)||(n.push(d),o[d]=m);let i=[...n],a=i.map(d=>o[d]),f=new Set,u=e;for(;u&&u.__isProxy;){for(let d of Object.keys(u.__raw))f.add(d);u=u.$parent}let c=[...f].filter(d=>!d.startsWith("$")).map(d=>`{let _c=__ctx;while(_c&&_c.__isProxy){if('${d}'in _c.__raw){_c.$set('${d}',typeof ${d}!=='undefined'?${d}:_c.__raw['${d}']);break;}_c=_c.$parent;}}`).join(`
|
|
8
8
|
`);new Function("__ctx",...i,`${t};
|
|
9
|
-
${
|
|
9
|
+
${c}`)(e,...a),typeof t=="string"&&t.includes("$store")&&ot()}catch(n){X("Expression error:",t,n.message),r.$el&&r.$el.dispatchEvent(new CustomEvent("nojs:error",{bubbles:!0,detail:{message:n.message,error:n}}))}}function tt(t,e){return t.split(".").reduce((r,n)=>r?.[n],e)}function Y(t,e){return t.replace(/\{([^}]+)\}/g,(r,n)=>{let o=_(n.trim(),e);return o??""})}function _t(t,e){if(t.startsWith("http://")||t.startsWith("https://")||t.startsWith("//"))return t;let r=e;for(;r;){let n=r.getAttribute?.("base");if(n)return n.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,"");r=r.parentElement}return p.baseApiUrl?p.baseApiUrl.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):t}async function dt(t,e="GET",r=null,n={},o=null,s=null){let i=_t(t,o),a={method:e.toUpperCase(),headers:{...p.headers||{},...n},credentials:p.credentials};if(r&&e!=="GET")if(typeof r=="string")try{JSON.parse(r),a.headers["Content-Type"]="application/json",a.body=r}catch{a.body=r}else r instanceof FormData?a.body=r:(a.headers["Content-Type"]="application/json",a.body=JSON.stringify(r));p.csrf&&e!=="GET"&&(a.headers[p.csrf.header||"X-CSRF-Token"]=p.csrf.token||"");for(let c of rt.request)a=c(i,a)||a;let f=p.retries||0,u;for(let c=0;c<=f;c++)try{let l=new AbortController,d=setTimeout(()=>l.abort(),p.timeout||1e4);if(s){if(s.aborted)throw clearTimeout(d),new DOMException("Aborted","AbortError");s.addEventListener("abort",()=>l.abort(),{once:!0})}a.signal=l.signal;let m=await fetch(i,a);clearTimeout(d);for(let y of rt.response)m=y(m,i)||m;if(!m.ok){let y=await m.json().catch(()=>({})),b=new Error(y.message||`HTTP ${m.status}`);throw b.status=m.status,b.body=y,b}let h=await m.text();try{return JSON.parse(h)}catch{return h}}catch(l){if(l.name==="AbortError")throw l;u=l,c<f&&await new Promise(d=>setTimeout(d,p.retryDelay||1e3))}throw u}function Et(t,e){if(e==="none")return null;if(e==="memory"){let n=ht.get(t);return n&&Date.now()-n.time<(p.cache.ttl||3e5)?n.data:null}let r=e==="local"?localStorage:e==="session"?sessionStorage:null;if(!r)return null;try{let n=r.getItem("nojs_cache_"+t);if(!n)return null;let o=JSON.parse(n);if(Date.now()-o.time<(p.cache.ttl||3e5))return o.data;r.removeItem("nojs_cache_"+t)}catch{}return null}function xt(t,e,r){if(r==="none")return;let n={data:e,time:Date.now()};if(r==="memory"){ht.set(t,n);return}let o=r==="local"?localStorage:r==="session"?sessionStorage:null;if(o)try{o.setItem("nojs_cache_"+t,JSON.stringify(n))}catch{}}var it=new Map;function v(t){let e=t;for(;e;){if(e.__ctx)return e.__ctx;e=e.parentElement}return L()}function z(t){let e=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT);for(;e.nextNode();)e.currentNode.__declared=!1}function M(t){if(!t)return null;let e=t.startsWith("#")?t.slice(1):t,r=document.getElementById(e);return r&&r.content?r.content.cloneNode(!0):null}function Lt(t){return p.sanitize?t.replace(/<script[\s\S]*?<\/script>/gi,"").replace(/on\w+\s*=/gi,"data-blocked=").replace(/javascript:/gi,""):t}function Tt(t,e){if(t.startsWith("./")){let r=e.parentNode;for(;r;){if(r.__srcBase)return r.__srcBase+t.slice(2);r=r.parentNode}return t.slice(2)}return _t(t,e)}async function Ct(t){let e=t||document,r=e.querySelectorAll("template[src]");if(k("[LRT] called on",e===document?"document":e.nodeName||"fragment","\u2014 found",r.length,"template[src]",[...r].map(o=>o.getAttribute("src"))),!r.length)return;let n=[...r].map(async o=>{if(o.__srcLoaded){k("[LRT] SKIP (already loaded):",o.getAttribute("src"));return}o.__srcLoaded=!0;let s=o.getAttribute("src"),i=Tt(s,o),a=i.substring(0,i.lastIndexOf("/")+1);try{let f=p.templates.cache!==!1,u;if(f&&it.has(i)?(u=it.get(i),k("[LRT] CACHE HIT:",i)):(u=await(await fetch(i)).text(),f&&it.set(i,u)),o.innerHTML=u,o.content&&(o.content.__srcBase=a),k("Loaded remote template:",s,"\u2192",i),await Ct(o.content||o),!o.hasAttribute("route")&&o.parentNode){let l=[...o.content.childNodes],d=o.parentNode,m=o.nextSibling;d.removeChild(o);for(let h of l)h.nodeType===1&&(h.__srcBase=h.__srcBase||a),d.insertBefore(h,m)}}catch(f){X("Failed to load template:",s,f.message)}});await Promise.all(n)}async function st(t){let e=t.getAttribute("src");if(t.__srcLoaded){k("[LTE] SKIP (already loaded):",e);return}k("[LTE] START fetch:",e,"| route:",t.hasAttribute("route"),"| inDOM:",document.contains(t),"| loading:",t.getAttribute("loading")),t.__srcLoaded=!0;let r=Tt(e,t),n=r.substring(0,r.lastIndexOf("/")+1),o=null,s=t.getAttribute("loading");if(s&&t.parentNode){let i=s.startsWith("#")?s.slice(1):s,a=document.getElementById(i);a&&a.content&&(o=document.createElement("span"),o.style.cssText="display:contents",o.appendChild(a.content.cloneNode(!0)),t.parentNode.insertBefore(o,t))}try{let i=p.templates.cache!==!1,a;if(i&&it.has(r)?(a=it.get(r),k("[LTE] CACHE HIT:",r)):(a=await(await fetch(r)).text(),i&&it.set(r,a)),t.innerHTML=a,t.content&&(t.content.__srcBase=n),k("Loaded remote template:",e,"\u2192",r),t.hasAttribute("route")||await Ct(t.content||t),o&&o.remove(),!t.hasAttribute("route")&&t.parentNode){let u=[...t.content.childNodes],c=t.parentNode,l=t.nextSibling;c.removeChild(t);for(let d of u)d.nodeType===1&&(d.__srcBase=d.__srcBase||n),c.insertBefore(d,l)}}catch(i){o&&o.remove(),X("Failed to load template:",e,i.message)}}function mt(t){(t||document).querySelectorAll("template[include]").forEach(r=>{let n=r.getAttribute("include"),o=document.getElementById(n.startsWith("#")?n.slice(1):n);!o||!o.content||r.replaceWith(o.content.cloneNode(!0))})}async function $t(t){let e=[...document.querySelectorAll("template[src]")],r=e.filter(o=>!o.__srcLoaded&&o.getAttribute("lazy")==="priority");await Promise.all(r.map(st));let n=e.filter(o=>{if(o.__srcLoaded)return!1;let s=o.getAttribute("lazy");return s==="ondemand"||s==="priority"?!1:o.hasAttribute("route")?t!=null&&o.getAttribute("route")===t:!0});await Promise.all(n.map(st))}function St(){let e=[...document.querySelectorAll("template[src]")].filter(r=>r.__srcLoaded||r.getAttribute("lazy")==="ondemand"?!1:r.hasAttribute("route"));return Promise.all(e.map(st))}var ut=new Map;function A(t,e){ut.set(t,{priority:e.priority??50,init:e.init})}function qt(t){if(ut.has(t))return{directive:ut.get(t),match:t};let e=["class-*","on:*","style-*","bind-*"];for(let r of e){let n=r.replace("*","");if(t.startsWith(n)&&ut.has(r))return{directive:ut.get(r),match:r}}return null}function Nt(t){if(t.__declared)return;t.__declared=!0;let e=[];for(let r of[...t.attributes]){let n=qt(r.name);n&&e.push({name:r.name,value:r.value,priority:n.directive.priority,init:n.directive.init})}e.sort((r,n)=>r.priority-n.priority);for(let r of e)r.init(t,r.name,r.value)}function T(t){if(!t)return;t.nodeType===1&&!t.__declared&&Nt(t);let e=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT);for(;e.nextNode();){let r=e.currentNode;r.tagName==="TEMPLATE"||r.tagName==="SCRIPT"||r.__declared||Nt(r)}}var It=!1;function Dt(){if(It||typeof document>"u")return;It=!0;let t=`
|
|
10
10
|
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
|
|
11
11
|
@keyframes fadeOut { from { opacity: 1; } to { opacity: 0; } }
|
|
12
12
|
@keyframes fadeInUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }
|
|
@@ -21,5 +21,5 @@ ${a}`)(e,...c)}catch(n){X("Expression error:",t,n.message)}}function tt(t,e){ret
|
|
|
21
21
|
@keyframes zoomOut { from { opacity: 1; transform: scale(1); } to { opacity: 0; transform: scale(0.5); } }
|
|
22
22
|
@keyframes bounceIn { 0% { opacity: 0; transform: scale(0.3); } 50% { opacity: 1; transform: scale(1.05); } 70% { transform: scale(0.9); } 100% { opacity: 1; transform: scale(1); } }
|
|
23
23
|
@keyframes bounceOut { 0% { opacity: 1; transform: scale(1); } 20% { transform: scale(0.9); } 50%,55% { opacity: 1; transform: scale(1.1); } 100% { opacity: 0; transform: scale(0.3); } }
|
|
24
|
-
`.trim(),e=document.createElement("style");e.setAttribute("data-nojs-animations",""),e.textContent=t,document.head.appendChild(e)}function st(t,e,r,n){Nt();let o=n||1e3;if(e){let s=t.firstElementChild||t;s.classList.add(e),n&&(s.style.animationDuration=n+"ms"),s.addEventListener("animationend",()=>s.classList.remove(e),{once:!0})}if(r){let s=t.firstElementChild||t;s.classList.add(r+"-enter",r+"-enter-active"),requestAnimationFrame(()=>{s.classList.remove(r+"-enter"),s.classList.add(r+"-enter-to");let i=()=>{s.classList.remove(r+"-enter-active",r+"-enter-to")};s.addEventListener("transitionend",i,{once:!0}),setTimeout(i,o)})}}function pt(t,e,r,n,o){Nt();let s=o||2e3;if(!t.firstElementChild&&!t.childNodes.length){n();return}if(e){let i=t.firstElementChild||t;i.classList.add(e),o&&(i.style.animationDuration=o+"ms"),i.addEventListener("animationend",()=>{i.classList.remove(e),n()},{once:!0}),setTimeout(n,s);return}if(r){let i=t.firstElementChild||t;i.classList.add(r+"-leave",r+"-leave-active"),requestAnimationFrame(()=>{i.classList.remove(r+"-leave"),i.classList.add(r+"-leave-to");let c=()=>{i.classList.remove(r+"-leave-active",r+"-leave-to"),n()};i.addEventListener("transitionend",c,{once:!0}),setTimeout(c,s)});return}n()}function It(){let t=[],e={path:"",params:{},query:{},hash:""},r=new Set;function n(a){let l=t.find(d=>d.path===a);return l||(l={path:a,outlets:{}},t.push(l)),l}function o(a){let l={};return new URLSearchParams(a).forEach((d,m)=>{l[m]=d}),l}function s(a){for(let l of t){let d=[],m=l.path.replace(/:(\w+)/g,(_,S)=>(d.push(S),"([^/]+)")),h=new RegExp("^"+m+"$"),y=a.match(h);if(y){let _={};return d.forEach((S,g)=>{_[S]=y[g+1]}),{route:l,params:_}}}return null}async function i(a,l=!1){let d=a.indexOf("#"),m=d>=0?a.slice(d+1):"",h=d>=0?a.slice(0,d):a,[y,_=""]=h.split("?");e={path:y,params:{},query:o(_),hash:m?"#"+m:""};let S=s(y);if(S){e.params=S.params;let g=S.route.outlets?.default,E=g?.getAttribute("guard"),C=g?.getAttribute("redirect");if(E){let N=L({},null);if(N.__raw.$store=M,N.__raw.$route=e,!b(E,N)&&C){await i(C,!0);return}}}if(p.router.mode==="hash"){let g="#"+a;l?window.location.replace(g):window.location.hash=a}else{let g=p.router.base.replace(/\/$/,"")+a;l?window.history.replaceState({},"",g):window.history.pushState({},"",g)}if(await c(S),r.forEach(g=>g(e)),e.hash){let g=e.hash.slice(1);requestAnimationFrame(()=>{let E=document.getElementById(g);E&&E.scrollIntoView({behavior:"smooth"})})}}async function c(a){let l=document.querySelectorAll("[route-view]");for(let m of l){let h=m.getAttribute("route-view"),y=h&&h.trim()!==""?h.trim():"default",_=a?.route?.outlets?.[y];if(m.innerHTML="",_){_.getAttribute("src")&&!_.__srcLoaded&&(k("Loading route template on demand:",_.getAttribute("src")),await it(_));let S=_.content.cloneNode(!0),g=L({$route:e},v(m)),E=document.createElement("div");E.style.display="contents",E.__ctx=g,_.content.__srcBase&&(E.__srcBase=_.content.__srcBase),E.appendChild(S),m.appendChild(E),mt(E);let C=[...E.querySelectorAll("template[src]")];k("[ROUTER] nested templates found in wrapper:",C.length,C.map(I=>I.getAttribute("src")+(I.__srcLoaded?"[LOADED]":"[NEW]"))),await Promise.all(C.map(it)),k("[ROUTER] all nested loads done for route:",e.path);let N=m.getAttribute("transition");N&&st(E,null,N),z(E),T(E)}}document.querySelectorAll("[route]").forEach(m=>{let h=m.getAttribute("route"),y=m.getAttribute("route-active")||"active",_=m.getAttribute("route-active-exact");_?m.classList.toggle(_,e.path===h):y&&!m.hasAttribute("route-active-exact")&&m.classList.toggle(y,e.path.startsWith(h))});let d=p.router.scrollBehavior;d==="top"?window.scrollTo(0,0):d==="smooth"&&window.scrollTo({top:0,behavior:"smooth"})}function u(a,l){l.scrollIntoView({behavior:"smooth"});let d='a[href="#'+a+'"]';document.querySelectorAll('a[href^="#"]').forEach(m=>{m.hasAttribute("route")||m.classList.toggle("active",m.matches(d))})}return{get current(){return e},push(a){return i(a)},replace(a){return i(a,!0)},back(){window.history.back()},forward(){window.history.forward()},on(a){return r.add(a),()=>r.delete(a)},register(a,l,d="default"){let m=n(a);m.outlets[d]=l},async init(){if(document.querySelectorAll("template[route]").forEach(a=>{let l=a.getAttribute("route"),d=a.getAttribute("outlet")||"default",m=n(l);m.outlets[d]=a}),document.addEventListener("click",a=>{let l=a.target.closest("[route]");if(l&&!l.hasAttribute("route-view")){a.preventDefault();let d=l.getAttribute("route");i(d);return}if(p.router.mode==="hash"){let d=a.target.closest('a[href^="#"]');if(d&&!d.hasAttribute("route")){let h=d.getAttribute("href").slice(1);if(h&&!h.startsWith("/")){let y=document.getElementById(h);y&&(a.preventDefault(),u(h,y))}}}}),p.router.mode==="hash"){window.addEventListener("hashchange",()=>{let l=window.location.hash.slice(1)||"/";if(!l.startsWith("/")){let d=document.getElementById(l);d&&(u(l,d),window.history.replaceState(null,"","#"+e.path));return}i(l,!0)});let a=window.location.hash.slice(1)||"/";await i(a,!0)}else{window.addEventListener("popstate",()=>{let l=window.location.pathname.replace(p.router.base,"")||"/";i(l,!0)});let a=window.location.pathname.replace(p.router.base,"")||"/";await i(a,!0)}}}}w.uppercase=t=>String(t??"").toUpperCase();w.lowercase=t=>String(t??"").toLowerCase();w.capitalize=t=>String(t??"").replace(/\b\w/g,e=>e.toUpperCase());w.truncate=(t,e=100)=>{let r=String(t??"");return r.length>e?r.slice(0,e)+"...":r};w.trim=t=>String(t??"").trim();w.stripHtml=t=>String(t??"").replace(/<[^>]*>/g,"");w.slugify=t=>String(t??"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"");w.nl2br=t=>String(t??"").replace(/\n/g,"<br>");w.encodeUri=t=>encodeURIComponent(String(t??""));w.number=(t,e=0)=>{let r=Number(t);return isNaN(r)?t:r.toLocaleString(void 0,{minimumFractionDigits:e,maximumFractionDigits:e})};w.currency=(t,e="USD")=>{let r=Number(t);if(isNaN(r))return t;try{return r.toLocaleString(void 0,{style:"currency",currency:e})}catch{return`${e} ${r.toFixed(2)}`}};w.percent=(t,e=0)=>{let r=Number(t);return isNaN(r)?t:(r*100).toFixed(e)+"%"};w.filesize=t=>{let e=Number(t);if(isNaN(e))return t;let r=["B","KB","MB","GB","TB"],n=0,o=e;for(;o>=1024&&n<r.length-1;)o/=1024,n++;return o.toFixed(n>0?1:0)+" "+r[n]};w.ordinal=t=>{let e=Number(t);if(isNaN(e))return t;let r=["th","st","nd","rd"],n=e%100;return e+(r[(n-20)%10]||r[n]||r[0])};w.count=t=>Array.isArray(t)?t.length:0;w.first=t=>Array.isArray(t)?t[0]:t;w.last=t=>Array.isArray(t)?t[t.length-1]:t;w.join=(t,e=", ")=>Array.isArray(t)?t.join(e):t;w.reverse=t=>Array.isArray(t)?[...t].reverse():t;w.unique=t=>Array.isArray(t)?[...new Set(t)]:t;w.pluck=(t,e)=>Array.isArray(t)?t.map(r=>r?.[e]):t;w.sortBy=(t,e)=>{if(!Array.isArray(t))return t;let r=e?.startsWith("-"),n=r?e.slice(1):e;return[...t].sort((o,s)=>{let i=o?.[n],c=s?.[n],u=i<c?-1:i>c?1:0;return r?-u:u})};w.where=(t,e,r)=>Array.isArray(t)?t.filter(n=>n?.[e]===r):t;w.date=(t,e="short")=>{let r=new Date(t);if(isNaN(r))return t;let n=e==="long"?{dateStyle:"long"}:e==="full"?{dateStyle:"full"}:{dateStyle:"short"};return r.toLocaleDateString(void 0,n)};w.datetime=t=>{let e=new Date(t);return isNaN(e)?t:e.toLocaleString()};w.relative=t=>{let e=new Date(t);if(isNaN(e))return t;let r=(Date.now()-e.getTime())/1e3;return r<60?"just now":r<3600?Math.floor(r/60)+"m ago":r<86400?Math.floor(r/3600)+"h ago":r<2592e3?Math.floor(r/86400)+"d ago":e.toLocaleDateString()};w.fromNow=t=>{let e=new Date(t);if(isNaN(e))return t;let r=(e.getTime()-Date.now())/1e3;return r<0?w.relative(t):r<60?"in a moment":r<3600?"in "+Math.floor(r/60)+"m":r<86400?"in "+Math.floor(r/3600)+"h":"in "+Math.floor(r/86400)+"d"};w.default=(t,e="")=>t==null||t===""?e:t;w.json=(t,e=2)=>JSON.stringify(t,null,e);w.debug=t=>(console.log("[No.JS debug]",t),t);w.keys=t=>t&&typeof t=="object"?Object.keys(t):[];w.values=t=>t&&typeof t=="object"?Object.values(t):[];A("state",{priority:0,init(t,e,r){let n=b(r,L())||{},o=t.parentElement?v(t.parentElement):null,s=L(n,o);t.__ctx=s;let i=t.getAttribute("persist"),c=t.getAttribute("persist-key");if(i&&c){let u=i==="localStorage"?localStorage:i==="sessionStorage"?sessionStorage:null;if(u){try{let f=u.getItem("nojs_state_"+c);if(f){let a=JSON.parse(f);for(let[l,d]of Object.entries(a))s.$set(l,d)}}catch{}s.$watch(()=>{try{u.setItem("nojs_state_"+c,JSON.stringify(s.__raw))}catch{}})}}k("state",n)}});A("store",{priority:0,init(t,e,r){let n=t.getAttribute("value");if(r){if(!M[r]){let o=n?b(n,L())||{}:{};M[r]=L(o)}k("store",r)}}});A("computed",{priority:2,init(t,e,r){let n=t.getAttribute("expr");if(!r||!n)return;let o=v(t);function s(){let i=b(n,o);o.$set(r,i)}o.$watch(s),s()}});A("watch",{priority:2,init(t,e,r){let n=v(t),o=t.getAttribute("on:change"),s=b(r,n);n.$watch(()=>{let i=b(r,n);if(i!==s){let c=s;s=i,o&&F(o,n,{$old:c,$new:i})}})}});var Ft=["get","post","put","patch","delete"];for(let t of Ft)A(t,{priority:1,init(e,r,n){let o=e.getAttribute("as")||"data",s=e.getAttribute("loading"),i=e.getAttribute("error"),c=e.getAttribute("empty"),u=e.getAttribute("success"),f=e.getAttribute("then"),a=e.getAttribute("redirect"),l=e.getAttribute("confirm"),d=parseInt(e.getAttribute("refresh"))||0,m=e.getAttribute("cached"),h=e.hasAttribute("cached")?m||"memory":"none",y=e.getAttribute("body"),_=e.getAttribute("headers"),S=e.getAttribute("var"),g=e.getAttribute("into"),E=parseInt(e.getAttribute("retry"))||p.retries,C=parseInt(e.getAttribute("retry-delay"))||p.retryDelay||1e3,N=e.getAttribute("params"),I=e.parentElement?v(e.parentElement):L(),x=e.__ctx||L({},I);e.__ctx=x;let B=[...e.childNodes].map(D=>D.cloneNode(!0)),R=null;async function P(){if(R&&R.abort(),R=new AbortController,l&&!window.confirm(l))return;let D=Y(n,x);if(N){let $=b(N,x);if($&&typeof $=="object"){let K=D.includes("?")?"&":"?",W=new URLSearchParams($).toString();W&&(D+=K+W)}}let at=t+":"+D;if(t==="get"){let $=vt(at,h);if($!=null){x.$set(o,$),z(e),T(e);return}}if(s){let $=O(s);$&&(e.innerHTML="",e.appendChild($),T(e))}try{let $=null;if(y){let H=Y(y,x);try{$=JSON.parse(H)}catch{$=H}}if(e.tagName==="FORM"){let H=new FormData(e);$=Object.fromEntries(H.entries())}let K=_?JSON.parse(_):{},W=p.retries,et=p.retryDelay;p.retries=E,p.retryDelay=C;let J=await dt(D,t,$,K,e,R.signal);if(p.retries=W,p.retryDelay=et,t==="get"&&At(at,J,h),c&&(J==null||Array.isArray(J)&&J.length===0)){let H=O(c);H&&(e.innerHTML="",e.appendChild(H),T(e));return}if(x.$set(o,J),g&&(M[g]||(M[g]=L({})),M[g].$set(o,J),ut()),u){let H=O(u);if(H){e.innerHTML="";let Mt=document.getElementById(u.replace("#",""))?.getAttribute("var")||S||"result",kt=L({[Mt]:J},x),ct=document.createElement("div");ct.style.display="contents",ct.__ctx=kt,ct.appendChild(H),e.appendChild(ct),T(ct)}}else{e.innerHTML="";for(let H of B)e.appendChild(H.cloneNode(!0));z(e),T(e)}f&&F(f,x,{result:J}),a&&j&&j.push(a),ft("fetch:success",{url:D,data:J})}catch($){if($.name==="AbortError")return;if(X(`${t.toUpperCase()} ${D} failed:`,$.message),ft("fetch:error",{url:D,error:$}),ft("error",{url:D,error:$}),i){let K=O(i);if(K){e.innerHTML="";let et=document.getElementById(i.replace("#",""))?.getAttribute("var")||"err",J=L({[et]:{message:$.message,status:$.status,body:$.body}},x),H=document.createElement("div");H.style.display="contents",H.__ctx=J,H.appendChild(K),e.appendChild(H),T(H)}}}}if(e.tagName==="FORM"&&t!=="get"?e.addEventListener("submit",D=>{D.preventDefault(),P()}):t==="get"?P():e.addEventListener("click",D=>{D.preventDefault(),P()}),/\{[^}]+\}/.test(n)){let K=function(){let et=Y(n,x);et!==at&&(at=et,$&&clearTimeout($),D>0?$=setTimeout(P,D):P())},D=parseInt(e.getAttribute("debounce"))||0,at=Y(n,x),$=null,W=I;for(;W&&W.__isProxy;)W.$watch(K),W=W.$parent}d>0&&setInterval(P,d)}});A("bind",{priority:20,init(t,e,r){let n=v(t);function o(){let s=b(r,n);s!=null&&(t.textContent=String(s))}Z(r,n,o),o()}});A("bind-html",{priority:20,init(t,e,r){let n=v(t);function o(){let s=b(r,n);s!=null&&(t.innerHTML=xt(String(s)))}Z(r,n,o),o()}});A("bind-*",{priority:20,init(t,e,r){let n=e.replace("bind-",""),o=v(t);n==="value"&&(t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.tagName==="SELECT")&&t.addEventListener("input",()=>{let i=t.type==="number"?Number(t.value):t.value;F(`${r} = ${JSON.stringify(i)}`,o)});function s(){let i=b(r,o);if(["disabled","readonly","checked","selected","hidden","required"].includes(n)){i?t.setAttribute(n,""):t.removeAttribute(n),n in t&&(t[n]=!!i);return}i!=null?t.setAttribute(n,String(i)):t.removeAttribute(n)}Z(r,o,s),s()}});A("model",{priority:20,init(t,e,r){let n=v(t),o=t.tagName,s=t.type;function i(){let u=b(r,n);o==="INPUT"&&s==="checkbox"?t.checked=!!u:o==="INPUT"&&s==="radio"?t.checked=t.value===String(u):t.value=u!=null?String(u):""}let c=o==="SELECT"||s==="checkbox"||s==="radio"?"change":"input";t.addEventListener(c,()=>{let u;s==="checkbox"?u=t.checked:s==="number"||s==="range"?u=Number(t.value):u=t.value,F(`${r} = __val`,n,{__val:u})}),n.$watch(i),i()}});A("if",{priority:10,init(t,e,r){let n=v(t),o=t.getAttribute("then"),s=t.getAttribute("else"),i=t.getAttribute("animate-enter")||t.getAttribute("animate"),c=t.getAttribute("animate-leave"),u=t.getAttribute("transition"),f=parseInt(t.getAttribute("animate-duration"))||0,a=[...t.childNodes].map(h=>h.cloneNode(!0)),l;function d(){let h=!!b(r,n);h!==l&&(l=h,c||u?pt(t,c,u,()=>m(h),f):m(h))}function m(h){if(h)if(o){let y=O(o);y&&(t.innerHTML="",t.appendChild(y))}else{t.innerHTML="";for(let y of a)t.appendChild(y.cloneNode(!0))}else if(s){let y=O(s);y&&(t.innerHTML="",t.appendChild(y))}else t.innerHTML="";z(t),T(t),(i||u)&&st(t,i,u,f)}n.$watch(d),d()}});A("else-if",{priority:10,init(t,e,r){let n=v(t),o=t.getAttribute("then");function s(){let i=t.previousElementSibling;for(;i;){let u=i.getAttribute("if")||i.getAttribute("else-if");if(u){if(b(u,n)){t.innerHTML="",t.style.display="none";return}}else break;i=i.previousElementSibling}let c=!!b(r,n);if(t.style.display="",c){if(o){let u=O(o);u&&(t.innerHTML="",t.appendChild(u))}z(t),T(t)}else t.innerHTML=""}n.$watch(s),s()}});A("else",{priority:10,init(t){if(t.hasAttribute("if"))return;let e=v(t),r=t.getAttribute("then"),n=[...t.childNodes].map(s=>s.cloneNode(!0));function o(){let s=t.previousElementSibling;for(;s;){let i=s.getAttribute("if")||s.getAttribute("else-if");if(i){if(b(i,e)){t.innerHTML="",t.style.display="none";return}}else break;s=s.previousElementSibling}if(t.style.display="",r){let i=O(r);i&&(t.innerHTML="",t.appendChild(i))}else{t.innerHTML="";for(let i of n)t.appendChild(i.cloneNode(!0))}z(t),T(t)}e.$watch(o),o()}});A("show",{priority:20,init(t,e,r){let n=v(t),o=t.getAttribute("animate-enter")||t.getAttribute("animate"),s=t.getAttribute("animate-leave"),i=t.getAttribute("transition"),c=parseInt(t.getAttribute("animate-duration"))||0,u;function f(){let a=!!b(r,n);a!==u&&(u=a,a?(t.style.display="",(o||i)&&st(t,o,i,c)):s||i?pt(t,s,i,()=>{t.style.display="none"},c):t.style.display="none")}Z(r,n,f),f()}});A("hide",{priority:20,init(t,e,r){let n=v(t),o=t.getAttribute("animate-enter")||t.getAttribute("animate"),s=t.getAttribute("animate-leave"),i=t.getAttribute("transition"),c=parseInt(t.getAttribute("animate-duration"))||0,u;function f(){let a=!b(r,n);a!==u&&(u=a,a?(t.style.display="",(o||i)&&st(t,o,i,c)):s||i?pt(t,s,i,()=>{t.style.display="none"},c):t.style.display="none")}Z(r,n,f),f()}});A("switch",{priority:10,init(t,e,r){let n=v(t);function o(){let s=b(r,n),i=!1;for(let c of[...t.children]){let u=c.getAttribute("case"),f=c.hasAttribute("default"),a=c.getAttribute("then");if(u){let l=u.split(",").map(d=>b(d.trim(),n));if(!i&&l.includes(s)){if(i=!0,c.style.display="",a){let d=O(a);d&&(c.innerHTML="",c.appendChild(d)),c.__declared=!1,T(c)}}else c.style.display="none"}else if(f&&(c.style.display=i?"none":"",!i&&a)){let l=O(a);l&&(c.innerHTML="",c.appendChild(l)),c.__declared=!1,T(c)}}}n.$watch(o),o()}});A("each",{priority:10,init(t,e,r){let n=v(t),o=r.match(/^(\w+)\s+in\s+(\S+)$/);if(!o)return;let[,s,i]=o,c=t.getAttribute("template"),u=t.getAttribute("else"),f=t.getAttribute("key"),a=t.getAttribute("animate-enter")||t.getAttribute("animate"),l=t.getAttribute("animate-leave"),d=parseInt(t.getAttribute("animate-stagger"))||0,m=parseInt(t.getAttribute("animate-duration"))||0;function h(){let _=tt(i,n);if(!Array.isArray(_))return;if(_.length===0&&u){let g=O(u);g&&(t.innerHTML="",t.appendChild(g),T(t));return}let S=c?document.getElementById(c):null;if(S)if(l&&t.children.length>0){let g=[...t.children],E=g.length;g.forEach(C=>{let N=C.firstElementChild||C;N.classList.add(l);let I=()=>{N.classList.remove(l),E--,E<=0&&y(S,_)};N.addEventListener("animationend",I,{once:!0}),setTimeout(I,m||2e3)})}else y(S,_)}function y(_,S){let g=S.length;t.innerHTML="",S.forEach((E,C)=>{let N={[s]:E,$index:C,$count:g,$first:C===0,$last:C===g-1,$even:C%2===0,$odd:C%2!==0},I=L(N,n),x=_.content.cloneNode(!0),B=document.createElement("div");if(B.style.display="contents",B.__ctx=I,B.appendChild(x),t.appendChild(B),T(B),a&&d&&(B.style.animationDelay=C*d+"ms"),a){let R=B.firstElementChild;R&&R.classList.add(a)}})}n.$watch(h),h()}});A("foreach",{priority:10,init(t,e,r){let n=v(t),o=t.getAttribute("from"),s=t.getAttribute("index")||"$index",i=t.getAttribute("else"),c=t.getAttribute("filter"),u=t.getAttribute("sort"),f=parseInt(t.getAttribute("limit"))||1/0,a=parseInt(t.getAttribute("offset"))||0,l=t.getAttribute("template"),d=t.getAttribute("animate-enter")||t.getAttribute("animate"),m=t.getAttribute("animate-leave"),h=parseInt(t.getAttribute("animate-stagger"))||0,y=parseInt(t.getAttribute("animate-duration"))||0;if(!o||!r)return;let _=l?null:t.cloneNode(!0);function S(){let g=tt(o,n);if(!Array.isArray(g))return;if(c&&(g=g.filter((I,x)=>{let B=L({[r]:I,[s]:x},n);return!!b(c,B)})),u){let I=u.startsWith("-"),x=I?u.slice(1):u;g=[...g].sort((B,R)=>{let P=tt(x,B)??B?.[x],q=tt(x,R)??R?.[x],D=P<q?-1:P>q?1:0;return I?-D:D})}if(g=g.slice(a,a+f),g.length===0&&i){let I=O(i);I&&(t.innerHTML="",t.appendChild(I),T(t));return}let E=l?document.getElementById(l):null,C=g.length;function N(){t.innerHTML="",g.forEach((I,x)=>{let B={[r]:I,[s]:x,$index:x,$count:C,$first:x===0,$last:x===C-1,$even:x%2===0,$odd:x%2!==0},R=L(B,n),P;E?P=E.content.cloneNode(!0):P=_.cloneNode(!0);let q=document.createElement("div");if(q.style.display="contents",q.__ctx=R,q.appendChild(P),t.appendChild(q),T(q),d&&h&&(q.style.animationDelay=x*h+"ms"),d){let D=q.firstElementChild;D&&D.classList.add(d)}})}if(m&&t.children.length>0){let I=[...t.children],x=I.length;I.forEach(B=>{let R=B.firstElementChild||B;R.classList.add(m);let P=()=>{R.classList.remove(m),x--,x<=0&&N()};R.addEventListener("animationend",P,{once:!0}),setTimeout(P,y||2e3)})}else N()}n.$watch(S),S()}});A("class-*",{priority:20,init(t,e,r){let n=e.replace("class-",""),o=v(t);if(n==="map"){let i=function(){let c=b(r,o);if(c&&typeof c=="object")for(let[u,f]of Object.entries(c))t.classList.toggle(u,!!f)};o.$watch(i),i();return}if(n==="list"){let c=function(){let u=b(r,o);if(Array.isArray(u)){i.forEach(a=>{a&&t.classList.remove(a)});let f=u.filter(Boolean);f.forEach(a=>t.classList.add(a)),i=f}},i=[];o.$watch(c),c();return}function s(){t.classList.toggle(n,!!b(r,o))}o.$watch(s),s()}});A("style-*",{priority:20,init(t,e,r){let n=e.replace("style-",""),o=v(t);if(n==="map"){let c=function(){let u=b(r,o);if(u&&typeof u=="object")for(let[f,a]of Object.entries(u))t.style[f]=a??""};o.$watch(c),c();return}let s=n.replace(/-([a-z])/g,(c,u)=>u.toUpperCase());function i(){let c=b(r,o);t.style[s]=c!=null?String(c):""}o.$watch(i),i()}});A("on:*",{priority:20,init(t,e,r){let n=v(t),o=e.replace("on:","").split("."),s=o[0],i=new Set(o.slice(1));if(s==="mounted"){requestAnimationFrame(()=>F(r,n,{$el:t}));return}if(s==="init"){F(r,n,{$el:t});return}if(s==="updated"){new MutationObserver(()=>{F(r,n,{$el:t})}).observe(t,{childList:!0,subtree:!0,characterData:!0,attributes:!0});return}if(s==="error"){window.addEventListener("error",l=>{(t.contains(l.target)||l.target===t)&&F(r,n,{$el:t,$error:l.error||l.message})});return}if(s==="unmounted"){let l=new MutationObserver(d=>{for(let m of d)for(let h of m.removedNodes)if(h===t||h.contains?.(t)){F(r,n,{$el:t}),l.disconnect();return}});t.parentElement&&l.observe(t.parentElement,{childList:!0});return}let c=0,u=0;for(let l of i)/^\d+$/.test(l)&&(i.has("debounce")?c=parseInt(l):i.has("throttle")&&(u=parseInt(l)));let f=l=>{if(s==="keydown"||s==="keyup"||s==="keypress"){let d=["enter","escape","tab","space","delete","backspace","up","down","left","right","ctrl","alt","shift","meta"];for(let m of i)if(d.includes(m)&&(m==="enter"&&l.key!=="Enter"||m==="escape"&&l.key!=="Escape"||m==="tab"&&l.key!=="Tab"||m==="space"&&l.key!==" "||m==="delete"&&l.key!=="Delete"&&l.key!=="Backspace"||m==="up"&&l.key!=="ArrowUp"||m==="down"&&l.key!=="ArrowDown"||m==="left"&&l.key!=="ArrowLeft"||m==="right"&&l.key!=="ArrowRight"||m==="ctrl"&&!l.ctrlKey||m==="alt"&&!l.altKey||m==="shift"&&!l.shiftKey||m==="meta"&&!l.metaKey))return}i.has("prevent")&&l.preventDefault(),i.has("stop")&&l.stopPropagation(),!(i.has("self")&&l.target!==t)&&F(r,n,{$event:l,$el:t})};if(c>0){let l=f,d;f=m=>{clearTimeout(d),d=setTimeout(()=>l(m),c)}}if(u>0){let l=f,d=0;f=m=>{let h=Date.now();h-d>=u&&(d=h,l(m))}}let a={};i.has("once")&&(a.once=!0),t.addEventListener(s,f,a)}});A("trigger",{priority:20,init(t,e,r){let n=v(t),o=t.getAttribute("trigger-data");t.addEventListener("click",()=>{let s=o?b(o,n):null;t.dispatchEvent(new CustomEvent(r,{detail:s,bubbles:!0}))})}});A("ref",{priority:5,init(t,e,r){nt[r]=t}});A("use",{priority:10,init(t,e,r){let n=v(t),o=O(r);if(!o)return;let s={};for(let a of[...t.attributes])if(a.name.startsWith("var-")){let l=a.name.replace("var-","");s[l]=b(a.value,n)}let i=L(s,n),c={};for(let a of[...t.children]){let l=a.getAttribute("slot")||"default";c[l]||(c[l]=document.createDocumentFragment()),c[l].appendChild(a.cloneNode(!0))}let u=o.querySelectorAll("slot");for(let a of u){let l=a.getAttribute("name")||"default";c[l]&&a.replaceWith(c[l])}t.innerHTML="";let f=document.createElement("div");f.style.display="contents",f.__ctx=i,f.appendChild(o),t.appendChild(f),T(f)}});A("call",{priority:20,init(t,e,r){let n=v(t),o=t.getAttribute("method")||"get",s=t.getAttribute("as"),i=t.getAttribute("into"),c=t.getAttribute("success"),u=t.getAttribute("error"),f=t.getAttribute("then"),a=t.getAttribute("confirm"),l=t.getAttribute("body");t.addEventListener("click",async d=>{if(d.preventDefault(),a&&!window.confirm(a))return;let m=Y(r,n);try{let h=null;if(l){let _=Y(l,n);try{h=JSON.parse(_)}catch{h=_}}let y=await dt(m,o,h,{},t);if(s&&n.$set(s,y),s&&i&&(M[i]||(M[i]=L({})),M[i].$set(s,y),ut()),f&&F(f,n,{result:y}),c){let _=O(c);if(_){let g=document.getElementById(c.replace("#",""))?.getAttribute("var")||"result",E=L({[g]:y},n),C=t.closest("[route-view]")||t.parentElement,N=document.createElement("div");N.style.display="contents",N.__ctx=E,N.appendChild(_),C.appendChild(N),T(N)}}}catch(h){if(u){let y=O(u);if(y){let S=document.getElementById(u.replace("#",""))?.getAttribute("var")||"err",g=L({[S]:{message:h.message,status:h.status}},n),E=t.parentElement,C=document.createElement("div");C.style.display="contents",C.__ctx=g,C.appendChild(y),E.appendChild(C),T(C)}}}})}});function Dt(t,e,r){let n=e.split("|").map(o=>o.trim());for(let o of n){let[s,...i]=o.split(":"),c=Q[s];if(c){let u=c(t,...i,r);if(u!==!0&&u)return u}else switch(s){case"email":if(t&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t))return"Invalid email";break;case"url":try{new URL(t)}catch{return"Invalid URL"}break;case"min":if(Number(t)<Number(i[0]))return`Minimum value is ${i[0]}`;break;case"max":if(Number(t)>Number(i[0]))return`Maximum value is ${i[0]}`;break;case"between":{let u=Number(t);if(u<Number(i[0])||u>Number(i[1]))return`Must be between ${i[0]} and ${i[1]}`;break}case"match":if(t!==r[i[0]])return`Must match ${i[0]}`;break;case"phone":if(!/^[\d\s\-+()]{7,15}$/.test(t))return"Invalid phone number";break;case"cpf":if(!/^\d{3}\.?\d{3}\.?\d{3}-?\d{2}$/.test(t))return"Invalid CPF";break;case"cnpj":if(!/^\d{2}\.?\d{3}\.?\d{3}\/?\d{4}-?\d{2}$/.test(t))return"Invalid CNPJ";break;case"creditcard":if(!/^\d{13,19}$/.test(t.replace(/\s|-/g,"")))return"Invalid card number";break;case"custom":if(i[0]&&Q[i[0]]){let u=Q[i[0]](t,r);if(u!==!0&&u)return u}break}}return null}A("validate",{priority:30,init(t,e,r){let n=v(t);if(t.tagName==="FORM"){let s=function(){let i={},c={},u=!0;for(let f of t.querySelectorAll("input, textarea, select")){if(!f.name)continue;c[f.name]=f.value;let a=f.getAttribute("validate");if(a){let l=Dt(f.value,a,c);l&&(i[f.name]=l,u=!1)}f.checkValidity()||(i[f.name]=i[f.name]||f.validationMessage,u=!1)}o.valid=u,o.errors=i,o.values=c,n.$set("$form",{...o})},o={valid:!1,dirty:!1,touched:!1,submitting:!1,errors:{},values:{},reset:()=>{t.reset(),s()}};n.$set("$form",o),t.addEventListener("input",()=>{o.dirty=!0,s()}),t.addEventListener("focusout",()=>{o.touched=!0,s()}),t.addEventListener("submit",()=>{o.submitting=!0,n.$set("$form",{...o}),requestAnimationFrame(()=>{o.submitting=!1,n.$set("$form",{...o})})}),requestAnimationFrame(s);return}if(r&&(t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.tagName==="SELECT")){let o=t.getAttribute("error");t.addEventListener("input",()=>{let s=Dt(t.value,r,{});if(s&&o){let i=t.nextElementSibling?.__validationError?t.nextElementSibling:null;i||(i=document.createElement("div"),i.__validationError=!0,i.style.display="contents",t.parentNode.insertBefore(i,t.nextSibling));let c=O(o);if(c){let u=L({err:{message:s}},n);i.innerHTML="",i.__ctx=u,i.appendChild(c),T(i)}}else{let i=t.nextElementSibling?.__validationError?t.nextElementSibling:null;i&&(i.innerHTML="")}})}}});A("error-boundary",{priority:1,init(t,e,r){let n=v(t);window.addEventListener("error",o=>{if(t.contains(o.target)||t===o.target){let s=O(r);if(s){let i=L({err:{message:o.message}},n);t.innerHTML="";let c=document.createElement("div");c.style.display="contents",c.__ctx=i,c.appendChild(s),t.appendChild(c),T(c)}}})}});A("t",{priority:20,init(t,e,r){let n=v(t);function o(){let s={};for(let i of[...t.attributes])if(i.name.startsWith("t-")&&i.name!=="t"){let c=i.name.replace("t-","");s[c]=b(i.value,n)??i.value}t.textContent=U.t(r,s)}n.$watch(o),o()}});function qt(){if(typeof window>"u")return null;let t=p.router||{};if(t.mode==="hash")return window.location.hash.slice(1)||"/";let e=(t.base||"/").replace(/\/$/,"");return window.location.pathname.replace(e,"")||"/"}var Ot={get baseApiUrl(){return p.baseApiUrl},set baseApiUrl(t){p.baseApiUrl=t},config(t={}){let e={...p.headers},r={...p.cache},n={...p.templates},o={...p.router},s={...p.i18n};Object.assign(p,t),t.headers&&(p.headers={...e,...t.headers}),t.csrf&&(p.csrf=t.csrf),t.cache&&(p.cache={...r,...t.cache}),t.templates&&(p.templates={...n,...t.templates}),t.router&&(p.router={...o,...t.router}),t.i18n&&(p.i18n={...s,...t.i18n},U.locale=t.i18n.defaultLocale||U.locale)},async init(t){if(typeof document>"u")return;t=t||document.body,k("Initializing..."),mt(t);let e=qt();await Tt(e),document.querySelector("[route-view]")&&_t(It()),T(t),j&&await j.init(),k("Initialized."),Ct(),p.devtools&&typeof window<"u"&&(window.__NOJS_DEVTOOLS__={stores:M,config:p,refs:nt,router:j,filters:Object.keys(w),validators:Object.keys(Q),version:Ot.version},k("DevTools enabled \u2014 access via window.__NOJS_DEVTOOLS__"))},directive(t,e){A(t,e)},filter(t,e){w[t]=e},validator(t,e){Q[t]=e},i18n(t){if(t.locales&&(U.locales=t.locales),t.defaultLocale&&(U.locale=t.defaultLocale),t.fallbackLocale&&(p.i18n.fallbackLocale=t.fallbackLocale),t.detectBrowser){let e=typeof navigator<"u"?navigator.language:"en";U.locales[e]&&(U.locale=e)}},on(t,e){return G[t]||(G[t]=[]),G[t].push(e),()=>{G[t]=G[t].filter(r=>r!==e)}},interceptor(t,e){rt[t]&&rt[t].push(e)},get store(){return M},get router(){return j},createContext:L,evaluate:b,findContext:v,processTree:T,resolve:tt,version:"1.0.0"},Sr=Ot;export{Sr as default};
|
|
24
|
+
`.trim(),e=document.createElement("style");e.setAttribute("data-nojs-animations",""),e.textContent=t,document.head.appendChild(e)}function at(t,e,r,n){Dt();let o=n||1e3;if(e){let s=t.firstElementChild||t;s.classList.add(e),n&&(s.style.animationDuration=n+"ms"),s.addEventListener("animationend",()=>s.classList.remove(e),{once:!0})}if(r){let s=t.firstElementChild||t;s.classList.add(r+"-enter",r+"-enter-active"),requestAnimationFrame(()=>{s.classList.remove(r+"-enter"),s.classList.add(r+"-enter-to");let i=()=>{s.classList.remove(r+"-enter-active",r+"-enter-to")};s.addEventListener("transitionend",i,{once:!0}),setTimeout(i,o)})}}function pt(t,e,r,n,o){Dt();let s=o||2e3;if(!t.firstElementChild&&!t.childNodes.length){n();return}if(e){let i=t.firstElementChild||t;i.classList.add(e),o&&(i.style.animationDuration=o+"ms"),i.addEventListener("animationend",()=>{i.classList.remove(e),n()},{once:!0}),setTimeout(n,s);return}if(r){let i=t.firstElementChild||t;i.classList.add(r+"-leave",r+"-leave-active"),requestAnimationFrame(()=>{i.classList.remove(r+"-leave"),i.classList.add(r+"-leave-to");let a=()=>{i.classList.remove(r+"-leave-active",r+"-leave-to"),n()};i.addEventListener("transitionend",a,{once:!0}),setTimeout(a,s)});return}n()}function Mt(){let t=[],e={path:"",params:{},query:{},hash:""},r=new Set;function n(c){let l=t.find(d=>d.path===c);return l||(l={path:c,outlets:{}},t.push(l)),l}function o(c){let l={};return new URLSearchParams(c).forEach((d,m)=>{l[m]=d}),l}function s(c){for(let l of t){let d=[],m=l.path.replace(/:(\w+)/g,(b,S)=>(d.push(S),"([^/]+)")),h=new RegExp("^"+m+"$"),y=c.match(h);if(y){let b={};return d.forEach((S,g)=>{b[S]=y[g+1]}),{route:l,params:b}}}return null}async function i(c,l=!1){let d=c.indexOf("#"),m=d>=0?c.slice(d+1):"",h=d>=0?c.slice(0,d):c,[y,b=""]=h.split("?");e={path:y,params:{},query:o(b),hash:m?"#"+m:""};let S=s(y);if(S){e.params=S.params;let g=S.route.outlets?.default,x=g?.getAttribute("guard"),C=g?.getAttribute("redirect");if(x){let N=L({},null);if(N.__raw.$store=O,N.__raw.$route=e,!_(x,N)&&C){await i(C,!0);return}}}if(p.router.mode==="hash"){let g="#"+c;l?window.location.replace(g):window.location.hash=c}else{let g=p.router.base.replace(/\/$/,"")+c;l?window.history.replaceState({},"",g):window.history.pushState({},"",g)}if(await a(S),r.forEach(g=>g(e)),e.hash){let g=e.hash.slice(1);requestAnimationFrame(()=>{let x=document.getElementById(g);x&&x.scrollIntoView({behavior:"smooth"})})}}async function a(c){let l=document.querySelectorAll("[route-view]");for(let m of l){let h=m.getAttribute("route-view"),y=h&&h.trim()!==""?h.trim():"default",b=c?.route?.outlets?.[y];if(m.innerHTML="",b){b.getAttribute("src")&&!b.__srcLoaded&&(k("Loading route template on demand:",b.getAttribute("src")),await st(b));let S=b.content.cloneNode(!0),g=L({$route:e},v(m)),x=document.createElement("div");x.style.display="contents",x.__ctx=g,b.content.__srcBase&&(x.__srcBase=b.content.__srcBase),x.appendChild(S),m.appendChild(x),mt(x);let C=[...x.querySelectorAll("template[src]")];k("[ROUTER] nested templates found in wrapper:",C.length,C.map(I=>I.getAttribute("src")+(I.__srcLoaded?"[LOADED]":"[NEW]"))),await Promise.all(C.map(st)),k("[ROUTER] all nested loads done for route:",e.path);let N=m.getAttribute("transition");N&&at(x,null,N),z(x),T(x)}}document.querySelectorAll("[route]").forEach(m=>{let h=m.getAttribute("route"),y=m.getAttribute("route-active")||"active",b=m.getAttribute("route-active-exact");b?m.classList.toggle(b,e.path===h):y&&!m.hasAttribute("route-active-exact")&&m.classList.toggle(y,e.path.startsWith(h))});let d=p.router.scrollBehavior;d==="top"?window.scrollTo(0,0):d==="smooth"&&window.scrollTo({top:0,behavior:"smooth"})}function f(c,l){l.scrollIntoView({behavior:"smooth"});let d='a[href="#'+c+'"]';document.querySelectorAll('a[href^="#"]').forEach(m=>{m.hasAttribute("route")||m.classList.toggle("active",m.matches(d))})}return{get current(){return e},push(c){return i(c)},replace(c){return i(c,!0)},back(){window.history.back()},forward(){window.history.forward()},on(c){return r.add(c),()=>r.delete(c)},register(c,l,d="default"){let m=n(c);m.outlets[d]=l},async init(){if(document.querySelectorAll("template[route]").forEach(c=>{let l=c.getAttribute("route"),d=c.getAttribute("outlet")||"default",m=n(l);m.outlets[d]=c}),document.addEventListener("click",c=>{let l=c.target.closest("[route]");if(l&&!l.hasAttribute("route-view")){c.preventDefault();let d=l.getAttribute("route");i(d);return}if(p.router.mode==="hash"){let d=c.target.closest('a[href^="#"]');if(d&&!d.hasAttribute("route")){let h=d.getAttribute("href").slice(1);if(h&&!h.startsWith("/")){let y=document.getElementById(h);y&&(c.preventDefault(),f(h,y))}}}}),p.router.mode==="hash"){window.addEventListener("hashchange",()=>{let l=window.location.hash.slice(1)||"/";if(!l.startsWith("/")){let d=document.getElementById(l);d&&(f(l,d),window.history.replaceState(null,"","#"+e.path));return}i(l,!0)});let c=window.location.hash.slice(1)||"/";await i(c,!0)}else{window.addEventListener("popstate",()=>{let l=window.location.pathname.replace(p.router.base,"")||"/";i(l,!0)});let c=window.location.pathname.replace(p.router.base,"")||"/";await i(c,!0)}}}}w.uppercase=t=>String(t??"").toUpperCase();w.lowercase=t=>String(t??"").toLowerCase();w.capitalize=t=>String(t??"").replace(/\b\w/g,e=>e.toUpperCase());w.truncate=(t,e=100)=>{let r=String(t??"");return r.length>e?r.slice(0,e)+"...":r};w.trim=t=>String(t??"").trim();w.stripHtml=t=>String(t??"").replace(/<[^>]*>/g,"");w.slugify=t=>String(t??"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"");w.nl2br=t=>String(t??"").replace(/\n/g,"<br>");w.encodeUri=t=>encodeURIComponent(String(t??""));w.number=(t,e=0)=>{let r=Number(t);return isNaN(r)?t:r.toLocaleString(void 0,{minimumFractionDigits:e,maximumFractionDigits:e})};w.currency=(t,e="USD")=>{let r=Number(t);if(isNaN(r))return t;try{return r.toLocaleString(void 0,{style:"currency",currency:e})}catch{return`${e} ${r.toFixed(2)}`}};w.percent=(t,e=0)=>{let r=Number(t);return isNaN(r)?t:(r*100).toFixed(e)+"%"};w.filesize=t=>{let e=Number(t);if(isNaN(e))return t;let r=["B","KB","MB","GB","TB"],n=0,o=e;for(;o>=1024&&n<r.length-1;)o/=1024,n++;return o.toFixed(n>0?1:0)+" "+r[n]};w.ordinal=t=>{let e=Number(t);if(isNaN(e))return t;let r=["th","st","nd","rd"],n=e%100;return e+(r[(n-20)%10]||r[n]||r[0])};w.count=t=>Array.isArray(t)?t.length:0;w.first=t=>Array.isArray(t)?t[0]:t;w.last=t=>Array.isArray(t)?t[t.length-1]:t;w.join=(t,e=", ")=>Array.isArray(t)?t.join(e):t;w.reverse=t=>Array.isArray(t)?[...t].reverse():t;w.unique=t=>Array.isArray(t)?[...new Set(t)]:t;w.pluck=(t,e)=>Array.isArray(t)?t.map(r=>r?.[e]):t;w.sortBy=(t,e)=>{if(!Array.isArray(t))return t;let r=e?.startsWith("-"),n=r?e.slice(1):e;return[...t].sort((o,s)=>{let i=o?.[n],a=s?.[n],f=i<a?-1:i>a?1:0;return r?-f:f})};w.where=(t,e,r)=>Array.isArray(t)?t.filter(n=>n?.[e]===r):t;w.date=(t,e="short")=>{let r=new Date(t);if(isNaN(r))return t;let n=e==="long"?{dateStyle:"long"}:e==="full"?{dateStyle:"full"}:{dateStyle:"short"};return r.toLocaleDateString(void 0,n)};w.datetime=t=>{let e=new Date(t);return isNaN(e)?t:e.toLocaleString()};w.relative=t=>{let e=new Date(t);if(isNaN(e))return t;let r=(Date.now()-e.getTime())/1e3;return r<60?"just now":r<3600?Math.floor(r/60)+"m ago":r<86400?Math.floor(r/3600)+"h ago":r<2592e3?Math.floor(r/86400)+"d ago":e.toLocaleDateString()};w.fromNow=t=>{let e=new Date(t);if(isNaN(e))return t;let r=(e.getTime()-Date.now())/1e3;return r<0?w.relative(t):r<60?"in a moment":r<3600?"in "+Math.floor(r/60)+"m":r<86400?"in "+Math.floor(r/3600)+"h":"in "+Math.floor(r/86400)+"d"};w.default=(t,e="")=>t==null||t===""?e:t;w.json=(t,e=2)=>JSON.stringify(t,null,e);w.debug=t=>(console.log("[No.JS debug]",t),t);w.keys=t=>t&&typeof t=="object"?Object.keys(t):[];w.values=t=>t&&typeof t=="object"?Object.values(t):[];A("state",{priority:0,init(t,e,r){let n=_(r,L())||{},o=t.parentElement?v(t.parentElement):null,s=L(n,o);t.__ctx=s;let i=t.getAttribute("persist"),a=t.getAttribute("persist-key");if(i&&a){let f=i==="localStorage"?localStorage:i==="sessionStorage"?sessionStorage:null;if(f){try{let u=f.getItem("nojs_state_"+a);if(u){let c=JSON.parse(u);for(let[l,d]of Object.entries(c))s.$set(l,d)}}catch{}s.$watch(()=>{try{f.setItem("nojs_state_"+a,JSON.stringify(s.__raw))}catch{}})}}k("state",n)}});A("store",{priority:0,init(t,e,r){let n=t.getAttribute("value");if(r){if(!O[r]){let o=n?_(n,L())||{}:{};O[r]=L(o)}k("store",r)}}});A("computed",{priority:2,init(t,e,r){let n=t.getAttribute("expr");if(!r||!n)return;let o=v(t);function s(){let i=_(n,o);o.$set(r,i)}o.$watch(s),s()}});A("watch",{priority:2,init(t,e,r){let n=v(t),o=t.getAttribute("on:change"),s=_(r,n);n.$watch(()=>{let i=_(r,n);if(i!==s){let a=s;s=i,o&&F(o,n,{$old:a,$new:i})}})}});var Wt=["get","post","put","patch","delete"];for(let t of Wt)A(t,{priority:1,init(e,r,n){let o=e.getAttribute("as")||"data",s=e.getAttribute("loading"),i=e.getAttribute("error"),a=e.getAttribute("empty"),f=e.getAttribute("success"),u=e.getAttribute("then"),c=e.getAttribute("redirect"),l=e.getAttribute("confirm"),d=parseInt(e.getAttribute("refresh"))||0,m=e.getAttribute("cached"),h=e.hasAttribute("cached")?m||"memory":"none",y=e.getAttribute("body"),b=e.getAttribute("headers"),S=e.getAttribute("var"),g=e.getAttribute("into"),x=parseInt(e.getAttribute("retry"))||p.retries,C=parseInt(e.getAttribute("retry-delay"))||p.retryDelay||1e3,N=e.getAttribute("params"),I=e.parentElement?v(e.parentElement):L(),E=e.__ctx||L({},I);e.__ctx=E;let B=[...e.childNodes].map(D=>D.cloneNode(!0)),R=null;async function P(){if(R&&R.abort(),R=new AbortController,l&&!window.confirm(l))return;let D=Y(n,E);if(N){let $=_(N,E);if($&&typeof $=="object"){let K=D.includes("?")?"&":"?",q=new URLSearchParams($).toString();q&&(D+=K+q)}}let ct=t+":"+D;if(t==="get"){let $=Et(ct,h);if($!=null){E.$set(o,$),z(e),T(e);return}}if(s){let $=M(s);$&&(e.innerHTML="",e.appendChild($),T(e))}try{let $=null;if(y){let H=Y(y,E);try{$=JSON.parse(H)}catch{$=H}}if(e.tagName==="FORM"){let H=new FormData(e);$=Object.fromEntries(H.entries())}let K=b?JSON.parse(b):{},q=p.retries,et=p.retryDelay;p.retries=x,p.retryDelay=C;let W=await dt(D,t,$,K,e,R.signal);if(p.retries=q,p.retryDelay=et,t==="get"&&xt(ct,W,h),a&&(W==null||Array.isArray(W)&&W.length===0)){let H=M(a);H&&(e.innerHTML="",e.appendChild(H),T(e));return}if(E.$set(o,W),g&&(O[g]||(O[g]=L({})),O[g].$set(o,W),ot()),f){let H=M(f);if(H){e.innerHTML="";let Bt=document.getElementById(f.replace("#",""))?.getAttribute("var")||S||"result",Ht=L({[Bt]:W},E),lt=document.createElement("div");lt.style.display="contents",lt.__ctx=Ht,lt.appendChild(H),e.appendChild(lt),T(lt)}}else{e.innerHTML="";for(let H of B)e.appendChild(H.cloneNode(!0));z(e),T(e)}u&&F(u,E,{result:W}),c&&j&&j.push(c),ft("fetch:success",{url:D,data:W})}catch($){if($.name==="AbortError")return;if(X(`${t.toUpperCase()} ${D} failed:`,$.message),ft("fetch:error",{url:D,error:$}),ft("error",{url:D,error:$}),i){let K=M(i);if(K){e.innerHTML="";let et=document.getElementById(i.replace("#",""))?.getAttribute("var")||"err",W=L({[et]:{message:$.message,status:$.status,body:$.body}},E),H=document.createElement("div");H.style.display="contents",H.__ctx=W,H.appendChild(K),e.appendChild(H),T(H)}}}}if(e.tagName==="FORM"&&t!=="get"?e.addEventListener("submit",D=>{D.preventDefault(),P()}):t==="get"?P():e.addEventListener("click",D=>{D.preventDefault(),P()}),/\{[^}]+\}/.test(n)){let K=function(){let et=Y(n,E);et!==ct&&(ct=et,$&&clearTimeout($),D>0?$=setTimeout(P,D):P())},D=parseInt(e.getAttribute("debounce"))||0,ct=Y(n,E),$=null,q=I;for(;q&&q.__isProxy;)q.$watch(K),q=q.$parent}d>0&&setInterval(P,d)}});A("bind",{priority:20,init(t,e,r){let n=v(t);function o(){let s=_(r,n);t.textContent=s!=null?String(s):""}Z(r,n,o),o()}});A("bind-html",{priority:20,init(t,e,r){let n=v(t);function o(){let s=_(r,n);s!=null&&(t.innerHTML=Lt(String(s)))}Z(r,n,o),o()}});A("bind-*",{priority:20,init(t,e,r){let n=e.replace("bind-",""),o=v(t);n==="value"&&(t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.tagName==="SELECT")&&t.addEventListener("input",()=>{let i=t.type==="number"?Number(t.value):t.value;F(`${r} = ${JSON.stringify(i)}`,o)});function s(){let i=_(r,o);if(["disabled","readonly","checked","selected","hidden","required"].includes(n)){i?t.setAttribute(n,""):t.removeAttribute(n),n in t&&(t[n]=!!i);return}i!=null?t.setAttribute(n,String(i)):t.removeAttribute(n)}Z(r,o,s),s()}});A("model",{priority:20,init(t,e,r){let n=v(t),o=t.tagName,s=t.type;function i(){let f=_(r,n);o==="INPUT"&&s==="checkbox"?t.checked=!!f:o==="INPUT"&&s==="radio"?t.checked=t.value===String(f):t.value=f!=null?String(f):""}let a=o==="SELECT"||s==="checkbox"||s==="radio"?"change":"input";t.addEventListener(a,()=>{let f;s==="checkbox"?f=t.checked:s==="number"||s==="range"?f=Number(t.value):f=t.value,F(`${r} = __val`,n,{__val:f})}),n.$watch(i),i()}});A("if",{priority:10,init(t,e,r){let n=v(t),o=t.getAttribute("then"),s=t.getAttribute("else"),i=t.getAttribute("animate-enter")||t.getAttribute("animate"),a=t.getAttribute("animate-leave"),f=t.getAttribute("transition"),u=parseInt(t.getAttribute("animate-duration"))||0,c=[...t.childNodes].map(h=>h.cloneNode(!0)),l;function d(){let h=!!_(r,n);h!==l&&(l=h,a||f?pt(t,a,f,()=>m(h),u):m(h))}function m(h){if(h)if(o){let y=M(o);y&&(t.innerHTML="",t.appendChild(y))}else{t.innerHTML="";for(let y of c)t.appendChild(y.cloneNode(!0))}else if(s){let y=M(s);y&&(t.innerHTML="",t.appendChild(y))}else t.innerHTML="";z(t),T(t),(i||f)&&at(t,i,f,u)}n.$watch(d),d()}});A("else-if",{priority:10,init(t,e,r){let n=v(t),o=t.getAttribute("then"),s=[...t.childNodes].map(a=>a.cloneNode(!0));function i(){let a=t.previousElementSibling;for(;a;){let u=a.getAttribute("if")||a.getAttribute("else-if");if(u){if(_(u,n)){t.innerHTML="",t.style.display="none";return}}else break;a=a.previousElementSibling}let f=!!_(r,n);if(t.style.display="",f){if(o){let u=M(o);u&&(t.innerHTML="",t.appendChild(u))}else{t.innerHTML="";for(let u of s)t.appendChild(u.cloneNode(!0))}z(t),T(t)}else t.innerHTML=""}n.$watch(i),i()}});A("else",{priority:10,init(t){if(t.hasAttribute("if"))return;let e=v(t),r=t.getAttribute("then"),n=[...t.childNodes].map(s=>s.cloneNode(!0));function o(){let s=t.previousElementSibling;for(;s;){let i=s.getAttribute("if")||s.getAttribute("else-if");if(i){if(_(i,e)){t.innerHTML="",t.style.display="none";return}}else break;s=s.previousElementSibling}if(t.style.display="",r){let i=M(r);i&&(t.innerHTML="",t.appendChild(i))}else{t.innerHTML="";for(let i of n)t.appendChild(i.cloneNode(!0))}z(t),T(t)}e.$watch(o),o()}});A("show",{priority:20,init(t,e,r){let n=v(t),o=t.getAttribute("animate-enter")||t.getAttribute("animate"),s=t.getAttribute("animate-leave"),i=t.getAttribute("transition"),a=parseInt(t.getAttribute("animate-duration"))||0,f;function u(){let c=!!_(r,n);c!==f&&(f=c,c?(t.style.display="",(o||i)&&at(t,o,i,a)):s||i?pt(t,s,i,()=>{t.style.display="none"},a):t.style.display="none")}Z(r,n,u),u()}});A("hide",{priority:20,init(t,e,r){let n=v(t),o=t.getAttribute("animate-enter")||t.getAttribute("animate"),s=t.getAttribute("animate-leave"),i=t.getAttribute("transition"),a=parseInt(t.getAttribute("animate-duration"))||0,f;function u(){let c=!_(r,n);c!==f&&(f=c,c?(t.style.display="",(o||i)&&at(t,o,i,a)):s||i?pt(t,s,i,()=>{t.style.display="none"},a):t.style.display="none")}Z(r,n,u),u()}});A("switch",{priority:10,init(t,e,r){let n=v(t);function o(){let s=_(r,n),i=!1;for(let a of[...t.children]){let f=a.getAttribute("case"),u=a.hasAttribute("default"),c=a.getAttribute("then");if(f){let l=f.split(",").map(d=>_(d.trim(),n));if(!i&&l.includes(s)){if(i=!0,a.style.display="",c){let d=M(c);d&&(a.innerHTML="",a.appendChild(d)),a.__declared=!1,T(a)}}else a.style.display="none"}else if(u&&(a.style.display=i?"none":"",!i&&c)){let l=M(c);l&&(a.innerHTML="",a.appendChild(l)),a.__declared=!1,T(a)}}}n.$watch(o),o()}});A("each",{priority:10,init(t,e,r){let n=v(t),o=r.match(/^(\w+)\s+in\s+(\S+)$/);if(!o)return;let[,s,i]=o,a=t.getAttribute("template"),f=t.getAttribute("else"),u=t.getAttribute("key"),c=t.getAttribute("animate-enter")||t.getAttribute("animate"),l=t.getAttribute("animate-leave"),d=parseInt(t.getAttribute("animate-stagger"))||0,m=parseInt(t.getAttribute("animate-duration"))||0;function h(){let b=tt(i,n);if(!Array.isArray(b))return;if(b.length===0&&f){let g=M(f);g&&(t.innerHTML="",t.appendChild(g),T(t));return}let S=a?document.getElementById(a):null;if(S)if(l&&t.children.length>0){let g=[...t.children],x=g.length;g.forEach(C=>{let N=C.firstElementChild||C;N.classList.add(l);let I=()=>{N.classList.remove(l),x--,x<=0&&y(S,b)};N.addEventListener("animationend",I,{once:!0}),setTimeout(I,m||2e3)})}else y(S,b)}function y(b,S){let g=S.length;t.innerHTML="",S.forEach((x,C)=>{let N={[s]:x,$index:C,$count:g,$first:C===0,$last:C===g-1,$even:C%2===0,$odd:C%2!==0},I=L(N,n),E=b.content.cloneNode(!0),B=document.createElement("div");if(B.style.display="contents",B.__ctx=I,B.appendChild(E),t.appendChild(B),T(B),c){let R=B.firstElementChild;R&&(R.classList.add(c),d&&(R.style.animationDelay=C*d+"ms"))}})}n.$watch(h),h()}});A("foreach",{priority:10,init(t,e,r){let n=v(t),o=t.getAttribute("from"),s=t.getAttribute("index")||"$index",i=t.getAttribute("else"),a=t.getAttribute("filter"),f=t.getAttribute("sort"),u=parseInt(t.getAttribute("limit"))||1/0,c=parseInt(t.getAttribute("offset"))||0,l=t.getAttribute("template"),d=t.getAttribute("animate-enter")||t.getAttribute("animate"),m=t.getAttribute("animate-leave"),h=parseInt(t.getAttribute("animate-stagger"))||0,y=parseInt(t.getAttribute("animate-duration"))||0;if(!o||!r)return;let b=l?null:t.cloneNode(!0);function S(){let g=tt(o,n);if(!Array.isArray(g))return;if(a&&(g=g.filter((I,E)=>{let B=L({[r]:I,[s]:E},n);return!!_(a,B)})),f){let I=f.startsWith("-"),E=I?f.slice(1):f;g=[...g].sort((B,R)=>{let P=tt(E,B)??B?.[E],J=tt(E,R)??R?.[E],D=P<J?-1:P>J?1:0;return I?-D:D})}if(g=g.slice(c,c+u),g.length===0&&i){let I=M(i);I&&(t.innerHTML="",t.appendChild(I),T(t));return}let x=l?document.getElementById(l):null,C=g.length;function N(){t.innerHTML="",g.forEach((I,E)=>{let B={[r]:I,[s]:E,$index:E,$count:C,$first:E===0,$last:E===C-1,$even:E%2===0,$odd:E%2!==0},R=L(B,n),P;x?P=x.content.cloneNode(!0):P=b.cloneNode(!0);let J=document.createElement("div");if(J.style.display="contents",J.__ctx=R,J.appendChild(P),t.appendChild(J),T(J),d){let D=J.firstElementChild;D&&(D.classList.add(d),h&&(D.style.animationDelay=E*h+"ms"))}})}if(m&&t.children.length>0){let I=[...t.children],E=I.length;I.forEach(B=>{let R=B.firstElementChild||B;R.classList.add(m);let P=()=>{R.classList.remove(m),E--,E<=0&&N()};R.addEventListener("animationend",P,{once:!0}),setTimeout(P,y||2e3)})}else N()}n.$watch(S),S()}});A("class-*",{priority:20,init(t,e,r){let n=e.replace("class-",""),o=v(t);if(n==="map"){let i=function(){let a=_(r,o);if(a&&typeof a=="object")for(let[f,u]of Object.entries(a))t.classList.toggle(f,!!u)};o.$watch(i),i();return}if(n==="list"){let a=function(){let f=_(r,o);if(Array.isArray(f)){i.forEach(c=>{c&&t.classList.remove(c)});let u=f.filter(Boolean);u.forEach(c=>t.classList.add(c)),i=u}},i=[];o.$watch(a),a();return}function s(){t.classList.toggle(n,!!_(r,o))}o.$watch(s),s()}});A("style-*",{priority:20,init(t,e,r){let n=e.replace("style-",""),o=v(t);if(n==="map"){let a=function(){let f=_(r,o);if(f&&typeof f=="object")for(let[u,c]of Object.entries(f))t.style[u]=c??""};o.$watch(a),a();return}let s=n.replace(/-([a-z])/g,(a,f)=>f.toUpperCase());function i(){let a=_(r,o);t.style[s]=a!=null?String(a):""}o.$watch(i),i()}});A("on:*",{priority:20,init(t,e,r){let n=v(t),o=e.replace("on:","").split("."),s=o[0],i=new Set(o.slice(1));if(s==="mounted"){requestAnimationFrame(()=>F(r,n,{$el:t}));return}if(s==="init"){F(r,n,{$el:t});return}if(s==="updated"){new MutationObserver(()=>{F(r,n,{$el:t})}).observe(t,{childList:!0,subtree:!0,characterData:!0,attributes:!0});return}if(s==="error"){window.addEventListener("error",l=>{(t.contains(l.target)||l.target===t)&&F(r,n,{$el:t,$error:l.error||l.message})});return}if(s==="unmounted"){let l=new MutationObserver(d=>{for(let m of d)for(let h of m.removedNodes)if(h===t||h.contains?.(t)){F(r,n,{$el:t}),l.disconnect();return}});t.parentElement&&l.observe(t.parentElement,{childList:!0});return}let a=0,f=0;for(let l of i)/^\d+$/.test(l)&&(i.has("debounce")?a=parseInt(l):i.has("throttle")&&(f=parseInt(l)));let u=l=>{if(s==="keydown"||s==="keyup"||s==="keypress"){let d=["enter","escape","tab","space","delete","backspace","up","down","left","right","ctrl","alt","shift","meta"];for(let m of i)if(d.includes(m)&&(m==="enter"&&l.key!=="Enter"||m==="escape"&&l.key!=="Escape"||m==="tab"&&l.key!=="Tab"||m==="space"&&l.key!==" "||m==="delete"&&l.key!=="Delete"&&l.key!=="Backspace"||m==="up"&&l.key!=="ArrowUp"||m==="down"&&l.key!=="ArrowDown"||m==="left"&&l.key!=="ArrowLeft"||m==="right"&&l.key!=="ArrowRight"||m==="ctrl"&&!l.ctrlKey||m==="alt"&&!l.altKey||m==="shift"&&!l.shiftKey||m==="meta"&&!l.metaKey))return}i.has("prevent")&&l.preventDefault(),i.has("stop")&&l.stopPropagation(),!(i.has("self")&&l.target!==t)&&F(r,n,{$event:l,$el:t})};if(a>0){let l=u,d;u=m=>{clearTimeout(d),d=setTimeout(()=>l(m),a)}}if(f>0){let l=u,d=0;u=m=>{let h=Date.now();h-d>=f&&(d=h,l(m))}}let c={};i.has("once")&&(c.once=!0),t.addEventListener(s,u,c)}});A("trigger",{priority:20,init(t,e,r){let n=v(t),o=t.getAttribute("trigger-data");t.addEventListener("click",()=>{let s=o?_(o,n):null;t.dispatchEvent(new CustomEvent(r,{detail:s,bubbles:!0}))})}});A("ref",{priority:5,init(t,e,r){nt[r]=t}});A("use",{priority:10,init(t,e,r){let n=v(t),o=M(r);if(!o)return;let s={};for(let c of[...t.attributes])if(c.name.startsWith("var-")){let l=c.name.replace("var-","");s[l]=_(c.value,n)}let i=L(s,n),a={};for(let c of[...t.children]){let l=c.getAttribute("slot")||"default";a[l]||(a[l]=document.createDocumentFragment()),a[l].appendChild(c.cloneNode(!0))}let f=o.querySelectorAll("slot");for(let c of f){let l=c.getAttribute("name")||"default";a[l]&&c.replaceWith(a[l])}t.innerHTML="";let u=document.createElement("div");u.style.display="contents",u.__ctx=i,u.appendChild(o),t.appendChild(u),T(u)}});A("call",{priority:20,init(t,e,r){let n=v(t),o=t.getAttribute("method")||"get",s=t.getAttribute("as"),i=t.getAttribute("into"),a=t.getAttribute("success"),f=t.getAttribute("error"),u=t.getAttribute("then"),c=t.getAttribute("confirm"),l=t.getAttribute("body");t.addEventListener("click",async d=>{if(d.preventDefault(),c&&!window.confirm(c))return;let m=Y(r,n);try{let h=null;if(l){let b=Y(l,n);try{h=JSON.parse(b)}catch{h=b}}let y=await dt(m,o,h,{},t);if(s&&n.$set(s,y),s&&i&&(O[i]||(O[i]=L({})),O[i].$set(s,y),ot()),u&&F(u,n,{result:y}),a){let b=M(a);if(b){let g=document.getElementById(a.replace("#",""))?.getAttribute("var")||"result",x=L({[g]:y},n),C=t.closest("[route-view]")||t.parentElement,N=document.createElement("div");N.style.display="contents",N.__ctx=x,N.appendChild(b),C.appendChild(N),T(N)}}}catch(h){if(f){let y=M(f);if(y){let S=document.getElementById(f.replace("#",""))?.getAttribute("var")||"err",g=L({[S]:{message:h.message,status:h.status}},n),x=t.parentElement,C=document.createElement("div");C.style.display="contents",C.__ctx=g,C.appendChild(y),x.appendChild(C),T(C)}}}})}});function Ot(t,e,r){let n=e.split("|").map(o=>o.trim());for(let o of n){let[s,...i]=o.split(":"),a=Q[s];if(a){let f=a(t,...i,r);if(f!==!0&&f)return f}else switch(s){case"required":if(t==null||String(t).trim()==="")return"Required";break;case"email":if(t&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t))return"Invalid email";break;case"url":try{new URL(t)}catch{return"Invalid URL"}break;case"min":if(Number(t)<Number(i[0]))return`Minimum value is ${i[0]}`;break;case"max":if(Number(t)>Number(i[0]))return`Maximum value is ${i[0]}`;break;case"between":{let f=Number(t);if(f<Number(i[0])||f>Number(i[1]))return`Must be between ${i[0]} and ${i[1]}`;break}case"match":if(t!==r[i[0]])return`Must match ${i[0]}`;break;case"phone":if(!/^[\d\s\-+()]{7,15}$/.test(t))return"Invalid phone number";break;case"cpf":if(!/^\d{3}\.?\d{3}\.?\d{3}-?\d{2}$/.test(t))return"Invalid CPF";break;case"cnpj":if(!/^\d{2}\.?\d{3}\.?\d{3}\/?\d{4}-?\d{2}$/.test(t))return"Invalid CNPJ";break;case"creditcard":if(!/^\d{13,19}$/.test(t.replace(/\s|-/g,"")))return"Invalid card number";break;case"custom":if(i[0]&&Q[i[0]]){let f=Q[i[0]](t,r);if(f!==!0&&f)return f}break}}return null}A("validate",{priority:30,init(t,e,r){let n=v(t);if(t.tagName==="FORM"){let s=function(){let i={},a={},f=!0;for(let u of t.querySelectorAll("input, textarea, select")){if(!u.name)continue;a[u.name]=u.value;let c=u.getAttribute("validate");if(c){let l=Ot(u.value,c,a);l&&(i[u.name]=l,f=!1)}u.checkValidity()||(i[u.name]=i[u.name]||u.validationMessage,f=!1)}o.valid=f,o.errors=i,o.values=a,n.$set("$form",{...o})},o={valid:!1,dirty:!1,touched:!1,submitting:!1,errors:{},values:{},reset:()=>{o.dirty=!1,o.touched=!1,t.reset(),s()}};n.$set("$form",o),t.addEventListener("input",()=>{o.dirty=!0,s()}),t.addEventListener("focusout",()=>{o.touched=!0,s()}),t.addEventListener("submit",()=>{o.submitting=!0,n.$set("$form",{...o}),requestAnimationFrame(()=>{o.submitting=!1,n.$set("$form",{...o})})}),requestAnimationFrame(s);return}if(r&&(t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.tagName==="SELECT")){let o=t.getAttribute("error");t.addEventListener("input",()=>{let s=Ot(t.value,r,{});if(s&&o){let i=t.nextElementSibling?.__validationError?t.nextElementSibling:null;i||(i=document.createElement("div"),i.__validationError=!0,i.style.display="contents",t.parentNode.insertBefore(i,t.nextSibling));let a=M(o);if(a){let f=L({err:{message:s}},n);i.innerHTML="",i.__ctx=f,i.appendChild(a),T(i)}}else{let i=t.nextElementSibling?.__validationError?t.nextElementSibling:null;i&&(i.innerHTML="")}})}}});A("error-boundary",{priority:1,init(t,e,r){let n=v(t);function o(s){let i=M(r);if(i){let a=L({err:{message:s}},n);t.innerHTML="";let f=document.createElement("div");f.style.display="contents",f.__ctx=a,f.appendChild(i),t.appendChild(f),T(f)}}t.addEventListener("nojs:error",s=>{o(s.detail?.message||"An error occurred")}),window.addEventListener("error",s=>{(t.contains(s.target)||t===s.target)&&o(s.message||"An error occurred")})}});A("t",{priority:20,init(t,e,r){let n=v(t);function o(){let s={};for(let i of[...t.attributes])if(i.name.startsWith("t-")&&i.name!=="t"){let a=i.name.replace("t-","");s[a]=_(i.value,n)??i.value}t.textContent=U.t(r,s)}n.$watch(o),vt(o),o()}});function Jt(){if(typeof window>"u")return null;let t=p.router||{};if(t.mode==="hash")return window.location.hash.slice(1)||"/";let e=(t.base||"/").replace(/\/$/,"");return window.location.pathname.replace(e,"")||"/"}var kt={get baseApiUrl(){return p.baseApiUrl},set baseApiUrl(t){p.baseApiUrl=t},config(t={}){let e={...p.headers},r={...p.cache},n={...p.templates},o={...p.router},s={...p.i18n};Object.assign(p,t),t.headers&&(p.headers={...e,...t.headers}),t.csrf&&(p.csrf=t.csrf),t.cache&&(p.cache={...r,...t.cache}),t.templates&&(p.templates={...n,...t.templates}),t.router&&(p.router={...o,...t.router}),t.i18n&&(p.i18n={...s,...t.i18n},U.locale=t.i18n.defaultLocale||U.locale)},async init(t){if(typeof document>"u")return;t=t||document.body,k("Initializing..."),mt(t);let e=Jt();await $t(e),document.querySelector("[route-view]")&&wt(Mt()),T(t),j&&await j.init(),k("Initialized."),St(),p.devtools&&typeof window<"u"&&(window.__NOJS_DEVTOOLS__={stores:O,config:p,refs:nt,router:j,filters:Object.keys(w),validators:Object.keys(Q),version:kt.version},k("DevTools enabled \u2014 access via window.__NOJS_DEVTOOLS__"))},directive(t,e){A(t,e)},filter(t,e){w[t]=e},validator(t,e){Q[t]=e},i18n(t){if(t.locales&&(U.locales=t.locales),t.defaultLocale&&(U.locale=t.defaultLocale),t.fallbackLocale&&(p.i18n.fallbackLocale=t.fallbackLocale),t.detectBrowser){let e=typeof navigator<"u"?navigator.language:"en";U.locales[e]&&(U.locale=e)}},on(t,e){return G[t]||(G[t]=[]),G[t].push(e),()=>{G[t]=G[t].filter(r=>r!==e)}},interceptor(t,e){rt[t]&&rt[t].push(e)},get store(){return O},get router(){return j},createContext:L,evaluate:_,findContext:v,processTree:T,resolve:tt,version:"1.0.2"},Ir=kt;export{Ir as default};
|
|
25
25
|
//# sourceMappingURL=no.js.map
|