@relax.js/core 1.0.5 → 1.0.6

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.mjs CHANGED
@@ -1,5 +1,5 @@
1
- var Ve=Object.create;var D=Object.defineProperty;var qe=Object.getOwnPropertyDescriptor;var $t=Object.getOwnPropertyNames;var Ft=Object.getPrototypeOf,Ht=Object.prototype.hasOwnProperty;var Ue=(n,t)=>(t=Symbol[n])?t:Symbol.for("Symbol."+n),B=n=>{throw TypeError(n)};var It=(n,t,e)=>t in n?D(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var Oe=(n,t)=>D(n,"name",{value:t,configurable:!0});var ze=n=>t=>{var e=n[t];if(e)return e();throw new Error("Module not found in bundle: "+t)};var k=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports);var Dt=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of $t(t))!Ht.call(n,o)&&o!==e&&D(n,o,{get:()=>t[o],enumerable:!(r=qe(t,o))||r.enumerable});return n};var L=(n,t,e)=>(e=n!=null?Ve(Ft(n)):{},Dt(t||!n||!n.__esModule?D(e,"default",{value:n,enumerable:!0}):e,n));var z=n=>[,,,Ve(n?.[Ue("metadata")]??null)],We=["class","method","getter","setter","accessor","field","value","get","set"],I=n=>n!==void 0&&typeof n!="function"?B("Function expected"):n,Bt=(n,t,e,r,o)=>({kind:We[n],name:t,metadata:r,addInitializer:s=>e._?B("Already initialized"):o.push(I(s||null))}),Ot=(n,t)=>It(t,Ue("metadata"),n[3]),W=(n,t,e,r)=>{for(var o=0,s=n[t>>1],i=s&&s.length;o<i;o++)t&1?s[o].call(e):r=s[o].call(e,r);return r},G=(n,t,e,r,o,s)=>{var i,a,c,l,p,u=t&7,d=!!(t&8),m=!!(t&16),f=u>3?n.length+1:u?d?1:2:0,x=We[u+5],h=u>3&&(n[f-1]=[]),b=n[f]||(n[f]=[]),y=u&&(!m&&!d&&(o=o.prototype),u<5&&(u>3||!m)&&qe(u<4?o:{get[e](){return _e(this,s)},set[e](v){return je(this,s,v)}},e));u?m&&u<4&&Oe(s,(u>2?"set ":u>1?"get ":"")+e):Oe(o,e);for(var T=r.length-1;T>=0;T--)l=Bt(u,e,c={},n[3],b),u&&(l.static=d,l.private=m,p=l.access={has:m?v=>_t(o,v):v=>e in v},u^3&&(p.get=m?v=>(u^1?_e:jt)(v,o,u^4?s:y.get):v=>v[e]),u>2&&(p.set=m?(v,M)=>je(v,o,M,u^4?s:y.set):(v,M)=>v[e]=M)),a=(0,r[T])(u?u<4?m?s:y[x]:u>4?void 0:{get:y.get,set:y.set}:o,l),c._=1,u^4||a===void 0?I(a)&&(u>4?h.unshift(a):u?m?s=a:y[x]=a:o=a):typeof a!="object"||a===null?B("Object expected"):(I(i=a.get)&&(y.get=i),I(i=a.set)&&(y.set=i),I(i=a.init)&&h.unshift(i));return u||Ot(n,o),y&&D(o,e,y),m?u^4?s:y:o};var ae=(n,t,e)=>t.has(n)||B("Cannot "+e),_t=(n,t)=>Object(t)!==t?B('Cannot use the "in" operator on this value'):n.has(t),_e=(n,t,e)=>(ae(n,t,"read from private field"),e?e.call(n):t.get(n));var je=(n,t,e,r)=>(ae(n,t,"write to private field"),r?r.call(n,e):t.set(n,e),e),jt=(n,t,e)=>(ae(n,t,"access private method"),e);var Ke=k((gr,zt)=>{zt.exports={greeting:"Hello, {name}!",items:"{count, plural, one {# item} other {# items}}"}});var Ze=k((hr,Wt)=>{Wt.exports={today:"today",yesterday:"yesterday",daysAgo:"{count, plural, one {# day ago} other {# days ago}}",pieces:"{count, plural, =0 {none} one {one} other {# pcs}}"}});var Ye=k((yr,Gt)=>{Gt.exports={required:"This field is required.",range:"Number must be between {min} and {max}, was {actual}.",digits:"Please enter only digits."}});var Qe=k((vr,Jt)=>{Jt.exports={greeting:"Hej, {name}!",items:"{count, plural, one {# sak} other {# saker}}"}});var et=k((Er,Xt)=>{Xt.exports={today:"idag",yesterday:"ig\xE5r",daysAgo:"{count, plural, one {# dag sedan} other {# dagar sedan}}",pieces:"{count, plural, =0 {inga} one {en} other {# st}}"}});var tt=k((xr,Kt)=>{Kt.exports={required:"Detta f\xE4lt \xE4r obligatoriskt.",range:"Talet m\xE5ste vara mellan {min} och {max}, var {actual}.",digits:"Ange endast siffror."}});var S=class extends Error{constructor(e,r){super(e);this.context=r}},ce=null;function or(n){ce=n}function g(n,t){let e=new S(n,t);if(ce){let r=!1;if(ce(e,{suppress(){r=!0}}),r)return null}return e}function sr(n){return function(...t){n.call(this,...t).catch(e=>{let r=g("Async callback failed",{cause:e});if(r)throw r})}}var J=class{constructor(t,e){this.value=t;this.removeCallback=e;this.next=null;this.prev=null}remove(){this.prev&&(this.prev.next=this.next),this.next&&(this.next.prev=this.prev),this.removeCallback()}},le=class{constructor(){this._first=null;this._last=null;this._length=0}addFirst(t){let e=this.createNode(t);this._first?(e.next=this._first,this._first.prev=e,this._first=e):(this._first=e,this._last=this._first),this._length++}addLast(t){let e=this.createNode(t);this._last?(e.prev=this._last,this._last.next=e,this._last=e):(this._first=e,this._last=e),this._length++}createNode(t){let e;return e=new J(t,()=>{this._first===e&&(this._first=e.next),this._last===e&&(this._last=e.prev),this._length--}),e}removeFirst(){if(!this._first)throw new Error("The list is empty.");let t=this._first.value;return this._first=this._first.next,this._first||(this._last=null),this._length--,t}removeLast(){if(!this._last)throw new Error("The list is empty.");let t=this._last.value;return this._last=this._last.prev,this._last||(this._first=null),this._length--,t}get length(){return this._length}get first(){return this._first}get firstValue(){return this._first?.value}get last(){return this._last}get lastValue(){return this._last?.value}};var X=class extends Event{constructor(e){super("pageselected",{bubbles:!0,composed:!0});this.page=e}},ue=class{constructor(t,e,r){this.currentPage=1;this.container=t,this.totalCount=e,this.pageSize=r,this.render()}render(){this.container.innerHTML="";let t=Math.max(1,Math.ceil(this.totalCount/this.pageSize)),e=(r,o,s=!1)=>{let i=document.createElement("button");return i.textContent=r,i.disabled=s,i.addEventListener("click",()=>this.selectPage(o)),i};this.container.appendChild(e("Previous",this.currentPage-1,this.currentPage===1));for(let r=1;r<=t;r++){let o=e(r.toString(),r);r===this.currentPage&&o.classList.add("selected"),this.container.appendChild(o)}this.container.appendChild(e("Next",this.currentPage+1,this.currentPage===t))}selectPage(t){let e=Math.max(1,Math.ceil(this.totalCount/this.pageSize));t<1||t>e||t===this.currentPage||(this.currentPage=t,this.render(),this.container.dispatchEvent(new X(this.currentPage)))}update(t){this.totalCount=t;let e=Math.max(1,Math.ceil(this.totalCount/this.pageSize));this.currentPage>e&&(this.currentPage=e),this.render()}getCurrentPage(){return this.currentPage}};function Vt(n){let t=n.getAttribute("id");if(t){let e=n.closest("form");if(e){let r=e.querySelector(`label[for="${t}"]`);if(r)return r.textContent?.trim()||null}}return null}var Ge=class{constructor(t,e){this.form=t;this.options=e;if(!this.form)throw new Error("Form must be specified.");this.form.addEventListener("submit",r=>{if((e?.preventDefault||this.options?.submitCallback!=null)&&r.preventDefault(),this.options?.customChecks&&this.options.customChecks(t),this.validateForm())try{let o=this.options?.submitCallback?.call(this);o instanceof Promise&&o.catch(s=>{let i=g("submitCallback failed",{cause:s});if(i)throw i})}catch(o){let s=g("submitCallback failed",{cause:o});if(s)throw s}else e?.preventDefaultOnFailed!==!1&&r.preventDefault()}),e?.autoValidate&&t.addEventListener("input",()=>{this.validateForm()})}validateForm(){let t=Array.from(this.form.querySelectorAll("input,textarea,select")),e=!0;if(this.options?.useSummary!==!0)return this.form.checkValidity()?!0:(this.form.reportValidity(),this.focusFirstErrorElement(),!1);let r=[];return t.forEach(o=>{if(!o.checkValidity()){e=!1;let s=Vt.call(this,o)||o.name||"Unnamed Field";r.push(`${s}: ${o.validationMessage}`)}}),e?this.clearErrorSummary():(this.displayErrorSummary(r),this.focusFirstErrorElement()),e}displayErrorSummary(t){this.clearErrorSummary(),this.errorSummary||this.createErrorSummary();let e=this.errorSummary.querySelector("ul");t.forEach(r=>{let o=document.createElement("li");o.textContent=r,e.appendChild(o)})}createErrorSummary(){let t=document.createElement("div");t.className="error-summary",t.style.color="red",t.setAttribute("role","alert"),t.setAttribute("aria-live","assertive"),t.setAttribute("aria-atomic","true"),this.errorSummary=t;let e=document.createElement("ul");this.errorSummary.appendChild(e),this.form.prepend(t)}addErrorToSummary(t,e){this.errorSummary||this.createErrorSummary();let r=this.errorSummary.querySelector("ul"),o=document.createElement("li");o.textContent=`${t}: ${e}`,r.appendChild(o)}clearErrorSummary(){if(this.errorSummary){let t=this.errorSummary.querySelector("ul");t&&(t.innerHTML="")}}focusFirstErrorElement(){let t=this.form.querySelector(":invalid");t instanceof HTMLElement&&document.activeElement!==t&&t.focus()}static FindForm(t){if(t.parentElement?.tagName=="FORM")return t.parentElement;for(let e=0;e<t.children.length;e++){let r=t.children[e];if(r.tagName=="FORM")return r}throw new Error("Parent or a direct child must be a FORM for class "+t.constructor.name)}};var pe=new Map;function qt(n){return pe.has(n)||pe.set(n,new Intl.PluralRules(n)),pe.get(n)}function Je(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Ut(n,t,e="en"){return n.replace(/\{(\w+)(?:, (plural|select),((?:[^{}]*\{[^{}]*\})+))?\}/g,(r,o,s,i)=>{let a=t?.[o];if(s==="plural"){let c=new RegExp(`=${Je(String(a))}\\s*\\{([^{}]*)\\}`).exec(i);if(c)return c[1].replace(`{${o}}`,String(a)).replace("#",String(a));let p=qt(e).select(a),u=new RegExp(`${p}\\s*\\{([^{}]*)\\}`).exec(i)||new RegExp("other\\s*\\{([^{}]*)\\}").exec(i);return u?u[1].replace(`{${o}}`,String(a)).replace("#",String(a)):String(a)}if(s==="select"){let c=Je(String(a)),l=new RegExp(`\\b${c}\\s*\\{([^{}]*)\\}`).exec(i)||new RegExp("\\bother\\s*\\{([^{}]*)\\}").exec(i);return l?l[1]:String(a)}return a!==void 0?String(a):`{${o}}`})}var Xe=Ut;var wr=ze({"./locales/en/r-common.json":()=>Promise.resolve().then(()=>L(Ke())),"./locales/en/r-pipes.json":()=>Promise.resolve().then(()=>L(Ze())),"./locales/en/r-validation.json":()=>Promise.resolve().then(()=>L(Ye())),"./locales/sv/r-common.json":()=>Promise.resolve().then(()=>L(Qe())),"./locales/sv/r-pipes.json":()=>Promise.resolve().then(()=>L(et())),"./locales/sv/r-validation.json":()=>Promise.resolve().then(()=>L(tt()))});var Zt="en",de=Zt;var Yt={},nt=null;function w(n,t){let[e,r]=n.includes(":")?n.split(":"):["r-common",n],o=Yt[e]?.[r];if(!o)return nt&&nt(r,e,de),n;try{return Xe(o,t,de)}catch{return n}}function O(){return de}function Mr(n,t,e={}){let r=n.querySelectorAll("input, select, textarea");if(r.forEach(o=>{if(!o.hasAttribute("name")||K(o,"disabled"))return;let s=o.getAttribute("name");if(!(s in t)){if(e.throwOnMissingProperty)throw new Error(`Form field "${s}" has no matching property in class instance`);return}let i=rn(o);i!==st&&(t[s]=i)}),e.throwOnMissingField){let o=new Set;r.forEach(s=>{s.hasAttribute("name")&&o.add(s.getAttribute("name"))});for(let s in t)if(typeof t[s]!="function"&&Object.prototype.hasOwnProperty.call(t,s)&&!o.has(s))throw new Error(`Class property "${s}" has no matching form field`)}return t}function Qt(n){let t=n.getAttribute("data-type");return t?tn(t):n instanceof HTMLInputElement?nn(n.type):"checked"in n&&typeof n.checked=="boolean"?me:e=>e}function kr(n){let t={},e=new FormData(n),r=new Set;e.forEach((o,s)=>{if(r.has(s))return;r.add(s);let i=e.getAll(s),a=n.elements.namedItem(s),c=a?Qt(a):l=>l;if(i.length===1){let l=i[0];t[s]=typeof l=="string"?c(l):l}else t[s]=i.map(l=>typeof l=="string"?c(l):l)});for(let o=0;o<n.elements.length;o++){let s=n.elements[o];s.type==="checkbox"&&s.name&&!r.has(s.name)&&(r.add(s.name),t[s.name]=!1)}return t}function me(n){if(!n||n=="")return;let t=n.toLowerCase();if(t==="true"||t==="on"||Number(n)>0)return!0;if(t==="false"||t==="off"||Number(n)<=0)return!1;throw new Error("Could not convert value '"+n+"' to boolean.")}function rt(n){if(!n||n=="")return;let t=Number(n);if(!isNaN(t))return t;throw new Error("Could not convert value '"+n+"' to number.")}function en(n){return new Intl.DateTimeFormat(n).formatToParts(new Date(2024,0,15)).filter(e=>e.type==="day"||e.type==="month"||e.type==="year").map(e=>e.type)}function ot(n){if(!n||n==="")return;if(/^\d{4}-\d{2}-\d{2}(T|$)/.test(n)){let r=new Date(n);if(!isNaN(r.getTime()))return r}let t=n.split(/[\/.\-\s]/);if(t.length>=3&&t.every(r=>/^\d+$/.test(r))){let r=O(),o=en(r),s={};if(o.forEach((i,a)=>{s[i]=parseInt(t[a],10)}),s.year!==void 0&&s.month!==void 0&&s.day!==void 0){s.year<100&&(s.year+=2e3);let i=new Date(s.year,s.month-1,s.day);if(!isNaN(i.getTime()))return i}}let e=new Date(n);if(isNaN(e.getTime()))throw new Error("Invalid date format");return e}function tn(n){switch(n){case"boolean":return me;case"number":return rt;case"Date":return ot;case"string":return t=>!t||t==""?void 0:t;default:throw new Error(`Unknown data-type "${n}".`)}}function nn(n){switch(n){case"checkbox":return me;case"number":return rt;case"date":case"datetime-local":return ot;case"month":return t=>{let[e,r]=t.split("-").map(Number);return new Date(e,r-1)};case"week":return t=>{let[e,r]=t.split("-W").map(Number);return{year:e,week:r}};case"time":return t=>{let[e,r,o=0]=t.split(":").map(Number);return{hours:e,minutes:r,seconds:o}};default:return t=>!t||t==""?void 0:t}}function K(n,t){let e=n;if(t in e&&typeof e[t]=="boolean")return e[t];let r=n.getAttribute(t);return r===null?!1:r===""||r.toLowerCase()==="true"||r.toLowerCase()===t}var st=Symbol("skip");function rn(n){let t=n,e=t.type||n.getAttribute("type")||"";if(e==="checkbox")return K(n,"checked");if(e==="radio")return K(n,"checked")?t.value:st;if(e==="number")return t.value?Number(t.value):null;if(e==="date")return t.value?new Date(t.value):null;if("selectedOptions"in t&&K(n,"multiple"))return Array.from(t.selectedOptions).map(r=>r.value);if("value"in t)return t.value}var dt=new Map;function ye(n,t=[]){return function(e){dt.set(n,{validator:e,validInputTypes:t})}}function Ar(n){return dt.get(n)}var lt,fe;lt=[ye("required")];var P=class P{static create(t){return t==="required"?new P:null}validate(t,e){t.trim()===""&&e.addError(this.getMessage())}getMessage(){return w("r-validation:required")}};fe=z(null),P=G(fe,0,"RequiredValidation",lt,P),W(fe,1,P);var it=P,ut,ge;ut=[ye("range",["number"])];var A=class A{constructor(t,e){this.min=void 0;this.max=void 0;this.min=t,this.max=e}static create(t){let e=t.match(/^range\((-?\d+(?:\.\d+)?)-(-?\d+(?:\.\d+)?)\)$/);if(e){let[,r,o]=e;return new A(parseFloat(r),parseFloat(o))}return null}validate(t,e){if(t.trim()==="")return;let r=parseFloat(t);!isNaN(r)&&r>=this.min&&r<=this.max||e.addError(this.getMessage(t))}getMessage(t){return w("r-validation:range",{min:this.min,max:this.max,actual:t})}};ge=z(null),A=G(ge,0,"RangeValidation",ut,A),W(ge,1,A);var at=A,pt,he;pt=[ye("digits",["number"])];var $=class ${static create(t){return t==="digits"?new $:null}validate(t,e){/^\d+$/.test(t)||e.addError(this.getMessage())}getMessage(){return w("r-validation:digits")}};he=z(null),$=G(he,0,"DigitsValidation",pt,$),W(he,1,$);var ct=$;function Hr(n,t,e){e&&n.querySelectorAll("select[name]").forEach(s=>{sn(s,e)}),n.querySelectorAll("[name]").forEach(o=>{let s=o.getAttribute("name");if(!s)return;if(s.endsWith("[]")){let a=s.slice(0,-2),c=mt(t,a);if(Array.isArray(c)){let l=o,p=l.type||o.getAttribute("type")||"";if(p==="checkbox"||p==="radio")l.checked=c.includes(l.value);else if("options"in l&&ft(o,"multiple"))c.forEach(u=>{let d=Array.from(l.options).find(m=>m.value===String(u));d&&(d.selected=!0)});else if("value"in l){let u=n.querySelectorAll(`[name="${s}"]`),d=Array.from(u).indexOf(o);d>=0&&d<c.length&&(l.value=String(c[d]))}}return}let i=mt(t,s);i!=null&&on(o,i)})}function mt(n,t){let e=[],r="",o=!1;for(let s=0;s<t.length;s++){let i=t[s];i==="["&&!o?(r&&(e.push(r),r=""),o=!0,r+=i):i==="]"&&o?(r+=i,e.push(r),r="",o=!1):i==="."&&!o?r&&(e.push(r),r=""):r+=i}return r&&e.push(r),e.reduce((s,i)=>{if(!(!s||typeof s!="object")){if(i.startsWith("[")&&i.endsWith("]")){let a=i.slice(1,-1);return s[a]}return s[i]}},n)}function on(n,t){let e=n,r=e.type||n.getAttribute("type")||"";if(r==="checkbox")e.checked=!!t;else if(r==="radio")e.checked=e.value===String(t);else if(r==="date"&&t instanceof Date)e.value=t.toISOString().split("T")[0];else if(r==="datetime-local"&&t instanceof Date){let o=s=>String(s).padStart(2,"0");e.value=`${t.getFullYear()}-${o(t.getMonth()+1)}-${o(t.getDate())}T${o(t.getHours())}:${o(t.getMinutes())}`}else if("options"in e&&ft(n,"multiple")&&Array.isArray(t)){let o=Array.from(e.options),s=t.map(String);o.forEach(i=>{i.selected=s.includes(i.value)})}else"value"in e&&(e.value=String(t))}function sn(n,t){let e=n.getAttribute("data-source"),r=n.getAttribute("name")||"",o,s="value",i="text";if(e){let p=e.match(/^\s*(\w+)\s*(?:\(\s*(\w+)\s*,\s*(\w+)\s*\))?\s*$/);if(!p)return;o=p[1],p[2]&&p[3]&&(s=p[2],i=p[3])}else if(o=r.endsWith("[]")?r.slice(0,-2):r,!o)return;let a=t[o];if(a===void 0)return;let c=typeof a=="function"?a.call(t):a;if(!Array.isArray(c))return;let l=Array.from(n.options).filter(p=>p.value==="");n.innerHTML="",l.forEach(p=>n.add(p));for(let p of c)if(p!=null)if(typeof p=="object"){let u=String(p[s]),d=String(p[i]);n.add(new Option(d,u))}else{let u=String(p);n.add(new Option(u,u))}}function ft(n,t){let e=n;if(t in e&&typeof e[t]=="boolean")return e[t];let r=n.getAttribute(t);return r===null?!1:r===""||r.toLowerCase()==="true"||r.toLowerCase()===t}function an(n){return String(n).toUpperCase()}function cn(n){return String(n).trimEnd().trimStart()}function ln(n){return String(n).toLowerCase()}function un(n){let t=String(n);return t.charAt(0).toUpperCase()+t.slice(1)}function pn(n,t){let e=String(n),r=parseInt(t,10);return e.length>r?e.substring(0,r-3)+"...":e}function dn(n,t="USD"){let e=O();return new Intl.NumberFormat(e,{style:"currency",currency:t}).format(n)}function mn(n,t){let e=new Date(n),r=O();return t==="short"?e.toLocaleDateString(r):t==="long"?e.toLocaleDateString(r,{weekday:"long",year:"numeric",month:"long",day:"numeric"}):e.toISOString()}function fn(n){if(!n)return"n/a";let t=new Date(n),e=new Date;t.setHours(0,0,0,0),e.setHours(0,0,0,0);let r=e.getTime()-t.getTime(),o=Math.round(r/(1e3*60*60*24));return o===0?w("r-pipes:today"):o===1?w("r-pipes:yesterday"):w("r-pipes:daysAgo",{count:o})}function gn(n){if(n==null)return"n/a";let t=Number(n);return w("r-pipes:pieces",{count:t})}function hn(n,t=","){return Array.isArray(n)?n.join(t):n}function yn(n){return!Array.isArray(n)||n.length===0?"":n[0]}function vn(n){return!Array.isArray(n)||n.length===0?"":n[n.length-1]}function En(n){return typeof n!="object"||n===null?[]:Object.keys(n)}function xn(n,t){return n||t}function Tn(n,t,e){return n?t:e}function bn(){let n=new Map;return n.set("uppercase",an),n.set("lowercase",ln),n.set("capitalize",un),n.set("trim",cn),n.set("shorten",pn),n.set("currency",dn),n.set("date",mn),n.set("daysAgo",fn),n.set("pieces",gn),n.set("join",hn),n.set("first",yn),n.set("last",vn),n.set("keys",En),n.set("default",xn),n.set("ternary",Tn),{lookup(t){return n.get(t)??null},get(t){var e=n.get(t);if(!e)throw Error("Pipe '"+t+"' not found.");return e},has(t){return n.has(t)}}}var N=bn();function gt(n,t,e=N){return t.reduce((r,o)=>{let[s,...i]=o.split(":").map(a=>a.trim());if(!e.has(s))return`[Pipe ${s} not found]`;try{return e.get(s)(r,...i)}catch(a){return`[Pipe ${s}, value: ${n}, error: ${a}]`}},n)}var wn=N;function Cn(n,...t){let e=document.createElement("template"),r=Rn(n);e.innerHTML=r;let o=[],s=document.createTreeWalker(e.content,NodeFilter.SHOW_ALL),i;for(;i=s.nextNode();)if(i.nodeType===Node.ELEMENT_NODE){let a=i;Sn(a,t,o),customElements.get(a.tagName.toLowerCase())&&customElements.upgrade(a)}else if(i.nodeType===Node.TEXT_NODE){let a=i,c=a.textContent,l=ht(c,t);if(l)if(/€€\d+€€/.test(c)){let u=null,d=null,m=[];o.push({originalValue:c,setter(f){var x=l(f);u||(u=document.createComment(""),d=document.createComment(""),a.parentNode?.replaceChild(d,a),d.parentNode?.insertBefore(u,d)),m.forEach(T=>T.parentNode?.removeChild(T)),m=[];let h=document.createElement("template");h.innerHTML=x;let b=Array.from(h.content.childNodes),y=d.parentNode;b.forEach(T=>{y.insertBefore(T,d),m.push(T)})}})}else o.push({originalValue:c,setter(u){var d=l(u);a.textContent=d}})}return function(c){return o.forEach(l=>{l.setter(c)}),{fragment:e.content,update(l){o.forEach(p=>{p.setter(l)})}}}}function Rn(n){return n.raw.map((t,e)=>e<n.raw.length-1?`${t}\u20AC\u20AC${e}\u20AC\u20AC`:t).join("")}function Sn(n,t,e){let r=[];for(let i of Array.from(n.attributes)){var o=i.value;if(o=="")continue;let a=/€€(\d+)€€/,c=o.match(a);if(c){let l=parseInt(c[1],10),p=t[l];if(typeof p=="function"){r.push({setter(u){let d=p.bind(u);n.removeAttribute(i.name),n[i.name]=d}});continue}}var s=ht(o,t);s!=null&&r.push({originalValue:o,setter(l){let p=s(l)??o;i.name in n?n[i.name]=p:i.value=p}})}r.length>0&&e.push({originalValue:n.tagName,setter(i){r.forEach(a=>a.setter(i))}})}function Nn(n,t){return n.split(",").map(e=>{if(e=e.trim(),e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return e.slice(1,-1);if(!isNaN(Number(e)))return Number(e);if(e.includes(".")){let r=e.split("."),o=t;for(let s of r){if(o==null)return;o=o[s]}return o}return t[e]})}function ht(n,t){let e=/€€(\d+)€€|{{\s*([^|]+?)(?:\|([\w|]+))?\s*}}/g,r=0,o,s=[];for(;(o=e.exec(n))!==null;){var i=n.slice(r,o.index);if(i.length>0&&s.push(c=>i),o[1]){let c=parseInt(o[1],10),l=t[c];if(!l)continue;if(typeof l=="function"){let p=l;s.push(u=>{var d=p.apply(u);return d})}else l&&l.length>0&&s.push(p=>l)}else if(o[2]){let c=o[2].trim(),l=o[3]?o[3].trim():null,p=o[4]?o[4].split("|").map(u=>u.trim()):[];s.push(u=>{var d=u[c];if(typeof d=="function")if(l){let m=Nn(l,u);d=d.apply(u,m)}else d=d.call(u);return p.forEach(m=>{d=wn.get(m)(d)}),d})}r=e.lastIndex}if(s.length==0)return null;var a=n.slice(r);return a.length>0&&s.push(c=>a),c=>{var l="";return s.forEach(p=>{var u=p(c);l+=u}),l}}function yt(n){let t=n.split("|").map(s=>s.trim()),e=t[0],r=t.slice(1),o=e.match(/^(\w+)\s*\((.*)\)$/);if(o){let[,s,i]=o,a=i?i.split(",").map(c=>c.trim()):[];return{type:"function",fnName:s,fnArgs:a,pipes:r}}return{type:"path",path:e,pipes:r}}function Z(n,t){let r=t.replace(/\[(\d+)\]/g,".$1").split("."),o=n;for(let s of r)if(o&&typeof o=="object"&&s in o)o=o[s];else return;return o}function C(n,t,e,r=!1){let o=`[template error] ${t} (at ${e})`;if(n.onError&&n.onError(o),n.strict||r)throw new Error(o)}function Mn(n){return function(e,r,o=""){try{let s=Z(e,r);return s===void 0?(C(n,`Cannot resolve "${r}"`,o),""):s===null?"":Array.isArray(s)?s.length>0?JSON.stringify(s):"":typeof s=="object"?JSON.stringify(s):s}catch(s){let i=s instanceof Error?s.message:String(s);return C(n,`Exception resolving "${r}": ${i}`,o,!0),""}}}function vt(n,t,e,r,o){let s,i=r.pipeRegistry??N;if(n.type==="function"){let a=e?.[n.fnName];if(typeof a!="function")return C(r,`Function "${n.fnName}" not found`,o),"";let c=(n.fnArgs??[]).map(l=>l.startsWith('"')&&l.endsWith('"')||l.startsWith("'")&&l.endsWith("'")?l.slice(1,-1):isNaN(Number(l))?Z(t,l):Number(l));try{s=a(...c)}catch(l){let p=l instanceof Error?l.message:String(l);return C(r,`Error calling "${n.fnName}": ${p}`,o),""}}else{let a=Z(t,n.path);if(a===void 0)return C(r,`Cannot resolve "${n.path}"`,o),"";a===null?s="":typeof a=="object"?s=JSON.stringify(a):s=a}return n.pipes.length>0&&(s=gt(s,n.pipes,i)),s}var ve=new Map;function kn(n,t,e){if(n.nodeType!==Node.TEXT_NODE||!n.textContent?.includes("{{"))return;let r=n.textContent;if(!ve.has(r)){let a=r.split(/(\{\{.*?\}\})/).map(c=>{if(c.startsWith("{{")){let l=c.slice(2,-2).trim();return{parsed:yt(l),literal:""}}else return{parsed:null,literal:c}});ve.set(r,a)}let o=ve.get(r),s=`TextNode: "${r}"`;return(i,a)=>{let c=o.map(({parsed:l,literal:p})=>l?String(vt(l,i,a,e,s)):p).join("");n.textContent=c}}function Ln(n,t,e){if(n.nodeType!==Node.ELEMENT_NODE)return;let r=n,o=[],s=Array.from(r.attributes);for(let i of s){let a=i.value.match(/\{\{(.+?)\}\}/);if(a){let c=a[1].trim(),l=yt(c),p=i.name,u=`Attribute: ${p} on <${r.tagName.toLowerCase()}>`;o.push((d,m)=>{let f=vt(l,d,m,e,u);r.setAttribute(p,String(f))})}}if(o.length>0)return(i,a)=>o.forEach(c=>c(i,a))}function Et(n,t,e,r,o){if(n.nodeType!==Node.ELEMENT_NODE||!n.hasAttribute(r))return;let s=n,i=s.getAttribute(r),a=s.cloneNode(!0),c=document.createComment(`${r}: ${i}`),l=s.parentNode;l.insertBefore(c,s),s.remove();let p=null,u=null,d=null,m=null;return(f,x)=>{let h=t(f,i,`${r}="${i}"`),b=o(h);if(b&&!p){if(d&&m)p=d,u=m,d=null,m=null;else{let y=a.cloneNode(!0);y.removeAttribute(r),p=y,u=Ee(y,e)}u(f,x),l.insertBefore(p,c.nextSibling)}else b&&u&&u(f,x);!b&&p&&(p.remove(),d=p,m=u,p=null,u=null)}}function Pn(n,t,e){return Et(n,t,e,"if",r=>!!r)}function An(n,t,e){return Et(n,t,e,"unless",r=>!r)}function $n(n,t,e){if(n.nodeType!==Node.ELEMENT_NODE||!n.hasAttribute("loop"))return;let r=n,o=r.getAttribute("loop"),s=o.match(/(\w+)\s+in\s+(.+)/);if(!s){C(e,`Invalid loop syntax: "${o}"`,`Element: <${r.tagName.toLowerCase()}>`);return}let[,i,a]=s,c=r.cloneNode(!0);c.removeAttribute("loop");let l=r.parentNode,p=document.createComment(`loop: ${o}`);l.insertBefore(p,r),r.remove();let u=[];return(d,m)=>{let f=Z(d,a);if(f===void 0){C(e,`Cannot resolve "${a}"`,`Loop source: "${o}"`);return}if(!Array.isArray(f)){C(e,`"${a}" is not an array in loop: "${o}"`,`Element: <${c.tagName.toLowerCase()}>`);return}let x=Math.min(u.length,f.length);for(let h=0;h<x;h++)u[h].renderer({...d,[i]:f[h]},m);for(let h=u.length-1;h>=f.length;h--)u[h].element.remove();if(f.length>x){let h=document.createDocumentFragment(),b=[];for(let T=x;T<f.length;T++){let v=c.cloneNode(!0),M=Ee(v,e);M({...d,[i]:f[T]},m),h.appendChild(v),b.push({element:v,renderer:M})}let y=x>0?u[x-1].element:p;l.insertBefore(h,y.nextSibling),u=u.slice(0,x).concat(b)}else u.length=f.length}}var Fn=[$n,Pn,An],Hn=[kn,Ln];function Ee(n,t){let e=[],r=Mn(t);function o(a){for(let c of Fn){let l=c(a,r,t);if(l){e.push(l);return}}for(let c of Hn){let l=c(a,r,t);l&&e.push(l)}for(let c of Array.from(a.childNodes))o(c)}o(n);let s=null,i;return(a,c)=>{(s!==a||i!==c)&&(e.forEach(l=>l(a,c)),s=a,i=c)}}function In(n,t={strict:!1}){let o=new DOMParser().parseFromString(`<template><div>${n}</div></template>`,"text/html").querySelector("template").content.firstElementChild,s=Ee(o,t);return{content:o,render:s}}function Dn(n,t={}){let{delimiter:e=".",escapeChar:r="\\"}=t;if(!n||typeof n!="string")throw new Error("Notation must be a non-empty string");let o=[],s="",i=0,a=!1,c="";for(;i<n.length;){let l=n[i],p=n.substring(i,e.length+i),u=n[i+1],d=n.substring(i+1,e.length+i+1);if(l===r&&(d===e||u==="["||u==="]"))a?c+=u:s+=u,i+=2;else if(l==="["&&!a)s&&(o.push({type:"property",key:s}),s=""),a=!0,c="",i++;else if(l==="]"&&a){if(!/^\d+$/.test(c.trim()))throw new Error(`Invalid array index: [${c}]. Only numeric indices are supported.`);o.push({type:"index",key:c.trim()}),a=!1,c="",i++}else p===e&&!a?(s&&(o.push({type:"property",key:s}),s=""),i+=e.length):a?(c+=l,i++):(s+=l,i++)}if(a)throw new Error("Unclosed bracket in notation");if(s&&o.push({type:"property",key:s}),o.length===0)throw new Error("Invalid notation: must contain at least one property or index");return o}function Bn(n){return t=>{let e=t;for(let r of n){if(e==null)return;if(r.type==="property"){if(typeof e!="object")return;e=e[r.key]}else if(r.type==="index"){if(!Array.isArray(e))return;let o=parseInt(r.key,10);if(o<0||o>=e.length)return;e=e[o]}}return e}}function Y(n,t={}){let e=Dn(n,t);return Bn(e)}function Tt(n){let t=[],e=0;for(;e<n.length;){let r=n[e];if(/\s/.test(r)){e++;continue}if(r==="|"){for(e++;e<n.length&&/\s/.test(n[e]);)e++;let o="";for(;e<n.length&&!/[\s\(\)\[\]\{\}\|\+\-\*\/\=\;\,\.]/.test(n[e]);)o+=n[e],e++;t.push({type:3,value:o});continue}if(r==='"'||r==="'"){let o=r,s=o;for(e++;e<n.length&&n[e]!==o;)n[e]==="\\"&&e+1<n.length&&n[e+1]===o?(s+="\\"+o,e+=2):(s+=n[e],e++);e<n.length&&(s+=o,e++),t.push({type:0,value:s});continue}if(/[0-9]/.test(r)){let o="",s=!1;for(;e<n.length&&(/[0-9]/.test(n[e])||n[e]==="."&&!s);)n[e]==="."&&(s=!0),o+=n[e],e++;t.push({type:0,value:o});continue}if(/[a-zA-Z_$]/.test(r)){let o="",s=!1;for(;e<n.length;)if(/[a-zA-Z0-9_$.]/.test(n[e]))o+=n[e],e++;else if(n[e]==="["){let l=1;for(o+=n[e++];e<n.length&&l>0;)n[e]==="["&&l++,n[e]==="]"&&l--,o+=n[e++]}else break;let i=0;for(;e<n.length&&/\s/.test(n[e]);)i++,e++;if(e<n.length&&n[e]==="("){s=!0,o+="(",e++;let l=1;for(;e<n.length&&l>0;)n[e]==="("&&l++,n[e]===")"&&l--,o+=n[e++]}else e-=i;let a=t[t.length-1],c=n[e-o.length-1]==="."&&a?.type===0;t.push({type:s||c?1:2,value:o});continue}e++}return t}function Q(n){let t=[],e=n.indexOf("("),r=n.lastIndexOf(")");if(e===-1||r===-1||r<=e)throw new Error("Invalid function call syntax");let o=n.slice(e+1,r),s=0;for(;s<o.length;){let i=o[s];if(/\s/.test(i)){s++;continue}if(i==='"'||i==="'"){let a=i,c="";for(s++;s<o.length&&o[s]!==a;)o[s]==="\\"?(s++,s<o.length&&(c+=o[s])):c+=o[s],s++;if(s>=o.length)throw new Error("Unterminated string in arguments");s++,t.push({type:"string",value:c});continue}if(/[0-9]/.test(i)){let a="";for(;s<o.length&&/[0-9.]/.test(o[s]);)a+=o[s],s++;t.push({type:"number",value:parseFloat(a)});continue}if(/[a-zA-Z_]/.test(i)){let a="";for(;s<o.length&&/[a-zA-Z0-9_\.]/.test(o[s]);)a+=o[s],s++;t.push({type:"identifier",value:a});continue}if(i===","){s++;continue}throw new Error(`Unexpected character in arguments: ${i}`)}return t}function bt(n){let t=[],e=0;for(;e<n.length;){let r=n.indexOf("{{",e);if(r===-1){t.push(xt(n.slice(e)));break}r>e&&t.push(xt(n.slice(e,r)));let{value:o,endIndex:s,balanced:i}=_n(n,r);if(!i)throw new Error(`Unclosed mustache tag starting at index ${r}, template: ${n}`);t.push(On(o)),e=s}return t}function xt(n){return{type:"string",value:n}}function On(n){return{type:"mustache",value:n}}function _n(n,t){let e="{{",r="}}",o=t+e.length,s=1;for(;o<n.length&&s>0;)n.slice(o,o+e.length)===e?(s++,o+=e.length):n.slice(o,o+r.length)===r?(s--,o+=r.length):o++;let i=s===0,a=i?o:n.length;return{value:n.slice(t,a),endIndex:a,balanced:i}}function xe(n,t){let e=bt(n).map(r=>r.type==="string"?(o,s)=>r.value:jn(r,t));return(r,o)=>e.map(s=>s(r,o)).join("")}function jn(n,t){let e=Tt(n.value),r=Vn(e,n.value,t?.pipeRegistry);return qn(r)}function Vn(n,t,e){let r=null;e||(e=N);for(let o of n)switch(o.type){case 0:throw Error(`Constants not supported: ${o.value}`);case 2:{r={source:Y(o.value),pipes:[]};break}case 1:{r={source:Un(o.value),pipes:[]};break}case 3:{if(!r)throw Error(`Pipe '${o.value}' has no input expression in: ${t}`);if(!o.value||o.value==="")throw Error("Pipe symbol was provided, but no pipes. Template: "+t);let[s,...i]=o.value.split(":").map(c=>c.trim()),a=e.lookup(s);if(!a)throw Error(`Pipe not found: ${s}`);r.pipes.push(c=>a(c,i));break}}if(!r)throw Error(`Invalid expression: ${t}`);return r}function qn(n){return(t,e)=>{let r=n.source(t,e),o=n.pipes.reduce((s,i)=>i(s),r);return o!=null?o.toString():""}}function Un(n){let t=n.indexOf("(");if(t===-1)throw Error(`Invalid function: ${n}`);let r=Q(n).map(i=>{if(i.type==="number"||i.type==="string")return()=>i.value;if(i.type==="identifier")return a=>Y(i.value)(a);throw Error(`Unsupported argument type: ${i.type}`)}),o=n.substring(0,t),s=Y(o);return(i,a)=>{if(!a)throw Error(`Component context is required for calling '${o}'`);let c=s(a);if(typeof c!="function")throw Error(`Resolved '${o}' is not a function`);let l=r.map(p=>p(i));return c.apply(a,l)}}var Te=class{constructor(t,e,r,o){this.root=t;this.bindings=e;this.clickBindings=r;this.component=o}render(t){for(let e of this.bindings)e.type==="text"?e.func(t,e.node):e.func(t,e.element);for(let e of this.clickBindings){let r=this.getNodeAtPath(this.root,e.path),o=this.component?.[e.methodName];r instanceof HTMLElement&&typeof o=="function"&&(r.onclick=s=>{let i=e.argTokens.map(a=>{if(a.type==="number"||a.type==="string")return a.value;if(a.type==="identifier")return a.value==="event"?s:a.value.split(".").reduce((l,p)=>l?.[p],t)});o.apply(this.component,i)})}return this.root}getNodeAtPath(t,e){return e.reduce((r,o)=>r.childNodes[o],t)}};function oo(n){var t=new be(n);return t}var be=class{constructor(t){if(typeof t=="string"){let r=t.trim();if(r.startsWith("<template")){let o=document.createElement("div");o.innerHTML=r;let s=o.querySelector("template");if(!s)throw new Error("Could not find <template> in input string");this.template=s}else this.template=document.createElement("template"),this.template.innerHTML=r}else this.template=t;let e=this.getRootElement();this.bindings=this.collectBindings(e),this.clickBindings=this.collectClickBindings(e)}createInstance(t){let e=this.getRootElement().cloneNode(!0),r=t??{},o=this.bindings.map(s=>{let i=this.getNodeAtPath(e,s.path);return s.type==="text"?{type:"text",node:i,func:(a,c)=>s.func(a,r,c)}:{type:"attribute",element:i,name:s.name,func:(a,c)=>s.func(a,r,c)}});return new Te(e,o,this.clickBindings,t)}getRootElement(){let t=Array.from(this.template.content.childNodes).find(e=>e.nodeType===Node.ELEMENT_NODE);if(!(t instanceof HTMLElement))throw new Error("Template must contain a single root element");return t}collectBindings(t){let e=[],r=(o,s=[])=>{if(o.nodeType===Node.TEXT_NODE&&o.textContent&&o.textContent.match(/\{\{\s*(.*?)\s*\}\}/g)){let i=xe(o.textContent);e.push({type:"text",path:[...s],func:(a,c,l)=>{l.textContent=i(a,c)}})}if(o.nodeType===Node.ELEMENT_NODE){let i=o;if(i.tagName==="TEMPLATE")return;for(let a=0;a<i.attributes.length;a++){let c=i.attributes[a];if(c.value.match(/\{\{\s*(.*?)\s*\}\}/g)){let l=xe(c.value);e.push({type:"attribute",path:[...s],name:c.name,func:(p,u,d)=>{d.setAttribute(c.name,l(p,u))}})}}Array.from(o.childNodes).forEach((a,c)=>{r(a,[...s,c])})}};return r(t),e}collectClickBindings(t){let e=[],r=(o,s=[])=>{if(o.nodeType===Node.ELEMENT_NODE){let a=o.getAttribute("click");if(a?.trim()){let c=a.trim(),l=c.match(/^([a-zA-Z_$][\w$]*)\s*\((.*)\)$/);if(l){let p=l[1],u=Q(c);e.push({path:[...s],methodName:p,argTokens:u})}else e.push({path:[...s],methodName:c,argTokens:[]})}Array.from(o.childNodes).forEach((c,l)=>{r(c,[...s,l])})}};return r(t),e}getNodeAtPath(t,e){return e.reduce((r,o)=>r.childNodes[o],t)}};var we=class{constructor(t,e,r,o){this.dataMap=new Map;this.rowMap=new Map;this.table=t,this.template=e,this.IdColumn=r,this.component=o}render(t){this.clearRows();for(let e of t)this.renderRow(e)}clearRows(){this.table.tBodies[0].innerHTML="",this.dataMap.clear(),this.rowMap.clear()}renderRow(t){let e=t[this.IdColumn];if(e==null)throw new Error(`Missing IdColumn '${this.IdColumn}' in data`);let r=this.template.content.firstElementChild?.cloneNode(!0);if(!r)throw new Error("Template must have a <tr> as its first child");this.populateRow(r,t),this.attachEventHandlers(r,t),this.table.tBodies[0].appendChild(r),this.dataMap.set(e,t),this.rowMap.set(e,r)}populateRow(t,e){t.querySelectorAll("[data-field]").forEach(o=>{let s=o.dataset.field;s&&s in e&&(o.textContent=String(e[s]))})}attachEventHandlers(t,e){t.querySelectorAll("[onclick]").forEach(o=>{let s=o,i=s.getAttribute("onclick");if(!i)return;let a=i.match(/^(\w+)(\(([^)]*)\))?$/);if(!a)return;let[,c,,l]=a,p=l?l.split(",").map(u=>u.trim().replace(/^['"]|['"]$/g,"")):[];typeof this.component[c]=="function"&&(s.removeAttribute("onclick"),s.addEventListener("click",u=>{this.component[c](...p,e,u)}))})}update(t){let e=t[this.IdColumn];if(e==null)throw new Error(`Missing IdColumn '${this.IdColumn}' in update data`);let r=this.rowMap.get(e);r?(this.populateRow(r,t),this.attachEventHandlers(r,t),this.dataMap.set(e,t)):this.renderRow(t)}},ee=class extends CustomEvent{constructor(t){super("sortchange",{detail:t,bubbles:!0,composed:!0})}},Ce=class{constructor(t,e){this.sortColumns=[];this.table=t,this.component=e,this.setupListeners()}setupListeners(){this.table.tHead?.querySelectorAll("th[name]")?.forEach(e=>{e.addEventListener("click",()=>{let r=e.getAttribute("name");this.toggle(r),this.updateSortIndicators(),this.emit()})})}toggle(t){let e=this.sortColumns.findIndex(r=>r.column===t);e===-1?this.sortColumns.push({column:t,direction:"asc"}):this.sortColumns[e].direction==="asc"?this.sortColumns[e].direction="desc":this.sortColumns.splice(e,1)}emit(){let t=new ee(this.sortColumns);this.component.dispatchEvent(t)}updateSortIndicators(){this.table.tHead?.querySelectorAll("th[name]")?.forEach(e=>{let r=e,o=r.querySelector(".sort-indicator");o&&r.removeChild(o);let s=r.getAttribute("name"),i=this.sortColumns.find(a=>a.column===s);if(i){let a=document.createElement("span");a.className="sort-indicator",a.textContent=i.direction==="asc"?"\u2191":"\u2193",a.style.float="right",a.style.marginLeft="5px",r.appendChild(a)}r.style.position||(r.style.position="relative")})}getSortColumns(){return[...this.sortColumns]}clear(){this.sortColumns=[],this.updateSortIndicators(),this.emit()}};var Re=(o=>(o[o.Allow=0]="Allow",o[o.Deny=1]="Deny",o[o.Continue=2]="Continue",o[o.Stop=3]="Stop",o))(Re||{}),F=class extends Error{},H=class extends F{constructor(){super(...arguments);this.isGuard=!0}};var R=class n extends Event{constructor(e,r,o,s,i){super(n.NAME,i);this.route=e;this.urlSegments=r;this.routeData=o;this.routeTarget=s}static{this.NAME="rlx.navigateRoute"}};var _=new Map,te=new Map;function Se(n,t){if(Me(),_.has(n)){let r=g("Duplicate route target",{target:n??"default"});if(r)throw r;return}_.set(n,t);let e=te.get(n);e&&(te.delete(n),t(e))}function Ne(n){_.delete(n)}function zn(){te.clear(),_.clear()}function Wn(n){let t=_.get(n.routeTarget);t?t(n):te.set(n.routeTarget,n)}var wt=!1;function Me(){wt||(wt=!0,document.addEventListener(R.NAME,n=>{Wn(n)}))}var ke=class{constructor(t){this.paramName=t}isMatch(t){return!!/^\d+$/.test(t)}getValue(t){if(/^\d+$/.test(t)===!1)throw new Error(`Path is not a number, parameter name '${this.paramName}', value: '${t}'.`);return parseInt(t)}},Le=class{constructor(t){this.paramName=t}isMatch(t){return!0}getValue(t){return t}},Pe=class{constructor(t){this.value=t}isMatch(t){return t==this.value}getValue(t){return this.value}},Ae=class{constructor(t,e){this.route=t;this.segments=e}match(t){if(t.length!=this.segments.length)return null;let e=[];var r={};for(let o=0;o<t.length;o++){let s=t[o],i=this.segments[o];if(!i.isMatch(s))return null;if(i.paramName){let a=i.getValue(s);r[i.paramName]=a,e.push(a.toString())}else e.push(s)}return{route:this.route,params:r,urlSegments:e}}buildUrl(t){let e=[];for(let o=0;o<this.segments.length;o++){let s=this.segments[o];if(s.paramName){var r=t[s.paramName];if(!r)throw new Error(`Route "${this.route.name}" did not get value for parameter "${s.paramName} from the provided routeData: "${JSON.stringify(t)}".`);e.push(r.toString())}else e.push(s.getValue("").toString())}return{route:this.route,params:t,urlSegments:e}}};function $e(n,t,e){return t===""||t.indexOf("/")>=0?Rt(n,t||"/"):Ct(n,t,e)}function Ct(n,t,e){var r=n.find(i=>i.name===t);if(!r)return null;var o=St(r),s=o.buildUrl(e??{});return s}function Rt(n,t){let e=t.replace(/^\/|\/$/g,"").split("/"),r=Gn(n);for(let o=0;o<r.length;o++){let i=r[o].match(e);if(i)return i}return null}function Gn(n){let t=[];return n.forEach(e=>{var r=St(e);t.push(r)}),t}function St(n){var t=[];n.path.replace(/^\/|\/$/g,"").split("/").forEach(o=>{o.substring(0,1)==":"?t.push(new Le(o.substring(1))):o.substring(0,1)===";"?t.push(new ke(o.substring(1))):o.substring(0,1)==="{"||t.push(new Pe(o))});var r=new Ae(n,t);return r}var j=class extends HTMLElement{static get observedAttributes(){return["name","target","params"]}constructor(){super(),this.addEventListener("click",t=>this.handleClick(t))}handleClick(t){t.preventDefault();let e=this.getAttribute("name");if(!e)return;console.log("Calling printRoutes from RouteLink in relaxjs/components"),Fe();let r={};for(let a of Array.from(this.attributes))if(a.name.startsWith("param-")){let c=a.name.substring(6);r[c]=a.value}let o=this.getAttribute("params"),s;if(o)try{s=JSON.parse(o)}catch(a){let c=g("Failed to parse route params",{element:"r-link",params:o,cause:a});if(c)throw c}let i=this.getAttribute("target");s&&Object.assign(r,s);try{ne(e,{params:r,target:i||void 0})}catch(a){if(a instanceof S)throw a;let c=g("Navigation failed",{element:"r-link",route:e,params:r,target:i,cause:a});if(c)throw c}}connectedCallback(){this.hasAttribute("tabindex")||this.setAttribute("tabindex","0"),this.style.cursor="pointer",this.role="link"}disconnectedCallback(){this.removeEventListener("click",this.handleClick)}};var V=class extends HTMLElement{constructor(){super(...arguments);this.name=void 0}connectedCallback(){this.name=this.getAttribute("name")??void 0,this.hasAttribute("dialog")&&(this.dialog=document.createElement("dialog"),this.dialog.addEventListener("close",()=>{this.dialog.replaceChildren()}),this.appendChild(this.dialog)),Se(this.name,e=>this.onNavigate(e)),console.log("registered")}disconnectedCallback(){Ne(this.name)}onNavigate(e){console.log("got nav",e),this.loadComponent(e).catch(r=>{r instanceof S||(r=g("Route navigation failed",{route:e.route.name,routeTarget:e.routeTarget,cause:r})),r&&console.error(r)})}async loadComponent(e){let r=e.route.componentTagName??(e.route.component?customElements.getName(e.route.component):null);if(!r){let s=g("Failed to find component for route",{route:e.route.name,componentTagName:e.route.componentTagName,component:e.route.component?.name,routeData:e.routeData});if(s)throw s;return}await customElements.whenDefined(r);let o=document.createElement(r);await this.applyRouteData(o,e.routeData),this.dialog?(this.dialog.replaceChildren(o),this.dialog.open||this.dialog.showModal()):document.startViewTransition?document.startViewTransition(()=>this.replaceChildren(o)):this.replaceChildren(o)}close(){this.dialog?.close()}async applyRouteData(e,r){if("loadRoute"in e){let o=r??{error:"loadRoute function without mapped route data in the routes"};await e.loadRoute(o)}r&&(e.routeData=r)}};var q;function re(){return q===void 0&&(q=Jn()??"default"),q}function Jn(){let n=window.location.pathname;return n=="/index.html"?"default":n.endsWith(".html")?n.slice(1,-5):null}var U=[];function Fe(){console.log(U)}function Xn(n){console.log("defining routes1",n),Me(),customElements.get("r-route-target")||customElements.define("r-route-target",V),customElements.get("r-link")||customElements.define("r-link",j),console.log("defining routes",n),U.length=0,U.push(...n);var t=[];if(n.forEach(e=>{e.componentTagName&&!customElements.get(e.componentTagName)&&t.push(`Component with tagName '${e.componentTagName}' is not defined in customElements.`),e.component&&!customElements.getName(e.component)&&t.push(`Component '${e.component.name}' is not defined in customElements. Used in route '${JSON.stringify(e)}'.`),e.layout===""&&(console.log("should not use empty string layout.",e),e.layout=void 0)}),t.length>0)throw new Error(t.join(`
2
- `))}function Kn(){if(re()==""){let s=window.location.pathname.match(/\/([^\/]+)\.html$/);s&&s[1]!==""?(console.log("setting current layut",s[1]),q=s[1]):(console.log("Setting default layout name"),q="default")}if(Zn())return;let n=window.location.pathname.replace(/^\/|\/$/g,"")||"/",t=Nt(n,{}),e=new URLSearchParams(window.location.search);if(e.size>0&&(t.params??={},e.forEach((o,s)=>{t.params[s]=o})),Mt(t))return;history.replaceState(t.urlSegments,"","/"+t.urlSegments.join("/"));let r=new R(t.route,t.urlSegments,t.params,t.route.target);document.dispatchEvent(r)}function ne(n,t){console.log("navigating to ",n,t);let e=Nt(n,t);if(Mt(e))return;let r=t?.target??e.route.target,o=e.urlSegments.join("/");window.location.pathname.replace(/^\/|\/$/g,"")!=o&&history.pushState(e.urlSegments,"","/"+e.urlSegments.join("/"));let i=new R(e.route,e.urlSegments,e.params,r);document.dispatchEvent(i)}function Nt(n,t){let e=t?.routes??U,r=t?.params,o=$e(e,n,r);if(!o){let s=Yn(n,r,e);throw console.error(s),new F(s)}if(!Qn(o))throw new H("Route guards stopped navigation for route "+n);return o}function Mt(n){n||console.error("Route result is null, cannot navigate to layout.");let t=(n.route.layout??"default").replace(/\.html?$/,"");if(t===re())return!1;if(console.log("Current layout: "+re(),"Wanted layout: "+t),window.location.hash)throw Error('A redirect failed, does the requsted layout exist? "'+t+'"?');console.log(`requires layout switch from ${re()} to ${t}`);let e={routeName:n.route.name,params:n.params||{}};sessionStorage.setItem("layoutNavigation",JSON.stringify(e));let r=t.indexOf(".htm")>-1?`/${t}#layout`:`/${t}.html#layout`;return console.log("redirecting to ",r),window.location.href=r,!0}function Zn(){try{let n=sessionStorage.getItem("layoutNavigation");if(!n)return!1;let t=JSON.parse(n);return sessionStorage.removeItem("layoutNavigation"),console.log("session store navigation ",t),ne(t.routeName,{params:t.params}),!0}catch(n){return sessionStorage.removeItem("layoutNavigation"),g("Failed to navigate from session storage",{cause:n}),!1}}function Yn(n,t,e){var r="";t?r+=Object.entries(t).map(([s,i])=>`${s}=${i}`).join(", "):r=".";var o=e.map(s=>` * Name: '${s.name}', path: '${s.path}', target: ${s.target??"default"}
1
+ var Ve=Object.create;var D=Object.defineProperty;var qe=Object.getOwnPropertyDescriptor;var $t=Object.getOwnPropertyNames;var Ft=Object.getPrototypeOf,Ht=Object.prototype.hasOwnProperty;var Ue=(n,t)=>(t=Symbol[n])?t:Symbol.for("Symbol."+n),B=n=>{throw TypeError(n)};var It=(n,t,e)=>t in n?D(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var Oe=(n,t)=>D(n,"name",{value:t,configurable:!0});var ze=n=>t=>{var e=n[t];if(e)return e();throw new Error("Module not found in bundle: "+t)};var k=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports);var Dt=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of $t(t))!Ht.call(n,o)&&o!==e&&D(n,o,{get:()=>t[o],enumerable:!(r=qe(t,o))||r.enumerable});return n};var L=(n,t,e)=>(e=n!=null?Ve(Ft(n)):{},Dt(t||!n||!n.__esModule?D(e,"default",{value:n,enumerable:!0}):e,n));var z=n=>[,,,Ve(n?.[Ue("metadata")]??null)],We=["class","method","getter","setter","accessor","field","value","get","set"],I=n=>n!==void 0&&typeof n!="function"?B("Function expected"):n,Bt=(n,t,e,r,o)=>({kind:We[n],name:t,metadata:r,addInitializer:s=>e._?B("Already initialized"):o.push(I(s||null))}),Ot=(n,t)=>It(t,Ue("metadata"),n[3]),W=(n,t,e,r)=>{for(var o=0,s=n[t>>1],i=s&&s.length;o<i;o++)t&1?s[o].call(e):r=s[o].call(e,r);return r},G=(n,t,e,r,o,s)=>{var i,a,c,l,d,u=t&7,p=!!(t&8),m=!!(t&16),f=u>3?n.length+1:u?p?1:2:0,y=We[u+5],h=u>3&&(n[f-1]=[]),g=n[f]||(n[f]=[]),E=u&&(!m&&!p&&(o=o.prototype),u<5&&(u>3||!m)&&qe(u<4?o:{get[e](){return _e(this,s)},set[e](x){return je(this,s,x)}},e));u?m&&u<4&&Oe(s,(u>2?"set ":u>1?"get ":"")+e):Oe(o,e);for(var b=r.length-1;b>=0;b--)l=Bt(u,e,c={},n[3],g),u&&(l.static=p,l.private=m,d=l.access={has:m?x=>_t(o,x):x=>e in x},u^3&&(d.get=m?x=>(u^1?_e:jt)(x,o,u^4?s:E.get):x=>x[e]),u>2&&(d.set=m?(x,M)=>je(x,o,M,u^4?s:E.set):(x,M)=>x[e]=M)),a=(0,r[b])(u?u<4?m?s:E[y]:u>4?void 0:{get:E.get,set:E.set}:o,l),c._=1,u^4||a===void 0?I(a)&&(u>4?h.unshift(a):u?m?s=a:E[y]=a:o=a):typeof a!="object"||a===null?B("Object expected"):(I(i=a.get)&&(E.get=i),I(i=a.set)&&(E.set=i),I(i=a.init)&&h.unshift(i));return u||Ot(n,o),E&&D(o,e,E),m?u^4?s:E:o};var ae=(n,t,e)=>t.has(n)||B("Cannot "+e),_t=(n,t)=>Object(t)!==t?B('Cannot use the "in" operator on this value'):n.has(t),_e=(n,t,e)=>(ae(n,t,"read from private field"),e?e.call(n):t.get(n));var je=(n,t,e,r)=>(ae(n,t,"write to private field"),r?r.call(n,e):t.set(n,e),e),jt=(n,t,e)=>(ae(n,t,"access private method"),e);var Ke=k((gr,zt)=>{zt.exports={greeting:"Hello, {name}!",items:"{count, plural, one {# item} other {# items}}"}});var Ze=k((hr,Wt)=>{Wt.exports={today:"today",yesterday:"yesterday",daysAgo:"{count, plural, one {# day ago} other {# days ago}}",pieces:"{count, plural, =0 {none} one {one} other {# pcs}}"}});var Ye=k((yr,Gt)=>{Gt.exports={required:"This field is required.",range:"Number must be between {min} and {max}, was {actual}.",digits:"Please enter only digits."}});var Qe=k((vr,Jt)=>{Jt.exports={greeting:"Hej, {name}!",items:"{count, plural, one {# sak} other {# saker}}"}});var et=k((Er,Xt)=>{Xt.exports={today:"idag",yesterday:"ig\xE5r",daysAgo:"{count, plural, one {# dag sedan} other {# dagar sedan}}",pieces:"{count, plural, =0 {inga} one {en} other {# st}}"}});var tt=k((xr,Kt)=>{Kt.exports={required:"Detta f\xE4lt \xE4r obligatoriskt.",range:"Talet m\xE5ste vara mellan {min} och {max}, var {actual}.",digits:"Ange endast siffror."}});var S=class extends Error{constructor(e,r){super(e);this.context=r}},ce=null;function or(n){ce=n}function v(n,t){let e=new S(n,t);if(ce){let r=!1;if(ce(e,{suppress(){r=!0}}),r)return null}return e}function sr(n){return function(...t){n.call(this,...t).catch(e=>{let r=v("Async callback failed",{cause:e});if(r)throw r})}}var J=class{constructor(t,e){this.value=t;this.removeCallback=e;this.next=null;this.prev=null}remove(){this.prev&&(this.prev.next=this.next),this.next&&(this.next.prev=this.prev),this.removeCallback()}},le=class{constructor(){this._first=null;this._last=null;this._length=0}addFirst(t){let e=this.createNode(t);this._first?(e.next=this._first,this._first.prev=e,this._first=e):(this._first=e,this._last=this._first),this._length++}addLast(t){let e=this.createNode(t);this._last?(e.prev=this._last,this._last.next=e,this._last=e):(this._first=e,this._last=e),this._length++}createNode(t){let e;return e=new J(t,()=>{this._first===e&&(this._first=e.next),this._last===e&&(this._last=e.prev),this._length--}),e}removeFirst(){if(!this._first)throw new Error("The list is empty.");let t=this._first.value;return this._first=this._first.next,this._first||(this._last=null),this._length--,t}removeLast(){if(!this._last)throw new Error("The list is empty.");let t=this._last.value;return this._last=this._last.prev,this._last||(this._first=null),this._length--,t}get length(){return this._length}get first(){return this._first}get firstValue(){return this._first?.value}get last(){return this._last}get lastValue(){return this._last?.value}};var X=class extends Event{constructor(e){super("pageselected",{bubbles:!0,composed:!0});this.page=e}},ue=class{constructor(t,e,r){this.currentPage=1;this.container=t,this.totalCount=e,this.pageSize=r,this.render()}render(){this.container.innerHTML="";let t=Math.max(1,Math.ceil(this.totalCount/this.pageSize)),e=(r,o,s=!1)=>{let i=document.createElement("button");return i.textContent=r,i.disabled=s,i.addEventListener("click",()=>this.selectPage(o)),i};this.container.appendChild(e("Previous",this.currentPage-1,this.currentPage===1));for(let r=1;r<=t;r++){let o=e(r.toString(),r);r===this.currentPage&&o.classList.add("selected"),this.container.appendChild(o)}this.container.appendChild(e("Next",this.currentPage+1,this.currentPage===t))}selectPage(t){let e=Math.max(1,Math.ceil(this.totalCount/this.pageSize));t<1||t>e||t===this.currentPage||(this.currentPage=t,this.render(),this.container.dispatchEvent(new X(this.currentPage)))}update(t){this.totalCount=t;let e=Math.max(1,Math.ceil(this.totalCount/this.pageSize));this.currentPage>e&&(this.currentPage=e),this.render()}getCurrentPage(){return this.currentPage}};function Vt(n){let t=n.getAttribute("id");if(t){let e=n.closest("form");if(e){let r=e.querySelector(`label[for="${t}"]`);if(r)return r.textContent?.trim()||null}}return null}var Ge=class{constructor(t,e){this.form=t;this.options=e;if(!this.form)throw new Error("Form must be specified.");this.form.addEventListener("submit",r=>{if((e?.preventDefault||this.options?.submitCallback!=null)&&r.preventDefault(),this.options?.customChecks&&this.options.customChecks(t),this.validateForm())try{let o=this.options?.submitCallback?.call(this);o instanceof Promise&&o.catch(s=>{let i=v("submitCallback failed",{cause:s});if(i)throw i})}catch(o){let s=v("submitCallback failed",{cause:o});if(s)throw s}else e?.preventDefaultOnFailed!==!1&&r.preventDefault()}),e?.autoValidate&&t.addEventListener("input",()=>{this.validateForm()})}validateForm(){let t=Array.from(this.form.querySelectorAll("input,textarea,select")),e=!0;if(this.options?.useSummary!==!0)return this.form.checkValidity()?!0:(this.form.reportValidity(),this.focusFirstErrorElement(),!1);let r=[];return t.forEach(o=>{if(!o.checkValidity()){e=!1;let s=Vt.call(this,o)||o.name||"Unnamed Field";r.push(`${s}: ${o.validationMessage}`)}}),e?this.clearErrorSummary():(this.displayErrorSummary(r),this.focusFirstErrorElement()),e}displayErrorSummary(t){this.clearErrorSummary(),this.errorSummary||this.createErrorSummary();let e=this.errorSummary.querySelector("ul");t.forEach(r=>{let o=document.createElement("li");o.textContent=r,e.appendChild(o)})}createErrorSummary(){let t=document.createElement("div");t.className="error-summary",t.style.color="red",t.setAttribute("role","alert"),t.setAttribute("aria-live","assertive"),t.setAttribute("aria-atomic","true"),this.errorSummary=t;let e=document.createElement("ul");this.errorSummary.appendChild(e),this.form.prepend(t)}addErrorToSummary(t,e){this.errorSummary||this.createErrorSummary();let r=this.errorSummary.querySelector("ul"),o=document.createElement("li");o.textContent=`${t}: ${e}`,r.appendChild(o)}clearErrorSummary(){if(this.errorSummary){let t=this.errorSummary.querySelector("ul");t&&(t.innerHTML="")}}focusFirstErrorElement(){let t=this.form.querySelector(":invalid");t instanceof HTMLElement&&document.activeElement!==t&&t.focus()}static FindForm(t){if(t.parentElement?.tagName=="FORM")return t.parentElement;for(let e=0;e<t.children.length;e++){let r=t.children[e];if(r.tagName=="FORM")return r}throw new Error("Parent or a direct child must be a FORM for class "+t.constructor.name)}};var pe=new Map;function qt(n){return pe.has(n)||pe.set(n,new Intl.PluralRules(n)),pe.get(n)}function Je(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Ut(n,t,e="en"){return n.replace(/\{(\w+)(?:, (plural|select),((?:[^{}]*\{[^{}]*\})+))?\}/g,(r,o,s,i)=>{let a=t?.[o];if(s==="plural"){let c=new RegExp(`=${Je(String(a))}\\s*\\{([^{}]*)\\}`).exec(i);if(c)return c[1].replace(`{${o}}`,String(a)).replace("#",String(a));let d=qt(e).select(a),u=new RegExp(`${d}\\s*\\{([^{}]*)\\}`).exec(i)||new RegExp("other\\s*\\{([^{}]*)\\}").exec(i);return u?u[1].replace(`{${o}}`,String(a)).replace("#",String(a)):String(a)}if(s==="select"){let c=Je(String(a)),l=new RegExp(`\\b${c}\\s*\\{([^{}]*)\\}`).exec(i)||new RegExp("\\bother\\s*\\{([^{}]*)\\}").exec(i);return l?l[1]:String(a)}return a!==void 0?String(a):`{${o}}`})}var Xe=Ut;var wr=ze({"./locales/en/r-common.json":()=>Promise.resolve().then(()=>L(Ke())),"./locales/en/r-pipes.json":()=>Promise.resolve().then(()=>L(Ze())),"./locales/en/r-validation.json":()=>Promise.resolve().then(()=>L(Ye())),"./locales/sv/r-common.json":()=>Promise.resolve().then(()=>L(Qe())),"./locales/sv/r-pipes.json":()=>Promise.resolve().then(()=>L(et())),"./locales/sv/r-validation.json":()=>Promise.resolve().then(()=>L(tt()))});var Zt="en",de=Zt;var Yt={},nt=null;function w(n,t){let[e,r]=n.includes(":")?n.split(":"):["r-common",n],o=Yt[e]?.[r];if(!o)return nt&&nt(r,e,de),n;try{return Xe(o,t,de)}catch{return n}}function O(){return de}function Mr(n,t,e={}){let r=n.querySelectorAll("input, select, textarea");if(r.forEach(o=>{if(!o.hasAttribute("name")||K(o,"disabled"))return;let s=o.getAttribute("name");if(!(s in t)){if(e.throwOnMissingProperty)throw new Error(`Form field "${s}" has no matching property in class instance`);return}let i=rn(o);i!==st&&(t[s]=i)}),e.throwOnMissingField){let o=new Set;r.forEach(s=>{s.hasAttribute("name")&&o.add(s.getAttribute("name"))});for(let s in t)if(typeof t[s]!="function"&&Object.prototype.hasOwnProperty.call(t,s)&&!o.has(s))throw new Error(`Class property "${s}" has no matching form field`)}return t}function Qt(n){let t=n.getAttribute("data-type");return t?tn(t):n instanceof HTMLInputElement?nn(n.type):"checked"in n&&typeof n.checked=="boolean"?me:e=>e}function kr(n){let t={},e=new FormData(n),r=new Set;e.forEach((o,s)=>{if(r.has(s))return;r.add(s);let i=e.getAll(s),a=n.elements.namedItem(s),c=a?Qt(a):l=>l;if(i.length===1){let l=i[0];t[s]=typeof l=="string"?c(l):l}else t[s]=i.map(l=>typeof l=="string"?c(l):l)});for(let o=0;o<n.elements.length;o++){let s=n.elements[o];s.type==="checkbox"&&s.name&&!r.has(s.name)&&(r.add(s.name),t[s.name]=!1)}return t}function me(n){if(!n||n=="")return;let t=n.toLowerCase();if(t==="true"||t==="on"||Number(n)>0)return!0;if(t==="false"||t==="off"||Number(n)<=0)return!1;throw new Error("Could not convert value '"+n+"' to boolean.")}function rt(n){if(!n||n=="")return;let t=Number(n);if(!isNaN(t))return t;throw new Error("Could not convert value '"+n+"' to number.")}function en(n){return new Intl.DateTimeFormat(n).formatToParts(new Date(2024,0,15)).filter(e=>e.type==="day"||e.type==="month"||e.type==="year").map(e=>e.type)}function ot(n){if(!n||n==="")return;if(/^\d{4}-\d{2}-\d{2}(T|$)/.test(n)){let r=new Date(n);if(!isNaN(r.getTime()))return r}let t=n.split(/[\/.\-\s]/);if(t.length>=3&&t.every(r=>/^\d+$/.test(r))){let r=O(),o=en(r),s={};if(o.forEach((i,a)=>{s[i]=parseInt(t[a],10)}),s.year!==void 0&&s.month!==void 0&&s.day!==void 0){s.year<100&&(s.year+=2e3);let i=new Date(s.year,s.month-1,s.day);if(!isNaN(i.getTime()))return i}}let e=new Date(n);if(isNaN(e.getTime()))throw new Error("Invalid date format");return e}function tn(n){switch(n){case"boolean":return me;case"number":return rt;case"Date":return ot;case"string":return t=>!t||t==""?void 0:t;default:throw new Error(`Unknown data-type "${n}".`)}}function nn(n){switch(n){case"checkbox":return me;case"number":return rt;case"date":case"datetime-local":return ot;case"month":return t=>{let[e,r]=t.split("-").map(Number);return new Date(e,r-1)};case"week":return t=>{let[e,r]=t.split("-W").map(Number);return{year:e,week:r}};case"time":return t=>{let[e,r,o=0]=t.split(":").map(Number);return{hours:e,minutes:r,seconds:o}};default:return t=>!t||t==""?void 0:t}}function K(n,t){let e=n;if(t in e&&typeof e[t]=="boolean")return e[t];let r=n.getAttribute(t);return r===null?!1:r===""||r.toLowerCase()==="true"||r.toLowerCase()===t}var st=Symbol("skip");function rn(n){let t=n,e=t.type||n.getAttribute("type")||"";if(e==="checkbox")return K(n,"checked");if(e==="radio")return K(n,"checked")?t.value:st;if(e==="number")return t.value?Number(t.value):null;if(e==="date")return t.value?new Date(t.value):null;if("selectedOptions"in t&&K(n,"multiple"))return Array.from(t.selectedOptions).map(r=>r.value);if("value"in t)return t.value}var dt=new Map;function ye(n,t=[]){return function(e){dt.set(n,{validator:e,validInputTypes:t})}}function Ar(n){return dt.get(n)}var lt,fe;lt=[ye("required")];var P=class P{static create(t){return t==="required"?new P:null}validate(t,e){t.trim()===""&&e.addError(this.getMessage())}getMessage(){return w("r-validation:required")}};fe=z(null),P=G(fe,0,"RequiredValidation",lt,P),W(fe,1,P);var it=P,ut,ge;ut=[ye("range",["number"])];var A=class A{constructor(t,e){this.min=void 0;this.max=void 0;this.min=t,this.max=e}static create(t){let e=t.match(/^range\((-?\d+(?:\.\d+)?)-(-?\d+(?:\.\d+)?)\)$/);if(e){let[,r,o]=e;return new A(parseFloat(r),parseFloat(o))}return null}validate(t,e){if(t.trim()==="")return;let r=parseFloat(t);!isNaN(r)&&r>=this.min&&r<=this.max||e.addError(this.getMessage(t))}getMessage(t){return w("r-validation:range",{min:this.min,max:this.max,actual:t})}};ge=z(null),A=G(ge,0,"RangeValidation",ut,A),W(ge,1,A);var at=A,pt,he;pt=[ye("digits",["number"])];var $=class ${static create(t){return t==="digits"?new $:null}validate(t,e){/^\d+$/.test(t)||e.addError(this.getMessage())}getMessage(){return w("r-validation:digits")}};he=z(null),$=G(he,0,"DigitsValidation",pt,$),W(he,1,$);var ct=$;function Hr(n,t,e){e&&n.querySelectorAll("select[name]").forEach(s=>{sn(s,e)}),n.querySelectorAll("[name]").forEach(o=>{let s=o.getAttribute("name");if(!s)return;if(s.endsWith("[]")){let a=s.slice(0,-2),c=mt(t,a);if(Array.isArray(c)){let l=o,d=l.type||o.getAttribute("type")||"";if(d==="checkbox"||d==="radio")l.checked=c.includes(l.value);else if("options"in l&&ft(o,"multiple"))c.forEach(u=>{let p=Array.from(l.options).find(m=>m.value===String(u));p&&(p.selected=!0)});else if("value"in l){let u=n.querySelectorAll(`[name="${s}"]`),p=Array.from(u).indexOf(o);p>=0&&p<c.length&&(l.value=String(c[p]))}}return}let i=mt(t,s);i!=null&&on(o,i)})}function mt(n,t){let e=[],r="",o=!1;for(let s=0;s<t.length;s++){let i=t[s];i==="["&&!o?(r&&(e.push(r),r=""),o=!0,r+=i):i==="]"&&o?(r+=i,e.push(r),r="",o=!1):i==="."&&!o?r&&(e.push(r),r=""):r+=i}return r&&e.push(r),e.reduce((s,i)=>{if(!(!s||typeof s!="object")){if(i.startsWith("[")&&i.endsWith("]")){let a=i.slice(1,-1);return s[a]}return s[i]}},n)}function on(n,t){let e=n,r=e.type||n.getAttribute("type")||"";if(r==="checkbox")e.checked=!!t;else if(r==="radio")e.checked=e.value===String(t);else if(r==="date"&&t instanceof Date)e.value=t.toISOString().split("T")[0];else if(r==="datetime-local"&&t instanceof Date){let o=s=>String(s).padStart(2,"0");e.value=`${t.getFullYear()}-${o(t.getMonth()+1)}-${o(t.getDate())}T${o(t.getHours())}:${o(t.getMinutes())}`}else if("options"in e&&ft(n,"multiple")&&Array.isArray(t)){let o=Array.from(e.options),s=t.map(String);o.forEach(i=>{i.selected=s.includes(i.value)})}else"value"in e&&(e.value=String(t))}function sn(n,t){let e=n.getAttribute("data-source"),r=n.getAttribute("name")||"",o,s="value",i="text",a=null;if(e){let p=e.match(/^\s*(\w+)\s*(?:\(\s*(\w+)\s*,\s*(\w+)\s*(?:,\s*(\w+)\s*)?\))?\s*$/);if(!p)return;o=p[1],p[2]&&p[3]&&(s=p[2],i=p[3]),p[4]&&(a=p[4])}else if(o=r.endsWith("[]")?r.slice(0,-2):r,!o)return;let c=t[o];if(c===void 0)return;let l=typeof c=="function"?c.call(t):c;if(!Array.isArray(l))return;let d=Array.from(n.options).filter(p=>p.value==="");n.innerHTML="",d.forEach(p=>n.add(p));let u=new Map;for(let p of l){if(p==null)continue;let m,f,y="";if(typeof p=="object"){if(m=String(p[s]),f=String(p[i]),a){let g=p[a];g!=null&&String(g)!==""&&(y=String(g))}}else{let g=String(p);m=g,f=g}let h=new Option(f,m);if(y){let g=u.get(y);g||(g=document.createElement("optgroup"),g.label=y,u.set(y,g),n.appendChild(g)),g.appendChild(h)}else n.add(h)}}function ft(n,t){let e=n;if(t in e&&typeof e[t]=="boolean")return e[t];let r=n.getAttribute(t);return r===null?!1:r===""||r.toLowerCase()==="true"||r.toLowerCase()===t}function an(n){return String(n).toUpperCase()}function cn(n){return String(n).trimEnd().trimStart()}function ln(n){return String(n).toLowerCase()}function un(n){let t=String(n);return t.charAt(0).toUpperCase()+t.slice(1)}function pn(n,t){let e=String(n),r=parseInt(t,10);return e.length>r?e.substring(0,r-3)+"...":e}function dn(n,t="USD"){let e=O();return new Intl.NumberFormat(e,{style:"currency",currency:t}).format(n)}function mn(n,t){let e=new Date(n),r=O();return t==="short"?e.toLocaleDateString(r):t==="long"?e.toLocaleDateString(r,{weekday:"long",year:"numeric",month:"long",day:"numeric"}):e.toISOString()}function fn(n){if(!n)return"n/a";let t=new Date(n),e=new Date;t.setHours(0,0,0,0),e.setHours(0,0,0,0);let r=e.getTime()-t.getTime(),o=Math.round(r/(1e3*60*60*24));return o===0?w("r-pipes:today"):o===1?w("r-pipes:yesterday"):w("r-pipes:daysAgo",{count:o})}function gn(n){if(n==null)return"n/a";let t=Number(n);return w("r-pipes:pieces",{count:t})}function hn(n,t=","){return Array.isArray(n)?n.join(t):n}function yn(n){return!Array.isArray(n)||n.length===0?"":n[0]}function vn(n){return!Array.isArray(n)||n.length===0?"":n[n.length-1]}function En(n){return typeof n!="object"||n===null?[]:Object.keys(n)}function xn(n,t){return n||t}function Tn(n,t,e){return n?t:e}function bn(){let n=new Map;return n.set("uppercase",an),n.set("lowercase",ln),n.set("capitalize",un),n.set("trim",cn),n.set("shorten",pn),n.set("currency",dn),n.set("date",mn),n.set("daysAgo",fn),n.set("pieces",gn),n.set("join",hn),n.set("first",yn),n.set("last",vn),n.set("keys",En),n.set("default",xn),n.set("ternary",Tn),{lookup(t){return n.get(t)??null},get(t){var e=n.get(t);if(!e)throw Error("Pipe '"+t+"' not found.");return e},has(t){return n.has(t)}}}var N=bn();function gt(n,t,e=N){return t.reduce((r,o)=>{let[s,...i]=o.split(":").map(a=>a.trim());if(!e.has(s))return`[Pipe ${s} not found]`;try{return e.get(s)(r,...i)}catch(a){return`[Pipe ${s}, value: ${n}, error: ${a}]`}},n)}var wn=N;function Cn(n,...t){let e=document.createElement("template"),r=Rn(n);e.innerHTML=r;let o=[],s=document.createTreeWalker(e.content,NodeFilter.SHOW_ALL),i;for(;i=s.nextNode();)if(i.nodeType===Node.ELEMENT_NODE){let a=i;Sn(a,t,o),customElements.get(a.tagName.toLowerCase())&&customElements.upgrade(a)}else if(i.nodeType===Node.TEXT_NODE){let a=i,c=a.textContent,l=ht(c,t);if(l)if(/€€\d+€€/.test(c)){let u=null,p=null,m=[];o.push({originalValue:c,setter(f){var y=l(f);u||(u=document.createComment(""),p=document.createComment(""),a.parentNode?.replaceChild(p,a),p.parentNode?.insertBefore(u,p)),m.forEach(b=>b.parentNode?.removeChild(b)),m=[];let h=document.createElement("template");h.innerHTML=y;let g=Array.from(h.content.childNodes),E=p.parentNode;g.forEach(b=>{E.insertBefore(b,p),m.push(b)})}})}else o.push({originalValue:c,setter(u){var p=l(u);a.textContent=p}})}return function(c){return o.forEach(l=>{l.setter(c)}),{fragment:e.content,update(l){o.forEach(d=>{d.setter(l)})}}}}function Rn(n){return n.raw.map((t,e)=>e<n.raw.length-1?`${t}\u20AC\u20AC${e}\u20AC\u20AC`:t).join("")}function Sn(n,t,e){let r=[];for(let i of Array.from(n.attributes)){var o=i.value;if(o=="")continue;let a=/€€(\d+)€€/,c=o.match(a);if(c){let l=parseInt(c[1],10),d=t[l];if(typeof d=="function"){r.push({setter(u){let p=d.bind(u);n.removeAttribute(i.name),n[i.name]=p}});continue}}var s=ht(o,t);s!=null&&r.push({originalValue:o,setter(l){let d=s(l)??o;i.name in n?n[i.name]=d:i.value=d}})}r.length>0&&e.push({originalValue:n.tagName,setter(i){r.forEach(a=>a.setter(i))}})}function Nn(n,t){return n.split(",").map(e=>{if(e=e.trim(),e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return e.slice(1,-1);if(!isNaN(Number(e)))return Number(e);if(e.includes(".")){let r=e.split("."),o=t;for(let s of r){if(o==null)return;o=o[s]}return o}return t[e]})}function ht(n,t){let e=/€€(\d+)€€|{{\s*([^|]+?)(?:\|([\w|]+))?\s*}}/g,r=0,o,s=[];for(;(o=e.exec(n))!==null;){var i=n.slice(r,o.index);if(i.length>0&&s.push(c=>i),o[1]){let c=parseInt(o[1],10),l=t[c];if(!l)continue;if(typeof l=="function"){let d=l;s.push(u=>{var p=d.apply(u);return p})}else l&&l.length>0&&s.push(d=>l)}else if(o[2]){let c=o[2].trim(),l=o[3]?o[3].trim():null,d=o[4]?o[4].split("|").map(u=>u.trim()):[];s.push(u=>{var p=u[c];if(typeof p=="function")if(l){let m=Nn(l,u);p=p.apply(u,m)}else p=p.call(u);return d.forEach(m=>{p=wn.get(m)(p)}),p})}r=e.lastIndex}if(s.length==0)return null;var a=n.slice(r);return a.length>0&&s.push(c=>a),c=>{var l="";return s.forEach(d=>{var u=d(c);l+=u}),l}}function yt(n){let t=n.split("|").map(s=>s.trim()),e=t[0],r=t.slice(1),o=e.match(/^(\w+)\s*\((.*)\)$/);if(o){let[,s,i]=o,a=i?i.split(",").map(c=>c.trim()):[];return{type:"function",fnName:s,fnArgs:a,pipes:r}}return{type:"path",path:e,pipes:r}}function Z(n,t){let r=t.replace(/\[(\d+)\]/g,".$1").split("."),o=n;for(let s of r)if(o&&typeof o=="object"&&s in o)o=o[s];else return;return o}function C(n,t,e,r=!1){let o=`[template error] ${t} (at ${e})`;if(n.onError&&n.onError(o),n.strict||r)throw new Error(o)}function Mn(n){return function(e,r,o=""){try{let s=Z(e,r);return s===void 0?(C(n,`Cannot resolve "${r}"`,o),""):s===null?"":Array.isArray(s)?s.length>0?JSON.stringify(s):"":typeof s=="object"?JSON.stringify(s):s}catch(s){let i=s instanceof Error?s.message:String(s);return C(n,`Exception resolving "${r}": ${i}`,o,!0),""}}}function vt(n,t,e,r,o){let s,i=r.pipeRegistry??N;if(n.type==="function"){let a=e?.[n.fnName];if(typeof a!="function")return C(r,`Function "${n.fnName}" not found`,o),"";let c=(n.fnArgs??[]).map(l=>l.startsWith('"')&&l.endsWith('"')||l.startsWith("'")&&l.endsWith("'")?l.slice(1,-1):isNaN(Number(l))?Z(t,l):Number(l));try{s=a(...c)}catch(l){let d=l instanceof Error?l.message:String(l);return C(r,`Error calling "${n.fnName}": ${d}`,o),""}}else{let a=Z(t,n.path);if(a===void 0)return C(r,`Cannot resolve "${n.path}"`,o),"";a===null?s="":typeof a=="object"?s=JSON.stringify(a):s=a}return n.pipes.length>0&&(s=gt(s,n.pipes,i)),s}var ve=new Map;function kn(n,t,e){if(n.nodeType!==Node.TEXT_NODE||!n.textContent?.includes("{{"))return;let r=n.textContent;if(!ve.has(r)){let a=r.split(/(\{\{.*?\}\})/).map(c=>{if(c.startsWith("{{")){let l=c.slice(2,-2).trim();return{parsed:yt(l),literal:""}}else return{parsed:null,literal:c}});ve.set(r,a)}let o=ve.get(r),s=`TextNode: "${r}"`;return(i,a)=>{let c=o.map(({parsed:l,literal:d})=>l?String(vt(l,i,a,e,s)):d).join("");n.textContent=c}}function Ln(n,t,e){if(n.nodeType!==Node.ELEMENT_NODE)return;let r=n,o=[],s=Array.from(r.attributes);for(let i of s){let a=i.value.match(/\{\{(.+?)\}\}/);if(a){let c=a[1].trim(),l=yt(c),d=i.name,u=`Attribute: ${d} on <${r.tagName.toLowerCase()}>`;o.push((p,m)=>{let f=vt(l,p,m,e,u);r.setAttribute(d,String(f))})}}if(o.length>0)return(i,a)=>o.forEach(c=>c(i,a))}function Et(n,t,e,r,o){if(n.nodeType!==Node.ELEMENT_NODE||!n.hasAttribute(r))return;let s=n,i=s.getAttribute(r),a=s.cloneNode(!0),c=document.createComment(`${r}: ${i}`),l=s.parentNode;l.insertBefore(c,s),s.remove();let d=null,u=null,p=null,m=null;return(f,y)=>{let h=t(f,i,`${r}="${i}"`),g=o(h);if(g&&!d){if(p&&m)d=p,u=m,p=null,m=null;else{let E=a.cloneNode(!0);E.removeAttribute(r),d=E,u=Ee(E,e)}u(f,y),l.insertBefore(d,c.nextSibling)}else g&&u&&u(f,y);!g&&d&&(d.remove(),p=d,m=u,d=null,u=null)}}function Pn(n,t,e){return Et(n,t,e,"if",r=>!!r)}function An(n,t,e){return Et(n,t,e,"unless",r=>!r)}function $n(n,t,e){if(n.nodeType!==Node.ELEMENT_NODE||!n.hasAttribute("loop"))return;let r=n,o=r.getAttribute("loop"),s=o.match(/(\w+)\s+in\s+(.+)/);if(!s){C(e,`Invalid loop syntax: "${o}"`,`Element: <${r.tagName.toLowerCase()}>`);return}let[,i,a]=s,c=r.cloneNode(!0);c.removeAttribute("loop");let l=r.parentNode,d=document.createComment(`loop: ${o}`);l.insertBefore(d,r),r.remove();let u=[];return(p,m)=>{let f=Z(p,a);if(f===void 0){C(e,`Cannot resolve "${a}"`,`Loop source: "${o}"`);return}if(!Array.isArray(f)){C(e,`"${a}" is not an array in loop: "${o}"`,`Element: <${c.tagName.toLowerCase()}>`);return}let y=Math.min(u.length,f.length);for(let h=0;h<y;h++)u[h].renderer({...p,[i]:f[h]},m);for(let h=u.length-1;h>=f.length;h--)u[h].element.remove();if(f.length>y){let h=document.createDocumentFragment(),g=[];for(let b=y;b<f.length;b++){let x=c.cloneNode(!0),M=Ee(x,e);M({...p,[i]:f[b]},m),h.appendChild(x),g.push({element:x,renderer:M})}let E=y>0?u[y-1].element:d;l.insertBefore(h,E.nextSibling),u=u.slice(0,y).concat(g)}else u.length=f.length}}var Fn=[$n,Pn,An],Hn=[kn,Ln];function Ee(n,t){let e=[],r=Mn(t);function o(a){for(let c of Fn){let l=c(a,r,t);if(l){e.push(l);return}}for(let c of Hn){let l=c(a,r,t);l&&e.push(l)}for(let c of Array.from(a.childNodes))o(c)}o(n);let s=null,i;return(a,c)=>{(s!==a||i!==c)&&(e.forEach(l=>l(a,c)),s=a,i=c)}}function In(n,t={strict:!1}){let o=new DOMParser().parseFromString(`<template><div>${n}</div></template>`,"text/html").querySelector("template").content.firstElementChild,s=Ee(o,t);return{content:o,render:s}}function Dn(n,t={}){let{delimiter:e=".",escapeChar:r="\\"}=t;if(!n||typeof n!="string")throw new Error("Notation must be a non-empty string");let o=[],s="",i=0,a=!1,c="";for(;i<n.length;){let l=n[i],d=n.substring(i,e.length+i),u=n[i+1],p=n.substring(i+1,e.length+i+1);if(l===r&&(p===e||u==="["||u==="]"))a?c+=u:s+=u,i+=2;else if(l==="["&&!a)s&&(o.push({type:"property",key:s}),s=""),a=!0,c="",i++;else if(l==="]"&&a){if(!/^\d+$/.test(c.trim()))throw new Error(`Invalid array index: [${c}]. Only numeric indices are supported.`);o.push({type:"index",key:c.trim()}),a=!1,c="",i++}else d===e&&!a?(s&&(o.push({type:"property",key:s}),s=""),i+=e.length):a?(c+=l,i++):(s+=l,i++)}if(a)throw new Error("Unclosed bracket in notation");if(s&&o.push({type:"property",key:s}),o.length===0)throw new Error("Invalid notation: must contain at least one property or index");return o}function Bn(n){return t=>{let e=t;for(let r of n){if(e==null)return;if(r.type==="property"){if(typeof e!="object")return;e=e[r.key]}else if(r.type==="index"){if(!Array.isArray(e))return;let o=parseInt(r.key,10);if(o<0||o>=e.length)return;e=e[o]}}return e}}function Y(n,t={}){let e=Dn(n,t);return Bn(e)}function Tt(n){let t=[],e=0;for(;e<n.length;){let r=n[e];if(/\s/.test(r)){e++;continue}if(r==="|"){for(e++;e<n.length&&/\s/.test(n[e]);)e++;let o="";for(;e<n.length&&!/[\s\(\)\[\]\{\}\|\+\-\*\/\=\;\,\.]/.test(n[e]);)o+=n[e],e++;t.push({type:3,value:o});continue}if(r==='"'||r==="'"){let o=r,s=o;for(e++;e<n.length&&n[e]!==o;)n[e]==="\\"&&e+1<n.length&&n[e+1]===o?(s+="\\"+o,e+=2):(s+=n[e],e++);e<n.length&&(s+=o,e++),t.push({type:0,value:s});continue}if(/[0-9]/.test(r)){let o="",s=!1;for(;e<n.length&&(/[0-9]/.test(n[e])||n[e]==="."&&!s);)n[e]==="."&&(s=!0),o+=n[e],e++;t.push({type:0,value:o});continue}if(/[a-zA-Z_$]/.test(r)){let o="",s=!1;for(;e<n.length;)if(/[a-zA-Z0-9_$.]/.test(n[e]))o+=n[e],e++;else if(n[e]==="["){let l=1;for(o+=n[e++];e<n.length&&l>0;)n[e]==="["&&l++,n[e]==="]"&&l--,o+=n[e++]}else break;let i=0;for(;e<n.length&&/\s/.test(n[e]);)i++,e++;if(e<n.length&&n[e]==="("){s=!0,o+="(",e++;let l=1;for(;e<n.length&&l>0;)n[e]==="("&&l++,n[e]===")"&&l--,o+=n[e++]}else e-=i;let a=t[t.length-1],c=n[e-o.length-1]==="."&&a?.type===0;t.push({type:s||c?1:2,value:o});continue}e++}return t}function Q(n){let t=[],e=n.indexOf("("),r=n.lastIndexOf(")");if(e===-1||r===-1||r<=e)throw new Error("Invalid function call syntax");let o=n.slice(e+1,r),s=0;for(;s<o.length;){let i=o[s];if(/\s/.test(i)){s++;continue}if(i==='"'||i==="'"){let a=i,c="";for(s++;s<o.length&&o[s]!==a;)o[s]==="\\"?(s++,s<o.length&&(c+=o[s])):c+=o[s],s++;if(s>=o.length)throw new Error("Unterminated string in arguments");s++,t.push({type:"string",value:c});continue}if(/[0-9]/.test(i)){let a="";for(;s<o.length&&/[0-9.]/.test(o[s]);)a+=o[s],s++;t.push({type:"number",value:parseFloat(a)});continue}if(/[a-zA-Z_]/.test(i)){let a="";for(;s<o.length&&/[a-zA-Z0-9_\.]/.test(o[s]);)a+=o[s],s++;t.push({type:"identifier",value:a});continue}if(i===","){s++;continue}throw new Error(`Unexpected character in arguments: ${i}`)}return t}function bt(n){let t=[],e=0;for(;e<n.length;){let r=n.indexOf("{{",e);if(r===-1){t.push(xt(n.slice(e)));break}r>e&&t.push(xt(n.slice(e,r)));let{value:o,endIndex:s,balanced:i}=_n(n,r);if(!i)throw new Error(`Unclosed mustache tag starting at index ${r}, template: ${n}`);t.push(On(o)),e=s}return t}function xt(n){return{type:"string",value:n}}function On(n){return{type:"mustache",value:n}}function _n(n,t){let e="{{",r="}}",o=t+e.length,s=1;for(;o<n.length&&s>0;)n.slice(o,o+e.length)===e?(s++,o+=e.length):n.slice(o,o+r.length)===r?(s--,o+=r.length):o++;let i=s===0,a=i?o:n.length;return{value:n.slice(t,a),endIndex:a,balanced:i}}function xe(n,t){let e=bt(n).map(r=>r.type==="string"?(o,s)=>r.value:jn(r,t));return(r,o)=>e.map(s=>s(r,o)).join("")}function jn(n,t){let e=Tt(n.value),r=Vn(e,n.value,t?.pipeRegistry);return qn(r)}function Vn(n,t,e){let r=null;e||(e=N);for(let o of n)switch(o.type){case 0:throw Error(`Constants not supported: ${o.value}`);case 2:{r={source:Y(o.value),pipes:[]};break}case 1:{r={source:Un(o.value),pipes:[]};break}case 3:{if(!r)throw Error(`Pipe '${o.value}' has no input expression in: ${t}`);if(!o.value||o.value==="")throw Error("Pipe symbol was provided, but no pipes. Template: "+t);let[s,...i]=o.value.split(":").map(c=>c.trim()),a=e.lookup(s);if(!a)throw Error(`Pipe not found: ${s}`);r.pipes.push(c=>a(c,i));break}}if(!r)throw Error(`Invalid expression: ${t}`);return r}function qn(n){return(t,e)=>{let r=n.source(t,e),o=n.pipes.reduce((s,i)=>i(s),r);return o!=null?o.toString():""}}function Un(n){let t=n.indexOf("(");if(t===-1)throw Error(`Invalid function: ${n}`);let r=Q(n).map(i=>{if(i.type==="number"||i.type==="string")return()=>i.value;if(i.type==="identifier")return a=>Y(i.value)(a);throw Error(`Unsupported argument type: ${i.type}`)}),o=n.substring(0,t),s=Y(o);return(i,a)=>{if(!a)throw Error(`Component context is required for calling '${o}'`);let c=s(a);if(typeof c!="function")throw Error(`Resolved '${o}' is not a function`);let l=r.map(d=>d(i));return c.apply(a,l)}}var Te=class{constructor(t,e,r,o){this.root=t;this.bindings=e;this.clickBindings=r;this.component=o}render(t){for(let e of this.bindings)e.type==="text"?e.func(t,e.node):e.func(t,e.element);for(let e of this.clickBindings){let r=this.getNodeAtPath(this.root,e.path),o=this.component?.[e.methodName];r instanceof HTMLElement&&typeof o=="function"&&(r.onclick=s=>{let i=e.argTokens.map(a=>{if(a.type==="number"||a.type==="string")return a.value;if(a.type==="identifier")return a.value==="event"?s:a.value.split(".").reduce((l,d)=>l?.[d],t)});o.apply(this.component,i)})}return this.root}getNodeAtPath(t,e){return e.reduce((r,o)=>r.childNodes[o],t)}};function oo(n){var t=new be(n);return t}var be=class{constructor(t){if(typeof t=="string"){let r=t.trim();if(r.startsWith("<template")){let o=document.createElement("div");o.innerHTML=r;let s=o.querySelector("template");if(!s)throw new Error("Could not find <template> in input string");this.template=s}else this.template=document.createElement("template"),this.template.innerHTML=r}else this.template=t;let e=this.getRootElement();this.bindings=this.collectBindings(e),this.clickBindings=this.collectClickBindings(e)}createInstance(t){let e=this.getRootElement().cloneNode(!0),r=t??{},o=this.bindings.map(s=>{let i=this.getNodeAtPath(e,s.path);return s.type==="text"?{type:"text",node:i,func:(a,c)=>s.func(a,r,c)}:{type:"attribute",element:i,name:s.name,func:(a,c)=>s.func(a,r,c)}});return new Te(e,o,this.clickBindings,t)}getRootElement(){let t=Array.from(this.template.content.childNodes).find(e=>e.nodeType===Node.ELEMENT_NODE);if(!(t instanceof HTMLElement))throw new Error("Template must contain a single root element");return t}collectBindings(t){let e=[],r=(o,s=[])=>{if(o.nodeType===Node.TEXT_NODE&&o.textContent&&o.textContent.match(/\{\{\s*(.*?)\s*\}\}/g)){let i=xe(o.textContent);e.push({type:"text",path:[...s],func:(a,c,l)=>{l.textContent=i(a,c)}})}if(o.nodeType===Node.ELEMENT_NODE){let i=o;if(i.tagName==="TEMPLATE")return;for(let a=0;a<i.attributes.length;a++){let c=i.attributes[a];if(c.value.match(/\{\{\s*(.*?)\s*\}\}/g)){let l=xe(c.value);e.push({type:"attribute",path:[...s],name:c.name,func:(d,u,p)=>{p.setAttribute(c.name,l(d,u))}})}}Array.from(o.childNodes).forEach((a,c)=>{r(a,[...s,c])})}};return r(t),e}collectClickBindings(t){let e=[],r=(o,s=[])=>{if(o.nodeType===Node.ELEMENT_NODE){let a=o.getAttribute("click");if(a?.trim()){let c=a.trim(),l=c.match(/^([a-zA-Z_$][\w$]*)\s*\((.*)\)$/);if(l){let d=l[1],u=Q(c);e.push({path:[...s],methodName:d,argTokens:u})}else e.push({path:[...s],methodName:c,argTokens:[]})}Array.from(o.childNodes).forEach((c,l)=>{r(c,[...s,l])})}};return r(t),e}getNodeAtPath(t,e){return e.reduce((r,o)=>r.childNodes[o],t)}};var we=class{constructor(t,e,r,o){this.dataMap=new Map;this.rowMap=new Map;this.table=t,this.template=e,this.IdColumn=r,this.component=o}render(t){this.clearRows();for(let e of t)this.renderRow(e)}clearRows(){this.table.tBodies[0].innerHTML="",this.dataMap.clear(),this.rowMap.clear()}renderRow(t){let e=t[this.IdColumn];if(e==null)throw new Error(`Missing IdColumn '${this.IdColumn}' in data`);let r=this.template.content.firstElementChild?.cloneNode(!0);if(!r)throw new Error("Template must have a <tr> as its first child");this.populateRow(r,t),this.attachEventHandlers(r,t),this.table.tBodies[0].appendChild(r),this.dataMap.set(e,t),this.rowMap.set(e,r)}populateRow(t,e){t.querySelectorAll("[data-field]").forEach(o=>{let s=o.dataset.field;s&&s in e&&(o.textContent=String(e[s]))})}attachEventHandlers(t,e){t.querySelectorAll("[onclick]").forEach(o=>{let s=o,i=s.getAttribute("onclick");if(!i)return;let a=i.match(/^(\w+)(\(([^)]*)\))?$/);if(!a)return;let[,c,,l]=a,d=l?l.split(",").map(u=>u.trim().replace(/^['"]|['"]$/g,"")):[];typeof this.component[c]=="function"&&(s.removeAttribute("onclick"),s.addEventListener("click",u=>{this.component[c](...d,e,u)}))})}update(t){let e=t[this.IdColumn];if(e==null)throw new Error(`Missing IdColumn '${this.IdColumn}' in update data`);let r=this.rowMap.get(e);r?(this.populateRow(r,t),this.attachEventHandlers(r,t),this.dataMap.set(e,t)):this.renderRow(t)}},ee=class extends CustomEvent{constructor(t){super("sortchange",{detail:t,bubbles:!0,composed:!0})}},Ce=class{constructor(t,e){this.sortColumns=[];this.table=t,this.component=e,this.setupListeners()}setupListeners(){this.table.tHead?.querySelectorAll("th[name]")?.forEach(e=>{e.addEventListener("click",()=>{let r=e.getAttribute("name");this.toggle(r),this.updateSortIndicators(),this.emit()})})}toggle(t){let e=this.sortColumns.findIndex(r=>r.column===t);e===-1?this.sortColumns.push({column:t,direction:"asc"}):this.sortColumns[e].direction==="asc"?this.sortColumns[e].direction="desc":this.sortColumns.splice(e,1)}emit(){let t=new ee(this.sortColumns);this.component.dispatchEvent(t)}updateSortIndicators(){this.table.tHead?.querySelectorAll("th[name]")?.forEach(e=>{let r=e,o=r.querySelector(".sort-indicator");o&&r.removeChild(o);let s=r.getAttribute("name"),i=this.sortColumns.find(a=>a.column===s);if(i){let a=document.createElement("span");a.className="sort-indicator",a.textContent=i.direction==="asc"?"\u2191":"\u2193",a.style.float="right",a.style.marginLeft="5px",r.appendChild(a)}r.style.position||(r.style.position="relative")})}getSortColumns(){return[...this.sortColumns]}clear(){this.sortColumns=[],this.updateSortIndicators(),this.emit()}};var Re=(o=>(o[o.Allow=0]="Allow",o[o.Deny=1]="Deny",o[o.Continue=2]="Continue",o[o.Stop=3]="Stop",o))(Re||{}),F=class extends Error{},H=class extends F{constructor(){super(...arguments);this.isGuard=!0}};var R=class n extends Event{constructor(e,r,o,s,i){super(n.NAME,i);this.route=e;this.urlSegments=r;this.routeData=o;this.routeTarget=s}static{this.NAME="rlx.navigateRoute"}};var _=new Map,te=new Map;function Se(n,t){if(Me(),_.has(n)){let r=v("Duplicate route target",{target:n??"default"});if(r)throw r;return}_.set(n,t);let e=te.get(n);e&&(te.delete(n),t(e))}function Ne(n){_.delete(n)}function zn(){te.clear(),_.clear()}function Wn(n){let t=_.get(n.routeTarget);t?t(n):te.set(n.routeTarget,n)}var wt=!1;function Me(){wt||(wt=!0,document.addEventListener(R.NAME,n=>{Wn(n)}))}var ke=class{constructor(t){this.paramName=t}isMatch(t){return!!/^\d+$/.test(t)}getValue(t){if(/^\d+$/.test(t)===!1)throw new Error(`Path is not a number, parameter name '${this.paramName}', value: '${t}'.`);return parseInt(t)}},Le=class{constructor(t){this.paramName=t}isMatch(t){return!0}getValue(t){return t}},Pe=class{constructor(t){this.value=t}isMatch(t){return t==this.value}getValue(t){return this.value}},Ae=class{constructor(t,e){this.route=t;this.segments=e}match(t){if(t.length!=this.segments.length)return null;let e=[];var r={};for(let o=0;o<t.length;o++){let s=t[o],i=this.segments[o];if(!i.isMatch(s))return null;if(i.paramName){let a=i.getValue(s);r[i.paramName]=a,e.push(a.toString())}else e.push(s)}return{route:this.route,params:r,urlSegments:e}}buildUrl(t){let e=[];for(let o=0;o<this.segments.length;o++){let s=this.segments[o];if(s.paramName){var r=t[s.paramName];if(!r)throw new Error(`Route "${this.route.name}" did not get value for parameter "${s.paramName} from the provided routeData: "${JSON.stringify(t)}".`);e.push(r.toString())}else e.push(s.getValue("").toString())}return{route:this.route,params:t,urlSegments:e}}};function $e(n,t,e){return t===""||t.indexOf("/")>=0?Rt(n,t||"/"):Ct(n,t,e)}function Ct(n,t,e){var r=n.find(i=>i.name===t);if(!r)return null;var o=St(r),s=o.buildUrl(e??{});return s}function Rt(n,t){let e=t.replace(/^\/|\/$/g,"").split("/"),r=Gn(n);for(let o=0;o<r.length;o++){let i=r[o].match(e);if(i)return i}return null}function Gn(n){let t=[];return n.forEach(e=>{var r=St(e);t.push(r)}),t}function St(n){var t=[];n.path.replace(/^\/|\/$/g,"").split("/").forEach(o=>{o.substring(0,1)==":"?t.push(new Le(o.substring(1))):o.substring(0,1)===";"?t.push(new ke(o.substring(1))):o.substring(0,1)==="{"||t.push(new Pe(o))});var r=new Ae(n,t);return r}var j=class extends HTMLElement{static get observedAttributes(){return["name","target","params"]}constructor(){super(),this.addEventListener("click",t=>this.handleClick(t))}handleClick(t){t.preventDefault();let e=this.getAttribute("name");if(!e)return;console.log("Calling printRoutes from RouteLink in relaxjs/components"),Fe();let r={};for(let a of Array.from(this.attributes))if(a.name.startsWith("param-")){let c=a.name.substring(6);r[c]=a.value}let o=this.getAttribute("params"),s;if(o)try{s=JSON.parse(o)}catch(a){let c=v("Failed to parse route params",{element:"r-link",params:o,cause:a});if(c)throw c}let i=this.getAttribute("target");s&&Object.assign(r,s);try{ne(e,{params:r,target:i||void 0})}catch(a){if(a instanceof S)throw a;let c=v("Navigation failed",{element:"r-link",route:e,params:r,target:i,cause:a});if(c)throw c}}connectedCallback(){this.hasAttribute("tabindex")||this.setAttribute("tabindex","0"),this.style.cursor="pointer",this.role="link"}disconnectedCallback(){this.removeEventListener("click",this.handleClick)}};var V=class extends HTMLElement{constructor(){super(...arguments);this.name=void 0}connectedCallback(){this.name=this.getAttribute("name")??void 0,this.hasAttribute("dialog")&&(this.dialog=document.createElement("dialog"),this.dialog.addEventListener("close",()=>{this.dialog.replaceChildren()}),this.appendChild(this.dialog)),Se(this.name,e=>this.onNavigate(e)),console.log("registered")}disconnectedCallback(){Ne(this.name)}onNavigate(e){console.log("got nav",e),this.loadComponent(e).catch(r=>{r instanceof S||(r=v("Route navigation failed",{route:e.route.name,routeTarget:e.routeTarget,cause:r})),r&&console.error(r)})}async loadComponent(e){let r=e.route.componentTagName??(e.route.component?customElements.getName(e.route.component):null);if(!r){let s=v("Failed to find component for route",{route:e.route.name,componentTagName:e.route.componentTagName,component:e.route.component?.name,routeData:e.routeData});if(s)throw s;return}await customElements.whenDefined(r);let o=document.createElement(r);await this.applyRouteData(o,e.routeData),this.dialog?(this.dialog.replaceChildren(o),this.dialog.open||this.dialog.showModal()):document.startViewTransition?document.startViewTransition(()=>this.replaceChildren(o)):this.replaceChildren(o)}close(){this.dialog?.close()}async applyRouteData(e,r){if("loadRoute"in e){let o=r??{error:"loadRoute function without mapped route data in the routes"};await e.loadRoute(o)}r&&(e.routeData=r)}};var q;function re(){return q===void 0&&(q=Jn()??"default"),q}function Jn(){let n=window.location.pathname;return n=="/index.html"?"default":n.endsWith(".html")?n.slice(1,-5):null}var U=[];function Fe(){console.log(U)}function Xn(n){console.log("defining routes1",n),Me(),customElements.get("r-route-target")||customElements.define("r-route-target",V),customElements.get("r-link")||customElements.define("r-link",j),console.log("defining routes",n),U.length=0,U.push(...n);var t=[];if(n.forEach(e=>{e.componentTagName&&!customElements.get(e.componentTagName)&&t.push(`Component with tagName '${e.componentTagName}' is not defined in customElements.`),e.component&&!customElements.getName(e.component)&&t.push(`Component '${e.component.name}' is not defined in customElements. Used in route '${JSON.stringify(e)}'.`),e.layout===""&&(console.log("should not use empty string layout.",e),e.layout=void 0)}),t.length>0)throw new Error(t.join(`
2
+ `))}function Kn(){if(re()==""){let s=window.location.pathname.match(/\/([^\/]+)\.html$/);s&&s[1]!==""?(console.log("setting current layut",s[1]),q=s[1]):(console.log("Setting default layout name"),q="default")}if(Zn())return;let n=window.location.pathname.replace(/^\/|\/$/g,"")||"/",t=Nt(n,{}),e=new URLSearchParams(window.location.search);if(e.size>0&&(t.params??={},e.forEach((o,s)=>{t.params[s]=o})),Mt(t))return;history.replaceState(t.urlSegments,"","/"+t.urlSegments.join("/"));let r=new R(t.route,t.urlSegments,t.params,t.route.target);document.dispatchEvent(r)}function ne(n,t){console.log("navigating to ",n,t);let e=Nt(n,t);if(Mt(e))return;let r=t?.target??e.route.target,o=e.urlSegments.join("/");window.location.pathname.replace(/^\/|\/$/g,"")!=o&&history.pushState(e.urlSegments,"","/"+e.urlSegments.join("/"));let i=new R(e.route,e.urlSegments,e.params,r);document.dispatchEvent(i)}function Nt(n,t){let e=t?.routes??U,r=t?.params,o=$e(e,n,r);if(!o){let s=Yn(n,r,e);throw console.error(s),new F(s)}if(!Qn(o))throw new H("Route guards stopped navigation for route "+n);return o}function Mt(n){n||console.error("Route result is null, cannot navigate to layout.");let t=(n.route.layout??"default").replace(/\.html?$/,"");if(t===re())return!1;if(console.log("Current layout: "+re(),"Wanted layout: "+t),window.location.hash)throw Error('A redirect failed, does the requsted layout exist? "'+t+'"?');console.log(`requires layout switch from ${re()} to ${t}`);let e={routeName:n.route.name,params:n.params||{}};sessionStorage.setItem("layoutNavigation",JSON.stringify(e));let r=t.indexOf(".htm")>-1?`/${t}#layout`:`/${t}.html#layout`;return console.log("redirecting to ",r),window.location.href=r,!0}function Zn(){try{let n=sessionStorage.getItem("layoutNavigation");if(!n)return!1;let t=JSON.parse(n);return sessionStorage.removeItem("layoutNavigation"),console.log("session store navigation ",t),ne(t.routeName,{params:t.params}),!0}catch(n){return sessionStorage.removeItem("layoutNavigation"),v("Failed to navigate from session storage",{cause:n}),!1}}function Yn(n,t,e){var r="";t?r+=Object.entries(t).map(([s,i])=>`${s}=${i}`).join(", "):r=".";var o=e.map(s=>` * Name: '${s.name}', path: '${s.path}', target: ${s.target??"default"}
3
3
  `);return`No route matched '${n}${r}'. Available routes:
4
- ${o}`}function Qn(n){if(!n||!n.route.guards||n.route.guards.length==0)return!0;for(let e=0;e<n.route.guards.length;e++){let r=n.route.guards[e];var t=r.check(n);if(t==0)return!0;if(t==3)return!1;if(t==1)throw new H(`Guard ${r.constructor.name} said 'Deny' for ${n.route.name}`)}return!0}function ts(n){return(t,e)=>function(){return er.resolve(n)}}function ns(n){return t=>{let e=n??{inject:[]};e.key?De.register(t,e):De.registerByType(t,e)}}var oe=class{constructor(t,e,r,o={},s,i){this.classConstructor=t;this.scope=e;this.inject=r;this.properties=o;this.key=s;this.instance=i}},He=class{constructor(){this.servicesByKey=new Map;this.servicesByClassName=new Map}register(t,e){this.validateRegistration(t,e);let r=new oe(t,e.scope??"global",e.inject,e.properties??{},e.key,e.instance);e.key&&this.servicesByKey.set(e.key,r),this.servicesByClassName.set(t.name,r)}registerByType(t,e){this.checkNameCollision(t),e&&this.validateRegistration(t,e);let r=new oe(t,e?.scope??"global",e?.inject??[],e?.properties,e?.key,e?.instance);e?.key&&this.servicesByKey.set(e.key,r),this.servicesByClassName.set(t.name,r)}checkNameCollision(t){let e=this.servicesByClassName.get(t.name);if(e&&e.classConstructor!==t){let r=g("Service name collision: different class registered with same name",{service:t.name});if(r)throw r}}validateRegistration(t,e){if(this.checkNameCollision(t),e.key){let r=this.servicesByKey.get(e.key);if(r&&r.classConstructor!==t){let o=g("Service key already registered to a different class",{key:e.key,existingClass:r.classConstructor.name,newClass:t.name});if(o)throw o}}if(e.instance&&e.inject.length>0){let r=g("Service has both instance and inject (inject will be ignored)",{service:t.name});if(r)throw r}}tryGet(t){return typeof t=="string"?this.servicesByKey.get(t):this.servicesByClassName.get(t.name)}get(t){let e=this.tryGet(t);if(!e){let r=typeof t=="string"?t:t.name,o=g(`Failed to resolve service '${r}'`,{service:r,registeredTypes:Array.from(this.servicesByClassName.keys()),registeredKeys:Array.from(this.servicesByKey.keys())});if(o)throw o}return e}};var Ie=class{constructor(t){this.serviceCollection=t;this.instances=new Map}resolve(t){let e=typeof t=="string"?t:t.name;if(this.instances.has(e))return this.instances.get(e);let r=this.serviceCollection.get(t);if(!r){let s=g(`Failed to resolve service '${e}'`,{service:e});if(s)throw s;return}if(r.instance){let s=r.instance;return this.injectFields(s,r),this.instances.set(e,s),s}let o=this.createInstance(r);return r.scope==="global"&&this.instances.set(e,o),this.injectFields(o,r),o}createInstance(t){let e=t.classConstructor,r=t.inject.map(o=>this.resolve(o));return new e(...r)}injectFields(t,e){for(let[r,o]of Object.entries(e.properties))t[r]=this.resolve(o)}},De=new He,er=new Ie(De);function os(n,t){let e=n.parentElement;for(;e;){if(e instanceof t)return e;e=e.parentElement}return null}var tr=Math.floor(new Date("2025-01-01T00:00:00Z").getTime()/1e3),kt=0,se=0;function nr(n){if(n<0||n>1048575)throw new Error("baseId must be between 0 and 1048575");let t=Math.floor(Date.now()/1e3);if(t===kt){if(se++,se>255)throw new Error("Too many IDs generated in one second")}else kt=t,se=0;let e=t-tr;if(e>1073741823)throw new Error("Timestamp exceeds allowed range (beyond 2045-01-01)");let r=BigInt(e),o=BigInt(se),s=BigInt(n);return(r<<BigInt(28)|o<<BigInt(20)|s).toString(36).toLowerCase()}var Lt=class extends Error{constructor(t){super(t.statusReason),this.message=t.statusReason,this.response=t}},E={bearerTokenName:"jwt"},Pt=fetch;function as(n){Pt=n??fetch}function cs(n){E={...E,...n},n.bearerTokenName===void 0&&(E.bearerTokenName="jwt")}async function ie(n,t){if(E.bearerTokenName){let o=localStorage.getItem(E.bearerTokenName);if(o&&t){let s=t?.headers?new Headers(t.headers):new Headers;s.get("Authorization")||s.set("Authorization","Bearer "+o),t.headers=s}}E.timeout&&!t?.signal&&(t??={},t.signal=AbortSignal.timeout(E.timeout)),E.baseUrl&&(n[0]!=="/"&&E.baseUrl[E.baseUrl.length-1]!=="/"?n=`${E.baseUrl}/${n}`:n=E.baseUrl+n);let e=await Pt(n,t);if(!e.ok)return{statusCode:e.status,statusReason:e.statusText,success:!1,contentType:e.headers.get("content-type"),body:await e.text(),charset:e.headers.get("charset"),as(){throw new Error("No response received")}};let r=null;return e.status!==204&&(r=await e.json()),{success:!0,statusCode:e.status,statusReason:e.statusText,contentType:e.headers.get("content-type"),body:r,charset:e.headers.get("charset"),as(){return r}}}async function ls(n,t,e){if(e?e.method="GET":e={method:"GET",headers:{"content-type":E.contentType??"application/json"}},t){let r="&";n.indexOf("?")===-1&&(r="?");for(let o in t){let s=t[o];n+=`${r}${o}=${s}`,r="&"}}return ie(n,e)}async function us(n,t,e){return e?(e.method="POST",e.body=t):e={method:"POST",body:t,headers:{"content-type":E.contentType??"application/json"}},ie(n,e)}async function ps(n,t,e){return e?(e.method="PUT",e.body=t):e={method:"PUT",body:t,headers:{"content-type":E.contentType??"application/json"}},ie(n,e)}async function ds(n,t){return t?t.method="DELETE":t={method:"DELETE",headers:{"content-type":E.contentType??"application/json"}},ie(n,t)}var Be=class extends Event{constructor(e,r,o){super(e,{bubbles:!0,...o});this.data=r}},At=class{constructor(t,e){this.url=t;this.options=e;this.target=this.resolveTarget(e?.target)}get connected(){return this.eventSource?.readyState===EventSource.OPEN}connect(){if(this.eventSource)return;let t=new EventSource(this.url,{withCredentials:this.options?.withCredentials??!1});if(this.eventSource=t,t.onopen=()=>{this.options?.onConnect?.(this)},t.onerror=e=>{this.options?.onError?.(this,e)},this.options?.eventTypes&&this.options.eventTypes.length>0)for(let e of this.options.eventTypes)t.addEventListener(e,r=>{this.dispatchEvent(e,r.data)});else t.onmessage=e=>{this.dispatchEvent("message",e.data)}}disconnect(){this.eventSource?.close(),this.eventSource=void 0}resolveTarget(t){if(!t)return document;if(typeof t=="string"){let e=document.querySelector(t);if(!e)throw new Error(`SSEClient: Target element not found: ${t}`);return e}return t}dispatchEvent(t,e){let r;if(e.length>0&&(e[0]==="{"||e[0]==="["||e[0]==='"'))try{r=JSON.parse(e)}catch{r=e}else r=e;let o=this.options?.eventFactory?this.options.eventFactory(t,r):new Be(t,r);this.target.dispatchEvent(o)}};function gs(n,t){let e=t;for(let r of n){if(e==null)return;e=e[r]}return e??void 0}export{be as Blueprint,me as BooleanConverter,Te as BoundNode,ns as ContainerService,ot as DateConverter,ct as DigitsValidation,Ge as FormValidator,Re as GuardResult,Lt as HttpError,ts as Inject,le as LinkedList,R as NavigateRouteEvent,J as Node,rt as NumberConverter,X as PageSelectedEvent,ue as Pager,at as RangeValidation,ye as RegisterValidator,S as RelaxError,it as RequiredValidation,F as RouteError,H as RouteGuardError,j as RouteLink,V as RouteTarget,At as SSEClient,Be as SSEDataEvent,He as ServiceCollection,Ie as ServiceContainer,ee as SortChangeEvent,we as TableRenderer,Ce as TableSorter,gt as applyPipes,sr as asyncHandler,un as capitalizePipe,zn as clearPendingNavigations,In as compileTemplate,cs as configure,er as container,oo as createBluePrint,tn as createConverterFromDataType,nn as createConverterFromInputType,bn as createPipeRegistry,dn as currencyPipe,mn as datePipe,fn as daysAgoPipe,xn as defaultPipe,N as defaultPipes,Xn as defineRoutes,ds as del,Ct as findRouteByName,Rt as findRouteByUrl,yn as firstPipe,nr as generateSequentialId,ls as get,Qt as getDataConverter,os as getParentComponent,Ar as getValidator,Cn as html,U as internalRoutes,hn as joinPipe,En as keysPipe,vn as lastPipe,ln as lowercasePipe,Mr as mapFormToClass,$e as matchRoute,ne as navigate,or as onError,gn as piecesPipe,us as post,Fe as printRoutes,ps as put,kr as readData,Se as registerRouteTarget,g as reportError,ie as request,gs as resolveValue,De as serviceCollection,as as setFetch,Hr as setFormData,pn as shortenPipe,Kn as startRouting,Tn as ternaryPipe,cn as trimPipe,Ne as unregisterRouteTarget,an as uppercasePipe};
4
+ ${o}`}function Qn(n){if(!n||!n.route.guards||n.route.guards.length==0)return!0;for(let e=0;e<n.route.guards.length;e++){let r=n.route.guards[e];var t=r.check(n);if(t==0)return!0;if(t==3)return!1;if(t==1)throw new H(`Guard ${r.constructor.name} said 'Deny' for ${n.route.name}`)}return!0}function ts(n){return(t,e)=>function(){return er.resolve(n)}}function ns(n){return t=>{let e=n??{inject:[]};e.key?De.register(t,e):De.registerByType(t,e)}}var oe=class{constructor(t,e,r,o={},s,i){this.classConstructor=t;this.scope=e;this.inject=r;this.properties=o;this.key=s;this.instance=i}},He=class{constructor(){this.servicesByKey=new Map;this.servicesByClassName=new Map}register(t,e){this.validateRegistration(t,e);let r=new oe(t,e.scope??"global",e.inject,e.properties??{},e.key,e.instance);e.key&&this.servicesByKey.set(e.key,r),this.servicesByClassName.set(t.name,r)}registerByType(t,e){this.checkNameCollision(t),e&&this.validateRegistration(t,e);let r=new oe(t,e?.scope??"global",e?.inject??[],e?.properties,e?.key,e?.instance);e?.key&&this.servicesByKey.set(e.key,r),this.servicesByClassName.set(t.name,r)}checkNameCollision(t){let e=this.servicesByClassName.get(t.name);if(e&&e.classConstructor!==t){let r=v("Service name collision: different class registered with same name",{service:t.name});if(r)throw r}}validateRegistration(t,e){if(this.checkNameCollision(t),e.key){let r=this.servicesByKey.get(e.key);if(r&&r.classConstructor!==t){let o=v("Service key already registered to a different class",{key:e.key,existingClass:r.classConstructor.name,newClass:t.name});if(o)throw o}}if(e.instance&&e.inject.length>0){let r=v("Service has both instance and inject (inject will be ignored)",{service:t.name});if(r)throw r}}tryGet(t){return typeof t=="string"?this.servicesByKey.get(t):this.servicesByClassName.get(t.name)}get(t){let e=this.tryGet(t);if(!e){let r=typeof t=="string"?t:t.name,o=v(`Failed to resolve service '${r}'`,{service:r,registeredTypes:Array.from(this.servicesByClassName.keys()),registeredKeys:Array.from(this.servicesByKey.keys())});if(o)throw o}return e}};var Ie=class{constructor(t){this.serviceCollection=t;this.instances=new Map}resolve(t){let e=typeof t=="string"?t:t.name;if(this.instances.has(e))return this.instances.get(e);let r=this.serviceCollection.get(t);if(!r){let s=v(`Failed to resolve service '${e}'`,{service:e});if(s)throw s;return}if(r.instance){let s=r.instance;return this.injectFields(s,r),this.instances.set(e,s),s}let o=this.createInstance(r);return r.scope==="global"&&this.instances.set(e,o),this.injectFields(o,r),o}createInstance(t){let e=t.classConstructor,r=t.inject.map(o=>this.resolve(o));return new e(...r)}injectFields(t,e){for(let[r,o]of Object.entries(e.properties))t[r]=this.resolve(o)}},De=new He,er=new Ie(De);function os(n,t){let e=n.parentElement;for(;e;){if(e instanceof t)return e;e=e.parentElement}return null}var tr=Math.floor(new Date("2025-01-01T00:00:00Z").getTime()/1e3),kt=0,se=0;function nr(n){if(n<0||n>1048575)throw new Error("baseId must be between 0 and 1048575");let t=Math.floor(Date.now()/1e3);if(t===kt){if(se++,se>255)throw new Error("Too many IDs generated in one second")}else kt=t,se=0;let e=t-tr;if(e>1073741823)throw new Error("Timestamp exceeds allowed range (beyond 2045-01-01)");let r=BigInt(e),o=BigInt(se),s=BigInt(n);return(r<<BigInt(28)|o<<BigInt(20)|s).toString(36).toLowerCase()}var Lt=class extends Error{constructor(t){super(t.statusReason),this.message=t.statusReason,this.response=t}},T={bearerTokenName:"jwt"},Pt=fetch;function as(n){Pt=n??fetch}function cs(n){T={...T,...n},n.bearerTokenName===void 0&&(T.bearerTokenName="jwt")}async function ie(n,t){if(T.bearerTokenName){let o=localStorage.getItem(T.bearerTokenName);if(o&&t){let s=t?.headers?new Headers(t.headers):new Headers;s.get("Authorization")||s.set("Authorization","Bearer "+o),t.headers=s}}T.timeout&&!t?.signal&&(t??={},t.signal=AbortSignal.timeout(T.timeout)),T.baseUrl&&(n[0]!=="/"&&T.baseUrl[T.baseUrl.length-1]!=="/"?n=`${T.baseUrl}/${n}`:n=T.baseUrl+n);let e=await Pt(n,t);if(!e.ok)return{statusCode:e.status,statusReason:e.statusText,success:!1,contentType:e.headers.get("content-type"),body:await e.text(),charset:e.headers.get("charset"),as(){throw new Error("No response received")}};let r=null;return e.status!==204&&(r=await e.json()),{success:!0,statusCode:e.status,statusReason:e.statusText,contentType:e.headers.get("content-type"),body:r,charset:e.headers.get("charset"),as(){return r}}}async function ls(n,t,e){if(e?e.method="GET":e={method:"GET",headers:{"content-type":T.contentType??"application/json"}},t){let r="&";n.indexOf("?")===-1&&(r="?");for(let o in t){let s=t[o];n+=`${r}${o}=${s}`,r="&"}}return ie(n,e)}async function us(n,t,e){return e?(e.method="POST",e.body=t):e={method:"POST",body:t,headers:{"content-type":T.contentType??"application/json"}},ie(n,e)}async function ps(n,t,e){return e?(e.method="PUT",e.body=t):e={method:"PUT",body:t,headers:{"content-type":T.contentType??"application/json"}},ie(n,e)}async function ds(n,t){return t?t.method="DELETE":t={method:"DELETE",headers:{"content-type":T.contentType??"application/json"}},ie(n,t)}var Be=class extends Event{constructor(e,r,o){super(e,{bubbles:!0,...o});this.data=r}},At=class{constructor(t,e){this.url=t;this.options=e;this.target=this.resolveTarget(e?.target)}get connected(){return this.eventSource?.readyState===EventSource.OPEN}connect(){if(this.eventSource)return;let t=new EventSource(this.url,{withCredentials:this.options?.withCredentials??!1});if(this.eventSource=t,t.onopen=()=>{this.options?.onConnect?.(this)},t.onerror=e=>{this.options?.onError?.(this,e)},this.options?.eventTypes&&this.options.eventTypes.length>0)for(let e of this.options.eventTypes)t.addEventListener(e,r=>{this.dispatchEvent(e,r.data)});else t.onmessage=e=>{this.dispatchEvent("message",e.data)}}disconnect(){this.eventSource?.close(),this.eventSource=void 0}resolveTarget(t){if(!t)return document;if(typeof t=="string"){let e=document.querySelector(t);if(!e)throw new Error(`SSEClient: Target element not found: ${t}`);return e}return t}dispatchEvent(t,e){let r;if(e.length>0&&(e[0]==="{"||e[0]==="["||e[0]==='"'))try{r=JSON.parse(e)}catch{r=e}else r=e;let o=this.options?.eventFactory?this.options.eventFactory(t,r):new Be(t,r);this.target.dispatchEvent(o)}};function gs(n,t){let e=t;for(let r of n){if(e==null)return;e=e[r]}return e??void 0}export{be as Blueprint,me as BooleanConverter,Te as BoundNode,ns as ContainerService,ot as DateConverter,ct as DigitsValidation,Ge as FormValidator,Re as GuardResult,Lt as HttpError,ts as Inject,le as LinkedList,R as NavigateRouteEvent,J as Node,rt as NumberConverter,X as PageSelectedEvent,ue as Pager,at as RangeValidation,ye as RegisterValidator,S as RelaxError,it as RequiredValidation,F as RouteError,H as RouteGuardError,j as RouteLink,V as RouteTarget,At as SSEClient,Be as SSEDataEvent,He as ServiceCollection,Ie as ServiceContainer,ee as SortChangeEvent,we as TableRenderer,Ce as TableSorter,gt as applyPipes,sr as asyncHandler,un as capitalizePipe,zn as clearPendingNavigations,In as compileTemplate,cs as configure,er as container,oo as createBluePrint,tn as createConverterFromDataType,nn as createConverterFromInputType,bn as createPipeRegistry,dn as currencyPipe,mn as datePipe,fn as daysAgoPipe,xn as defaultPipe,N as defaultPipes,Xn as defineRoutes,ds as del,Ct as findRouteByName,Rt as findRouteByUrl,yn as firstPipe,nr as generateSequentialId,ls as get,Qt as getDataConverter,os as getParentComponent,Ar as getValidator,Cn as html,U as internalRoutes,hn as joinPipe,En as keysPipe,vn as lastPipe,ln as lowercasePipe,Mr as mapFormToClass,$e as matchRoute,ne as navigate,or as onError,gn as piecesPipe,us as post,Fe as printRoutes,ps as put,kr as readData,Se as registerRouteTarget,v as reportError,ie as request,gs as resolveValue,De as serviceCollection,as as setFetch,Hr as setFormData,pn as shortenPipe,Kn as startRouting,Tn as ternaryPipe,cn as trimPipe,Ne as unregisterRouteTarget,an as uppercasePipe};
5
5
  //# sourceMappingURL=index.mjs.map