@aegis-framework/artemis 0.5.1 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/artemis.browser.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var c=Object.defineProperty;var m=(G,J)=>{for(var Q in J)c(G,Q,{get:J[Q],enumerable:!0,configurable:!0,set:(W)=>J[Q]=()=>W})};var x={};m(x,{Util:()=>d,Text:()=>p,SpaceAdapter:()=>y,Space:()=>k,SessionStorage:()=>S,RequestTimeoutError:()=>D,RequestError:()=>w,Request:()=>K,RemoteStorage:()=>q,Preload:()=>O,Platform:()=>P,LocalStorage:()=>L,IndexedDB:()=>C,Form:()=>T,FileSystem:()=>F,DebugLevel:()=>N,Debug:()=>h,DOM:()=>I,$_ready:()=>i,$_create:()=>s,$_:()=>u});var N;((Z)=>{Z[Z.NONE=0]="NONE";Z[Z.ERROR=1]="ERROR";Z[Z.WARNING=2]="WARNING";Z[Z.INFO=3]="INFO";Z[Z.DEBUG=4]="DEBUG";Z[Z.ALL=5]="ALL"})(N||={});class h{static _level=0;static get currentLevel(){return this._level}static level(G){if(typeof G==="number")this._level=G;return this._level}static setLevel(G){this._level=G}static isEnabled(G){return this._level>=G}static log(...G){if(this._level>=4)console.log(...G)}static debug(...G){if(this._level>=4)console.debug(...G)}static info(...G){if(this._level>=3)console.info(...G)}static error(...G){if(this._level>=1)console.error(...G)}static warning(...G){if(this._level>=2)console.warn(...G)}static warn(...G){this.warning(...G)}static table(G,J){if(this._level>=4)console.table(G,J)}static group(...G){if(this._level>=4)console.group(...G)}static groupCollapsed(...G){if(this._level>=4)console.groupCollapsed(...G)}static groupEnd(){if(this._level>=4)console.groupEnd()}static time(G){if(this._level>=4)console.time(G)}static timeLog(G,...J){if(this._level>=4)console.timeLog(G,...J)}static timeEnd(G){if(this._level>=4)console.timeEnd(G)}static trace(...G){if(this._level>=4)console.trace(...G)}static assert(G,...J){if(this._level>=1)console.assert(G,...J)}static clear(){if(this._level>=4)console.clear()}static count(G){if(this._level>=4)console.count(G)}static countReset(G){if(this._level>=4)console.countReset(G)}static dir(G){if(this._level>=4)console.dir(G)}static dirxml(G){if(this._level>=4)console.dirxml(G)}static format(G,...J){let Q=G,W=0;return Q=Q.replace(/%[sdioOcj%]/g,(X)=>{if(X==="%%")return"%";if(W>=J.length)return X;let Y=J[W++];switch(X){case"%s":return String(Y);case"%d":case"%i":return String(parseInt(String(Y),10));case"%o":case"%O":return JSON.stringify(Y);case"%c":return"";case"%j":return JSON.stringify(Y);default:return X}}),Q}}var j=new WeakMap;class I{collection;length;constructor(G){if(!G)this.collection=[];else if(typeof G==="string")this.collection=Array.from(document.querySelectorAll(G));else if(G instanceof NodeList)this.collection=Array.from(G);else if(G instanceof I)this.collection=G.collection;else if(G instanceof Element)this.collection=[G];else if(Array.isArray(G))this.collection=G;else this.collection=[];this.length=this.collection.length}hide(){return this.style("display","none")}show(G="block"){return this.style("display",G)}addClass(G){return this.collection.forEach((J)=>J.classList.add(G)),this}removeClass(G){return this.collection.forEach((J)=>{if(!G)J.className="";else J.classList.remove(G)}),this}toggleClass(G){let J=G.split(" ");return this.collection.forEach((Q)=>{J.forEach((W)=>Q.classList.toggle(W))}),this}hasClass(G){return this.collection.every((J)=>J.classList.contains(G))}value(G){if(G!==void 0){let Q=String(G);for(let W of this.collection)if(W instanceof HTMLInputElement||W instanceof HTMLTextAreaElement||W instanceof HTMLSelectElement||W instanceof HTMLButtonElement||W instanceof HTMLOptionElement)W.value=Q;return this}if(this.length===0)return;let J=this.collection[0];if(J instanceof HTMLInputElement||J instanceof HTMLTextAreaElement||J instanceof HTMLSelectElement||J instanceof HTMLButtonElement||J instanceof HTMLOptionElement)return J.value;return}focus(){if(this.length>0)this.collection[0].focus();return this}blur(){if(this.length>0)this.collection[0].blur();return this}click(G){return this.on("click",G)}keyup(G){return this.on("keyup",G)}keydown(G){return this.on("keydown",G)}submit(G){return this.on("submit",G)}change(G){return this.on("change",G)}scroll(G){return this.on("scroll",G)}input(G){return this.on("input",G)}on(G,J,Q){let W=G.split(" "),X=typeof J==="string",Y=X?Q:J,Z=X?J:null;if(!Y)return this;return this.collection.forEach(($)=>{W.forEach((B)=>{let _=X&&Z?(U)=>{let z=U.target;if(z instanceof Element){let H=z.closest(Z);if(H&&$.contains(H))Y.call(H,U)}}:Y;if(!j.has($))j.set($,new Map);let A=j.get($);if(!A.has(B))A.set(B,[]);A.get(B).push({selector:Z,originalCallback:Y,wrappedListener:_}),$.addEventListener(B,_,!1)})}),this}off(G,J,Q){return this.collection.forEach((W)=>{let X=j.get(W);if(!X)return;let Y=G?G.split(" "):Array.from(X.keys()),Z=typeof J==="string",$=Z?J:null,B=Z?Q:J;if(Y.forEach((_)=>{let A=X.get(_);if(!A)return;let U=A.filter((H)=>{if(B&&H.originalCallback!==B)return!1;if($!==void 0&&H.selector!==$)return!1;return!0});U.forEach((H)=>{W.removeEventListener(_,H.wrappedListener)});let z=A.filter((H)=>!U.includes(H));if(z.length>0)X.set(_,z);else X.delete(_)}),X.size===0)j.delete(W)}),this}trigger(G,J){let Q=G.split(" ");return this.collection.forEach((W)=>{Q.forEach((X)=>{let Y=J!==void 0?new CustomEvent(X,{detail:J,bubbles:!0,cancelable:!0}):new Event(X,{bubbles:!0,cancelable:!0});W.dispatchEvent(Y)})}),this}filter(G){return new I(this.collection.filter((J)=>J.matches(G)))}exists(){return this.length>0}data(G,J){if(J!==void 0)return this.collection.forEach((Q)=>Q.dataset[G]=J),this;return this.length>0?this.collection[0].dataset[G]:void 0}removeData(G){return this.collection.forEach((J)=>delete J.dataset[G]),this}text(G){if(G!==void 0){let J=String(G);for(let Q of this.collection)Q.textContent=J;return this}if(this.length===0)return;return this.collection[0].textContent||""}html(G){if(G!==void 0){let J=String(G);for(let Q of this.collection)Q.innerHTML=J;return this}if(this.length===0)return;return this.collection[0].innerHTML}append(G){return this.collection.forEach((J,Q)=>{if(typeof G==="string")J.insertAdjacentHTML("beforeend",G);else{let W=Q===0?G:G.cloneNode(!0);J.appendChild(W)}}),this}prepend(G){return this.collection.forEach((J,Q)=>{if(typeof G==="string")J.insertAdjacentHTML("afterbegin",G);else{let W=Q===0?G:G.cloneNode(!0);J.prepend(W)}}),this}each(G){return this.collection.forEach((J,Q)=>G(J,Q)),this}get(G){return this.collection[G]}first(){return new I(this.collection[0]??null)}last(){return new I(this.collection[this.collection.length-1]??null)}eq(G){let J=G<0?this.collection.length+G:G;return new I(this.collection[J]??null)}isVisible(){return this.collection.some((G)=>G.style.display!=="none"&&G.offsetWidth>0&&G.offsetHeight>0)}parent(){let G=new Set;return this.collection.forEach((J)=>{if(J.parentElement)G.add(J.parentElement)}),new I(Array.from(G))}parents(){let G=new Set;return this.collection.forEach((J)=>{let Q=J.parentElement;while(Q)G.add(Q),Q=Q.parentElement}),new I(Array.from(G))}find(G){let J=new Set;for(let Q of this.collection){let W=Q.querySelectorAll(G);for(let X of W)J.add(X)}return new I(Array.from(J))}offset(){if(this.length===0)return;let G=this.collection[0].getBoundingClientRect();return{top:G.top+window.scrollY,left:G.left+window.scrollX}}width(){if(this.length===0)return 0;return this.collection[0].getBoundingClientRect().width}height(){if(this.length===0)return 0;return this.collection[0].getBoundingClientRect().height}closest(G){let J=new Set;return this.collection.forEach((Q)=>{let W=Q.closest(G);if(W)J.add(W)}),new I(Array.from(J))}attribute(G,J){if(J!==void 0)return this.collection.forEach((Q)=>Q.setAttribute(G,String(J))),this;return this.length>0?this.collection[0].getAttribute(G):void 0}removeAttribute(G){return this.collection.forEach((J)=>J.removeAttribute(G)),this}hasAttribute(G){return this.collection.every((J)=>J.hasAttribute(G))}after(G){return this.collection.forEach((J)=>J.insertAdjacentHTML("afterend",G)),this}before(G){return this.collection.forEach((J)=>J.insertAdjacentHTML("beforebegin",G)),this}style(G,J){if(typeof G==="string"&&J===void 0)return this.length>0?this.collection[0].style.getPropertyValue(G):"";return this.collection.forEach((Q)=>{if(typeof G==="string"&&J!==void 0)Q.style.setProperty(G,J);else if(typeof G==="object")Object.entries(G).forEach(([W,X])=>{Q.style.setProperty(W,String(X))})}),this}animate(G,J){return this.collection.forEach((Q)=>Q.animate(G,J)),this}fadeIn(G=400,J){return this.collection.forEach((Q,W)=>{if(getComputedStyle(Q).display==="none")Q.style.display="block";let X=Q.animate([{opacity:0},{opacity:1}],{duration:G,fill:"forwards"});if(J&&W===this.collection.length-1)X.onfinish=()=>J()}),this}fadeOut(G=400,J){return this.collection.forEach((Q,W)=>{let X=Q.animate([{opacity:1},{opacity:0}],{duration:G,fill:"forwards"});X.onfinish=()=>{if(Q.style.display="none",J&&W===this.collection.length-1)J()}}),this}matches(G){if(this.length===0)return!1;return this.collection.every((J)=>J.matches(G))}remove(){return this.collection.forEach((G)=>G.remove()),this}empty(){return this.collection.forEach((G)=>{G.innerHTML=""}),this}clone(G=!0){let J=this.collection.map((Q)=>Q.cloneNode(G));return new I(J)}replaceWith(G){for(let J=this.collection.length-1;J>=0;J--){let Q=this.collection[J];if(typeof G==="string")Q.outerHTML=G;else{let W=J===0?G:G.cloneNode(!0);Q.replaceWith(W)}}return this}reset(){return this.collection.forEach((G)=>{if(G instanceof HTMLFormElement)G.reset()}),this}property(G,J){if(J!==void 0)return this.collection.forEach((Q)=>{Q[G]=J}),this;if(this.length===0)return;return this.collection[0][G]}siblings(){let G=new Set;return this.collection.forEach((J)=>{if(J.parentElement)Array.from(J.parentElement.children).forEach((Q)=>{if(Q!==J&&Q instanceof HTMLElement)G.add(Q)})}),new I(Array.from(G))}next(){let G=new Set;return this.collection.forEach((J)=>{let Q=J.nextElementSibling;if(Q instanceof HTMLElement)G.add(Q)}),new I(Array.from(G))}prev(){let G=new Set;return this.collection.forEach((J)=>{let Q=J.previousElementSibling;if(Q instanceof HTMLElement)G.add(Q)}),new I(Array.from(G))}children(){let G=new Set;return this.collection.forEach((J)=>{Array.from(J.children).forEach((Q)=>{if(Q instanceof HTMLElement)G.add(Q)})}),new I(Array.from(G))}scrollIntoView(G){if(this.length>0)this.collection[0].scrollIntoView(G);return this}}function u(G){return new I(G)}function i(G){if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",G);else G()}function s(G,J){let Q=document.createElement(G);if(J)Object.entries(J).forEach(([W,X])=>{Q.setAttribute(W,X)});return new I(Q)}class w extends Error{status;statusText;response;constructor(G,J){super(J||`Request failed: ${G.status} ${G.statusText}`);this.name="RequestError",this.status=G.status,this.statusText=G.statusText,this.response=G}}class D extends Error{constructor(G,J){super(`Request to "${G}" timed out after ${J}ms`);this.name="RequestTimeoutError"}}class K{static serialize(G,J){if(G instanceof FormData){let W=new URLSearchParams;return G.forEach((X,Y)=>{if(typeof X==="string")W.append(Y,X)}),W.toString()}let Q=[];for(let[W,X]of Object.entries(G)){if(X===void 0||X===null)continue;let Y=J?`${J}[${W}]`:W;if(Array.isArray(X))X.forEach((Z,$)=>{if(typeof Z==="object"&&Z!==null)Q.push(K.serialize(Z,`${Y}[${$}]`));else Q.push(`${encodeURIComponent(Y)}[]=${encodeURIComponent(String(Z))}`)});else if(typeof X==="object")Q.push(K.serialize(X,Y));else Q.push(`${encodeURIComponent(Y)}=${encodeURIComponent(String(X))}`)}return Q.filter(Boolean).join("&")}static parseUrl(G){try{return new URL(G)}catch{try{return new URL(G,window.location.origin)}catch(J){throw Error(`Invalid URL: "${G}"`)}}}static createTimeoutController(G,J){let Q=new AbortController;if(!G)return{controller:Q};let W=setTimeout(()=>{Q.abort(new D(J,G))},G);return{controller:Q,timeoutId:W}}static async send(G,J,Q={},W={}){let{timeout:X,...Y}=W,Z=K.parseUrl(J),$=void 0,B={...Y.headers};if(["GET","DELETE","HEAD"].includes(G.toUpperCase())){if(Q&&typeof Q==="object"&&!(Q instanceof FormData))Object.entries(Q).forEach(([U,z])=>{if(z!==void 0&&z!==null)Z.searchParams.append(U,String(z))})}else{let U=B["Content-Type"]||B["content-type"];if(Q instanceof FormData)delete B["Content-Type"],delete B["content-type"],$=Q;else if(U==="application/json")$=JSON.stringify(Q);else{if(!U)B["Content-Type"]="application/x-www-form-urlencoded";let z=new URLSearchParams;Object.entries(Q).forEach(([H,M])=>z.append(H,String(M))),$=z}}let{controller:_,timeoutId:A}=K.createTimeoutController(X,J);try{return await fetch(Z.toString(),{...Y,method:G,headers:B,body:$,signal:_.signal})}finally{if(A)clearTimeout(A)}}static get(G,J={},Q={}){return K.send("GET",G,J,Q)}static post(G,J,Q={}){return K.send("POST",G,J,Q)}static put(G,J,Q={}){return K.send("PUT",G,J,Q)}static patch(G,J,Q={}){return K.send("PATCH",G,J,Q)}static delete(G,J={},Q={}){return K.send("DELETE",G,J,Q)}static head(G,J={},Q={}){return K.send("HEAD",G,J,Q)}static async json(G,J={},Q={}){let W=await K.get(G,J,Q);if(!W.ok)throw new w(W);return W.json()}static async postJson(G,J,Q={}){let W={...Q.headers,"Content-Type":"application/json"},X=await K.post(G,J,{...Q,headers:W});if(!X.ok)throw new w(X);return X.json()}static async blob(G,J={},Q={}){let W=await K.get(G,J,Q);if(!W.ok)throw new w(W);return W.blob()}static async text(G,J={},Q={}){let W=await K.get(G,J,Q);if(!W.ok)throw new w(W);return W.text()}static async arrayBuffer(G,J={},Q={}){let W=await K.get(G,J,Q);if(!W.ok)throw new w(W);return W.arrayBuffer()}static async exists(G,J={}){try{return(await K.head(G,{},J)).ok}catch{return!1}}}class F{static async readRemote(G,J="base64",Q={}){let W=await K.blob(G,{},Q);return F.read(W,J)}static async read(G,J="text"){switch(J){case"text":return G.text();case"buffer":return G.arrayBuffer();case"base64":return new Promise((Q,W)=>{let X=new FileReader;X.onload=()=>Q(X.result),X.onerror=()=>W(X.error),X.readAsDataURL(G)});case"binary":return new Promise((Q,W)=>{let X=new FileReader;X.onload=()=>{let Y=X.result,Z="",$=new Uint8Array(Y),B=$.byteLength;for(let _=0;_<B;_++)Z+=String.fromCharCode($[_]);Q(Z)},X.onerror=()=>W(X.error),X.readAsArrayBuffer(G)});default:throw Error(`FileSystem.read: Unknown type ${J}`)}}static create(G,J,Q="text/plain"){return new File([J],G,{type:Q})}static download(G,J){let Q=URL.createObjectURL(G),W=document.createElement("a");W.href=Q;let X;if(J!==void 0&&J!=="")X=J;else if(G instanceof File&&G.name!=="")X=G.name;else X="download";W.download=X,document.body.appendChild(W),W.click(),document.body.removeChild(W),URL.revokeObjectURL(Q)}static extension(G,J=!1){let Q=G.split(".");if(Q.length===1||Q[0]===""&&Q.length===2&&!J)return"";return Q.pop()?.toLowerCase()??""}static isImage(G){let J=F.extension(G);return new Set(["jpg","jpeg","png","gif","svg","webp","avif","bmp","ico","tiff","heic"]).has(J)}static isVideo(G){let J=F.extension(G);return new Set(["mp4","webm","ogg","mov","avi","mkv","m4v"]).has(J)}static isAudio(G){let J=F.extension(G);return new Set(["mp3","wav","ogg","flac","aac","m4a","wma"]).has(J)}static humanSize(G,J=2){if(G===0)return"0 Bytes";let Q=1024,W=["Bytes","KB","MB","GB","TB","PB"],X=Math.floor(Math.log(G)/Math.log(Q));return parseFloat((G/Math.pow(Q,X)).toFixed(J))+" "+W[X]}}class T{static fill(G,J){let Q=document.querySelector(`form[data-form='${G}']`);if(!Q){console.warn(`Form [data-form='${G}'] not found.`);return}Object.entries(J).forEach(([W,X])=>{let Y=Q.querySelectorAll(`[name='${W}']`);if(Y.length===0)return;let $=Y[0].type,B=String(X);switch($){case"radio":Y.forEach((_)=>{let A=_;if(A.value===B)A.checked=!0});break;case"checkbox":if(Y.length===1)Y[0].checked=!!X;else if(Array.isArray(X)){let _=X.map(String);Y.forEach((A)=>{let U=A;U.checked=_.includes(U.value)})}break;case"file":break;default:Y[0].value=B;break}})}static values(G,J={}){let{parseNumbers:Q=!0,parseBooleans:W=!0}=J,X=document.querySelector(`form[data-form='${G}']`);if(!X)return console.warn(`Form [data-form='${G}'] not found.`),{};let Y=new FormData(X),Z={},$=Array.from(new Set(Y.keys()));for(let B of $){let _=Y.getAll(B),A=X.querySelector(`[name='${B}']`),U=A?.type;if(U==="file"){let z=_.filter((H)=>H instanceof File);if(A?.multiple||z.length>1)Z[B]=z;else Z[B]=z[0]||null;continue}if(U==="checkbox"){let z=X.querySelectorAll(`[name='${B}']`);if(z.length===1&&W){Z[B]=z[0].checked;continue}Z[B]=_.map((H)=>T.parseValue(String(H),Q));continue}if(U==="number"&&Q){if(_.length>1)Z[B]=_.map((z)=>parseFloat(String(z)));else Z[B]=parseFloat(String(_[0]));continue}if(_.length>1)Z[B]=_.map((z)=>T.parseValue(String(z),Q));else Z[B]=T.parseValue(String(_[0]),Q)}return Z}static parseValue(G,J){if(J&&G!==""&&!isNaN(Number(G)))return Number(G);return G}static reset(G){let J=document.querySelector(`form[data-form='${G}']`);if(!J){console.warn(`Form [data-form='${G}'] not found.`);return}J.reset()}static isValid(G){let J=document.querySelector(`form[data-form='${G}']`);if(!J)return console.warn(`Form [data-form='${G}'] not found.`),!1;return J.checkValidity()}static reportValidity(G){let J=document.querySelector(`form[data-form='${G}']`);if(!J)return console.warn(`Form [data-form='${G}'] not found.`),!1;return J.reportValidity()}}class P{static get retina(){return window.devicePixelRatio>=2}static get portrait(){return window.matchMedia("(orientation: portrait)").matches}static get landscape(){return window.matchMedia("(orientation: landscape)").matches}static get orientation(){return P.portrait?"portrait":"landscape"}static get darkMode(){return window.matchMedia("(prefers-color-scheme: dark)").matches}static get reducedMotion(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}static get touch(){return"ontouchstart"in window||navigator.maxTouchPoints>0}static get standalone(){let G=navigator;return window.matchMedia("(display-mode: standalone)").matches||G.standalone===!0}static get electron(){let G=window;if(navigator.userAgent.toLowerCase().includes(" electron/"))return!0;if(G.process?.type==="renderer")return!0;if(G.process?.versions?.electron)return!0;return!1}static get cordova(){return!!window.cordova}static get userAgent(){return navigator.userAgent.toLowerCase()}static desktop(G="Any"){let J=navigator;if(J.userAgentData?.mobile===!0)return!1;if(P.isIpadOS())return!1;let Q=P.userAgent,W=J.userAgentData?.platform?.toLowerCase()||"",X={ChromeOS:W.includes("cros")||Q.includes("cros"),Windows:W.includes("windows")||Q.includes("windows"),macOS:W.includes("macos")||Q.includes("macintosh"),Linux:!Q.includes("android")&&(W.includes("linux")||Q.includes("linux")),FreeBSD:W.includes("freebsd")||Q.includes("freebsd")};if(G==="Any")return Object.values(X).some((Y)=>Y);return X[G]||!1}static mobile(G="Any"){if(navigator.userAgentData?.mobile===!0&&G==="Any")return!0;let Q=P.userAgent,W={Android:Q.includes("android"),iOS:/iphone|ipod/.test(Q),iPadOS:P.isIpadOS(),WindowsMobile:/windows phone|iemobile|wpdesktop/.test(Q),BlackBerry:/blackberry|bb10/.test(Q)};if(G==="Any")return Object.values(W).some((X)=>X);return W[G]||!1}static isIpadOS(){let G=P.userAgent;if(G.includes("ipad"))return!0;if(G.includes("macintosh")&&navigator.maxTouchPoints>0)return!0;return!1}static get serviceWorkers(){return"serviceWorker"in navigator&&window.isSecureContext}static get coarsePointer(){return window.matchMedia("(pointer: coarse)").matches}static get finePointer(){return window.matchMedia("(pointer: fine)").matches}static get canHover(){return window.matchMedia("(hover: hover)").matches}}class O{static async image(G){let J=new Image;return J.src=G,await J.decode(),J}static async images(G){return Promise.all(G.map((J)=>O.image(J)))}static async file(G,J="low"){let W=await fetch(G,{priority:J});if(!W.ok)throw Error(`Preload failed for "${G}": ${W.status} ${W.statusText}`);return W}static async files(G,J="low"){return Promise.all(G.map((Q)=>O.file(Q,J)))}static async isCached(G,J){if(!("caches"in window))return!1;try{return!!await(await caches.open(G)).match(J)}catch{return!1}}static async addToCache(G,J){if(!("caches"in window))throw Error("Cache API is not supported in this browser");try{await(await caches.open(G)).add(J)}catch(Q){throw Error(`Failed to cache "${J}": ${Q instanceof Error?Q.message:String(Q)}`)}}static async addAllToCache(G,J){if(!("caches"in window))throw Error("Cache API is not supported in this browser");try{await(await caches.open(G)).addAll(J)}catch(Q){throw Error(`Failed to cache URLs: ${Q instanceof Error?Q.message:String(Q)}`)}}static async stylesheet(G){return new Promise((J,Q)=>{let W=document.createElement("link");W.rel="preload",W.as="style",W.href=G,W.onload=()=>J(),W.onerror=()=>Q(Error(`Failed to preload stylesheet: ${G}`)),document.head.appendChild(W)})}static async script(G){return new Promise((J,Q)=>{let W=document.createElement("link");W.rel="preload",W.as="script",W.href=G,W.onload=()=>J(),W.onerror=()=>Q(Error(`Failed to preload script: ${G}`)),document.head.appendChild(W)})}static async font(G,J=!0){return new Promise((Q,W)=>{let X=document.createElement("link");if(X.rel="preload",X.as="font",X.href=G,J)X.crossOrigin="anonymous";X.onload=()=>Q(),X.onerror=()=>W(Error(`Failed to preload font: ${G}`)),document.head.appendChild(X)})}}function E(G){if(G==="")return 0;let J=G.split("."),Q=0,W=[1000000000000,1e8,1e4];for(let X=0;X<Math.min(J.length,W.length);X++){let Y=parseInt(J[X],10)||0;Q+=Y*W[X]}return Q}function V(G){if(G===null||typeof G!=="object")return G;if(Array.isArray(G))return G.map((Q)=>V(Q));let J={};for(let Q of Object.keys(G))J[Q]=V(G[Q]);return J}function f(G,J){let Q=G.endsWith("/")?G.slice(0,-1):G,W=J.startsWith("/")?J:`/${J}`;return`${Q}${W}`}class R extends Error{constructor(G){super(`Key "${G}" not found in storage`);this.name="KeyNotFoundError"}}class L{name;version;store;id;numericVersion;upgrades;storage;_openPromise;constructor({name:G="",version:J="",store:Q=""}){this.name=G,this.version=J,this.store=Q,this.upgrades={},this.numericVersion=E(J),this.id=this.computeId()}computeId(){if(this.name!==""&&this.version!==""&&this.store!=="")return`${this.name}::${this.store}::${this.version}_`;else if(this.name!==""&&this.version!=="")return`${this.name}::${this.version}_`;else if(this.name!=="")return`${this.name}::_`;else return""}configuration(G){if(G.name!==void 0)this.name=G.name;if(G.version!==void 0)this.version=G.version,this.numericVersion=E(G.version);if(G.store!==void 0)this.store=G.store;this.id=this.computeId()}async open(){if(this.storage instanceof Storage)return this;if(this._openPromise)return this._openPromise;this._openPromise=(async()=>{let G=[];if(this.version!==""){let J="";if(this.name!==""&&this.version!==""&&this.store!=="")J=`${this.name}::${this.store}::`;else if(this.name!==""&&this.version!=="")J=`${this.name}::`;let Q=Object.keys(window.localStorage).filter((W)=>{return W.indexOf(J)===0}).map((W)=>{return W.replace(J,"").split("_")[0]}).filter((W)=>{return W.indexOf("::")===-1}).sort();if(Q.length>0){let W=Q[0],X=E(W);if(X<this.numericVersion){let Y=Object.keys(this.upgrades).sort((_,A)=>{let[U]=_.split("::").map(Number),[z]=A.split("::").map(Number);return U-z}),Z=Y.findIndex((_)=>{let[A]=_.split("::");return parseInt(A)===X});if(Z>-1)G=Y.slice(Z).filter((_)=>{let[A,U]=_.split("::");return parseInt(A)<this.numericVersion&&parseInt(U)<=this.numericVersion});let $=`${this.name}::${W}_`;if(this.name!==""&&this.version!==""&&this.store!=="")$=`${this.name}::${this.store}::${W}_`;else if(this.name!==""&&this.version!=="")$=`${this.name}::${W}_`;let B=Object.keys(window.localStorage).filter((_)=>{return _.indexOf($)===0}).map((_)=>{return _.replace($,"")});for(let _ of B){let A=window.localStorage.getItem(`${$}${_}`);if(A!==null)window.localStorage.setItem(this.id+_,A);window.localStorage.removeItem(`${$}${_}`)}}}}this.storage=window.localStorage;for(let J of G)try{await this.upgrades[J].call(this,this)}catch(Q){console.error(Q)}return this})();try{return await this._openPromise}finally{this._openPromise=void 0}}async set(G,J){if(await this.open(),typeof J==="object")this.storage.setItem(this.id+G,JSON.stringify(J));else this.storage.setItem(this.id+G,String(J));return{key:G,value:J}}async update(G,J){try{let Q=await this.get(G);if(typeof Q==="object"&&Q!==null){if(typeof J==="object"&&J!==null)J={...Q,...J};this.storage.setItem(this.id+G,JSON.stringify(J))}else this.storage.setItem(this.id+G,String(J));return{key:G,value:J}}catch{return this.set(G,J)}}async get(G){await this.open();let J=this.storage.getItem(this.id+G);if(J===null)throw new R(G);try{let Q=JSON.parse(J);if(Q&&typeof Q==="object")return Q;return J}catch{return J}}async getAll(){let G=await this.keys(),J={};for(let Q of G)try{J[Q]=await this.get(Q)}catch{}return J}async contains(G){if((await this.keys()).includes(G))return;else throw new R(G)}async upgrade(G,J,Q){let W=`${E(G)}::${E(J)}`;return this.upgrades[W]=Q,Promise.resolve()}async rename(G){if(this.name===G)throw Error("Cannot rename: new name is identical to current name");let J=await this.keys(),Q=this.id;this.name=G,this.id=this.computeId();for(let W of J){let X=this.storage.getItem(`${Q}${W}`);if(X!==null)this.storage.setItem(this.id+W,X),this.storage.removeItem(`${Q}${W}`)}}async key(G,J=!1){let Q=await this.keys(J);if(G<0||G>=Q.length)throw Error(`Index ${G} out of bounds. Space has ${Q.length} keys.`);return Q[G]}async keys(G=!1){return await this.open(),Object.keys(this.storage).filter((J)=>{return J.indexOf(this.id)===0}).map((J)=>{if(G===!0)return J;else return J.replace(this.id,"")})}async remove(G){let J=await this.get(G);return this.storage.removeItem(this.id+G),J}async clear(){let G=await this.keys();for(let J of G)this.storage.removeItem(this.id+J)}}class S extends L{constructor({name:G="",version:J="",store:Q=""}){super({name:G,version:J,store:Q})}async open(){if(this.storage instanceof Storage)return this;return this.storage=window.sessionStorage,this}async upgrade(G,J,Q){return console.warn("SessionStorage.upgrade() is a no-op. Session data is temporary and does not support migrations."),Promise.resolve()}}class b extends Error{constructor(G){super(`Key "${G}" not found in IndexedDB`);this.name="KeyNotFoundError"}}class C{name;version;store;props;index;keyPath;numericVersion;upgrades;storage;constructor({name:G="",version:J="",store:Q="",props:W={},index:X={}}){this.name=G,this.version=J,this.store=Q,this.props=W||{},this.index=X,this.keyPath=W?.keyPath||"id",this.upgrades={},this.numericVersion=E(J)}configuration(G){if(G.name!==void 0)this.name=G.name;if(G.version!==void 0)this.version=G.version,this.numericVersion=E(G.version);if(G.store!==void 0)this.store=G.store}async open(){if(this.name==="")throw Error("IndexedDB requires a name. No name has been defined for this space.");if(this.store==="")throw Error("IndexedDB requires a store name. No store has been defined for this space.");if(this.storage instanceof IDBDatabase)return this;else if(this.storage instanceof Promise)return await this.storage;else{let G=(async()=>{let J,Q=[],W=await new Promise((X,Y)=>{let Z=window.indexedDB.open(this.name,this.numericVersion);Z.onerror=($)=>{Y(Error(`Failed to open IndexedDB "${this.name}": ${$.target.error?.message}`))},Z.onsuccess=($)=>{X($.target.result)},Z.onupgradeneeded=($)=>{J=$;let B=$.target.result;if($.oldVersion<1){let A=B.createObjectStore(this.store,this.props);for(let U of Object.keys(this.index)){let z=this.index[U];A.createIndex(z.name,z.field,z.props)}}else{let A=Object.keys(this.upgrades).sort((z,H)=>{let[M]=z.split("::").map(Number),[v]=H.split("::").map(Number);return M-v}),U=A.findIndex((z)=>{let[H]=z.split("::");return parseInt(H)===$.oldVersion});if(U>-1)Q=A.slice(U).filter((z)=>{let[H,M]=z.split("::");return parseInt(H)<this.numericVersion&&parseInt(M)<=this.numericVersion})}let _=$.target.transaction;if(_)_.addEventListener("complete",()=>{})}});this.storage=W;for(let X of Q)try{await this.upgrades[X].call(this,this,J)}catch(Y){console.error(Y)}return this})();return this.storage=G,await G}}async set(G=null,J){return await this.open(),new Promise((Q,W)=>{let X=this.storage.transaction(this.store,"readwrite").objectStore(this.store),Y;if(G!==null){let Z={};Z[this.keyPath]=G,Y=X.put({...Z,...J})}else Y=X.add(J);Y.addEventListener("success",(Z)=>{Q({key:String(Z.target.result),value:J})}),Y.addEventListener("error",(Z)=>{W(Error(`Failed to set key "${G}": ${Z.target.error?.message}`))})})}async update(G,J){try{let Q=await this.get(G);if(typeof Q>"u")return this.set(G,J);return new Promise((W,X)=>{let Z=this.storage.transaction(this.store,"readwrite").objectStore(this.store).put({...Q,...J});Z.addEventListener("success",($)=>{W({key:String($.target.result),value:J})}),Z.addEventListener("error",($)=>{X(Error(`Failed to update key "${G}": ${$.target.error?.message}`))})})}catch{return this.set(G,J)}}async get(G){return await this.open(),new Promise((J,Q)=>{let X=this.storage.transaction(this.store,"readonly").objectStore(this.store).get(G);X.addEventListener("success",(Y)=>{let Z=Y.target.result;if(typeof Z<"u"&&Z!==null)J(Z);else Q(new b(G))}),X.addEventListener("error",(Y)=>{Q(Error(`Failed to get key "${G}": ${Y.target.error?.message}`))})})}async getAll(){return await this.open(),new Promise((G,J)=>{let W=this.storage.transaction(this.store,"readonly").objectStore(this.store).getAll();W.addEventListener("success",(X)=>{let Y={};X.target.result.forEach(($)=>{let B=$[this.keyPath],_={...$};delete _[this.keyPath],Y[B]=_}),G(Y)}),W.addEventListener("error",(X)=>{J(Error(`Failed to get all items: ${X.target.error?.message}`))})})}async contains(G){await this.get(G)}async upgrade(G,J,Q){let W=`${E(G)}::${E(J)}`;return this.upgrades[W]=Q,Promise.resolve()}rename(){return Promise.reject(Error("IndexedDB does not support renaming databases. Create a new database and migrate data manually."))}key(){return Promise.reject(Error("IndexedDB does not support getting keys by index. Use keys() to get all keys."))}async keys(){return await this.open(),new Promise((G,J)=>{let W=this.storage.transaction(this.store,"readonly").objectStore(this.store).getAllKeys();W.addEventListener("success",(X)=>{G(X.target.result.map(String))},!1),W.addEventListener("error",(X)=>{J(Error(`Failed to get keys: ${X.target.error?.message}`))},!1)})}async remove(G){let J=await this.get(G);return new Promise((Q,W)=>{let Y=this.storage.transaction(this.store,"readwrite").objectStore(this.store).delete(G);Y.addEventListener("success",()=>{Q(J)},!1),Y.addEventListener("error",(Z)=>{W(Error(`Failed to delete key "${G}": ${Z.target.error?.message}`))},!1)})}async clear(){return await this.open(),new Promise((G,J)=>{let W=this.storage.transaction(this.store,"readwrite").objectStore(this.store).clear();W.addEventListener("success",()=>{G()},!1),W.addEventListener("error",(X)=>{J(Error(`Failed to clear store: ${X.target.error?.message}`))},!1)})}}class g extends Error{constructor(G){super(`Key "${G}" not found in remote storage`);this.name="KeyNotFoundError"}}class q{name;version;store;baseEndpoint;endpoint;props;storage;constructor({name:G="",version:J="",store:Q="",endpoint:W="",props:X={}}){this.name=G,this.version=J,this.store=Q,this.baseEndpoint=W,this.endpoint=this.computeEndpoint(),this.props=X}computeEndpoint(){if(this.store)return f(this.baseEndpoint,`${this.store}/`);return this.baseEndpoint.endsWith("/")?this.baseEndpoint:`${this.baseEndpoint}/`}configuration(G){if(G.name!==void 0)this.name=G.name;if(G.version!==void 0)this.version=G.version;if(G.store!==void 0)this.store=G.store;if(G.endpoint!==void 0)this.baseEndpoint=G.endpoint;this.endpoint=this.computeEndpoint()}async open(){if(typeof this.storage>"u")this.storage=K;return this}async set(G,J){await this.open();let W=await(await this.storage.post(this.endpoint+G,J,this.props)).json();return{key:G,value:W}}async update(G,J){await this.open();let W={...await this.get(G),...J},Y=await(await this.storage.put(this.endpoint+G,W,this.props)).json();return{key:G,value:Y}}async get(G){return await this.open(),this.storage.json(this.endpoint+G,{},this.props)}async getAll(){return await this.open(),this.storage.json(this.endpoint,{},this.props)}async contains(G){if((await this.keys()).includes(G))return;else throw new g(G)}upgrade(){return Promise.reject(Error("RemoteStorage cannot be upgraded from the client. Upgrades must be performed server-side."))}rename(){return Promise.reject(Error("RemoteStorage cannot be renamed from the client. Renaming must be performed server-side."))}key(){return Promise.reject(Error("RemoteStorage does not support getting keys by index. Use keys() to get all keys."))}async keys(){return await this.open(),this.storage.json(this.endpoint,{keys:!0},this.props)}async remove(G){return await this.open(),(await this.storage.delete(this.endpoint+G,{},this.props)).json()}async clear(){await this.open(),await this.storage.delete(this.endpoint,{},this.props)}}var y={LocalStorage:L,SessionStorage:S,IndexedDB:C,RemoteStorage:q};class k{_configuration;adapter;callbacks;transformations;constructor(G=y.LocalStorage,J={}){this._configuration={name:"",version:"",store:"",...J},this.adapter=new G(this._configuration),this.callbacks={create:[],update:[],delete:[]},this.transformations={}}configuration(G=null){if(G!==null){if(this._configuration={...this._configuration,...G},this.adapter.configuration)this.adapter.configuration(G);return}else return this._configuration}async open(){return await this.adapter.open(),this}applySetTransformations(G,J){let Q=V(J);for(let W of Object.values(this.transformations))if(typeof W.set==="function")Q=W.set(G,Q);return Q}applyGetTransformations(G,J){let Q=J;for(let W of Object.values(this.transformations))if(typeof W.get==="function")Q=W.get(G,Q);return Q}async set(G,J){let Q=this.applySetTransformations(G,J),W=await this.adapter.set(G,Q);for(let X of this.callbacks.create)X.call(null,W.key,W.value);return W}async update(G,J){let Q=this.applySetTransformations(G,J),W=await this.adapter.update(G,Q);for(let X of this.callbacks.update)X.call(null,W.key,W.value);return W}async get(G){let J=await this.adapter.get(G);return this.applyGetTransformations(G,J)}async getAll(){let G=await this.adapter.getAll(),J={};for(let Q of Object.keys(G))J[Q]=this.applyGetTransformations(Q,G[Q]);return J}async each(G){let J=await this.getAll(),Q=[];for(let[W,X]of Object.entries(J))Q.push(G.call(this,W,X));return Promise.all(Q)}contains(G){return this.adapter.contains(G)}async upgrade(G,J,Q){return await this.adapter.upgrade(G,J,Q),this}rename(G){return this.adapter.rename(G)}onCreate(G){this.callbacks.create.push(G)}onUpdate(G){this.callbacks.update.push(G)}onDelete(G){this.callbacks.delete.push(G)}addTransformation({id:G,get:J,set:Q}){this.transformations[G]={id:G,get:J,set:Q}}removeTransformation(G){delete this.transformations[G]}key(G,J=!1){return this.adapter.key(G,J)}keys(G=!1){return this.adapter.keys(G)}async remove(G){let J=await this.adapter.remove(G);for(let Q of this.callbacks.delete)Q.call(null,G,J)}clear(){return this.adapter.clear()}}class p{static capitalize(G,J={}){let{preserveCase:Q=!1}=J;return G.replace(/\w\S*/g,(W)=>{let X=W.charAt(0).toUpperCase(),Y=Q?W.substring(1):W.substring(1).toLowerCase();return X+Y})}static selection(){return window.getSelection()?.toString()||""}static suffix(G,J){let Q=J.indexOf(G);if(Q===-1)return"";return J.slice(Q+G.length)}static prefix(G,J){let Q=J.indexOf(G);if(Q===-1)return"";return J.slice(0,Q)}static friendly(G){return G.toString().normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().trim().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-")}static truncate(G,J,Q="..."){if(G.length<=J)return G;return G.slice(0,J-Q.length).trimEnd()+Q}static isBlank(G){return G===null||G===void 0||G.trim()===""}}class d{static async callAsync(G,J,...Q){try{return await G.apply(J,Q)}catch(W){return Promise.reject(W)}}static uuid(){if(typeof crypto<"u"&&"randomUUID"in crypto)return crypto.randomUUID();if(typeof crypto<"u"&&"getRandomValues"in crypto)return"10000000-1000-4000-8000-100000000000".replace(/[018]/g,(J)=>{let Q=parseInt(J,10),W=crypto.getRandomValues(new Uint8Array(1))[0],X=15>>Math.floor(Q/4);return(Q^W&X).toString(16)});let G=()=>Math.floor((1+Math.random())*65536).toString(16).substring(1);return`${G()}${G()}-${G()}-${G()}-${G()}-${G()}${G()}${G()}`}static debounce(G,J){let Q=null;return(...W)=>{if(Q!==null)clearTimeout(Q);Q=setTimeout(()=>{G(...W),Q=null},J)}}static throttle(G,J){let Q=!1;return(...W)=>{if(!Q)G(...W),Q=!0,setTimeout(()=>{Q=!1},J)}}}if(typeof window==="object")window.Artemis=x;
|
|
1
|
+
var c=Object.defineProperty;var m=(W,G)=>{for(var J in G)c(W,J,{get:G[J],enumerable:!0,configurable:!0,set:(Q)=>G[J]=()=>Q})};var N={};m(N,{Util:()=>d,Text:()=>p,SpaceAdapter:()=>y,Space:()=>k,SessionStorage:()=>q,RequestTimeoutError:()=>C,RequestError:()=>w,Request:()=>K,RemoteStorage:()=>V,Preload:()=>S,Platform:()=>P,LocalStorage:()=>L,IndexedDB:()=>O,Form:()=>T,FileSystem:()=>F,DebugLevel:()=>x,Debug:()=>h,DOM:()=>I,$_ready:()=>i,$_create:()=>s,$_:()=>u});var x;((Z)=>{Z[Z.NONE=0]="NONE";Z[Z.ERROR=1]="ERROR";Z[Z.WARNING=2]="WARNING";Z[Z.INFO=3]="INFO";Z[Z.DEBUG=4]="DEBUG";Z[Z.ALL=5]="ALL"})(x||={});class h{static _level=0;static get currentLevel(){return this._level}static level(W){if(typeof W==="number")this._level=W;return this._level}static setLevel(W){this._level=W}static isEnabled(W){return this._level>=W}static log(...W){if(this._level>=4)console.log(...W)}static debug(...W){if(this._level>=4)console.debug(...W)}static info(...W){if(this._level>=3)console.info(...W)}static error(...W){if(this._level>=1)console.error(...W)}static warning(...W){if(this._level>=2)console.warn(...W)}static warn(...W){this.warning(...W)}static table(W,G){if(this._level>=4)console.table(W,G)}static group(...W){if(this._level>=4)console.group(...W)}static groupCollapsed(...W){if(this._level>=4)console.groupCollapsed(...W)}static groupEnd(){if(this._level>=4)console.groupEnd()}static time(W){if(this._level>=4)console.time(W)}static timeLog(W,...G){if(this._level>=4)console.timeLog(W,...G)}static timeEnd(W){if(this._level>=4)console.timeEnd(W)}static trace(...W){if(this._level>=4)console.trace(...W)}static assert(W,...G){if(this._level>=1)console.assert(W,...G)}static clear(){if(this._level>=4)console.clear()}static count(W){if(this._level>=4)console.count(W)}static countReset(W){if(this._level>=4)console.countReset(W)}static dir(W){if(this._level>=4)console.dir(W)}static dirxml(W){if(this._level>=4)console.dirxml(W)}static format(W,...G){let J=W,Q=0;return J=J.replace(/%[sdioOcj%]/g,(X)=>{if(X==="%%")return"%";if(Q>=G.length)return X;let Y=G[Q++];switch(X){case"%s":return String(Y);case"%d":case"%i":return String(parseInt(String(Y),10));case"%o":case"%O":return JSON.stringify(Y);case"%c":return"";case"%j":return JSON.stringify(Y);default:return X}}),J}}var j=new WeakMap;class I{collection;length;constructor(W){if(!W)this.collection=[];else if(typeof W==="string")this.collection=Array.from(document.querySelectorAll(W));else if(W instanceof NodeList)this.collection=Array.from(W);else if(W instanceof I)this.collection=W.collection;else if(W instanceof Element)this.collection=[W];else if(Array.isArray(W))this.collection=W;else this.collection=[];this.length=this.collection.length}hide(){return this.style("display","none")}show(W="block"){return this.style("display",W)}addClass(W){return this.collection.forEach((G)=>G.classList.add(W)),this}removeClass(W){return this.collection.forEach((G)=>{if(!W)G.className="";else G.classList.remove(W)}),this}toggleClass(W){let G=W.split(" ");return this.collection.forEach((J)=>{G.forEach((Q)=>J.classList.toggle(Q))}),this}hasClass(W){return this.collection.every((G)=>G.classList.contains(W))}value(W){if(W!==void 0){let J=String(W);for(let Q of this.collection)if(Q instanceof HTMLInputElement||Q instanceof HTMLTextAreaElement||Q instanceof HTMLSelectElement||Q instanceof HTMLButtonElement||Q instanceof HTMLOptionElement)Q.value=J;return this}if(this.length===0)return;let G=this.collection[0];if(G instanceof HTMLInputElement||G instanceof HTMLTextAreaElement||G instanceof HTMLSelectElement||G instanceof HTMLButtonElement||G instanceof HTMLOptionElement)return G.value;return}focus(){if(this.length>0)this.collection[0].focus();return this}blur(){if(this.length>0)this.collection[0].blur();return this}click(W){return this.on("click",W)}keyup(W){return this.on("keyup",W)}keydown(W){return this.on("keydown",W)}submit(W){return this.on("submit",W)}change(W){return this.on("change",W)}scroll(W){return this.on("scroll",W)}input(W){return this.on("input",W)}on(W,G,J){let Q=W.split(" "),X=typeof G==="string",Y=X?J:G,Z=X?G:null;if(!Y)return this;return this.collection.forEach(($)=>{Q.forEach((B)=>{let _=X&&Z?(U)=>{let z=U.target;if(z instanceof Element){let H=z.closest(Z);if(H&&$.contains(H))Y.call(H,U)}}:Y;if(!j.has($))j.set($,new Map);let A=j.get($);if(!A.has(B))A.set(B,[]);A.get(B).push({selector:Z,originalCallback:Y,wrappedListener:_}),$.addEventListener(B,_,!1)})}),this}off(W,G,J){return this.collection.forEach((Q)=>{let X=j.get(Q);if(!X)return;let Y=W?W.split(" "):Array.from(X.keys()),Z=typeof G==="string",$=Z?G:null,B=Z?J:G;if(Y.forEach((_)=>{let A=X.get(_);if(!A)return;let U=A.filter((H)=>{if(B&&H.originalCallback!==B)return!1;if($!==void 0&&H.selector!==$)return!1;return!0});U.forEach((H)=>{Q.removeEventListener(_,H.wrappedListener)});let z=A.filter((H)=>!U.includes(H));if(z.length>0)X.set(_,z);else X.delete(_)}),X.size===0)j.delete(Q)}),this}trigger(W,G){let J=W.split(" ");return this.collection.forEach((Q)=>{J.forEach((X)=>{let Y=G!==void 0?new CustomEvent(X,{detail:G,bubbles:!0,cancelable:!0}):new Event(X,{bubbles:!0,cancelable:!0});Q.dispatchEvent(Y)})}),this}filter(W){return new I(this.collection.filter((G)=>G.matches(W)))}exists(){return this.length>0}data(W,G){if(G!==void 0)return this.collection.forEach((J)=>J.dataset[W]=G),this;return this.length>0?this.collection[0].dataset[W]:void 0}removeData(W){return this.collection.forEach((G)=>delete G.dataset[W]),this}text(W){if(W!==void 0){let G=String(W);for(let J of this.collection)J.textContent=G;return this}if(this.length===0)return;return this.collection[0].textContent||""}html(W){if(W!==void 0){let G=String(W);for(let J of this.collection)J.innerHTML=G;return this}if(this.length===0)return;return this.collection[0].innerHTML}append(W){return this.collection.forEach((G,J)=>{if(typeof W==="string")G.insertAdjacentHTML("beforeend",W);else{let Q=J===0?W:W.cloneNode(!0);G.appendChild(Q)}}),this}prepend(W){return this.collection.forEach((G,J)=>{if(typeof W==="string")G.insertAdjacentHTML("afterbegin",W);else{let Q=J===0?W:W.cloneNode(!0);G.prepend(Q)}}),this}each(W){return this.collection.forEach((G,J)=>W(G,J)),this}get(W){return this.collection[W]}first(){return new I(this.collection[0]??null)}last(){return new I(this.collection[this.collection.length-1]??null)}eq(W){let G=W<0?this.collection.length+W:W;return new I(this.collection[G]??null)}isVisible(){return this.collection.some((W)=>W.style.display!=="none"&&W.offsetWidth>0&&W.offsetHeight>0)}parent(){let W=new Set;return this.collection.forEach((G)=>{if(G.parentElement)W.add(G.parentElement)}),new I(Array.from(W))}parents(){let W=new Set;return this.collection.forEach((G)=>{let J=G.parentElement;while(J)W.add(J),J=J.parentElement}),new I(Array.from(W))}find(W){let G=new Set;for(let J of this.collection){let Q=J.querySelectorAll(W);for(let X of Q)G.add(X)}return new I(Array.from(G))}offset(){if(this.length===0)return;let W=this.collection[0].getBoundingClientRect();return{top:W.top+window.scrollY,left:W.left+window.scrollX}}width(){if(this.length===0)return 0;return this.collection[0].getBoundingClientRect().width}height(){if(this.length===0)return 0;return this.collection[0].getBoundingClientRect().height}closest(W){let G=new Set;return this.collection.forEach((J)=>{let Q=J.closest(W);if(Q)G.add(Q)}),new I(Array.from(G))}attribute(W,G){if(G!==void 0)return this.collection.forEach((J)=>J.setAttribute(W,String(G))),this;return this.length>0?this.collection[0].getAttribute(W):void 0}removeAttribute(W){return this.collection.forEach((G)=>G.removeAttribute(W)),this}hasAttribute(W){return this.collection.every((G)=>G.hasAttribute(W))}after(W){return this.collection.forEach((G)=>G.insertAdjacentHTML("afterend",W)),this}before(W){return this.collection.forEach((G)=>G.insertAdjacentHTML("beforebegin",W)),this}style(W,G){if(typeof W==="string"&&G===void 0)return this.length>0?this.collection[0].style.getPropertyValue(W):"";return this.collection.forEach((J)=>{if(typeof W==="string"&&G!==void 0)J.style.setProperty(W,G);else if(typeof W==="object")Object.entries(W).forEach(([Q,X])=>{J.style.setProperty(Q,String(X))})}),this}animate(W,G){return this.collection.forEach((J)=>J.animate(W,G)),this}fadeIn(W=400,G){return this.collection.forEach((J,Q)=>{if(getComputedStyle(J).display==="none")J.style.display="block";let X=J.animate([{opacity:0},{opacity:1}],{duration:W,fill:"forwards"});if(G&&Q===this.collection.length-1)X.onfinish=()=>G()}),this}fadeOut(W=400,G){return this.collection.forEach((J,Q)=>{let X=J.animate([{opacity:1},{opacity:0}],{duration:W,fill:"forwards"});X.onfinish=()=>{if(J.style.display="none",G&&Q===this.collection.length-1)G()}}),this}matches(W){if(this.length===0)return!1;return this.collection.every((G)=>G.matches(W))}remove(){return this.collection.forEach((W)=>W.remove()),this}empty(){return this.collection.forEach((W)=>{W.innerHTML=""}),this}clone(W=!0){let G=this.collection.map((J)=>J.cloneNode(W));return new I(G)}replaceWith(W){for(let G=this.collection.length-1;G>=0;G--){let J=this.collection[G];if(typeof W==="string")J.outerHTML=W;else{let Q=G===0?W:W.cloneNode(!0);J.replaceWith(Q)}}return this}reset(){return this.collection.forEach((W)=>{if(W instanceof HTMLFormElement)W.reset()}),this}property(W,G){if(G!==void 0)return this.collection.forEach((J)=>{J[W]=G}),this;if(this.length===0)return;return this.collection[0][W]}siblings(){let W=new Set;return this.collection.forEach((G)=>{if(G.parentElement)Array.from(G.parentElement.children).forEach((J)=>{if(J!==G&&J instanceof HTMLElement)W.add(J)})}),new I(Array.from(W))}next(){let W=new Set;return this.collection.forEach((G)=>{let J=G.nextElementSibling;if(J instanceof HTMLElement)W.add(J)}),new I(Array.from(W))}prev(){let W=new Set;return this.collection.forEach((G)=>{let J=G.previousElementSibling;if(J instanceof HTMLElement)W.add(J)}),new I(Array.from(W))}children(){let W=new Set;return this.collection.forEach((G)=>{Array.from(G.children).forEach((J)=>{if(J instanceof HTMLElement)W.add(J)})}),new I(Array.from(W))}scrollIntoView(W){if(this.length>0)this.collection[0].scrollIntoView(W);return this}}function u(W){return new I(W)}function i(W){if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",W);else W()}function s(W,G){let J=document.createElement(W);if(G)Object.entries(G).forEach(([Q,X])=>{J.setAttribute(Q,X)});return new I(J)}class w extends Error{status;statusText;response;constructor(W,G){super(G||`Request failed: ${W.status} ${W.statusText}`);this.name="RequestError",this.status=W.status,this.statusText=W.statusText,this.response=W}}class C extends Error{constructor(W,G){super(`Request to "${W}" timed out after ${G}ms`);this.name="RequestTimeoutError"}}class K{static serialize(W,G){if(W instanceof FormData){let Q=new URLSearchParams;return W.forEach((X,Y)=>{if(typeof X==="string")Q.append(Y,X)}),Q.toString()}let J=[];for(let[Q,X]of Object.entries(W)){if(X===void 0||X===null)continue;let Y=G?`${G}[${Q}]`:Q;if(Array.isArray(X))X.forEach((Z,$)=>{if(typeof Z==="object"&&Z!==null)J.push(K.serialize(Z,`${Y}[${$}]`));else J.push(`${encodeURIComponent(Y)}[]=${encodeURIComponent(String(Z))}`)});else if(typeof X==="object")J.push(K.serialize(X,Y));else J.push(`${encodeURIComponent(Y)}=${encodeURIComponent(String(X))}`)}return J.filter(Boolean).join("&")}static parseUrl(W){try{return new URL(W)}catch{try{return new URL(W,window.location.origin)}catch(G){throw Error(`Invalid URL: "${W}"`)}}}static createTimeoutController(W,G){let J=new AbortController;if(!W)return{controller:J};let Q=setTimeout(()=>{J.abort(new C(G,W))},W);return{controller:J,timeoutId:Q}}static async send(W,G,J={},Q={}){let{timeout:X,...Y}=Q,Z=K.parseUrl(G),$=void 0,B={...Y.headers};if(["GET","DELETE","HEAD"].includes(W.toUpperCase())){if(J&&typeof J==="object"&&!(J instanceof FormData))Object.entries(J).forEach(([U,z])=>{if(z!==void 0&&z!==null)Z.searchParams.append(U,String(z))})}else{let U=B["Content-Type"]||B["content-type"];if(J instanceof FormData)delete B["Content-Type"],delete B["content-type"],$=J;else if(U==="application/json")$=JSON.stringify(J);else{if(!U)B["Content-Type"]="application/x-www-form-urlencoded";let z=new URLSearchParams;Object.entries(J).forEach(([H,M])=>z.append(H,String(M))),$=z}}let{controller:_,timeoutId:A}=K.createTimeoutController(X,G);try{return await fetch(Z.toString(),{...Y,method:W,headers:B,body:$,signal:_.signal})}finally{if(A)clearTimeout(A)}}static get(W,G={},J={}){return K.send("GET",W,G,J)}static post(W,G,J={}){return K.send("POST",W,G,J)}static put(W,G,J={}){return K.send("PUT",W,G,J)}static patch(W,G,J={}){return K.send("PATCH",W,G,J)}static delete(W,G={},J={}){return K.send("DELETE",W,G,J)}static head(W,G={},J={}){return K.send("HEAD",W,G,J)}static async json(W,G={},J={}){let Q=await K.get(W,G,J);if(!Q.ok)throw new w(Q);return Q.json()}static async postJson(W,G,J={}){let Q={...J.headers,"Content-Type":"application/json"},X=await K.post(W,G,{...J,headers:Q});if(!X.ok)throw new w(X);return X.json()}static async blob(W,G={},J={}){let Q=await K.get(W,G,J);if(!Q.ok)throw new w(Q);return Q.blob()}static async text(W,G={},J={}){let Q=await K.get(W,G,J);if(!Q.ok)throw new w(Q);return Q.text()}static async arrayBuffer(W,G={},J={}){let Q=await K.get(W,G,J);if(!Q.ok)throw new w(Q);return Q.arrayBuffer()}static async exists(W,G={}){try{return(await K.head(W,{},G)).ok}catch{return!1}}}class F{static async readRemote(W,G="base64",J={}){let Q=await K.blob(W,{},J);return F.read(Q,G)}static async read(W,G="text"){switch(G){case"text":return W.text();case"buffer":return W.arrayBuffer();case"base64":return new Promise((J,Q)=>{let X=new FileReader;X.onload=()=>J(X.result),X.onerror=()=>Q(X.error),X.readAsDataURL(W)});case"binary":return new Promise((J,Q)=>{let X=new FileReader;X.onload=()=>{let Y=X.result,Z="",$=new Uint8Array(Y),B=$.byteLength;for(let _=0;_<B;_++)Z+=String.fromCharCode($[_]);J(Z)},X.onerror=()=>Q(X.error),X.readAsArrayBuffer(W)});default:throw Error(`FileSystem.read: Unknown type ${G}`)}}static create(W,G,J="text/plain"){return new File([G],W,{type:J})}static download(W,G){let J=URL.createObjectURL(W),Q=document.createElement("a");Q.href=J;let X;if(G!==void 0&&G!=="")X=G;else if(W instanceof File&&W.name!=="")X=W.name;else X="download";Q.download=X,document.body.appendChild(Q),Q.click(),document.body.removeChild(Q),URL.revokeObjectURL(J)}static extension(W,G=!1){let J=W.split(".");if(J.length===1||J[0]===""&&J.length===2&&!G)return"";return J.pop()?.toLowerCase()??""}static isImage(W){let G=F.extension(W);return new Set(["jpg","jpeg","png","gif","svg","webp","avif","bmp","ico","tiff","heic"]).has(G)}static isVideo(W){let G=F.extension(W);return new Set(["mp4","webm","ogg","mov","avi","mkv","m4v"]).has(G)}static isAudio(W){let G=F.extension(W);return new Set(["mp3","wav","ogg","flac","aac","m4a","wma"]).has(G)}static humanSize(W,G=2){if(W===0)return"0 Bytes";let J=1024,Q=["Bytes","KB","MB","GB","TB","PB"],X=Math.floor(Math.log(W)/Math.log(J));return parseFloat((W/Math.pow(J,X)).toFixed(G))+" "+Q[X]}}class T{static fill(W,G){let J=document.querySelector(`form[data-form='${W}']`);if(!J){console.warn(`Form [data-form='${W}'] not found.`);return}Object.entries(G).forEach(([Q,X])=>{let Y=J.querySelectorAll(`[name='${Q}']`);if(Y.length===0)return;let $=Y[0].type,B=String(X);switch($){case"radio":Y.forEach((_)=>{let A=_;if(A.value===B)A.checked=!0});break;case"checkbox":if(Y.length===1)Y[0].checked=!!X;else if(Array.isArray(X)){let _=X.map(String);Y.forEach((A)=>{let U=A;U.checked=_.includes(U.value)})}break;case"file":break;default:Y[0].value=B;break}})}static values(W,G={}){let{parseNumbers:J=!0,parseBooleans:Q=!0}=G,X=document.querySelector(`form[data-form='${W}']`);if(!X)return console.warn(`Form [data-form='${W}'] not found.`),{};let Y=new FormData(X),Z={},$=Array.from(new Set(Y.keys()));for(let B of $){let _=Y.getAll(B),A=X.querySelector(`[name='${B}']`),U=A?.type;if(U==="file"){let z=_.filter((H)=>H instanceof File);if(A?.multiple||z.length>1)Z[B]=z;else Z[B]=z[0]||null;continue}if(U==="checkbox"){let z=X.querySelectorAll(`[name='${B}']`);if(z.length===1&&Q){Z[B]=z[0].checked;continue}Z[B]=_.map((H)=>T.parseValue(String(H),J));continue}if(U==="number"&&J){if(_.length>1)Z[B]=_.map((z)=>parseFloat(String(z)));else Z[B]=parseFloat(String(_[0]));continue}if(_.length>1)Z[B]=_.map((z)=>T.parseValue(String(z),J));else Z[B]=T.parseValue(String(_[0]),J)}return Z}static parseValue(W,G){if(G&&W!==""&&!isNaN(Number(W)))return Number(W);return W}static reset(W){let G=document.querySelector(`form[data-form='${W}']`);if(!G){console.warn(`Form [data-form='${W}'] not found.`);return}G.reset()}static isValid(W){let G=document.querySelector(`form[data-form='${W}']`);if(!G)return console.warn(`Form [data-form='${W}'] not found.`),!1;return G.checkValidity()}static reportValidity(W){let G=document.querySelector(`form[data-form='${W}']`);if(!G)return console.warn(`Form [data-form='${W}'] not found.`),!1;return G.reportValidity()}}class P{static get retina(){return window.devicePixelRatio>=2}static get portrait(){return window.matchMedia("(orientation: portrait)").matches}static get landscape(){return window.matchMedia("(orientation: landscape)").matches}static get orientation(){return P.portrait?"portrait":"landscape"}static get darkMode(){return window.matchMedia("(prefers-color-scheme: dark)").matches}static get reducedMotion(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}static get touch(){return"ontouchstart"in window||navigator.maxTouchPoints>0}static get standalone(){let W=navigator;return window.matchMedia("(display-mode: standalone)").matches||W.standalone===!0}static get electron(){let W=window;if(navigator.userAgent.toLowerCase().includes(" electron/"))return!0;if(W.process?.type==="renderer")return!0;if(W.process?.versions?.electron)return!0;return!1}static get cordova(){return!!window.cordova}static get userAgent(){return navigator.userAgent.toLowerCase()}static desktop(W="Any"){let G=navigator;if(G.userAgentData?.mobile===!0)return!1;if(P.isIpadOS())return!1;let J=P.userAgent,Q=G.userAgentData?.platform?.toLowerCase()||"",X={ChromeOS:Q.includes("cros")||J.includes("cros"),Windows:Q.includes("windows")||J.includes("windows"),macOS:Q.includes("macos")||J.includes("macintosh"),Linux:!J.includes("android")&&(Q.includes("linux")||J.includes("linux")),FreeBSD:Q.includes("freebsd")||J.includes("freebsd")};if(W==="Any")return Object.values(X).some((Y)=>Y);return X[W]||!1}static mobile(W="Any"){if(navigator.userAgentData?.mobile===!0&&W==="Any")return!0;let J=P.userAgent,Q={Android:J.includes("android"),iOS:/iphone|ipod/.test(J),iPadOS:P.isIpadOS(),WindowsMobile:/windows phone|iemobile|wpdesktop/.test(J),BlackBerry:/blackberry|bb10/.test(J)};if(W==="Any")return Object.values(Q).some((X)=>X);return Q[W]||!1}static isIpadOS(){let W=P.userAgent;if(W.includes("ipad"))return!0;if(W.includes("macintosh")&&navigator.maxTouchPoints>0)return!0;return!1}static get serviceWorkers(){return"serviceWorker"in navigator&&window.isSecureContext}static get coarsePointer(){return window.matchMedia("(pointer: coarse)").matches}static get finePointer(){return window.matchMedia("(pointer: fine)").matches}static get canHover(){return window.matchMedia("(hover: hover)").matches}}class S{static async image(W){let G=new Image;return G.src=W,await G.decode(),G}static async images(W){return Promise.all(W.map((G)=>S.image(G)))}static async file(W,G="low"){let Q=await fetch(W,{priority:G});if(!Q.ok)throw Error(`Preload failed for "${W}": ${Q.status} ${Q.statusText}`);return Q}static async files(W,G="low"){return Promise.all(W.map((J)=>S.file(J,G)))}static async isCached(W,G){if(!("caches"in window))return!1;try{return!!await(await caches.open(W)).match(G)}catch{return!1}}static async addToCache(W,G){if(!("caches"in window))throw Error("Cache API is not supported in this browser");try{await(await caches.open(W)).add(G)}catch(J){throw Error(`Failed to cache "${G}": ${J instanceof Error?J.message:String(J)}`)}}static async addAllToCache(W,G){if(!("caches"in window))throw Error("Cache API is not supported in this browser");try{await(await caches.open(W)).addAll(G)}catch(J){throw Error(`Failed to cache URLs: ${J instanceof Error?J.message:String(J)}`)}}static async stylesheet(W){return new Promise((G,J)=>{let Q=document.createElement("link");Q.rel="preload",Q.as="style",Q.href=W,Q.onload=()=>G(),Q.onerror=()=>J(Error(`Failed to preload stylesheet: ${W}`)),document.head.appendChild(Q)})}static async script(W){return new Promise((G,J)=>{let Q=document.createElement("link");Q.rel="preload",Q.as="script",Q.href=W,Q.onload=()=>G(),Q.onerror=()=>J(Error(`Failed to preload script: ${W}`)),document.head.appendChild(Q)})}static async font(W,G=!0){return new Promise((J,Q)=>{let X=document.createElement("link");if(X.rel="preload",X.as="font",X.href=W,G)X.crossOrigin="anonymous";X.onload=()=>J(),X.onerror=()=>Q(Error(`Failed to preload font: ${W}`)),document.head.appendChild(X)})}static async audio(W,G){let J=await fetch(W);if(!J.ok)throw Error(`Preload failed for "${W}": ${J.status} ${J.statusText}`);let Q=await J.arrayBuffer(),X=G??new AudioContext,Y=!G;try{return await X.decodeAudioData(Q)}finally{if(Y)await X.close()}}static async audios(W,G){let J=G??new AudioContext,Q=!G;try{return await Promise.all(W.map((X)=>S.audio(X,J)))}finally{if(Q)await J.close()}}}function E(W){if(W==="")return 0;let G=W.split("."),J=0,Q=[1000000000000,1e8,1e4];for(let X=0;X<Math.min(G.length,Q.length);X++){let Y=parseInt(G[X],10)||0;J+=Y*Q[X]}return J}function D(W){if(W===null||typeof W!=="object")return W;if(Array.isArray(W))return W.map((J)=>D(J));let G={};for(let J of Object.keys(W))G[J]=D(W[J]);return G}function f(W,G){let J=W.endsWith("/")?W.slice(0,-1):W,Q=G.startsWith("/")?G:`/${G}`;return`${J}${Q}`}class R extends Error{constructor(W){super(`Key "${W}" not found in storage`);this.name="KeyNotFoundError"}}class L{name;version;store;id;numericVersion;upgrades;storage;_openPromise;constructor({name:W="",version:G="",store:J=""}){this.name=W,this.version=G,this.store=J,this.upgrades={},this.numericVersion=E(G),this.id=this.computeId()}computeId(){if(this.name!==""&&this.version!==""&&this.store!=="")return`${this.name}::${this.store}::${this.version}_`;else if(this.name!==""&&this.version!=="")return`${this.name}::${this.version}_`;else if(this.name!=="")return`${this.name}::_`;else return""}configuration(W){if(W.name!==void 0)this.name=W.name;if(W.version!==void 0)this.version=W.version,this.numericVersion=E(W.version);if(W.store!==void 0)this.store=W.store;this.id=this.computeId()}async open(){if(this.storage instanceof Storage)return this;if(this._openPromise)return this._openPromise;this._openPromise=(async()=>{let W=[];if(this.version!==""){let G="";if(this.name!==""&&this.version!==""&&this.store!=="")G=`${this.name}::${this.store}::`;else if(this.name!==""&&this.version!=="")G=`${this.name}::`;let J=Object.keys(window.localStorage).filter((Q)=>{return Q.indexOf(G)===0}).map((Q)=>{return Q.replace(G,"").split("_")[0]}).filter((Q)=>{return Q.indexOf("::")===-1}).sort();if(J.length>0){let Q=J[0],X=E(Q);if(X<this.numericVersion){let Y=Object.keys(this.upgrades).sort((_,A)=>{let[U]=_.split("::").map(Number),[z]=A.split("::").map(Number);return U-z}),Z=Y.findIndex((_)=>{let[A]=_.split("::");return parseInt(A)===X});if(Z>-1)W=Y.slice(Z).filter((_)=>{let[A,U]=_.split("::");return parseInt(A)<this.numericVersion&&parseInt(U)<=this.numericVersion});let $=`${this.name}::${Q}_`;if(this.name!==""&&this.version!==""&&this.store!=="")$=`${this.name}::${this.store}::${Q}_`;else if(this.name!==""&&this.version!=="")$=`${this.name}::${Q}_`;let B=Object.keys(window.localStorage).filter((_)=>{return _.indexOf($)===0}).map((_)=>{return _.replace($,"")});for(let _ of B){let A=window.localStorage.getItem(`${$}${_}`);if(A!==null)window.localStorage.setItem(this.id+_,A);window.localStorage.removeItem(`${$}${_}`)}}}}this.storage=window.localStorage;for(let G of W)try{await this.upgrades[G].call(this,this)}catch(J){console.error(J)}return this})();try{return await this._openPromise}finally{this._openPromise=void 0}}async set(W,G){if(await this.open(),typeof G==="object")this.storage.setItem(this.id+W,JSON.stringify(G));else this.storage.setItem(this.id+W,String(G));return{key:W,value:G}}async update(W,G){try{let J=await this.get(W);if(typeof J==="object"&&J!==null){if(typeof G==="object"&&G!==null)G={...J,...G};this.storage.setItem(this.id+W,JSON.stringify(G))}else this.storage.setItem(this.id+W,String(G));return{key:W,value:G}}catch{return this.set(W,G)}}async get(W){await this.open();let G=this.storage.getItem(this.id+W);if(G===null)throw new R(W);try{let J=JSON.parse(G);if(J&&typeof J==="object")return J;return G}catch{return G}}async getAll(){let W=await this.keys(),G={};for(let J of W)try{G[J]=await this.get(J)}catch{}return G}async contains(W){if((await this.keys()).includes(W))return;else throw new R(W)}async upgrade(W,G,J){let Q=`${E(W)}::${E(G)}`;return this.upgrades[Q]=J,Promise.resolve()}async rename(W){if(this.name===W)throw Error("Cannot rename: new name is identical to current name");let G=await this.keys(),J=this.id;this.name=W,this.id=this.computeId();for(let Q of G){let X=this.storage.getItem(`${J}${Q}`);if(X!==null)this.storage.setItem(this.id+Q,X),this.storage.removeItem(`${J}${Q}`)}}async key(W,G=!1){let J=await this.keys(G);if(W<0||W>=J.length)throw Error(`Index ${W} out of bounds. Space has ${J.length} keys.`);return J[W]}async keys(W=!1){return await this.open(),Object.keys(this.storage).filter((G)=>{return G.indexOf(this.id)===0}).map((G)=>{if(W===!0)return G;else return G.replace(this.id,"")})}async remove(W){let G=await this.get(W);return this.storage.removeItem(this.id+W),G}async clear(){let W=await this.keys();for(let G of W)this.storage.removeItem(this.id+G)}}class q extends L{constructor({name:W="",version:G="",store:J=""}){super({name:W,version:G,store:J})}async open(){if(this.storage instanceof Storage)return this;return this.storage=window.sessionStorage,this}async upgrade(W,G,J){return console.warn("SessionStorage.upgrade() is a no-op. Session data is temporary and does not support migrations."),Promise.resolve()}}class b extends Error{constructor(W){super(`Key "${W}" not found in IndexedDB`);this.name="KeyNotFoundError"}}class O{name;version;store;props;index;keyPath;numericVersion;upgrades;storage;constructor({name:W="",version:G="",store:J="",props:Q={},index:X={}}){this.name=W,this.version=G,this.store=J,this.props=Q||{},this.index=X,this.keyPath=Q?.keyPath||"id",this.upgrades={},this.numericVersion=E(G)}configuration(W){if(W.name!==void 0)this.name=W.name;if(W.version!==void 0)this.version=W.version,this.numericVersion=E(W.version);if(W.store!==void 0)this.store=W.store}async open(){if(this.name==="")throw Error("IndexedDB requires a name. No name has been defined for this space.");if(this.store==="")throw Error("IndexedDB requires a store name. No store has been defined for this space.");if(this.storage instanceof IDBDatabase)return this;else if(this.storage instanceof Promise)return await this.storage;else{let W=(async()=>{let G,J=[],Q=await new Promise((X,Y)=>{let Z=window.indexedDB.open(this.name,this.numericVersion);Z.onerror=($)=>{Y(Error(`Failed to open IndexedDB "${this.name}": ${$.target.error?.message}`))},Z.onsuccess=($)=>{X($.target.result)},Z.onupgradeneeded=($)=>{G=$;let B=$.target.result;if($.oldVersion<1){let A=B.createObjectStore(this.store,this.props);for(let U of Object.keys(this.index)){let z=this.index[U];A.createIndex(z.name,z.field,z.props)}}else{let A=Object.keys(this.upgrades).sort((z,H)=>{let[M]=z.split("::").map(Number),[v]=H.split("::").map(Number);return M-v}),U=A.findIndex((z)=>{let[H]=z.split("::");return parseInt(H)===$.oldVersion});if(U>-1)J=A.slice(U).filter((z)=>{let[H,M]=z.split("::");return parseInt(H)<this.numericVersion&&parseInt(M)<=this.numericVersion})}let _=$.target.transaction;if(_)_.addEventListener("complete",()=>{})}});this.storage=Q;for(let X of J)try{await this.upgrades[X].call(this,this,G)}catch(Y){console.error(Y)}return this})();return this.storage=W,await W}}async set(W=null,G){return await this.open(),new Promise((J,Q)=>{let X=this.storage.transaction(this.store,"readwrite").objectStore(this.store),Y;if(W!==null){let Z={};Z[this.keyPath]=W,Y=X.put({...Z,...G})}else Y=X.add(G);Y.addEventListener("success",(Z)=>{J({key:String(Z.target.result),value:G})}),Y.addEventListener("error",(Z)=>{Q(Error(`Failed to set key "${W}": ${Z.target.error?.message}`))})})}async update(W,G){try{let J=await this.get(W);if(typeof J>"u")return this.set(W,G);return new Promise((Q,X)=>{let Z=this.storage.transaction(this.store,"readwrite").objectStore(this.store).put({...J,...G});Z.addEventListener("success",($)=>{Q({key:String($.target.result),value:G})}),Z.addEventListener("error",($)=>{X(Error(`Failed to update key "${W}": ${$.target.error?.message}`))})})}catch{return this.set(W,G)}}async get(W){return await this.open(),new Promise((G,J)=>{let X=this.storage.transaction(this.store,"readonly").objectStore(this.store).get(W);X.addEventListener("success",(Y)=>{let Z=Y.target.result;if(typeof Z<"u"&&Z!==null)G(Z);else J(new b(W))}),X.addEventListener("error",(Y)=>{J(Error(`Failed to get key "${W}": ${Y.target.error?.message}`))})})}async getAll(){return await this.open(),new Promise((W,G)=>{let Q=this.storage.transaction(this.store,"readonly").objectStore(this.store).getAll();Q.addEventListener("success",(X)=>{let Y={};X.target.result.forEach(($)=>{let B=$[this.keyPath],_={...$};delete _[this.keyPath],Y[B]=_}),W(Y)}),Q.addEventListener("error",(X)=>{G(Error(`Failed to get all items: ${X.target.error?.message}`))})})}async contains(W){await this.get(W)}async upgrade(W,G,J){let Q=`${E(W)}::${E(G)}`;return this.upgrades[Q]=J,Promise.resolve()}rename(){return Promise.reject(Error("IndexedDB does not support renaming databases. Create a new database and migrate data manually."))}key(){return Promise.reject(Error("IndexedDB does not support getting keys by index. Use keys() to get all keys."))}async keys(){return await this.open(),new Promise((W,G)=>{let Q=this.storage.transaction(this.store,"readonly").objectStore(this.store).getAllKeys();Q.addEventListener("success",(X)=>{W(X.target.result.map(String))},!1),Q.addEventListener("error",(X)=>{G(Error(`Failed to get keys: ${X.target.error?.message}`))},!1)})}async remove(W){let G=await this.get(W);return new Promise((J,Q)=>{let Y=this.storage.transaction(this.store,"readwrite").objectStore(this.store).delete(W);Y.addEventListener("success",()=>{J(G)},!1),Y.addEventListener("error",(Z)=>{Q(Error(`Failed to delete key "${W}": ${Z.target.error?.message}`))},!1)})}async clear(){return await this.open(),new Promise((W,G)=>{let Q=this.storage.transaction(this.store,"readwrite").objectStore(this.store).clear();Q.addEventListener("success",()=>{W()},!1),Q.addEventListener("error",(X)=>{G(Error(`Failed to clear store: ${X.target.error?.message}`))},!1)})}}class g extends Error{constructor(W){super(`Key "${W}" not found in remote storage`);this.name="KeyNotFoundError"}}class V{name;version;store;baseEndpoint;endpoint;props;storage;constructor({name:W="",version:G="",store:J="",endpoint:Q="",props:X={}}){this.name=W,this.version=G,this.store=J,this.baseEndpoint=Q,this.endpoint=this.computeEndpoint(),this.props=X}computeEndpoint(){if(this.store)return f(this.baseEndpoint,`${this.store}/`);return this.baseEndpoint.endsWith("/")?this.baseEndpoint:`${this.baseEndpoint}/`}configuration(W){if(W.name!==void 0)this.name=W.name;if(W.version!==void 0)this.version=W.version;if(W.store!==void 0)this.store=W.store;if(W.endpoint!==void 0)this.baseEndpoint=W.endpoint;this.endpoint=this.computeEndpoint()}async open(){if(typeof this.storage>"u")this.storage=K;return this}async set(W,G){await this.open();let Q=await(await this.storage.post(this.endpoint+W,G,this.props)).json();return{key:W,value:Q}}async update(W,G){await this.open();let Q={...await this.get(W),...G},Y=await(await this.storage.put(this.endpoint+W,Q,this.props)).json();return{key:W,value:Y}}async get(W){return await this.open(),this.storage.json(this.endpoint+W,{},this.props)}async getAll(){return await this.open(),this.storage.json(this.endpoint,{},this.props)}async contains(W){if((await this.keys()).includes(W))return;else throw new g(W)}upgrade(){return Promise.reject(Error("RemoteStorage cannot be upgraded from the client. Upgrades must be performed server-side."))}rename(){return Promise.reject(Error("RemoteStorage cannot be renamed from the client. Renaming must be performed server-side."))}key(){return Promise.reject(Error("RemoteStorage does not support getting keys by index. Use keys() to get all keys."))}async keys(){return await this.open(),this.storage.json(this.endpoint,{keys:!0},this.props)}async remove(W){return await this.open(),(await this.storage.delete(this.endpoint+W,{},this.props)).json()}async clear(){await this.open(),await this.storage.delete(this.endpoint,{},this.props)}}var y={LocalStorage:L,SessionStorage:q,IndexedDB:O,RemoteStorage:V};class k{_configuration;adapter;callbacks;transformations;constructor(W=y.LocalStorage,G={}){this._configuration={name:"",version:"",store:"",...G},this.adapter=new W(this._configuration),this.callbacks={create:[],update:[],delete:[]},this.transformations={}}configuration(W=null){if(W!==null){if(this._configuration={...this._configuration,...W},this.adapter.configuration)this.adapter.configuration(W);return}else return this._configuration}async open(){return await this.adapter.open(),this}applySetTransformations(W,G){let J=D(G);for(let Q of Object.values(this.transformations))if(typeof Q.set==="function")J=Q.set(W,J);return J}applyGetTransformations(W,G){let J=G;for(let Q of Object.values(this.transformations))if(typeof Q.get==="function")J=Q.get(W,J);return J}async set(W,G){let J=this.applySetTransformations(W,G),Q=await this.adapter.set(W,J);for(let X of this.callbacks.create)X.call(null,Q.key,Q.value);return Q}async update(W,G){let J=this.applySetTransformations(W,G),Q=await this.adapter.update(W,J);for(let X of this.callbacks.update)X.call(null,Q.key,Q.value);return Q}async get(W){let G=await this.adapter.get(W);return this.applyGetTransformations(W,G)}async getAll(){let W=await this.adapter.getAll(),G={};for(let J of Object.keys(W))G[J]=this.applyGetTransformations(J,W[J]);return G}async each(W){let G=await this.getAll(),J=[];for(let[Q,X]of Object.entries(G))J.push(W.call(this,Q,X));return Promise.all(J)}contains(W){return this.adapter.contains(W)}async upgrade(W,G,J){return await this.adapter.upgrade(W,G,J),this}rename(W){return this.adapter.rename(W)}onCreate(W){this.callbacks.create.push(W)}onUpdate(W){this.callbacks.update.push(W)}onDelete(W){this.callbacks.delete.push(W)}addTransformation({id:W,get:G,set:J}){this.transformations[W]={id:W,get:G,set:J}}removeTransformation(W){delete this.transformations[W]}key(W,G=!1){return this.adapter.key(W,G)}keys(W=!1){return this.adapter.keys(W)}async remove(W){let G=await this.adapter.remove(W);for(let J of this.callbacks.delete)J.call(null,W,G)}clear(){return this.adapter.clear()}}class p{static capitalize(W,G={}){let{preserveCase:J=!1}=G;return W.replace(/\w\S*/g,(Q)=>{let X=Q.charAt(0).toUpperCase(),Y=J?Q.substring(1):Q.substring(1).toLowerCase();return X+Y})}static selection(){return window.getSelection()?.toString()||""}static suffix(W,G){let J=G.indexOf(W);if(J===-1)return"";return G.slice(J+W.length)}static prefix(W,G){let J=G.indexOf(W);if(J===-1)return"";return G.slice(0,J)}static friendly(W){return W.toString().normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().trim().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-")}static truncate(W,G,J="..."){if(W.length<=G)return W;return W.slice(0,G-J.length).trimEnd()+J}static isBlank(W){return W===null||W===void 0||W.trim()===""}}class d{static async callAsync(W,G,...J){try{return await W.apply(G,J)}catch(Q){return Promise.reject(Q)}}static uuid(){if(typeof crypto<"u"&&"randomUUID"in crypto)return crypto.randomUUID();if(typeof crypto<"u"&&"getRandomValues"in crypto)return"10000000-1000-4000-8000-100000000000".replace(/[018]/g,(G)=>{let J=parseInt(G,10),Q=crypto.getRandomValues(new Uint8Array(1))[0],X=15>>Math.floor(J/4);return(J^Q&X).toString(16)});let W=()=>Math.floor((1+Math.random())*65536).toString(16).substring(1);return`${W()}${W()}-${W()}-${W()}-${W()}-${W()}${W()}${W()}`}static debounce(W,G){let J=null;return(...Q)=>{if(J!==null)clearTimeout(J);J=setTimeout(()=>{W(...Q),J=null},G)}}static throttle(W,G){let J=!1;return(...Q)=>{if(!J)W(...Q),J=!0,setTimeout(()=>{J=!1},G)}}}if(typeof window==="object")window.Artemis=N;
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=5FBF9D4F93D9636264756E2164756E21
|
|
4
4
|
//# sourceMappingURL=artemis.browser.js.map
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"/**\n * ==============================\n * File System\n * ==============================\n */\n\nimport { Request, RequestOptions } from './Request';\n\nexport type FileReadType = 'text' | 'base64' | 'buffer' | 'binary';\n\n/**\n * Return type mapping for file read operations\n */\nexport interface FileReadResult {\n text: string;\n base64: string;\n buffer: ArrayBuffer;\n binary: string;\n}\n\n/**\n * A utility wrapper for File/Blob operations\n */\nexport class FileSystem {\n\n /**\n * Read a file from a remote URL.\n *\n * @param url - The URL to fetch\n * @param type - The format to return ('text', 'base64', 'buffer', 'binary')\n * @param options - Request options\n */\n static async readRemote<T extends FileReadType>(\n url: string,\n type: T = 'base64' as T,\n options: RequestOptions = {}\n ): Promise<FileReadResult[T]> {\n const blob = await Request.blob(url, {}, options);\n return FileSystem.read(blob, type);\n }\n\n /**\n * Read a local File or Blob.\n *\n * @param file - The File or Blob to read\n * @param type - The format to return\n */\n static async read<T extends FileReadType>(file: File | Blob, type: T = 'text' as T): Promise<FileReadResult[T]> {\n switch (type) {\n case 'text':\n return file.text() as Promise<FileReadResult[T]>;\n\n case 'buffer':\n return file.arrayBuffer() as Promise<FileReadResult[T]>;\n\n case 'base64':\n return new Promise<FileReadResult[T]>((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result as FileReadResult[T]);\n reader.onerror = () => reject(reader.error);\n reader.readAsDataURL(file);\n });\n\n case 'binary':\n return new Promise<FileReadResult[T]>((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const buffer = reader.result as ArrayBuffer;\n let binary = '';\n const bytes = new Uint8Array(buffer);\n const length = bytes.byteLength;\n for (let i = 0; i < length; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n resolve(binary as FileReadResult[T]);\n };\n reader.onerror = () => reject(reader.error);\n reader.readAsArrayBuffer(file);\n });\n\n default: {\n const exhaustiveCheck: never = type;\n throw new Error(`FileSystem.read: Unknown type ${exhaustiveCheck}`);\n }\n }\n }\n\n /**\n * Create a File object.\n * This is a synchronous operation.\n *\n * @param name - Filename\n * @param content - Data (String, Blob, ArrayBuffer)\n * @param mimeType - MIME type (e.g. 'application/json')\n */\n static create(name: string, content: BlobPart, mimeType: string = 'text/plain'): File {\n return new File([content], name, { type: mimeType });\n }\n\n /**\n * Trigger a browser download for a specific File or Blob.\n * This will creates a temporary anchor tag to force the download.\n *\n * @param file - The file to download\n * @param name - Optional rename for the downloaded file\n */\n static download(file: File | Blob, name?: string): void {\n const url = URL.createObjectURL(file);\n const a = document.createElement('a');\n\n a.href = url;\n\n // Determine filename: use provided name, or File.name if available, or fallback\n let filename: string;\n if (name !== undefined && name !== '') {\n filename = name;\n } else if (file instanceof File && file.name !== '') {\n filename = file.name;\n } else {\n filename = 'download';\n }\n\n a.download = filename;\n\n document.body.appendChild(a);\n a.click();\n\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n }\n\n /**\n * Get the file extension safely\n *\n * @param name - Filename or path\n * @returns Lowercase extension without the dot, or empty string\n */\n static extension(name: string, allowHiddenFiles: boolean = false): string {\n const parts = name.split('.');\n\n // No extension: \"file\" or hidden file \".gitignore\"\n if (parts.length === 1 || (parts[0] === '' && parts.length === 2 && !allowHiddenFiles)) {\n return '';\n }\n\n return parts.pop()?.toLowerCase() ?? '';\n }\n\n /**\n * Check if a file is an image based on extension.\n *\n * @param name - Filename to check\n */\n static isImage(name: string): boolean {\n const ext = FileSystem.extension(name);\n const valid = new Set([\n 'jpg', 'jpeg', 'png', 'gif', 'svg',\n 'webp', 'avif', 'bmp', 'ico', 'tiff', 'heic'\n ]);\n return valid.has(ext);\n }\n\n /**\n * Check if a file is a video based on extension.\n *\n * @param name - Filename to check\n */\n static isVideo(name: string): boolean {\n const ext = FileSystem.extension(name);\n const valid = new Set([\n 'mp4', 'webm', 'ogg', 'mov', 'avi', 'mkv', 'm4v'\n ]);\n return valid.has(ext);\n }\n\n /**\n * Check if a file is audio based on extension.\n *\n * @param name - Filename to check\n */\n static isAudio(name: string): boolean {\n const ext = FileSystem.extension(name);\n const valid = new Set([\n 'mp3', 'wav', 'ogg', 'flac', 'aac', 'm4a', 'wma'\n ]);\n return valid.has(ext);\n }\n\n /**\n * Convert bytes to human-readable size.\n *\n * @param bytes - Size in bytes\n * @param decimals - Number of decimal places\n */\n static humanSize(bytes: number, decimals: number = 2): string {\n if (bytes === 0) return '0 Bytes';\n\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, i)).toFixed(decimals)) + ' ' + sizes[i];\n }\n}\n",
|
|
9
9
|
"/**\n * ==============================\n * Form\n * ==============================\n */\n\nexport type FormValue = string | number | boolean | File | null;\nexport type FormValues = Record<string, FormValue | FormValue[]>;\n\n/**\n * Options for parsing form values\n */\nexport interface FormParseOptions {\n parseNumbers?: boolean; // Whether to parse numeric strings as numbers\n parseBooleans?: boolean; // Whether to parse checkbox values as booleans for single checkboxes\n}\n\nexport class Form {\n\n /**\n * Fill a form with data.\n *\n * @param formName - The data-form attribute value\n * @param data - Key-value pairs to fill\n */\n static fill(formName: string, data: Record<string, unknown>): void {\n const form = document.querySelector(`form[data-form='${formName}']`) as HTMLFormElement;\n\n if (!form) {\n console.warn(`Form [data-form='${formName}'] not found.`);\n return;\n }\n\n Object.entries(data).forEach(([name, value]) => {\n const elements = form.querySelectorAll(`[name='${name}']`);\n\n if (elements.length === 0) return;\n\n const firstElement = elements[0] as HTMLInputElement;\n const type = firstElement.type;\n const valString = String(value);\n\n switch (type) {\n case 'radio':\n elements.forEach((el) => {\n const input = el as HTMLInputElement;\n if (input.value === valString) {\n input.checked = true;\n }\n });\n break;\n\n case 'checkbox':\n if (elements.length === 1) {\n // Single checkbox: treat as boolean\n (elements[0] as HTMLInputElement).checked = !!value;\n } else if (Array.isArray(value)) {\n // Multiple checkboxes: check those whose value is in the array\n const stringValues = value.map(String);\n elements.forEach((el) => {\n const input = el as HTMLInputElement;\n input.checked = stringValues.includes(input.value);\n });\n }\n break;\n\n case 'file':\n // File inputs cannot be programmatically filled for security reasons\n break;\n\n default:\n (elements[0] as HTMLInputElement | HTMLSelectElement).value = valString;\n break;\n }\n });\n }\n\n /**\n * Get all values from a form.\n *\n * @param formName - The data-form attribute value\n * @param options - Parsing options\n * @returns Form values as a record\n */\n static values(formName: string, options: FormParseOptions = {}): FormValues {\n const { parseNumbers = true, parseBooleans = true } = options;\n\n const form = document.querySelector(`form[data-form='${formName}']`) as HTMLFormElement;\n\n if (!form) {\n console.warn(`Form [data-form='${formName}'] not found.`);\n return {};\n }\n\n const formData = new FormData(form);\n const data: FormValues = {};\n\n const keys = Array.from(new Set(formData.keys()));\n\n for (const key of keys) {\n const allValues = formData.getAll(key);\n const element = form.querySelector(`[name='${key}']`) as HTMLInputElement | null;\n const inputType = element?.type;\n\n // Handle file inputs\n if (inputType === 'file') {\n const files = allValues.filter((v): v is File => v instanceof File);\n if (element?.multiple || files.length > 1) {\n data[key] = files;\n } else {\n data[key] = files[0] || null;\n }\n continue;\n }\n\n // Handle checkboxes\n if (inputType === 'checkbox') {\n const checkboxes = form.querySelectorAll(`[name='${key}']`);\n if (checkboxes.length === 1 && parseBooleans) {\n // Single checkbox: return boolean\n data[key] = (checkboxes[0] as HTMLInputElement).checked;\n continue;\n }\n // Multiple checkboxes: return array of checked values\n data[key] = allValues.map((v) => Form.parseValue(String(v), parseNumbers));\n continue;\n }\n\n // Handle number inputs\n if (inputType === 'number' && parseNumbers) {\n if (allValues.length > 1) {\n data[key] = allValues.map((v) => parseFloat(String(v)));\n } else {\n data[key] = parseFloat(String(allValues[0]));\n }\n continue;\n }\n\n // Handle other inputs\n if (allValues.length > 1) {\n data[key] = allValues.map((v) => Form.parseValue(String(v), parseNumbers));\n } else {\n data[key] = Form.parseValue(String(allValues[0]), parseNumbers);\n }\n }\n\n return data;\n }\n\n /**\n * Parse a string value, optionally converting to number.\n *\n * @param value - String value to parse\n * @param parseNumbers - Whether to parse numeric strings\n */\n private static parseValue(value: string, parseNumbers: boolean): string | number {\n if (parseNumbers && value !== '' && !isNaN(Number(value))) {\n return Number(value);\n }\n return value;\n }\n\n /**\n * Reset a form to its initial state.\n *\n * @param formName - The data-form attribute value\n */\n static reset(formName: string): void {\n const form = document.querySelector(`form[data-form='${formName}']`) as HTMLFormElement;\n\n if (!form) {\n console.warn(`Form [data-form='${formName}'] not found.`);\n return;\n }\n\n form.reset();\n }\n\n /**\n * Check if a form is valid according to HTML5 validation.\n *\n * @param formName - The data-form attribute value\n */\n static isValid(formName: string): boolean {\n const form = document.querySelector(`form[data-form='${formName}']`) as HTMLFormElement;\n\n if (!form) {\n console.warn(`Form [data-form='${formName}'] not found.`);\n return false;\n }\n\n return form.checkValidity();\n }\n\n /**\n * Report validity and show browser validation messages.\n *\n * @param formName - The data-form attribute value\n */\n static reportValidity(formName: string): boolean {\n const form = document.querySelector(`form[data-form='${formName}']`) as HTMLFormElement;\n\n if (!form) {\n console.warn(`Form [data-form='${formName}'] not found.`);\n return false;\n }\n\n return form.reportValidity();\n }\n}\n",
|
|
10
10
|
"/**\n * ==============================\n * Platform\n * ==============================\n */\n\nexport type DesktopPlatform = 'Windows' | 'macOS' | 'Linux' | 'FreeBSD' | 'Any' | 'ChromeOS';\nexport type MobilePlatform = 'Android' | 'iOS' | 'iPadOS' | 'WindowsMobile' | 'BlackBerry' | 'Any';\nexport type Orientation = 'portrait' | 'landscape';\n\ninterface NavigatorUAData {\n platform: string;\n mobile: boolean;\n brands: { brand: string; version: string }[];\n}\n\ninterface NavigatorWithStandalone extends Navigator {\n standalone?: boolean;\n userAgentData?: NavigatorUAData;\n}\n\ninterface ExtendedWindow extends Window {\n process?: {\n type?: string;\n versions?: { electron?: string };\n };\n cordova?: unknown;\n}\n\nexport class Platform {\n /**\n * Check if the screen has a high pixel density (Retina)\n */\n static get retina(): boolean {\n return window.devicePixelRatio >= 2;\n }\n\n /**\n * Check if the device is in portrait orientation.\n * Uses matchMedia to align perfectly with CSS media queries.\n */\n static get portrait(): boolean {\n return window.matchMedia('(orientation: portrait)').matches;\n }\n\n /**\n * Check if the device is in landscape orientation.\n */\n static get landscape(): boolean {\n return window.matchMedia('(orientation: landscape)').matches;\n }\n\n /**\n * Get current device orientation as a string.\n */\n static get orientation(): Orientation {\n return Platform.portrait ? 'portrait' : 'landscape';\n }\n\n /**\n * Check if the user prefers Dark Mode\n */\n static get darkMode(): boolean {\n return window.matchMedia('(prefers-color-scheme: dark)').matches;\n }\n\n /**\n * Check if the user prefers reduced motion\n */\n static get reducedMotion(): boolean {\n return window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n }\n\n /**\n * Check if the device supports touch events.\n * Useful for distinguishing hybrid laptops from tablets.\n */\n static get touch(): boolean {\n return (\n 'ontouchstart' in window ||\n navigator.maxTouchPoints > 0\n );\n }\n\n /**\n * Check if the app is running in \"Standalone\" mode (Installed PWA).\n */\n static get standalone(): boolean {\n const nav = navigator as NavigatorWithStandalone;\n return (\n window.matchMedia('(display-mode: standalone)').matches ||\n nav.standalone === true // iOS fallback\n );\n }\n\n /**\n * Check if the app is running inside Electron.\n * Checks both Renderer process and Main process contexts.\n */\n static get electron(): boolean {\n const win = window as ExtendedWindow;\n\n if (navigator.userAgent.toLowerCase().includes(' electron/')) {\n return true;\n }\n\n if (win.process?.type === 'renderer') {\n return true;\n }\n\n if (win.process?.versions?.electron) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Check if the app is running inside Cordova / PhoneGap.\n */\n static get cordova(): boolean {\n return !!(window as ExtendedWindow).cordova;\n }\n\n /**\n * Internal helper to normalize platform detection\n */\n private static get userAgent(): string {\n return navigator.userAgent.toLowerCase();\n }\n\n /**\n * Check if the app is running on a Desktop platform.\n *\n * @param os - Specific desktop OS to check for, or 'Any' for any desktop\n */\n static desktop(os: DesktopPlatform = 'Any'): boolean {\n const nav = navigator as NavigatorWithStandalone;\n\n if (nav.userAgentData?.mobile === true) {\n return false;\n }\n\n if (Platform.isIpadOS()) {\n return false;\n }\n\n const ua = Platform.userAgent;\n const dataPlatform = nav.userAgentData?.platform?.toLowerCase() || '';\n\n const checks: Record<Exclude<DesktopPlatform, 'Any'>, boolean> = {\n 'ChromeOS': dataPlatform.includes('cros') || ua.includes('cros'),\n 'Windows': dataPlatform.includes('windows') || ua.includes('windows'),\n 'macOS': dataPlatform.includes('macos') || ua.includes('macintosh'),\n 'Linux': !ua.includes('android') && (dataPlatform.includes('linux') || ua.includes('linux')),\n 'FreeBSD': dataPlatform.includes('freebsd') || ua.includes('freebsd'),\n };\n\n if (os === 'Any') {\n return Object.values(checks).some(val => val);\n }\n\n return checks[os] || false;\n }\n\n /**\n * Check if the app is running on a Mobile platform.\n *\n * @param os - Specific mobile OS to check for, or 'Any' for any mobile\n */\n static mobile(os: MobilePlatform = 'Any'): boolean {\n const nav = navigator as NavigatorWithStandalone;\n\n if (nav.userAgentData?.mobile === true && os === 'Any') {\n return true;\n }\n\n const ua = Platform.userAgent;\n\n const checks: Record<Exclude<MobilePlatform, 'Any'>, boolean> = {\n 'Android': ua.includes('android'),\n 'iOS': /iphone|ipod/.test(ua),\n 'iPadOS': Platform.isIpadOS(),\n 'WindowsMobile': /windows phone|iemobile|wpdesktop/.test(ua),\n 'BlackBerry': /blackberry|bb10/.test(ua),\n };\n\n if (os === 'Any') {\n return Object.values(checks).some(val => val);\n }\n\n return checks[os] || false;\n }\n\n /**\n * Detect iPadOS explicitly.\n * Modern iPads send a \"Macintosh\" User Agent, but have Touch Points.\n */\n private static isIpadOS(): boolean {\n const ua = Platform.userAgent;\n\n if (ua.includes('ipad')) {\n return true;\n }\n\n if (ua.includes('macintosh') && navigator.maxTouchPoints > 0) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Check if the platform supports Service Workers.\n * Uses `isSecureContext` to accurately allow localhost/HTTPS.\n */\n static get serviceWorkers(): boolean {\n return 'serviceWorker' in navigator && window.isSecureContext;\n }\n\n /**\n * Check if the device has a coarse pointer (touch) as primary input.\n */\n static get coarsePointer(): boolean {\n return window.matchMedia('(pointer: coarse)').matches;\n }\n\n /**\n * Check if the device has a fine pointer (mouse) as primary input.\n */\n static get finePointer(): boolean {\n return window.matchMedia('(pointer: fine)').matches;\n }\n\n /**\n * Check if the device supports hover interactions.\n */\n static get canHover(): boolean {\n return window.matchMedia('(hover: hover)').matches;\n }\n}\n",
|
|
11
|
-
"/**\n * ==============================\n * Preload\n * ==============================\n */\n\ninterface RequestInitWithPriority extends RequestInit {\n priority?: 'high' | 'low' | 'auto';\n}\n\nexport class Preload {\n /**\n * Preload and decode an image. Decoding prevents the image from still having\n * a delay when it is displayed.\n *\n * @param route - URL of the image\n * @returns Promise<HTMLImageElement>\n */\n static async image(route: string): Promise<HTMLImageElement> {\n const img = new Image();\n img.src = route;\n\n await img.decode();\n\n return img;\n }\n\n /**\n * Preload multiple images in parallel.\n *\n * @param routes - Array of image URLs\n * @returns Promise<HTMLImageElement[]>\n */\n static async images(routes: string[]): Promise<HTMLImageElement[]> {\n return Promise.all(routes.map(route => Preload.image(route)));\n }\n\n /**\n * Preload a generic file by fetching it.\n *\n * @param route - URL of the file\n * @param priority - Fetch priority hint (default: 'low')\n * @returns Promise<Response>\n */\n static async file(route: string, priority: 'high' | 'low' | 'auto' = 'low'): Promise<Response> {\n const options: RequestInitWithPriority = { priority };\n const response = await fetch(route, options as RequestInit);\n\n if (!response.ok) {\n throw new Error(`Preload failed for \"${route}\": ${response.status} ${response.statusText}`);\n }\n\n return response;\n }\n\n /**\n * Preload multiple files in parallel.\n *\n * @param routes - Array of file URLs\n * @param priority - Fetch priority hint\n * @returns Promise<Response[]>\n */\n static async files(routes: string[], priority: 'high' | 'low' | 'auto' = 'low'): Promise<Response[]> {\n return Promise.all(routes.map(route => Preload.file(route, priority)));\n }\n\n /**\n * Check if a URL is cached in a specific cache.\n *\n * @param cacheName - Name of the cache to check\n * @param url - URL to look for\n * @returns Whether the URL is cached\n */\n static async isCached(cacheName: string, url: string): Promise<boolean> {\n if (!('caches' in window)) {\n return false;\n }\n\n try {\n const cache = await caches.open(cacheName);\n const match = await cache.match(url);\n return !!match;\n } catch {\n // Cache API may throw in private browsing mode or other restricted contexts\n return false;\n }\n }\n\n /**\n * Add a URL to a cache.\n *\n * @param cacheName - Name of the cache\n * @param url - URL to cache\n * @returns Promise<void>\n */\n static async addToCache(cacheName: string, url: string): Promise<void> {\n if (!('caches' in window)) {\n throw new Error('Cache API is not supported in this browser');\n }\n\n try {\n const cache = await caches.open(cacheName);\n await cache.add(url);\n } catch (error) {\n throw new Error(`Failed to cache \"${url}\": ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n /**\n * Add multiple URLs to a cache.\n *\n * @param cacheName - Name of the cache\n * @param urls - URLs to cache\n * @returns Promise<void>\n */\n static async addAllToCache(cacheName: string, urls: string[]): Promise<void> {\n if (!('caches' in window)) {\n throw new Error('Cache API is not supported in this browser');\n }\n\n try {\n const cache = await caches.open(cacheName);\n await cache.addAll(urls);\n } catch (error) {\n throw new Error(`Failed to cache URLs: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n /**\n * Preload a CSS stylesheet.\n *\n * @param url - URL of the stylesheet\n * @returns Promise<void>\n */\n static async stylesheet(url: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const link = document.createElement('link');\n\n link.rel = 'preload';\n link.as = 'style';\n link.href = url;\n\n link.onload = () => resolve();\n link.onerror = () => reject(new Error(`Failed to preload stylesheet: ${url}`));\n\n document.head.appendChild(link);\n });\n }\n\n /**\n * Preload a JavaScript file.\n *\n * @param url - URL of the script\n * @returns Promise<void>\n */\n static async script(url: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const link = document.createElement('link');\n\n link.rel = 'preload';\n link.as = 'script';\n link.href = url;\n\n link.onload = () => resolve();\n link.onerror = () => reject(new Error(`Failed to preload script: ${url}`));\n\n document.head.appendChild(link);\n });\n }\n\n /**\n * Preload a font file.\n *\n * @param url - URL of the font\n * @param crossOrigin - Whether to use crossorigin attribute (default: true for fonts)\n * @returns Promise<void>\n */\n static async font(url: string, crossOrigin: boolean = true): Promise<void> {\n return new Promise((resolve, reject) => {\n const link = document.createElement('link');\n\n link.rel = 'preload';\n link.as = 'font';\n link.href = url;\n\n if (crossOrigin) {\n link.crossOrigin = 'anonymous';\n }\n\n link.onload = () => resolve();\n link.onerror = () => reject(new Error(`Failed to preload font: ${url}`));\n\n document.head.appendChild(link);\n });\n }\n}\n",
|
|
11
|
+
"/**\n * ==============================\n * Preload\n * ==============================\n */\n\ninterface RequestInitWithPriority extends RequestInit {\n priority?: 'high' | 'low' | 'auto';\n}\n\nexport class Preload {\n /**\n * Preload and decode an image. Decoding prevents the image from still having\n * a delay when it is displayed.\n *\n * @param route - URL of the image\n * @returns Promise<HTMLImageElement>\n */\n static async image(route: string): Promise<HTMLImageElement> {\n const img = new Image();\n img.src = route;\n\n await img.decode();\n\n return img;\n }\n\n /**\n * Preload multiple images in parallel.\n *\n * @param routes - Array of image URLs\n * @returns Promise<HTMLImageElement[]>\n */\n static async images(routes: string[]): Promise<HTMLImageElement[]> {\n return Promise.all(routes.map(route => Preload.image(route)));\n }\n\n /**\n * Preload a generic file by fetching it.\n *\n * @param route - URL of the file\n * @param priority - Fetch priority hint (default: 'low')\n * @returns Promise<Response>\n */\n static async file(route: string, priority: 'high' | 'low' | 'auto' = 'low'): Promise<Response> {\n const options: RequestInitWithPriority = { priority };\n const response = await fetch(route, options as RequestInit);\n\n if (!response.ok) {\n throw new Error(`Preload failed for \"${route}\": ${response.status} ${response.statusText}`);\n }\n\n return response;\n }\n\n /**\n * Preload multiple files in parallel.\n *\n * @param routes - Array of file URLs\n * @param priority - Fetch priority hint\n * @returns Promise<Response[]>\n */\n static async files(routes: string[], priority: 'high' | 'low' | 'auto' = 'low'): Promise<Response[]> {\n return Promise.all(routes.map(route => Preload.file(route, priority)));\n }\n\n /**\n * Check if a URL is cached in a specific cache.\n *\n * @param cacheName - Name of the cache to check\n * @param url - URL to look for\n * @returns Whether the URL is cached\n */\n static async isCached(cacheName: string, url: string): Promise<boolean> {\n if (!('caches' in window)) {\n return false;\n }\n\n try {\n const cache = await caches.open(cacheName);\n const match = await cache.match(url);\n return !!match;\n } catch {\n // Cache API may throw in private browsing mode or other restricted contexts\n return false;\n }\n }\n\n /**\n * Add a URL to a cache.\n *\n * @param cacheName - Name of the cache\n * @param url - URL to cache\n * @returns Promise<void>\n */\n static async addToCache(cacheName: string, url: string): Promise<void> {\n if (!('caches' in window)) {\n throw new Error('Cache API is not supported in this browser');\n }\n\n try {\n const cache = await caches.open(cacheName);\n await cache.add(url);\n } catch (error) {\n throw new Error(`Failed to cache \"${url}\": ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n /**\n * Add multiple URLs to a cache.\n *\n * @param cacheName - Name of the cache\n * @param urls - URLs to cache\n * @returns Promise<void>\n */\n static async addAllToCache(cacheName: string, urls: string[]): Promise<void> {\n if (!('caches' in window)) {\n throw new Error('Cache API is not supported in this browser');\n }\n\n try {\n const cache = await caches.open(cacheName);\n await cache.addAll(urls);\n } catch (error) {\n throw new Error(`Failed to cache URLs: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n /**\n * Preload a CSS stylesheet.\n *\n * @param url - URL of the stylesheet\n * @returns Promise<void>\n */\n static async stylesheet(url: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const link = document.createElement('link');\n\n link.rel = 'preload';\n link.as = 'style';\n link.href = url;\n\n link.onload = () => resolve();\n link.onerror = () => reject(new Error(`Failed to preload stylesheet: ${url}`));\n\n document.head.appendChild(link);\n });\n }\n\n /**\n * Preload a JavaScript file.\n *\n * @param url - URL of the script\n * @returns Promise<void>\n */\n static async script(url: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const link = document.createElement('link');\n\n link.rel = 'preload';\n link.as = 'script';\n link.href = url;\n\n link.onload = () => resolve();\n link.onerror = () => reject(new Error(`Failed to preload script: ${url}`));\n\n document.head.appendChild(link);\n });\n }\n\n /**\n * Preload a font file.\n *\n * @param url - URL of the font\n * @param crossOrigin - Whether to use crossorigin attribute (default: true for fonts)\n * @returns Promise<void>\n */\n static async font(url: string, crossOrigin: boolean = true): Promise<void> {\n return new Promise((resolve, reject) => {\n const link = document.createElement('link');\n\n link.rel = 'preload';\n link.as = 'font';\n link.href = url;\n\n if (crossOrigin) {\n link.crossOrigin = 'anonymous';\n }\n\n link.onload = () => resolve();\n link.onerror = () => reject(new Error(`Failed to preload font: ${url}`));\n\n document.head.appendChild(link);\n });\n }\n\n /**\n * Preload and decode an audio file into an AudioBuffer.\n *\n * @param url - URL of the audio file\n * @param audioContext - Optional AudioContext to use for decoding. If not provided,\n * a temporary one will be created. For best results, pass the\n * same AudioContext that will be used for playback.\n * @returns Promise<AudioBuffer> - Decoded audio ready for playback\n */\n static async audio(url: string, audioContext?: AudioContext): Promise<AudioBuffer> {\n const response = await fetch(url);\n\n if (!response.ok) {\n throw new Error(`Preload failed for \"${url}\": ${response.status} ${response.statusText}`);\n }\n\n const arrayBuffer = await response.arrayBuffer();\n\n // Use provided context or create a temporary one for decoding\n const ctx = audioContext ?? new AudioContext();\n const shouldCloseContext = !audioContext;\n\n try {\n const audioBuffer = await ctx.decodeAudioData(arrayBuffer);\n return audioBuffer;\n } finally {\n // Close the context if we created it (to free resources)\n if (shouldCloseContext) {\n await ctx.close();\n }\n }\n }\n\n /**\n * Preload and decode multiple audio files in parallel.\n *\n * @param urls - Array of audio file URLs\n * @param audioContext - Optional AudioContext to use for decoding\n * @returns Promise<AudioBuffer[]>\n */\n static async audios(urls: string[], audioContext?: AudioContext): Promise<AudioBuffer[]> {\n // Create a shared context for decoding if none provided\n const ctx = audioContext ?? new AudioContext();\n const shouldCloseContext = !audioContext;\n\n try {\n return await Promise.all(urls.map(url => Preload.audio(url, ctx)));\n } finally {\n if (shouldCloseContext) {\n await ctx.close();\n }\n }\n }\n}\n",
|
|
12
12
|
"/**\n * ==============================\n * Space Adapter Types\n * ==============================\n */\n\n/**\n * Base configuration for all space adapters\n */\nexport interface SpaceConfiguration {\n name?: string;\n version?: string;\n store?: string;\n}\n\n/**\n * LocalStorage/SessionStorage configuration\n */\nexport type LocalStorageConfiguration = SpaceConfiguration;\n\n/**\n * IndexedDB configuration with additional options\n */\nexport interface IndexedDBConfiguration extends SpaceConfiguration {\n props?: IDBObjectStoreParameters;\n index?: Record<string, {\n name: string;\n field: string;\n props?: IDBIndexParameters;\n }>;\n}\n\n/**\n * RemoteStorage configuration\n */\nexport interface RemoteStorageConfiguration extends SpaceConfiguration {\n endpoint?: string;\n props?: Record<string, unknown>;\n}\n\n/**\n * Generic storage value type\n */\nexport type StorageValue = unknown;\n\n/**\n * Key-value result type\n */\nexport interface KeyValueResult {\n key: string;\n value: StorageValue;\n}\n\n/**\n * Upgrade callback function type\n */\nexport type UpgradeCallback<T = unknown> = (adapter: T, event?: IDBVersionChangeEvent) => Promise<void>;\n\n/**\n * Base interface for all space adapters\n */\nexport interface SpaceAdapterInterface {\n name: string;\n version: string;\n store: string;\n\n open(): Promise<this>;\n set(key: string | null, value: StorageValue): Promise<KeyValueResult>;\n update(key: string, value: StorageValue): Promise<KeyValueResult>;\n get(key: string): Promise<StorageValue>;\n getAll(): Promise<Record<string, StorageValue>>;\n contains(key: string): Promise<void>;\n upgrade(oldVersion: string, newVersion: string, callback: UpgradeCallback): Promise<void>;\n rename(name: string): Promise<void>;\n key(index: number, full?: boolean): Promise<string>;\n keys(full?: boolean): Promise<string[]>;\n remove(key: string): Promise<StorageValue>;\n clear(): Promise<void>;\n configuration?(config: SpaceConfiguration): void;\n}\n\n/**\n * Space adapter constructor type\n */\nexport type SpaceAdapterConstructor = new (config: SpaceConfiguration) => SpaceAdapterInterface;\n\n/**\n * Convert a version string to a numeric value for comparison.\n * Each segment is padded to 5 digits to support versions up to 99999.x.x\n *\n * @param version - Version string (e.g., \"1.0.0\", \"10.2.15\")\n * @returns Numeric version for comparison\n */\nexport function versionToNumber(version: string): number {\n if (version === '') {\n return 0;\n }\n\n const segments = version.split('.');\n let result = 0;\n const multipliers = [1000000000000, 100000000, 10000]; // Support up to 4 segments\n\n for (let i = 0; i < Math.min(segments.length, multipliers.length); i++) {\n const segment = parseInt(segments[i], 10) || 0;\n result += segment * multipliers[i];\n }\n\n return result;\n}\n\n/**\n * Compare two version strings\n *\n * @param v1 - First version string\n * @param v2 - Second version string\n * @returns -1 if v1 < v2, 0 if v1 === v2, 1 if v1 > v2\n */\nexport function compareVersions(v1: string, v2: string): number {\n const n1 = versionToNumber(v1);\n const n2 = versionToNumber(v2);\n\n if (n1 < n2) return -1;\n if (n1 > n2) return 1;\n return 0;\n}\n\n/**\n * Deep clone a value to prevent mutation\n *\n * @param value - Value to clone\n * @returns Cloned value\n */\nexport function cloneValue<T>(value: T): T {\n if (value === null || typeof value !== 'object') {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map(item => cloneValue(item)) as T;\n }\n\n const cloned: Record<string, unknown> = {};\n for (const key of Object.keys(value as object)) {\n cloned[key] = cloneValue((value as Record<string, unknown>)[key]);\n }\n return cloned as T;\n}\n\n/**\n * Normalize a URL by ensuring proper slash handling\n *\n * @param base - Base URL\n * @param path - Path to append\n * @returns Normalized URL\n */\nexport function normalizeUrl(base: string, path: string): string {\n const normalizedBase = base.endsWith('/') ? base.slice(0, -1) : base;\n const normalizedPath = path.startsWith('/') ? path : `/${path}`;\n return `${normalizedBase}${normalizedPath}`;\n}\n",
|
|
13
13
|
"/**\n * ==============================\n * Local Storage Adapter\n * ==============================\n */\n\nimport type { LocalStorageConfiguration, StorageValue, KeyValueResult, UpgradeCallback, SpaceAdapterInterface } from './types';\nimport { versionToNumber } from './types';\n\n/**\n * Error thrown when a key is not found in storage\n */\nexport class KeyNotFoundError extends Error {\n constructor(key: string) {\n super(`Key \"${key}\" not found in storage`);\n this.name = 'KeyNotFoundError';\n }\n}\n\n/**\n * The Local Storage Adapter provides the Space Class the ability to interact\n * with the localStorage API found in most modern browsers.\n */\nexport class LocalStorage implements SpaceAdapterInterface {\n public name: string;\n public version: string;\n public store: string;\n public id: string;\n public numericVersion: number;\n public upgrades: Record<string, UpgradeCallback<LocalStorage>>;\n public storage: Storage | undefined;\n private _openPromise: Promise<this> | undefined;\n\n /**\n * Create a new LocalStorage. If no configuration is provided, the LocalStorage\n * global object is used. The LocalStorage Adapter can provide independency\n * by store name and space name.\n *\n * @param configuration - Configuration Object for the Adapter\n */\n constructor({ name = '', version = '', store = '' }: LocalStorageConfiguration) {\n this.name = name;\n this.version = version;\n this.store = store;\n this.upgrades = {};\n\n this.numericVersion = versionToNumber(version);\n this.id = this.computeId();\n }\n\n /**\n * Compute the storage ID based on current name, version, and store\n *\n * @returns The computed ID string\n */\n private computeId(): string {\n if (this.name !== '' && this.version !== '' && this.store !== '') {\n return `${this.name}::${this.store}::${this.version}_`;\n } else if (this.name !== '' && this.version !== '') {\n return `${this.name}::${this.version}_`;\n } else if (this.name !== '') {\n return `${this.name}::_`;\n } else {\n return '';\n }\n }\n\n /**\n * Modify the configuration\n *\n * @param config - Configuration object to set up\n */\n configuration(config: LocalStorageConfiguration): void {\n if (config.name !== undefined) this.name = config.name;\n if (config.version !== undefined) {\n this.version = config.version;\n this.numericVersion = versionToNumber(config.version);\n }\n if (config.store !== undefined) this.store = config.store;\n\n // Recalculate the ID after configuration changes\n this.id = this.computeId();\n }\n\n /**\n * Open the Storage Object\n *\n * @returns Promise resolving to this adapter\n */\n async open(): Promise<this> {\n // Already opened\n if (this.storage instanceof Storage) {\n return this;\n }\n\n // Currently opening - wait for it\n if (this._openPromise) {\n return this._openPromise;\n }\n\n // Start opening\n this._openPromise = (async () => {\n let upgradesToApply: string[] = [];\n\n // Check if this space is versioned\n if (this.version !== '') {\n // Get the versionless part of the ID\n let versionless = '';\n if (this.name !== '' && this.version !== '' && this.store !== '') {\n versionless = `${this.name}::${this.store}::`;\n } else if (this.name !== '' && this.version !== '') {\n versionless = `${this.name}::`;\n }\n\n // Get all the currently stored keys that contain the versionless ID\n const storedVersions = Object.keys(window.localStorage).filter((key) => {\n return key.indexOf(versionless) === 0;\n }).map((key) => {\n return key.replace(versionless, '').split('_')[0];\n }).filter((key) => {\n return key.indexOf('::') === -1;\n }).sort();\n\n if (storedVersions.length > 0) {\n const oldVersion = storedVersions[0];\n const oldVersionNumeric = versionToNumber(oldVersion);\n\n if (oldVersionNumeric < this.numericVersion) {\n const availableUpgrades = Object.keys(this.upgrades).sort((a, b) => {\n const [aOld] = a.split('::').map(Number);\n const [bOld] = b.split('::').map(Number);\n return aOld - bOld;\n });\n\n const startFrom = availableUpgrades.findIndex((u) => {\n const [old] = u.split('::');\n return parseInt(old) === oldVersionNumeric;\n });\n\n if (startFrom > -1) {\n upgradesToApply = availableUpgrades.slice(startFrom).filter((u) => {\n const [old, next] = u.split('::');\n return parseInt(old) < this.numericVersion && parseInt(next) <= this.numericVersion;\n });\n }\n\n // Get the previous ID using the old version\n let previousId = `${this.name}::${oldVersion}_`;\n\n if (this.name !== '' && this.version !== '' && this.store !== '') {\n previousId = `${this.name}::${this.store}::${oldVersion}_`;\n } else if (this.name !== '' && this.version !== '') {\n previousId = `${this.name}::${oldVersion}_`;\n }\n\n // Get all keys from the previous version\n const keys = Object.keys(window.localStorage).filter((key) => {\n return key.indexOf(previousId) === 0;\n }).map((key) => {\n return key.replace(previousId, '');\n });\n\n for (const key of keys) {\n const previous = window.localStorage.getItem(`${previousId}${key}`);\n if (previous !== null) {\n window.localStorage.setItem(this.id + key, previous);\n }\n window.localStorage.removeItem(`${previousId}${key}`);\n }\n }\n }\n }\n\n this.storage = window.localStorage;\n\n // Apply upgrades\n for (const upgradeKey of upgradesToApply) {\n try {\n await this.upgrades[upgradeKey].call(this, this);\n } catch (e) {\n console.error(e);\n }\n }\n\n return this;\n })();\n\n try {\n return await this._openPromise;\n } finally {\n this._openPromise = undefined;\n }\n }\n\n /**\n * Store a key-value pair\n *\n * @param key - Key with which this value will be saved\n * @param value - Value to save\n * @returns Promise with key and value\n */\n async set(key: string, value: StorageValue): Promise<KeyValueResult> {\n await this.open();\n if (typeof value === 'object') {\n (this.storage as Storage).setItem(this.id + key, JSON.stringify(value));\n } else {\n (this.storage as Storage).setItem(this.id + key, String(value));\n }\n return { key, value };\n }\n\n /**\n * Update a key-value pair. The update method will use Object.assign()\n * in the case of objects so no value is lost.\n *\n * @param key - Key with which this value will be saved\n * @param value - Value to save\n * @returns Promise with key and value\n */\n async update(key: string, value: StorageValue): Promise<KeyValueResult> {\n try {\n const currentValue = await this.get(key);\n if (typeof currentValue === 'object' && currentValue !== null) {\n if (typeof value === 'object' && value !== null) {\n value = { ...(currentValue as object), ...(value as object) };\n }\n (this.storage as Storage).setItem(this.id + key, JSON.stringify(value));\n } else {\n (this.storage as Storage).setItem(this.id + key, String(value));\n }\n return { key, value };\n } catch {\n return this.set(key, value);\n }\n }\n\n /**\n * Retrieves a value from storage given its key\n *\n * @param key - Key with which the value was saved\n * @returns Promise resolving to the retrieved value\n */\n async get(key: string): Promise<StorageValue> {\n await this.open();\n const rawValue = (this.storage as Storage).getItem(this.id + key);\n\n if (rawValue === null) {\n throw new KeyNotFoundError(key);\n }\n\n try {\n const parsed = JSON.parse(rawValue);\n if (parsed && typeof parsed === 'object') {\n return parsed;\n }\n return rawValue;\n } catch {\n // Unable to parse to JSON, return raw value\n return rawValue;\n }\n }\n\n /**\n * Retrieves all the values in the space in a key-value JSON object\n *\n * @returns Promise resolving to all values\n */\n async getAll(): Promise<Record<string, StorageValue>> {\n const keys = await this.keys();\n const values: Record<string, StorageValue> = {};\n\n for (const key of keys) {\n try {\n values[key] = await this.get(key);\n } catch {\n // Skip keys that fail to retrieve\n }\n }\n\n return values;\n }\n\n /**\n * Check if the space contains a given key.\n *\n * @param key - Key to look for\n * @returns Promise that resolves if key exists\n */\n async contains(key: string): Promise<void> {\n const keys = await this.keys();\n if (keys.includes(key)) {\n return;\n } else {\n throw new KeyNotFoundError(key);\n }\n }\n\n /**\n * Upgrade a Space Version\n *\n * @param oldVersion - The version of the storage to be upgraded\n * @param newVersion - The version to be upgraded to\n * @param callback - Function to transform the old stored values\n * @returns Promise\n */\n async upgrade(oldVersion: string, newVersion: string, callback: UpgradeCallback<LocalStorage>): Promise<void> {\n const key = `${versionToNumber(oldVersion)}::${versionToNumber(newVersion)}`;\n this.upgrades[key] = callback;\n return Promise.resolve();\n }\n\n /**\n * Rename a Space\n *\n * @param name - New name to be used\n * @returns Promise for the rename operation\n */\n async rename(name: string): Promise<void> {\n if (this.name === name) {\n throw new Error('Cannot rename: new name is identical to current name');\n }\n\n const keys = await this.keys();\n const oldId = this.id;\n this.name = name;\n this.id = this.computeId();\n\n for (const key of keys) {\n const rawValue = (this.storage as Storage).getItem(`${oldId}${key}`);\n if (rawValue !== null) {\n // Directly copy the raw value to avoid double-encoding\n (this.storage as Storage).setItem(this.id + key, rawValue);\n (this.storage as Storage).removeItem(`${oldId}${key}`);\n }\n }\n }\n\n /**\n * Get the key that corresponds to a given index in the storage.\n * Only considers keys belonging to this space.\n *\n * @param index - Index to get the key from\n * @param full - Whether to return the full key name including space id\n * @returns Promise resolving to the key's name\n */\n async key(index: number, full: boolean = false): Promise<string> {\n const spaceKeys = await this.keys(full);\n\n if (index < 0 || index >= spaceKeys.length) {\n throw new Error(`Index ${index} out of bounds. Space has ${spaceKeys.length} keys.`);\n }\n\n return spaceKeys[index];\n }\n\n /**\n * Return all keys stored in the space.\n *\n * @param full - Whether to return the full key name including space id\n * @returns Promise resolving to array of keys\n */\n async keys(full: boolean = false): Promise<string[]> {\n await this.open();\n return Object.keys(this.storage as Storage).filter((key) => {\n return key.indexOf(this.id) === 0;\n }).map((key) => {\n if (full === true) {\n return key;\n } else {\n return key.replace(this.id, '');\n }\n });\n }\n\n /**\n * Delete a value from the space given its key\n *\n * @param key - Key of the item to delete\n * @returns Promise resolving to the value of the deleted object\n */\n async remove(key: string): Promise<StorageValue> {\n const value = await this.get(key);\n (this.storage as Storage).removeItem(this.id + key);\n return value;\n }\n\n /**\n * Clear the entire space\n *\n * @returns Promise for the clear operation\n */\n async clear(): Promise<void> {\n const keys = await this.keys();\n\n for (const key of keys) {\n (this.storage as Storage).removeItem(this.id + key);\n }\n }\n}\n",
|
|
14
14
|
"/**\n * ==============================\n * Session Storage Adapter\n * ==============================\n */\n\nimport { LocalStorage } from './LocalStorage';\nimport type { LocalStorageConfiguration, UpgradeCallback } from './types';\n\n/**\n * The Session Storage Adapter provides the Space Class the ability to interact\n * with the sessionStorage API found in most modern browsers. Since this API\n * shares pretty much the same methods as the local storage one, this class\n * inherits from the LocalStorage adapter.\n *\n * Note: SessionStorage does not support versioning and upgrades because session\n * data is inherently temporary and cleared when the browser session ends.\n * Any declared upgrades will be ignored.\n */\nexport class SessionStorage extends LocalStorage {\n /**\n * Create a new SessionStorage. If no configuration is provided, the SessionStorage\n * global object is used. The SessionStorage Adapter can provide independency\n * by store name and space name.\n *\n * Note: Version is accepted for API compatibility but upgrades are not supported.\n *\n * @param configuration - Configuration Object for the Adapter\n */\n constructor({ name = '', version = '', store = '' }: LocalStorageConfiguration) {\n super({ name, version, store });\n }\n\n /**\n * Open the Storage Object.\n *\n * Unlike LocalStorage, SessionStorage does not perform upgrade migrations\n * because session data is temporary and cleared when the session ends.\n *\n * @returns Promise resolving to this adapter\n */\n async open(): Promise<this> {\n if (this.storage instanceof Storage) {\n return this;\n }\n\n this.storage = window.sessionStorage;\n return this;\n }\n\n /**\n * Upgrade is not supported for SessionStorage.\n * Session data is temporary and should not require migrations.\n *\n * @param _oldVersion - Ignored\n * @param _newVersion - Ignored\n * @param _callback - Ignored\n * @returns Promise that resolves immediately (no-op)\n */\n async upgrade(_oldVersion: string, _newVersion: string, _callback: UpgradeCallback<SessionStorage>): Promise<void> {\n console.warn('SessionStorage.upgrade() is a no-op. Session data is temporary and does not support migrations.');\n return Promise.resolve();\n }\n}\n",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"/**\n * ==============================\n * Util\n * ==============================\n */\n\nexport type Callable<T = unknown> = (...args: unknown[]) => T | Promise<T>;\n\nexport class Util {\n /**\n * Calls a function and ensures it returns a Promise.\n *\n * @param callable - The function to run\n * @param context - The `this` context\n * @param args - Arguments to pass\n */\n static async callAsync<T = unknown>(callable: Callable<T>, context: unknown, ...args: unknown[]): Promise<T> {\n try {\n return await callable.apply(context, args);\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n /**\n * Generates a UUID v4.\n */\n static uuid(): string {\n if (typeof crypto !== 'undefined' && 'randomUUID' in crypto) {\n return crypto.randomUUID();\n }\n\n // Fallback using crypto.getRandomValues\n if (typeof crypto !== 'undefined' && 'getRandomValues' in crypto) {\n return '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, (c) => {\n const num = parseInt(c, 10);\n const random = crypto.getRandomValues(new Uint8Array(1))[0];\n const shifted = 15 >> Math.floor(num / 4);\n return (num ^ (random & shifted)).toString(16);\n });\n }\n\n // Insecure Fallback, pretty sure no current browser should need this\n const generate = (): string => Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n return `${generate()}${generate()}-${generate()}-${generate()}-${generate()}-${generate()}${generate()}${generate()}`;\n }\n\n /**\n * Debounce a function call.\n *\n * @param fn - Function to debounce\n * @param delay - Delay in milliseconds\n */\n static debounce<T extends (...args: unknown[]) => unknown>(fn: T, delay: number): (...args: Parameters<T>) => void {\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n return (...args: Parameters<T>): void => {\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(() => {\n fn(...args);\n timeoutId = null;\n }, delay);\n };\n }\n\n /**\n * Throttle a function call.\n *\n * @param fn - Function to throttle\n * @param limit - Minimum time between calls in milliseconds\n */\n static throttle<T extends (...args: unknown[]) => unknown>(fn: T, limit: number): (...args: Parameters<T>) => void {\n let inThrottle = false;\n\n return (...args: Parameters<T>): void => {\n if (!inThrottle) {\n fn(...args);\n inThrottle = true;\n setTimeout(() => {\n inThrottle = false;\n }, limit);\n }\n };\n }\n}\n",
|
|
20
20
|
"// This file is basically just a hack to expose the Artemis namespace in the\n// window object. Once/if bun adds support for this, we can remove this file.\n\nimport * as Artemis from './index';\n\ndeclare global {\n interface Window {\n Artemis: typeof Artemis;\n }\n}\n\nif (typeof window === 'object') {\n window.Artemis = Artemis;\n}\n\n"
|
|
21
21
|
],
|
|
22
|
-
"mappings": "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",
|
|
23
|
-
"debugId": "
|
|
22
|
+
"mappings": "gdASO,IAAK,GAAL,CAAK,IAAL,CACL,SAAO,GAAP,OACA,UAAQ,GAAR,QACA,YAAU,GAAV,UACA,SAAO,GAAP,OACA,UAAQ,GAAR,QACA,QAAM,GAAN,QANU,QAaL,MAAM,CAAM,OACF,QAAqB,YAKzB,aAAY,EAAe,CACpC,OAAO,KAAK,aASP,MAAK,CAAC,EAAgC,CAC3C,GAAI,OAAO,IAAU,SACnB,KAAK,OAAS,EAEhB,OAAO,KAAK,aAQP,SAAQ,CAAC,EAAyB,CACvC,KAAK,OAAS,QAQT,UAAS,CAAC,EAA4B,CAC3C,OAAO,KAAK,QAAU,QASjB,IAAG,IAAI,EAAuB,CACnC,GAAI,KAAK,QAAU,EACjB,QAAQ,IAAI,GAAG,CAAI,QAUhB,MAAK,IAAI,EAAuB,CACrC,GAAI,KAAK,QAAU,EACjB,QAAQ,MAAM,GAAG,CAAI,QAUlB,KAAI,IAAI,EAAuB,CACpC,GAAI,KAAK,QAAU,EACjB,QAAQ,KAAK,GAAG,CAAI,QAUjB,MAAK,IAAI,EAAuB,CACrC,GAAI,KAAK,QAAU,EACjB,QAAQ,MAAM,GAAG,CAAI,QAUlB,QAAO,IAAI,EAAuB,CACvC,GAAI,KAAK,QAAU,EACjB,QAAQ,KAAK,GAAG,CAAI,QASjB,KAAI,IAAI,EAAuB,CACpC,KAAK,QAAQ,GAAG,CAAI,QAUf,MAAK,CAAC,EAAe,EAA0B,CACpD,GAAI,KAAK,QAAU,EACjB,QAAQ,MAAM,EAAM,CAAO,QASxB,MAAK,IAAI,EAAuB,CACrC,GAAI,KAAK,QAAU,EACjB,QAAQ,MAAM,GAAG,CAAI,QASlB,eAAc,IAAI,EAAuB,CAC9C,GAAI,KAAK,QAAU,EACjB,QAAQ,eAAe,GAAG,CAAI,QAO3B,SAAQ,EAAS,CACtB,GAAI,KAAK,QAAU,EACjB,QAAQ,SAAS,QAUd,KAAI,CAAC,EAAsB,CAChC,GAAI,KAAK,QAAU,EACjB,QAAQ,KAAK,CAAK,QAWf,QAAO,CAAC,KAAmB,EAAuB,CACvD,GAAI,KAAK,QAAU,EACjB,QAAQ,QAAQ,EAAO,GAAG,CAAI,QAU3B,QAAO,CAAC,EAAsB,CACnC,GAAI,KAAK,QAAU,EACjB,QAAQ,QAAQ,CAAK,QAUlB,MAAK,IAAI,EAAuB,CACrC,GAAI,KAAK,QAAU,EACjB,QAAQ,MAAM,GAAG,CAAI,QAWlB,OAAM,CAAC,KAAuB,EAAuB,CAC1D,GAAI,KAAK,QAAU,EACjB,QAAQ,OAAO,EAAW,GAAG,CAAI,QAQ9B,MAAK,EAAS,CACnB,GAAI,KAAK,QAAU,EACjB,QAAQ,MAAM,QAUX,MAAK,CAAC,EAAsB,CACjC,GAAI,KAAK,QAAU,EACjB,QAAQ,MAAM,CAAK,QAUhB,WAAU,CAAC,EAAsB,CACtC,GAAI,KAAK,QAAU,EACjB,QAAQ,WAAW,CAAK,QAUrB,IAAG,CAAC,EAAqB,CAC9B,GAAI,KAAK,QAAU,EACjB,QAAQ,IAAI,CAAI,QAUb,OAAM,CAAC,EAAqB,CACjC,GAAI,KAAK,QAAU,EACjB,QAAQ,OAAO,CAAI,QAUhB,OAAM,CAAC,KAAmB,EAAyB,CACxD,IAAI,EAAS,EACT,EAAW,EAoBf,OAlBA,EAAS,EAAO,QAAQ,eAAgB,CAAC,IAAU,CACjD,GAAI,IAAU,KAAM,MAAO,IAC3B,GAAI,GAAY,EAAK,OAAQ,OAAO,EAEpC,IAAM,EAAM,EAAK,KAEjB,OAAQ,OACD,KAAM,OAAO,OAAO,CAAG,MACvB,SACA,KAAM,OAAO,OAAO,SAAS,OAAO,CAAG,EAAG,EAAE,CAAC,MAC7C,SACA,KAAM,OAAO,KAAK,UAAU,CAAG,MAC/B,KAAM,MAAO,OACb,KAAM,OAAO,KAAK,UAAU,CAAG,UAC3B,OAAO,GAEnB,EAEM,EAEX,CC9SA,IAAM,EAAgB,IAAI,QAKnB,MAAM,CAAI,CACR,WACA,OAEP,WAAW,CAAC,EAAuB,CACjC,GAAI,CAAC,EACH,KAAK,WAAa,CAAC,EACd,QAAI,OAAO,IAAa,SAC7B,KAAK,WAAa,MAAM,KAAK,SAAS,iBAAiB,CAAQ,CAAC,EAC3D,QAAI,aAAoB,SAC7B,KAAK,WAAa,MAAM,KAAK,CAAQ,EAChC,QAAI,aAAoB,EAC7B,KAAK,WAAa,EAAS,WACtB,QAAI,aAAoB,QAC7B,KAAK,WAAa,CAAC,CAAuB,EACrC,QAAI,MAAM,QAAQ,CAAQ,EAC/B,KAAK,WAAa,EAElB,UAAK,WAAa,CAAC,EAGrB,KAAK,OAAS,KAAK,WAAW,OAMhC,IAAI,EAAS,CACX,OAAO,KAAK,MAAM,UAAW,MAAM,EAQrC,IAAI,CAAC,EAAkB,QAAe,CACpC,OAAO,KAAK,MAAM,UAAW,CAAO,EAQtC,QAAQ,CAAC,EAAwB,CAE/B,OADA,KAAK,WAAW,QAAQ,KAAW,EAAQ,UAAU,IAAI,CAAQ,CAAC,EAC3D,KAQT,WAAW,CAAC,EAAyB,CASnC,OARA,KAAK,WAAW,QAAQ,KAAW,CACjC,GAAI,CAAC,EACH,EAAQ,UAAY,GAEpB,OAAQ,UAAU,OAAO,CAAQ,EAEpC,EAEM,KAQT,WAAW,CAAC,EAAuB,CACjC,IAAM,EAAY,EAAQ,MAAM,GAAG,EAMnC,OAJA,KAAK,WAAW,QAAQ,KAAW,CACjC,EAAU,QAAQ,KAAK,EAAQ,UAAU,OAAO,CAAC,CAAC,EACnD,EAEM,KAQT,QAAQ,CAAC,EAA+B,CACtC,OAAO,KAAK,WAAW,MAAM,KAAW,EAAQ,UAAU,SAAS,CAAY,CAAC,EAQlF,KAAK,CAAC,EAAoD,CACxD,GAAI,IAAU,OAAW,CACvB,IAAM,EAAc,OAAO,CAAK,EAChC,QAAW,KAAW,KAAK,WACzB,GACE,aAAmB,kBACnB,aAAmB,qBACnB,aAAmB,mBACnB,aAAmB,mBACnB,aAAmB,kBAEnB,EAAQ,MAAQ,EAIpB,OAAO,KAGT,GAAI,KAAK,SAAW,EAClB,OAGF,IAAM,EAAQ,KAAK,WAAW,GAE9B,GACE,aAAiB,kBACjB,aAAiB,qBACjB,aAAiB,mBACjB,aAAiB,mBACjB,aAAiB,kBAEjB,OAAO,EAAM,MAGf,OAMF,KAAK,EAAS,CACZ,GAAI,KAAK,OAAS,EAChB,KAAK,WAAW,GAAG,MAAM,EAG3B,OAAO,KAMT,IAAI,EAAS,CACX,GAAI,KAAK,OAAS,EAChB,KAAK,WAAW,GAAG,KAAK,EAG1B,OAAO,KAMT,KAAK,CAAC,EAA+B,CACnC,OAAO,KAAK,GAAG,QAAS,CAAQ,EAMlC,KAAK,CAAC,EAA+B,CACnC,OAAO,KAAK,GAAG,QAAS,CAAQ,EAMlC,OAAO,CAAC,EAA+B,CACrC,OAAO,KAAK,GAAG,UAAW,CAAQ,EAMpC,MAAM,CAAC,EAA+B,CACpC,OAAO,KAAK,GAAG,SAAU,CAAQ,EAMnC,MAAM,CAAC,EAA+B,CACpC,OAAO,KAAK,GAAG,SAAU,CAAQ,EAMnC,MAAM,CAAC,EAA+B,CACpC,OAAO,KAAK,GAAG,SAAU,CAAQ,EAMnC,KAAK,CAAC,EAA+B,CACnC,OAAO,KAAK,GAAG,QAAS,CAAQ,EAUlC,EAAE,CAAC,EAAoB,EAA0C,EAAgC,CAC/F,IAAM,EAAS,EAAW,MAAM,GAAG,EAC7B,EAAe,OAAO,IAAqB,SAC3C,EAAmB,EAAe,EAAY,EAC9C,EAAW,EAAgB,EAA8B,KAE/D,GAAI,CAAC,EACH,OAAO,KAsCT,OAnCA,KAAK,WAAW,QAAQ,KAAW,CACjC,EAAO,QAAQ,KAAa,CAC1B,IAAM,EAA0B,GAAgB,EAC5C,CAAC,IAAa,CACd,IAAM,EAAS,EAAE,OACjB,GAAI,aAAkB,QAAS,CAC7B,IAAM,EAAQ,EAAO,QAAQ,CAAQ,EACrC,GAAI,GAAS,EAAQ,SAAS,CAAK,EACjC,EAAiB,KAAK,EAAO,CAAC,IAIlC,EAEJ,GAAI,CAAC,EAAc,IAAI,CAAO,EAC5B,EAAc,IAAI,EAAS,IAAI,GAAK,EAGtC,IAAM,EAAkB,EAAc,IAAI,CAAO,EAGjD,GAAI,CAAC,EAAgB,IAAI,CAAS,EAChC,EAAgB,IAAI,EAAW,CAAC,CAAC,EAGnC,EAAgB,IAAI,CAAS,EAAG,KAAK,CACnC,WACA,iBAAkB,EAClB,gBAAiB,CACnB,CAAC,EAED,EAAQ,iBAAiB,EAAW,EAAU,EAAK,EACpD,EACF,EAEM,KAUT,GAAG,CAAC,EAAqB,EAA2C,EAAgC,CAmDlG,OAlDA,KAAK,WAAW,QAAQ,KAAW,CACjC,IAAM,EAAkB,EAAc,IAAI,CAAO,EAEjD,GAAI,CAAC,EACH,OAGF,IAAM,EAAS,EAAa,EAAW,MAAM,GAAG,EAAI,MAAM,KAAK,EAAgB,KAAK,CAAC,EAC/E,EAAe,OAAO,IAAqB,SAC3C,EAAW,EAAe,EAAmB,KAC7C,EAAmB,EAAe,EAAY,EAmCpD,GAjCA,EAAO,QAAQ,KAAa,CAC1B,IAAM,EAAW,EAAgB,IAAI,CAAS,EAE9C,GAAI,CAAC,EACH,OAIF,IAAM,EAAW,EAAS,OAAO,KAAW,CAC1C,GAAI,GAAoB,EAAQ,mBAAqB,EACnD,MAAO,GAGT,GAAI,IAAa,QAAa,EAAQ,WAAa,EACjD,MAAO,GAGT,MAAO,GACR,EAED,EAAS,QAAQ,KAAW,CAC1B,EAAQ,oBAAoB,EAAW,EAAQ,eAAe,EAC/D,EAED,IAAM,EAAY,EAAS,OAAO,KAAW,CAAC,EAAS,SAAS,CAAO,CAAC,EAExE,GAAI,EAAU,OAAS,EACrB,EAAgB,IAAI,EAAW,CAAS,EAExC,OAAgB,OAAO,CAAS,EAEnC,EAEG,EAAgB,OAAS,EAC3B,EAAc,OAAO,CAAO,EAE/B,EAEM,KAST,OAAO,CAAC,EAAoB,EAAwB,CAClD,IAAM,EAAS,EAAW,MAAM,GAAG,EAYnC,OAVA,KAAK,WAAW,QAAQ,KAAW,CACjC,EAAO,QAAQ,KAAa,CAC1B,IAAM,EAAc,IAAW,OAC3B,IAAI,YAAY,EAAW,CAAE,SAAQ,QAAS,GAAM,WAAY,EAAK,CAAC,EACtE,IAAI,MAAM,EAAW,CAAE,QAAS,GAAM,WAAY,EAAK,CAAC,EAE5D,EAAQ,cAAc,CAAW,EAClC,EACF,EAEM,KAQT,MAAM,CAAC,EAAuB,CAC5B,OAAO,IAAI,EAAI,KAAK,WAAW,OAAO,KAAW,EAAQ,QAAQ,CAAQ,CAAC,CAAC,EAM7E,MAAM,EAAY,CAChB,OAAO,KAAK,OAAS,EAWvB,IAAI,CAAC,EAAc,EAA2C,CAC5D,GAAI,IAAU,OAEZ,OADA,KAAK,WAAW,QAAQ,KAAW,EAAQ,QAAQ,GAAQ,CAAK,EACzD,KAGT,OAAO,KAAK,OAAS,EAAI,KAAK,WAAW,GAAG,QAAQ,GAAQ,OAQ9D,UAAU,CAAC,EAAoB,CAE7B,OADA,KAAK,WAAW,QAAQ,KAAW,OAAO,EAAQ,QAAQ,EAAK,EACxD,KAQT,IAAI,CAAC,EAAoD,CACvD,GAAI,IAAU,OAAW,CACvB,IAAM,EAAc,OAAO,CAAK,EAEhC,QAAW,KAAW,KAAK,WACzB,EAAQ,YAAc,EAGxB,OAAO,KAGT,GAAI,KAAK,SAAW,EAClB,OAGF,OAAO,KAAK,WAAW,GAAG,aAAe,GAQ3C,IAAI,CAAC,EAAoD,CACvD,GAAI,IAAU,OAAW,CACvB,IAAM,EAAc,OAAO,CAAK,EAEhC,QAAW,KAAW,KAAK,WACzB,EAAQ,UAAY,EAEtB,OAAO,KAGT,GAAI,KAAK,SAAW,EAClB,OAGF,OAAO,KAAK,WAAW,GAAG,UAQ5B,MAAM,CAAC,EAAiC,CAWtC,OAVA,KAAK,WAAW,QAAQ,CAAC,EAAS,IAAU,CAC1C,GAAI,OAAO,IAAY,SACrB,EAAQ,mBAAmB,YAAa,CAAO,EAC1C,KAEL,IAAM,EAAQ,IAAU,EAAK,EAAU,EAAQ,UAAU,EAAI,EAC7D,EAAQ,YAAY,CAAY,GAEnC,EAEM,KAQT,OAAO,CAAC,EAAiC,CAUvC,OATA,KAAK,WAAW,QAAQ,CAAC,EAAS,IAAU,CAC1C,GAAI,OAAO,IAAY,SACrB,EAAQ,mBAAmB,aAAc,CAAO,EAC3C,KACL,IAAM,EAAQ,IAAU,EAAK,EAAU,EAAQ,UAAU,EAAI,EAC7D,EAAQ,QAAQ,CAAY,GAE/B,EAEM,KAQT,IAAI,CAAC,EAAiC,CAEpC,OADA,KAAK,WAAW,QAAQ,CAAC,EAAS,IAAM,EAAS,EAAS,CAAC,CAAC,EACrD,KAQT,GAAG,CAAC,EAAwC,CAC1C,OAAO,KAAK,WAAW,GAMzB,KAAK,EAAQ,CACX,OAAO,IAAI,EAAI,KAAK,WAAW,IAAM,IAAI,EAM3C,IAAI,EAAQ,CACV,OAAO,IAAI,EAAI,KAAK,WAAW,KAAK,WAAW,OAAS,IAAM,IAAI,EAQpE,EAAE,CAAC,EAAoB,CACrB,IAAM,EAAc,EAAQ,EAAI,KAAK,WAAW,OAAS,EAAQ,EACjE,OAAO,IAAI,EAAI,KAAK,WAAW,IAAgB,IAAI,EAMrD,SAAS,EAAY,CACnB,OAAO,KAAK,WAAW,KAAK,KAC1B,EAAQ,MAAM,UAAY,QAAU,EAAQ,YAAc,GAAK,EAAQ,aAAe,CACxF,EAMF,MAAM,EAAQ,CACZ,IAAM,EAAU,IAAI,IAQpB,OANA,KAAK,WAAW,QAAQ,KAAW,CACjC,GAAI,EAAQ,cACV,EAAQ,IAAI,EAAQ,aAAa,EAEpC,EAEM,IAAI,EAAI,MAAM,KAAK,CAAO,CAAC,EAMpC,OAAO,EAAQ,CACb,IAAM,EAAY,IAAI,IAUtB,OARA,KAAK,WAAW,QAAQ,KAAW,CACjC,IAAI,EAAS,EAAQ,cACrB,MAAO,EACL,EAAU,IAAI,CAAM,EACpB,EAAS,EAAO,cAEnB,EAEM,IAAI,EAAI,MAAM,KAAK,CAAS,CAAC,EAQtC,IAAI,CAAC,EAAuB,CAC1B,IAAM,EAAQ,IAAI,IAElB,QAAW,KAAW,KAAK,WAAY,CACrC,IAAM,EAAU,EAAQ,iBAAiB,CAAQ,EAEjD,QAAW,KAAU,EACnB,EAAM,IAAI,CAAqB,EAInC,OAAO,IAAI,EAAI,MAAM,KAAK,CAAK,CAAC,EAMlC,MAAM,EAA0B,CAC9B,GAAI,KAAK,SAAW,EAClB,OAGF,IAAM,EAAO,KAAK,WAAW,GAAG,sBAAsB,EAEtD,MAAO,CACL,IAAK,EAAK,IAAM,OAAO,QACvB,KAAM,EAAK,KAAO,OAAO,OAC3B,EAMF,KAAK,EAAW,CACd,GAAI,KAAK,SAAW,EAClB,MAAO,GAGT,OAAO,KAAK,WAAW,GAAG,sBAAsB,EAAE,MAMpD,MAAM,EAAW,CACf,GAAI,KAAK,SAAW,EAClB,MAAO,GAGT,OAAO,KAAK,WAAW,GAAG,sBAAsB,EAAE,OAQpD,OAAO,CAAC,EAAuB,CAC7B,IAAM,EAAQ,IAAI,IAUlB,OARA,KAAK,WAAW,QAAQ,KAAW,CACjC,IAAM,EAAQ,EAAQ,QAAQ,CAAQ,EAEtC,GAAI,EACF,EAAM,IAAI,CAAoB,EAEjC,EAEM,IAAI,EAAI,MAAM,KAAK,CAAK,CAAC,EAWlC,SAAS,CAAC,EAAc,EAA2D,CACjF,GAAI,IAAU,OAEZ,OADA,KAAK,WAAW,QAAQ,KAAW,EAAQ,aAAa,EAAM,OAAO,CAAK,CAAC,CAAC,EACrE,KAGT,OAAO,KAAK,OAAS,EAAI,KAAK,WAAW,GAAG,aAAa,CAAI,EAAI,OAQnE,eAAe,CAAC,EAAoB,CAElC,OADA,KAAK,WAAW,QAAQ,KAAW,EAAQ,gBAAgB,CAAI,CAAC,EACzD,KAQT,YAAY,CAAC,EAA4B,CACvC,OAAO,KAAK,WAAW,MAAM,KAAW,EAAQ,aAAa,CAAS,CAAC,EAQzE,KAAK,CAAC,EAAuB,CAE3B,OADA,KAAK,WAAW,QAAQ,KAAW,EAAQ,mBAAmB,WAAY,CAAO,CAAC,EAC3E,KAQT,MAAM,CAAC,EAAuB,CAE5B,OADA,KAAK,WAAW,QAAQ,KAAW,EAAQ,mBAAmB,cAAe,CAAO,CAAC,EAC9E,KAST,KAAK,CAAC,EAAsC,EAA+B,CACzE,GAAI,OAAO,IAAe,UAAY,IAAU,OAC9C,OAAO,KAAK,OAAS,EAAI,KAAK,WAAW,GAAG,MAAM,iBAAiB,CAAU,EAAI,GAanF,OAVA,KAAK,WAAW,QAAQ,KAAW,CACjC,GAAI,OAAO,IAAe,UAAY,IAAU,OAC9C,EAAQ,MAAM,YAAY,EAAY,CAAK,EACtC,QAAI,OAAO,IAAe,SAC/B,OAAO,QAAQ,CAAU,EAAE,QAAQ,EAAE,EAAG,KAAO,CAC7C,EAAQ,MAAM,YAAY,EAAG,OAAO,CAAC,CAAC,EACvC,EAEJ,EAEM,KAST,OAAO,CAAC,EAAkD,EAAkD,CAE1G,OADA,KAAK,WAAW,QAAQ,KAAW,EAAQ,QAAQ,EAAW,CAAO,CAAC,EAC/D,KAST,MAAM,CAAC,EAAmB,IAAK,EAA6B,CAiB1D,OAhBA,KAAK,WAAW,QAAQ,CAAC,EAAS,IAAU,CAC1C,GAAI,iBAAiB,CAAO,EAAE,UAAY,OACxC,EAAQ,MAAM,QAAU,QAG1B,IAAM,EAAY,EAAQ,QAAQ,CAAC,CAAE,QAAS,CAAE,EAAG,CAAE,QAAS,CAAE,CAAC,EAAG,CAClE,SAAU,EACV,KAAM,UACR,CAAC,EAGD,GAAI,GAAY,IAAU,KAAK,WAAW,OAAS,EACjD,EAAU,SAAW,IAAM,EAAS,EAEvC,EAEM,KAST,OAAO,CAAC,EAAmB,IAAK,EAA6B,CAe3D,OAdA,KAAK,WAAW,QAAQ,CAAC,EAAS,IAAU,CAC1C,IAAM,EAAY,EAAQ,QAAQ,CAAC,CAAE,QAAS,CAAE,EAAG,CAAE,QAAS,CAAE,CAAC,EAAG,CAClE,SAAU,EACV,KAAM,UACR,CAAC,EAED,EAAU,SAAW,IAAM,CAEzB,GADA,EAAQ,MAAM,QAAU,OACpB,GAAY,IAAU,KAAK,WAAW,OAAS,EACjD,EAAS,GAGd,EAEM,KAQT,OAAO,CAAC,EAA2B,CACjC,GAAI,KAAK,SAAW,EAClB,MAAO,GAGT,OAAO,KAAK,WAAW,MAAM,KAAW,EAAQ,QAAQ,CAAQ,CAAC,EAMnE,MAAM,EAAS,CAEb,OADA,KAAK,WAAW,QAAQ,KAAW,EAAQ,OAAO,CAAC,EAC5C,KAMT,KAAK,EAAS,CAKZ,OAJA,KAAK,WAAW,QAAQ,KAAW,CACjC,EAAQ,UAAY,GACrB,EAEM,KAQT,KAAK,CAAC,EAAgB,GAAW,CAC/B,IAAM,EAAS,KAAK,WAAW,IAAI,KAAW,EAAQ,UAAU,CAAI,CAAgB,EACpF,OAAO,IAAI,EAAI,CAAM,EAQvB,WAAW,CAAC,EAAoC,CAC9C,QAAS,EAAI,KAAK,WAAW,OAAS,EAAG,GAAK,EAAG,IAAK,CACpD,IAAM,EAAU,KAAK,WAAW,GAEhC,GAAI,OAAO,IAAe,SACxB,EAAQ,UAAY,EACf,KACL,IAAM,EAAgB,IAAM,EAAK,EAAa,EAAW,UAAU,EAAI,EACvE,EAAQ,YAAY,CAAY,GAIpC,OAAO,KAMT,KAAK,EAAS,CAOZ,OANA,KAAK,WAAW,QAAQ,KAAW,CACjC,GAAI,aAAmB,gBACrB,EAAQ,MAAM,EAEjB,EAEM,KAWT,QAAqC,CAAC,EAAS,EAA2D,CACxG,GAAI,IAAU,OAIZ,OAHA,KAAK,WAAW,QAAQ,KAAW,CAChC,EAAwB,GAAQ,EAClC,EACM,KAGT,GAAI,KAAK,SAAW,EAClB,OAGF,OAAO,KAAK,WAAW,GAAG,GAM5B,QAAQ,EAAQ,CACd,IAAM,EAAW,IAAI,IAYrB,OAVA,KAAK,WAAW,QAAQ,KAAW,CACjC,GAAI,EAAQ,cACV,MAAM,KAAK,EAAQ,cAAc,QAAQ,EAAE,QAAQ,KAAW,CAC5D,GAAI,IAAY,GAAW,aAAmB,YAC5C,EAAS,IAAI,CAAO,EAEvB,EAEJ,EAEM,IAAI,EAAI,MAAM,KAAK,CAAQ,CAAC,EAMrC,IAAI,EAAQ,CACV,IAAM,EAAQ,IAAI,IASlB,OAPA,KAAK,WAAW,QAAQ,KAAW,CACjC,IAAM,EAAO,EAAQ,mBACrB,GAAI,aAAgB,YAClB,EAAM,IAAI,CAAI,EAEjB,EAEM,IAAI,EAAI,MAAM,KAAK,CAAK,CAAC,EAMlC,IAAI,EAAQ,CACV,IAAM,EAAQ,IAAI,IASlB,OAPA,KAAK,WAAW,QAAQ,KAAW,CACjC,IAAM,EAAO,EAAQ,uBACrB,GAAI,aAAgB,YAClB,EAAM,IAAI,CAAI,EAEjB,EAEM,IAAI,EAAI,MAAM,KAAK,CAAK,CAAC,EAMlC,QAAQ,EAAQ,CACd,IAAM,EAAc,IAAI,IAUxB,OARA,KAAK,WAAW,QAAQ,KAAW,CACjC,MAAM,KAAK,EAAQ,QAAQ,EAAE,QAAQ,KAAS,CAC5C,GAAI,aAAiB,YACnB,EAAY,IAAI,CAAK,EAExB,EACF,EAEM,IAAI,EAAI,MAAM,KAAK,CAAW,CAAC,EAQxC,cAAc,CAAC,EAAuC,CACpD,GAAI,KAAK,OAAS,EAChB,KAAK,WAAW,GAAG,eAAe,CAAO,EAE3C,OAAO,KAEX,CAOO,SAAS,CAAE,CAAC,EAA4B,CAC7C,OAAO,IAAI,EAAI,CAAQ,EAQlB,SAAS,CAAO,CAAC,EAA4B,CAClD,GAAI,SAAS,aAAe,UAC1B,SAAS,iBAAiB,mBAAoB,CAAQ,EAEtD,OAAS,EAUN,SAAS,CAA+C,CAC7D,EACA,EACK,CACL,IAAM,EAAU,SAAS,cAAc,CAAO,EAE9C,GAAI,EACF,OAAO,QAAQ,CAAU,EAAE,QAAQ,EAAE,EAAK,KAAW,CACnD,EAAQ,aAAa,EAAK,CAAK,EAChC,EAGH,OAAO,IAAI,EAAI,CAAO,ECx+BjB,MAAM,UAAqB,KAAM,CAC/B,OACA,WACA,SAEP,WAAW,CAAC,EAAoB,EAAkB,CAChD,MAAM,GAAW,mBAAmB,EAAS,UAAU,EAAS,YAAY,EAC5E,KAAK,KAAO,eACZ,KAAK,OAAS,EAAS,OACvB,KAAK,WAAa,EAAS,WAC3B,KAAK,SAAW,EAEpB,CAKO,MAAM,UAA4B,KAAM,CAC7C,WAAW,CAAC,EAAa,EAAiB,CACxC,MAAM,eAAe,sBAAwB,KAAW,EACxD,KAAK,KAAO,sBAEhB,CAEO,MAAM,CAAQ,OAQZ,UAAS,CAAC,EAAmB,EAAyB,CAC3D,GAAI,aAAgB,SAAU,CAC5B,IAAM,EAAS,IAAI,gBAMnB,OALA,EAAK,QAAQ,CAAC,EAAO,IAAQ,CAC3B,GAAI,OAAO,IAAU,SACnB,EAAO,OAAO,EAAK,CAAK,EAE3B,EACM,EAAO,SAAS,EAGzB,IAAM,EAAmB,CAAC,EAE1B,QAAY,EAAK,KAAU,OAAO,QAAQ,CAAI,EAAG,CAC/C,GAAI,IAAU,QAAa,IAAU,KAAM,SAE3C,IAAM,EAAW,EAAS,GAAG,KAAU,KAAS,EAEhD,GAAI,MAAM,QAAQ,CAAK,EACrB,EAAM,QAAQ,CAAC,EAAM,IAAU,CAC7B,GAAI,OAAO,IAAS,UAAY,IAAS,KACvC,EAAO,KAAK,EAAQ,UAAU,EAAiC,GAAG,KAAY,IAAQ,CAAC,EAEvF,OAAO,KAAK,GAAG,mBAAmB,CAAQ,OAAO,mBAAmB,OAAO,CAAI,CAAC,GAAG,EAEtF,EACI,QAAI,OAAO,IAAU,SAC1B,EAAO,KAAK,EAAQ,UAAU,EAAkC,CAAQ,CAAC,EAEzE,OAAO,KAAK,GAAG,mBAAmB,CAAQ,KAAK,mBAAmB,OAAO,CAAK,CAAC,GAAG,EAItF,OAAO,EAAO,OAAO,OAAO,EAAE,KAAK,GAAG,QAQzB,SAAQ,CAAC,EAAkB,CACxC,GAAI,CACF,OAAO,IAAI,IAAI,CAAG,EAClB,KAAM,CACN,GAAI,CACF,OAAO,IAAI,IAAI,EAAK,OAAO,SAAS,MAAM,EAC1C,MAAO,EAAG,CACV,MAAU,MAAM,iBAAiB,IAAM,UAW9B,wBAAuB,CAAC,EAA6B,EAAyF,CAC3J,IAAM,EAAa,IAAI,gBAEvB,GAAI,CAAC,EACH,MAAO,CAAE,YAAW,EAGtB,IAAM,EAAY,WAAW,IAAM,CACjC,EAAW,MAAM,IAAI,EAAoB,EAAK,CAAO,CAAC,GACrD,CAAO,EAEV,MAAO,CAAE,aAAY,WAAU,cAGZ,KAAI,CACvB,EACA,EACA,EAAoB,CAAC,EACrB,EAA0B,CAAC,EACR,CACnB,IAAQ,aAAY,GAAiB,EAC/B,EAAS,EAAQ,SAAS,CAAG,EAC/B,EAA6B,OAC3B,EAAU,IAAK,EAAa,OAAQ,EAE1C,GAAI,CAAC,MAAO,SAAU,MAAM,EAAE,SAAS,EAAO,YAAY,CAAC,GACzD,GAAI,GAAQ,OAAO,IAAS,UAAY,EAAE,aAAgB,UACxD,OAAO,QAAQ,CAAI,EAAE,QAAQ,EAAE,EAAK,KAAS,CAC3C,GAAI,IAAQ,QAAa,IAAQ,KAC/B,EAAO,aAAa,OAAO,EAAK,OAAO,CAAG,CAAC,EAE9C,EAEE,KACL,IAAM,EAAc,EAAQ,iBAAmB,EAAQ,gBAEvD,GAAI,aAAgB,SAGlB,OAAO,EAAQ,gBACf,OAAO,EAAQ,gBACf,EAAO,EACF,QAAI,IAAgB,mBACzB,EAAO,KAAK,UAAU,CAAI,EACrB,KACL,GAAI,CAAC,EACH,EAAQ,gBAAkB,oCAG5B,IAAM,EAAS,IAAI,gBACnB,OAAO,QAAQ,CAAI,EAAE,QAAQ,EAAE,EAAG,KAAO,EAAO,OAAO,EAAG,OAAO,CAAC,CAAC,CAAC,EACpE,EAAO,GAIX,IAAQ,aAAY,aAAc,EAAQ,wBAAwB,EAAS,CAAG,EAE9E,GAAI,CASF,OARiB,MAAM,MAAM,EAAO,SAAS,EAAG,IAC3C,EACH,SACA,UACA,OACA,OAAQ,EAAW,MACrB,CAAC,SAGD,CACA,GAAI,EACF,aAAa,CAAS,SAYrB,IAAG,CAAC,EAAa,EAAoB,CAAC,EAAG,EAA0B,CAAC,EAAsB,CAC/F,OAAO,EAAQ,KAAK,MAAO,EAAK,EAAM,CAAO,QAUxC,KAAI,CAAC,EAAa,EAAmB,EAA0B,CAAC,EAAsB,CAC3F,OAAO,EAAQ,KAAK,OAAQ,EAAK,EAAM,CAAO,QAUzC,IAAG,CAAC,EAAa,EAAmB,EAA0B,CAAC,EAAsB,CAC1F,OAAO,EAAQ,KAAK,MAAO,EAAK,EAAM,CAAO,QAUxC,MAAK,CAAC,EAAa,EAAmB,EAA0B,CAAC,EAAsB,CAC5F,OAAO,EAAQ,KAAK,QAAS,EAAK,EAAM,CAAO,QAU1C,OAAM,CAAC,EAAa,EAAoB,CAAC,EAAG,EAA0B,CAAC,EAAsB,CAClG,OAAO,EAAQ,KAAK,SAAU,EAAK,EAAM,CAAO,QAU3C,KAAI,CAAC,EAAa,EAAoB,CAAC,EAAG,EAA0B,CAAC,EAAsB,CAChG,OAAO,EAAQ,KAAK,OAAQ,EAAK,EAAM,CAAO,cAWnC,KAAiB,CAAC,EAAa,EAAoB,CAAC,EAAG,EAA0B,CAAC,EAAe,CAC5G,IAAM,EAAW,MAAM,EAAQ,IAAI,EAAK,EAAM,CAAO,EAErD,GAAI,CAAC,EAAS,GACZ,MAAM,IAAI,EAAa,CAAQ,EAGjC,OAAO,EAAS,KAAK,cAWV,SAAqB,CAAC,EAAa,EAAmB,EAA0B,CAAC,EAAe,CAC3G,IAAM,EAAU,IAAK,EAAQ,QAAS,eAAgB,kBAAmB,EACnE,EAAW,MAAM,EAAQ,KAAK,EAAK,EAAM,IAAK,EAAS,SAAQ,CAAC,EAEtE,GAAI,CAAC,EAAS,GACZ,MAAM,IAAI,EAAa,CAAQ,EAGjC,OAAO,EAAS,KAAK,cAWV,KAAI,CAAC,EAAa,EAAoB,CAAC,EAAG,EAA0B,CAAC,EAAkB,CAClG,IAAM,EAAW,MAAM,EAAQ,IAAI,EAAK,EAAM,CAAO,EAErD,GAAI,CAAC,EAAS,GACZ,MAAM,IAAI,EAAa,CAAQ,EAGjC,OAAO,EAAS,KAAK,cAWV,KAAI,CAAC,EAAa,EAAoB,CAAC,EAAG,EAA0B,CAAC,EAAoB,CACpG,IAAM,EAAW,MAAM,EAAQ,IAAI,EAAK,EAAM,CAAO,EAErD,GAAI,CAAC,EAAS,GACZ,MAAM,IAAI,EAAa,CAAQ,EAGjC,OAAO,EAAS,KAAK,cAWV,YAAW,CAAC,EAAa,EAAoB,CAAC,EAAG,EAA0B,CAAC,EAAyB,CAChH,IAAM,EAAW,MAAM,EAAQ,IAAI,EAAK,EAAM,CAAO,EAErD,GAAI,CAAC,EAAS,GACZ,MAAM,IAAI,EAAa,CAAQ,EAGjC,OAAO,EAAS,YAAY,cASjB,OAAM,CAAC,EAAa,EAA0B,CAAC,EAAqB,CAC/E,GAAI,CAEF,OADiB,MAAM,EAAQ,KAAK,EAAK,CAAC,EAAG,CAAO,GACpC,GAChB,KAAM,CACN,MAAO,IAGb,CCzUO,MAAM,CAAW,aAST,WAAkC,CAC7C,EACA,EAAU,SACV,EAA0B,CAAC,EACC,CAC5B,IAAM,EAAO,MAAM,EAAQ,KAAK,EAAK,CAAC,EAAG,CAAO,EAChD,OAAO,EAAW,KAAK,EAAM,CAAI,cAStB,KAA4B,CAAC,EAAmB,EAAU,OAAyC,CAC9G,OAAQ,OACD,OACH,OAAO,EAAK,KAAK,MAEd,SACH,OAAO,EAAK,YAAY,MAErB,SACH,OAAO,IAAI,QAA2B,CAAC,EAAS,IAAW,CACzD,IAAM,EAAS,IAAI,WACnB,EAAO,OAAS,IAAM,EAAQ,EAAO,MAA2B,EAChE,EAAO,QAAU,IAAM,EAAO,EAAO,KAAK,EAC1C,EAAO,cAAc,CAAI,EAC1B,MAEE,SACH,OAAO,IAAI,QAA2B,CAAC,EAAS,IAAW,CACzD,IAAM,EAAS,IAAI,WACnB,EAAO,OAAS,IAAM,CACpB,IAAM,EAAS,EAAO,OAClB,EAAS,GACP,EAAQ,IAAI,WAAW,CAAM,EAC7B,EAAS,EAAM,WACrB,QAAS,EAAI,EAAG,EAAI,EAAQ,IAC1B,GAAU,OAAO,aAAa,EAAM,EAAE,EAExC,EAAQ,CAA2B,GAErC,EAAO,QAAU,IAAM,EAAO,EAAO,KAAK,EAC1C,EAAO,kBAAkB,CAAI,EAC9B,UAID,MAAU,MAAM,iCADe,GACmC,SAajE,OAAM,CAAC,EAAc,EAAmB,EAAmB,aAAoB,CACpF,OAAO,IAAI,KAAK,CAAC,CAAO,EAAG,EAAM,CAAE,KAAM,CAAS,CAAC,QAU9C,SAAQ,CAAC,EAAmB,EAAqB,CACtD,IAAM,EAAM,IAAI,gBAAgB,CAAI,EAC9B,EAAI,SAAS,cAAc,GAAG,EAEpC,EAAE,KAAO,EAGT,IAAI,EACJ,GAAI,IAAS,QAAa,IAAS,GACjC,EAAW,EACN,QAAI,aAAgB,MAAQ,EAAK,OAAS,GAC/C,EAAW,EAAK,KAEhB,OAAW,WAGb,EAAE,SAAW,EAEb,SAAS,KAAK,YAAY,CAAC,EAC3B,EAAE,MAAM,EAER,SAAS,KAAK,YAAY,CAAC,EAC3B,IAAI,gBAAgB,CAAG,QASlB,UAAS,CAAC,EAAc,EAA4B,GAAe,CACxE,IAAM,EAAQ,EAAK,MAAM,GAAG,EAG5B,GAAI,EAAM,SAAW,GAAM,EAAM,KAAO,IAAM,EAAM,SAAW,GAAK,CAAC,EACnE,MAAO,GAGT,OAAO,EAAM,IAAI,GAAG,YAAY,GAAK,SAQhC,QAAO,CAAC,EAAuB,CACpC,IAAM,EAAM,EAAW,UAAU,CAAI,EAKrC,OAJc,IAAI,IAAI,CACpB,MAAO,OAAQ,MAAO,MAAO,MAC7B,OAAQ,OAAQ,MAAO,MAAO,OAAQ,MACxC,CAAC,EACY,IAAI,CAAG,QAQf,QAAO,CAAC,EAAuB,CACpC,IAAM,EAAM,EAAW,UAAU,CAAI,EAIrC,OAHc,IAAI,IAAI,CACpB,MAAO,OAAQ,MAAO,MAAO,MAAO,MAAO,KAC7C,CAAC,EACY,IAAI,CAAG,QAQf,QAAO,CAAC,EAAuB,CACpC,IAAM,EAAM,EAAW,UAAU,CAAI,EAIrC,OAHc,IAAI,IAAI,CACpB,MAAO,MAAO,MAAO,OAAQ,MAAO,MAAO,KAC7C,CAAC,EACY,IAAI,CAAG,QASf,UAAS,CAAC,EAAe,EAAmB,EAAW,CAC5D,GAAI,IAAU,EAAG,MAAO,UAExB,IAAM,EAAI,KACJ,EAAQ,CAAC,QAAS,KAAM,KAAM,KAAM,KAAM,IAAI,EAC9C,EAAI,KAAK,MAAM,KAAK,IAAI,CAAK,EAAI,KAAK,IAAI,CAAC,CAAC,EAElD,OAAO,YAAY,EAAQ,KAAK,IAAI,EAAG,CAAC,GAAG,QAAQ,CAAQ,CAAC,EAAI,IAAM,EAAM,GAEhF,CC1LO,MAAM,CAAK,OAQT,KAAI,CAAC,EAAkB,EAAqC,CACjE,IAAM,EAAO,SAAS,cAAc,mBAAmB,KAAY,EAEnE,GAAI,CAAC,EAAM,CACT,QAAQ,KAAK,oBAAoB,gBAAuB,EACxD,OAGF,OAAO,QAAQ,CAAI,EAAE,QAAQ,EAAE,EAAM,KAAW,CAC9C,IAAM,EAAW,EAAK,iBAAiB,UAAU,KAAQ,EAEzD,GAAI,EAAS,SAAW,EAAG,OAG3B,IAAM,EADe,EAAS,GACJ,KACpB,EAAY,OAAO,CAAK,EAE9B,OAAQ,OACD,QACH,EAAS,QAAQ,CAAC,IAAO,CACvB,IAAM,EAAQ,EACd,GAAI,EAAM,QAAU,EAClB,EAAM,QAAU,GAEnB,EACD,UAEG,WACH,GAAI,EAAS,SAAW,EAErB,EAAS,GAAwB,QAAU,CAAC,CAAC,EACzC,QAAI,MAAM,QAAQ,CAAK,EAAG,CAE/B,IAAM,EAAe,EAAM,IAAI,MAAM,EACrC,EAAS,QAAQ,CAAC,IAAO,CACvB,IAAM,EAAQ,EACd,EAAM,QAAU,EAAa,SAAS,EAAM,KAAK,EAClD,EAEH,UAEG,OAEH,cAGC,EAAS,GAA4C,MAAQ,EAC9D,OAEL,QAUI,OAAM,CAAC,EAAkB,EAA4B,CAAC,EAAe,CAC1E,IAAQ,eAAe,GAAM,gBAAgB,IAAS,EAEhD,EAAO,SAAS,cAAc,mBAAmB,KAAY,EAEnE,GAAI,CAAC,EAEH,OADA,QAAQ,KAAK,oBAAoB,gBAAuB,EACjD,CAAC,EAGV,IAAM,EAAW,IAAI,SAAS,CAAI,EAC5B,EAAmB,CAAC,EAEpB,EAAO,MAAM,KAAK,IAAI,IAAI,EAAS,KAAK,CAAC,CAAC,EAEhD,QAAW,KAAO,EAAM,CACtB,IAAM,EAAY,EAAS,OAAO,CAAG,EAC/B,EAAU,EAAK,cAAc,UAAU,KAAO,EAC9C,EAAY,GAAS,KAG3B,GAAI,IAAc,OAAQ,CACxB,IAAM,EAAQ,EAAU,OAAO,CAAC,IAAiB,aAAa,IAAI,EAClE,GAAI,GAAS,UAAY,EAAM,OAAS,EACtC,EAAK,GAAO,EAEZ,OAAK,GAAO,EAAM,IAAM,KAE1B,SAIF,GAAI,IAAc,WAAY,CAC5B,IAAM,EAAa,EAAK,iBAAiB,UAAU,KAAO,EAC1D,GAAI,EAAW,SAAW,GAAK,EAAe,CAE5C,EAAK,GAAQ,EAAW,GAAwB,QAChD,SAGF,EAAK,GAAO,EAAU,IAAI,CAAC,IAAM,EAAK,WAAW,OAAO,CAAC,EAAG,CAAY,CAAC,EACzE,SAIF,GAAI,IAAc,UAAY,EAAc,CAC1C,GAAI,EAAU,OAAS,EACrB,EAAK,GAAO,EAAU,IAAI,CAAC,IAAM,WAAW,OAAO,CAAC,CAAC,CAAC,EAEtD,OAAK,GAAO,WAAW,OAAO,EAAU,EAAE,CAAC,EAE7C,SAIF,GAAI,EAAU,OAAS,EACrB,EAAK,GAAO,EAAU,IAAI,CAAC,IAAM,EAAK,WAAW,OAAO,CAAC,EAAG,CAAY,CAAC,EAEzE,OAAK,GAAO,EAAK,WAAW,OAAO,EAAU,EAAE,EAAG,CAAY,EAIlE,OAAO,QASM,WAAU,CAAC,EAAe,EAAwC,CAC/E,GAAI,GAAgB,IAAU,IAAM,CAAC,MAAM,OAAO,CAAK,CAAC,EACtD,OAAO,OAAO,CAAK,EAErB,OAAO,QAQF,MAAK,CAAC,EAAwB,CACnC,IAAM,EAAO,SAAS,cAAc,mBAAmB,KAAY,EAEnE,GAAI,CAAC,EAAM,CACT,QAAQ,KAAK,oBAAoB,gBAAuB,EACxD,OAGF,EAAK,MAAM,QAQN,QAAO,CAAC,EAA2B,CACxC,IAAM,EAAO,SAAS,cAAc,mBAAmB,KAAY,EAEnE,GAAI,CAAC,EAEH,OADA,QAAQ,KAAK,oBAAoB,gBAAuB,EACjD,GAGT,OAAO,EAAK,cAAc,QAQrB,eAAc,CAAC,EAA2B,CAC/C,IAAM,EAAO,SAAS,cAAc,mBAAmB,KAAY,EAEnE,GAAI,CAAC,EAEH,OADA,QAAQ,KAAK,oBAAoB,gBAAuB,EACjD,GAGT,OAAO,EAAK,eAAe,EAE/B,CCpLO,MAAM,CAAS,WAIT,OAAM,EAAY,CAC3B,OAAO,OAAO,kBAAoB,YAOzB,SAAQ,EAAY,CAC7B,OAAO,OAAO,WAAW,yBAAyB,EAAE,kBAM3C,UAAS,EAAY,CAC9B,OAAO,OAAO,WAAW,0BAA0B,EAAE,kBAM5C,YAAW,EAAgB,CACpC,OAAO,EAAS,SAAW,WAAa,sBAM/B,SAAQ,EAAY,CAC7B,OAAO,OAAO,WAAW,8BAA8B,EAAE,kBAMhD,cAAa,EAAY,CAClC,OAAO,OAAO,WAAW,kCAAkC,EAAE,kBAOpD,MAAK,EAAY,CAC1B,MACE,iBAAkB,QAClB,UAAU,eAAiB,YAOpB,WAAU,EAAY,CAC/B,IAAM,EAAM,UACZ,OACE,OAAO,WAAW,4BAA4B,EAAE,SAChD,EAAI,aAAe,aAQZ,SAAQ,EAAY,CAC7B,IAAM,EAAM,OAEZ,GAAI,UAAU,UAAU,YAAY,EAAE,SAAS,YAAY,EACzD,MAAO,GAGT,GAAI,EAAI,SAAS,OAAS,WACxB,MAAO,GAGT,GAAI,EAAI,SAAS,UAAU,SACzB,MAAO,GAGT,MAAO,aAME,QAAO,EAAY,CAC5B,MAAO,CAAC,CAAE,OAA0B,kBAMnB,UAAS,EAAW,CACrC,OAAO,UAAU,UAAU,YAAY,QAQlC,QAAO,CAAC,EAAsB,MAAgB,CACnD,IAAM,EAAM,UAEZ,GAAI,EAAI,eAAe,SAAW,GAChC,MAAO,GAGT,GAAI,EAAS,SAAS,EACpB,MAAO,GAGT,IAAM,EAAK,EAAS,UACd,EAAe,EAAI,eAAe,UAAU,YAAY,GAAK,GAE7D,EAA2D,CAC/D,SAAY,EAAa,SAAS,MAAM,GAAK,EAAG,SAAS,MAAM,EAC/D,QAAW,EAAa,SAAS,SAAS,GAAK,EAAG,SAAS,SAAS,EACpE,MAAS,EAAa,SAAS,OAAO,GAAK,EAAG,SAAS,WAAW,EAClE,MAAS,CAAC,EAAG,SAAS,SAAS,IAAM,EAAa,SAAS,OAAO,GAAK,EAAG,SAAS,OAAO,GAC1F,QAAW,EAAa,SAAS,SAAS,GAAK,EAAG,SAAS,SAAS,CACtE,EAEA,GAAI,IAAO,MACT,OAAO,OAAO,OAAO,CAAM,EAAE,KAAK,KAAO,CAAG,EAG9C,OAAO,EAAO,IAAO,SAQhB,OAAM,CAAC,EAAqB,MAAgB,CAGjD,GAFY,UAEJ,eAAe,SAAW,IAAQ,IAAO,MAC/C,MAAO,GAGT,IAAM,EAAK,EAAS,UAEd,EAA0D,CAC9D,QAAW,EAAG,SAAS,SAAS,EAChC,IAAO,cAAc,KAAK,CAAE,EAC5B,OAAU,EAAS,SAAS,EAC5B,cAAiB,mCAAmC,KAAK,CAAE,EAC3D,WAAc,kBAAkB,KAAK,CAAE,CACzC,EAEA,GAAI,IAAO,MACT,OAAO,OAAO,OAAO,CAAM,EAAE,KAAK,KAAO,CAAG,EAG9C,OAAO,EAAO,IAAO,SAOR,SAAQ,EAAY,CACjC,IAAM,EAAK,EAAS,UAEpB,GAAI,EAAG,SAAS,MAAM,EACpB,MAAO,GAGT,GAAI,EAAG,SAAS,WAAW,GAAK,UAAU,eAAiB,EACzD,MAAO,GAGT,MAAO,aAOE,eAAc,EAAY,CACnC,MAAO,kBAAmB,WAAa,OAAO,0BAMrC,cAAa,EAAY,CAClC,OAAO,OAAO,WAAW,mBAAmB,EAAE,kBAMrC,YAAW,EAAY,CAChC,OAAO,OAAO,WAAW,iBAAiB,EAAE,kBAMnC,SAAQ,EAAY,CAC7B,OAAO,OAAO,WAAW,gBAAgB,EAAE,QAE/C,CCtOO,MAAM,CAAQ,aAQN,MAAK,CAAC,EAA0C,CAC3D,IAAM,EAAM,IAAI,MAKhB,OAJA,EAAI,IAAM,EAEV,MAAM,EAAI,OAAO,EAEV,cASI,OAAM,CAAC,EAA+C,CACjE,OAAO,QAAQ,IAAI,EAAO,IAAI,KAAS,EAAQ,MAAM,CAAK,CAAC,CAAC,cAUjD,KAAI,CAAC,EAAe,EAAoC,MAA0B,CAE7F,IAAM,EAAW,MAAM,MAAM,EADY,CAAE,UAAS,CACM,EAE1D,GAAI,CAAC,EAAS,GACZ,MAAU,MAAM,uBAAuB,OAAW,EAAS,UAAU,EAAS,YAAY,EAG5F,OAAO,cAUI,MAAK,CAAC,EAAkB,EAAoC,MAA4B,CACnG,OAAO,QAAQ,IAAI,EAAO,IAAI,KAAS,EAAQ,KAAK,EAAO,CAAQ,CAAC,CAAC,cAU1D,SAAQ,CAAC,EAAmB,EAA+B,CACtE,GAAI,EAAE,WAAY,QAChB,MAAO,GAGT,GAAI,CAGF,MAAO,CAAC,CADM,MADA,MAAM,OAAO,KAAK,CAAS,GACf,MAAM,CAAG,EAEnC,KAAM,CAEN,MAAO,gBAWE,WAAU,CAAC,EAAmB,EAA4B,CACrE,GAAI,EAAE,WAAY,QAChB,MAAU,MAAM,4CAA4C,EAG9D,GAAI,CAEF,MADc,MAAM,OAAO,KAAK,CAAS,GAC7B,IAAI,CAAG,EACnB,MAAO,EAAO,CACd,MAAU,MAAM,oBAAoB,OAAS,aAAiB,MAAQ,EAAM,QAAU,OAAO,CAAK,GAAG,eAW5F,cAAa,CAAC,EAAmB,EAA+B,CAC3E,GAAI,EAAE,WAAY,QAChB,MAAU,MAAM,4CAA4C,EAG9D,GAAI,CAEF,MADc,MAAM,OAAO,KAAK,CAAS,GAC7B,OAAO,CAAI,EACvB,MAAO,EAAO,CACd,MAAU,MAAM,yBAAyB,aAAiB,MAAQ,EAAM,QAAU,OAAO,CAAK,GAAG,eAUxF,WAAU,CAAC,EAA4B,CAClD,OAAO,IAAI,QAAQ,CAAC,EAAS,IAAW,CACtC,IAAM,EAAO,SAAS,cAAc,MAAM,EAE1C,EAAK,IAAM,UACX,EAAK,GAAK,QACV,EAAK,KAAO,EAEZ,EAAK,OAAS,IAAM,EAAQ,EAC5B,EAAK,QAAU,IAAM,EAAW,MAAM,iCAAiC,GAAK,CAAC,EAE7E,SAAS,KAAK,YAAY,CAAI,EAC/B,cASU,OAAM,CAAC,EAA4B,CAC9C,OAAO,IAAI,QAAQ,CAAC,EAAS,IAAW,CACtC,IAAM,EAAO,SAAS,cAAc,MAAM,EAE1C,EAAK,IAAM,UACX,EAAK,GAAK,SACV,EAAK,KAAO,EAEZ,EAAK,OAAS,IAAM,EAAQ,EAC5B,EAAK,QAAU,IAAM,EAAW,MAAM,6BAA6B,GAAK,CAAC,EAEzE,SAAS,KAAK,YAAY,CAAI,EAC/B,cAUU,KAAI,CAAC,EAAa,EAAuB,GAAqB,CACzE,OAAO,IAAI,QAAQ,CAAC,EAAS,IAAW,CACtC,IAAM,EAAO,SAAS,cAAc,MAAM,EAM1C,GAJA,EAAK,IAAM,UACX,EAAK,GAAK,OACV,EAAK,KAAO,EAER,EACF,EAAK,YAAc,YAGrB,EAAK,OAAS,IAAM,EAAQ,EAC5B,EAAK,QAAU,IAAM,EAAW,MAAM,2BAA2B,GAAK,CAAC,EAEvE,SAAS,KAAK,YAAY,CAAI,EAC/B,cAYU,MAAK,CAAC,EAAa,EAAmD,CACjF,IAAM,EAAW,MAAM,MAAM,CAAG,EAEhC,GAAI,CAAC,EAAS,GACZ,MAAU,MAAM,uBAAuB,OAAS,EAAS,UAAU,EAAS,YAAY,EAG1F,IAAM,EAAc,MAAM,EAAS,YAAY,EAGzC,EAAM,GAAgB,IAAI,aAC1B,EAAqB,CAAC,EAE5B,GAAI,CAEF,OADoB,MAAM,EAAI,gBAAgB,CAAW,SAEzD,CAEA,GAAI,EACF,MAAM,EAAI,MAAM,eAYT,OAAM,CAAC,EAAgB,EAAqD,CAEvF,IAAM,EAAM,GAAgB,IAAI,aAC1B,EAAqB,CAAC,EAE5B,GAAI,CACF,OAAO,MAAM,QAAQ,IAAI,EAAK,IAAI,KAAO,EAAQ,MAAM,EAAK,CAAG,CAAC,CAAC,SACjE,CACA,GAAI,EACF,MAAM,EAAI,MAAM,GAIxB,CC5JO,SAAS,CAAe,CAAC,EAAyB,CACvD,GAAI,IAAY,GACd,MAAO,GAGT,IAAM,EAAW,EAAQ,MAAM,GAAG,EAC9B,EAAS,EACP,EAAc,CAAC,cAAe,IAAW,GAAK,EAEpD,QAAS,EAAI,EAAG,EAAI,KAAK,IAAI,EAAS,OAAQ,EAAY,MAAM,EAAG,IAAK,CACtE,IAAM,EAAU,SAAS,EAAS,GAAI,EAAE,GAAK,EAC7C,GAAU,EAAU,EAAY,GAGlC,OAAO,EAyBF,SAAS,CAAa,CAAC,EAAa,CACzC,GAAI,IAAU,MAAQ,OAAO,IAAU,SACrC,OAAO,EAGT,GAAI,MAAM,QAAQ,CAAK,EACrB,OAAO,EAAM,IAAI,KAAQ,EAAW,CAAI,CAAC,EAG3C,IAAM,EAAkC,CAAC,EACzC,QAAW,KAAO,OAAO,KAAK,CAAe,EAC3C,EAAO,GAAO,EAAY,EAAkC,EAAI,EAElE,OAAO,EAUF,SAAS,CAAY,CAAC,EAAc,EAAsB,CAC/D,IAAM,EAAiB,EAAK,SAAS,GAAG,EAAI,EAAK,MAAM,EAAG,EAAE,EAAI,EAC1D,EAAiB,EAAK,WAAW,GAAG,EAAI,EAAO,IAAI,IACzD,MAAO,GAAG,IAAiB,IClJtB,MAAM,UAAyB,KAAM,CAC1C,WAAW,CAAC,EAAa,CACvB,MAAM,QAAQ,yBAA2B,EACzC,KAAK,KAAO,mBAEhB,CAMO,MAAM,CAA8C,CAClD,KACA,QACA,MACA,GACA,eACA,SACA,QACC,aASR,WAAW,EAAG,OAAO,GAAI,UAAU,GAAI,QAAQ,IAAiC,CAC9E,KAAK,KAAO,EACZ,KAAK,QAAU,EACf,KAAK,MAAQ,EACb,KAAK,SAAW,CAAC,EAEjB,KAAK,eAAiB,EAAgB,CAAO,EAC7C,KAAK,GAAK,KAAK,UAAU,EAQnB,SAAS,EAAW,CAC1B,GAAI,KAAK,OAAS,IAAM,KAAK,UAAY,IAAM,KAAK,QAAU,GAC5D,MAAO,GAAG,KAAK,SAAS,KAAK,UAAU,KAAK,WACvC,QAAI,KAAK,OAAS,IAAM,KAAK,UAAY,GAC9C,MAAO,GAAG,KAAK,SAAS,KAAK,WACxB,QAAI,KAAK,OAAS,GACvB,MAAO,GAAG,KAAK,UAEf,WAAO,GASX,aAAa,CAAC,EAAyC,CACrD,GAAI,EAAO,OAAS,OAAW,KAAK,KAAO,EAAO,KAClD,GAAI,EAAO,UAAY,OACrB,KAAK,QAAU,EAAO,QACtB,KAAK,eAAiB,EAAgB,EAAO,OAAO,EAEtD,GAAI,EAAO,QAAU,OAAW,KAAK,MAAQ,EAAO,MAGpD,KAAK,GAAK,KAAK,UAAU,OAQrB,KAAI,EAAkB,CAE1B,GAAI,KAAK,mBAAmB,QAC1B,OAAO,KAIT,GAAI,KAAK,aACP,OAAO,KAAK,aAId,KAAK,cAAgB,SAAY,CAC/B,IAAI,EAA4B,CAAC,EAGjC,GAAI,KAAK,UAAY,GAAI,CAEvB,IAAI,EAAc,GAClB,GAAI,KAAK,OAAS,IAAM,KAAK,UAAY,IAAM,KAAK,QAAU,GAC5D,EAAc,GAAG,KAAK,SAAS,KAAK,UAC/B,QAAI,KAAK,OAAS,IAAM,KAAK,UAAY,GAC9C,EAAc,GAAG,KAAK,SAIxB,IAAM,EAAiB,OAAO,KAAK,OAAO,YAAY,EAAE,OAAO,CAAC,IAAQ,CACtE,OAAO,EAAI,QAAQ,CAAW,IAAM,EACrC,EAAE,IAAI,CAAC,IAAQ,CACd,OAAO,EAAI,QAAQ,EAAa,EAAE,EAAE,MAAM,GAAG,EAAE,GAChD,EAAE,OAAO,CAAC,IAAQ,CACjB,OAAO,EAAI,QAAQ,IAAI,IAAM,GAC9B,EAAE,KAAK,EAER,GAAI,EAAe,OAAS,EAAG,CAC7B,IAAM,EAAa,EAAe,GAC5B,EAAoB,EAAgB,CAAU,EAEpD,GAAI,EAAoB,KAAK,eAAgB,CAC3C,IAAM,EAAoB,OAAO,KAAK,KAAK,QAAQ,EAAE,KAAK,CAAC,EAAG,IAAM,CAClE,IAAO,GAAQ,EAAE,MAAM,IAAI,EAAE,IAAI,MAAM,GAChC,GAAQ,EAAE,MAAM,IAAI,EAAE,IAAI,MAAM,EACvC,OAAO,EAAO,EACf,EAEK,EAAY,EAAkB,UAAU,CAAC,IAAM,CACnD,IAAO,GAAO,EAAE,MAAM,IAAI,EAC1B,OAAO,SAAS,CAAG,IAAM,EAC1B,EAED,GAAI,EAAY,GACd,EAAkB,EAAkB,MAAM,CAAS,EAAE,OAAO,CAAC,IAAM,CACjE,IAAO,EAAK,GAAQ,EAAE,MAAM,IAAI,EAChC,OAAO,SAAS,CAAG,EAAI,KAAK,gBAAkB,SAAS,CAAI,GAAK,KAAK,eACtE,EAIH,IAAI,EAAa,GAAG,KAAK,SAAS,KAElC,GAAI,KAAK,OAAS,IAAM,KAAK,UAAY,IAAM,KAAK,QAAU,GAC5D,EAAa,GAAG,KAAK,SAAS,KAAK,UAAU,KACxC,QAAI,KAAK,OAAS,IAAM,KAAK,UAAY,GAC9C,EAAa,GAAG,KAAK,SAAS,KAIhC,IAAM,EAAO,OAAO,KAAK,OAAO,YAAY,EAAE,OAAO,CAAC,IAAQ,CAC5D,OAAO,EAAI,QAAQ,CAAU,IAAM,EACpC,EAAE,IAAI,CAAC,IAAQ,CACd,OAAO,EAAI,QAAQ,EAAY,EAAE,EAClC,EAED,QAAW,KAAO,EAAM,CACtB,IAAM,EAAW,OAAO,aAAa,QAAQ,GAAG,IAAa,GAAK,EAClE,GAAI,IAAa,KACf,OAAO,aAAa,QAAQ,KAAK,GAAK,EAAK,CAAQ,EAErD,OAAO,aAAa,WAAW,GAAG,IAAa,GAAK,KAM5D,KAAK,QAAU,OAAO,aAGtB,QAAW,KAAc,EACvB,GAAI,CACF,MAAM,KAAK,SAAS,GAAY,KAAK,KAAM,IAAI,EAC/C,MAAO,EAAG,CACV,QAAQ,MAAM,CAAC,EAInB,OAAO,OACN,EAEH,GAAI,CACF,OAAO,MAAM,KAAK,oBAClB,CACA,KAAK,aAAe,aAWlB,IAAG,CAAC,EAAa,EAA8C,CAEnE,GADA,MAAM,KAAK,KAAK,EACZ,OAAO,IAAU,SAClB,KAAK,QAAoB,QAAQ,KAAK,GAAK,EAAK,KAAK,UAAU,CAAK,CAAC,EAEtE,KAAC,KAAK,QAAoB,QAAQ,KAAK,GAAK,EAAK,OAAO,CAAK,CAAC,EAEhE,MAAO,CAAE,MAAK,OAAM,OAWhB,OAAM,CAAC,EAAa,EAA8C,CACtE,GAAI,CACF,IAAM,EAAe,MAAM,KAAK,IAAI,CAAG,EACvC,GAAI,OAAO,IAAiB,UAAY,IAAiB,KAAM,CAC7D,GAAI,OAAO,IAAU,UAAY,IAAU,KACzC,EAAQ,IAAM,KAA6B,CAAiB,EAE7D,KAAK,QAAoB,QAAQ,KAAK,GAAK,EAAK,KAAK,UAAU,CAAK,CAAC,EAEtE,KAAC,KAAK,QAAoB,QAAQ,KAAK,GAAK,EAAK,OAAO,CAAK,CAAC,EAEhE,MAAO,CAAE,MAAK,OAAM,EACpB,KAAM,CACN,OAAO,KAAK,IAAI,EAAK,CAAK,QAUxB,IAAG,CAAC,EAAoC,CAC5C,MAAM,KAAK,KAAK,EAChB,IAAM,EAAY,KAAK,QAAoB,QAAQ,KAAK,GAAK,CAAG,EAEhE,GAAI,IAAa,KACf,MAAM,IAAI,EAAiB,CAAG,EAGhC,GAAI,CACF,IAAM,EAAS,KAAK,MAAM,CAAQ,EAClC,GAAI,GAAU,OAAO,IAAW,SAC9B,OAAO,EAET,OAAO,EACP,KAAM,CAEN,OAAO,QASL,OAAM,EAA0C,CACpD,IAAM,EAAO,MAAM,KAAK,KAAK,EACvB,EAAuC,CAAC,EAE9C,QAAW,KAAO,EAChB,GAAI,CACF,EAAO,GAAO,MAAM,KAAK,IAAI,CAAG,EAChC,KAAM,EAKV,OAAO,OASH,SAAQ,CAAC,EAA4B,CAEzC,IADa,MAAM,KAAK,KAAK,GACpB,SAAS,CAAG,EACnB,OAEA,WAAM,IAAI,EAAiB,CAAG,OAY5B,QAAO,CAAC,EAAoB,EAAoB,EAAwD,CAC5G,IAAM,EAAM,GAAG,EAAgB,CAAU,MAAM,EAAgB,CAAU,IAEzE,OADA,KAAK,SAAS,GAAO,EACd,QAAQ,QAAQ,OASnB,OAAM,CAAC,EAA6B,CACxC,GAAI,KAAK,OAAS,EAChB,MAAU,MAAM,sDAAsD,EAGxE,IAAM,EAAO,MAAM,KAAK,KAAK,EACvB,EAAQ,KAAK,GACnB,KAAK,KAAO,EACZ,KAAK,GAAK,KAAK,UAAU,EAEzB,QAAW,KAAO,EAAM,CACtB,IAAM,EAAY,KAAK,QAAoB,QAAQ,GAAG,IAAQ,GAAK,EACnE,GAAI,IAAa,KAEd,KAAK,QAAoB,QAAQ,KAAK,GAAK,EAAK,CAAQ,EACxD,KAAK,QAAoB,WAAW,GAAG,IAAQ,GAAK,QAarD,IAAG,CAAC,EAAe,EAAgB,GAAwB,CAC/D,IAAM,EAAY,MAAM,KAAK,KAAK,CAAI,EAEtC,GAAI,EAAQ,GAAK,GAAS,EAAU,OAClC,MAAU,MAAM,SAAS,8BAAkC,EAAU,cAAc,EAGrF,OAAO,EAAU,QASb,KAAI,CAAC,EAAgB,GAA0B,CAEnD,OADA,MAAM,KAAK,KAAK,EACT,OAAO,KAAK,KAAK,OAAkB,EAAE,OAAO,CAAC,IAAQ,CAC1D,OAAO,EAAI,QAAQ,KAAK,EAAE,IAAM,EACjC,EAAE,IAAI,CAAC,IAAQ,CACd,GAAI,IAAS,GACX,OAAO,EAEP,YAAO,EAAI,QAAQ,KAAK,GAAI,EAAE,EAEjC,OASG,OAAM,CAAC,EAAoC,CAC/C,IAAM,EAAQ,MAAM,KAAK,IAAI,CAAG,EAEhC,OADC,KAAK,QAAoB,WAAW,KAAK,GAAK,CAAG,EAC3C,OAQH,MAAK,EAAkB,CAC3B,IAAM,EAAO,MAAM,KAAK,KAAK,EAE7B,QAAW,KAAO,EACf,KAAK,QAAoB,WAAW,KAAK,GAAK,CAAG,EAGxD,CC3XO,MAAM,UAAuB,CAAa,CAU/C,WAAW,EAAG,OAAO,GAAI,UAAU,GAAI,QAAQ,IAAiC,CAC9E,MAAM,CAAE,OAAM,UAAS,OAAM,CAAC,OAW1B,KAAI,EAAkB,CAC1B,GAAI,KAAK,mBAAmB,QAC1B,OAAO,KAIT,OADA,KAAK,QAAU,OAAO,eACf,UAYH,QAAO,CAAC,EAAqB,EAAqB,EAA2D,CAEjH,OADA,QAAQ,KAAK,iGAAiG,EACvG,QAAQ,QAAQ,EAE3B,CCnDO,MAAM,UAAyB,KAAM,CAC1C,WAAW,CAAC,EAAa,CACvB,MAAM,QAAQ,2BAA6B,EAC3C,KAAK,KAAO,mBAEhB,CAMO,MAAM,CAA2C,CAC/C,KACA,QACA,MACA,MACA,MACA,QACA,eACA,SACA,QAQP,WAAW,EAAG,OAAO,GAAI,UAAU,GAAI,QAAQ,GAAI,QAAQ,CAAC,EAAG,QAAQ,CAAC,GAA6B,CACnG,KAAK,KAAO,EACZ,KAAK,QAAU,EACf,KAAK,MAAQ,EACb,KAAK,MAAQ,GAAS,CAAC,EACvB,KAAK,MAAQ,EAEb,KAAK,QAAW,GAAO,SAAsB,KAC7C,KAAK,SAAW,CAAC,EAEjB,KAAK,eAAiB,EAAgB,CAAO,EAQ/C,aAAa,CAAC,EAAsC,CAClD,GAAI,EAAO,OAAS,OAAW,KAAK,KAAO,EAAO,KAClD,GAAI,EAAO,UAAY,OACrB,KAAK,QAAU,EAAO,QACtB,KAAK,eAAiB,EAAgB,EAAO,OAAO,EAEtD,GAAI,EAAO,QAAU,OAAW,KAAK,MAAQ,EAAO,WAQhD,KAAI,EAAkB,CAC1B,GAAI,KAAK,OAAS,GAChB,MAAU,MAAM,qEAAqE,EAGvF,GAAI,KAAK,QAAU,GACjB,MAAU,MAAM,4EAA4E,EAG9F,GAAI,KAAK,mBAAmB,YAC1B,OAAO,KACF,QAAI,KAAK,mBAAmB,QACjC,OAAO,MAAO,KAAK,QACd,KACL,IAAM,GAAY,SAAY,CAC5B,IAAI,EACA,EAA4B,CAAC,EAE3B,EAAK,MAAM,IAAI,QAAqB,CAAC,EAAS,IAAW,CAC7D,IAAM,EAAU,OAAO,UAAU,KAAK,KAAK,KAAM,KAAK,cAAc,EAEpE,EAAQ,QAAU,CAAC,IAAU,CAC3B,EAAW,MAAM,6BAA6B,KAAK,UAAW,EAAM,OAA4B,OAAO,SAAS,CAAC,GAGnH,EAAQ,UAAY,CAAC,IAAU,CAC7B,EAAS,EAAM,OAA4B,MAAM,GAGnD,EAAQ,gBAAkB,CAAC,IAAiC,CAC1D,EAAe,EACf,IAAM,EAAM,EAAM,OAA4B,OAE9C,GAAI,EAAM,WAAa,EAAG,CAExB,IAAM,EAAQ,EAAG,kBAAkB,KAAK,MAAO,KAAK,KAAK,EACzD,QAAW,KAAY,OAAO,KAAK,KAAK,KAAK,EAAG,CAC9C,IAAM,EAAM,KAAK,MAAM,GACvB,EAAM,YAAY,EAAI,KAAM,EAAI,MAAO,EAAI,KAAK,GAE7C,KAEL,IAAM,EAAoB,OAAO,KAAK,KAAK,QAAQ,EAAE,KAAK,CAAC,EAAG,IAAM,CAClE,IAAO,GAAQ,EAAE,MAAM,IAAI,EAAE,IAAI,MAAM,GAChC,GAAQ,EAAE,MAAM,IAAI,EAAE,IAAI,MAAM,EACvC,OAAO,EAAO,EACf,EAEK,EAAY,EAAkB,UAAU,CAAC,IAAM,CACnD,IAAO,GAAO,EAAE,MAAM,IAAI,EAC1B,OAAO,SAAS,CAAG,IAAM,EAAM,WAChC,EAED,GAAI,EAAY,GACd,EAAkB,EAAkB,MAAM,CAAS,EAAE,OAAO,CAAC,IAAM,CACjE,IAAO,EAAK,GAAQ,EAAE,MAAM,IAAI,EAChC,OAAO,SAAS,CAAG,EAAI,KAAK,gBAAkB,SAAS,CAAI,GAAK,KAAK,eACtE,EAKL,IAAM,EAAe,EAAM,OAA4B,YACvD,GAAI,EACF,EAAY,iBAAiB,WAAY,IAAM,EAE9C,GAGN,EAED,KAAK,QAAU,EAGf,QAAW,KAAc,EACvB,GAAI,CACF,MAAM,KAAK,SAAS,GAAY,KAAK,KAAM,KAAM,CAAY,EAC7D,MAAO,EAAG,CACV,QAAQ,MAAM,CAAC,EAInB,OAAO,OACN,EAGH,OADA,KAAK,QAAU,EACR,MAAM,QAYX,IAAG,CAAC,EAAqB,KAAM,EAA8C,CAEjF,OADA,MAAM,KAAK,KAAK,EACT,IAAI,QAAQ,CAAC,EAAS,IAAW,CACtC,IAAM,EAAe,KAAK,QACvB,YAAY,KAAK,MAAO,WAAW,EACnC,YAAY,KAAK,KAAK,EAErB,EAEJ,GAAI,IAAQ,KAAM,CAChB,IAAM,EAAgC,CAAC,EAEvC,EAAK,KAAK,SAAW,EACrB,EAAK,EAAY,IAAI,IAAK,KAAU,CAAiB,CAAC,EAEtD,OAAK,EAAY,IAAI,CAAK,EAG5B,EAAG,iBAAiB,UAAW,CAAC,IAAU,CACxC,EAAQ,CAAE,IAAK,OAAQ,EAAM,OAAsB,MAAM,EAAG,OAAM,CAAC,EACpE,EAED,EAAG,iBAAiB,QAAS,CAAC,IAAU,CACtC,EAAW,MAAM,sBAAsB,OAAU,EAAM,OAAsB,OAAO,SAAS,CAAC,EAC/F,EACF,OAWG,OAAM,CAAC,EAAa,EAA8C,CACtE,GAAI,CACF,IAAM,EAAe,MAAM,KAAK,IAAI,CAAG,EAEvC,GAAI,OAAO,EAAiB,IAC1B,OAAO,KAAK,IAAI,EAAK,CAAK,EAG5B,OAAO,IAAI,QAAQ,CAAC,EAAS,IAAW,CAKtC,IAAM,EAJe,KAAK,QACvB,YAAY,KAAK,MAAO,WAAW,EACnC,YAAY,KAAK,KAAK,EAEF,IAAI,IAAM,KAA6B,CAAiB,CAAC,EAEhF,EAAG,iBAAiB,UAAW,CAAC,IAAU,CACxC,EAAQ,CAAE,IAAK,OAAQ,EAAM,OAAsB,MAAM,EAAG,OAAM,CAAC,EACpE,EAED,EAAG,iBAAiB,QAAS,CAAC,IAAU,CACtC,EAAW,MAAM,yBAAyB,OAAU,EAAM,OAAsB,OAAO,SAAS,CAAC,EAClG,EACF,EACD,KAAM,CACN,OAAO,KAAK,IAAI,EAAK,CAAK,QAUxB,IAAG,CAAC,EAAoC,CAE5C,OADA,MAAM,KAAK,KAAK,EACT,IAAI,QAAQ,CAAC,EAAS,IAAW,CAKtC,IAAM,EAJe,KAAK,QACvB,YAAY,KAAK,MAAO,UAAU,EAClC,YAAY,KAAK,KAAK,EAEF,IAAI,CAAG,EAE9B,EAAG,iBAAiB,UAAW,CAAC,IAAU,CACxC,IAAM,EAAS,EAAM,OAAsB,OAC3C,GAAI,OAAO,EAAU,KAAe,IAAU,KAC5C,EAAQ,CAAK,EAEb,OAAO,IAAI,EAAiB,CAAG,CAAC,EAEnC,EAED,EAAG,iBAAiB,QAAS,CAAC,IAAU,CACtC,EAAW,MAAM,sBAAsB,OAAU,EAAM,OAAsB,OAAO,SAAS,CAAC,EAC/F,EACF,OASG,OAAM,EAA0C,CAEpD,OADA,MAAM,KAAK,KAAK,EACT,IAAI,QAAQ,CAAC,EAAS,IAAW,CAKtC,IAAM,EAJe,KAAK,QACvB,YAAY,KAAK,MAAO,UAAU,EAClC,YAAY,KAAK,KAAK,EAEF,OAAO,EAE9B,EAAG,iBAAiB,UAAW,CAAC,IAAU,CACxC,IAAM,EAAwC,CAAC,EAChC,EAAM,OAAsB,OAErC,QAAQ,CAAC,IAAS,CACtB,IAAM,EAAK,EAAK,KAAK,SAEf,EAAW,IAAK,CAAK,EAC3B,OAAO,EAAS,KAAK,SACrB,EAAQ,GAAM,EACf,EAED,EAAQ,CAAO,EAChB,EAED,EAAG,iBAAiB,QAAS,CAAC,IAAU,CACtC,EAAW,MAAM,4BAA6B,EAAM,OAAsB,OAAO,SAAS,CAAC,EAC5F,EACF,OASG,SAAQ,CAAC,EAA4B,CACzC,MAAM,KAAK,IAAI,CAAG,OAYd,QAAO,CAAC,EAAoB,EAAoB,EAAqD,CACzG,IAAM,EAAM,GAAG,EAAgB,CAAU,MAAM,EAAgB,CAAU,IAEzE,OADA,KAAK,SAAS,GAAO,EACd,QAAQ,QAAQ,EASzB,MAAM,EAAmB,CACvB,OAAO,QAAQ,OAAW,MAAM,iGAAiG,CAAC,EASpI,GAAG,EAAmB,CACpB,OAAO,QAAQ,OAAW,MAAM,+EAA+E,CAAC,OAQ5G,KAAI,EAAsB,CAE9B,OADA,MAAM,KAAK,KAAK,EACT,IAAI,QAAQ,CAAC,EAAS,IAAW,CAKtC,IAAM,EAJe,KAAK,QACvB,YAAY,KAAK,MAAO,UAAU,EAClC,YAAY,KAAK,KAAK,EAEF,WAAW,EAElC,EAAG,iBAAiB,UAAW,CAAC,IAAU,CACxC,EAAS,EAAM,OAAsB,OAAO,IAAI,MAAM,CAAC,GACtD,EAAK,EAER,EAAG,iBAAiB,QAAS,CAAC,IAAU,CACtC,EAAW,MAAM,uBAAwB,EAAM,OAAsB,OAAO,SAAS,CAAC,GACrF,EAAK,EACT,OASG,OAAM,CAAC,EAAoC,CAC/C,IAAM,EAAQ,MAAM,KAAK,IAAI,CAAG,EAChC,OAAO,IAAI,QAAQ,CAAC,EAAS,IAAW,CAKtC,IAAM,EAJe,KAAK,QACvB,YAAY,KAAK,MAAO,WAAW,EACnC,YAAY,KAAK,KAAK,EAEF,OAAO,CAAG,EAEjC,EAAG,iBAAiB,UAAW,IAAM,CACnC,EAAQ,CAAK,GACZ,EAAK,EAER,EAAG,iBAAiB,QAAS,CAAC,IAAU,CACtC,EAAW,MAAM,yBAAyB,OAAU,EAAM,OAAsB,OAAO,SAAS,CAAC,GAChG,EAAK,EACT,OAQG,MAAK,EAAkB,CAE3B,OADA,MAAM,KAAK,KAAK,EACT,IAAI,QAAQ,CAAC,EAAS,IAAW,CAKtC,IAAM,EAJe,KAAK,QACvB,YAAY,KAAK,MAAO,WAAW,EACnC,YAAY,KAAK,KAAK,EAEF,MAAM,EAE7B,EAAG,iBAAiB,UAAW,IAAM,CACnC,EAAQ,GACP,EAAK,EAER,EAAG,iBAAiB,QAAS,CAAC,IAAU,CACtC,EAAW,MAAM,0BAA2B,EAAM,OAAsB,OAAO,SAAS,CAAC,GACxF,EAAK,EACT,EAEL,CCnZO,MAAM,UAAyB,KAAM,CAC1C,WAAW,CAAC,EAAa,CACvB,MAAM,QAAQ,gCAAkC,EAChD,KAAK,KAAO,mBAEhB,CAQO,MAAM,CAA+C,CACnD,KACA,QACA,MACA,aACA,SACA,MACA,QAQP,WAAW,EAAG,OAAO,GAAI,UAAU,GAAI,QAAQ,GAAI,WAAW,GAAI,QAAQ,CAAC,GAAiC,CAC1G,KAAK,KAAO,EACZ,KAAK,QAAU,EACf,KAAK,MAAQ,EACb,KAAK,aAAe,EACpB,KAAK,SAAW,KAAK,gBAAgB,EACrC,KAAK,MAAQ,EAQP,eAAe,EAAW,CAChC,GAAI,KAAK,MACP,OAAO,EAAa,KAAK,aAAc,GAAG,KAAK,QAAQ,EAEzD,OAAO,KAAK,aAAa,SAAS,GAAG,EAAI,KAAK,aAAe,GAAG,KAAK,gBAQvE,aAAa,CAAC,EAA0C,CACtD,GAAI,EAAO,OAAS,OAAW,KAAK,KAAO,EAAO,KAClD,GAAI,EAAO,UAAY,OAAW,KAAK,QAAU,EAAO,QACxD,GAAI,EAAO,QAAU,OAAW,KAAK,MAAQ,EAAO,MACpD,GAAI,EAAO,WAAa,OAAW,KAAK,aAAe,EAAO,SAG9D,KAAK,SAAW,KAAK,gBAAgB,OAQjC,KAAI,EAAkB,CAC1B,GAAI,OAAO,KAAK,QAAY,IAC1B,KAAK,QAAU,EAGjB,OAAO,UAUH,IAAG,CAAC,EAAa,EAA8C,CACnE,MAAM,KAAK,KAAK,EAGhB,IAAM,EAAO,MADI,MAAM,KAAK,QAAS,KAAK,KAAK,SAAW,EAAK,EAAkC,KAAK,KAAK,GAC/E,KAAK,EAEjC,MAAO,CAAE,MAAK,MAAO,CAAK,OAYtB,OAAM,CAAC,EAAa,EAA8C,CACtE,MAAM,KAAK,KAAK,EAEhB,IAAM,EAAS,IADM,MAAM,KAAK,IAAI,CAAG,KACW,CAAiB,EAE7D,EAAO,MADI,MAAM,KAAK,QAAS,IAAI,KAAK,SAAW,EAAK,EAAmC,KAAK,KAAK,GAC/E,KAAK,EAEjC,MAAO,CAAE,MAAK,MAAO,CAAK,OAStB,IAAG,CAAC,EAAoC,CAE5C,OADA,MAAM,KAAK,KAAK,EACT,KAAK,QAAS,KAAK,KAAK,SAAW,EAAK,CAAC,EAAG,KAAK,KAAK,OAQzD,OAAM,EAA0C,CAEpD,OADA,MAAM,KAAK,KAAK,EACT,KAAK,QAAS,KAAK,KAAK,SAAU,CAAC,EAAG,KAAK,KAAK,OASnD,SAAQ,CAAC,EAA4B,CAEzC,IADa,MAAM,KAAK,KAAK,GACpB,SAAS,CAAG,EACnB,OAEA,WAAM,IAAI,EAAiB,CAAG,EAUlC,OAAO,EAAmB,CACxB,OAAO,QAAQ,OAAW,MAAM,2FAA2F,CAAC,EAS9H,MAAM,EAAmB,CACvB,OAAO,QAAQ,OAAW,MAAM,0FAA0F,CAAC,EAS7H,GAAG,EAAmB,CACpB,OAAO,QAAQ,OAAW,MAAM,mFAAmF,CAAC,OAShH,KAAI,EAAsB,CAE9B,OADA,MAAM,KAAK,KAAK,EACT,KAAK,QAAS,KAAe,KAAK,SAAU,CAAE,KAAM,EAAK,EAAG,KAAK,KAAK,OAUzE,OAAM,CAAC,EAAoC,CAG/C,OAFA,MAAM,KAAK,KAAK,GACC,MAAM,KAAK,QAAS,OAAO,KAAK,SAAW,EAAK,CAAC,EAAG,KAAK,KAAK,GAC/D,KAAK,OAQjB,MAAK,EAAkB,CAC3B,MAAM,KAAK,KAAK,EAChB,MAAM,KAAK,QAAS,OAAO,KAAK,SAAU,CAAC,EAAG,KAAK,KAAK,EAE5D,CCjNO,IAAM,EAAe,CAC1B,eACA,iBACA,YACA,eACF,EAiCO,MAAM,CAAM,CACT,eACD,QACA,UAKA,gBASP,WAAW,CAAC,EAAmC,EAAa,aAAc,EAAoC,CAAC,EAAG,CAEhH,KAAK,eAAiB,CAAE,KAAM,GAAI,QAAS,GAAI,MAAO,MAAO,CAAc,EAG3E,KAAK,QAAU,IAAI,EAAQ,KAAK,cAAc,EAG9C,KAAK,UAAY,CACf,OAAQ,CAAC,EACT,OAAQ,CAAC,EACT,OAAQ,CAAC,CACX,EAGA,KAAK,gBAAkB,CAAC,EAU1B,aAAa,CAAC,EAAoC,KAAsC,CACtF,GAAI,IAAW,KAAM,CAEnB,GADA,KAAK,eAAiB,IAAK,KAAK,kBAAmB,CAAO,EACtD,KAAK,QAAQ,cACf,KAAK,QAAQ,cAAc,CAAM,EAEnC,OAEA,YAAO,KAAK,oBASV,KAAI,EAAkB,CAE1B,OADA,MAAM,KAAK,QAAQ,KAAK,EACjB,KAUD,uBAAuB,CAAC,EAAa,EAAmC,CAC9E,IAAI,EAAmB,EAAW,CAAK,EACvC,QAAW,KAAkB,OAAO,OAAO,KAAK,eAAe,EAC7D,GAAI,OAAO,EAAe,MAAQ,WAChC,EAAmB,EAAe,IAAI,EAAK,CAAgB,EAG/D,OAAO,EAUD,uBAAuB,CAAC,EAAa,EAAmC,CAC9E,IAAI,EAAmB,EACvB,QAAW,KAAkB,OAAO,OAAO,KAAK,eAAe,EAC7D,GAAI,OAAO,EAAe,MAAQ,WAChC,EAAmB,EAAe,IAAI,EAAK,CAAgB,EAG/D,OAAO,OAUH,IAAG,CAAC,EAAa,EAA8C,CACnE,IAAM,EAAmB,KAAK,wBAAwB,EAAK,CAAK,EAC1D,EAAS,MAAM,KAAK,QAAQ,IAAI,EAAK,CAAgB,EAC3D,QAAW,KAAY,KAAK,UAAU,OACpC,EAAS,KAAK,KAAM,EAAO,IAAK,EAAO,KAAK,EAE9C,OAAO,OAWH,OAAM,CAAC,EAAa,EAA8C,CACtE,IAAM,EAAmB,KAAK,wBAAwB,EAAK,CAAK,EAC1D,EAAS,MAAM,KAAK,QAAQ,OAAO,EAAK,CAAgB,EAC9D,QAAW,KAAY,KAAK,UAAU,OACpC,EAAS,KAAK,KAAM,EAAO,IAAK,EAAO,KAAK,EAE9C,OAAO,OASH,IAAG,CAAC,EAAoC,CAC5C,IAAM,EAAQ,MAAM,KAAK,QAAQ,IAAI,CAAG,EACxC,OAAO,KAAK,wBAAwB,EAAK,CAAK,OAQ1C,OAAM,EAA0C,CACpD,IAAM,EAAS,MAAM,KAAK,QAAQ,OAAO,EACnC,EAAkD,CAAC,EAEzD,QAAW,KAAO,OAAO,KAAK,CAAM,EAClC,EAAkB,GAAO,KAAK,wBAAwB,EAAK,EAAO,EAAI,EAGxE,OAAO,OASH,KAAI,CAAC,EAA6E,CACtF,IAAM,EAAS,MAAM,KAAK,OAAO,EAC3B,EAAsB,CAAC,EAC7B,QAAY,EAAK,KAAU,OAAO,QAAQ,CAAM,EAC9C,EAAS,KAAK,EAAS,KAAK,KAAM,EAAK,CAAK,CAAC,EAE/C,OAAO,QAAQ,IAAI,CAAQ,EAS7B,QAAQ,CAAC,EAA4B,CACnC,OAAO,KAAK,QAAQ,SAAS,CAAG,OAW5B,QAAO,CAAC,EAAoB,EAAoB,EAA0C,CAE9F,OADA,MAAM,KAAK,QAAQ,QAAQ,EAAY,EAAY,CAAQ,EACpD,KAST,MAAM,CAAC,EAA6B,CAClC,OAAO,KAAK,QAAQ,OAAO,CAAI,EAQjC,QAAQ,CAAC,EAA+B,CACtC,KAAK,UAAU,OAAO,KAAK,CAAQ,EAQrC,QAAQ,CAAC,EAA+B,CACtC,KAAK,UAAU,OAAO,KAAK,CAAQ,EAQrC,QAAQ,CAAC,EAA+B,CACtC,KAAK,UAAU,OAAO,KAAK,CAAQ,EAQrC,iBAAiB,EAAG,KAAI,MAAK,OAA6B,CACxD,KAAK,gBAAgB,GAAM,CAAE,KAAI,MAAK,KAAI,EAQ5C,oBAAoB,CAAC,EAAkB,CACrC,OAAO,KAAK,gBAAgB,GAW9B,GAAG,CAAC,EAAe,EAAgB,GAAwB,CACzD,OAAO,KAAK,QAAQ,IAAI,EAAO,CAAI,EASrC,IAAI,CAAC,EAAgB,GAA0B,CAC7C,OAAO,KAAK,QAAQ,KAAK,CAAI,OASzB,OAAM,CAAC,EAA4B,CACvC,IAAM,EAAQ,MAAM,KAAK,QAAQ,OAAO,CAAG,EAE3C,QAAW,KAAY,KAAK,UAAU,OACpC,EAAS,KAAK,KAAM,EAAK,CAAK,EASlC,KAAK,EAAkB,CACrB,OAAO,KAAK,QAAQ,MAAM,EAE9B,CCnVO,MAAM,CAAK,OAST,WAAU,CAAC,EAAc,EAA6B,CAAC,EAAW,CACvE,IAAQ,eAAe,IAAU,EAEjC,OAAO,EAAK,QAAQ,SAAU,CAAC,IAAS,CACtC,IAAM,EAAY,EAAK,OAAO,CAAC,EAAE,YAAY,EACvC,EAAO,EAAe,EAAK,UAAU,CAAC,EAAI,EAAK,UAAU,CAAC,EAAE,YAAY,EAC9E,OAAO,EAAY,EACpB,QAMI,UAAS,EAAW,CACzB,OAAO,OAAO,aAAa,GAAG,SAAS,GAAK,SAUvC,OAAM,CAAC,EAAa,EAAsB,CAC/C,IAAM,EAAQ,EAAK,QAAQ,CAAG,EAE9B,GAAI,IAAU,GACZ,MAAO,GAGT,OAAO,EAAK,MAAM,EAAQ,EAAI,MAAM,QAU/B,OAAM,CAAC,EAAa,EAAsB,CAC/C,IAAM,EAAQ,EAAK,QAAQ,CAAG,EAE9B,GAAI,IAAU,GACZ,MAAO,GAGT,OAAO,EAAK,MAAM,EAAG,CAAK,QASrB,SAAQ,CAAC,EAAsB,CACpC,OAAO,EACJ,SAAS,EACT,UAAU,KAAK,EACf,QAAQ,mBAAoB,EAAE,EAC9B,YAAY,EACZ,KAAK,EACL,QAAQ,OAAQ,GAAG,EACnB,QAAQ,WAAY,EAAE,EACtB,QAAQ,OAAQ,GAAG,QAUjB,SAAQ,CAAC,EAAc,EAAmB,EAAmB,MAAe,CACjF,GAAI,EAAK,QAAU,EACjB,OAAO,EAGT,OAAO,EAAK,MAAM,EAAG,EAAY,EAAS,MAAM,EAAE,QAAQ,EAAI,QAMzD,QAAO,CAAC,EAA0C,CACvD,OAAO,IAAS,MAAQ,IAAS,QAAa,EAAK,KAAK,IAAM,GAElE,CCrGO,MAAM,CAAK,aAQH,UAAsB,CAAC,EAAuB,KAAqB,EAA6B,CAC3G,GAAI,CACF,OAAO,MAAM,EAAS,MAAM,EAAS,CAAI,EACzC,MAAO,EAAO,CACd,OAAO,QAAQ,OAAO,CAAK,SAOxB,KAAI,EAAW,CACpB,GAAI,OAAO,OAAW,KAAe,eAAgB,OACnD,OAAO,OAAO,WAAW,EAI3B,GAAI,OAAO,OAAW,KAAe,oBAAqB,OACxD,MAAO,uCAAuC,QAAQ,SAAU,CAAC,IAAM,CACrE,IAAM,EAAM,SAAS,EAAG,EAAE,EACpB,EAAS,OAAO,gBAAgB,IAAI,WAAW,CAAC,CAAC,EAAE,GACnD,EAAU,IAAM,KAAK,MAAM,EAAM,CAAC,EACxC,OAAQ,EAAO,EAAS,GAAU,SAAS,EAAE,EAC9C,EAIH,IAAM,EAAW,IAAc,KAAK,OAAO,EAAI,KAAK,OAAO,GAAK,KAAO,EAAE,SAAS,EAAE,EAAE,UAAU,CAAC,EACjG,MAAO,GAAG,EAAS,IAAI,EAAS,KAAK,EAAS,KAAK,EAAS,KAAK,EAAS,KAAK,EAAS,IAAI,EAAS,IAAI,EAAS,UAS7G,SAAmD,CAAC,EAAO,EAAiD,CACjH,IAAI,EAAkD,KAEtD,MAAO,IAAI,IAA8B,CACvC,GAAI,IAAc,KAChB,aAAa,CAAS,EAExB,EAAY,WAAW,IAAM,CAC3B,EAAG,GAAG,CAAI,EACV,EAAY,MACX,CAAK,SAUL,SAAmD,CAAC,EAAO,EAAiD,CACjH,IAAI,EAAa,GAEjB,MAAO,IAAI,IAA8B,CACvC,GAAI,CAAC,EACH,EAAG,GAAG,CAAI,EACV,EAAa,GACb,WAAW,IAAM,CACf,EAAa,IACZ,CAAK,GAIhB,CC3EA,GAAI,OAAO,SAAW,SACpB,OAAO,QAAU",
|
|
23
|
+
"debugId": "5FBF9D4F93D9636264756E2164756E21",
|
|
24
24
|
"names": []
|
|
25
25
|
}
|
package/dist/artemis.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var b;(($)=>{$[$.NONE=0]="NONE";$[$.ERROR=1]="ERROR";$[$.WARNING=2]="WARNING";$[$.INFO=3]="INFO";$[$.DEBUG=4]="DEBUG";$[$.ALL=5]="ALL"})(b||={});class g{static _level=0;static get currentLevel(){return this._level}static level(G){if(typeof G==="number")this._level=G;return this._level}static setLevel(G){this._level=G}static isEnabled(G){return this._level>=G}static log(...G){if(this._level>=4)console.log(...G)}static debug(...G){if(this._level>=4)console.debug(...G)}static info(...G){if(this._level>=3)console.info(...G)}static error(...G){if(this._level>=1)console.error(...G)}static warning(...G){if(this._level>=2)console.warn(...G)}static warn(...G){this.warning(...G)}static table(G,J){if(this._level>=4)console.table(G,J)}static group(...G){if(this._level>=4)console.group(...G)}static groupCollapsed(...G){if(this._level>=4)console.groupCollapsed(...G)}static groupEnd(){if(this._level>=4)console.groupEnd()}static time(G){if(this._level>=4)console.time(G)}static timeLog(G,...J){if(this._level>=4)console.timeLog(G,...J)}static timeEnd(G){if(this._level>=4)console.timeEnd(G)}static trace(...G){if(this._level>=4)console.trace(...G)}static assert(G,...J){if(this._level>=1)console.assert(G,...J)}static clear(){if(this._level>=4)console.clear()}static count(G){if(this._level>=4)console.count(G)}static countReset(G){if(this._level>=4)console.countReset(G)}static dir(G){if(this._level>=4)console.dir(G)}static dirxml(G){if(this._level>=4)console.dirxml(G)}static format(G,...J){let Q=G,X=0;return Q=Q.replace(/%[sdioOcj%]/g,(Y)=>{if(Y==="%%")return"%";if(X>=J.length)return Y;let Z=J[X++];switch(Y){case"%s":return String(Z);case"%d":case"%i":return String(parseInt(String(Z),10));case"%o":case"%O":return JSON.stringify(Z);case"%c":return"";case"%j":return JSON.stringify(Z);default:return Y}}),Q}}var j=new WeakMap;class I{collection;length;constructor(G){if(!G)this.collection=[];else if(typeof G==="string")this.collection=Array.from(document.querySelectorAll(G));else if(G instanceof NodeList)this.collection=Array.from(G);else if(G instanceof I)this.collection=G.collection;else if(G instanceof Element)this.collection=[G];else if(Array.isArray(G))this.collection=G;else this.collection=[];this.length=this.collection.length}hide(){return this.style("display","none")}show(G="block"){return this.style("display",G)}addClass(G){return this.collection.forEach((J)=>J.classList.add(G)),this}removeClass(G){return this.collection.forEach((J)=>{if(!G)J.className="";else J.classList.remove(G)}),this}toggleClass(G){let J=G.split(" ");return this.collection.forEach((Q)=>{J.forEach((X)=>Q.classList.toggle(X))}),this}hasClass(G){return this.collection.every((J)=>J.classList.contains(G))}value(G){if(G!==void 0){let Q=String(G);for(let X of this.collection)if(X instanceof HTMLInputElement||X instanceof HTMLTextAreaElement||X instanceof HTMLSelectElement||X instanceof HTMLButtonElement||X instanceof HTMLOptionElement)X.value=Q;return this}if(this.length===0)return;let J=this.collection[0];if(J instanceof HTMLInputElement||J instanceof HTMLTextAreaElement||J instanceof HTMLSelectElement||J instanceof HTMLButtonElement||J instanceof HTMLOptionElement)return J.value;return}focus(){if(this.length>0)this.collection[0].focus();return this}blur(){if(this.length>0)this.collection[0].blur();return this}click(G){return this.on("click",G)}keyup(G){return this.on("keyup",G)}keydown(G){return this.on("keydown",G)}submit(G){return this.on("submit",G)}change(G){return this.on("change",G)}scroll(G){return this.on("scroll",G)}input(G){return this.on("input",G)}on(G,J,Q){let X=G.split(" "),Y=typeof J==="string",Z=Y?Q:J,$=Y?J:null;if(!Z)return this;return this.collection.forEach((W)=>{X.forEach((B)=>{let _=Y&&$?(A)=>{let z=A.target;if(z instanceof Element){let H=z.closest($);if(H&&W.contains(H))Z.call(H,A)}}:Z;if(!j.has(W))j.set(W,new Map);let U=j.get(W);if(!U.has(B))U.set(B,[]);U.get(B).push({selector:$,originalCallback:Z,wrappedListener:_}),W.addEventListener(B,_,!1)})}),this}off(G,J,Q){return this.collection.forEach((X)=>{let Y=j.get(X);if(!Y)return;let Z=G?G.split(" "):Array.from(Y.keys()),$=typeof J==="string",W=$?J:null,B=$?Q:J;if(Z.forEach((_)=>{let U=Y.get(_);if(!U)return;let A=U.filter((H)=>{if(B&&H.originalCallback!==B)return!1;if(W!==void 0&&H.selector!==W)return!1;return!0});A.forEach((H)=>{X.removeEventListener(_,H.wrappedListener)});let z=U.filter((H)=>!A.includes(H));if(z.length>0)Y.set(_,z);else Y.delete(_)}),Y.size===0)j.delete(X)}),this}trigger(G,J){let Q=G.split(" ");return this.collection.forEach((X)=>{Q.forEach((Y)=>{let Z=J!==void 0?new CustomEvent(Y,{detail:J,bubbles:!0,cancelable:!0}):new Event(Y,{bubbles:!0,cancelable:!0});X.dispatchEvent(Z)})}),this}filter(G){return new I(this.collection.filter((J)=>J.matches(G)))}exists(){return this.length>0}data(G,J){if(J!==void 0)return this.collection.forEach((Q)=>Q.dataset[G]=J),this;return this.length>0?this.collection[0].dataset[G]:void 0}removeData(G){return this.collection.forEach((J)=>delete J.dataset[G]),this}text(G){if(G!==void 0){let J=String(G);for(let Q of this.collection)Q.textContent=J;return this}if(this.length===0)return;return this.collection[0].textContent||""}html(G){if(G!==void 0){let J=String(G);for(let Q of this.collection)Q.innerHTML=J;return this}if(this.length===0)return;return this.collection[0].innerHTML}append(G){return this.collection.forEach((J,Q)=>{if(typeof G==="string")J.insertAdjacentHTML("beforeend",G);else{let X=Q===0?G:G.cloneNode(!0);J.appendChild(X)}}),this}prepend(G){return this.collection.forEach((J,Q)=>{if(typeof G==="string")J.insertAdjacentHTML("afterbegin",G);else{let X=Q===0?G:G.cloneNode(!0);J.prepend(X)}}),this}each(G){return this.collection.forEach((J,Q)=>G(J,Q)),this}get(G){return this.collection[G]}first(){return new I(this.collection[0]??null)}last(){return new I(this.collection[this.collection.length-1]??null)}eq(G){let J=G<0?this.collection.length+G:G;return new I(this.collection[J]??null)}isVisible(){return this.collection.some((G)=>G.style.display!=="none"&&G.offsetWidth>0&&G.offsetHeight>0)}parent(){let G=new Set;return this.collection.forEach((J)=>{if(J.parentElement)G.add(J.parentElement)}),new I(Array.from(G))}parents(){let G=new Set;return this.collection.forEach((J)=>{let Q=J.parentElement;while(Q)G.add(Q),Q=Q.parentElement}),new I(Array.from(G))}find(G){let J=new Set;for(let Q of this.collection){let X=Q.querySelectorAll(G);for(let Y of X)J.add(Y)}return new I(Array.from(J))}offset(){if(this.length===0)return;let G=this.collection[0].getBoundingClientRect();return{top:G.top+window.scrollY,left:G.left+window.scrollX}}width(){if(this.length===0)return 0;return this.collection[0].getBoundingClientRect().width}height(){if(this.length===0)return 0;return this.collection[0].getBoundingClientRect().height}closest(G){let J=new Set;return this.collection.forEach((Q)=>{let X=Q.closest(G);if(X)J.add(X)}),new I(Array.from(J))}attribute(G,J){if(J!==void 0)return this.collection.forEach((Q)=>Q.setAttribute(G,String(J))),this;return this.length>0?this.collection[0].getAttribute(G):void 0}removeAttribute(G){return this.collection.forEach((J)=>J.removeAttribute(G)),this}hasAttribute(G){return this.collection.every((J)=>J.hasAttribute(G))}after(G){return this.collection.forEach((J)=>J.insertAdjacentHTML("afterend",G)),this}before(G){return this.collection.forEach((J)=>J.insertAdjacentHTML("beforebegin",G)),this}style(G,J){if(typeof G==="string"&&J===void 0)return this.length>0?this.collection[0].style.getPropertyValue(G):"";return this.collection.forEach((Q)=>{if(typeof G==="string"&&J!==void 0)Q.style.setProperty(G,J);else if(typeof G==="object")Object.entries(G).forEach(([X,Y])=>{Q.style.setProperty(X,String(Y))})}),this}animate(G,J){return this.collection.forEach((Q)=>Q.animate(G,J)),this}fadeIn(G=400,J){return this.collection.forEach((Q,X)=>{if(getComputedStyle(Q).display==="none")Q.style.display="block";let Y=Q.animate([{opacity:0},{opacity:1}],{duration:G,fill:"forwards"});if(J&&X===this.collection.length-1)Y.onfinish=()=>J()}),this}fadeOut(G=400,J){return this.collection.forEach((Q,X)=>{let Y=Q.animate([{opacity:1},{opacity:0}],{duration:G,fill:"forwards"});Y.onfinish=()=>{if(Q.style.display="none",J&&X===this.collection.length-1)J()}}),this}matches(G){if(this.length===0)return!1;return this.collection.every((J)=>J.matches(G))}remove(){return this.collection.forEach((G)=>G.remove()),this}empty(){return this.collection.forEach((G)=>{G.innerHTML=""}),this}clone(G=!0){let J=this.collection.map((Q)=>Q.cloneNode(G));return new I(J)}replaceWith(G){for(let J=this.collection.length-1;J>=0;J--){let Q=this.collection[J];if(typeof G==="string")Q.outerHTML=G;else{let X=J===0?G:G.cloneNode(!0);Q.replaceWith(X)}}return this}reset(){return this.collection.forEach((G)=>{if(G instanceof HTMLFormElement)G.reset()}),this}property(G,J){if(J!==void 0)return this.collection.forEach((Q)=>{Q[G]=J}),this;if(this.length===0)return;return this.collection[0][G]}siblings(){let G=new Set;return this.collection.forEach((J)=>{if(J.parentElement)Array.from(J.parentElement.children).forEach((Q)=>{if(Q!==J&&Q instanceof HTMLElement)G.add(Q)})}),new I(Array.from(G))}next(){let G=new Set;return this.collection.forEach((J)=>{let Q=J.nextElementSibling;if(Q instanceof HTMLElement)G.add(Q)}),new I(Array.from(G))}prev(){let G=new Set;return this.collection.forEach((J)=>{let Q=J.previousElementSibling;if(Q instanceof HTMLElement)G.add(Q)}),new I(Array.from(G))}children(){let G=new Set;return this.collection.forEach((J)=>{Array.from(J.children).forEach((Q)=>{if(Q instanceof HTMLElement)G.add(Q)})}),new I(Array.from(G))}scrollIntoView(G){if(this.length>0)this.collection[0].scrollIntoView(G);return this}}function c(G){return new I(G)}function u(G){if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",G);else G()}function m(G,J){let Q=document.createElement(G);if(J)Object.entries(J).forEach(([X,Y])=>{Q.setAttribute(X,Y)});return new I(Q)}class L extends Error{status;statusText;response;constructor(G,J){super(J||`Request failed: ${G.status} ${G.statusText}`);this.name="RequestError",this.status=G.status,this.statusText=G.statusText,this.response=G}}class R extends Error{constructor(G,J){super(`Request to "${G}" timed out after ${J}ms`);this.name="RequestTimeoutError"}}class K{static serialize(G,J){if(G instanceof FormData){let X=new URLSearchParams;return G.forEach((Y,Z)=>{if(typeof Y==="string")X.append(Z,Y)}),X.toString()}let Q=[];for(let[X,Y]of Object.entries(G)){if(Y===void 0||Y===null)continue;let Z=J?`${J}[${X}]`:X;if(Array.isArray(Y))Y.forEach(($,W)=>{if(typeof $==="object"&&$!==null)Q.push(K.serialize($,`${Z}[${W}]`));else Q.push(`${encodeURIComponent(Z)}[]=${encodeURIComponent(String($))}`)});else if(typeof Y==="object")Q.push(K.serialize(Y,Z));else Q.push(`${encodeURIComponent(Z)}=${encodeURIComponent(String(Y))}`)}return Q.filter(Boolean).join("&")}static parseUrl(G){try{return new URL(G)}catch{try{return new URL(G,window.location.origin)}catch(J){throw Error(`Invalid URL: "${G}"`)}}}static createTimeoutController(G,J){let Q=new AbortController;if(!G)return{controller:Q};let X=setTimeout(()=>{Q.abort(new R(J,G))},G);return{controller:Q,timeoutId:X}}static async send(G,J,Q={},X={}){let{timeout:Y,...Z}=X,$=K.parseUrl(J),W=void 0,B={...Z.headers};if(["GET","DELETE","HEAD"].includes(G.toUpperCase())){if(Q&&typeof Q==="object"&&!(Q instanceof FormData))Object.entries(Q).forEach(([A,z])=>{if(z!==void 0&&z!==null)$.searchParams.append(A,String(z))})}else{let A=B["Content-Type"]||B["content-type"];if(Q instanceof FormData)delete B["Content-Type"],delete B["content-type"],W=Q;else if(A==="application/json")W=JSON.stringify(Q);else{if(!A)B["Content-Type"]="application/x-www-form-urlencoded";let z=new URLSearchParams;Object.entries(Q).forEach(([H,M])=>z.append(H,String(M))),W=z}}let{controller:_,timeoutId:U}=K.createTimeoutController(Y,J);try{return await fetch($.toString(),{...Z,method:G,headers:B,body:W,signal:_.signal})}finally{if(U)clearTimeout(U)}}static get(G,J={},Q={}){return K.send("GET",G,J,Q)}static post(G,J,Q={}){return K.send("POST",G,J,Q)}static put(G,J,Q={}){return K.send("PUT",G,J,Q)}static patch(G,J,Q={}){return K.send("PATCH",G,J,Q)}static delete(G,J={},Q={}){return K.send("DELETE",G,J,Q)}static head(G,J={},Q={}){return K.send("HEAD",G,J,Q)}static async json(G,J={},Q={}){let X=await K.get(G,J,Q);if(!X.ok)throw new L(X);return X.json()}static async postJson(G,J,Q={}){let X={...Q.headers,"Content-Type":"application/json"},Y=await K.post(G,J,{...Q,headers:X});if(!Y.ok)throw new L(Y);return Y.json()}static async blob(G,J={},Q={}){let X=await K.get(G,J,Q);if(!X.ok)throw new L(X);return X.blob()}static async text(G,J={},Q={}){let X=await K.get(G,J,Q);if(!X.ok)throw new L(X);return X.text()}static async arrayBuffer(G,J={},Q={}){let X=await K.get(G,J,Q);if(!X.ok)throw new L(X);return X.arrayBuffer()}static async exists(G,J={}){try{return(await K.head(G,{},J)).ok}catch{return!1}}}class w{static async readRemote(G,J="base64",Q={}){let X=await K.blob(G,{},Q);return w.read(X,J)}static async read(G,J="text"){switch(J){case"text":return G.text();case"buffer":return G.arrayBuffer();case"base64":return new Promise((Q,X)=>{let Y=new FileReader;Y.onload=()=>Q(Y.result),Y.onerror=()=>X(Y.error),Y.readAsDataURL(G)});case"binary":return new Promise((Q,X)=>{let Y=new FileReader;Y.onload=()=>{let Z=Y.result,$="",W=new Uint8Array(Z),B=W.byteLength;for(let _=0;_<B;_++)$+=String.fromCharCode(W[_]);Q($)},Y.onerror=()=>X(Y.error),Y.readAsArrayBuffer(G)});default:throw Error(`FileSystem.read: Unknown type ${J}`)}}static create(G,J,Q="text/plain"){return new File([J],G,{type:Q})}static download(G,J){let Q=URL.createObjectURL(G),X=document.createElement("a");X.href=Q;let Y;if(J!==void 0&&J!=="")Y=J;else if(G instanceof File&&G.name!=="")Y=G.name;else Y="download";X.download=Y,document.body.appendChild(X),X.click(),document.body.removeChild(X),URL.revokeObjectURL(Q)}static extension(G,J=!1){let Q=G.split(".");if(Q.length===1||Q[0]===""&&Q.length===2&&!J)return"";return Q.pop()?.toLowerCase()??""}static isImage(G){let J=w.extension(G);return new Set(["jpg","jpeg","png","gif","svg","webp","avif","bmp","ico","tiff","heic"]).has(J)}static isVideo(G){let J=w.extension(G);return new Set(["mp4","webm","ogg","mov","avi","mkv","m4v"]).has(J)}static isAudio(G){let J=w.extension(G);return new Set(["mp3","wav","ogg","flac","aac","m4a","wma"]).has(J)}static humanSize(G,J=2){if(G===0)return"0 Bytes";let Q=1024,X=["Bytes","KB","MB","GB","TB","PB"],Y=Math.floor(Math.log(G)/Math.log(Q));return parseFloat((G/Math.pow(Q,Y)).toFixed(J))+" "+X[Y]}}class T{static fill(G,J){let Q=document.querySelector(`form[data-form='${G}']`);if(!Q){console.warn(`Form [data-form='${G}'] not found.`);return}Object.entries(J).forEach(([X,Y])=>{let Z=Q.querySelectorAll(`[name='${X}']`);if(Z.length===0)return;let W=Z[0].type,B=String(Y);switch(W){case"radio":Z.forEach((_)=>{let U=_;if(U.value===B)U.checked=!0});break;case"checkbox":if(Z.length===1)Z[0].checked=!!Y;else if(Array.isArray(Y)){let _=Y.map(String);Z.forEach((U)=>{let A=U;A.checked=_.includes(A.value)})}break;case"file":break;default:Z[0].value=B;break}})}static values(G,J={}){let{parseNumbers:Q=!0,parseBooleans:X=!0}=J,Y=document.querySelector(`form[data-form='${G}']`);if(!Y)return console.warn(`Form [data-form='${G}'] not found.`),{};let Z=new FormData(Y),$={},W=Array.from(new Set(Z.keys()));for(let B of W){let _=Z.getAll(B),U=Y.querySelector(`[name='${B}']`),A=U?.type;if(A==="file"){let z=_.filter((H)=>H instanceof File);if(U?.multiple||z.length>1)$[B]=z;else $[B]=z[0]||null;continue}if(A==="checkbox"){let z=Y.querySelectorAll(`[name='${B}']`);if(z.length===1&&X){$[B]=z[0].checked;continue}$[B]=_.map((H)=>T.parseValue(String(H),Q));continue}if(A==="number"&&Q){if(_.length>1)$[B]=_.map((z)=>parseFloat(String(z)));else $[B]=parseFloat(String(_[0]));continue}if(_.length>1)$[B]=_.map((z)=>T.parseValue(String(z),Q));else $[B]=T.parseValue(String(_[0]),Q)}return $}static parseValue(G,J){if(J&&G!==""&&!isNaN(Number(G)))return Number(G);return G}static reset(G){let J=document.querySelector(`form[data-form='${G}']`);if(!J){console.warn(`Form [data-form='${G}'] not found.`);return}J.reset()}static isValid(G){let J=document.querySelector(`form[data-form='${G}']`);if(!J)return console.warn(`Form [data-form='${G}'] not found.`),!1;return J.checkValidity()}static reportValidity(G){let J=document.querySelector(`form[data-form='${G}']`);if(!J)return console.warn(`Form [data-form='${G}'] not found.`),!1;return J.reportValidity()}}class P{static get retina(){return window.devicePixelRatio>=2}static get portrait(){return window.matchMedia("(orientation: portrait)").matches}static get landscape(){return window.matchMedia("(orientation: landscape)").matches}static get orientation(){return P.portrait?"portrait":"landscape"}static get darkMode(){return window.matchMedia("(prefers-color-scheme: dark)").matches}static get reducedMotion(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}static get touch(){return"ontouchstart"in window||navigator.maxTouchPoints>0}static get standalone(){let G=navigator;return window.matchMedia("(display-mode: standalone)").matches||G.standalone===!0}static get electron(){let G=window;if(navigator.userAgent.toLowerCase().includes(" electron/"))return!0;if(G.process?.type==="renderer")return!0;if(G.process?.versions?.electron)return!0;return!1}static get cordova(){return!!window.cordova}static get userAgent(){return navigator.userAgent.toLowerCase()}static desktop(G="Any"){let J=navigator;if(J.userAgentData?.mobile===!0)return!1;if(P.isIpadOS())return!1;let Q=P.userAgent,X=J.userAgentData?.platform?.toLowerCase()||"",Y={ChromeOS:X.includes("cros")||Q.includes("cros"),Windows:X.includes("windows")||Q.includes("windows"),macOS:X.includes("macos")||Q.includes("macintosh"),Linux:!Q.includes("android")&&(X.includes("linux")||Q.includes("linux")),FreeBSD:X.includes("freebsd")||Q.includes("freebsd")};if(G==="Any")return Object.values(Y).some((Z)=>Z);return Y[G]||!1}static mobile(G="Any"){if(navigator.userAgentData?.mobile===!0&&G==="Any")return!0;let Q=P.userAgent,X={Android:Q.includes("android"),iOS:/iphone|ipod/.test(Q),iPadOS:P.isIpadOS(),WindowsMobile:/windows phone|iemobile|wpdesktop/.test(Q),BlackBerry:/blackberry|bb10/.test(Q)};if(G==="Any")return Object.values(X).some((Y)=>Y);return X[G]||!1}static isIpadOS(){let G=P.userAgent;if(G.includes("ipad"))return!0;if(G.includes("macintosh")&&navigator.maxTouchPoints>0)return!0;return!1}static get serviceWorkers(){return"serviceWorker"in navigator&&window.isSecureContext}static get coarsePointer(){return window.matchMedia("(pointer: coarse)").matches}static get finePointer(){return window.matchMedia("(pointer: fine)").matches}static get canHover(){return window.matchMedia("(hover: hover)").matches}}class D{static async image(G){let J=new Image;return J.src=G,await J.decode(),J}static async images(G){return Promise.all(G.map((J)=>D.image(J)))}static async file(G,J="low"){let X=await fetch(G,{priority:J});if(!X.ok)throw Error(`Preload failed for "${G}": ${X.status} ${X.statusText}`);return X}static async files(G,J="low"){return Promise.all(G.map((Q)=>D.file(Q,J)))}static async isCached(G,J){if(!("caches"in window))return!1;try{return!!await(await caches.open(G)).match(J)}catch{return!1}}static async addToCache(G,J){if(!("caches"in window))throw Error("Cache API is not supported in this browser");try{await(await caches.open(G)).add(J)}catch(Q){throw Error(`Failed to cache "${J}": ${Q instanceof Error?Q.message:String(Q)}`)}}static async addAllToCache(G,J){if(!("caches"in window))throw Error("Cache API is not supported in this browser");try{await(await caches.open(G)).addAll(J)}catch(Q){throw Error(`Failed to cache URLs: ${Q instanceof Error?Q.message:String(Q)}`)}}static async stylesheet(G){return new Promise((J,Q)=>{let X=document.createElement("link");X.rel="preload",X.as="style",X.href=G,X.onload=()=>J(),X.onerror=()=>Q(Error(`Failed to preload stylesheet: ${G}`)),document.head.appendChild(X)})}static async script(G){return new Promise((J,Q)=>{let X=document.createElement("link");X.rel="preload",X.as="script",X.href=G,X.onload=()=>J(),X.onerror=()=>Q(Error(`Failed to preload script: ${G}`)),document.head.appendChild(X)})}static async font(G,J=!0){return new Promise((Q,X)=>{let Y=document.createElement("link");if(Y.rel="preload",Y.as="font",Y.href=G,J)Y.crossOrigin="anonymous";Y.onload=()=>Q(),Y.onerror=()=>X(Error(`Failed to preload font: ${G}`)),document.head.appendChild(Y)})}}function E(G){if(G==="")return 0;let J=G.split("."),Q=0,X=[1000000000000,1e8,1e4];for(let Y=0;Y<Math.min(J.length,X.length);Y++){let Z=parseInt(J[Y],10)||0;Q+=Z*X[Y]}return Q}function S(G){if(G===null||typeof G!=="object")return G;if(Array.isArray(G))return G.map((Q)=>S(Q));let J={};for(let Q of Object.keys(G))J[Q]=S(G[Q]);return J}function x(G,J){let Q=G.endsWith("/")?G.slice(0,-1):G,X=J.startsWith("/")?J:`/${J}`;return`${Q}${X}`}class O extends Error{constructor(G){super(`Key "${G}" not found in storage`);this.name="KeyNotFoundError"}}class F{name;version;store;id;numericVersion;upgrades;storage;_openPromise;constructor({name:G="",version:J="",store:Q=""}){this.name=G,this.version=J,this.store=Q,this.upgrades={},this.numericVersion=E(J),this.id=this.computeId()}computeId(){if(this.name!==""&&this.version!==""&&this.store!=="")return`${this.name}::${this.store}::${this.version}_`;else if(this.name!==""&&this.version!=="")return`${this.name}::${this.version}_`;else if(this.name!=="")return`${this.name}::_`;else return""}configuration(G){if(G.name!==void 0)this.name=G.name;if(G.version!==void 0)this.version=G.version,this.numericVersion=E(G.version);if(G.store!==void 0)this.store=G.store;this.id=this.computeId()}async open(){if(this.storage instanceof Storage)return this;if(this._openPromise)return this._openPromise;this._openPromise=(async()=>{let G=[];if(this.version!==""){let J="";if(this.name!==""&&this.version!==""&&this.store!=="")J=`${this.name}::${this.store}::`;else if(this.name!==""&&this.version!=="")J=`${this.name}::`;let Q=Object.keys(window.localStorage).filter((X)=>{return X.indexOf(J)===0}).map((X)=>{return X.replace(J,"").split("_")[0]}).filter((X)=>{return X.indexOf("::")===-1}).sort();if(Q.length>0){let X=Q[0],Y=E(X);if(Y<this.numericVersion){let Z=Object.keys(this.upgrades).sort((_,U)=>{let[A]=_.split("::").map(Number),[z]=U.split("::").map(Number);return A-z}),$=Z.findIndex((_)=>{let[U]=_.split("::");return parseInt(U)===Y});if($>-1)G=Z.slice($).filter((_)=>{let[U,A]=_.split("::");return parseInt(U)<this.numericVersion&&parseInt(A)<=this.numericVersion});let W=`${this.name}::${X}_`;if(this.name!==""&&this.version!==""&&this.store!=="")W=`${this.name}::${this.store}::${X}_`;else if(this.name!==""&&this.version!=="")W=`${this.name}::${X}_`;let B=Object.keys(window.localStorage).filter((_)=>{return _.indexOf(W)===0}).map((_)=>{return _.replace(W,"")});for(let _ of B){let U=window.localStorage.getItem(`${W}${_}`);if(U!==null)window.localStorage.setItem(this.id+_,U);window.localStorage.removeItem(`${W}${_}`)}}}}this.storage=window.localStorage;for(let J of G)try{await this.upgrades[J].call(this,this)}catch(Q){console.error(Q)}return this})();try{return await this._openPromise}finally{this._openPromise=void 0}}async set(G,J){if(await this.open(),typeof J==="object")this.storage.setItem(this.id+G,JSON.stringify(J));else this.storage.setItem(this.id+G,String(J));return{key:G,value:J}}async update(G,J){try{let Q=await this.get(G);if(typeof Q==="object"&&Q!==null){if(typeof J==="object"&&J!==null)J={...Q,...J};this.storage.setItem(this.id+G,JSON.stringify(J))}else this.storage.setItem(this.id+G,String(J));return{key:G,value:J}}catch{return this.set(G,J)}}async get(G){await this.open();let J=this.storage.getItem(this.id+G);if(J===null)throw new O(G);try{let Q=JSON.parse(J);if(Q&&typeof Q==="object")return Q;return J}catch{return J}}async getAll(){let G=await this.keys(),J={};for(let Q of G)try{J[Q]=await this.get(Q)}catch{}return J}async contains(G){if((await this.keys()).includes(G))return;else throw new O(G)}async upgrade(G,J,Q){let X=`${E(G)}::${E(J)}`;return this.upgrades[X]=Q,Promise.resolve()}async rename(G){if(this.name===G)throw Error("Cannot rename: new name is identical to current name");let J=await this.keys(),Q=this.id;this.name=G,this.id=this.computeId();for(let X of J){let Y=this.storage.getItem(`${Q}${X}`);if(Y!==null)this.storage.setItem(this.id+X,Y),this.storage.removeItem(`${Q}${X}`)}}async key(G,J=!1){let Q=await this.keys(J);if(G<0||G>=Q.length)throw Error(`Index ${G} out of bounds. Space has ${Q.length} keys.`);return Q[G]}async keys(G=!1){return await this.open(),Object.keys(this.storage).filter((J)=>{return J.indexOf(this.id)===0}).map((J)=>{if(G===!0)return J;else return J.replace(this.id,"")})}async remove(G){let J=await this.get(G);return this.storage.removeItem(this.id+G),J}async clear(){let G=await this.keys();for(let J of G)this.storage.removeItem(this.id+J)}}class C extends F{constructor({name:G="",version:J="",store:Q=""}){super({name:G,version:J,store:Q})}async open(){if(this.storage instanceof Storage)return this;return this.storage=window.sessionStorage,this}async upgrade(G,J,Q){return console.warn("SessionStorage.upgrade() is a no-op. Session data is temporary and does not support migrations."),Promise.resolve()}}class N extends Error{constructor(G){super(`Key "${G}" not found in IndexedDB`);this.name="KeyNotFoundError"}}class q{name;version;store;props;index;keyPath;numericVersion;upgrades;storage;constructor({name:G="",version:J="",store:Q="",props:X={},index:Y={}}){this.name=G,this.version=J,this.store=Q,this.props=X||{},this.index=Y,this.keyPath=X?.keyPath||"id",this.upgrades={},this.numericVersion=E(J)}configuration(G){if(G.name!==void 0)this.name=G.name;if(G.version!==void 0)this.version=G.version,this.numericVersion=E(G.version);if(G.store!==void 0)this.store=G.store}async open(){if(this.name==="")throw Error("IndexedDB requires a name. No name has been defined for this space.");if(this.store==="")throw Error("IndexedDB requires a store name. No store has been defined for this space.");if(this.storage instanceof IDBDatabase)return this;else if(this.storage instanceof Promise)return await this.storage;else{let G=(async()=>{let J,Q=[],X=await new Promise((Y,Z)=>{let $=window.indexedDB.open(this.name,this.numericVersion);$.onerror=(W)=>{Z(Error(`Failed to open IndexedDB "${this.name}": ${W.target.error?.message}`))},$.onsuccess=(W)=>{Y(W.target.result)},$.onupgradeneeded=(W)=>{J=W;let B=W.target.result;if(W.oldVersion<1){let U=B.createObjectStore(this.store,this.props);for(let A of Object.keys(this.index)){let z=this.index[A];U.createIndex(z.name,z.field,z.props)}}else{let U=Object.keys(this.upgrades).sort((z,H)=>{let[M]=z.split("::").map(Number),[f]=H.split("::").map(Number);return M-f}),A=U.findIndex((z)=>{let[H]=z.split("::");return parseInt(H)===W.oldVersion});if(A>-1)Q=U.slice(A).filter((z)=>{let[H,M]=z.split("::");return parseInt(H)<this.numericVersion&&parseInt(M)<=this.numericVersion})}let _=W.target.transaction;if(_)_.addEventListener("complete",()=>{})}});this.storage=X;for(let Y of Q)try{await this.upgrades[Y].call(this,this,J)}catch(Z){console.error(Z)}return this})();return this.storage=G,await G}}async set(G=null,J){return await this.open(),new Promise((Q,X)=>{let Y=this.storage.transaction(this.store,"readwrite").objectStore(this.store),Z;if(G!==null){let $={};$[this.keyPath]=G,Z=Y.put({...$,...J})}else Z=Y.add(J);Z.addEventListener("success",($)=>{Q({key:String($.target.result),value:J})}),Z.addEventListener("error",($)=>{X(Error(`Failed to set key "${G}": ${$.target.error?.message}`))})})}async update(G,J){try{let Q=await this.get(G);if(typeof Q>"u")return this.set(G,J);return new Promise((X,Y)=>{let $=this.storage.transaction(this.store,"readwrite").objectStore(this.store).put({...Q,...J});$.addEventListener("success",(W)=>{X({key:String(W.target.result),value:J})}),$.addEventListener("error",(W)=>{Y(Error(`Failed to update key "${G}": ${W.target.error?.message}`))})})}catch{return this.set(G,J)}}async get(G){return await this.open(),new Promise((J,Q)=>{let Y=this.storage.transaction(this.store,"readonly").objectStore(this.store).get(G);Y.addEventListener("success",(Z)=>{let $=Z.target.result;if(typeof $<"u"&&$!==null)J($);else Q(new N(G))}),Y.addEventListener("error",(Z)=>{Q(Error(`Failed to get key "${G}": ${Z.target.error?.message}`))})})}async getAll(){return await this.open(),new Promise((G,J)=>{let X=this.storage.transaction(this.store,"readonly").objectStore(this.store).getAll();X.addEventListener("success",(Y)=>{let Z={};Y.target.result.forEach((W)=>{let B=W[this.keyPath],_={...W};delete _[this.keyPath],Z[B]=_}),G(Z)}),X.addEventListener("error",(Y)=>{J(Error(`Failed to get all items: ${Y.target.error?.message}`))})})}async contains(G){await this.get(G)}async upgrade(G,J,Q){let X=`${E(G)}::${E(J)}`;return this.upgrades[X]=Q,Promise.resolve()}rename(){return Promise.reject(Error("IndexedDB does not support renaming databases. Create a new database and migrate data manually."))}key(){return Promise.reject(Error("IndexedDB does not support getting keys by index. Use keys() to get all keys."))}async keys(){return await this.open(),new Promise((G,J)=>{let X=this.storage.transaction(this.store,"readonly").objectStore(this.store).getAllKeys();X.addEventListener("success",(Y)=>{G(Y.target.result.map(String))},!1),X.addEventListener("error",(Y)=>{J(Error(`Failed to get keys: ${Y.target.error?.message}`))},!1)})}async remove(G){let J=await this.get(G);return new Promise((Q,X)=>{let Z=this.storage.transaction(this.store,"readwrite").objectStore(this.store).delete(G);Z.addEventListener("success",()=>{Q(J)},!1),Z.addEventListener("error",($)=>{X(Error(`Failed to delete key "${G}": ${$.target.error?.message}`))},!1)})}async clear(){return await this.open(),new Promise((G,J)=>{let X=this.storage.transaction(this.store,"readwrite").objectStore(this.store).clear();X.addEventListener("success",()=>{G()},!1),X.addEventListener("error",(Y)=>{J(Error(`Failed to clear store: ${Y.target.error?.message}`))},!1)})}}class h extends Error{constructor(G){super(`Key "${G}" not found in remote storage`);this.name="KeyNotFoundError"}}class V{name;version;store;baseEndpoint;endpoint;props;storage;constructor({name:G="",version:J="",store:Q="",endpoint:X="",props:Y={}}){this.name=G,this.version=J,this.store=Q,this.baseEndpoint=X,this.endpoint=this.computeEndpoint(),this.props=Y}computeEndpoint(){if(this.store)return x(this.baseEndpoint,`${this.store}/`);return this.baseEndpoint.endsWith("/")?this.baseEndpoint:`${this.baseEndpoint}/`}configuration(G){if(G.name!==void 0)this.name=G.name;if(G.version!==void 0)this.version=G.version;if(G.store!==void 0)this.store=G.store;if(G.endpoint!==void 0)this.baseEndpoint=G.endpoint;this.endpoint=this.computeEndpoint()}async open(){if(typeof this.storage>"u")this.storage=K;return this}async set(G,J){await this.open();let X=await(await this.storage.post(this.endpoint+G,J,this.props)).json();return{key:G,value:X}}async update(G,J){await this.open();let X={...await this.get(G),...J},Z=await(await this.storage.put(this.endpoint+G,X,this.props)).json();return{key:G,value:Z}}async get(G){return await this.open(),this.storage.json(this.endpoint+G,{},this.props)}async getAll(){return await this.open(),this.storage.json(this.endpoint,{},this.props)}async contains(G){if((await this.keys()).includes(G))return;else throw new h(G)}upgrade(){return Promise.reject(Error("RemoteStorage cannot be upgraded from the client. Upgrades must be performed server-side."))}rename(){return Promise.reject(Error("RemoteStorage cannot be renamed from the client. Renaming must be performed server-side."))}key(){return Promise.reject(Error("RemoteStorage does not support getting keys by index. Use keys() to get all keys."))}async keys(){return await this.open(),this.storage.json(this.endpoint,{keys:!0},this.props)}async remove(G){return await this.open(),(await this.storage.delete(this.endpoint+G,{},this.props)).json()}async clear(){await this.open(),await this.storage.delete(this.endpoint,{},this.props)}}var y={LocalStorage:F,SessionStorage:C,IndexedDB:q,RemoteStorage:V};class k{_configuration;adapter;callbacks;transformations;constructor(G=y.LocalStorage,J={}){this._configuration={name:"",version:"",store:"",...J},this.adapter=new G(this._configuration),this.callbacks={create:[],update:[],delete:[]},this.transformations={}}configuration(G=null){if(G!==null){if(this._configuration={...this._configuration,...G},this.adapter.configuration)this.adapter.configuration(G);return}else return this._configuration}async open(){return await this.adapter.open(),this}applySetTransformations(G,J){let Q=S(J);for(let X of Object.values(this.transformations))if(typeof X.set==="function")Q=X.set(G,Q);return Q}applyGetTransformations(G,J){let Q=J;for(let X of Object.values(this.transformations))if(typeof X.get==="function")Q=X.get(G,Q);return Q}async set(G,J){let Q=this.applySetTransformations(G,J),X=await this.adapter.set(G,Q);for(let Y of this.callbacks.create)Y.call(null,X.key,X.value);return X}async update(G,J){let Q=this.applySetTransformations(G,J),X=await this.adapter.update(G,Q);for(let Y of this.callbacks.update)Y.call(null,X.key,X.value);return X}async get(G){let J=await this.adapter.get(G);return this.applyGetTransformations(G,J)}async getAll(){let G=await this.adapter.getAll(),J={};for(let Q of Object.keys(G))J[Q]=this.applyGetTransformations(Q,G[Q]);return J}async each(G){let J=await this.getAll(),Q=[];for(let[X,Y]of Object.entries(J))Q.push(G.call(this,X,Y));return Promise.all(Q)}contains(G){return this.adapter.contains(G)}async upgrade(G,J,Q){return await this.adapter.upgrade(G,J,Q),this}rename(G){return this.adapter.rename(G)}onCreate(G){this.callbacks.create.push(G)}onUpdate(G){this.callbacks.update.push(G)}onDelete(G){this.callbacks.delete.push(G)}addTransformation({id:G,get:J,set:Q}){this.transformations[G]={id:G,get:J,set:Q}}removeTransformation(G){delete this.transformations[G]}key(G,J=!1){return this.adapter.key(G,J)}keys(G=!1){return this.adapter.keys(G)}async remove(G){let J=await this.adapter.remove(G);for(let Q of this.callbacks.delete)Q.call(null,G,J)}clear(){return this.adapter.clear()}}class p{static capitalize(G,J={}){let{preserveCase:Q=!1}=J;return G.replace(/\w\S*/g,(X)=>{let Y=X.charAt(0).toUpperCase(),Z=Q?X.substring(1):X.substring(1).toLowerCase();return Y+Z})}static selection(){return window.getSelection()?.toString()||""}static suffix(G,J){let Q=J.indexOf(G);if(Q===-1)return"";return J.slice(Q+G.length)}static prefix(G,J){let Q=J.indexOf(G);if(Q===-1)return"";return J.slice(0,Q)}static friendly(G){return G.toString().normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().trim().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-")}static truncate(G,J,Q="..."){if(G.length<=J)return G;return G.slice(0,J-Q.length).trimEnd()+Q}static isBlank(G){return G===null||G===void 0||G.trim()===""}}class d{static async callAsync(G,J,...Q){try{return await G.apply(J,Q)}catch(X){return Promise.reject(X)}}static uuid(){if(typeof crypto<"u"&&"randomUUID"in crypto)return crypto.randomUUID();if(typeof crypto<"u"&&"getRandomValues"in crypto)return"10000000-1000-4000-8000-100000000000".replace(/[018]/g,(J)=>{let Q=parseInt(J,10),X=crypto.getRandomValues(new Uint8Array(1))[0],Y=15>>Math.floor(Q/4);return(Q^X&Y).toString(16)});let G=()=>Math.floor((1+Math.random())*65536).toString(16).substring(1);return`${G()}${G()}-${G()}-${G()}-${G()}-${G()}${G()}${G()}`}static debounce(G,J){let Q=null;return(...X)=>{if(Q!==null)clearTimeout(Q);Q=setTimeout(()=>{G(...X),Q=null},J)}}static throttle(G,J){let Q=!1;return(...X)=>{if(!Q)G(...X),Q=!0,setTimeout(()=>{Q=!1},J)}}}export{d as Util,p as Text,y as SpaceAdapter,k as Space,C as SessionStorage,R as RequestTimeoutError,L as RequestError,K as Request,V as RemoteStorage,D as Preload,P as Platform,F as LocalStorage,q as IndexedDB,T as Form,w as FileSystem,b as DebugLevel,g as Debug,I as DOM,u as $_ready,m as $_create,c as $_};
|
|
1
|
+
var b;((Z)=>{Z[Z.NONE=0]="NONE";Z[Z.ERROR=1]="ERROR";Z[Z.WARNING=2]="WARNING";Z[Z.INFO=3]="INFO";Z[Z.DEBUG=4]="DEBUG";Z[Z.ALL=5]="ALL"})(b||={});class g{static _level=0;static get currentLevel(){return this._level}static level(G){if(typeof G==="number")this._level=G;return this._level}static setLevel(G){this._level=G}static isEnabled(G){return this._level>=G}static log(...G){if(this._level>=4)console.log(...G)}static debug(...G){if(this._level>=4)console.debug(...G)}static info(...G){if(this._level>=3)console.info(...G)}static error(...G){if(this._level>=1)console.error(...G)}static warning(...G){if(this._level>=2)console.warn(...G)}static warn(...G){this.warning(...G)}static table(G,J){if(this._level>=4)console.table(G,J)}static group(...G){if(this._level>=4)console.group(...G)}static groupCollapsed(...G){if(this._level>=4)console.groupCollapsed(...G)}static groupEnd(){if(this._level>=4)console.groupEnd()}static time(G){if(this._level>=4)console.time(G)}static timeLog(G,...J){if(this._level>=4)console.timeLog(G,...J)}static timeEnd(G){if(this._level>=4)console.timeEnd(G)}static trace(...G){if(this._level>=4)console.trace(...G)}static assert(G,...J){if(this._level>=1)console.assert(G,...J)}static clear(){if(this._level>=4)console.clear()}static count(G){if(this._level>=4)console.count(G)}static countReset(G){if(this._level>=4)console.countReset(G)}static dir(G){if(this._level>=4)console.dir(G)}static dirxml(G){if(this._level>=4)console.dirxml(G)}static format(G,...J){let Q=G,W=0;return Q=Q.replace(/%[sdioOcj%]/g,(X)=>{if(X==="%%")return"%";if(W>=J.length)return X;let Y=J[W++];switch(X){case"%s":return String(Y);case"%d":case"%i":return String(parseInt(String(Y),10));case"%o":case"%O":return JSON.stringify(Y);case"%c":return"";case"%j":return JSON.stringify(Y);default:return X}}),Q}}var j=new WeakMap;class I{collection;length;constructor(G){if(!G)this.collection=[];else if(typeof G==="string")this.collection=Array.from(document.querySelectorAll(G));else if(G instanceof NodeList)this.collection=Array.from(G);else if(G instanceof I)this.collection=G.collection;else if(G instanceof Element)this.collection=[G];else if(Array.isArray(G))this.collection=G;else this.collection=[];this.length=this.collection.length}hide(){return this.style("display","none")}show(G="block"){return this.style("display",G)}addClass(G){return this.collection.forEach((J)=>J.classList.add(G)),this}removeClass(G){return this.collection.forEach((J)=>{if(!G)J.className="";else J.classList.remove(G)}),this}toggleClass(G){let J=G.split(" ");return this.collection.forEach((Q)=>{J.forEach((W)=>Q.classList.toggle(W))}),this}hasClass(G){return this.collection.every((J)=>J.classList.contains(G))}value(G){if(G!==void 0){let Q=String(G);for(let W of this.collection)if(W instanceof HTMLInputElement||W instanceof HTMLTextAreaElement||W instanceof HTMLSelectElement||W instanceof HTMLButtonElement||W instanceof HTMLOptionElement)W.value=Q;return this}if(this.length===0)return;let J=this.collection[0];if(J instanceof HTMLInputElement||J instanceof HTMLTextAreaElement||J instanceof HTMLSelectElement||J instanceof HTMLButtonElement||J instanceof HTMLOptionElement)return J.value;return}focus(){if(this.length>0)this.collection[0].focus();return this}blur(){if(this.length>0)this.collection[0].blur();return this}click(G){return this.on("click",G)}keyup(G){return this.on("keyup",G)}keydown(G){return this.on("keydown",G)}submit(G){return this.on("submit",G)}change(G){return this.on("change",G)}scroll(G){return this.on("scroll",G)}input(G){return this.on("input",G)}on(G,J,Q){let W=G.split(" "),X=typeof J==="string",Y=X?Q:J,Z=X?J:null;if(!Y)return this;return this.collection.forEach(($)=>{W.forEach((B)=>{let _=X&&Z?(A)=>{let z=A.target;if(z instanceof Element){let H=z.closest(Z);if(H&&$.contains(H))Y.call(H,A)}}:Y;if(!j.has($))j.set($,new Map);let U=j.get($);if(!U.has(B))U.set(B,[]);U.get(B).push({selector:Z,originalCallback:Y,wrappedListener:_}),$.addEventListener(B,_,!1)})}),this}off(G,J,Q){return this.collection.forEach((W)=>{let X=j.get(W);if(!X)return;let Y=G?G.split(" "):Array.from(X.keys()),Z=typeof J==="string",$=Z?J:null,B=Z?Q:J;if(Y.forEach((_)=>{let U=X.get(_);if(!U)return;let A=U.filter((H)=>{if(B&&H.originalCallback!==B)return!1;if($!==void 0&&H.selector!==$)return!1;return!0});A.forEach((H)=>{W.removeEventListener(_,H.wrappedListener)});let z=U.filter((H)=>!A.includes(H));if(z.length>0)X.set(_,z);else X.delete(_)}),X.size===0)j.delete(W)}),this}trigger(G,J){let Q=G.split(" ");return this.collection.forEach((W)=>{Q.forEach((X)=>{let Y=J!==void 0?new CustomEvent(X,{detail:J,bubbles:!0,cancelable:!0}):new Event(X,{bubbles:!0,cancelable:!0});W.dispatchEvent(Y)})}),this}filter(G){return new I(this.collection.filter((J)=>J.matches(G)))}exists(){return this.length>0}data(G,J){if(J!==void 0)return this.collection.forEach((Q)=>Q.dataset[G]=J),this;return this.length>0?this.collection[0].dataset[G]:void 0}removeData(G){return this.collection.forEach((J)=>delete J.dataset[G]),this}text(G){if(G!==void 0){let J=String(G);for(let Q of this.collection)Q.textContent=J;return this}if(this.length===0)return;return this.collection[0].textContent||""}html(G){if(G!==void 0){let J=String(G);for(let Q of this.collection)Q.innerHTML=J;return this}if(this.length===0)return;return this.collection[0].innerHTML}append(G){return this.collection.forEach((J,Q)=>{if(typeof G==="string")J.insertAdjacentHTML("beforeend",G);else{let W=Q===0?G:G.cloneNode(!0);J.appendChild(W)}}),this}prepend(G){return this.collection.forEach((J,Q)=>{if(typeof G==="string")J.insertAdjacentHTML("afterbegin",G);else{let W=Q===0?G:G.cloneNode(!0);J.prepend(W)}}),this}each(G){return this.collection.forEach((J,Q)=>G(J,Q)),this}get(G){return this.collection[G]}first(){return new I(this.collection[0]??null)}last(){return new I(this.collection[this.collection.length-1]??null)}eq(G){let J=G<0?this.collection.length+G:G;return new I(this.collection[J]??null)}isVisible(){return this.collection.some((G)=>G.style.display!=="none"&&G.offsetWidth>0&&G.offsetHeight>0)}parent(){let G=new Set;return this.collection.forEach((J)=>{if(J.parentElement)G.add(J.parentElement)}),new I(Array.from(G))}parents(){let G=new Set;return this.collection.forEach((J)=>{let Q=J.parentElement;while(Q)G.add(Q),Q=Q.parentElement}),new I(Array.from(G))}find(G){let J=new Set;for(let Q of this.collection){let W=Q.querySelectorAll(G);for(let X of W)J.add(X)}return new I(Array.from(J))}offset(){if(this.length===0)return;let G=this.collection[0].getBoundingClientRect();return{top:G.top+window.scrollY,left:G.left+window.scrollX}}width(){if(this.length===0)return 0;return this.collection[0].getBoundingClientRect().width}height(){if(this.length===0)return 0;return this.collection[0].getBoundingClientRect().height}closest(G){let J=new Set;return this.collection.forEach((Q)=>{let W=Q.closest(G);if(W)J.add(W)}),new I(Array.from(J))}attribute(G,J){if(J!==void 0)return this.collection.forEach((Q)=>Q.setAttribute(G,String(J))),this;return this.length>0?this.collection[0].getAttribute(G):void 0}removeAttribute(G){return this.collection.forEach((J)=>J.removeAttribute(G)),this}hasAttribute(G){return this.collection.every((J)=>J.hasAttribute(G))}after(G){return this.collection.forEach((J)=>J.insertAdjacentHTML("afterend",G)),this}before(G){return this.collection.forEach((J)=>J.insertAdjacentHTML("beforebegin",G)),this}style(G,J){if(typeof G==="string"&&J===void 0)return this.length>0?this.collection[0].style.getPropertyValue(G):"";return this.collection.forEach((Q)=>{if(typeof G==="string"&&J!==void 0)Q.style.setProperty(G,J);else if(typeof G==="object")Object.entries(G).forEach(([W,X])=>{Q.style.setProperty(W,String(X))})}),this}animate(G,J){return this.collection.forEach((Q)=>Q.animate(G,J)),this}fadeIn(G=400,J){return this.collection.forEach((Q,W)=>{if(getComputedStyle(Q).display==="none")Q.style.display="block";let X=Q.animate([{opacity:0},{opacity:1}],{duration:G,fill:"forwards"});if(J&&W===this.collection.length-1)X.onfinish=()=>J()}),this}fadeOut(G=400,J){return this.collection.forEach((Q,W)=>{let X=Q.animate([{opacity:1},{opacity:0}],{duration:G,fill:"forwards"});X.onfinish=()=>{if(Q.style.display="none",J&&W===this.collection.length-1)J()}}),this}matches(G){if(this.length===0)return!1;return this.collection.every((J)=>J.matches(G))}remove(){return this.collection.forEach((G)=>G.remove()),this}empty(){return this.collection.forEach((G)=>{G.innerHTML=""}),this}clone(G=!0){let J=this.collection.map((Q)=>Q.cloneNode(G));return new I(J)}replaceWith(G){for(let J=this.collection.length-1;J>=0;J--){let Q=this.collection[J];if(typeof G==="string")Q.outerHTML=G;else{let W=J===0?G:G.cloneNode(!0);Q.replaceWith(W)}}return this}reset(){return this.collection.forEach((G)=>{if(G instanceof HTMLFormElement)G.reset()}),this}property(G,J){if(J!==void 0)return this.collection.forEach((Q)=>{Q[G]=J}),this;if(this.length===0)return;return this.collection[0][G]}siblings(){let G=new Set;return this.collection.forEach((J)=>{if(J.parentElement)Array.from(J.parentElement.children).forEach((Q)=>{if(Q!==J&&Q instanceof HTMLElement)G.add(Q)})}),new I(Array.from(G))}next(){let G=new Set;return this.collection.forEach((J)=>{let Q=J.nextElementSibling;if(Q instanceof HTMLElement)G.add(Q)}),new I(Array.from(G))}prev(){let G=new Set;return this.collection.forEach((J)=>{let Q=J.previousElementSibling;if(Q instanceof HTMLElement)G.add(Q)}),new I(Array.from(G))}children(){let G=new Set;return this.collection.forEach((J)=>{Array.from(J.children).forEach((Q)=>{if(Q instanceof HTMLElement)G.add(Q)})}),new I(Array.from(G))}scrollIntoView(G){if(this.length>0)this.collection[0].scrollIntoView(G);return this}}function c(G){return new I(G)}function m(G){if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",G);else G()}function u(G,J){let Q=document.createElement(G);if(J)Object.entries(J).forEach(([W,X])=>{Q.setAttribute(W,X)});return new I(Q)}class L extends Error{status;statusText;response;constructor(G,J){super(J||`Request failed: ${G.status} ${G.statusText}`);this.name="RequestError",this.status=G.status,this.statusText=G.statusText,this.response=G}}class R extends Error{constructor(G,J){super(`Request to "${G}" timed out after ${J}ms`);this.name="RequestTimeoutError"}}class K{static serialize(G,J){if(G instanceof FormData){let W=new URLSearchParams;return G.forEach((X,Y)=>{if(typeof X==="string")W.append(Y,X)}),W.toString()}let Q=[];for(let[W,X]of Object.entries(G)){if(X===void 0||X===null)continue;let Y=J?`${J}[${W}]`:W;if(Array.isArray(X))X.forEach((Z,$)=>{if(typeof Z==="object"&&Z!==null)Q.push(K.serialize(Z,`${Y}[${$}]`));else Q.push(`${encodeURIComponent(Y)}[]=${encodeURIComponent(String(Z))}`)});else if(typeof X==="object")Q.push(K.serialize(X,Y));else Q.push(`${encodeURIComponent(Y)}=${encodeURIComponent(String(X))}`)}return Q.filter(Boolean).join("&")}static parseUrl(G){try{return new URL(G)}catch{try{return new URL(G,window.location.origin)}catch(J){throw Error(`Invalid URL: "${G}"`)}}}static createTimeoutController(G,J){let Q=new AbortController;if(!G)return{controller:Q};let W=setTimeout(()=>{Q.abort(new R(J,G))},G);return{controller:Q,timeoutId:W}}static async send(G,J,Q={},W={}){let{timeout:X,...Y}=W,Z=K.parseUrl(J),$=void 0,B={...Y.headers};if(["GET","DELETE","HEAD"].includes(G.toUpperCase())){if(Q&&typeof Q==="object"&&!(Q instanceof FormData))Object.entries(Q).forEach(([A,z])=>{if(z!==void 0&&z!==null)Z.searchParams.append(A,String(z))})}else{let A=B["Content-Type"]||B["content-type"];if(Q instanceof FormData)delete B["Content-Type"],delete B["content-type"],$=Q;else if(A==="application/json")$=JSON.stringify(Q);else{if(!A)B["Content-Type"]="application/x-www-form-urlencoded";let z=new URLSearchParams;Object.entries(Q).forEach(([H,M])=>z.append(H,String(M))),$=z}}let{controller:_,timeoutId:U}=K.createTimeoutController(X,J);try{return await fetch(Z.toString(),{...Y,method:G,headers:B,body:$,signal:_.signal})}finally{if(U)clearTimeout(U)}}static get(G,J={},Q={}){return K.send("GET",G,J,Q)}static post(G,J,Q={}){return K.send("POST",G,J,Q)}static put(G,J,Q={}){return K.send("PUT",G,J,Q)}static patch(G,J,Q={}){return K.send("PATCH",G,J,Q)}static delete(G,J={},Q={}){return K.send("DELETE",G,J,Q)}static head(G,J={},Q={}){return K.send("HEAD",G,J,Q)}static async json(G,J={},Q={}){let W=await K.get(G,J,Q);if(!W.ok)throw new L(W);return W.json()}static async postJson(G,J,Q={}){let W={...Q.headers,"Content-Type":"application/json"},X=await K.post(G,J,{...Q,headers:W});if(!X.ok)throw new L(X);return X.json()}static async blob(G,J={},Q={}){let W=await K.get(G,J,Q);if(!W.ok)throw new L(W);return W.blob()}static async text(G,J={},Q={}){let W=await K.get(G,J,Q);if(!W.ok)throw new L(W);return W.text()}static async arrayBuffer(G,J={},Q={}){let W=await K.get(G,J,Q);if(!W.ok)throw new L(W);return W.arrayBuffer()}static async exists(G,J={}){try{return(await K.head(G,{},J)).ok}catch{return!1}}}class w{static async readRemote(G,J="base64",Q={}){let W=await K.blob(G,{},Q);return w.read(W,J)}static async read(G,J="text"){switch(J){case"text":return G.text();case"buffer":return G.arrayBuffer();case"base64":return new Promise((Q,W)=>{let X=new FileReader;X.onload=()=>Q(X.result),X.onerror=()=>W(X.error),X.readAsDataURL(G)});case"binary":return new Promise((Q,W)=>{let X=new FileReader;X.onload=()=>{let Y=X.result,Z="",$=new Uint8Array(Y),B=$.byteLength;for(let _=0;_<B;_++)Z+=String.fromCharCode($[_]);Q(Z)},X.onerror=()=>W(X.error),X.readAsArrayBuffer(G)});default:throw Error(`FileSystem.read: Unknown type ${J}`)}}static create(G,J,Q="text/plain"){return new File([J],G,{type:Q})}static download(G,J){let Q=URL.createObjectURL(G),W=document.createElement("a");W.href=Q;let X;if(J!==void 0&&J!=="")X=J;else if(G instanceof File&&G.name!=="")X=G.name;else X="download";W.download=X,document.body.appendChild(W),W.click(),document.body.removeChild(W),URL.revokeObjectURL(Q)}static extension(G,J=!1){let Q=G.split(".");if(Q.length===1||Q[0]===""&&Q.length===2&&!J)return"";return Q.pop()?.toLowerCase()??""}static isImage(G){let J=w.extension(G);return new Set(["jpg","jpeg","png","gif","svg","webp","avif","bmp","ico","tiff","heic"]).has(J)}static isVideo(G){let J=w.extension(G);return new Set(["mp4","webm","ogg","mov","avi","mkv","m4v"]).has(J)}static isAudio(G){let J=w.extension(G);return new Set(["mp3","wav","ogg","flac","aac","m4a","wma"]).has(J)}static humanSize(G,J=2){if(G===0)return"0 Bytes";let Q=1024,W=["Bytes","KB","MB","GB","TB","PB"],X=Math.floor(Math.log(G)/Math.log(Q));return parseFloat((G/Math.pow(Q,X)).toFixed(J))+" "+W[X]}}class T{static fill(G,J){let Q=document.querySelector(`form[data-form='${G}']`);if(!Q){console.warn(`Form [data-form='${G}'] not found.`);return}Object.entries(J).forEach(([W,X])=>{let Y=Q.querySelectorAll(`[name='${W}']`);if(Y.length===0)return;let $=Y[0].type,B=String(X);switch($){case"radio":Y.forEach((_)=>{let U=_;if(U.value===B)U.checked=!0});break;case"checkbox":if(Y.length===1)Y[0].checked=!!X;else if(Array.isArray(X)){let _=X.map(String);Y.forEach((U)=>{let A=U;A.checked=_.includes(A.value)})}break;case"file":break;default:Y[0].value=B;break}})}static values(G,J={}){let{parseNumbers:Q=!0,parseBooleans:W=!0}=J,X=document.querySelector(`form[data-form='${G}']`);if(!X)return console.warn(`Form [data-form='${G}'] not found.`),{};let Y=new FormData(X),Z={},$=Array.from(new Set(Y.keys()));for(let B of $){let _=Y.getAll(B),U=X.querySelector(`[name='${B}']`),A=U?.type;if(A==="file"){let z=_.filter((H)=>H instanceof File);if(U?.multiple||z.length>1)Z[B]=z;else Z[B]=z[0]||null;continue}if(A==="checkbox"){let z=X.querySelectorAll(`[name='${B}']`);if(z.length===1&&W){Z[B]=z[0].checked;continue}Z[B]=_.map((H)=>T.parseValue(String(H),Q));continue}if(A==="number"&&Q){if(_.length>1)Z[B]=_.map((z)=>parseFloat(String(z)));else Z[B]=parseFloat(String(_[0]));continue}if(_.length>1)Z[B]=_.map((z)=>T.parseValue(String(z),Q));else Z[B]=T.parseValue(String(_[0]),Q)}return Z}static parseValue(G,J){if(J&&G!==""&&!isNaN(Number(G)))return Number(G);return G}static reset(G){let J=document.querySelector(`form[data-form='${G}']`);if(!J){console.warn(`Form [data-form='${G}'] not found.`);return}J.reset()}static isValid(G){let J=document.querySelector(`form[data-form='${G}']`);if(!J)return console.warn(`Form [data-form='${G}'] not found.`),!1;return J.checkValidity()}static reportValidity(G){let J=document.querySelector(`form[data-form='${G}']`);if(!J)return console.warn(`Form [data-form='${G}'] not found.`),!1;return J.reportValidity()}}class P{static get retina(){return window.devicePixelRatio>=2}static get portrait(){return window.matchMedia("(orientation: portrait)").matches}static get landscape(){return window.matchMedia("(orientation: landscape)").matches}static get orientation(){return P.portrait?"portrait":"landscape"}static get darkMode(){return window.matchMedia("(prefers-color-scheme: dark)").matches}static get reducedMotion(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}static get touch(){return"ontouchstart"in window||navigator.maxTouchPoints>0}static get standalone(){let G=navigator;return window.matchMedia("(display-mode: standalone)").matches||G.standalone===!0}static get electron(){let G=window;if(navigator.userAgent.toLowerCase().includes(" electron/"))return!0;if(G.process?.type==="renderer")return!0;if(G.process?.versions?.electron)return!0;return!1}static get cordova(){return!!window.cordova}static get userAgent(){return navigator.userAgent.toLowerCase()}static desktop(G="Any"){let J=navigator;if(J.userAgentData?.mobile===!0)return!1;if(P.isIpadOS())return!1;let Q=P.userAgent,W=J.userAgentData?.platform?.toLowerCase()||"",X={ChromeOS:W.includes("cros")||Q.includes("cros"),Windows:W.includes("windows")||Q.includes("windows"),macOS:W.includes("macos")||Q.includes("macintosh"),Linux:!Q.includes("android")&&(W.includes("linux")||Q.includes("linux")),FreeBSD:W.includes("freebsd")||Q.includes("freebsd")};if(G==="Any")return Object.values(X).some((Y)=>Y);return X[G]||!1}static mobile(G="Any"){if(navigator.userAgentData?.mobile===!0&&G==="Any")return!0;let Q=P.userAgent,W={Android:Q.includes("android"),iOS:/iphone|ipod/.test(Q),iPadOS:P.isIpadOS(),WindowsMobile:/windows phone|iemobile|wpdesktop/.test(Q),BlackBerry:/blackberry|bb10/.test(Q)};if(G==="Any")return Object.values(W).some((X)=>X);return W[G]||!1}static isIpadOS(){let G=P.userAgent;if(G.includes("ipad"))return!0;if(G.includes("macintosh")&&navigator.maxTouchPoints>0)return!0;return!1}static get serviceWorkers(){return"serviceWorker"in navigator&&window.isSecureContext}static get coarsePointer(){return window.matchMedia("(pointer: coarse)").matches}static get finePointer(){return window.matchMedia("(pointer: fine)").matches}static get canHover(){return window.matchMedia("(hover: hover)").matches}}class S{static async image(G){let J=new Image;return J.src=G,await J.decode(),J}static async images(G){return Promise.all(G.map((J)=>S.image(J)))}static async file(G,J="low"){let W=await fetch(G,{priority:J});if(!W.ok)throw Error(`Preload failed for "${G}": ${W.status} ${W.statusText}`);return W}static async files(G,J="low"){return Promise.all(G.map((Q)=>S.file(Q,J)))}static async isCached(G,J){if(!("caches"in window))return!1;try{return!!await(await caches.open(G)).match(J)}catch{return!1}}static async addToCache(G,J){if(!("caches"in window))throw Error("Cache API is not supported in this browser");try{await(await caches.open(G)).add(J)}catch(Q){throw Error(`Failed to cache "${J}": ${Q instanceof Error?Q.message:String(Q)}`)}}static async addAllToCache(G,J){if(!("caches"in window))throw Error("Cache API is not supported in this browser");try{await(await caches.open(G)).addAll(J)}catch(Q){throw Error(`Failed to cache URLs: ${Q instanceof Error?Q.message:String(Q)}`)}}static async stylesheet(G){return new Promise((J,Q)=>{let W=document.createElement("link");W.rel="preload",W.as="style",W.href=G,W.onload=()=>J(),W.onerror=()=>Q(Error(`Failed to preload stylesheet: ${G}`)),document.head.appendChild(W)})}static async script(G){return new Promise((J,Q)=>{let W=document.createElement("link");W.rel="preload",W.as="script",W.href=G,W.onload=()=>J(),W.onerror=()=>Q(Error(`Failed to preload script: ${G}`)),document.head.appendChild(W)})}static async font(G,J=!0){return new Promise((Q,W)=>{let X=document.createElement("link");if(X.rel="preload",X.as="font",X.href=G,J)X.crossOrigin="anonymous";X.onload=()=>Q(),X.onerror=()=>W(Error(`Failed to preload font: ${G}`)),document.head.appendChild(X)})}static async audio(G,J){let Q=await fetch(G);if(!Q.ok)throw Error(`Preload failed for "${G}": ${Q.status} ${Q.statusText}`);let W=await Q.arrayBuffer(),X=J??new AudioContext,Y=!J;try{return await X.decodeAudioData(W)}finally{if(Y)await X.close()}}static async audios(G,J){let Q=J??new AudioContext,W=!J;try{return await Promise.all(G.map((X)=>S.audio(X,Q)))}finally{if(W)await Q.close()}}}function E(G){if(G==="")return 0;let J=G.split("."),Q=0,W=[1000000000000,1e8,1e4];for(let X=0;X<Math.min(J.length,W.length);X++){let Y=parseInt(J[X],10)||0;Q+=Y*W[X]}return Q}function q(G){if(G===null||typeof G!=="object")return G;if(Array.isArray(G))return G.map((Q)=>q(Q));let J={};for(let Q of Object.keys(G))J[Q]=q(G[Q]);return J}function N(G,J){let Q=G.endsWith("/")?G.slice(0,-1):G,W=J.startsWith("/")?J:`/${J}`;return`${Q}${W}`}class C extends Error{constructor(G){super(`Key "${G}" not found in storage`);this.name="KeyNotFoundError"}}class F{name;version;store;id;numericVersion;upgrades;storage;_openPromise;constructor({name:G="",version:J="",store:Q=""}){this.name=G,this.version=J,this.store=Q,this.upgrades={},this.numericVersion=E(J),this.id=this.computeId()}computeId(){if(this.name!==""&&this.version!==""&&this.store!=="")return`${this.name}::${this.store}::${this.version}_`;else if(this.name!==""&&this.version!=="")return`${this.name}::${this.version}_`;else if(this.name!=="")return`${this.name}::_`;else return""}configuration(G){if(G.name!==void 0)this.name=G.name;if(G.version!==void 0)this.version=G.version,this.numericVersion=E(G.version);if(G.store!==void 0)this.store=G.store;this.id=this.computeId()}async open(){if(this.storage instanceof Storage)return this;if(this._openPromise)return this._openPromise;this._openPromise=(async()=>{let G=[];if(this.version!==""){let J="";if(this.name!==""&&this.version!==""&&this.store!=="")J=`${this.name}::${this.store}::`;else if(this.name!==""&&this.version!=="")J=`${this.name}::`;let Q=Object.keys(window.localStorage).filter((W)=>{return W.indexOf(J)===0}).map((W)=>{return W.replace(J,"").split("_")[0]}).filter((W)=>{return W.indexOf("::")===-1}).sort();if(Q.length>0){let W=Q[0],X=E(W);if(X<this.numericVersion){let Y=Object.keys(this.upgrades).sort((_,U)=>{let[A]=_.split("::").map(Number),[z]=U.split("::").map(Number);return A-z}),Z=Y.findIndex((_)=>{let[U]=_.split("::");return parseInt(U)===X});if(Z>-1)G=Y.slice(Z).filter((_)=>{let[U,A]=_.split("::");return parseInt(U)<this.numericVersion&&parseInt(A)<=this.numericVersion});let $=`${this.name}::${W}_`;if(this.name!==""&&this.version!==""&&this.store!=="")$=`${this.name}::${this.store}::${W}_`;else if(this.name!==""&&this.version!=="")$=`${this.name}::${W}_`;let B=Object.keys(window.localStorage).filter((_)=>{return _.indexOf($)===0}).map((_)=>{return _.replace($,"")});for(let _ of B){let U=window.localStorage.getItem(`${$}${_}`);if(U!==null)window.localStorage.setItem(this.id+_,U);window.localStorage.removeItem(`${$}${_}`)}}}}this.storage=window.localStorage;for(let J of G)try{await this.upgrades[J].call(this,this)}catch(Q){console.error(Q)}return this})();try{return await this._openPromise}finally{this._openPromise=void 0}}async set(G,J){if(await this.open(),typeof J==="object")this.storage.setItem(this.id+G,JSON.stringify(J));else this.storage.setItem(this.id+G,String(J));return{key:G,value:J}}async update(G,J){try{let Q=await this.get(G);if(typeof Q==="object"&&Q!==null){if(typeof J==="object"&&J!==null)J={...Q,...J};this.storage.setItem(this.id+G,JSON.stringify(J))}else this.storage.setItem(this.id+G,String(J));return{key:G,value:J}}catch{return this.set(G,J)}}async get(G){await this.open();let J=this.storage.getItem(this.id+G);if(J===null)throw new C(G);try{let Q=JSON.parse(J);if(Q&&typeof Q==="object")return Q;return J}catch{return J}}async getAll(){let G=await this.keys(),J={};for(let Q of G)try{J[Q]=await this.get(Q)}catch{}return J}async contains(G){if((await this.keys()).includes(G))return;else throw new C(G)}async upgrade(G,J,Q){let W=`${E(G)}::${E(J)}`;return this.upgrades[W]=Q,Promise.resolve()}async rename(G){if(this.name===G)throw Error("Cannot rename: new name is identical to current name");let J=await this.keys(),Q=this.id;this.name=G,this.id=this.computeId();for(let W of J){let X=this.storage.getItem(`${Q}${W}`);if(X!==null)this.storage.setItem(this.id+W,X),this.storage.removeItem(`${Q}${W}`)}}async key(G,J=!1){let Q=await this.keys(J);if(G<0||G>=Q.length)throw Error(`Index ${G} out of bounds. Space has ${Q.length} keys.`);return Q[G]}async keys(G=!1){return await this.open(),Object.keys(this.storage).filter((J)=>{return J.indexOf(this.id)===0}).map((J)=>{if(G===!0)return J;else return J.replace(this.id,"")})}async remove(G){let J=await this.get(G);return this.storage.removeItem(this.id+G),J}async clear(){let G=await this.keys();for(let J of G)this.storage.removeItem(this.id+J)}}class O extends F{constructor({name:G="",version:J="",store:Q=""}){super({name:G,version:J,store:Q})}async open(){if(this.storage instanceof Storage)return this;return this.storage=window.sessionStorage,this}async upgrade(G,J,Q){return console.warn("SessionStorage.upgrade() is a no-op. Session data is temporary and does not support migrations."),Promise.resolve()}}class x extends Error{constructor(G){super(`Key "${G}" not found in IndexedDB`);this.name="KeyNotFoundError"}}class V{name;version;store;props;index;keyPath;numericVersion;upgrades;storage;constructor({name:G="",version:J="",store:Q="",props:W={},index:X={}}){this.name=G,this.version=J,this.store=Q,this.props=W||{},this.index=X,this.keyPath=W?.keyPath||"id",this.upgrades={},this.numericVersion=E(J)}configuration(G){if(G.name!==void 0)this.name=G.name;if(G.version!==void 0)this.version=G.version,this.numericVersion=E(G.version);if(G.store!==void 0)this.store=G.store}async open(){if(this.name==="")throw Error("IndexedDB requires a name. No name has been defined for this space.");if(this.store==="")throw Error("IndexedDB requires a store name. No store has been defined for this space.");if(this.storage instanceof IDBDatabase)return this;else if(this.storage instanceof Promise)return await this.storage;else{let G=(async()=>{let J,Q=[],W=await new Promise((X,Y)=>{let Z=window.indexedDB.open(this.name,this.numericVersion);Z.onerror=($)=>{Y(Error(`Failed to open IndexedDB "${this.name}": ${$.target.error?.message}`))},Z.onsuccess=($)=>{X($.target.result)},Z.onupgradeneeded=($)=>{J=$;let B=$.target.result;if($.oldVersion<1){let U=B.createObjectStore(this.store,this.props);for(let A of Object.keys(this.index)){let z=this.index[A];U.createIndex(z.name,z.field,z.props)}}else{let U=Object.keys(this.upgrades).sort((z,H)=>{let[M]=z.split("::").map(Number),[f]=H.split("::").map(Number);return M-f}),A=U.findIndex((z)=>{let[H]=z.split("::");return parseInt(H)===$.oldVersion});if(A>-1)Q=U.slice(A).filter((z)=>{let[H,M]=z.split("::");return parseInt(H)<this.numericVersion&&parseInt(M)<=this.numericVersion})}let _=$.target.transaction;if(_)_.addEventListener("complete",()=>{})}});this.storage=W;for(let X of Q)try{await this.upgrades[X].call(this,this,J)}catch(Y){console.error(Y)}return this})();return this.storage=G,await G}}async set(G=null,J){return await this.open(),new Promise((Q,W)=>{let X=this.storage.transaction(this.store,"readwrite").objectStore(this.store),Y;if(G!==null){let Z={};Z[this.keyPath]=G,Y=X.put({...Z,...J})}else Y=X.add(J);Y.addEventListener("success",(Z)=>{Q({key:String(Z.target.result),value:J})}),Y.addEventListener("error",(Z)=>{W(Error(`Failed to set key "${G}": ${Z.target.error?.message}`))})})}async update(G,J){try{let Q=await this.get(G);if(typeof Q>"u")return this.set(G,J);return new Promise((W,X)=>{let Z=this.storage.transaction(this.store,"readwrite").objectStore(this.store).put({...Q,...J});Z.addEventListener("success",($)=>{W({key:String($.target.result),value:J})}),Z.addEventListener("error",($)=>{X(Error(`Failed to update key "${G}": ${$.target.error?.message}`))})})}catch{return this.set(G,J)}}async get(G){return await this.open(),new Promise((J,Q)=>{let X=this.storage.transaction(this.store,"readonly").objectStore(this.store).get(G);X.addEventListener("success",(Y)=>{let Z=Y.target.result;if(typeof Z<"u"&&Z!==null)J(Z);else Q(new x(G))}),X.addEventListener("error",(Y)=>{Q(Error(`Failed to get key "${G}": ${Y.target.error?.message}`))})})}async getAll(){return await this.open(),new Promise((G,J)=>{let W=this.storage.transaction(this.store,"readonly").objectStore(this.store).getAll();W.addEventListener("success",(X)=>{let Y={};X.target.result.forEach(($)=>{let B=$[this.keyPath],_={...$};delete _[this.keyPath],Y[B]=_}),G(Y)}),W.addEventListener("error",(X)=>{J(Error(`Failed to get all items: ${X.target.error?.message}`))})})}async contains(G){await this.get(G)}async upgrade(G,J,Q){let W=`${E(G)}::${E(J)}`;return this.upgrades[W]=Q,Promise.resolve()}rename(){return Promise.reject(Error("IndexedDB does not support renaming databases. Create a new database and migrate data manually."))}key(){return Promise.reject(Error("IndexedDB does not support getting keys by index. Use keys() to get all keys."))}async keys(){return await this.open(),new Promise((G,J)=>{let W=this.storage.transaction(this.store,"readonly").objectStore(this.store).getAllKeys();W.addEventListener("success",(X)=>{G(X.target.result.map(String))},!1),W.addEventListener("error",(X)=>{J(Error(`Failed to get keys: ${X.target.error?.message}`))},!1)})}async remove(G){let J=await this.get(G);return new Promise((Q,W)=>{let Y=this.storage.transaction(this.store,"readwrite").objectStore(this.store).delete(G);Y.addEventListener("success",()=>{Q(J)},!1),Y.addEventListener("error",(Z)=>{W(Error(`Failed to delete key "${G}": ${Z.target.error?.message}`))},!1)})}async clear(){return await this.open(),new Promise((G,J)=>{let W=this.storage.transaction(this.store,"readwrite").objectStore(this.store).clear();W.addEventListener("success",()=>{G()},!1),W.addEventListener("error",(X)=>{J(Error(`Failed to clear store: ${X.target.error?.message}`))},!1)})}}class h extends Error{constructor(G){super(`Key "${G}" not found in remote storage`);this.name="KeyNotFoundError"}}class D{name;version;store;baseEndpoint;endpoint;props;storage;constructor({name:G="",version:J="",store:Q="",endpoint:W="",props:X={}}){this.name=G,this.version=J,this.store=Q,this.baseEndpoint=W,this.endpoint=this.computeEndpoint(),this.props=X}computeEndpoint(){if(this.store)return N(this.baseEndpoint,`${this.store}/`);return this.baseEndpoint.endsWith("/")?this.baseEndpoint:`${this.baseEndpoint}/`}configuration(G){if(G.name!==void 0)this.name=G.name;if(G.version!==void 0)this.version=G.version;if(G.store!==void 0)this.store=G.store;if(G.endpoint!==void 0)this.baseEndpoint=G.endpoint;this.endpoint=this.computeEndpoint()}async open(){if(typeof this.storage>"u")this.storage=K;return this}async set(G,J){await this.open();let W=await(await this.storage.post(this.endpoint+G,J,this.props)).json();return{key:G,value:W}}async update(G,J){await this.open();let W={...await this.get(G),...J},Y=await(await this.storage.put(this.endpoint+G,W,this.props)).json();return{key:G,value:Y}}async get(G){return await this.open(),this.storage.json(this.endpoint+G,{},this.props)}async getAll(){return await this.open(),this.storage.json(this.endpoint,{},this.props)}async contains(G){if((await this.keys()).includes(G))return;else throw new h(G)}upgrade(){return Promise.reject(Error("RemoteStorage cannot be upgraded from the client. Upgrades must be performed server-side."))}rename(){return Promise.reject(Error("RemoteStorage cannot be renamed from the client. Renaming must be performed server-side."))}key(){return Promise.reject(Error("RemoteStorage does not support getting keys by index. Use keys() to get all keys."))}async keys(){return await this.open(),this.storage.json(this.endpoint,{keys:!0},this.props)}async remove(G){return await this.open(),(await this.storage.delete(this.endpoint+G,{},this.props)).json()}async clear(){await this.open(),await this.storage.delete(this.endpoint,{},this.props)}}var y={LocalStorage:F,SessionStorage:O,IndexedDB:V,RemoteStorage:D};class k{_configuration;adapter;callbacks;transformations;constructor(G=y.LocalStorage,J={}){this._configuration={name:"",version:"",store:"",...J},this.adapter=new G(this._configuration),this.callbacks={create:[],update:[],delete:[]},this.transformations={}}configuration(G=null){if(G!==null){if(this._configuration={...this._configuration,...G},this.adapter.configuration)this.adapter.configuration(G);return}else return this._configuration}async open(){return await this.adapter.open(),this}applySetTransformations(G,J){let Q=q(J);for(let W of Object.values(this.transformations))if(typeof W.set==="function")Q=W.set(G,Q);return Q}applyGetTransformations(G,J){let Q=J;for(let W of Object.values(this.transformations))if(typeof W.get==="function")Q=W.get(G,Q);return Q}async set(G,J){let Q=this.applySetTransformations(G,J),W=await this.adapter.set(G,Q);for(let X of this.callbacks.create)X.call(null,W.key,W.value);return W}async update(G,J){let Q=this.applySetTransformations(G,J),W=await this.adapter.update(G,Q);for(let X of this.callbacks.update)X.call(null,W.key,W.value);return W}async get(G){let J=await this.adapter.get(G);return this.applyGetTransformations(G,J)}async getAll(){let G=await this.adapter.getAll(),J={};for(let Q of Object.keys(G))J[Q]=this.applyGetTransformations(Q,G[Q]);return J}async each(G){let J=await this.getAll(),Q=[];for(let[W,X]of Object.entries(J))Q.push(G.call(this,W,X));return Promise.all(Q)}contains(G){return this.adapter.contains(G)}async upgrade(G,J,Q){return await this.adapter.upgrade(G,J,Q),this}rename(G){return this.adapter.rename(G)}onCreate(G){this.callbacks.create.push(G)}onUpdate(G){this.callbacks.update.push(G)}onDelete(G){this.callbacks.delete.push(G)}addTransformation({id:G,get:J,set:Q}){this.transformations[G]={id:G,get:J,set:Q}}removeTransformation(G){delete this.transformations[G]}key(G,J=!1){return this.adapter.key(G,J)}keys(G=!1){return this.adapter.keys(G)}async remove(G){let J=await this.adapter.remove(G);for(let Q of this.callbacks.delete)Q.call(null,G,J)}clear(){return this.adapter.clear()}}class p{static capitalize(G,J={}){let{preserveCase:Q=!1}=J;return G.replace(/\w\S*/g,(W)=>{let X=W.charAt(0).toUpperCase(),Y=Q?W.substring(1):W.substring(1).toLowerCase();return X+Y})}static selection(){return window.getSelection()?.toString()||""}static suffix(G,J){let Q=J.indexOf(G);if(Q===-1)return"";return J.slice(Q+G.length)}static prefix(G,J){let Q=J.indexOf(G);if(Q===-1)return"";return J.slice(0,Q)}static friendly(G){return G.toString().normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase().trim().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-")}static truncate(G,J,Q="..."){if(G.length<=J)return G;return G.slice(0,J-Q.length).trimEnd()+Q}static isBlank(G){return G===null||G===void 0||G.trim()===""}}class v{static async callAsync(G,J,...Q){try{return await G.apply(J,Q)}catch(W){return Promise.reject(W)}}static uuid(){if(typeof crypto<"u"&&"randomUUID"in crypto)return crypto.randomUUID();if(typeof crypto<"u"&&"getRandomValues"in crypto)return"10000000-1000-4000-8000-100000000000".replace(/[018]/g,(J)=>{let Q=parseInt(J,10),W=crypto.getRandomValues(new Uint8Array(1))[0],X=15>>Math.floor(Q/4);return(Q^W&X).toString(16)});let G=()=>Math.floor((1+Math.random())*65536).toString(16).substring(1);return`${G()}${G()}-${G()}-${G()}-${G()}-${G()}${G()}${G()}`}static debounce(G,J){let Q=null;return(...W)=>{if(Q!==null)clearTimeout(Q);Q=setTimeout(()=>{G(...W),Q=null},J)}}static throttle(G,J){let Q=!1;return(...W)=>{if(!Q)G(...W),Q=!0,setTimeout(()=>{Q=!1},J)}}}export{v as Util,p as Text,y as SpaceAdapter,k as Space,O as SessionStorage,R as RequestTimeoutError,L as RequestError,K as Request,D as RemoteStorage,S as Preload,P as Platform,F as LocalStorage,V as IndexedDB,T as Form,w as FileSystem,b as DebugLevel,g as Debug,I as DOM,m as $_ready,u as $_create,c as $_};
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=385058D9B07699EF64756E2164756E21
|
|
4
4
|
//# sourceMappingURL=artemis.js.map
|
package/dist/artemis.js.map
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"/**\n * ==============================\n * File System\n * ==============================\n */\n\nimport { Request, RequestOptions } from './Request';\n\nexport type FileReadType = 'text' | 'base64' | 'buffer' | 'binary';\n\n/**\n * Return type mapping for file read operations\n */\nexport interface FileReadResult {\n text: string;\n base64: string;\n buffer: ArrayBuffer;\n binary: string;\n}\n\n/**\n * A utility wrapper for File/Blob operations\n */\nexport class FileSystem {\n\n /**\n * Read a file from a remote URL.\n *\n * @param url - The URL to fetch\n * @param type - The format to return ('text', 'base64', 'buffer', 'binary')\n * @param options - Request options\n */\n static async readRemote<T extends FileReadType>(\n url: string,\n type: T = 'base64' as T,\n options: RequestOptions = {}\n ): Promise<FileReadResult[T]> {\n const blob = await Request.blob(url, {}, options);\n return FileSystem.read(blob, type);\n }\n\n /**\n * Read a local File or Blob.\n *\n * @param file - The File or Blob to read\n * @param type - The format to return\n */\n static async read<T extends FileReadType>(file: File | Blob, type: T = 'text' as T): Promise<FileReadResult[T]> {\n switch (type) {\n case 'text':\n return file.text() as Promise<FileReadResult[T]>;\n\n case 'buffer':\n return file.arrayBuffer() as Promise<FileReadResult[T]>;\n\n case 'base64':\n return new Promise<FileReadResult[T]>((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result as FileReadResult[T]);\n reader.onerror = () => reject(reader.error);\n reader.readAsDataURL(file);\n });\n\n case 'binary':\n return new Promise<FileReadResult[T]>((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const buffer = reader.result as ArrayBuffer;\n let binary = '';\n const bytes = new Uint8Array(buffer);\n const length = bytes.byteLength;\n for (let i = 0; i < length; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n resolve(binary as FileReadResult[T]);\n };\n reader.onerror = () => reject(reader.error);\n reader.readAsArrayBuffer(file);\n });\n\n default: {\n const exhaustiveCheck: never = type;\n throw new Error(`FileSystem.read: Unknown type ${exhaustiveCheck}`);\n }\n }\n }\n\n /**\n * Create a File object.\n * This is a synchronous operation.\n *\n * @param name - Filename\n * @param content - Data (String, Blob, ArrayBuffer)\n * @param mimeType - MIME type (e.g. 'application/json')\n */\n static create(name: string, content: BlobPart, mimeType: string = 'text/plain'): File {\n return new File([content], name, { type: mimeType });\n }\n\n /**\n * Trigger a browser download for a specific File or Blob.\n * This will creates a temporary anchor tag to force the download.\n *\n * @param file - The file to download\n * @param name - Optional rename for the downloaded file\n */\n static download(file: File | Blob, name?: string): void {\n const url = URL.createObjectURL(file);\n const a = document.createElement('a');\n\n a.href = url;\n\n // Determine filename: use provided name, or File.name if available, or fallback\n let filename: string;\n if (name !== undefined && name !== '') {\n filename = name;\n } else if (file instanceof File && file.name !== '') {\n filename = file.name;\n } else {\n filename = 'download';\n }\n\n a.download = filename;\n\n document.body.appendChild(a);\n a.click();\n\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n }\n\n /**\n * Get the file extension safely\n *\n * @param name - Filename or path\n * @returns Lowercase extension without the dot, or empty string\n */\n static extension(name: string, allowHiddenFiles: boolean = false): string {\n const parts = name.split('.');\n\n // No extension: \"file\" or hidden file \".gitignore\"\n if (parts.length === 1 || (parts[0] === '' && parts.length === 2 && !allowHiddenFiles)) {\n return '';\n }\n\n return parts.pop()?.toLowerCase() ?? '';\n }\n\n /**\n * Check if a file is an image based on extension.\n *\n * @param name - Filename to check\n */\n static isImage(name: string): boolean {\n const ext = FileSystem.extension(name);\n const valid = new Set([\n 'jpg', 'jpeg', 'png', 'gif', 'svg',\n 'webp', 'avif', 'bmp', 'ico', 'tiff', 'heic'\n ]);\n return valid.has(ext);\n }\n\n /**\n * Check if a file is a video based on extension.\n *\n * @param name - Filename to check\n */\n static isVideo(name: string): boolean {\n const ext = FileSystem.extension(name);\n const valid = new Set([\n 'mp4', 'webm', 'ogg', 'mov', 'avi', 'mkv', 'm4v'\n ]);\n return valid.has(ext);\n }\n\n /**\n * Check if a file is audio based on extension.\n *\n * @param name - Filename to check\n */\n static isAudio(name: string): boolean {\n const ext = FileSystem.extension(name);\n const valid = new Set([\n 'mp3', 'wav', 'ogg', 'flac', 'aac', 'm4a', 'wma'\n ]);\n return valid.has(ext);\n }\n\n /**\n * Convert bytes to human-readable size.\n *\n * @param bytes - Size in bytes\n * @param decimals - Number of decimal places\n */\n static humanSize(bytes: number, decimals: number = 2): string {\n if (bytes === 0) return '0 Bytes';\n\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, i)).toFixed(decimals)) + ' ' + sizes[i];\n }\n}\n",
|
|
9
9
|
"/**\n * ==============================\n * Form\n * ==============================\n */\n\nexport type FormValue = string | number | boolean | File | null;\nexport type FormValues = Record<string, FormValue | FormValue[]>;\n\n/**\n * Options for parsing form values\n */\nexport interface FormParseOptions {\n parseNumbers?: boolean; // Whether to parse numeric strings as numbers\n parseBooleans?: boolean; // Whether to parse checkbox values as booleans for single checkboxes\n}\n\nexport class Form {\n\n /**\n * Fill a form with data.\n *\n * @param formName - The data-form attribute value\n * @param data - Key-value pairs to fill\n */\n static fill(formName: string, data: Record<string, unknown>): void {\n const form = document.querySelector(`form[data-form='${formName}']`) as HTMLFormElement;\n\n if (!form) {\n console.warn(`Form [data-form='${formName}'] not found.`);\n return;\n }\n\n Object.entries(data).forEach(([name, value]) => {\n const elements = form.querySelectorAll(`[name='${name}']`);\n\n if (elements.length === 0) return;\n\n const firstElement = elements[0] as HTMLInputElement;\n const type = firstElement.type;\n const valString = String(value);\n\n switch (type) {\n case 'radio':\n elements.forEach((el) => {\n const input = el as HTMLInputElement;\n if (input.value === valString) {\n input.checked = true;\n }\n });\n break;\n\n case 'checkbox':\n if (elements.length === 1) {\n // Single checkbox: treat as boolean\n (elements[0] as HTMLInputElement).checked = !!value;\n } else if (Array.isArray(value)) {\n // Multiple checkboxes: check those whose value is in the array\n const stringValues = value.map(String);\n elements.forEach((el) => {\n const input = el as HTMLInputElement;\n input.checked = stringValues.includes(input.value);\n });\n }\n break;\n\n case 'file':\n // File inputs cannot be programmatically filled for security reasons\n break;\n\n default:\n (elements[0] as HTMLInputElement | HTMLSelectElement).value = valString;\n break;\n }\n });\n }\n\n /**\n * Get all values from a form.\n *\n * @param formName - The data-form attribute value\n * @param options - Parsing options\n * @returns Form values as a record\n */\n static values(formName: string, options: FormParseOptions = {}): FormValues {\n const { parseNumbers = true, parseBooleans = true } = options;\n\n const form = document.querySelector(`form[data-form='${formName}']`) as HTMLFormElement;\n\n if (!form) {\n console.warn(`Form [data-form='${formName}'] not found.`);\n return {};\n }\n\n const formData = new FormData(form);\n const data: FormValues = {};\n\n const keys = Array.from(new Set(formData.keys()));\n\n for (const key of keys) {\n const allValues = formData.getAll(key);\n const element = form.querySelector(`[name='${key}']`) as HTMLInputElement | null;\n const inputType = element?.type;\n\n // Handle file inputs\n if (inputType === 'file') {\n const files = allValues.filter((v): v is File => v instanceof File);\n if (element?.multiple || files.length > 1) {\n data[key] = files;\n } else {\n data[key] = files[0] || null;\n }\n continue;\n }\n\n // Handle checkboxes\n if (inputType === 'checkbox') {\n const checkboxes = form.querySelectorAll(`[name='${key}']`);\n if (checkboxes.length === 1 && parseBooleans) {\n // Single checkbox: return boolean\n data[key] = (checkboxes[0] as HTMLInputElement).checked;\n continue;\n }\n // Multiple checkboxes: return array of checked values\n data[key] = allValues.map((v) => Form.parseValue(String(v), parseNumbers));\n continue;\n }\n\n // Handle number inputs\n if (inputType === 'number' && parseNumbers) {\n if (allValues.length > 1) {\n data[key] = allValues.map((v) => parseFloat(String(v)));\n } else {\n data[key] = parseFloat(String(allValues[0]));\n }\n continue;\n }\n\n // Handle other inputs\n if (allValues.length > 1) {\n data[key] = allValues.map((v) => Form.parseValue(String(v), parseNumbers));\n } else {\n data[key] = Form.parseValue(String(allValues[0]), parseNumbers);\n }\n }\n\n return data;\n }\n\n /**\n * Parse a string value, optionally converting to number.\n *\n * @param value - String value to parse\n * @param parseNumbers - Whether to parse numeric strings\n */\n private static parseValue(value: string, parseNumbers: boolean): string | number {\n if (parseNumbers && value !== '' && !isNaN(Number(value))) {\n return Number(value);\n }\n return value;\n }\n\n /**\n * Reset a form to its initial state.\n *\n * @param formName - The data-form attribute value\n */\n static reset(formName: string): void {\n const form = document.querySelector(`form[data-form='${formName}']`) as HTMLFormElement;\n\n if (!form) {\n console.warn(`Form [data-form='${formName}'] not found.`);\n return;\n }\n\n form.reset();\n }\n\n /**\n * Check if a form is valid according to HTML5 validation.\n *\n * @param formName - The data-form attribute value\n */\n static isValid(formName: string): boolean {\n const form = document.querySelector(`form[data-form='${formName}']`) as HTMLFormElement;\n\n if (!form) {\n console.warn(`Form [data-form='${formName}'] not found.`);\n return false;\n }\n\n return form.checkValidity();\n }\n\n /**\n * Report validity and show browser validation messages.\n *\n * @param formName - The data-form attribute value\n */\n static reportValidity(formName: string): boolean {\n const form = document.querySelector(`form[data-form='${formName}']`) as HTMLFormElement;\n\n if (!form) {\n console.warn(`Form [data-form='${formName}'] not found.`);\n return false;\n }\n\n return form.reportValidity();\n }\n}\n",
|
|
10
10
|
"/**\n * ==============================\n * Platform\n * ==============================\n */\n\nexport type DesktopPlatform = 'Windows' | 'macOS' | 'Linux' | 'FreeBSD' | 'Any' | 'ChromeOS';\nexport type MobilePlatform = 'Android' | 'iOS' | 'iPadOS' | 'WindowsMobile' | 'BlackBerry' | 'Any';\nexport type Orientation = 'portrait' | 'landscape';\n\ninterface NavigatorUAData {\n platform: string;\n mobile: boolean;\n brands: { brand: string; version: string }[];\n}\n\ninterface NavigatorWithStandalone extends Navigator {\n standalone?: boolean;\n userAgentData?: NavigatorUAData;\n}\n\ninterface ExtendedWindow extends Window {\n process?: {\n type?: string;\n versions?: { electron?: string };\n };\n cordova?: unknown;\n}\n\nexport class Platform {\n /**\n * Check if the screen has a high pixel density (Retina)\n */\n static get retina(): boolean {\n return window.devicePixelRatio >= 2;\n }\n\n /**\n * Check if the device is in portrait orientation.\n * Uses matchMedia to align perfectly with CSS media queries.\n */\n static get portrait(): boolean {\n return window.matchMedia('(orientation: portrait)').matches;\n }\n\n /**\n * Check if the device is in landscape orientation.\n */\n static get landscape(): boolean {\n return window.matchMedia('(orientation: landscape)').matches;\n }\n\n /**\n * Get current device orientation as a string.\n */\n static get orientation(): Orientation {\n return Platform.portrait ? 'portrait' : 'landscape';\n }\n\n /**\n * Check if the user prefers Dark Mode\n */\n static get darkMode(): boolean {\n return window.matchMedia('(prefers-color-scheme: dark)').matches;\n }\n\n /**\n * Check if the user prefers reduced motion\n */\n static get reducedMotion(): boolean {\n return window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n }\n\n /**\n * Check if the device supports touch events.\n * Useful for distinguishing hybrid laptops from tablets.\n */\n static get touch(): boolean {\n return (\n 'ontouchstart' in window ||\n navigator.maxTouchPoints > 0\n );\n }\n\n /**\n * Check if the app is running in \"Standalone\" mode (Installed PWA).\n */\n static get standalone(): boolean {\n const nav = navigator as NavigatorWithStandalone;\n return (\n window.matchMedia('(display-mode: standalone)').matches ||\n nav.standalone === true // iOS fallback\n );\n }\n\n /**\n * Check if the app is running inside Electron.\n * Checks both Renderer process and Main process contexts.\n */\n static get electron(): boolean {\n const win = window as ExtendedWindow;\n\n if (navigator.userAgent.toLowerCase().includes(' electron/')) {\n return true;\n }\n\n if (win.process?.type === 'renderer') {\n return true;\n }\n\n if (win.process?.versions?.electron) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Check if the app is running inside Cordova / PhoneGap.\n */\n static get cordova(): boolean {\n return !!(window as ExtendedWindow).cordova;\n }\n\n /**\n * Internal helper to normalize platform detection\n */\n private static get userAgent(): string {\n return navigator.userAgent.toLowerCase();\n }\n\n /**\n * Check if the app is running on a Desktop platform.\n *\n * @param os - Specific desktop OS to check for, or 'Any' for any desktop\n */\n static desktop(os: DesktopPlatform = 'Any'): boolean {\n const nav = navigator as NavigatorWithStandalone;\n\n if (nav.userAgentData?.mobile === true) {\n return false;\n }\n\n if (Platform.isIpadOS()) {\n return false;\n }\n\n const ua = Platform.userAgent;\n const dataPlatform = nav.userAgentData?.platform?.toLowerCase() || '';\n\n const checks: Record<Exclude<DesktopPlatform, 'Any'>, boolean> = {\n 'ChromeOS': dataPlatform.includes('cros') || ua.includes('cros'),\n 'Windows': dataPlatform.includes('windows') || ua.includes('windows'),\n 'macOS': dataPlatform.includes('macos') || ua.includes('macintosh'),\n 'Linux': !ua.includes('android') && (dataPlatform.includes('linux') || ua.includes('linux')),\n 'FreeBSD': dataPlatform.includes('freebsd') || ua.includes('freebsd'),\n };\n\n if (os === 'Any') {\n return Object.values(checks).some(val => val);\n }\n\n return checks[os] || false;\n }\n\n /**\n * Check if the app is running on a Mobile platform.\n *\n * @param os - Specific mobile OS to check for, or 'Any' for any mobile\n */\n static mobile(os: MobilePlatform = 'Any'): boolean {\n const nav = navigator as NavigatorWithStandalone;\n\n if (nav.userAgentData?.mobile === true && os === 'Any') {\n return true;\n }\n\n const ua = Platform.userAgent;\n\n const checks: Record<Exclude<MobilePlatform, 'Any'>, boolean> = {\n 'Android': ua.includes('android'),\n 'iOS': /iphone|ipod/.test(ua),\n 'iPadOS': Platform.isIpadOS(),\n 'WindowsMobile': /windows phone|iemobile|wpdesktop/.test(ua),\n 'BlackBerry': /blackberry|bb10/.test(ua),\n };\n\n if (os === 'Any') {\n return Object.values(checks).some(val => val);\n }\n\n return checks[os] || false;\n }\n\n /**\n * Detect iPadOS explicitly.\n * Modern iPads send a \"Macintosh\" User Agent, but have Touch Points.\n */\n private static isIpadOS(): boolean {\n const ua = Platform.userAgent;\n\n if (ua.includes('ipad')) {\n return true;\n }\n\n if (ua.includes('macintosh') && navigator.maxTouchPoints > 0) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Check if the platform supports Service Workers.\n * Uses `isSecureContext` to accurately allow localhost/HTTPS.\n */\n static get serviceWorkers(): boolean {\n return 'serviceWorker' in navigator && window.isSecureContext;\n }\n\n /**\n * Check if the device has a coarse pointer (touch) as primary input.\n */\n static get coarsePointer(): boolean {\n return window.matchMedia('(pointer: coarse)').matches;\n }\n\n /**\n * Check if the device has a fine pointer (mouse) as primary input.\n */\n static get finePointer(): boolean {\n return window.matchMedia('(pointer: fine)').matches;\n }\n\n /**\n * Check if the device supports hover interactions.\n */\n static get canHover(): boolean {\n return window.matchMedia('(hover: hover)').matches;\n }\n}\n",
|
|
11
|
-
"/**\n * ==============================\n * Preload\n * ==============================\n */\n\ninterface RequestInitWithPriority extends RequestInit {\n priority?: 'high' | 'low' | 'auto';\n}\n\nexport class Preload {\n /**\n * Preload and decode an image. Decoding prevents the image from still having\n * a delay when it is displayed.\n *\n * @param route - URL of the image\n * @returns Promise<HTMLImageElement>\n */\n static async image(route: string): Promise<HTMLImageElement> {\n const img = new Image();\n img.src = route;\n\n await img.decode();\n\n return img;\n }\n\n /**\n * Preload multiple images in parallel.\n *\n * @param routes - Array of image URLs\n * @returns Promise<HTMLImageElement[]>\n */\n static async images(routes: string[]): Promise<HTMLImageElement[]> {\n return Promise.all(routes.map(route => Preload.image(route)));\n }\n\n /**\n * Preload a generic file by fetching it.\n *\n * @param route - URL of the file\n * @param priority - Fetch priority hint (default: 'low')\n * @returns Promise<Response>\n */\n static async file(route: string, priority: 'high' | 'low' | 'auto' = 'low'): Promise<Response> {\n const options: RequestInitWithPriority = { priority };\n const response = await fetch(route, options as RequestInit);\n\n if (!response.ok) {\n throw new Error(`Preload failed for \"${route}\": ${response.status} ${response.statusText}`);\n }\n\n return response;\n }\n\n /**\n * Preload multiple files in parallel.\n *\n * @param routes - Array of file URLs\n * @param priority - Fetch priority hint\n * @returns Promise<Response[]>\n */\n static async files(routes: string[], priority: 'high' | 'low' | 'auto' = 'low'): Promise<Response[]> {\n return Promise.all(routes.map(route => Preload.file(route, priority)));\n }\n\n /**\n * Check if a URL is cached in a specific cache.\n *\n * @param cacheName - Name of the cache to check\n * @param url - URL to look for\n * @returns Whether the URL is cached\n */\n static async isCached(cacheName: string, url: string): Promise<boolean> {\n if (!('caches' in window)) {\n return false;\n }\n\n try {\n const cache = await caches.open(cacheName);\n const match = await cache.match(url);\n return !!match;\n } catch {\n // Cache API may throw in private browsing mode or other restricted contexts\n return false;\n }\n }\n\n /**\n * Add a URL to a cache.\n *\n * @param cacheName - Name of the cache\n * @param url - URL to cache\n * @returns Promise<void>\n */\n static async addToCache(cacheName: string, url: string): Promise<void> {\n if (!('caches' in window)) {\n throw new Error('Cache API is not supported in this browser');\n }\n\n try {\n const cache = await caches.open(cacheName);\n await cache.add(url);\n } catch (error) {\n throw new Error(`Failed to cache \"${url}\": ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n /**\n * Add multiple URLs to a cache.\n *\n * @param cacheName - Name of the cache\n * @param urls - URLs to cache\n * @returns Promise<void>\n */\n static async addAllToCache(cacheName: string, urls: string[]): Promise<void> {\n if (!('caches' in window)) {\n throw new Error('Cache API is not supported in this browser');\n }\n\n try {\n const cache = await caches.open(cacheName);\n await cache.addAll(urls);\n } catch (error) {\n throw new Error(`Failed to cache URLs: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n /**\n * Preload a CSS stylesheet.\n *\n * @param url - URL of the stylesheet\n * @returns Promise<void>\n */\n static async stylesheet(url: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const link = document.createElement('link');\n\n link.rel = 'preload';\n link.as = 'style';\n link.href = url;\n\n link.onload = () => resolve();\n link.onerror = () => reject(new Error(`Failed to preload stylesheet: ${url}`));\n\n document.head.appendChild(link);\n });\n }\n\n /**\n * Preload a JavaScript file.\n *\n * @param url - URL of the script\n * @returns Promise<void>\n */\n static async script(url: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const link = document.createElement('link');\n\n link.rel = 'preload';\n link.as = 'script';\n link.href = url;\n\n link.onload = () => resolve();\n link.onerror = () => reject(new Error(`Failed to preload script: ${url}`));\n\n document.head.appendChild(link);\n });\n }\n\n /**\n * Preload a font file.\n *\n * @param url - URL of the font\n * @param crossOrigin - Whether to use crossorigin attribute (default: true for fonts)\n * @returns Promise<void>\n */\n static async font(url: string, crossOrigin: boolean = true): Promise<void> {\n return new Promise((resolve, reject) => {\n const link = document.createElement('link');\n\n link.rel = 'preload';\n link.as = 'font';\n link.href = url;\n\n if (crossOrigin) {\n link.crossOrigin = 'anonymous';\n }\n\n link.onload = () => resolve();\n link.onerror = () => reject(new Error(`Failed to preload font: ${url}`));\n\n document.head.appendChild(link);\n });\n }\n}\n",
|
|
11
|
+
"/**\n * ==============================\n * Preload\n * ==============================\n */\n\ninterface RequestInitWithPriority extends RequestInit {\n priority?: 'high' | 'low' | 'auto';\n}\n\nexport class Preload {\n /**\n * Preload and decode an image. Decoding prevents the image from still having\n * a delay when it is displayed.\n *\n * @param route - URL of the image\n * @returns Promise<HTMLImageElement>\n */\n static async image(route: string): Promise<HTMLImageElement> {\n const img = new Image();\n img.src = route;\n\n await img.decode();\n\n return img;\n }\n\n /**\n * Preload multiple images in parallel.\n *\n * @param routes - Array of image URLs\n * @returns Promise<HTMLImageElement[]>\n */\n static async images(routes: string[]): Promise<HTMLImageElement[]> {\n return Promise.all(routes.map(route => Preload.image(route)));\n }\n\n /**\n * Preload a generic file by fetching it.\n *\n * @param route - URL of the file\n * @param priority - Fetch priority hint (default: 'low')\n * @returns Promise<Response>\n */\n static async file(route: string, priority: 'high' | 'low' | 'auto' = 'low'): Promise<Response> {\n const options: RequestInitWithPriority = { priority };\n const response = await fetch(route, options as RequestInit);\n\n if (!response.ok) {\n throw new Error(`Preload failed for \"${route}\": ${response.status} ${response.statusText}`);\n }\n\n return response;\n }\n\n /**\n * Preload multiple files in parallel.\n *\n * @param routes - Array of file URLs\n * @param priority - Fetch priority hint\n * @returns Promise<Response[]>\n */\n static async files(routes: string[], priority: 'high' | 'low' | 'auto' = 'low'): Promise<Response[]> {\n return Promise.all(routes.map(route => Preload.file(route, priority)));\n }\n\n /**\n * Check if a URL is cached in a specific cache.\n *\n * @param cacheName - Name of the cache to check\n * @param url - URL to look for\n * @returns Whether the URL is cached\n */\n static async isCached(cacheName: string, url: string): Promise<boolean> {\n if (!('caches' in window)) {\n return false;\n }\n\n try {\n const cache = await caches.open(cacheName);\n const match = await cache.match(url);\n return !!match;\n } catch {\n // Cache API may throw in private browsing mode or other restricted contexts\n return false;\n }\n }\n\n /**\n * Add a URL to a cache.\n *\n * @param cacheName - Name of the cache\n * @param url - URL to cache\n * @returns Promise<void>\n */\n static async addToCache(cacheName: string, url: string): Promise<void> {\n if (!('caches' in window)) {\n throw new Error('Cache API is not supported in this browser');\n }\n\n try {\n const cache = await caches.open(cacheName);\n await cache.add(url);\n } catch (error) {\n throw new Error(`Failed to cache \"${url}\": ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n /**\n * Add multiple URLs to a cache.\n *\n * @param cacheName - Name of the cache\n * @param urls - URLs to cache\n * @returns Promise<void>\n */\n static async addAllToCache(cacheName: string, urls: string[]): Promise<void> {\n if (!('caches' in window)) {\n throw new Error('Cache API is not supported in this browser');\n }\n\n try {\n const cache = await caches.open(cacheName);\n await cache.addAll(urls);\n } catch (error) {\n throw new Error(`Failed to cache URLs: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n\n /**\n * Preload a CSS stylesheet.\n *\n * @param url - URL of the stylesheet\n * @returns Promise<void>\n */\n static async stylesheet(url: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const link = document.createElement('link');\n\n link.rel = 'preload';\n link.as = 'style';\n link.href = url;\n\n link.onload = () => resolve();\n link.onerror = () => reject(new Error(`Failed to preload stylesheet: ${url}`));\n\n document.head.appendChild(link);\n });\n }\n\n /**\n * Preload a JavaScript file.\n *\n * @param url - URL of the script\n * @returns Promise<void>\n */\n static async script(url: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const link = document.createElement('link');\n\n link.rel = 'preload';\n link.as = 'script';\n link.href = url;\n\n link.onload = () => resolve();\n link.onerror = () => reject(new Error(`Failed to preload script: ${url}`));\n\n document.head.appendChild(link);\n });\n }\n\n /**\n * Preload a font file.\n *\n * @param url - URL of the font\n * @param crossOrigin - Whether to use crossorigin attribute (default: true for fonts)\n * @returns Promise<void>\n */\n static async font(url: string, crossOrigin: boolean = true): Promise<void> {\n return new Promise((resolve, reject) => {\n const link = document.createElement('link');\n\n link.rel = 'preload';\n link.as = 'font';\n link.href = url;\n\n if (crossOrigin) {\n link.crossOrigin = 'anonymous';\n }\n\n link.onload = () => resolve();\n link.onerror = () => reject(new Error(`Failed to preload font: ${url}`));\n\n document.head.appendChild(link);\n });\n }\n\n /**\n * Preload and decode an audio file into an AudioBuffer.\n *\n * @param url - URL of the audio file\n * @param audioContext - Optional AudioContext to use for decoding. If not provided,\n * a temporary one will be created. For best results, pass the\n * same AudioContext that will be used for playback.\n * @returns Promise<AudioBuffer> - Decoded audio ready for playback\n */\n static async audio(url: string, audioContext?: AudioContext): Promise<AudioBuffer> {\n const response = await fetch(url);\n\n if (!response.ok) {\n throw new Error(`Preload failed for \"${url}\": ${response.status} ${response.statusText}`);\n }\n\n const arrayBuffer = await response.arrayBuffer();\n\n // Use provided context or create a temporary one for decoding\n const ctx = audioContext ?? new AudioContext();\n const shouldCloseContext = !audioContext;\n\n try {\n const audioBuffer = await ctx.decodeAudioData(arrayBuffer);\n return audioBuffer;\n } finally {\n // Close the context if we created it (to free resources)\n if (shouldCloseContext) {\n await ctx.close();\n }\n }\n }\n\n /**\n * Preload and decode multiple audio files in parallel.\n *\n * @param urls - Array of audio file URLs\n * @param audioContext - Optional AudioContext to use for decoding\n * @returns Promise<AudioBuffer[]>\n */\n static async audios(urls: string[], audioContext?: AudioContext): Promise<AudioBuffer[]> {\n // Create a shared context for decoding if none provided\n const ctx = audioContext ?? new AudioContext();\n const shouldCloseContext = !audioContext;\n\n try {\n return await Promise.all(urls.map(url => Preload.audio(url, ctx)));\n } finally {\n if (shouldCloseContext) {\n await ctx.close();\n }\n }\n }\n}\n",
|
|
12
12
|
"/**\n * ==============================\n * Space Adapter Types\n * ==============================\n */\n\n/**\n * Base configuration for all space adapters\n */\nexport interface SpaceConfiguration {\n name?: string;\n version?: string;\n store?: string;\n}\n\n/**\n * LocalStorage/SessionStorage configuration\n */\nexport type LocalStorageConfiguration = SpaceConfiguration;\n\n/**\n * IndexedDB configuration with additional options\n */\nexport interface IndexedDBConfiguration extends SpaceConfiguration {\n props?: IDBObjectStoreParameters;\n index?: Record<string, {\n name: string;\n field: string;\n props?: IDBIndexParameters;\n }>;\n}\n\n/**\n * RemoteStorage configuration\n */\nexport interface RemoteStorageConfiguration extends SpaceConfiguration {\n endpoint?: string;\n props?: Record<string, unknown>;\n}\n\n/**\n * Generic storage value type\n */\nexport type StorageValue = unknown;\n\n/**\n * Key-value result type\n */\nexport interface KeyValueResult {\n key: string;\n value: StorageValue;\n}\n\n/**\n * Upgrade callback function type\n */\nexport type UpgradeCallback<T = unknown> = (adapter: T, event?: IDBVersionChangeEvent) => Promise<void>;\n\n/**\n * Base interface for all space adapters\n */\nexport interface SpaceAdapterInterface {\n name: string;\n version: string;\n store: string;\n\n open(): Promise<this>;\n set(key: string | null, value: StorageValue): Promise<KeyValueResult>;\n update(key: string, value: StorageValue): Promise<KeyValueResult>;\n get(key: string): Promise<StorageValue>;\n getAll(): Promise<Record<string, StorageValue>>;\n contains(key: string): Promise<void>;\n upgrade(oldVersion: string, newVersion: string, callback: UpgradeCallback): Promise<void>;\n rename(name: string): Promise<void>;\n key(index: number, full?: boolean): Promise<string>;\n keys(full?: boolean): Promise<string[]>;\n remove(key: string): Promise<StorageValue>;\n clear(): Promise<void>;\n configuration?(config: SpaceConfiguration): void;\n}\n\n/**\n * Space adapter constructor type\n */\nexport type SpaceAdapterConstructor = new (config: SpaceConfiguration) => SpaceAdapterInterface;\n\n/**\n * Convert a version string to a numeric value for comparison.\n * Each segment is padded to 5 digits to support versions up to 99999.x.x\n *\n * @param version - Version string (e.g., \"1.0.0\", \"10.2.15\")\n * @returns Numeric version for comparison\n */\nexport function versionToNumber(version: string): number {\n if (version === '') {\n return 0;\n }\n\n const segments = version.split('.');\n let result = 0;\n const multipliers = [1000000000000, 100000000, 10000]; // Support up to 4 segments\n\n for (let i = 0; i < Math.min(segments.length, multipliers.length); i++) {\n const segment = parseInt(segments[i], 10) || 0;\n result += segment * multipliers[i];\n }\n\n return result;\n}\n\n/**\n * Compare two version strings\n *\n * @param v1 - First version string\n * @param v2 - Second version string\n * @returns -1 if v1 < v2, 0 if v1 === v2, 1 if v1 > v2\n */\nexport function compareVersions(v1: string, v2: string): number {\n const n1 = versionToNumber(v1);\n const n2 = versionToNumber(v2);\n\n if (n1 < n2) return -1;\n if (n1 > n2) return 1;\n return 0;\n}\n\n/**\n * Deep clone a value to prevent mutation\n *\n * @param value - Value to clone\n * @returns Cloned value\n */\nexport function cloneValue<T>(value: T): T {\n if (value === null || typeof value !== 'object') {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map(item => cloneValue(item)) as T;\n }\n\n const cloned: Record<string, unknown> = {};\n for (const key of Object.keys(value as object)) {\n cloned[key] = cloneValue((value as Record<string, unknown>)[key]);\n }\n return cloned as T;\n}\n\n/**\n * Normalize a URL by ensuring proper slash handling\n *\n * @param base - Base URL\n * @param path - Path to append\n * @returns Normalized URL\n */\nexport function normalizeUrl(base: string, path: string): string {\n const normalizedBase = base.endsWith('/') ? base.slice(0, -1) : base;\n const normalizedPath = path.startsWith('/') ? path : `/${path}`;\n return `${normalizedBase}${normalizedPath}`;\n}\n",
|
|
13
13
|
"/**\n * ==============================\n * Local Storage Adapter\n * ==============================\n */\n\nimport type { LocalStorageConfiguration, StorageValue, KeyValueResult, UpgradeCallback, SpaceAdapterInterface } from './types';\nimport { versionToNumber } from './types';\n\n/**\n * Error thrown when a key is not found in storage\n */\nexport class KeyNotFoundError extends Error {\n constructor(key: string) {\n super(`Key \"${key}\" not found in storage`);\n this.name = 'KeyNotFoundError';\n }\n}\n\n/**\n * The Local Storage Adapter provides the Space Class the ability to interact\n * with the localStorage API found in most modern browsers.\n */\nexport class LocalStorage implements SpaceAdapterInterface {\n public name: string;\n public version: string;\n public store: string;\n public id: string;\n public numericVersion: number;\n public upgrades: Record<string, UpgradeCallback<LocalStorage>>;\n public storage: Storage | undefined;\n private _openPromise: Promise<this> | undefined;\n\n /**\n * Create a new LocalStorage. If no configuration is provided, the LocalStorage\n * global object is used. The LocalStorage Adapter can provide independency\n * by store name and space name.\n *\n * @param configuration - Configuration Object for the Adapter\n */\n constructor({ name = '', version = '', store = '' }: LocalStorageConfiguration) {\n this.name = name;\n this.version = version;\n this.store = store;\n this.upgrades = {};\n\n this.numericVersion = versionToNumber(version);\n this.id = this.computeId();\n }\n\n /**\n * Compute the storage ID based on current name, version, and store\n *\n * @returns The computed ID string\n */\n private computeId(): string {\n if (this.name !== '' && this.version !== '' && this.store !== '') {\n return `${this.name}::${this.store}::${this.version}_`;\n } else if (this.name !== '' && this.version !== '') {\n return `${this.name}::${this.version}_`;\n } else if (this.name !== '') {\n return `${this.name}::_`;\n } else {\n return '';\n }\n }\n\n /**\n * Modify the configuration\n *\n * @param config - Configuration object to set up\n */\n configuration(config: LocalStorageConfiguration): void {\n if (config.name !== undefined) this.name = config.name;\n if (config.version !== undefined) {\n this.version = config.version;\n this.numericVersion = versionToNumber(config.version);\n }\n if (config.store !== undefined) this.store = config.store;\n\n // Recalculate the ID after configuration changes\n this.id = this.computeId();\n }\n\n /**\n * Open the Storage Object\n *\n * @returns Promise resolving to this adapter\n */\n async open(): Promise<this> {\n // Already opened\n if (this.storage instanceof Storage) {\n return this;\n }\n\n // Currently opening - wait for it\n if (this._openPromise) {\n return this._openPromise;\n }\n\n // Start opening\n this._openPromise = (async () => {\n let upgradesToApply: string[] = [];\n\n // Check if this space is versioned\n if (this.version !== '') {\n // Get the versionless part of the ID\n let versionless = '';\n if (this.name !== '' && this.version !== '' && this.store !== '') {\n versionless = `${this.name}::${this.store}::`;\n } else if (this.name !== '' && this.version !== '') {\n versionless = `${this.name}::`;\n }\n\n // Get all the currently stored keys that contain the versionless ID\n const storedVersions = Object.keys(window.localStorage).filter((key) => {\n return key.indexOf(versionless) === 0;\n }).map((key) => {\n return key.replace(versionless, '').split('_')[0];\n }).filter((key) => {\n return key.indexOf('::') === -1;\n }).sort();\n\n if (storedVersions.length > 0) {\n const oldVersion = storedVersions[0];\n const oldVersionNumeric = versionToNumber(oldVersion);\n\n if (oldVersionNumeric < this.numericVersion) {\n const availableUpgrades = Object.keys(this.upgrades).sort((a, b) => {\n const [aOld] = a.split('::').map(Number);\n const [bOld] = b.split('::').map(Number);\n return aOld - bOld;\n });\n\n const startFrom = availableUpgrades.findIndex((u) => {\n const [old] = u.split('::');\n return parseInt(old) === oldVersionNumeric;\n });\n\n if (startFrom > -1) {\n upgradesToApply = availableUpgrades.slice(startFrom).filter((u) => {\n const [old, next] = u.split('::');\n return parseInt(old) < this.numericVersion && parseInt(next) <= this.numericVersion;\n });\n }\n\n // Get the previous ID using the old version\n let previousId = `${this.name}::${oldVersion}_`;\n\n if (this.name !== '' && this.version !== '' && this.store !== '') {\n previousId = `${this.name}::${this.store}::${oldVersion}_`;\n } else if (this.name !== '' && this.version !== '') {\n previousId = `${this.name}::${oldVersion}_`;\n }\n\n // Get all keys from the previous version\n const keys = Object.keys(window.localStorage).filter((key) => {\n return key.indexOf(previousId) === 0;\n }).map((key) => {\n return key.replace(previousId, '');\n });\n\n for (const key of keys) {\n const previous = window.localStorage.getItem(`${previousId}${key}`);\n if (previous !== null) {\n window.localStorage.setItem(this.id + key, previous);\n }\n window.localStorage.removeItem(`${previousId}${key}`);\n }\n }\n }\n }\n\n this.storage = window.localStorage;\n\n // Apply upgrades\n for (const upgradeKey of upgradesToApply) {\n try {\n await this.upgrades[upgradeKey].call(this, this);\n } catch (e) {\n console.error(e);\n }\n }\n\n return this;\n })();\n\n try {\n return await this._openPromise;\n } finally {\n this._openPromise = undefined;\n }\n }\n\n /**\n * Store a key-value pair\n *\n * @param key - Key with which this value will be saved\n * @param value - Value to save\n * @returns Promise with key and value\n */\n async set(key: string, value: StorageValue): Promise<KeyValueResult> {\n await this.open();\n if (typeof value === 'object') {\n (this.storage as Storage).setItem(this.id + key, JSON.stringify(value));\n } else {\n (this.storage as Storage).setItem(this.id + key, String(value));\n }\n return { key, value };\n }\n\n /**\n * Update a key-value pair. The update method will use Object.assign()\n * in the case of objects so no value is lost.\n *\n * @param key - Key with which this value will be saved\n * @param value - Value to save\n * @returns Promise with key and value\n */\n async update(key: string, value: StorageValue): Promise<KeyValueResult> {\n try {\n const currentValue = await this.get(key);\n if (typeof currentValue === 'object' && currentValue !== null) {\n if (typeof value === 'object' && value !== null) {\n value = { ...(currentValue as object), ...(value as object) };\n }\n (this.storage as Storage).setItem(this.id + key, JSON.stringify(value));\n } else {\n (this.storage as Storage).setItem(this.id + key, String(value));\n }\n return { key, value };\n } catch {\n return this.set(key, value);\n }\n }\n\n /**\n * Retrieves a value from storage given its key\n *\n * @param key - Key with which the value was saved\n * @returns Promise resolving to the retrieved value\n */\n async get(key: string): Promise<StorageValue> {\n await this.open();\n const rawValue = (this.storage as Storage).getItem(this.id + key);\n\n if (rawValue === null) {\n throw new KeyNotFoundError(key);\n }\n\n try {\n const parsed = JSON.parse(rawValue);\n if (parsed && typeof parsed === 'object') {\n return parsed;\n }\n return rawValue;\n } catch {\n // Unable to parse to JSON, return raw value\n return rawValue;\n }\n }\n\n /**\n * Retrieves all the values in the space in a key-value JSON object\n *\n * @returns Promise resolving to all values\n */\n async getAll(): Promise<Record<string, StorageValue>> {\n const keys = await this.keys();\n const values: Record<string, StorageValue> = {};\n\n for (const key of keys) {\n try {\n values[key] = await this.get(key);\n } catch {\n // Skip keys that fail to retrieve\n }\n }\n\n return values;\n }\n\n /**\n * Check if the space contains a given key.\n *\n * @param key - Key to look for\n * @returns Promise that resolves if key exists\n */\n async contains(key: string): Promise<void> {\n const keys = await this.keys();\n if (keys.includes(key)) {\n return;\n } else {\n throw new KeyNotFoundError(key);\n }\n }\n\n /**\n * Upgrade a Space Version\n *\n * @param oldVersion - The version of the storage to be upgraded\n * @param newVersion - The version to be upgraded to\n * @param callback - Function to transform the old stored values\n * @returns Promise\n */\n async upgrade(oldVersion: string, newVersion: string, callback: UpgradeCallback<LocalStorage>): Promise<void> {\n const key = `${versionToNumber(oldVersion)}::${versionToNumber(newVersion)}`;\n this.upgrades[key] = callback;\n return Promise.resolve();\n }\n\n /**\n * Rename a Space\n *\n * @param name - New name to be used\n * @returns Promise for the rename operation\n */\n async rename(name: string): Promise<void> {\n if (this.name === name) {\n throw new Error('Cannot rename: new name is identical to current name');\n }\n\n const keys = await this.keys();\n const oldId = this.id;\n this.name = name;\n this.id = this.computeId();\n\n for (const key of keys) {\n const rawValue = (this.storage as Storage).getItem(`${oldId}${key}`);\n if (rawValue !== null) {\n // Directly copy the raw value to avoid double-encoding\n (this.storage as Storage).setItem(this.id + key, rawValue);\n (this.storage as Storage).removeItem(`${oldId}${key}`);\n }\n }\n }\n\n /**\n * Get the key that corresponds to a given index in the storage.\n * Only considers keys belonging to this space.\n *\n * @param index - Index to get the key from\n * @param full - Whether to return the full key name including space id\n * @returns Promise resolving to the key's name\n */\n async key(index: number, full: boolean = false): Promise<string> {\n const spaceKeys = await this.keys(full);\n\n if (index < 0 || index >= spaceKeys.length) {\n throw new Error(`Index ${index} out of bounds. Space has ${spaceKeys.length} keys.`);\n }\n\n return spaceKeys[index];\n }\n\n /**\n * Return all keys stored in the space.\n *\n * @param full - Whether to return the full key name including space id\n * @returns Promise resolving to array of keys\n */\n async keys(full: boolean = false): Promise<string[]> {\n await this.open();\n return Object.keys(this.storage as Storage).filter((key) => {\n return key.indexOf(this.id) === 0;\n }).map((key) => {\n if (full === true) {\n return key;\n } else {\n return key.replace(this.id, '');\n }\n });\n }\n\n /**\n * Delete a value from the space given its key\n *\n * @param key - Key of the item to delete\n * @returns Promise resolving to the value of the deleted object\n */\n async remove(key: string): Promise<StorageValue> {\n const value = await this.get(key);\n (this.storage as Storage).removeItem(this.id + key);\n return value;\n }\n\n /**\n * Clear the entire space\n *\n * @returns Promise for the clear operation\n */\n async clear(): Promise<void> {\n const keys = await this.keys();\n\n for (const key of keys) {\n (this.storage as Storage).removeItem(this.id + key);\n }\n }\n}\n",
|
|
14
14
|
"/**\n * ==============================\n * Session Storage Adapter\n * ==============================\n */\n\nimport { LocalStorage } from './LocalStorage';\nimport type { LocalStorageConfiguration, UpgradeCallback } from './types';\n\n/**\n * The Session Storage Adapter provides the Space Class the ability to interact\n * with the sessionStorage API found in most modern browsers. Since this API\n * shares pretty much the same methods as the local storage one, this class\n * inherits from the LocalStorage adapter.\n *\n * Note: SessionStorage does not support versioning and upgrades because session\n * data is inherently temporary and cleared when the browser session ends.\n * Any declared upgrades will be ignored.\n */\nexport class SessionStorage extends LocalStorage {\n /**\n * Create a new SessionStorage. If no configuration is provided, the SessionStorage\n * global object is used. The SessionStorage Adapter can provide independency\n * by store name and space name.\n *\n * Note: Version is accepted for API compatibility but upgrades are not supported.\n *\n * @param configuration - Configuration Object for the Adapter\n */\n constructor({ name = '', version = '', store = '' }: LocalStorageConfiguration) {\n super({ name, version, store });\n }\n\n /**\n * Open the Storage Object.\n *\n * Unlike LocalStorage, SessionStorage does not perform upgrade migrations\n * because session data is temporary and cleared when the session ends.\n *\n * @returns Promise resolving to this adapter\n */\n async open(): Promise<this> {\n if (this.storage instanceof Storage) {\n return this;\n }\n\n this.storage = window.sessionStorage;\n return this;\n }\n\n /**\n * Upgrade is not supported for SessionStorage.\n * Session data is temporary and should not require migrations.\n *\n * @param _oldVersion - Ignored\n * @param _newVersion - Ignored\n * @param _callback - Ignored\n * @returns Promise that resolves immediately (no-op)\n */\n async upgrade(_oldVersion: string, _newVersion: string, _callback: UpgradeCallback<SessionStorage>): Promise<void> {\n console.warn('SessionStorage.upgrade() is a no-op. Session data is temporary and does not support migrations.');\n return Promise.resolve();\n }\n}\n",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"/**\n * ==============================\n * Text\n * ==============================\n */\n\nexport interface CapitalizeOptions {\n preserveCase?: boolean; // Wether to preserve the case of letters after the first character\n}\n\nexport class Text {\n\n /**\n * Capitalize the first letter of each word.\n *\n * @param text - Text to capitalize\n * @param options - Capitalization options\n * @returns Capitalized text\n */\n static capitalize(text: string, options: CapitalizeOptions = {}): string {\n const { preserveCase = false } = options;\n\n return text.replace(/\\w\\S*/g, (word) => {\n const firstChar = word.charAt(0).toUpperCase();\n const rest = preserveCase ? word.substring(1) : word.substring(1).toLowerCase();\n return firstChar + rest;\n });\n }\n\n /**\n * Get the currently selected text in the document.\n */\n static selection(): string {\n return window.getSelection()?.toString() || '';\n }\n\n /**\n * Get the text after a given key/substring.\n *\n * @param key - The substring to search for\n * @param text - The text to search in\n * @returns Text after the key, or empty string if not found\n */\n static suffix(key: string, text: string): string {\n const index = text.indexOf(key);\n\n if (index === -1) {\n return '';\n }\n\n return text.slice(index + key.length);\n }\n\n /**\n * Get the text before a given key/substring.\n *\n * @param key - The substring to search for\n * @param text - The text to search in\n * @returns Text before the key, or empty string if not found\n */\n static prefix(key: string, text: string): string {\n const index = text.indexOf(key);\n\n if (index === -1) {\n return '';\n }\n\n return text.slice(0, index);\n }\n\n /**\n * Convert text to a URL-friendly slug.\n *\n * @param text - Text to convert\n * @returns URL-friendly slug\n */\n static friendly(text: string): string {\n return text\n .toString() // Ensure it's a string\n .normalize('NFD') // Split accents from letters (e.g. é -> e + ´)\n .replace(/[\\u0300-\\u036f]/g, '') // Remove the separated accents\n .toLowerCase() // Standardize to lowercase\n .trim() // Remove leading/trailing whitespace\n .replace(/\\s+/g, '-') // Replace spaces with -\n .replace(/[^\\w-]+/g, '') // Remove all non-word chars (except -)\n .replace(/--+/g, '-'); // Replace multiple - with single -\n }\n\n /**\n * Truncate text to a maximum length with ellipsis.\n *\n * @param text - Text to truncate\n * @param maxLength - Maximum length (including ellipsis)\n * @param ellipsis - Ellipsis string to append (default: '...')\n */\n static truncate(text: string, maxLength: number, ellipsis: string = '...'): string {\n if (text.length <= maxLength) {\n return text;\n }\n\n return text.slice(0, maxLength - ellipsis.length).trimEnd() + ellipsis;\n }\n\n /**\n * Check if a string is empty or contains only whitespace.\n */\n static isBlank(text: string | null | undefined): boolean {\n return text === null || text === undefined || text.trim() === '';\n }\n}\n",
|
|
19
19
|
"/**\n * ==============================\n * Util\n * ==============================\n */\n\nexport type Callable<T = unknown> = (...args: unknown[]) => T | Promise<T>;\n\nexport class Util {\n /**\n * Calls a function and ensures it returns a Promise.\n *\n * @param callable - The function to run\n * @param context - The `this` context\n * @param args - Arguments to pass\n */\n static async callAsync<T = unknown>(callable: Callable<T>, context: unknown, ...args: unknown[]): Promise<T> {\n try {\n return await callable.apply(context, args);\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n /**\n * Generates a UUID v4.\n */\n static uuid(): string {\n if (typeof crypto !== 'undefined' && 'randomUUID' in crypto) {\n return crypto.randomUUID();\n }\n\n // Fallback using crypto.getRandomValues\n if (typeof crypto !== 'undefined' && 'getRandomValues' in crypto) {\n return '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, (c) => {\n const num = parseInt(c, 10);\n const random = crypto.getRandomValues(new Uint8Array(1))[0];\n const shifted = 15 >> Math.floor(num / 4);\n return (num ^ (random & shifted)).toString(16);\n });\n }\n\n // Insecure Fallback, pretty sure no current browser should need this\n const generate = (): string => Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n return `${generate()}${generate()}-${generate()}-${generate()}-${generate()}-${generate()}${generate()}${generate()}`;\n }\n\n /**\n * Debounce a function call.\n *\n * @param fn - Function to debounce\n * @param delay - Delay in milliseconds\n */\n static debounce<T extends (...args: unknown[]) => unknown>(fn: T, delay: number): (...args: Parameters<T>) => void {\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n return (...args: Parameters<T>): void => {\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(() => {\n fn(...args);\n timeoutId = null;\n }, delay);\n };\n }\n\n /**\n * Throttle a function call.\n *\n * @param fn - Function to throttle\n * @param limit - Minimum time between calls in milliseconds\n */\n static throttle<T extends (...args: unknown[]) => unknown>(fn: T, limit: number): (...args: Parameters<T>) => void {\n let inThrottle = false;\n\n return (...args: Parameters<T>): void => {\n if (!inThrottle) {\n fn(...args);\n inThrottle = true;\n setTimeout(() => {\n inThrottle = false;\n }, limit);\n }\n };\n }\n}\n"
|
|
20
20
|
],
|
|
21
|
-
"mappings": "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",
|
|
22
|
-
"debugId": "
|
|
21
|
+
"mappings": "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",
|
|
22
|
+
"debugId": "385058D9B07699EF64756E2164756E21",
|
|
23
23
|
"names": []
|
|
24
24
|
}
|
package/dist/types/Preload.d.ts
CHANGED
|
@@ -81,5 +81,23 @@ export declare class Preload {
|
|
|
81
81
|
* @returns Promise<void>
|
|
82
82
|
*/
|
|
83
83
|
static font(url: string, crossOrigin?: boolean): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* Preload and decode an audio file into an AudioBuffer.
|
|
86
|
+
*
|
|
87
|
+
* @param url - URL of the audio file
|
|
88
|
+
* @param audioContext - Optional AudioContext to use for decoding. If not provided,
|
|
89
|
+
* a temporary one will be created. For best results, pass the
|
|
90
|
+
* same AudioContext that will be used for playback.
|
|
91
|
+
* @returns Promise<AudioBuffer> - Decoded audio ready for playback
|
|
92
|
+
*/
|
|
93
|
+
static audio(url: string, audioContext?: AudioContext): Promise<AudioBuffer>;
|
|
94
|
+
/**
|
|
95
|
+
* Preload and decode multiple audio files in parallel.
|
|
96
|
+
*
|
|
97
|
+
* @param urls - Array of audio file URLs
|
|
98
|
+
* @param audioContext - Optional AudioContext to use for decoding
|
|
99
|
+
* @returns Promise<AudioBuffer[]>
|
|
100
|
+
*/
|
|
101
|
+
static audios(urls: string[], audioContext?: AudioContext): Promise<AudioBuffer[]>;
|
|
84
102
|
}
|
|
85
103
|
//# sourceMappingURL=Preload.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Preload.d.ts","sourceRoot":"","sources":["../../src/Preload.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,qBAAa,OAAO;IAClB;;;;;;OAMG;WACU,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAS5D;;;;;OAKG;WACU,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAIlE;;;;;;OAMG;WACU,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,GAAG,KAAK,GAAG,MAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;IAW9F;;;;;;OAMG;WACU,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,GAAE,MAAM,GAAG,KAAK,GAAG,MAAc,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAIpG;;;;;;OAMG;WACU,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAevE;;;;;;OAMG;WACU,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAatE;;;;;;OAMG;WACU,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAa5E;;;;;OAKG;WACU,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAenD;;;;;OAKG;WACU,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe/C;;;;;;OAMG;WACU,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"Preload.d.ts","sourceRoot":"","sources":["../../src/Preload.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,qBAAa,OAAO;IAClB;;;;;;OAMG;WACU,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAS5D;;;;;OAKG;WACU,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAIlE;;;;;;OAMG;WACU,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,GAAG,KAAK,GAAG,MAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;IAW9F;;;;;;OAMG;WACU,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,GAAE,MAAM,GAAG,KAAK,GAAG,MAAc,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAIpG;;;;;;OAMG;WACU,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAevE;;;;;;OAMG;WACU,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAatE;;;;;;OAMG;WACU,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAa5E;;;;;OAKG;WACU,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAenD;;;;;OAKG;WACU,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe/C;;;;;;OAMG;WACU,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB1E;;;;;;;;OAQG;WACU,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IAwBlF;;;;;;OAMG;WACU,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;CAazF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aegis-framework/artemis",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.2",
|
|
4
4
|
"description": "Aegis Framework Javascript Library",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/artemis.js",
|
|
@@ -21,10 +21,10 @@
|
|
|
21
21
|
"sideEffects": false,
|
|
22
22
|
"repository": {
|
|
23
23
|
"type": "git",
|
|
24
|
-
"url": "https://
|
|
24
|
+
"url": "https://github.com/AegisFramework/Artemis.git"
|
|
25
25
|
},
|
|
26
26
|
"bugs": {
|
|
27
|
-
"url": "https://
|
|
27
|
+
"url": "https://github.com/AegisFramework/Artemis/issues"
|
|
28
28
|
},
|
|
29
29
|
"homepage": "https://aegisframework.com/",
|
|
30
30
|
"author": "Diana Islas Ocampo <dev@hyuchia.com>",
|