@relax.js/core 1.0.1 → 1.0.3
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/collections/DataLoader.d.ts +51 -0
- package/dist/collections/Index.d.ts +2 -0
- package/dist/collections/index.js +1 -1
- package/dist/collections/index.js.map +4 -4
- package/dist/collections/index.mjs +1 -1
- package/dist/collections/index.mjs.map +4 -4
- package/dist/index.d.ts +0 -2
- package/dist/index.js +3 -3
- package/dist/index.js.map +4 -4
- package/dist/index.mjs +3 -3
- package/dist/index.mjs.map +4 -4
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var je=Object.create;var B=Object.defineProperty;var _e=Object.getOwnPropertyDescriptor;var At=Object.getOwnPropertyNames;var $t=Object.getPrototypeOf,Ft=Object.prototype.hasOwnProperty;var Ve=(n,t)=>(t=Symbol[n])?t:Symbol.for("Symbol."+n),O=n=>{throw TypeError(n)};var Ht=(n,t,e)=>t in n?B(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var De=(n,t)=>B(n,"name",{value:t,configurable:!0});var qe=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 It=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of At(t))!Ft.call(n,o)&&o!==e&&B(n,o,{get:()=>t[o],enumerable:!(r=_e(t,o))||r.enumerable});return n};var P=(n,t,e)=>(e=n!=null?je($t(n)):{},It(t||!n||!n.__esModule?B(e,"default",{value:n,enumerable:!0}):e,n));var W=n=>[,,,je(n?.[Ve("metadata")]??null)],Ue=["class","method","getter","setter","accessor","field","value","get","set"],D=n=>n!==void 0&&typeof n!="function"?O("Function expected"):n,Dt=(n,t,e,r,o)=>({kind:Ue[n],name:t,metadata:r,addInitializer:s=>e._?O("Already initialized"):o.push(D(s||null))}),Bt=(n,t)=>Ht(t,Ve("metadata"),n[3]),G=(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},J=(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=Ue[u+5],g=u>3&&(n[f-1]=[]),b=n[f]||(n[f]=[]),h=u&&(!m&&!d&&(o=o.prototype),u<5&&(u>3||!m)&&_e(u<4?o:{get[e](){return Be(this,s)},set[e](y){return Oe(this,s,y)}},e));u?m&&u<4&&De(s,(u>2?"set ":u>1?"get ":"")+e):De(o,e);for(var T=r.length-1;T>=0;T--)l=Dt(u,e,c={},n[3],b),u&&(l.static=d,l.private=m,p=l.access={has:m?y=>Ot(o,y):y=>e in y},u^3&&(p.get=m?y=>(u^1?Be:jt)(y,o,u^4?s:h.get):y=>y[e]),u>2&&(p.set=m?(y,M)=>Oe(y,o,M,u^4?s:h.set):(y,M)=>y[e]=M)),a=(0,r[T])(u?u<4?m?s:h[x]:u>4?void 0:{get:h.get,set:h.set}:o,l),c._=1,u^4||a===void 0?D(a)&&(u>4?g.unshift(a):u?m?s=a:h[x]=a:o=a):typeof a!="object"||a===null?O("Object expected"):(D(i=a.get)&&(h.get=i),D(i=a.set)&&(h.set=i),D(i=a.init)&&g.unshift(i));return u||Bt(n,o),h&&B(o,e,h),m?u^4?s:h:o};var se=(n,t,e)=>t.has(n)||O("Cannot "+e),Ot=(n,t)=>Object(t)!==t?O('Cannot use the "in" operator on this value'):n.has(t),Be=(n,t,e)=>(se(n,t,"read from private field"),e?e.call(n):t.get(n));var Oe=(n,t,e,r)=>(se(n,t,"write to private field"),r?r.call(n,e):t.set(n,e),e),jt=(n,t,e)=>(se(n,t,"access private method"),e);var Je=k((lr,Ut)=>{Ut.exports={greeting:"Hello, {name}!",items:"{count, plural, one {# item} other {# items}}"}});var Xe=k((ur,zt)=>{zt.exports={today:"today",yesterday:"yesterday",daysAgo:"{count, plural, one {# day ago} other {# days ago}}",pieces:"{count, plural, =0 {none} one {one} other {# pcs}}"}});var Ke=k((pr,Wt)=>{Wt.exports={required:"This field is required.",range:"Number must be between {min} and {max}, was {actual}.",digits:"Please enter only digits."}});var Ze=k((dr,Gt)=>{Gt.exports={greeting:"Hej, {name}!",items:"{count, plural, one {# sak} other {# saker}}"}});var Ye=k((mr,Jt)=>{Jt.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 Qe=k((fr,Xt)=>{Xt.exports={required:"Detta f\xE4lt \xE4r obligatoriskt.",range:"Talet m\xE5ste vara mellan {min} och {max}, var {actual}.",digits:"Ange endast siffror."}});var N=class extends Error{constructor(e,r){super(e);this.context=r}},ie=null;function nr(n){ie=n}function v(n,t){let e=new N(n,t);if(ie){let r=!1;if(ie(e,{suppress(){r=!0}}),r)return null}return e}var j=class{constructor(t,e){this.value=t;this.removeCallback=e;this.next=null;this.prev=null}remove(){this.prev.next=this.next,this.next.prev=this.prev,this.removeCallback()}},ae=class{constructor(){this._length=0}addFirst(t){let e=new j(t,()=>this._length--);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=new j(t,()=>this._length--);this._first?(e.prev=this._last,this._last.next=e,this._last=e):(this._first=e,this._last=this._first),this._length++}removeFirst(){if(!this.first)throw new Error("The list is empty.");let t=this._first.value;return this._first=this._first.next,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._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}};function _t(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 ze=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=>{(e?.preventDefault||this.options?.submitCallback!=null)&&r.preventDefault(),this.options?.customChecks&&this.options.customChecks(t),this.validateForm()?this.options?.submitCallback?.apply(this):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=_t.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(){this.errorSummary&&(this.errorSummary.querySelector("ul").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 ce=new Map;function Vt(n){return ce.has(n)||ce.set(n,new Intl.PluralRules(n)),ce.get(n)}function We(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function qt(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(`=${We(String(a))}\\s*\\{([^{}]*)\\}`).exec(i);if(c)return c[1].replace(`{${o}}`,String(a)).replace("#",String(a));let p=Vt(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=We(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 Ge=qt;var yr=qe({"./locales/en/r-common.json":()=>Promise.resolve().then(()=>P(Je())),"./locales/en/r-pipes.json":()=>Promise.resolve().then(()=>P(Xe())),"./locales/en/r-validation.json":()=>Promise.resolve().then(()=>P(Ke())),"./locales/sv/r-common.json":()=>Promise.resolve().then(()=>P(Ze())),"./locales/sv/r-pipes.json":()=>Promise.resolve().then(()=>P(Ye())),"./locales/sv/r-validation.json":()=>Promise.resolve().then(()=>P(Qe()))});var Kt="en",le=Kt;var Zt={},et=null;function w(n,t){let[e,r]=n.includes(":")?n.split(":"):["r-common",n],o=Zt[e]?.[r];if(!o)return et&&et(r,e,le),n;try{return Ge(o,t,le)}catch{return n}}function _(){return le}function br(n,t,e={}){let r=n.querySelectorAll("input, select, textarea");if(r.forEach(o=>{if(!o.hasAttribute("name")||X(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=nn(o);i!==rt&&(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 Yt(n){let t=n.getAttribute("data-type");return t?en(t):n instanceof HTMLInputElement?tn(n.type):"checked"in n&&typeof n.checked=="boolean"?ue:e=>e}function wr(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?Yt(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 ue(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 tt(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 Qt(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 nt(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=Qt(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 en(n){switch(n){case"boolean":return ue;case"number":return tt;case"Date":return nt;case"string":return t=>!t||t==""?void 0:t;default:throw new Error(`Unknown data-type "${n}".`)}}function tn(n){switch(n){case"checkbox":return ue;case"number":return tt;case"date":case"datetime-local":return nt;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 X(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 rt=Symbol("skip");function nn(n){let t=n,e=t.type||n.getAttribute("type")||"";if(e==="checkbox")return X(n,"checked");if(e==="radio")return X(n,"checked")?t.value:rt;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&&X(n,"multiple"))return Array.from(t.selectedOptions).map(r=>r.value);if("value"in t)return t.value}var ut=new Map;function fe(n,t=[]){return function(e){ut.set(n,{validator:e,validInputTypes:t})}}function Nr(n){return ut.get(n)}var at,pe;at=[fe("required")];var L=class L{static create(t){return t==="required"?new L:null}validate(t,e){t.trim()===""&&e.addError(this.getMessage())}getMessage(){return w("r-validation:required")}};pe=W(null),L=J(pe,0,"RequiredValidation",at,L),G(pe,1,L);var ot=L,ct,de;ct=[fe("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})}};de=W(null),A=J(de,0,"RangeValidation",ct,A),G(de,1,A);var st=A,lt,me;lt=[fe("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")}};me=W(null),$=J(me,0,"DigitsValidation",lt,$),G(me,1,$);var it=$;function kr(n,t){n.querySelectorAll("[name]").forEach(r=>{let o=r.getAttribute("name");if(!o)return;if(o.endsWith("[]")){let i=o.slice(0,-2),a=pt(t,i);if(Array.isArray(a)){let c=r,l=c.type||r.getAttribute("type")||"";if(l==="checkbox"||l==="radio")c.checked=a.includes(c.value);else if("options"in c&&dt(r,"multiple"))a.forEach(p=>{let u=Array.from(c.options).find(d=>d.value===String(p));u&&(u.selected=!0)});else if("value"in c){let p=n.querySelectorAll(`[name="${o}"]`),u=Array.from(p).indexOf(r);u>=0&&u<a.length&&(c.value=String(a[u]))}}return}let s=pt(t,o);s!=null&&rn(r,s)})}function pt(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 rn(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&&dt(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 dt(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 on(n){return String(n).toUpperCase()}function sn(n){return String(n).trimEnd().trimStart()}function an(n){return String(n).toLowerCase()}function cn(n){let t=String(n);return t.charAt(0).toUpperCase()+t.slice(1)}function ln(n,t){let e=String(n),r=parseInt(t,10);return e.length>r?e.substring(0,r-3)+"...":e}function un(n,t="USD"){let e=_();return new Intl.NumberFormat(e,{style:"currency",currency:t}).format(n)}function pn(n,t){let e=new Date(n),r=_();return t==="short"?e.toLocaleDateString(r):t==="long"?e.toLocaleDateString(r,{weekday:"long",year:"numeric",month:"long",day:"numeric"}):e.toISOString()}function dn(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 mn(n){if(n==null)return"n/a";let t=Number(n);return w("r-pipes:pieces",{count:t})}function fn(n,t=","){return Array.isArray(n)?n.join(t):n}function gn(n){return!Array.isArray(n)||n.length===0?"":n[0]}function hn(n){return!Array.isArray(n)||n.length===0?"":n[n.length-1]}function yn(n){return typeof n!="object"||n===null?[]:Object.keys(n)}function vn(n,t){return n||t}function En(n,t,e){return n?t:e}function xn(){let n=new Map;return n.set("uppercase",on),n.set("lowercase",an),n.set("capitalize",cn),n.set("trim",sn),n.set("shorten",ln),n.set("currency",un),n.set("date",pn),n.set("daysAgo",dn),n.set("pieces",mn),n.set("join",fn),n.set("first",gn),n.set("last",hn),n.set("keys",yn),n.set("default",vn),n.set("ternary",En),{lookup(t){return n.get(t)},get(t){var e=n.get(t);if(!e)throw Error("Pipe '"+t+"' not found.");return e},has(t){return n.has(t)}}}var S=xn();function mt(n,t,e=S){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 Tn=S;function bn(n,...t){let e=document.createElement("template"),r=wn(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;Cn(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=ft(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 g=document.createElement("template");g.innerHTML=x;let b=Array.from(g.content.childNodes),h=d.parentNode;b.forEach(T=>{h.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 wn(n){return n.raw.map((t,e)=>e<n.raw.length-1?`${t}\u20AC\u20AC${e}\u20AC\u20AC`:t).join("")}function Cn(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=ft(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 Rn(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 ft(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=Rn(l,u);d=d.apply(u,m)}else d=d.call(u);return p.forEach(m=>{d=Tn[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 gt(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 K(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 Nn(n){return function(e,r,o=""){try{let s=K(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 ht(n,t,e,r,o){let s,i=r.pipeRegistry??S;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))?K(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=K(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=mt(s,n.pipes,i)),s}var ge=new Map;function Sn(n,t,e){if(n.nodeType!==Node.TEXT_NODE||!n.textContent?.includes("{{"))return;let r=n.textContent;if(!ge.has(r)){let a=r.split(/(\{\{.*?\}\})/).map(c=>{if(c.startsWith("{{")){let l=c.slice(2,-2).trim();return{parsed:gt(l),literal:""}}else return{parsed:null,literal:c}});ge.set(r,a)}let o=ge.get(r),s=`TextNode: "${r}"`;return(i,a)=>{let c=o.map(({parsed:l,literal:p})=>l?String(ht(l,i,a,e,s)):p).join("");n.textContent=c}}function Mn(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=gt(c),p=i.name,u=`Attribute: ${p} on <${r.tagName.toLowerCase()}>`;o.push((d,m)=>{let f=ht(l,d,m,e,u);r.setAttribute(p,String(f))})}}if(o.length>0)return(i,a)=>o.forEach(c=>c(i,a))}function yt(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 g=t(f,i,`${r}="${i}"`),b=o(g);if(b&&!p){if(d&&m)p=d,u=m,d=null,m=null;else{let h=a.cloneNode(!0);h.removeAttribute(r),p=h,u=he(h,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 kn(n,t,e){return yt(n,t,e,"if",r=>!!r)}function Pn(n,t,e){return yt(n,t,e,"unless",r=>!r)}function Ln(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=K(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 g=0;g<x;g++)u[g].renderer({...d,[i]:f[g]},m);for(let g=u.length-1;g>=f.length;g--)u[g].element.remove();if(f.length>x){let g=document.createDocumentFragment(),b=[];for(let T=x;T<f.length;T++){let y=c.cloneNode(!0),M=he(y,e);M({...d,[i]:f[T]},m),g.appendChild(y),b.push({element:y,renderer:M})}let h=x>0?u[x-1].element:p;l.insertBefore(g,h.nextSibling),u=u.slice(0,x).concat(b)}else u.length=f.length}}var An=[Ln,kn,Pn],$n=[Sn,Mn];function he(n,t){let e=[],r=Nn(t);function o(a){for(let c of An){let l=c(a,r,t);if(l){e.push(l);return}}for(let c of $n){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 Fn(n,t={strict:!1}){let o=new DOMParser().parseFromString(`<template><div>${n}</div></template>`,"text/html").querySelector("template").content.firstElementChild,s=he(o,t);return{content:o,render:s}}function Hn(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 In(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 Z(n,t={}){let e=Hn(n,t);return In(e)}function Et(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 Y(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 xt(n){let t=[],e=0;for(;e<n.length;){let r=n.indexOf("{{",e);if(r===-1){t.push(vt(n.slice(e)));break}r>e&&t.push(vt(n.slice(e,r)));let{value:o,endIndex:s,balanced:i}=Bn(n,r);if(!i)throw new Error(`Unclosed mustache tag starting at index ${r}, template: ${n}`);t.push(Dn(o)),e=s}return t}function vt(n){return{type:"string",value:n}}function Dn(n){return{type:"mustache",value:n}}function Bn(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 ye(n,t){let e=xt(n).map(r=>r.type==="string"?(o,s)=>r.value:On(r,t));return(r,o)=>e.map(s=>s(r,o)).join("")}function On(n,t){let e=Et(n.value),r=jn(e,n.value,t?.pipeRegistry);return _n(r)}function jn(n,t,e){let r=null;e||(e=S);for(let o of n)switch(o.type){case 0:throw Error(`Constants not supported: ${o.value}`);case 2:{r={source:Z(o.value),pipes:[]};break}case 1:{r={source:Vn(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 _n(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 Vn(n){let t=n.indexOf("(");if(t===-1)throw Error(`Invalid function: ${n}`);let r=Y(n).map(i=>{if(i.type==="number"||i.type==="string")return()=>i.value;if(i.type==="identifier")return a=>Z(i.value)(a);throw Error(`Unsupported argument type: ${i.type}`)}),o=n.substring(0,t),s=Z(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 ve=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 Yr(n){var t=new Ee(n);return t}var Ee=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=this.bindings.map(o=>{let s=this.getNodeAtPath(e,o.path);return o.type==="text"?{type:"text",node:s,func:(i,a)=>o.func(i,t,a)}:{type:"attribute",element:s,name:o.name,func:(i,a)=>o.func(i,t,a)}});return new ve(e,r,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=ye(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=ye(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=Y(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 xe=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)}},Q=class extends CustomEvent{constructor(t){super("sortchange",{detail:t,bubbles:!0,composed:!0})}},Te=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 Q(this.sortColumns);this.component.dispatchEvent(t)}updateSortIndicators(){this.table.tHead?.querySelectorAll("th[name]")?.forEach(e=>{let r=e.querySelector(".sort-indicator");r&&e.removeChild(r);let o=e.getAttribute("name"),s=this.sortColumns.find(i=>i.column===o);if(s){let i=document.createElement("span");i.className="sort-indicator",i.textContent=s.direction==="asc"?"\u2191":"\u2193",i.style.float="right",i.style.marginLeft="5px",e.appendChild(i)}e.style.position||(e.style.position="relative")})}getSortColumns(){return[...this.sortColumns]}clear(){this.sortColumns=[],this.updateSortIndicators(),this.emit()}};var be=(o=>(o[o.Allow=0]="Allow",o[o.Deny=1]="Deny",o[o.Continue=2]="Continue",o[o.Stop=3]="Stop",o))(be||{}),F=class extends Error{},H=class extends F{};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 V=new Map,ee=new Map;function we(n,t){if(Re(),V.has(n)){let r=v("Duplicate route target",{target:n??"default"});if(r)throw r;return}V.set(n,t);let e=ee.get(n);e&&(ee.delete(n),t(e))}function Ce(n){V.delete(n)}function qn(){ee.clear(),V.clear()}function Un(n){let t=V.get(n.routeTarget);t?t(n):ee.set(n.routeTarget,n)}var Tt=!1;function Re(){Tt||(Tt=!0,document.addEventListener(R.NAME,n=>{Un(n)}))}var Ne=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)}},Se=class{constructor(t){this.paramName=t}isMatch(t){return!0}getValue(t){return t}},Me=class{constructor(t){this.value=t}isMatch(t){return t==this.value}getValue(t){return this.value}},ke=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}}parseParameters(t){let e={};return this.segments.forEach(r=>{if(r.paramName){if(!r.isMatch(o))throw new Error(`Failed to convert parameter ${r.paramName}, or missing value: ${o}, route: ${this.route.name}.`);var o=t[r.paramName];if(!o)throw new Error(`Parameter ${r.paramName} was not provided, route: ${this.route.name}.`);var s=r.getValue(o);e[r.paramName]=s}}),e}};function Pe(n,t,e){return t===""||t.indexOf("/")>=0?wt(n,t||"/"):bt(n,t,e)}function bt(n,t,e){var r=n.find(i=>i.name===t);if(!r)return null;var o=Ct(r),s=o.buildUrl(e);return s}function wt(n,t){let e=t.replace(/^\/|\/$/g,"").split("/"),r=zn(n);for(let o=0;o<r.length;o++){let i=r[o].match(e);if(i)return i}return null}function zn(n){let t=[];return n.forEach(e=>{var r=Ct(e);t.push(r)}),t}function Ct(n){var t=[];n.path.replace(/^\/|\/$/g,"").split("/").forEach(o=>{o.substring(0,1)==":"?t.push(new Se(o.substring(1))):o.substring(0,1)===";"?t.push(new Ne(o.substring(1))):o.substring(0,1)==="{"||t.push(new Me(o))});var r=new ke(n,t);return r}var q=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"),Le();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{te(e,{params:r,target:i||void 0})}catch(a){if(a instanceof N)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 U=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)),we(this.name,e=>this.onNavigate(e)),console.log("registered")}disconnectedCallback(){Ce(this.name)}onNavigate(e){console.log("got nav",e),this.loadComponent(e).catch(r=>{r instanceof N||(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??customElements.getName(e.route.component);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 I=Wn()??"default";function Wn(){let n=window.location.pathname;return n=="/index.html"?"default":n.endsWith(".html")?n.slice(1,-5):null}var z=[];function Le(){console.log(z)}function Gn(n){console.log("defining routes1",n),Re(),customElements.get("r-route-target")||customElements.define("r-route-target",U),customElements.get("r-link")||customElements.define("r-link",q),console.log("defining routes",n),z.length=0,z.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 Jn(){let n=!1;if(I==""){let i=window.location.pathname.match(/\/([^\/]+)\.html$/);i&&i[1]!==""?(console.log("setting current layut",i[1]),I=i[1],n=!0):(console.log("Setting default layout name"),I="default")}if(Xn())return;let t=window.location.pathname.replace(/^\/|\/$/g,"")||"/",e=
|
|
1
|
+
var _e=Object.create;var B=Object.defineProperty;var Ve=Object.getOwnPropertyDescriptor;var At=Object.getOwnPropertyNames;var $t=Object.getPrototypeOf,Ft=Object.prototype.hasOwnProperty;var qe=(n,t)=>(t=Symbol[n])?t:Symbol.for("Symbol."+n),O=n=>{throw TypeError(n)};var Ht=(n,t,e)=>t in n?B(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var Be=(n,t)=>B(n,"name",{value:t,configurable:!0});var Ue=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 It=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of At(t))!Ft.call(n,o)&&o!==e&&B(n,o,{get:()=>t[o],enumerable:!(r=Ve(t,o))||r.enumerable});return n};var P=(n,t,e)=>(e=n!=null?_e($t(n)):{},It(t||!n||!n.__esModule?B(e,"default",{value:n,enumerable:!0}):e,n));var W=n=>[,,,_e(n?.[qe("metadata")]??null)],ze=["class","method","getter","setter","accessor","field","value","get","set"],D=n=>n!==void 0&&typeof n!="function"?O("Function expected"):n,Dt=(n,t,e,r,o)=>({kind:ze[n],name:t,metadata:r,addInitializer:s=>e._?O("Already initialized"):o.push(D(s||null))}),Bt=(n,t)=>Ht(t,qe("metadata"),n[3]),G=(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},J=(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=ze[u+5],g=u>3&&(n[f-1]=[]),b=n[f]||(n[f]=[]),h=u&&(!m&&!d&&(o=o.prototype),u<5&&(u>3||!m)&&Ve(u<4?o:{get[e](){return Oe(this,s)},set[e](y){return je(this,s,y)}},e));u?m&&u<4&&Be(s,(u>2?"set ":u>1?"get ":"")+e):Be(o,e);for(var T=r.length-1;T>=0;T--)l=Dt(u,e,c={},n[3],b),u&&(l.static=d,l.private=m,p=l.access={has:m?y=>Ot(o,y):y=>e in y},u^3&&(p.get=m?y=>(u^1?Oe:jt)(y,o,u^4?s:h.get):y=>y[e]),u>2&&(p.set=m?(y,M)=>je(y,o,M,u^4?s:h.set):(y,M)=>y[e]=M)),a=(0,r[T])(u?u<4?m?s:h[x]:u>4?void 0:{get:h.get,set:h.set}:o,l),c._=1,u^4||a===void 0?D(a)&&(u>4?g.unshift(a):u?m?s=a:h[x]=a:o=a):typeof a!="object"||a===null?O("Object expected"):(D(i=a.get)&&(h.get=i),D(i=a.set)&&(h.set=i),D(i=a.init)&&g.unshift(i));return u||Bt(n,o),h&&B(o,e,h),m?u^4?s:h:o};var ie=(n,t,e)=>t.has(n)||O("Cannot "+e),Ot=(n,t)=>Object(t)!==t?O('Cannot use the "in" operator on this value'):n.has(t),Oe=(n,t,e)=>(ie(n,t,"read from private field"),e?e.call(n):t.get(n));var je=(n,t,e,r)=>(ie(n,t,"write to private field"),r?r.call(n,e):t.set(n,e),e),jt=(n,t,e)=>(ie(n,t,"access private method"),e);var Xe=k((pr,Ut)=>{Ut.exports={greeting:"Hello, {name}!",items:"{count, plural, one {# item} other {# items}}"}});var Ke=k((dr,zt)=>{zt.exports={today:"today",yesterday:"yesterday",daysAgo:"{count, plural, one {# day ago} other {# days ago}}",pieces:"{count, plural, =0 {none} one {one} other {# pcs}}"}});var Ze=k((mr,Wt)=>{Wt.exports={required:"This field is required.",range:"Number must be between {min} and {max}, was {actual}.",digits:"Please enter only digits."}});var Ye=k((fr,Gt)=>{Gt.exports={greeting:"Hej, {name}!",items:"{count, plural, one {# sak} other {# saker}}"}});var Qe=k((gr,Jt)=>{Jt.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 et=k((hr,Xt)=>{Xt.exports={required:"Detta f\xE4lt \xE4r obligatoriskt.",range:"Talet m\xE5ste vara mellan {min} och {max}, var {actual}.",digits:"Ange endast siffror."}});var N=class extends Error{constructor(e,r){super(e);this.context=r}},ae=null;function nr(n){ae=n}function v(n,t){let e=new N(n,t);if(ae){let r=!1;if(ae(e,{suppress(){r=!0}}),r)return null}return e}var j=class{constructor(t,e){this.value=t;this.removeCallback=e;this.next=null;this.prev=null}remove(){this.prev.next=this.next,this.next.prev=this.prev,this.removeCallback()}},ce=class{constructor(){this._length=0}addFirst(t){let e=new j(t,()=>this._length--);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=new j(t,()=>this._length--);this._first?(e.prev=this._last,this._last.next=e,this._last=e):(this._first=e,this._last=this._first),this._length++}removeFirst(){if(!this.first)throw new Error("The list is empty.");let t=this._first.value;return this._first=this._first.next,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._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}},le=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 _t(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 We=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=>{(e?.preventDefault||this.options?.submitCallback!=null)&&r.preventDefault(),this.options?.customChecks&&this.options.customChecks(t),this.validateForm()?this.options?.submitCallback?.apply(this):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=_t.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(){this.errorSummary&&(this.errorSummary.querySelector("ul").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 ue=new Map;function Vt(n){return ue.has(n)||ue.set(n,new Intl.PluralRules(n)),ue.get(n)}function Ge(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function qt(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(`=${Ge(String(a))}\\s*\\{([^{}]*)\\}`).exec(i);if(c)return c[1].replace(`{${o}}`,String(a)).replace("#",String(a));let p=Vt(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=Ge(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 Je=qt;var Er=Ue({"./locales/en/r-common.json":()=>Promise.resolve().then(()=>P(Xe())),"./locales/en/r-pipes.json":()=>Promise.resolve().then(()=>P(Ke())),"./locales/en/r-validation.json":()=>Promise.resolve().then(()=>P(Ze())),"./locales/sv/r-common.json":()=>Promise.resolve().then(()=>P(Ye())),"./locales/sv/r-pipes.json":()=>Promise.resolve().then(()=>P(Qe())),"./locales/sv/r-validation.json":()=>Promise.resolve().then(()=>P(et()))});var Kt="en",pe=Kt;var Zt={},tt=null;function w(n,t){let[e,r]=n.includes(":")?n.split(":"):["r-common",n],o=Zt[e]?.[r];if(!o)return tt&&tt(r,e,pe),n;try{return Je(o,t,pe)}catch{return n}}function _(){return pe}function Cr(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=nn(o);i!==ot&&(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 Yt(n){let t=n.getAttribute("data-type");return t?en(t):n instanceof HTMLInputElement?tn(n.type):"checked"in n&&typeof n.checked=="boolean"?de:e=>e}function Rr(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?Yt(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 de(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 nt(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 Qt(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 rt(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=Qt(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 en(n){switch(n){case"boolean":return de;case"number":return nt;case"Date":return rt;case"string":return t=>!t||t==""?void 0:t;default:throw new Error(`Unknown data-type "${n}".`)}}function tn(n){switch(n){case"checkbox":return de;case"number":return nt;case"date":case"datetime-local":return rt;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 ot=Symbol("skip");function nn(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:ot;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 pt=new Map;function he(n,t=[]){return function(e){pt.set(n,{validator:e,validInputTypes:t})}}function Mr(n){return pt.get(n)}var ct,me;ct=[he("required")];var L=class L{static create(t){return t==="required"?new L:null}validate(t,e){t.trim()===""&&e.addError(this.getMessage())}getMessage(){return w("r-validation:required")}};me=W(null),L=J(me,0,"RequiredValidation",ct,L),G(me,1,L);var st=L,lt,fe;lt=[he("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})}};fe=W(null),A=J(fe,0,"RangeValidation",lt,A),G(fe,1,A);var it=A,ut,ge;ut=[he("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")}};ge=W(null),$=J(ge,0,"DigitsValidation",ut,$),G(ge,1,$);var at=$;function Lr(n,t){n.querySelectorAll("[name]").forEach(r=>{let o=r.getAttribute("name");if(!o)return;if(o.endsWith("[]")){let i=o.slice(0,-2),a=dt(t,i);if(Array.isArray(a)){let c=r,l=c.type||r.getAttribute("type")||"";if(l==="checkbox"||l==="radio")c.checked=a.includes(c.value);else if("options"in c&&mt(r,"multiple"))a.forEach(p=>{let u=Array.from(c.options).find(d=>d.value===String(p));u&&(u.selected=!0)});else if("value"in c){let p=n.querySelectorAll(`[name="${o}"]`),u=Array.from(p).indexOf(r);u>=0&&u<a.length&&(c.value=String(a[u]))}}return}let s=dt(t,o);s!=null&&rn(r,s)})}function dt(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 rn(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&&mt(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 mt(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 on(n){return String(n).toUpperCase()}function sn(n){return String(n).trimEnd().trimStart()}function an(n){return String(n).toLowerCase()}function cn(n){let t=String(n);return t.charAt(0).toUpperCase()+t.slice(1)}function ln(n,t){let e=String(n),r=parseInt(t,10);return e.length>r?e.substring(0,r-3)+"...":e}function un(n,t="USD"){let e=_();return new Intl.NumberFormat(e,{style:"currency",currency:t}).format(n)}function pn(n,t){let e=new Date(n),r=_();return t==="short"?e.toLocaleDateString(r):t==="long"?e.toLocaleDateString(r,{weekday:"long",year:"numeric",month:"long",day:"numeric"}):e.toISOString()}function dn(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 mn(n){if(n==null)return"n/a";let t=Number(n);return w("r-pipes:pieces",{count:t})}function fn(n,t=","){return Array.isArray(n)?n.join(t):n}function gn(n){return!Array.isArray(n)||n.length===0?"":n[0]}function hn(n){return!Array.isArray(n)||n.length===0?"":n[n.length-1]}function yn(n){return typeof n!="object"||n===null?[]:Object.keys(n)}function vn(n,t){return n||t}function En(n,t,e){return n?t:e}function xn(){let n=new Map;return n.set("uppercase",on),n.set("lowercase",an),n.set("capitalize",cn),n.set("trim",sn),n.set("shorten",ln),n.set("currency",un),n.set("date",pn),n.set("daysAgo",dn),n.set("pieces",mn),n.set("join",fn),n.set("first",gn),n.set("last",hn),n.set("keys",yn),n.set("default",vn),n.set("ternary",En),{lookup(t){return n.get(t)},get(t){var e=n.get(t);if(!e)throw Error("Pipe '"+t+"' not found.");return e},has(t){return n.has(t)}}}var S=xn();function ft(n,t,e=S){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 Tn=S;function bn(n,...t){let e=document.createElement("template"),r=wn(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;Cn(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=gt(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 g=document.createElement("template");g.innerHTML=x;let b=Array.from(g.content.childNodes),h=d.parentNode;b.forEach(T=>{h.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 wn(n){return n.raw.map((t,e)=>e<n.raw.length-1?`${t}\u20AC\u20AC${e}\u20AC\u20AC`:t).join("")}function Cn(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=gt(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 Rn(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 gt(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=Rn(l,u);d=d.apply(u,m)}else d=d.call(u);return p.forEach(m=>{d=Tn[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 ht(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 Nn(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 yt(n,t,e,r,o){let s,i=r.pipeRegistry??S;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=ft(s,n.pipes,i)),s}var ye=new Map;function Sn(n,t,e){if(n.nodeType!==Node.TEXT_NODE||!n.textContent?.includes("{{"))return;let r=n.textContent;if(!ye.has(r)){let a=r.split(/(\{\{.*?\}\})/).map(c=>{if(c.startsWith("{{")){let l=c.slice(2,-2).trim();return{parsed:ht(l),literal:""}}else return{parsed:null,literal:c}});ye.set(r,a)}let o=ye.get(r),s=`TextNode: "${r}"`;return(i,a)=>{let c=o.map(({parsed:l,literal:p})=>l?String(yt(l,i,a,e,s)):p).join("");n.textContent=c}}function Mn(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=ht(c),p=i.name,u=`Attribute: ${p} on <${r.tagName.toLowerCase()}>`;o.push((d,m)=>{let f=yt(l,d,m,e,u);r.setAttribute(p,String(f))})}}if(o.length>0)return(i,a)=>o.forEach(c=>c(i,a))}function vt(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 g=t(f,i,`${r}="${i}"`),b=o(g);if(b&&!p){if(d&&m)p=d,u=m,d=null,m=null;else{let h=a.cloneNode(!0);h.removeAttribute(r),p=h,u=ve(h,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 kn(n,t,e){return vt(n,t,e,"if",r=>!!r)}function Pn(n,t,e){return vt(n,t,e,"unless",r=>!r)}function Ln(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 g=0;g<x;g++)u[g].renderer({...d,[i]:f[g]},m);for(let g=u.length-1;g>=f.length;g--)u[g].element.remove();if(f.length>x){let g=document.createDocumentFragment(),b=[];for(let T=x;T<f.length;T++){let y=c.cloneNode(!0),M=ve(y,e);M({...d,[i]:f[T]},m),g.appendChild(y),b.push({element:y,renderer:M})}let h=x>0?u[x-1].element:p;l.insertBefore(g,h.nextSibling),u=u.slice(0,x).concat(b)}else u.length=f.length}}var An=[Ln,kn,Pn],$n=[Sn,Mn];function ve(n,t){let e=[],r=Nn(t);function o(a){for(let c of An){let l=c(a,r,t);if(l){e.push(l);return}}for(let c of $n){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 Fn(n,t={strict:!1}){let o=new DOMParser().parseFromString(`<template><div>${n}</div></template>`,"text/html").querySelector("template").content.firstElementChild,s=ve(o,t);return{content:o,render:s}}function Hn(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 In(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=Hn(n,t);return In(e)}function xt(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 Tt(n){let t=[],e=0;for(;e<n.length;){let r=n.indexOf("{{",e);if(r===-1){t.push(Et(n.slice(e)));break}r>e&&t.push(Et(n.slice(e,r)));let{value:o,endIndex:s,balanced:i}=Bn(n,r);if(!i)throw new Error(`Unclosed mustache tag starting at index ${r}, template: ${n}`);t.push(Dn(o)),e=s}return t}function Et(n){return{type:"string",value:n}}function Dn(n){return{type:"mustache",value:n}}function Bn(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 Ee(n,t){let e=Tt(n).map(r=>r.type==="string"?(o,s)=>r.value:On(r,t));return(r,o)=>e.map(s=>s(r,o)).join("")}function On(n,t){let e=xt(n.value),r=jn(e,n.value,t?.pipeRegistry);return _n(r)}function jn(n,t,e){let r=null;e||(e=S);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:Vn(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 _n(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 Vn(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 xe=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 eo(n){var t=new Te(n);return t}var Te=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=this.bindings.map(o=>{let s=this.getNodeAtPath(e,o.path);return o.type==="text"?{type:"text",node:s,func:(i,a)=>o.func(i,t,a)}:{type:"attribute",element:s,name:o.name,func:(i,a)=>o.func(i,t,a)}});return new xe(e,r,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=Ee(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=Ee(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 be=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})}},we=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.querySelector(".sort-indicator");r&&e.removeChild(r);let o=e.getAttribute("name"),s=this.sortColumns.find(i=>i.column===o);if(s){let i=document.createElement("span");i.className="sort-indicator",i.textContent=s.direction==="asc"?"\u2191":"\u2193",i.style.float="right",i.style.marginLeft="5px",e.appendChild(i)}e.style.position||(e.style.position="relative")})}getSortColumns(){return[...this.sortColumns]}clear(){this.sortColumns=[],this.updateSortIndicators(),this.emit()}};var Ce=(o=>(o[o.Allow=0]="Allow",o[o.Deny=1]="Deny",o[o.Continue=2]="Continue",o[o.Stop=3]="Stop",o))(Ce||{}),F=class extends Error{},H=class extends F{};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 V=new Map,te=new Map;function Re(n,t){if(Se(),V.has(n)){let r=v("Duplicate route target",{target:n??"default"});if(r)throw r;return}V.set(n,t);let e=te.get(n);e&&(te.delete(n),t(e))}function Ne(n){V.delete(n)}function qn(){te.clear(),V.clear()}function Un(n){let t=V.get(n.routeTarget);t?t(n):te.set(n.routeTarget,n)}var bt=!1;function Se(){bt||(bt=!0,document.addEventListener(R.NAME,n=>{Un(n)}))}var Me=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)}},ke=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}},Le=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}}parseParameters(t){let e={};return this.segments.forEach(r=>{if(r.paramName){if(!r.isMatch(o))throw new Error(`Failed to convert parameter ${r.paramName}, or missing value: ${o}, route: ${this.route.name}.`);var o=t[r.paramName];if(!o)throw new Error(`Parameter ${r.paramName} was not provided, route: ${this.route.name}.`);var s=r.getValue(o);e[r.paramName]=s}}),e}};function Ae(n,t,e){return t===""||t.indexOf("/")>=0?Ct(n,t||"/"):wt(n,t,e)}function wt(n,t,e){var r=n.find(i=>i.name===t);if(!r)return null;var o=Rt(r),s=o.buildUrl(e);return s}function Ct(n,t){let e=t.replace(/^\/|\/$/g,"").split("/"),r=zn(n);for(let o=0;o<r.length;o++){let i=r[o].match(e);if(i)return i}return null}function zn(n){let t=[];return n.forEach(e=>{var r=Rt(e);t.push(r)}),t}function Rt(n){var t=[];n.path.replace(/^\/|\/$/g,"").split("/").forEach(o=>{o.substring(0,1)==":"?t.push(new ke(o.substring(1))):o.substring(0,1)===";"?t.push(new Me(o.substring(1))):o.substring(0,1)==="{"||t.push(new Pe(o))});var r=new Le(n,t);return r}var q=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"),$e();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 N)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 U=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)),Re(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 N||(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??customElements.getName(e.route.component);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 I=Wn()??"default";function Wn(){let n=window.location.pathname;return n=="/index.html"?"default":n.endsWith(".html")?n.slice(1,-5):null}var z=[];function $e(){console.log(z)}function Gn(n){console.log("defining routes1",n),Se(),customElements.get("r-route-target")||customElements.define("r-route-target",U),customElements.get("r-link")||customElements.define("r-link",q),console.log("defining routes",n),z.length=0,z.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 Jn(){let n=!1;if(I==""){let i=window.location.pathname.match(/\/([^\/]+)\.html$/);i&&i[1]!==""?(console.log("setting current layut",i[1]),I=i[1],n=!0):(console.log("Setting default layout name"),I="default")}if(Xn())return;let t=window.location.pathname.replace(/^\/|\/$/g,"")||"/",e=Nt(t,{}),r=new URLSearchParams(window.location.search);if(r.size>0&&(e.params??={},r.forEach((s,i)=>{e.params[i]=s})),St(e))return;history.replaceState(e.urlSegments,"","/"+e.urlSegments.join("/"));let o=new R(e.route,e.urlSegments,e.params,e.route.target);document.dispatchEvent(o)}function ne(n,t){console.log("navigating to ",n,t);let e=Nt(n,t);if(St(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??z,r=t?.params,o=Ae(e,n,r);if(!o){let s=Kn(n,r,e);throw console.error(s),new F(s)}if(!Zn(o))throw new H("Route guards stopped navigation for route "+n);return o}function St(n){n||console.error("Route result is null, cannot navigate to layout.");let t=(n.route.layout??"default").replace(/\.html?$/,"");if(t===I)return!1;if(console.log("Current layout: "+I,"Wanted layout: "+t),window.location.hash)throw Error('A redirect failed, does the requsted layout exist? "'+t+'"?');console.log(`requires layout switch from ${I} 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 Xn(){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 Kn(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 Zn(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
|
|
4
|
+
${o}`}function Zn(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 Zo(n){return(t,e)=>{var r=Yn.resolve(n);return function(){return r}}}function Yo(n){return t=>{let e=n??{inject:[]};e.key?Ie.register(t,e):Ie.registerByType(t,e)}}var re=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}},Fe=class{constructor(){this.servicesByKey=new Map;this.servicesByClassName=new Map}register(t,e){this.validateRegistration(t,e);let r=new re(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 re(t,e?.scope,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 He=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)}},Ie=new Fe,Yn=new He(Ie);function es(n,t){let e=n.parentElement;for(;e;){if(e instanceof t)return e;e=e.parentElement}return null}var Qn=Math.floor(new Date("2025-01-01T00:00:00Z").getTime()/1e3),Mt=0,oe=0;function er(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===Mt){if(oe++,oe>255)throw new Error("Too many IDs generated in one second")}else Mt=t,oe=0;let e=t-Qn;if(e>1073741823)throw new Error("Timestamp exceeds allowed range (beyond 2045-01-01)");let r=BigInt(e),o=BigInt(oe),s=BigInt(n);return(r<<BigInt(28)|o<<BigInt(20)|s).toString(36).toLowerCase()}var kt=class extends Error{constructor(t){super(t.statusReason),this.message=t.statusReason,this.response=t}},E={bearerTokenName:"jwt"},Pt=fetch;function rs(n){Pt=n??fetch}function os(n){E={...E,...n},n.bearerTokenName===void 0&&(E.bearerTokenName="jwt")}async function se(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 ss(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 se(n,e)}async function is(n,t,e){return e?(e.method="POST",e.body=t):e={method:"POST",body:t,headers:{"content-type":E.contentType??"application/json"}},se(n,e)}async function as(n,t,e){return e?(e.method="PUT",e.body=t):e={method:"PUT",body:t,headers:{"content-type":E.contentType??"application/json"}},se(n,e)}async function cs(n,t){return t?t.method="DELETE":t={method:"DELETE",headers:{"content-type":E.contentType??"application/json"}},se(n,t)}var De=class extends Event{constructor(e,r,o){super(e,{bubbles:!0,...o});this.data=r}},Lt=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 De(t,r);this.target.dispatchEvent(o)}};function ps(n,t){let e=t;for(let r of n){if(e==null)return;e=e[r]}return e??void 0}export{Te as Blueprint,de as BooleanConverter,xe as BoundNode,Yo as ContainerService,rt as DateConverter,at as DigitsValidation,We as FormValidator,Ce as GuardResult,kt as HttpError,Zo as Inject,ce as LinkedList,R as NavigateRouteEvent,j as Node,nt as NumberConverter,X as PageSelectedEvent,le as Pager,it as RangeValidation,he as RegisterValidator,N as RelaxError,st as RequiredValidation,F as RouteError,H as RouteGuardError,q as RouteLink,U as RouteTarget,Lt as SSEClient,De as SSEDataEvent,Fe as ServiceCollection,He as ServiceContainer,ee as SortChangeEvent,be as TableRenderer,we as TableSorter,ft as applyPipes,cn as capitalizePipe,qn as clearPendingNavigations,Fn as compileTemplate,os as configure,Yn as container,eo as createBluePrint,en as createConverterFromDataType,tn as createConverterFromInputType,xn as createPipeRegistry,un as currencyPipe,pn as datePipe,dn as daysAgoPipe,vn as defaultPipe,S as defaultPipes,Gn as defineRoutes,cs as del,wt as findRouteByName,Ct as findRouteByUrl,gn as firstPipe,er as generateSequentialId,ss as get,Yt as getDataConverter,es as getParentComponent,Mr as getValidator,bn as html,z as internalRoutes,fn as joinPipe,yn as keysPipe,hn as lastPipe,an as lowercasePipe,Cr as mapFormToClass,Ae as matchRoute,ne as navigate,nr as onError,mn as piecesPipe,is as post,$e as printRoutes,as as put,Rr as readData,Re as registerRouteTarget,v as reportError,se as request,ps as resolveValue,Ie as serviceCollection,rs as setFetch,Lr as setFormData,ln as shortenPipe,Jn as startRouting,En as ternaryPipe,sn as trimPipe,Ne as unregisterRouteTarget,on as uppercasePipe};
|
|
5
5
|
//# sourceMappingURL=index.mjs.map
|