@aegis-framework/artemis 0.4.0 → 0.4.1
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 h=Object.defineProperty;var D=(z,H)=>{for(var Q in H)h(z,Q,{get:H[Q],enumerable:!0,configurable:!0,set:(X)=>H[Q]=()=>X})};var T={};D(T,{Util:()=>S,Text:()=>V,SpaceAdapter:()=>R,Space:()=>x,SessionStorage:()=>P,Request:()=>G,RemoteStorage:()=>E,Preload:()=>O,Platform:()=>C,LocalStorage:()=>F,IndexedDB:()=>U,Form:()=>q,FileSystem:()=>A,DebugLevel:()=>M,Debug:()=>j,DOM:()=>$,$_ready:()=>b,$_:()=>w});var M;((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"})(M||={});class j{static _level=0;static level(z){if(typeof z==="number")this._level=z;return this._level}static log(...z){if(this.level()>=4)console.log(...z)}static debug(...z){if(this.level()>=4)console.debug(...z)}static info(...z){if(this.level()>=3)console.info(...z)}static error(...z){if(this.level()>=1)console.error(...z)}static warning(...z){if(this.level()>=2)console.warn(...z)}static table(...z){if(this.level()>=4)console.table(...z)}static group(...z){if(this.level()>=4)console.group(...z)}static groupCollapsed(...z){if(this.level()>=4)console.groupCollapsed(...z)}static groupEnd(){if(this.level()>=4)console.groupEnd()}static time(z){if(this.level()>=4)console.time(z)}static timeLog(z,...H){if(this.level()>=4)console.timeLog(z,...H)}static timeEnd(z){if(this.level()>=4)console.timeEnd(z)}static trace(...z){if(this.level()>=4)console.trace(...z)}}class ${collection;length;_selector;constructor(z){if(z===null){this.collection=[],this.length=0,this._selector=null;return}if(typeof z==="string")this.collection=document.querySelectorAll(z),this.length=this.collection.length,this._selector=z;else if(z instanceof NodeList)this.collection=z,this.length=z.length,this._selector=z;else if(z instanceof $)this.collection=z.collection,this.length=this.collection.length,this._selector=z._selector;else if(z instanceof HTMLElement)this.collection=[z],this.length=this.collection.length,this._selector=z;else if(Array.isArray(z))this.collection=z,this.length=z.length,this._selector=z;else this.collection=[],this.length=0,this._selector=null}hide(){for(let z of this.collection)z.style.display="none";return this}show(z="block"){for(let H of this.collection)H.style.display=z;return this}addClass(z){for(let H of this.collection)H.classList.add(z);return this}removeClass(z=null){if(z!==null)for(let H of this.collection)H.classList.remove(z);else for(let H of this.collection)while(H.classList.length>0){let Q=H.classList.item(0);if(Q)H.classList.remove(Q)}return this}toggleClass(z){let H=z.split(" ");for(let Q of this.collection)for(let X of H)Q.classList.toggle(X);return this}hasClass(z){for(let H of this.collection)if(!H.classList.contains(z))return!1;return!0}value(z){if(typeof z<"u"){for(let H of this.collection)H.value=z;return this}else{if(this.length===0)return;if(this.length===1)return this.collection[0].value;let H=[];for(let Q of this.collection)H.push(Q.value);return H}}focus(){if(this.length>0)this.collection[0].focus();return this}click(z){for(let H of this.collection)H.addEventListener("click",z,!1);return this}keyup(z){for(let H of this.collection)H.addEventListener("keyup",z,!1);return this}keydown(z){for(let H of this.collection)H.addEventListener("keydown",z,!1);return this}submit(z){for(let H of this.collection)H.addEventListener("submit",z,!1);return this}change(z){for(let H of this.collection)H.addEventListener("change",z,!1);return this}scroll(z){for(let H of this.collection)H.addEventListener("scroll",z,!1);return this}on(z,H,Q){let X=z.split(" ");for(let Y of this.collection)for(let W of X)if(typeof H==="function")Y.addEventListener(W,H,!1);else if(typeof H==="string"&&typeof Q==="function")Y.addEventListener(W,(Z)=>{if(!Z.target)return;let _=new $(Z.target).closestParent(H,this._selector);if(_.exists())Q.call(_.get(0),Z)},!1);return this}filter(z){let H=[];for(let Q of this.collection)if(Q.matches(z))H.push(Q);return new $(H.length>0?H:null)}exists(){return this.length>0}data(z,H){if(typeof H<"u"){for(let Q of this.collection)Q.dataset[z]=H;return this}else{if(this.length===0)return;if(this.length===1)return this.collection[0].dataset[z];let Q=[];for(let X of this.collection)Q.push(X.dataset[z]);return Q}}removeData(z){for(let H of this.collection)delete H.dataset[z];return this}text(z){if(typeof z<"u"){for(let H of this.collection)H.textContent=z;return this}else{if(this.length===0)return;if(this.length===1)return this.collection[0].textContent;let H=[];for(let Q of this.collection)H.push(Q.textContent);return H}}html(z){if(typeof z<"u"){for(let H of this.collection)H.innerHTML=z;return this}else{if(this.length===0)return;if(this.length===1)return this.collection[0].innerHTML;let H=[];for(let Q of this.collection)H.push(Q.innerHTML);return H}}append(z){for(let H of this.collection)if(typeof z==="string"){let Q=document.createElement("div");if(Q.innerHTML=z.trim(),Q.firstChild)H.appendChild(Q.firstChild.cloneNode(!0))}else H.appendChild(z.cloneNode(!0));return this}prepend(z){for(let H of this.collection)if(typeof z==="string"){let Q=document.createElement("div");if(Q.innerHTML=z.trim(),Q.firstChild)if(H.childNodes.length>0)H.insertBefore(Q.firstChild.cloneNode(!0),H.childNodes[0]);else H.appendChild(Q.firstChild.cloneNode(!0))}else if(H.childNodes.length>0)H.insertBefore(z.cloneNode(!0),H.childNodes[0]);else H.appendChild(z.cloneNode(!0));return this}each(z){for(let H of this.collection)z(H);return this}get(z){return this.collection[z]}first(){if(this.length>0)return new $(this.collection[0]);return new $(null)}last(){if(this.length>0)return new $(this.collection[this.collection.length-1]);return new $(null)}isVisible(){for(let z of this.collection){let H=z;if(H.style.display!=="none"&&H.offsetWidth>0&&H.offsetHeight>0)return!0}return!1}parent(){let z=[];for(let H of this.collection)if(H.parentElement&&!z.includes(H.parentElement))z.push(H.parentElement);return new $(z.length>0?z:null)}find(z){let H=[];for(let Q of this.collection){let X=Q.querySelectorAll(z);for(let Y of X)if(!H.includes(Y))H.push(Y)}return new $(H.length>0?H:null)}offset(){if(this.length===0)return;if(this.length===1){let H=this.collection[0].getBoundingClientRect();return{top:H.top+document.body.scrollTop,left:H.left+document.body.scrollLeft}}let z=[];for(let H of this.collection){let Q=H.getBoundingClientRect();z.push({top:Q.top+document.body.scrollTop,left:Q.left+document.body.scrollLeft})}return z}closest(z){let H=[];for(let Q of this.collection){let X=Q.closest(z);if(X&&!H.includes(X))H.push(X)}return new $(H.length>0?H:null)}closestParent(z,H){if(this.length===0)return new $(null);let Q=this.collection[0];while(Q){if(Q.matches(z))return new $(Q);if(typeof H==="string"&&Q.matches(H))break;Q=Q.parentElement}return new $(null)}attribute(z,H){if(typeof H<"u"){for(let Q of this.collection)Q.setAttribute(z,String(H));return this}else{if(this.length===0)return;if(this.length===1)return this.collection[0].getAttribute(z);let Q=[];for(let X of this.collection)Q.push(X.getAttribute(z));return Q}}hasAttribute(z){for(let H of this.collection)if(!H.hasAttribute(z))return!1;return!0}after(z){for(let H of this.collection)H.insertAdjacentHTML("afterend",z);return this}before(z){for(let H of this.collection)H.insertAdjacentHTML("beforebegin",z);return this}style(z,H){if(typeof z==="string"&&typeof H>"u"){if(this.length===0)return;if(this.length===1)return this.collection[0].style.getPropertyValue(z);let Q=[];for(let X of this.collection)Q.push(X.style.getPropertyValue(z));return Q}for(let Q of this.collection){let X=Q;if(typeof z==="string"&&typeof H<"u")X.style.setProperty(z,H);else if(typeof z==="object")for(let Y in z)X.style.setProperty(Y,String(z[Y]))}return this}animate(z,H){for(let Q=0;Q<this.collection.length;Q++){let X=this.collection[Q];for(let Y in z){let W=Date.now(),Z;if(typeof X.style.getPropertyValue(Y)<"u"&&X.style.getPropertyValue(Y)!==""){Z=parseFloat(X.style.getPropertyValue(Y));let J=setInterval(()=>{let _=Math.min(1,(Date.now()-W)/H);if(X.style.setProperty(Y,String(Z+_*(z[Y]-Z))),_===1)clearInterval(J)},25);X.style.setProperty(Y,String(Z))}else if(typeof X[Y]<"u"){Z=X[Y];let J=setInterval(()=>{let _=Math.min(1,(Date.now()-W)/H);if(X[Y]=Z+_*(z[Y]-Z),_===1)clearInterval(J)},25);X[Y]=Z}}}return this}fadeIn(z=400,H){let Q=0,X=this.collection.length;for(let Y of this.collection){let W=Y;W.style.opacity="0";let Z=Date.now(),J=()=>{if(W.style.opacity=String(parseFloat(W.style.opacity)+(Date.now()-Z)/z),Z=Date.now(),parseFloat(W.style.opacity)<1)requestAnimationFrame(J);else if(Q++,Q===X&&typeof H==="function")H()};J()}return this}fadeOut(z=400,H){let Q=0,X=this.collection.length;for(let Y of this.collection){let W=Y,Z=Date.now(),J=()=>{if(W.style.opacity=String(parseFloat(W.style.opacity)-(Date.now()-Z)/z),Z=Date.now(),parseFloat(W.style.opacity)>0)requestAnimationFrame(J);else if(Q++,Q===X&&typeof H==="function")H()};J()}return this}matches(z){if(this.length===0)return!1;for(let H of this.collection)if(!H.matches(z))return!1;return!0}remove(){for(let z of this.collection)z.parentNode?.removeChild(z);return this}replaceWith(z){for(let H of this.collection){let Q;if(typeof z==="string"){let X=document.createElement("div");X.innerHTML=z,Q=X.firstChild}else Q=z.cloneNode(!0);H.parentElement?.replaceChild(Q,H)}return this}reset(){for(let z of this.collection)if(z.reset)z.reset();return this}property(z,H){if(typeof H<"u"){for(let Q of this.collection)Q[z]=H;return this}else{if(this.length===0)return;if(this.length===1)return this.collection[0][z];let Q=[];for(let X of this.collection)Q.push(X[z]);return Q}}}function w(z){return new $(z)}function b(z){window.addEventListener("load",z)}class G{static serialize(z){return Object.keys(z).map((H)=>{return encodeURIComponent(H)+"="+encodeURIComponent(String(z[H]))}).join("&")}static get(z,H={},Q={}){let X=G.serialize(H);if(X!=="")z=`${z}?${X}`;return fetch(z,Q)}static post(z,H,Q={}){let X,Y=Q.headers?.["Content-Type"];if(Y!==void 0)if(Y==="multipart/form-data"){X=new FormData;for(let J in H)X.append(J,String(H[J]))}else if(Y==="application/json")X=JSON.stringify(H);else X=G.serialize(H);else X=G.serialize(H);let W={"Content-Type":"application/x-www-form-urlencoded",...Q.headers};if(W["Content-Type"]==="multipart/form-data")delete W["Content-Type"];let Z={...Q,method:"POST",headers:W,body:X};return fetch(z,Z)}static put(z,H,Q={}){return G.post(z,H,Object.assign({},{method:"PUT"},Q))}static delete(z,H,Q={}){return G.get(z,H,Object.assign({},{method:"DELETE"},Q))}static json(z,H={},Q={}){return G.get(z,H,Q).then((X)=>{return X.json()})}static blob(z,H={},Q={}){return G.get(z,H,Q).then((X)=>{return X.blob()})}}class A{static readRemote(z,H="base64",Q={}){return G.blob(z,{},Q).then((X)=>{return A.read(X,H)})}static read(z,H="text"){return new Promise((Q,X)=>{let Y=new FileReader;if(Y.onload=(W)=>{Q({event:W,content:W.target?.result??null})},Y.onerror=(W)=>{X(W)},H==="base64")Y.readAsDataURL(z);else if(H==="buffer")Y.readAsArrayBuffer(z);else Y.readAsText(z,"UTF-8")})}static create(z,H,Q="text/plain"){return Promise.resolve(new File([H],z,{type:Q}))}static extension(z){return z.split(".").pop()??""}static isImage(z){return["jpg","jpeg","png","gif","svg","webp","bmp"].indexOf(A.extension(z).toLowerCase())>-1}}class q{static fill(z,H){for(let Q in H){let X=w(`form[data-form='${z}'] [name='${Q}']`).get(0);if(typeof X<"u")switch(X.type){case"file":case"file[]":break;default:X.value=H[Q];break}}}static values(z){let H={};return w(`form[data-form='${z}'] [name]`).each((Q)=>{let X=Q,Y;switch(X.type){case"file[]":Y=X.files??void 0;break;case"file":Y=X.files?.[0];break;default:Y=X.value;break}if(typeof Y<"u"&&Y!==null)H[X.name]=Y}),H}}class C{static retina(){return window.devicePixelRatio>=2}static portrait(){return window.screen.orientation.type==="portrait-primary"||window.screen.orientation.type==="portrait-secondary"}static landscape(){return window.screen.orientation.type==="landscape-primary"||window.screen.orientation.type==="landscape-secondary"}static orientation(){return C.portrait()?"portrait":"landscape"}static electron(){let z=window;if(typeof z<"u"&&typeof z.process==="object"&&z.process?.type==="renderer")return!0;let H=typeof globalThis<"u"?globalThis.process:void 0;if(H&&typeof H.versions==="object"&&!!H.versions?.electron)return!0;if(typeof navigator==="object"&&typeof navigator.userAgent==="string"&&navigator.userAgent.indexOf("Electron")>=0)return!0;return!1}static cordova(){return!!window.cordova}static getPlatformString(){if(navigator.userAgentData?.platform)return navigator.userAgentData.platform;let z=navigator.userAgent;if(z.includes("Win"))return"Windows";if(z.includes("Mac"))return"macOS";if(z.includes("Linux"))return"Linux";if(z.includes("FreeBSD"))return"FreeBSD";if(z.includes("WebTV"))return"webOS";return""}static desktop(z="Any"){let H=C.getPlatformString();switch(z){case"Windows":return H==="Windows"||H.includes("Win");case"macOS":return H==="macOS"||H.includes("Mac");case"Linux":return H==="Linux"||H.includes("Linux");case"FreeBSD":return H==="FreeBSD"||H.includes("FreeBSD");case"webOS":return H==="webOS"||H.includes("WebTV");case"Any":default:return["Windows","macOS","Linux","FreeBSD","webOS"].some((Q)=>H===Q||H.includes(Q.replace("macOS","Mac").replace("webOS","WebTV")))}}static mobile(z="Any"){if(navigator.userAgentData?.mobile!==void 0&&z==="Any")return navigator.userAgentData.mobile;let H=navigator.userAgent;switch(z){case"Android":return/Android/i.test(H);case"iOS":return/iPhone|iPad|iPod/i.test(H);case"Opera":return/Opera Mini/i.test(H);case"Windows":return/Windows Phone|IEMobile|WPDesktop/i.test(H);case"BlackBerry":return/BlackBerry|BB10/i.test(H);case"Any":default:return/Android|iPhone|iPad|iPod|Windows Phone|IEMobile|WPDesktop|BlackBerry|BB10/i.test(H)}}static serviceWorkers(){if(typeof navigator<"u"){if("serviceWorker"in navigator&&location.protocol.indexOf("http")>-1)return!0}return!1}}class O{static image(z){return new Promise((H,Q)=>{let X=new Image;X.onload=()=>{H(X)},X.onerror=(Y)=>{Q(Y)},X.src=z})}static file(z){return G.blob(z)}}class F{name;version;store;id;numericVersion;upgrades;storage;constructor({name:z="",version:H="",store:Q=""}){if(this.name=z,this.version=H,this.store=Q,this.upgrades={},this.version==="")this.numericVersion=0;else this.numericVersion=parseInt(H.replace(/\./g,""));if(z!==""&&H!==""&&Q!=="")this.id=`${this.name}::${this.store}::${this.version}_`;else if(z!==""&&H!=="")this.id=`${this.name}::${this.version}_`;else if(z!=="")this.id=`${this.name}::_`;else this.id=""}configuration(z){if(z.name)this.name=z.name;if(z.version)this.version=z.version;if(z.store)this.store=z.store}open(){if(this.storage instanceof Storage)return Promise.resolve(this);else if(this.storage instanceof Promise)return this.storage;else{let z=new Promise((H)=>{let Q=[];if(this.version!==""){let X="";if(this.name!==""&&this.version!==""&&this.store!=="")X=`${this.name}::${this.store}::`;else if(this.name!==""&&this.version!=="")X=`${this.name}::`;let Y=Object.keys(window.localStorage).filter((W)=>{return W.indexOf(X)===0}).map((W)=>{return W.replace(X,"").split("_")[0]}).filter((W)=>{return W.indexOf("::")===-1}).sort();if(Y.length>0){let W=Y[0],Z=parseInt(W.replace(/\./g,""));if(Z<this.numericVersion){let J=Object.keys(this.upgrades).sort(),_=J.findIndex((K)=>{let[N]=K.split("::");return parseInt(N)===Z});if(_>-1)Q=J.slice(_).filter((K)=>{let[N,L]=K.split("::");return parseInt(N)<this.numericVersion&&parseInt(L)<=this.numericVersion});let B=`${this.name}::${W}_`;if(this.name!==""&&this.version!==""&&this.store!=="")B=`${this.name}::${this.store}::${W}_`;else if(this.name!==""&&this.version!=="")B=`${this.name}::${W}_`;let I=Object.keys(window.localStorage).filter((K)=>{return K.indexOf(B)===0}).map((K)=>{return K.replace(B,"")});for(let K of I){let N=window.localStorage.getItem(`${B}${K}`);if(N!==null)window.localStorage.setItem(this.id+K,N);window.localStorage.removeItem(`${B}${K}`)}}}}H({upgrades:Q})}).then(({upgrades:H})=>{return this.storage=window.localStorage,new Promise((Q)=>{let X=()=>Q(this);this._upgrade(H,X)})});return this.storage=z,z}}set(z,H){return this.open().then(()=>{if(typeof H==="object")this.storage.setItem(this.id+z,JSON.stringify(H));else this.storage.setItem(this.id+z,String(H));return Promise.resolve({key:z,value:H})})}update(z,H){return this.get(z).then((Q)=>{if(typeof Q==="object"&&Q!==null){if(typeof H==="object"&&H!==null)H=Object.assign({},Q,H);this.storage.setItem(this.id+z,JSON.stringify(H))}else this.storage.setItem(this.id+z,String(H));return Promise.resolve({key:z,value:H})}).catch(()=>{return this.set(z,H)})}get(z){return this.open().then(()=>{return new Promise((H,Q)=>{let X=this.storage.getItem(this.id+z);try{let Y=JSON.parse(X);if(Y&&typeof Y==="object")X=Y}catch{}if(typeof X<"u"&&X!==null)H(X);else Q()})})}getAll(){return this.keys().then((z)=>{let H={},Q=[];for(let X of z)Q.push(this.get(X).then((Y)=>{H[X]=Y}));return Promise.all(Q).then(()=>H)})}contains(z){return this.keys().then((H)=>{if(H.includes(z))return Promise.resolve();else return Promise.reject()})}upgrade(z,H,Q){let X=`${parseInt(z.replace(/\./g,""))}::${parseInt(H.replace(/\./g,""))}`;return this.upgrades[X]=Q,Promise.resolve()}_upgrade(z,H){if(z.length>0)this.upgrades[z[0]].call(this,this).then(()=>{this._upgrade(z.slice(1),H)}).catch((Q)=>console.error(Q));else H()}rename(z){if(this.name!==z)return this.keys().then((H)=>{let Q=this.id;if(this.name=z,this.name!==""&&this.version!==""&&this.store!=="")this.id=`${this.name}::${this.store}::${this.version}_`;else if(this.name!==""&&this.version!=="")this.id=`${this.name}::${this.version}_`;else if(this.name!=="")this.id=`${this.name}::_`;else this.id="";let X=[];for(let Y of H){let W=this.storage.getItem(`${Q}${Y}`);if(W!==null)X.push(this.set(Y,W).then(()=>{this.storage.removeItem(`${Q}${Y}`)}))}return Promise.all(X).then(()=>{})});else return Promise.reject()}key(z,H=!1){return this.open().then(()=>{let Q=this.storage.key(z);if(H===!0)return Promise.resolve(Q??"");else return Promise.resolve((Q??"").replace(this.id,""))})}keys(z=!1){return this.open().then(()=>{return Promise.resolve(Object.keys(this.storage).filter((H)=>{return H.indexOf(this.id)===0}).map((H)=>{if(z===!0)return H;else return H.replace(this.id,"")}))})}remove(z){return this.get(z).then((H)=>{return this.storage.removeItem(this.id+z),Promise.resolve(H)})}clear(){return this.keys().then((z)=>{for(let H of z)this.remove(H);return Promise.resolve()})}}class P extends F{constructor({name:z="",version:H="",store:Q=""}){super({name:z,version:H,store:Q})}open(){if(typeof this.storage>"u")this.storage=window.sessionStorage;return Promise.resolve(this)}}class U{name;version;store;props;index;keyPath;numericVersion;upgrades;storage;constructor({name:z="",version:H="",store:Q="",props:X={},index:Y={}}){if(this.name=z,this.version=H,this.store=Q,this.props=X||{},this.index=Y,this.keyPath=X?.keyPath||"id",this.upgrades={},this.version==="")this.numericVersion=0;else this.numericVersion=parseInt(H.replace(/\./g,""))}configuration(z){if(z.name)this.name=z.name;if(z.version)this.version=z.version;if(z.store)this.store=z.store}open(){if(this.name==="")return console.error("No name has been defined for IndexedDB space."),Promise.reject();if(this.store==="")return console.error("No store has been defined for IndexedDB space."),Promise.reject();if(this.storage instanceof IDBDatabase)return Promise.resolve(this);else if(this.storage instanceof Promise)return this.storage;else{let z,H=new Promise((Q,X)=>{let Y=[],W=window.indexedDB.open(this.name,this.numericVersion);W.onerror=(Z)=>{X(Z)},W.onsuccess=(Z)=>{Q({storage:Z.target.result,upgrades:Y})},W.onupgradeneeded=(Z)=>{z=Z;let J=Z.target.result;if(Z.oldVersion<1){let B=J.createObjectStore(this.store,this.props);for(let I of Object.keys(this.index)){let K=this.index[I];B.createIndex(K.name,K.field,K.props)}}else{let B=Object.keys(this.upgrades).sort(),I=B.findIndex((K)=>{let[N]=K.split("::");return parseInt(N)===Z.oldVersion});if(I>-1)Y=B.slice(I).filter((K)=>{let[N,L]=K.split("::");return parseInt(N)<this.numericVersion&&parseInt(L)<=this.numericVersion})}let _=Z.target.transaction;if(_)_.addEventListener("complete",()=>{Q({storage:J,upgrades:Y})})}}).then(({storage:Q,upgrades:X})=>{return this.storage=Q,new Promise((Y)=>{let W=()=>Y(this);this._upgrade(X,W,z)})});return this.storage=H,H}}set(z=null,H){return this.open().then(()=>{return new Promise((Q,X)=>{let Y=this.storage.transaction(this.store,"readwrite").objectStore(this.store),W;if(z!==null){let Z={};Z[this.keyPath]=z,W=Y.put(Object.assign({},Z,H))}else W=Y.add(H);W.addEventListener("success",(Z)=>{Q({key:String(Z.target.result),value:H})}),W.addEventListener("error",(Z)=>{X(Z)})})})}update(z,H){return this.get(z).then((Q)=>{if(typeof Q>"u")return this.set(z,H);return new Promise((X,Y)=>{let Z=this.storage.transaction(this.store,"readwrite").objectStore(this.store).put(Object.assign({},Q,H));Z.addEventListener("success",(J)=>{X({key:String(J.target.result),value:H})}),Z.addEventListener("error",(J)=>{Y(J)})})})}get(z){return this.open().then(()=>{return new Promise((H,Q)=>{let Y=this.storage.transaction(this.store).objectStore(this.store).get(z);Y.addEventListener("success",(W)=>{let Z=W.target.result;if(typeof Z<"u"&&Z!==null)H(Z);else Q()}),Y.addEventListener("error",(W)=>{Q(W)})})})}getAll(){return this.open().then(()=>{return new Promise((z,H)=>{let X=this.storage.transaction(this.store).objectStore(this.store).getAll();X.addEventListener("success",(Y)=>{let W={};Y.target.result.forEach((J)=>{let _=J[this.keyPath];delete J[this.keyPath],W[_]=J}),z(W)}),X.addEventListener("error",(Y)=>{H(Y)})})})}contains(z){return this.get(z).then(()=>{return Promise.resolve()})}upgrade(z,H,Q){let X=`${parseInt(z.replace(/\./g,""))}::${parseInt(H.replace(/\./g,""))}`;return this.upgrades[X]=Q,Promise.resolve()}_upgrade(z,H,Q){if(z.length>0)this.upgrades[z[0]].call(this,this,Q).then(()=>{this._upgrade(z.slice(1),H,Q)}).catch((X)=>console.error(X));else H()}rename(){return Promise.reject()}key(){return Promise.reject()}keys(){return this.open().then(()=>{return new Promise((z,H)=>{let X=this.storage.transaction(this.store,"readwrite").objectStore(this.store).getAllKeys();X.addEventListener("success",(Y)=>{z(Y.target.result.map(String))},!1),X.addEventListener("error",(Y)=>{H(Y)},!1)})})}remove(z){return this.get(z).then((H)=>{return new Promise((Q,X)=>{let W=this.storage.transaction(this.store,"readwrite").objectStore(this.store).delete(z);W.addEventListener("success",()=>{Q(H)},!1),W.addEventListener("error",(Z)=>{X(Z)},!1)})})}clear(){return this.open().then(()=>{return new Promise((z,H)=>{let X=this.storage.transaction(this.store,"readwrite").objectStore(this.store).clear();X.addEventListener("success",()=>{z()},!1),X.addEventListener("error",(Y)=>{H(Y)},!1)})})}}class E{name;version;store;endpoint;props;storage;constructor({name:z="",version:H="",store:Q="",endpoint:X="",props:Y={}}){this.name=z,this.version=H,this.store=Q,this.endpoint=`${X}${Q}/`,this.props=Y}configuration(z){if(z.name)this.name=z.name;if(z.version)this.version=z.version;if(z.store)this.store=z.store}open(){if(typeof this.storage>"u")this.storage=G;return Promise.resolve(this)}set(z,H){return this.open().then(()=>{return this.storage.post(this.endpoint+z,H,this.props).then((Q)=>{return Promise.resolve({key:z,value:Q.json()})})})}update(z,H){return this.get(z).then((Q)=>{let X=Object.assign({},Q,H);return this.storage.put(this.endpoint+z,X,this.props).then((Y)=>{return Promise.resolve({key:z,value:Y.json()})})})}get(z){return this.open().then(()=>{return this.storage.json(this.endpoint+z,{},this.props)})}getAll(){return this.open().then(()=>{return this.storage.json(this.endpoint,{},this.props)})}contains(z){return this.keys().then((H)=>{if(H.includes(z))return Promise.resolve();else return Promise.reject()})}upgrade(){return Promise.reject()}rename(){return Promise.reject()}key(){return Promise.reject()}keys(){return this.open().then(()=>{return this.storage.json(this.endpoint,{keys:!0},this.props)})}remove(z){return this.open().then(()=>{return this.storage.delete(this.endpoint+z,{},this.props).then((H)=>{return H.json()})})}clear(){return this.open().then(()=>{return this.storage.delete(this.endpoint,{},this.props).then(()=>{})})}}var R={LocalStorage:F,SessionStorage:P,IndexedDB:U,RemoteStorage:E};class x{_configuration;adapter;callbacks;transformations;constructor(z=R.LocalStorage,H={}){this._configuration=Object.assign({},{name:"",version:"",store:""},H),this.adapter=new z(this._configuration),this.callbacks={create:[],update:[],delete:[]},this.transformations={}}configuration(z=null){if(z!==null){if(this._configuration=Object.assign({},this._configuration,z),this.adapter.configuration)this.adapter.configuration(z)}else return this._configuration}open(){return this.adapter.open().then(()=>{return Promise.resolve(this)})}set(z,H){for(let Q of Object.keys(this.transformations))if(typeof this.transformations[Q].set==="function")H=this.transformations[Q].set(z,H);return this.adapter.set(z,H).then(({key:Q,value:X})=>{for(let Y of this.callbacks.create)Y.call(null,Q,X);return Promise.resolve({key:Q,value:X})})}update(z,H){for(let Q of Object.keys(this.transformations))if(typeof this.transformations[Q].set==="function")H=this.transformations[Q].set(z,H);return this.adapter.update(z,H).then(({key:Q,value:X})=>{for(let Y of this.callbacks.update)Y.call(null,Q,X);return Promise.resolve({key:Q,value:X})})}get(z){return this.adapter.get(z).then((H)=>{for(let Q of Object.keys(this.transformations))if(typeof this.transformations[Q].get==="function")H=this.transformations[Q].get(z,H);return H})}getAll(){return this.adapter.getAll().then((z)=>{for(let H of Object.keys(z))for(let Q of Object.keys(this.transformations))if(typeof this.transformations[Q].get==="function")z[H]=this.transformations[Q].get(H,z[H]);return z})}each(z){return this.getAll().then((H)=>{let Q=[];for(let X of Object.keys(H))Q.push(z.call(this,X,H[X]));return Promise.all(Q)})}contains(z){return this.adapter.contains(z)}upgrade(z,H,Q){return this.adapter.upgrade(z,H,Q).then(()=>{return Promise.resolve(this)})}rename(z){return this.adapter.rename(z)}onCreate(z){this.callbacks.create.push(z)}onUpdate(z){this.callbacks.update.push(z)}onDelete(z){this.callbacks.delete.push(z)}addTransformation({id:z,get:H,set:Q}){this.transformations[z]={id:z,get:H,set:Q}}removeTransformation(z){delete this.transformations[z]}key(z,H=!1){return this.adapter.key(z,H)}keys(z=!1){return this.adapter.keys(z)}remove(z){return this.adapter.remove(z).then((H)=>{for(let Q of this.callbacks.delete)Q.call(null,z,H)})}clear(){return this.adapter.clear()}}class V{static capitalize(z){return z.replace(/\w\S*/g,(H)=>{return H.charAt(0).toUpperCase()+H.substring(1).toLowerCase()})}static suffix(z,H){let Q="",X=H.indexOf(z);if(X!==-1)X+=z.length,Q=H.substring(X);return Q}static selection(){let z=window.getSelection();if(z)return z.toString();return""}static prefix(z,H){let Q="",X=H.indexOf(z);if(X!==-1)Q=H.substring(0,X);return Q}static friendly(z){let H=[/[áàâãªä]/g,/[ÁÀÂÃÄ]/g,/[ÍÌÎÏ]/g,/[íìîï]/g,/[éèêë]/g,/[ÉÈÊË]/g,/[óòôõºö]/g,/[ÓÒÔÕÖ]/g,/[úùûü]/g,/[ÚÙÛÜ]/g,/ç/g,/Ç/g,/ñ/g,/Ñ/g,/_/g,/[''‹›<>']/g,/[""«»„"]/g,/[(){}[\]]/g,/[?¿!¡#$%&^*´`~/°|]/g,/[,.:;]/g,/ /g],Q=["a","A","I","i","e","E","o","O","u","U","c","C","n","N","-","","","","","","-"],X=z;for(let Y=0;Y<H.length;Y++)X=X.replace(H[Y],Q[Y]);return X}}class S{static callAsync(z,H,...Q){try{let X=z.apply(H,Q);if(X instanceof Promise)return X;else return Promise.resolve(X)}catch(X){return Promise.reject(X)}}static uuid(){if(typeof crypto<"u"&&crypto.getRandomValues)return"10000000-1000-4000-8000-100000000000".replace(/[018]/g,(z)=>{let H=parseInt(z,10);return(H^crypto.getRandomValues(new Uint8Array(1))[0]&15>>H/4).toString(16)});else{let z=()=>Math.floor((1+Math.random())*65536).toString(16).substring(1);return z()+z()+"-"+z()+"-"+z()+"-"+z()+"-"+z()+z()+z()}}}if(typeof window==="object")window.Artemis=T;
|
|
1
|
+
var h=Object.defineProperty;var D=(z,H)=>{for(var Q in H)h(z,Q,{get:H[Q],enumerable:!0,configurable:!0,set:(X)=>H[Q]=()=>X})};var M={};D(M,{Util:()=>S,Text:()=>V,SpaceAdapter:()=>R,Space:()=>x,SessionStorage:()=>P,Request:()=>G,RemoteStorage:()=>w,Preload:()=>O,Platform:()=>I,LocalStorage:()=>C,IndexedDB:()=>U,Form:()=>q,FileSystem:()=>E,DebugLevel:()=>T,Debug:()=>j,DOM:()=>$,$_ready:()=>b,$_:()=>A});var T;((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"})(T||={});class j{static _level=0;static level(z){if(typeof z==="number")this._level=z;return this._level}static log(...z){if(this.level()>=4)console.log(...z)}static debug(...z){if(this.level()>=4)console.debug(...z)}static info(...z){if(this.level()>=3)console.info(...z)}static error(...z){if(this.level()>=1)console.error(...z)}static warning(...z){if(this.level()>=2)console.warn(...z)}static table(...z){if(this.level()>=4)console.table(...z)}static group(...z){if(this.level()>=4)console.group(...z)}static groupCollapsed(...z){if(this.level()>=4)console.groupCollapsed(...z)}static groupEnd(){if(this.level()>=4)console.groupEnd()}static time(z){if(this.level()>=4)console.time(z)}static timeLog(z,...H){if(this.level()>=4)console.timeLog(z,...H)}static timeEnd(z){if(this.level()>=4)console.timeEnd(z)}static trace(...z){if(this.level()>=4)console.trace(...z)}}class ${collection;length;_selector;constructor(z){if(z===null){this.collection=[],this.length=0,this._selector=null;return}if(typeof z==="string")this.collection=document.querySelectorAll(z),this.length=this.collection.length,this._selector=z;else if(z instanceof NodeList)this.collection=z,this.length=z.length,this._selector=z;else if(z instanceof $)this.collection=z.collection,this.length=this.collection.length,this._selector=z._selector;else if(z instanceof HTMLElement)this.collection=[z],this.length=this.collection.length,this._selector=z;else if(Array.isArray(z))this.collection=z,this.length=z.length,this._selector=z;else this.collection=[],this.length=0,this._selector=null}hide(){for(let z of this.collection)z.style.display="none";return this}show(z="block"){for(let H of this.collection)H.style.display=z;return this}addClass(z){for(let H of this.collection)H.classList.add(z);return this}removeClass(z=null){if(z!==null)for(let H of this.collection)H.classList.remove(z);else for(let H of this.collection)while(H.classList.length>0){let Q=H.classList.item(0);if(Q)H.classList.remove(Q)}return this}toggleClass(z){let H=z.split(" ");for(let Q of this.collection)for(let X of H)Q.classList.toggle(X);return this}hasClass(z){for(let H of this.collection)if(!H.classList.contains(z))return!1;return!0}value(z){if(typeof z<"u"){for(let H of this.collection)H.value=z;return this}else{if(this.length===0)return;if(this.length===1)return this.collection[0].value;let H=[];for(let Q of this.collection)H.push(Q.value);return H}}focus(){if(this.length>0)this.collection[0].focus();return this}click(z){for(let H of this.collection)H.addEventListener("click",z,!1);return this}keyup(z){for(let H of this.collection)H.addEventListener("keyup",z,!1);return this}keydown(z){for(let H of this.collection)H.addEventListener("keydown",z,!1);return this}submit(z){for(let H of this.collection)H.addEventListener("submit",z,!1);return this}change(z){for(let H of this.collection)H.addEventListener("change",z,!1);return this}scroll(z){for(let H of this.collection)H.addEventListener("scroll",z,!1);return this}on(z,H,Q){let X=z.split(" ");for(let Y of this.collection)for(let W of X)if(typeof H==="function")Y.addEventListener(W,H,!1);else if(typeof H==="string"&&typeof Q==="function")Y.addEventListener(W,(Z)=>{if(!Z.target)return;let _=new $(Z.target).closestParent(H,this._selector);if(_.exists())Q.call(_.get(0),Z)},!1);return this}filter(z){let H=[];for(let Q of this.collection)if(Q.matches(z))H.push(Q);return new $(H.length>0?H:null)}exists(){return this.length>0}data(z,H){if(typeof H<"u"){for(let Q of this.collection)Q.dataset[z]=H;return this}else{if(this.length===0)return;if(this.length===1)return this.collection[0].dataset[z];let Q=[];for(let X of this.collection)Q.push(X.dataset[z]);return Q}}removeData(z){for(let H of this.collection)delete H.dataset[z];return this}text(z){if(typeof z<"u"){for(let H of this.collection)H.textContent=z;return this}else{if(this.length===0)return;if(this.length===1)return this.collection[0].textContent;let H=[];for(let Q of this.collection)H.push(Q.textContent);return H}}html(z){if(typeof z<"u"){for(let H of this.collection)H.innerHTML=z;return this}else{if(this.length===0)return;if(this.length===1)return this.collection[0].innerHTML;let H=[];for(let Q of this.collection)H.push(Q.innerHTML);return H}}append(z){let H=!0;for(let Q of this.collection)if(typeof z==="string"){let X=document.createElement("div");if(X.innerHTML=z.trim(),X.firstChild)Q.appendChild(X.firstChild.cloneNode(!0))}else if(H)Q.appendChild(z),H=!1;else Q.appendChild(z.cloneNode(!0));return this}prepend(z){let H=!0;for(let Q of this.collection)if(typeof z==="string"){let X=document.createElement("div");if(X.innerHTML=z.trim(),X.firstChild)if(Q.childNodes.length>0)Q.insertBefore(X.firstChild.cloneNode(!0),Q.childNodes[0]);else Q.appendChild(X.firstChild.cloneNode(!0))}else{let X=H?z:z.cloneNode(!0);if(H)H=!1;if(Q.childNodes.length>0)Q.insertBefore(X,Q.childNodes[0]);else Q.appendChild(X)}return this}each(z){for(let H of this.collection)z(H);return this}get(z){return this.collection[z]}first(){if(this.length>0)return new $(this.collection[0]);return new $(null)}last(){if(this.length>0)return new $(this.collection[this.collection.length-1]);return new $(null)}isVisible(){for(let z of this.collection){let H=z;if(H.style.display!=="none"&&H.offsetWidth>0&&H.offsetHeight>0)return!0}return!1}parent(){let z=[];for(let H of this.collection)if(H.parentElement&&!z.includes(H.parentElement))z.push(H.parentElement);return new $(z.length>0?z:null)}find(z){let H=[];for(let Q of this.collection){let X=Q.querySelectorAll(z);for(let Y of X)if(!H.includes(Y))H.push(Y)}return new $(H.length>0?H:null)}offset(){if(this.length===0)return;if(this.length===1){let H=this.collection[0].getBoundingClientRect();return{top:H.top+document.body.scrollTop,left:H.left+document.body.scrollLeft}}let z=[];for(let H of this.collection){let Q=H.getBoundingClientRect();z.push({top:Q.top+document.body.scrollTop,left:Q.left+document.body.scrollLeft})}return z}closest(z){let H=[];for(let Q of this.collection){let X=Q.closest(z);if(X&&!H.includes(X))H.push(X)}return new $(H.length>0?H:null)}closestParent(z,H){if(this.length===0)return new $(null);let Q=this.collection[0];while(Q){if(Q.matches(z))return new $(Q);if(typeof H==="string"&&Q.matches(H))break;Q=Q.parentElement}return new $(null)}attribute(z,H){if(typeof H<"u"){for(let Q of this.collection)Q.setAttribute(z,String(H));return this}else{if(this.length===0)return;if(this.length===1)return this.collection[0].getAttribute(z);let Q=[];for(let X of this.collection)Q.push(X.getAttribute(z));return Q}}hasAttribute(z){for(let H of this.collection)if(!H.hasAttribute(z))return!1;return!0}after(z){for(let H of this.collection)H.insertAdjacentHTML("afterend",z);return this}before(z){for(let H of this.collection)H.insertAdjacentHTML("beforebegin",z);return this}style(z,H){if(typeof z==="string"&&typeof H>"u"){if(this.length===0)return;if(this.length===1)return this.collection[0].style.getPropertyValue(z);let Q=[];for(let X of this.collection)Q.push(X.style.getPropertyValue(z));return Q}for(let Q of this.collection){let X=Q;if(typeof z==="string"&&typeof H<"u")X.style.setProperty(z,H);else if(typeof z==="object")for(let Y in z)X.style.setProperty(Y,String(z[Y]))}return this}animate(z,H){for(let Q=0;Q<this.collection.length;Q++){let X=this.collection[Q];for(let Y in z){let W=Date.now(),Z;if(typeof X.style.getPropertyValue(Y)<"u"&&X.style.getPropertyValue(Y)!==""){Z=parseFloat(X.style.getPropertyValue(Y));let J=setInterval(()=>{let _=Math.min(1,(Date.now()-W)/H);if(X.style.setProperty(Y,String(Z+_*(z[Y]-Z))),_===1)clearInterval(J)},25);X.style.setProperty(Y,String(Z))}else if(typeof X[Y]<"u"){Z=X[Y];let J=setInterval(()=>{let _=Math.min(1,(Date.now()-W)/H);if(X[Y]=Z+_*(z[Y]-Z),_===1)clearInterval(J)},25);X[Y]=Z}}}return this}fadeIn(z=400,H){let Q=0,X=this.collection.length;for(let Y of this.collection){let W=Y;W.style.opacity="0";let Z=Date.now(),J=()=>{if(W.style.opacity=String(parseFloat(W.style.opacity)+(Date.now()-Z)/z),Z=Date.now(),parseFloat(W.style.opacity)<1)requestAnimationFrame(J);else if(Q++,Q===X&&typeof H==="function")H()};J()}return this}fadeOut(z=400,H){let Q=0,X=this.collection.length;for(let Y of this.collection){let W=Y,Z=Date.now(),J=()=>{if(W.style.opacity=String(parseFloat(W.style.opacity)-(Date.now()-Z)/z),Z=Date.now(),parseFloat(W.style.opacity)>0)requestAnimationFrame(J);else if(Q++,Q===X&&typeof H==="function")H()};J()}return this}matches(z){if(this.length===0)return!1;for(let H of this.collection)if(!H.matches(z))return!1;return!0}remove(){for(let z of this.collection)z.parentNode?.removeChild(z);return this}replaceWith(z){for(let H of this.collection){let Q;if(typeof z==="string"){let X=document.createElement("div");X.innerHTML=z,Q=X.firstChild}else Q=z.cloneNode(!0);H.parentElement?.replaceChild(Q,H)}return this}reset(){for(let z of this.collection)if(z.reset)z.reset();return this}property(z,H){if(typeof H<"u"){for(let Q of this.collection)Q[z]=H;return this}else{if(this.length===0)return;if(this.length===1)return this.collection[0][z];let Q=[];for(let X of this.collection)Q.push(X[z]);return Q}}}function A(z){return new $(z)}function b(z){window.addEventListener("load",z)}class G{static serialize(z){return Object.keys(z).map((H)=>{return encodeURIComponent(H)+"="+encodeURIComponent(String(z[H]))}).join("&")}static get(z,H={},Q={}){let X=G.serialize(H);if(X!=="")z=`${z}?${X}`;return fetch(z,Q)}static post(z,H,Q={}){let X,Y=Q.headers?.["Content-Type"];if(Y!==void 0)if(Y==="multipart/form-data"){X=new FormData;for(let J in H)X.append(J,String(H[J]))}else if(Y==="application/json")X=JSON.stringify(H);else X=G.serialize(H);else X=G.serialize(H);let W={"Content-Type":"application/x-www-form-urlencoded",...Q.headers};if(W["Content-Type"]==="multipart/form-data")delete W["Content-Type"];let Z={...Q,method:"POST",headers:W,body:X};return fetch(z,Z)}static put(z,H,Q={}){return G.post(z,H,Object.assign({},{method:"PUT"},Q))}static delete(z,H,Q={}){return G.get(z,H,Object.assign({},{method:"DELETE"},Q))}static json(z,H={},Q={}){return G.get(z,H,Q).then((X)=>{return X.json()})}static blob(z,H={},Q={}){return G.get(z,H,Q).then((X)=>{return X.blob()})}}class E{static readRemote(z,H="base64",Q={}){return G.blob(z,{},Q).then((X)=>{return E.read(X,H)})}static read(z,H="text"){return new Promise((Q,X)=>{let Y=new FileReader;if(Y.onload=(W)=>{Q({event:W,content:W.target?.result??null})},Y.onerror=(W)=>{X(W)},H==="base64")Y.readAsDataURL(z);else if(H==="buffer")Y.readAsArrayBuffer(z);else Y.readAsText(z,"UTF-8")})}static create(z,H,Q="text/plain"){return Promise.resolve(new File([H],z,{type:Q}))}static extension(z){return z.split(".").pop()??""}static isImage(z){return["jpg","jpeg","png","gif","svg","webp","bmp"].indexOf(E.extension(z).toLowerCase())>-1}}class q{static fill(z,H){for(let Q in H){let X=A(`form[data-form='${z}'] [name='${Q}']`).get(0);if(typeof X<"u")switch(X.type){case"file":case"file[]":break;default:X.value=H[Q];break}}}static values(z){let H={};return A(`form[data-form='${z}'] [name]`).each((Q)=>{let X=Q,Y;switch(X.type){case"file[]":Y=X.files??void 0;break;case"file":Y=X.files?.[0];break;default:Y=X.value;break}if(typeof Y<"u"&&Y!==null)H[X.name]=Y}),H}}class I{static retina(){return window.devicePixelRatio>=2}static portrait(){return window.screen.orientation.type==="portrait-primary"||window.screen.orientation.type==="portrait-secondary"}static landscape(){return window.screen.orientation.type==="landscape-primary"||window.screen.orientation.type==="landscape-secondary"}static orientation(){return I.portrait()?"portrait":"landscape"}static electron(){let z=window;if(typeof z<"u"&&typeof z.process==="object"&&z.process?.type==="renderer")return!0;let H=typeof globalThis<"u"?globalThis.process:void 0;if(H&&typeof H.versions==="object"&&!!H.versions?.electron)return!0;if(typeof navigator==="object"&&typeof navigator.userAgent==="string"&&navigator.userAgent.indexOf("Electron")>=0)return!0;return!1}static cordova(){return!!window.cordova}static getPlatformString(){if(navigator.userAgentData?.platform)return navigator.userAgentData.platform;let z=navigator.userAgent;if(z.includes("Win"))return"Windows";if(z.includes("Mac"))return"macOS";if(z.includes("Linux"))return"Linux";if(z.includes("FreeBSD"))return"FreeBSD";if(z.includes("WebTV"))return"webOS";return""}static desktop(z="Any"){let H=I.getPlatformString();switch(z){case"Windows":return H==="Windows"||H.includes("Win");case"macOS":return H==="macOS"||H.includes("Mac");case"Linux":return H==="Linux"||H.includes("Linux");case"FreeBSD":return H==="FreeBSD"||H.includes("FreeBSD");case"webOS":return H==="webOS"||H.includes("WebTV");case"Any":default:return["Windows","macOS","Linux","FreeBSD","webOS"].some((Q)=>H===Q||H.includes(Q.replace("macOS","Mac").replace("webOS","WebTV")))}}static mobile(z="Any"){if(navigator.userAgentData?.mobile!==void 0&&z==="Any")return navigator.userAgentData.mobile;let H=navigator.userAgent;switch(z){case"Android":return/Android/i.test(H);case"iOS":return/iPhone|iPad|iPod/i.test(H);case"Opera":return/Opera Mini/i.test(H);case"Windows":return/Windows Phone|IEMobile|WPDesktop/i.test(H);case"BlackBerry":return/BlackBerry|BB10/i.test(H);case"Any":default:return/Android|iPhone|iPad|iPod|Windows Phone|IEMobile|WPDesktop|BlackBerry|BB10/i.test(H)}}static serviceWorkers(){if(typeof navigator<"u"){if("serviceWorker"in navigator&&location.protocol.indexOf("http")>-1)return!0}return!1}}class O{static image(z){return new Promise((H,Q)=>{let X=new Image;X.onload=()=>{H(X)},X.onerror=(Y)=>{Q(Y)},X.src=z})}static file(z){return G.blob(z)}}class C{name;version;store;id;numericVersion;upgrades;storage;constructor({name:z="",version:H="",store:Q=""}){if(this.name=z,this.version=H,this.store=Q,this.upgrades={},this.version==="")this.numericVersion=0;else this.numericVersion=parseInt(H.replace(/\./g,""));if(z!==""&&H!==""&&Q!=="")this.id=`${this.name}::${this.store}::${this.version}_`;else if(z!==""&&H!=="")this.id=`${this.name}::${this.version}_`;else if(z!=="")this.id=`${this.name}::_`;else this.id=""}configuration(z){if(z.name)this.name=z.name;if(z.version)this.version=z.version;if(z.store)this.store=z.store}open(){if(this.storage instanceof Storage)return Promise.resolve(this);else if(this.storage instanceof Promise)return this.storage;else{let z=new Promise((H)=>{let Q=[];if(this.version!==""){let X="";if(this.name!==""&&this.version!==""&&this.store!=="")X=`${this.name}::${this.store}::`;else if(this.name!==""&&this.version!=="")X=`${this.name}::`;let Y=Object.keys(window.localStorage).filter((W)=>{return W.indexOf(X)===0}).map((W)=>{return W.replace(X,"").split("_")[0]}).filter((W)=>{return W.indexOf("::")===-1}).sort();if(Y.length>0){let W=Y[0],Z=parseInt(W.replace(/\./g,""));if(Z<this.numericVersion){let J=Object.keys(this.upgrades).sort(),_=J.findIndex((K)=>{let[N]=K.split("::");return parseInt(N)===Z});if(_>-1)Q=J.slice(_).filter((K)=>{let[N,L]=K.split("::");return parseInt(N)<this.numericVersion&&parseInt(L)<=this.numericVersion});let B=`${this.name}::${W}_`;if(this.name!==""&&this.version!==""&&this.store!=="")B=`${this.name}::${this.store}::${W}_`;else if(this.name!==""&&this.version!=="")B=`${this.name}::${W}_`;let F=Object.keys(window.localStorage).filter((K)=>{return K.indexOf(B)===0}).map((K)=>{return K.replace(B,"")});for(let K of F){let N=window.localStorage.getItem(`${B}${K}`);if(N!==null)window.localStorage.setItem(this.id+K,N);window.localStorage.removeItem(`${B}${K}`)}}}}H({upgrades:Q})}).then(({upgrades:H})=>{return this.storage=window.localStorage,new Promise((Q)=>{let X=()=>Q(this);this._upgrade(H,X)})});return this.storage=z,z}}set(z,H){return this.open().then(()=>{if(typeof H==="object")this.storage.setItem(this.id+z,JSON.stringify(H));else this.storage.setItem(this.id+z,String(H));return Promise.resolve({key:z,value:H})})}update(z,H){return this.get(z).then((Q)=>{if(typeof Q==="object"&&Q!==null){if(typeof H==="object"&&H!==null)H=Object.assign({},Q,H);this.storage.setItem(this.id+z,JSON.stringify(H))}else this.storage.setItem(this.id+z,String(H));return Promise.resolve({key:z,value:H})}).catch(()=>{return this.set(z,H)})}get(z){return this.open().then(()=>{return new Promise((H,Q)=>{let X=this.storage.getItem(this.id+z);try{let Y=JSON.parse(X);if(Y&&typeof Y==="object")X=Y}catch{}if(typeof X<"u"&&X!==null)H(X);else Q()})})}getAll(){return this.keys().then((z)=>{let H={},Q=[];for(let X of z)Q.push(this.get(X).then((Y)=>{H[X]=Y}));return Promise.all(Q).then(()=>H)})}contains(z){return this.keys().then((H)=>{if(H.includes(z))return Promise.resolve();else return Promise.reject()})}upgrade(z,H,Q){let X=`${parseInt(z.replace(/\./g,""))}::${parseInt(H.replace(/\./g,""))}`;return this.upgrades[X]=Q,Promise.resolve()}_upgrade(z,H){if(z.length>0)this.upgrades[z[0]].call(this,this).then(()=>{this._upgrade(z.slice(1),H)}).catch((Q)=>console.error(Q));else H()}rename(z){if(this.name!==z)return this.keys().then((H)=>{let Q=this.id;if(this.name=z,this.name!==""&&this.version!==""&&this.store!=="")this.id=`${this.name}::${this.store}::${this.version}_`;else if(this.name!==""&&this.version!=="")this.id=`${this.name}::${this.version}_`;else if(this.name!=="")this.id=`${this.name}::_`;else this.id="";let X=[];for(let Y of H){let W=this.storage.getItem(`${Q}${Y}`);if(W!==null)X.push(this.set(Y,W).then(()=>{this.storage.removeItem(`${Q}${Y}`)}))}return Promise.all(X).then(()=>{})});else return Promise.reject()}key(z,H=!1){return this.open().then(()=>{let Q=this.storage.key(z);if(H===!0)return Promise.resolve(Q??"");else return Promise.resolve((Q??"").replace(this.id,""))})}keys(z=!1){return this.open().then(()=>{return Promise.resolve(Object.keys(this.storage).filter((H)=>{return H.indexOf(this.id)===0}).map((H)=>{if(z===!0)return H;else return H.replace(this.id,"")}))})}remove(z){return this.get(z).then((H)=>{return this.storage.removeItem(this.id+z),Promise.resolve(H)})}clear(){return this.keys().then((z)=>{for(let H of z)this.remove(H);return Promise.resolve()})}}class P extends C{constructor({name:z="",version:H="",store:Q=""}){super({name:z,version:H,store:Q})}open(){if(typeof this.storage>"u")this.storage=window.sessionStorage;return Promise.resolve(this)}}class U{name;version;store;props;index;keyPath;numericVersion;upgrades;storage;constructor({name:z="",version:H="",store:Q="",props:X={},index:Y={}}){if(this.name=z,this.version=H,this.store=Q,this.props=X||{},this.index=Y,this.keyPath=X?.keyPath||"id",this.upgrades={},this.version==="")this.numericVersion=0;else this.numericVersion=parseInt(H.replace(/\./g,""))}configuration(z){if(z.name)this.name=z.name;if(z.version)this.version=z.version;if(z.store)this.store=z.store}open(){if(this.name==="")return console.error("No name has been defined for IndexedDB space."),Promise.reject();if(this.store==="")return console.error("No store has been defined for IndexedDB space."),Promise.reject();if(this.storage instanceof IDBDatabase)return Promise.resolve(this);else if(this.storage instanceof Promise)return this.storage;else{let z,H=new Promise((Q,X)=>{let Y=[],W=window.indexedDB.open(this.name,this.numericVersion);W.onerror=(Z)=>{X(Z)},W.onsuccess=(Z)=>{Q({storage:Z.target.result,upgrades:Y})},W.onupgradeneeded=(Z)=>{z=Z;let J=Z.target.result;if(Z.oldVersion<1){let B=J.createObjectStore(this.store,this.props);for(let F of Object.keys(this.index)){let K=this.index[F];B.createIndex(K.name,K.field,K.props)}}else{let B=Object.keys(this.upgrades).sort(),F=B.findIndex((K)=>{let[N]=K.split("::");return parseInt(N)===Z.oldVersion});if(F>-1)Y=B.slice(F).filter((K)=>{let[N,L]=K.split("::");return parseInt(N)<this.numericVersion&&parseInt(L)<=this.numericVersion})}let _=Z.target.transaction;if(_)_.addEventListener("complete",()=>{Q({storage:J,upgrades:Y})})}}).then(({storage:Q,upgrades:X})=>{return this.storage=Q,new Promise((Y)=>{let W=()=>Y(this);this._upgrade(X,W,z)})});return this.storage=H,H}}set(z=null,H){return this.open().then(()=>{return new Promise((Q,X)=>{let Y=this.storage.transaction(this.store,"readwrite").objectStore(this.store),W;if(z!==null){let Z={};Z[this.keyPath]=z,W=Y.put(Object.assign({},Z,H))}else W=Y.add(H);W.addEventListener("success",(Z)=>{Q({key:String(Z.target.result),value:H})}),W.addEventListener("error",(Z)=>{X(Z)})})})}update(z,H){return this.get(z).then((Q)=>{if(typeof Q>"u")return this.set(z,H);return new Promise((X,Y)=>{let Z=this.storage.transaction(this.store,"readwrite").objectStore(this.store).put(Object.assign({},Q,H));Z.addEventListener("success",(J)=>{X({key:String(J.target.result),value:H})}),Z.addEventListener("error",(J)=>{Y(J)})})})}get(z){return this.open().then(()=>{return new Promise((H,Q)=>{let Y=this.storage.transaction(this.store).objectStore(this.store).get(z);Y.addEventListener("success",(W)=>{let Z=W.target.result;if(typeof Z<"u"&&Z!==null)H(Z);else Q()}),Y.addEventListener("error",(W)=>{Q(W)})})})}getAll(){return this.open().then(()=>{return new Promise((z,H)=>{let X=this.storage.transaction(this.store).objectStore(this.store).getAll();X.addEventListener("success",(Y)=>{let W={};Y.target.result.forEach((J)=>{let _=J[this.keyPath];delete J[this.keyPath],W[_]=J}),z(W)}),X.addEventListener("error",(Y)=>{H(Y)})})})}contains(z){return this.get(z).then(()=>{return Promise.resolve()})}upgrade(z,H,Q){let X=`${parseInt(z.replace(/\./g,""))}::${parseInt(H.replace(/\./g,""))}`;return this.upgrades[X]=Q,Promise.resolve()}_upgrade(z,H,Q){if(z.length>0)this.upgrades[z[0]].call(this,this,Q).then(()=>{this._upgrade(z.slice(1),H,Q)}).catch((X)=>console.error(X));else H()}rename(){return Promise.reject()}key(){return Promise.reject()}keys(){return this.open().then(()=>{return new Promise((z,H)=>{let X=this.storage.transaction(this.store,"readwrite").objectStore(this.store).getAllKeys();X.addEventListener("success",(Y)=>{z(Y.target.result.map(String))},!1),X.addEventListener("error",(Y)=>{H(Y)},!1)})})}remove(z){return this.get(z).then((H)=>{return new Promise((Q,X)=>{let W=this.storage.transaction(this.store,"readwrite").objectStore(this.store).delete(z);W.addEventListener("success",()=>{Q(H)},!1),W.addEventListener("error",(Z)=>{X(Z)},!1)})})}clear(){return this.open().then(()=>{return new Promise((z,H)=>{let X=this.storage.transaction(this.store,"readwrite").objectStore(this.store).clear();X.addEventListener("success",()=>{z()},!1),X.addEventListener("error",(Y)=>{H(Y)},!1)})})}}class w{name;version;store;endpoint;props;storage;constructor({name:z="",version:H="",store:Q="",endpoint:X="",props:Y={}}){this.name=z,this.version=H,this.store=Q,this.endpoint=`${X}${Q}/`,this.props=Y}configuration(z){if(z.name)this.name=z.name;if(z.version)this.version=z.version;if(z.store)this.store=z.store}open(){if(typeof this.storage>"u")this.storage=G;return Promise.resolve(this)}set(z,H){return this.open().then(()=>{return this.storage.post(this.endpoint+z,H,this.props).then((Q)=>{return Promise.resolve({key:z,value:Q.json()})})})}update(z,H){return this.get(z).then((Q)=>{let X=Object.assign({},Q,H);return this.storage.put(this.endpoint+z,X,this.props).then((Y)=>{return Promise.resolve({key:z,value:Y.json()})})})}get(z){return this.open().then(()=>{return this.storage.json(this.endpoint+z,{},this.props)})}getAll(){return this.open().then(()=>{return this.storage.json(this.endpoint,{},this.props)})}contains(z){return this.keys().then((H)=>{if(H.includes(z))return Promise.resolve();else return Promise.reject()})}upgrade(){return Promise.reject()}rename(){return Promise.reject()}key(){return Promise.reject()}keys(){return this.open().then(()=>{return this.storage.json(this.endpoint,{keys:!0},this.props)})}remove(z){return this.open().then(()=>{return this.storage.delete(this.endpoint+z,{},this.props).then((H)=>{return H.json()})})}clear(){return this.open().then(()=>{return this.storage.delete(this.endpoint,{},this.props).then(()=>{})})}}var R={LocalStorage:C,SessionStorage:P,IndexedDB:U,RemoteStorage:w};class x{_configuration;adapter;callbacks;transformations;constructor(z=R.LocalStorage,H={}){this._configuration=Object.assign({},{name:"",version:"",store:""},H),this.adapter=new z(this._configuration),this.callbacks={create:[],update:[],delete:[]},this.transformations={}}configuration(z=null){if(z!==null){if(this._configuration=Object.assign({},this._configuration,z),this.adapter.configuration)this.adapter.configuration(z)}else return this._configuration}open(){return this.adapter.open().then(()=>{return Promise.resolve(this)})}set(z,H){for(let Q of Object.keys(this.transformations))if(typeof this.transformations[Q].set==="function")H=this.transformations[Q].set(z,H);return this.adapter.set(z,H).then(({key:Q,value:X})=>{for(let Y of this.callbacks.create)Y.call(null,Q,X);return Promise.resolve({key:Q,value:X})})}update(z,H){for(let Q of Object.keys(this.transformations))if(typeof this.transformations[Q].set==="function")H=this.transformations[Q].set(z,H);return this.adapter.update(z,H).then(({key:Q,value:X})=>{for(let Y of this.callbacks.update)Y.call(null,Q,X);return Promise.resolve({key:Q,value:X})})}get(z){return this.adapter.get(z).then((H)=>{for(let Q of Object.keys(this.transformations))if(typeof this.transformations[Q].get==="function")H=this.transformations[Q].get(z,H);return H})}getAll(){return this.adapter.getAll().then((z)=>{for(let H of Object.keys(z))for(let Q of Object.keys(this.transformations))if(typeof this.transformations[Q].get==="function")z[H]=this.transformations[Q].get(H,z[H]);return z})}each(z){return this.getAll().then((H)=>{let Q=[];for(let X of Object.keys(H))Q.push(z.call(this,X,H[X]));return Promise.all(Q)})}contains(z){return this.adapter.contains(z)}upgrade(z,H,Q){return this.adapter.upgrade(z,H,Q).then(()=>{return Promise.resolve(this)})}rename(z){return this.adapter.rename(z)}onCreate(z){this.callbacks.create.push(z)}onUpdate(z){this.callbacks.update.push(z)}onDelete(z){this.callbacks.delete.push(z)}addTransformation({id:z,get:H,set:Q}){this.transformations[z]={id:z,get:H,set:Q}}removeTransformation(z){delete this.transformations[z]}key(z,H=!1){return this.adapter.key(z,H)}keys(z=!1){return this.adapter.keys(z)}remove(z){return this.adapter.remove(z).then((H)=>{for(let Q of this.callbacks.delete)Q.call(null,z,H)})}clear(){return this.adapter.clear()}}class V{static capitalize(z){return z.replace(/\w\S*/g,(H)=>{return H.charAt(0).toUpperCase()+H.substring(1).toLowerCase()})}static suffix(z,H){let Q="",X=H.indexOf(z);if(X!==-1)X+=z.length,Q=H.substring(X);return Q}static selection(){let z=window.getSelection();if(z)return z.toString();return""}static prefix(z,H){let Q="",X=H.indexOf(z);if(X!==-1)Q=H.substring(0,X);return Q}static friendly(z){let H=[/[áàâãªä]/g,/[ÁÀÂÃÄ]/g,/[ÍÌÎÏ]/g,/[íìîï]/g,/[éèêë]/g,/[ÉÈÊË]/g,/[óòôõºö]/g,/[ÓÒÔÕÖ]/g,/[úùûü]/g,/[ÚÙÛÜ]/g,/ç/g,/Ç/g,/ñ/g,/Ñ/g,/_/g,/[''‹›<>']/g,/[""«»„"]/g,/[(){}[\]]/g,/[?¿!¡#$%&^*´`~/°|]/g,/[,.:;]/g,/ /g],Q=["a","A","I","i","e","E","o","O","u","U","c","C","n","N","-","","","","","","-"],X=z;for(let Y=0;Y<H.length;Y++)X=X.replace(H[Y],Q[Y]);return X}}class S{static callAsync(z,H,...Q){try{let X=z.apply(H,Q);if(X instanceof Promise)return X;else return Promise.resolve(X)}catch(X){return Promise.reject(X)}}static uuid(){if(typeof crypto<"u"&&crypto.getRandomValues)return"10000000-1000-4000-8000-100000000000".replace(/[018]/g,(z)=>{let H=parseInt(z,10);return(H^crypto.getRandomValues(new Uint8Array(1))[0]&15>>H/4).toString(16)});else{let z=()=>Math.floor((1+Math.random())*65536).toString(16).substring(1);return z()+z()+"-"+z()+"-"+z()+"-"+z()+"-"+z()+z()+z()}}}if(typeof window==="object")window.Artemis=M;
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=9718D4631B30A69A64756E2164756E21
|
|
4
4
|
//# sourceMappingURL=artemis.browser.js.map
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"sources": ["../src/Debug.ts", "../src/DOM.ts", "../src/Request.ts", "../src/FileSystem.ts", "../src/Form.ts", "../src/Platform.ts", "../src/Preload.ts", "../src/SpaceAdapter/LocalStorage.ts", "../src/SpaceAdapter/SessionStorage.ts", "../src/SpaceAdapter/IndexedDB.ts", "../src/SpaceAdapter/RemoteStorage.ts", "../src/Space.ts", "../src/Text.ts", "../src/Util.ts", "../src/browser.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"/**\n * ==============================\n * Debug\n * ==============================\n */\n\n\n/**\n * Debug level enum\n */\nexport enum DebugLevel {\n\tNONE = 0,\n\tERROR = 1,\n\tWARNING = 2,\n\tINFO = 3,\n\tDEBUG = 4,\n\tALL = 5\n}\n\n/**\n * This class acts as a proxy for the console. It shares the same methods as the\n * web console but they are conditioned to a debug level.\n */\nexport class Debug {\n\tprivate static _level: DebugLevel = DebugLevel.NONE;\n\n\t/**\n\t * Set or get the log level\n\t *\n\t * @param level - The debug level to use\n\t * @returns The current debug level\n\t */\n\tstatic level(level?: DebugLevel): DebugLevel {\n\t\tif (typeof level === 'number') {\n\t\t\tthis._level = level;\n\t\t}\n\t\treturn this._level;\n\t}\n\n\t/**\n\t * Log the given elements.\n\t * Logs will only be made if the level is set to DEBUG or above\n\t *\n\t * @param args - Arguments to log\n\t */\n\tstatic log(...args: unknown[]): void {\n\t\tif (this.level() >= DebugLevel.DEBUG) {\n\t\t\tconsole.log(...args);\n\t\t}\n\t}\n\n\t/**\n\t * Show a debugging log\n\t * Logs will only be made if the level is set DEBUG or above\n\t *\n\t * @param args - Arguments to log\n\t */\n\tstatic debug(...args: unknown[]): void {\n\t\tif (this.level() >= DebugLevel.DEBUG) {\n\t\t\tconsole.debug(...args);\n\t\t}\n\t}\n\n\t/**\n\t * Show an info log\n\t * Logs will only be made if the level is set to INFO or above\n\t *\n\t * @param args - Arguments to log\n\t */\n\tstatic info(...args: unknown[]): void {\n\t\tif (this.level() >= DebugLevel.INFO) {\n\t\t\tconsole.info(...args);\n\t\t}\n\t}\n\n\t/**\n\t * Show an error log\n\t * Logs will only be made if the level is set to ERROR or above\n\t *\n\t * @param args - Arguments to log\n\t */\n\tstatic error(...args: unknown[]): void {\n\t\tif (this.level() >= DebugLevel.ERROR) {\n\t\t\tconsole.error(...args);\n\t\t}\n\t}\n\n\t/**\n\t * Show a warning log\n\t * Logs will only be made if the level is set to WARNING or above\n\t *\n\t * @param args - Arguments to log\n\t */\n\tstatic warning(...args: unknown[]): void {\n\t\tif (this.level() >= DebugLevel.WARNING) {\n\t\t\tconsole.warn(...args);\n\t\t}\n\t}\n\n\t/**\n\t * Show data as a table\n\t * Table will only be made if the level is set to DEBUG or above\n\t *\n\t * @param args - Arguments to display as table\n\t */\n\tstatic table(...args: unknown[]): void {\n\t\tif (this.level() >= DebugLevel.DEBUG) {\n\t\t\tconsole.table(...args);\n\t\t}\n\t}\n\n\t/**\n\t * Start an indented group\n\t *\n\t * @param args - Group label arguments\n\t */\n\tstatic group(...args: unknown[]): void {\n\t\tif (this.level() >= DebugLevel.DEBUG) {\n\t\t\tconsole.group(...args);\n\t\t}\n\t}\n\n\t/**\n\t * Start an indented group collapsed by default\n\t *\n\t * @param args - Group label arguments\n\t */\n\tstatic groupCollapsed(...args: unknown[]): void {\n\t\tif (this.level() >= DebugLevel.DEBUG) {\n\t\t\tconsole.groupCollapsed(...args);\n\t\t}\n\t}\n\n\t/**\n\t * End a previously started group\n\t */\n\tstatic groupEnd(): void {\n\t\tif (this.level() >= DebugLevel.DEBUG) {\n\t\t\tconsole.groupEnd();\n\t\t}\n\t}\n\n\t/**\n\t * Start a timer\n\t * The timer will only start if the level is set to DEBUG or above\n\t *\n\t * @param label - Timer label\n\t */\n\tstatic time(label?: string): void {\n\t\tif (this.level() >= DebugLevel.DEBUG) {\n\t\t\tconsole.time(label);\n\t\t}\n\t}\n\n\t/**\n\t * Log the time a timer has been running for\n\t * The time will only be logged if the level is set to DEBUG or above\n\t *\n\t * @param label - Timer label\n\t * @param args - Additional arguments to log\n\t */\n\tstatic timeLog(label?: string, ...args: unknown[]): void {\n\t\tif (this.level() >= DebugLevel.DEBUG) {\n\t\t\tconsole.timeLog(label, ...args);\n\t\t}\n\t}\n\n\t/**\n\t * End a timer\n\t * The timer will only be available if the level is set to DEBUG or above\n\t *\n\t * @param label - Timer label\n\t */\n\tstatic timeEnd(label?: string): void {\n\t\tif (this.level() >= DebugLevel.DEBUG) {\n\t\t\tconsole.timeEnd(label);\n\t\t}\n\t}\n\n\t/**\n\t * Show the stack trace\n\t * The stack trace will only be available if the level is set to DEBUG or above\n\t *\n\t * @param args - Arguments to log with trace\n\t */\n\tstatic trace(...args: unknown[]): void {\n\t\tif (this.level() >= DebugLevel.DEBUG) {\n\t\t\tconsole.trace(...args);\n\t\t}\n\t}\n}\n\n",
|
|
6
|
-
"/**\n * ==============================\n * DOM\n * ==============================\n */\n\n/**\n * Type for elements that can be used as a selector\n */\nexport type DOMSelector = string | Element | Element[] | NodeList | NodeListOf<Element> | HTMLElement[] | DOM | null;\n\n/**\n * Type for style properties object\n */\nexport type StyleProperties = Record<string, string | number>;\n\n/**\n * Type for offset object\n */\nexport interface DOMOffset {\n\ttop: number;\n\tleft: number;\n}\n\n/**\n * Event callback type\n */\nexport type EventCallback = (event: Event) => void;\n\n/**\n * Element callback type\n */\nexport type ElementCallback = (element: Element) => void;\n\n/**\n * Simple DOM manipulation functions\n */\nexport class DOM {\n\tpublic collection: Element[] | NodeListOf<Element>;\n\tpublic length: number;\n\tpublic _selector: DOMSelector;\n\n\t/**\n\t * Create a new DOM object\n\t *\n\t * @param selector - Selector or DOM element to use\n\t */\n\tconstructor(selector: DOMSelector) {\n\t\tif (selector === null) {\n\t\t\tthis.collection = [];\n\t\t\tthis.length = 0;\n\t\t\tthis._selector = null;\n\t\t\treturn;\n\t\t}\n\n\t\tif (typeof selector === 'string') {\n\t\t\tthis.collection = document.querySelectorAll(selector);\n\t\t\tthis.length = this.collection.length;\n\t\t\tthis._selector = selector;\n\t\t} else if (selector instanceof NodeList) {\n\t\t\tthis.collection = selector as NodeListOf<Element>;\n\t\t\tthis.length = selector.length;\n\t\t\tthis._selector = selector;\n\t\t} else if (selector instanceof DOM) {\n\t\t\tthis.collection = selector.collection;\n\t\t\tthis.length = this.collection.length;\n\t\t\tthis._selector = selector._selector;\n\t\t} else if (selector instanceof HTMLElement) {\n\t\t\tthis.collection = [selector];\n\t\t\tthis.length = this.collection.length;\n\t\t\tthis._selector = selector;\n\t\t} else if (Array.isArray(selector)) {\n\t\t\tthis.collection = selector;\n\t\t\tthis.length = selector.length;\n\t\t\tthis._selector = selector;\n\t\t} else {\n\t\t\tthis.collection = [];\n\t\t\tthis.length = 0;\n\t\t\tthis._selector = null;\n\t\t}\n\t}\n\n\t/**\n\t * Hide elements by setting their `display` property to 'none'.\n\t *\n\t * @returns Current instance\n\t */\n\thide(): this {\n\t\tfor (const element of this.collection) {\n\t\t\t(element as HTMLElement).style.display = 'none';\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Show elements by setting their `display` property to the given value.\n\t *\n\t * @param display - Display property to set\n\t * @returns Current instance\n\t */\n\tshow(display: string = 'block'): this {\n\t\tfor (const element of this.collection) {\n\t\t\t(element as HTMLElement).style.display = display;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a class to the classList object\n\t *\n\t * @param newClass - Class name to add\n\t * @returns Current instance\n\t */\n\taddClass(newClass: string): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.classList.add(newClass);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Remove a given class from the classList object\n\t *\n\t * @param oldClass - Class to remove. If it's empty or null, all classes will be removed\n\t * @returns Current instance\n\t */\n\tremoveClass(oldClass: string | null = null): this {\n\t\tif (oldClass !== null) {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\telement.classList.remove(oldClass);\n\t\t\t}\n\t\t} else {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\twhile (element.classList.length > 0) {\n\t\t\t\t\tconst className = element.classList.item(0);\n\t\t\t\t\tif (className) {\n\t\t\t\t\t\telement.classList.remove(className);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Toggle between two classes\n\t *\n\t * @param classes - Space separated class names\n\t * @returns Current instance\n\t */\n\ttoggleClass(classes: string): this {\n\t\tconst classList = classes.split(' ');\n\t\tfor (const element of this.collection) {\n\t\t\tfor (const className of classList) {\n\t\t\t\telement.classList.toggle(className);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Check if ALL elements in the collection have the given class\n\t *\n\t * @param classToCheck - Class name to check for\n\t * @returns Whether all elements have the class\n\t */\n\thasClass(classToCheck: string): boolean {\n\t\tfor (const element of this.collection) {\n\t\t\tif (!element.classList.contains(classToCheck)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t/**\n\t * Get or set the value from the elements\n\t *\n\t * @param value - Value to set to the elements\n\t * @returns If a value is provided, returns current instance. Otherwise returns the value(s) - single value if one element, array if multiple.\n\t */\n\tvalue(value?: string): this | string | string[] | undefined {\n\t\tif (typeof value !== 'undefined') {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\t(element as HTMLInputElement).value = value;\n\t\t\t}\n\t\t\treturn this;\n\t\t} else {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn (this.collection[0] as HTMLInputElement).value;\n\t\t\t}\n\t\t\tconst values: string[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push((element as HTMLInputElement).value);\n\t\t\t}\n\t\t\treturn values;\n\t\t}\n\t}\n\n\t/**\n\t * Focus on the first element matching the selector\n\t *\n\t * @returns Current instance\n\t */\n\tfocus(): this {\n\t\tif (this.length > 0) {\n\t\t\t(this.collection[0] as HTMLElement).focus();\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback for the 'click' event on every element matching the selector\n\t *\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\tclick(callback: EventCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.addEventListener('click', callback, false);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback for the 'keyup' event on every element matching the selector\n\t *\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\tkeyup(callback: EventCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.addEventListener('keyup', callback, false);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback for the 'keydown' event on every element matching the selector\n\t *\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\tkeydown(callback: EventCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.addEventListener('keydown', callback, false);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback for the 'submit' event on every element matching the selector\n\t *\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\tsubmit(callback: EventCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.addEventListener('submit', callback, false);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback for the 'change' event on every element matching the selector\n\t *\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\tchange(callback: EventCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.addEventListener('change', callback, false);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback for the 'scroll' event on every element matching the selector\n\t *\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\tscroll(callback: EventCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.addEventListener('scroll', callback, false);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback function to a given event\n\t *\n\t * @param event - Event to add the listener to\n\t * @param target - Target element on which to detect the event or callback function\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\ton(event: string, target: string | EventCallback, callback?: EventCallback): this {\n\t\tconst events = event.split(' ');\n\t\tfor (const element of this.collection) {\n\t\t\tfor (const evt of events) {\n\t\t\t\t// Check if no target was defined and just a function was provided\n\t\t\t\tif (typeof target === 'function') {\n\t\t\t\t\telement.addEventListener(evt, target, false);\n\t\t\t\t} else if (typeof target === 'string' && typeof callback === 'function') {\n\t\t\t\t\telement.addEventListener(evt, (e: Event) => {\n\t\t\t\t\t\tif (!e.target) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst domInstance = new DOM(e.target as Element);\n\t\t\t\t\t\tconst targetElement = domInstance.closestParent(target, this._selector as string);\n\n\t\t\t\t\t\tif (targetElement.exists()) {\n\t\t\t\t\t\t\tcallback.call(targetElement.get(0), e);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Filter from the current collection to only those matching the new selector\n\t * Applies to ALL elements in the collection\n\t *\n\t * @param selector - Selector to filter the collection with\n\t * @returns New DOM instance with the filtered collection\n\t */\n\tfilter(selector: string): DOM {\n\t\tconst filtered: HTMLElement[] = [];\n\t\tfor (const element of this.collection) {\n\t\t\tif (element.matches(selector)) {\n\t\t\t\tfiltered.push(element as HTMLElement);\n\t\t\t}\n\t\t}\n\t\treturn new DOM(filtered.length > 0 ? filtered : null);\n\t}\n\n\t/**\n\t * Check if there are any elements that match the selector.\n\t *\n\t * @returns Whether elements matching the selector existed or not\n\t */\n\texists(): boolean {\n\t\treturn this.length > 0;\n\t}\n\n\t/**\n\t * Get or set a `data` property\n\t *\n\t * @param name - Name of the data property\n\t * @param value - Value of the property\n\t * @returns If no value is provided, returns the value(s) - single value if one element, array if multiple.\n\t */\n\tdata(name: string, value?: string): this | string | string[] | undefined {\n\t\tif (typeof value !== 'undefined') {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\t(element as HTMLElement).dataset[name] = value;\n\t\t\t}\n\t\t\treturn this;\n\t\t} else {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn (this.collection[0] as HTMLElement).dataset[name];\n\t\t\t}\n\t\t\tconst values: (string | undefined)[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push((element as HTMLElement).dataset[name]);\n\t\t\t}\n\t\t\treturn values as string[];\n\t\t}\n\t}\n\n\t/**\n\t * Remove a data property from all the elements on the collection given its name.\n\t *\n\t * @param name - Name of the data property to remove\n\t * @returns Current instance\n\t */\n\tremoveData(name: string): this {\n\t\tfor (const element of this.collection) {\n\t\t\tdelete (element as HTMLElement).dataset[name];\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get or set the text of elements\n\t *\n\t * @param value - Value to set the text to\n\t * @returns If no value is provided, returns the text(s) - single value if one element, array if multiple.\n\t */\n\ttext(value?: string): this | string | (string | null)[] | null | undefined {\n\t\tif (typeof value !== 'undefined') {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\telement.textContent = value;\n\t\t\t}\n\t\t\treturn this;\n\t\t} else {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn this.collection[0].textContent;\n\t\t\t}\n\t\t\tconst values: (string | null)[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push(element.textContent);\n\t\t\t}\n\t\t\treturn values;\n\t\t}\n\t}\n\n\t/**\n\t * Get or set the inner HTML of elements\n\t *\n\t * @param value - Value to set the HTML to\n\t * @returns If no value is provided, returns the HTML(s) - single value if one element, array if multiple.\n\t */\n\thtml(value?: string): this | string | string[] | undefined {\n\t\tif (typeof value !== 'undefined') {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\telement.innerHTML = value;\n\t\t\t}\n\t\t\treturn this;\n\t\t} else {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn this.collection[0].innerHTML;\n\t\t\t}\n\t\t\tconst values: string[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push(element.innerHTML);\n\t\t\t}\n\t\t\treturn values;\n\t\t}\n\t}\n\n\t/**\n\t * Append an element to ALL elements in the collection\n\t *\n\t * @param element - String representation of the element to add or an Element\n\t * @returns Current instance\n\t */\n\tappend(element: string | Element): this {\n\t\tfor (const el of this.collection) {\n\t\t\tif (typeof element === 'string') {\n\t\t\t\tconst div = document.createElement('div');\n\t\t\t\tdiv.innerHTML = element.trim();\n\t\t\t\tif (div.firstChild) {\n\t\t\t\t\tel.appendChild(div.firstChild.cloneNode(true));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tel.appendChild(element.cloneNode(true));\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Prepend an element to ALL elements in the collection\n\t *\n\t * @param element - String representation of the element to add or an Element\n\t * @returns Current instance\n\t */\n\tprepend(element: string | Element): this {\n\t\tfor (const el of this.collection) {\n\t\t\tif (typeof element === 'string') {\n\t\t\t\tconst div = document.createElement('div');\n\t\t\t\tdiv.innerHTML = element.trim();\n\t\t\t\tif (div.firstChild) {\n\t\t\t\t\tif (el.childNodes.length > 0) {\n\t\t\t\t\t\tel.insertBefore(div.firstChild.cloneNode(true), el.childNodes[0]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tel.appendChild(div.firstChild.cloneNode(true));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (el.childNodes.length > 0) {\n\t\t\t\t\tel.insertBefore(element.cloneNode(true), el.childNodes[0]);\n\t\t\t\t} else {\n\t\t\t\t\tel.appendChild(element.cloneNode(true));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Iterate over the collection of elements matching the selector\n\t *\n\t * @param callback - Callback to run for every element\n\t * @returns Current instance\n\t */\n\teach(callback: ElementCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\tcallback(element);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get an element from the collection given its index\n\t *\n\t * @param index - Index of the element to retrieve\n\t * @returns HTML Element in the position indicated by the index\n\t */\n\tget(index: number): Element | undefined {\n\t\treturn this.collection[index];\n\t}\n\n\t/**\n\t * Get the first element in the collection\n\t *\n\t * @returns DOM instance with the first element\n\t */\n\tfirst(): DOM {\n\t\tif (this.length > 0) {\n\t\t\treturn new DOM(this.collection[0] as HTMLElement);\n\t\t}\n\t\treturn new DOM(null);\n\t}\n\n\t/**\n\t * Get the last element in the collection\n\t *\n\t * @returns DOM instance with the last element\n\t */\n\tlast(): DOM {\n\t\tif (this.length > 0) {\n\t\t\treturn new DOM(this.collection[this.collection.length - 1] as HTMLElement);\n\t\t}\n\t\treturn new DOM(null);\n\t}\n\n\t/**\n\t * Check if any element in the collection is visible by checking their\n\t * display, offsetWidth and offsetHeight properties\n\t *\n\t * @returns Whether any element is visible\n\t */\n\tisVisible(): boolean {\n\t\tfor (const element of this.collection) {\n\t\t\tconst el = element as HTMLElement;\n\t\t\tif (el.style.display !== 'none' && el.offsetWidth > 0 && el.offsetHeight > 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Get the parents of ALL elements in the collection\n\t *\n\t * @returns DOM instance of the parent elements\n\t */\n\tparent(): DOM {\n\t\tconst parents: HTMLElement[] = [];\n\t\tfor (const element of this.collection) {\n\t\t\tif (element.parentElement && !parents.includes(element.parentElement)) {\n\t\t\t\tparents.push(element.parentElement);\n\t\t\t}\n\t\t}\n\t\treturn new DOM(parents.length > 0 ? parents : null);\n\t}\n\n\t/**\n\t * Find elements that match the given selector in ALL elements of the collection\n\t *\n\t * @param selector - Selector to find elements with\n\t * @returns DOM instance with found elements\n\t */\n\tfind(selector: string): DOM {\n\t\tconst found: HTMLElement[] = [];\n\t\tfor (const element of this.collection) {\n\t\t\tconst results = element.querySelectorAll(selector);\n\t\t\tfor (const result of results) {\n\t\t\t\tif (!found.includes(result as HTMLElement)) {\n\t\t\t\t\tfound.push(result as HTMLElement);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn new DOM(found.length > 0 ? found : null);\n\t}\n\n\t/**\n\t * Get the top and left offsets of elements in the collection\n\t *\n\t * @returns Single offset object if one element, array of offset objects if multiple\n\t */\n\toffset(): DOMOffset | DOMOffset[] | undefined {\n\t\tif (this.length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (this.length === 1) {\n\t\t\tconst rect = this.collection[0].getBoundingClientRect();\n\t\t\treturn {\n\t\t\t\ttop: rect.top + document.body.scrollTop,\n\t\t\t\tleft: rect.left + document.body.scrollLeft\n\t\t\t};\n\t\t}\n\t\tconst offsets: DOMOffset[] = [];\n\t\tfor (const element of this.collection) {\n\t\t\tconst rect = element.getBoundingClientRect();\n\t\t\toffsets.push({\n\t\t\t\ttop: rect.top + document.body.scrollTop,\n\t\t\t\tleft: rect.left + document.body.scrollLeft\n\t\t\t});\n\t\t}\n\t\treturn offsets;\n\t}\n\n\t/**\n\t * Find the closest element matching the given selector for ALL elements.\n\t * This bubbles up from the initial object and then follows to its parents.\n\t *\n\t * @param selector - Selector to match the closest element with\n\t * @returns DOM instance with the closest HTML elements matching the selector\n\t */\n\tclosest(selector: string): DOM {\n\t\tconst found: HTMLElement[] = [];\n\t\tfor (const element of this.collection) {\n\t\t\tconst closest = element.closest(selector) as HTMLElement | null;\n\t\t\tif (closest && !found.includes(closest)) {\n\t\t\t\tfound.push(closest);\n\t\t\t}\n\t\t}\n\t\treturn new DOM(found.length > 0 ? found : null);\n\t}\n\n\t/**\n\t * Find the closest parent element matching the given selector. This bubbles up\n\t * from the initial object and then follows to its parents.\n\t *\n\t * @param selector - Selector to match the closest element with\n\t * @param limit - Selector for limit element. If the limit is reached and no element matching the provided selector was found, it will cause an early return.\n\t * @returns DOM instance with the closest HTML element matching the selector\n\t */\n\tclosestParent(selector: string, limit?: string): DOM {\n\t\tif (this.length === 0) {\n\t\t\treturn new DOM(null);\n\t\t}\n\n\t\tlet current: Element | null = this.collection[0];\n\t\twhile (current) {\n\t\t\t// Check if the current element matches the selector\n\t\t\tif (current.matches(selector)) {\n\t\t\t\treturn new DOM(current as HTMLElement);\n\t\t\t}\n\n\t\t\t// Check if we hit the limit\n\t\t\tif (typeof limit === 'string' && current.matches(limit)) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcurrent = current.parentElement;\n\t\t}\n\t\treturn new DOM(null);\n\t}\n\n\t/**\n\t * Get or set the value of a given attribute\n\t *\n\t * @param attribute - Attribute's name\n\t * @param value - Value to set the attribute to\n\t * @returns If no value is provided, returns the attribute value(s) - single value if one element, array if multiple.\n\t */\n\tattribute(attribute: string, value?: string | number): this | string | (string | null)[] | null | undefined {\n\t\tif (typeof value !== 'undefined') {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\telement.setAttribute(attribute, String(value));\n\t\t\t}\n\t\t\treturn this;\n\t\t} else {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn this.collection[0].getAttribute(attribute);\n\t\t\t}\n\t\t\tconst values: (string | null)[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push(element.getAttribute(attribute));\n\t\t\t}\n\t\t\treturn values;\n\t\t}\n\t}\n\n\t/**\n\t * Check whether ALL elements have an attribute\n\t *\n\t * @param attribute - The name of the attribute to check existence for\n\t * @returns Whether all elements have the attribute\n\t */\n\thasAttribute(attribute: string): boolean {\n\t\tfor (const element of this.collection) {\n\t\t\tif (!element.hasAttribute(attribute)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t/**\n\t * Insert content after all elements in the collection\n\t *\n\t * @param content - String representation of the content to add\n\t * @returns Current instance\n\t */\n\tafter(content: string): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.insertAdjacentHTML('afterend', content);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Insert content before all elements in the collection\n\t *\n\t * @param content - String representation of the content to add\n\t * @returns Current instance\n\t */\n\tbefore(content: string): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.insertAdjacentHTML('beforebegin', content);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get or modify the `style` properties of the elements matching the selector\n\t *\n\t * @param properties - Properties to change or get. Can be either an individual property or a JSON object with key-value pairs\n\t * @param value - Value to set the property to when only changing one property\n\t * @returns If a property is given but not a value for it, returns the style value(s) - single value if one element, array if multiple.\n\t */\n\tstyle(properties: string | StyleProperties, value?: string): this | string | string[] | undefined {\n\t\t// Getting a style property\n\t\tif (typeof properties === 'string' && typeof value === 'undefined') {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn (this.collection[0] as HTMLElement).style.getPropertyValue(properties);\n\t\t\t}\n\t\t\tconst values: string[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push((element as HTMLElement).style.getPropertyValue(properties));\n\t\t\t}\n\t\t\treturn values;\n\t\t}\n\n\t\t// Setting style properties\n\t\tfor (const element of this.collection) {\n\t\t\tconst el = element as HTMLElement;\n\t\t\tif (typeof properties === 'string' && typeof value !== 'undefined') {\n\t\t\t\tel.style.setProperty(properties, value);\n\t\t\t} else if (typeof properties === 'object') {\n\t\t\t\tfor (const property in properties) {\n\t\t\t\t\tel.style.setProperty(property, String(properties[property]));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Animate the given `style` properties on all elements in the collection\n\t * with a given time duration\n\t *\n\t * @param style - JSON object with the key-value pairs of properties to animate\n\t * @param time - Time in milliseconds during which the properties will be animated\n\t * @returns Current instance\n\t */\n\tanimate(style: Record<string, number>, time: number): this {\n\t\tfor (let i = 0; i < this.collection.length; i++) {\n\t\t\tconst element = this.collection[i] as HTMLElement;\n\t\t\tfor (const property in style) {\n\t\t\t\tconst start = Date.now();\n\t\t\t\tlet initialValue: number;\n\n\t\t\t\tif (typeof element.style.getPropertyValue(property) !== 'undefined' && element.style.getPropertyValue(property) !== '') {\n\t\t\t\t\tinitialValue = parseFloat(element.style.getPropertyValue(property));\n\n\t\t\t\t\tconst timer = setInterval(() => {\n\t\t\t\t\t\tconst step = Math.min(1, (Date.now() - start) / time);\n\t\t\t\t\t\telement.style.setProperty(property, String(initialValue + step * (style[property] - initialValue)));\n\n\t\t\t\t\t\tif (step === 1) {\n\t\t\t\t\t\t\tclearInterval(timer);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 25);\n\t\t\t\t\telement.style.setProperty(property, String(initialValue));\n\t\t\t\t} else if (typeof (element as unknown as Record<string, number>)[property] !== 'undefined') {\n\t\t\t\t\tinitialValue = (element as unknown as Record<string, number>)[property];\n\n\t\t\t\t\tconst timer = setInterval(() => {\n\t\t\t\t\t\tconst step = Math.min(1, (Date.now() - start) / time);\n\t\t\t\t\t\t(element as unknown as Record<string, number>)[property] = initialValue + step * (style[property] - initialValue);\n\n\t\t\t\t\t\tif (step === 1) {\n\t\t\t\t\t\t\tclearInterval(timer);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 25);\n\t\t\t\t\t(element as unknown as Record<string, number>)[property] = initialValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Use a fade in animation on ALL elements in the collection\n\t *\n\t * @param time - Time duration for the animation\n\t * @param callback - Callback function to run once all animations are over\n\t * @returns Current instance\n\t */\n\tfadeIn(time: number = 400, callback?: () => void): this {\n\t\tlet completed = 0;\n\t\tconst total = this.collection.length;\n\n\t\tfor (const el of this.collection) {\n\t\t\tconst element = el as HTMLElement;\n\t\t\telement.style.opacity = '0';\n\n\t\t\tlet last = Date.now();\n\n\t\t\tconst tick = (): void => {\n\t\t\t\telement.style.opacity = String(parseFloat(element.style.opacity) + (Date.now() - last) / time);\n\t\t\t\tlast = Date.now();\n\n\t\t\t\tif (parseFloat(element.style.opacity) < 1) {\n\t\t\t\t\trequestAnimationFrame(tick);\n\t\t\t\t} else {\n\t\t\t\t\tcompleted++;\n\t\t\t\t\tif (completed === total && typeof callback === 'function') {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\ttick();\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Use a fade out animation on ALL elements in the collection\n\t *\n\t * @param time - Time duration for the animation\n\t * @param callback - Callback function to run once all animations are over\n\t * @returns Current instance\n\t */\n\tfadeOut(time: number = 400, callback?: () => void): this {\n\t\tlet completed = 0;\n\t\tconst total = this.collection.length;\n\n\t\tfor (const el of this.collection) {\n\t\t\tconst element = el as HTMLElement;\n\t\t\tlet last = Date.now();\n\n\t\t\tconst tick = (): void => {\n\t\t\t\telement.style.opacity = String(parseFloat(element.style.opacity) - (Date.now() - last) / time);\n\t\t\t\tlast = Date.now();\n\n\t\t\t\tif (parseFloat(element.style.opacity) > 0) {\n\t\t\t\t\trequestAnimationFrame(tick);\n\t\t\t\t} else {\n\t\t\t\t\tcompleted++;\n\t\t\t\t\tif (completed === total && typeof callback === 'function') {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\ttick();\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Check if ALL elements in the collection match a given selector\n\t *\n\t * @param selector - Selector to match\n\t * @returns Whether all elements match the selector\n\t */\n\tmatches(selector: string): boolean {\n\t\tif (this.length === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (const element of this.collection) {\n\t\t\tif (!element.matches(selector)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Remove all elements in the collection\n\t *\n\t * @returns Current instance\n\t */\n\tremove(): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.parentNode?.removeChild(element);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Replace ALL elements in the collection with a new element\n\t *\n\t * @param newElement - The replacement element or HTML string\n\t * @returns Current instance\n\t */\n\treplaceWith(newElement: string | Element): this {\n\t\tfor (const element of this.collection) {\n\t\t\tlet replaceElement: Element;\n\n\t\t\tif (typeof newElement === 'string') {\n\t\t\t\tconst div = document.createElement('div');\n\t\t\t\tdiv.innerHTML = newElement;\n\t\t\t\treplaceElement = div.firstChild as Element;\n\t\t\t} else {\n\t\t\t\treplaceElement = newElement.cloneNode(true) as Element;\n\t\t\t}\n\n\t\t\telement.parentElement?.replaceChild(replaceElement, element);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Reset every element in the collection (for form elements)\n\t *\n\t * @returns Current instance\n\t */\n\treset(): this {\n\t\tfor (const element of this.collection) {\n\t\t\tif ((element as HTMLFormElement).reset) {\n\t\t\t\t(element as HTMLFormElement).reset();\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get or set a property for elements in the collection\n\t *\n\t * @param property - Property name to set or get\n\t * @param value - Value to set the property to\n\t * @returns If no value is provided, returns the property value(s) - single value if one element, array if multiple.\n\t */\n\tproperty<T = unknown>(property: string, value?: T): this | T | T[] | undefined {\n\t\tif (typeof value !== 'undefined') {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\t(element as unknown as Record<string, T>)[property] = value;\n\t\t\t}\n\t\t\treturn this;\n\t\t} else {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn (this.collection[0] as unknown as Record<string, T>)[property];\n\t\t\t}\n\t\t\tconst values: T[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push((element as unknown as Record<string, T>)[property]);\n\t\t\t}\n\t\t\treturn values;\n\t\t}\n\t}\n}\n\n/**\n * Simple wrapper function to use the DOM library\n *\n * @param selector - Selector or DOM element to use\n * @returns DOM instance\n */\nexport function $_(selector: DOMSelector): DOM {\n\treturn new DOM(selector);\n}\n\n/**\n * Utility function to attach the 'load' listener to the window\n *\n * @param callback - Callback function to run when the window is ready\n */\nexport function $_ready(callback: EventListener): void {\n\twindow.addEventListener('load', callback);\n}\n\n",
|
|
6
|
+
"/**\n * ==============================\n * DOM\n * ==============================\n */\n\n/**\n * Type for elements that can be used as a selector\n */\nexport type DOMSelector = string | Element | Element[] | NodeList | NodeListOf<Element> | HTMLElement[] | DOM | null;\n\n/**\n * Type for style properties object\n */\nexport type StyleProperties = Record<string, string | number>;\n\n/**\n * Type for offset object\n */\nexport interface DOMOffset {\n\ttop: number;\n\tleft: number;\n}\n\n/**\n * Event callback type\n */\nexport type EventCallback = (event: Event) => void;\n\n/**\n * Element callback type\n */\nexport type ElementCallback = (element: Element) => void;\n\n/**\n * Simple DOM manipulation functions\n */\nexport class DOM {\n\tpublic collection: Element[] | NodeListOf<Element>;\n\tpublic length: number;\n\tpublic _selector: DOMSelector;\n\n\t/**\n\t * Create a new DOM object\n\t *\n\t * @param selector - Selector or DOM element to use\n\t */\n\tconstructor(selector: DOMSelector) {\n\t\tif (selector === null) {\n\t\t\tthis.collection = [];\n\t\t\tthis.length = 0;\n\t\t\tthis._selector = null;\n\t\t\treturn;\n\t\t}\n\n\t\tif (typeof selector === 'string') {\n\t\t\tthis.collection = document.querySelectorAll(selector);\n\t\t\tthis.length = this.collection.length;\n\t\t\tthis._selector = selector;\n\t\t} else if (selector instanceof NodeList) {\n\t\t\tthis.collection = selector as NodeListOf<Element>;\n\t\t\tthis.length = selector.length;\n\t\t\tthis._selector = selector;\n\t\t} else if (selector instanceof DOM) {\n\t\t\tthis.collection = selector.collection;\n\t\t\tthis.length = this.collection.length;\n\t\t\tthis._selector = selector._selector;\n\t\t} else if (selector instanceof HTMLElement) {\n\t\t\tthis.collection = [selector];\n\t\t\tthis.length = this.collection.length;\n\t\t\tthis._selector = selector;\n\t\t} else if (Array.isArray(selector)) {\n\t\t\tthis.collection = selector;\n\t\t\tthis.length = selector.length;\n\t\t\tthis._selector = selector;\n\t\t} else {\n\t\t\tthis.collection = [];\n\t\t\tthis.length = 0;\n\t\t\tthis._selector = null;\n\t\t}\n\t}\n\n\t/**\n\t * Hide elements by setting their `display` property to 'none'.\n\t *\n\t * @returns Current instance\n\t */\n\thide(): this {\n\t\tfor (const element of this.collection) {\n\t\t\t(element as HTMLElement).style.display = 'none';\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Show elements by setting their `display` property to the given value.\n\t *\n\t * @param display - Display property to set\n\t * @returns Current instance\n\t */\n\tshow(display: string = 'block'): this {\n\t\tfor (const element of this.collection) {\n\t\t\t(element as HTMLElement).style.display = display;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a class to the classList object\n\t *\n\t * @param newClass - Class name to add\n\t * @returns Current instance\n\t */\n\taddClass(newClass: string): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.classList.add(newClass);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Remove a given class from the classList object\n\t *\n\t * @param oldClass - Class to remove. If it's empty or null, all classes will be removed\n\t * @returns Current instance\n\t */\n\tremoveClass(oldClass: string | null = null): this {\n\t\tif (oldClass !== null) {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\telement.classList.remove(oldClass);\n\t\t\t}\n\t\t} else {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\twhile (element.classList.length > 0) {\n\t\t\t\t\tconst className = element.classList.item(0);\n\t\t\t\t\tif (className) {\n\t\t\t\t\t\telement.classList.remove(className);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Toggle between two classes\n\t *\n\t * @param classes - Space separated class names\n\t * @returns Current instance\n\t */\n\ttoggleClass(classes: string): this {\n\t\tconst classList = classes.split(' ');\n\t\tfor (const element of this.collection) {\n\t\t\tfor (const className of classList) {\n\t\t\t\telement.classList.toggle(className);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Check if ALL elements in the collection have the given class\n\t *\n\t * @param classToCheck - Class name to check for\n\t * @returns Whether all elements have the class\n\t */\n\thasClass(classToCheck: string): boolean {\n\t\tfor (const element of this.collection) {\n\t\t\tif (!element.classList.contains(classToCheck)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t/**\n\t * Get or set the value from the elements\n\t *\n\t * @param value - Value to set to the elements\n\t * @returns If a value is provided, returns current instance. Otherwise returns the value(s) - single value if one element, array if multiple.\n\t */\n\tvalue(value?: string): this | string | string[] | undefined {\n\t\tif (typeof value !== 'undefined') {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\t(element as HTMLInputElement).value = value;\n\t\t\t}\n\t\t\treturn this;\n\t\t} else {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn (this.collection[0] as HTMLInputElement).value;\n\t\t\t}\n\t\t\tconst values: string[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push((element as HTMLInputElement).value);\n\t\t\t}\n\t\t\treturn values;\n\t\t}\n\t}\n\n\t/**\n\t * Focus on the first element matching the selector\n\t *\n\t * @returns Current instance\n\t */\n\tfocus(): this {\n\t\tif (this.length > 0) {\n\t\t\t(this.collection[0] as HTMLElement).focus();\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback for the 'click' event on every element matching the selector\n\t *\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\tclick(callback: EventCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.addEventListener('click', callback, false);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback for the 'keyup' event on every element matching the selector\n\t *\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\tkeyup(callback: EventCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.addEventListener('keyup', callback, false);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback for the 'keydown' event on every element matching the selector\n\t *\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\tkeydown(callback: EventCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.addEventListener('keydown', callback, false);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback for the 'submit' event on every element matching the selector\n\t *\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\tsubmit(callback: EventCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.addEventListener('submit', callback, false);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback for the 'change' event on every element matching the selector\n\t *\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\tchange(callback: EventCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.addEventListener('change', callback, false);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback for the 'scroll' event on every element matching the selector\n\t *\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\tscroll(callback: EventCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.addEventListener('scroll', callback, false);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback function to a given event\n\t *\n\t * @param event - Event to add the listener to\n\t * @param target - Target element on which to detect the event or callback function\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\ton(event: string, target: string | EventCallback, callback?: EventCallback): this {\n\t\tconst events = event.split(' ');\n\t\tfor (const element of this.collection) {\n\t\t\tfor (const evt of events) {\n\t\t\t\t// Check if no target was defined and just a function was provided\n\t\t\t\tif (typeof target === 'function') {\n\t\t\t\t\telement.addEventListener(evt, target, false);\n\t\t\t\t} else if (typeof target === 'string' && typeof callback === 'function') {\n\t\t\t\t\telement.addEventListener(evt, (e: Event) => {\n\t\t\t\t\t\tif (!e.target) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst domInstance = new DOM(e.target as Element);\n\t\t\t\t\t\tconst targetElement = domInstance.closestParent(target, this._selector as string);\n\n\t\t\t\t\t\tif (targetElement.exists()) {\n\t\t\t\t\t\t\tcallback.call(targetElement.get(0), e);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Filter from the current collection to only those matching the new selector\n\t * Applies to ALL elements in the collection\n\t *\n\t * @param selector - Selector to filter the collection with\n\t * @returns New DOM instance with the filtered collection\n\t */\n\tfilter(selector: string): DOM {\n\t\tconst filtered: HTMLElement[] = [];\n\t\tfor (const element of this.collection) {\n\t\t\tif (element.matches(selector)) {\n\t\t\t\tfiltered.push(element as HTMLElement);\n\t\t\t}\n\t\t}\n\t\treturn new DOM(filtered.length > 0 ? filtered : null);\n\t}\n\n\t/**\n\t * Check if there are any elements that match the selector.\n\t *\n\t * @returns Whether elements matching the selector existed or not\n\t */\n\texists(): boolean {\n\t\treturn this.length > 0;\n\t}\n\n\t/**\n\t * Get or set a `data` property\n\t *\n\t * @param name - Name of the data property\n\t * @param value - Value of the property\n\t * @returns If no value is provided, returns the value(s) - single value if one element, array if multiple.\n\t */\n\tdata(name: string, value?: string): this | string | string[] | undefined {\n\t\tif (typeof value !== 'undefined') {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\t(element as HTMLElement).dataset[name] = value;\n\t\t\t}\n\t\t\treturn this;\n\t\t} else {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn (this.collection[0] as HTMLElement).dataset[name];\n\t\t\t}\n\t\t\tconst values: (string | undefined)[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push((element as HTMLElement).dataset[name]);\n\t\t\t}\n\t\t\treturn values as string[];\n\t\t}\n\t}\n\n\t/**\n\t * Remove a data property from all the elements on the collection given its name.\n\t *\n\t * @param name - Name of the data property to remove\n\t * @returns Current instance\n\t */\n\tremoveData(name: string): this {\n\t\tfor (const element of this.collection) {\n\t\t\tdelete (element as HTMLElement).dataset[name];\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get or set the text of elements\n\t *\n\t * @param value - Value to set the text to\n\t * @returns If no value is provided, returns the text(s) - single value if one element, array if multiple.\n\t */\n\ttext(value?: string): this | string | (string | null)[] | null | undefined {\n\t\tif (typeof value !== 'undefined') {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\telement.textContent = value;\n\t\t\t}\n\t\t\treturn this;\n\t\t} else {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn this.collection[0].textContent;\n\t\t\t}\n\t\t\tconst values: (string | null)[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push(element.textContent);\n\t\t\t}\n\t\t\treturn values;\n\t\t}\n\t}\n\n\t/**\n\t * Get or set the inner HTML of elements\n\t *\n\t * @param value - Value to set the HTML to\n\t * @returns If no value is provided, returns the HTML(s) - single value if one element, array if multiple.\n\t */\n\thtml(value?: string): this | string | string[] | undefined {\n\t\tif (typeof value !== 'undefined') {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\telement.innerHTML = value;\n\t\t\t}\n\t\t\treturn this;\n\t\t} else {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn this.collection[0].innerHTML;\n\t\t\t}\n\t\t\tconst values: string[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push(element.innerHTML);\n\t\t\t}\n\t\t\treturn values;\n\t\t}\n\t}\n\n\t/**\n\t * Append an element to ALL elements in the collection\n\t *\n\t * @param element - String representation of the element to add or an Element\n\t * @returns Current instance\n\t */\n\tappend(element: string | Element): this {\n\t\tlet isFirstElement = true;\n\t\tfor (const el of this.collection) {\n\t\t\tif (typeof element === 'string') {\n\t\t\t\tconst div = document.createElement('div');\n\t\t\t\tdiv.innerHTML = element.trim();\n\t\t\t\tif (div.firstChild) {\n\t\t\t\t\tel.appendChild(div.firstChild.cloneNode(true));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// For the first target, append the original element to preserve\n\t\t\t\t// custom element state/props. For subsequent targets, clone.\n\t\t\t\t// Note: Cloned custom elements will have their constructor re-run,\n\t\t\t\t// which may reset state/props to defaults.\n\t\t\t\tif (isFirstElement) {\n\t\t\t\t\tel.appendChild(element);\n\t\t\t\t\tisFirstElement = false;\n\t\t\t\t} else {\n\t\t\t\t\tel.appendChild(element.cloneNode(true));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Prepend an element to ALL elements in the collection\n\t *\n\t * @param element - String representation of the element to add or an Element\n\t * @returns Current instance\n\t */\n\tprepend(element: string | Element): this {\n\t\tlet isFirstElement = true;\n\n\t\tfor (const el of this.collection) {\n\t\t\tif (typeof element === 'string') {\n\t\t\t\tconst div = document.createElement('div');\n\t\t\t\tdiv.innerHTML = element.trim();\n\t\t\t\tif (div.firstChild) {\n\t\t\t\t\tif (el.childNodes.length > 0) {\n\t\t\t\t\t\tel.insertBefore(div.firstChild.cloneNode(true), el.childNodes[0]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tel.appendChild(div.firstChild.cloneNode(true));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// For the first target, use the original element to preserve\n\t\t\t\t// custom element state/props. For subsequent targets, clone.\n\t\t\t\t// Note: Cloned custom elements will have their constructor re-run,\n\t\t\t\t// which may reset state/props to defaults.\n\t\t\t\tconst nodeToInsert = isFirstElement ? element : element.cloneNode(true);\n\t\t\t\tif (isFirstElement) {\n\t\t\t\t\tisFirstElement = false;\n\t\t\t\t}\n\n\t\t\t\tif (el.childNodes.length > 0) {\n\t\t\t\t\tel.insertBefore(nodeToInsert, el.childNodes[0]);\n\t\t\t\t} else {\n\t\t\t\t\tel.appendChild(nodeToInsert);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Iterate over the collection of elements matching the selector\n\t *\n\t * @param callback - Callback to run for every element\n\t * @returns Current instance\n\t */\n\teach(callback: ElementCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\tcallback(element);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get an element from the collection given its index\n\t *\n\t * @param index - Index of the element to retrieve\n\t * @returns HTML Element in the position indicated by the index\n\t */\n\tget(index: number): Element | undefined {\n\t\treturn this.collection[index];\n\t}\n\n\t/**\n\t * Get the first element in the collection\n\t *\n\t * @returns DOM instance with the first element\n\t */\n\tfirst(): DOM {\n\t\tif (this.length > 0) {\n\t\t\treturn new DOM(this.collection[0] as HTMLElement);\n\t\t}\n\t\treturn new DOM(null);\n\t}\n\n\t/**\n\t * Get the last element in the collection\n\t *\n\t * @returns DOM instance with the last element\n\t */\n\tlast(): DOM {\n\t\tif (this.length > 0) {\n\t\t\treturn new DOM(this.collection[this.collection.length - 1] as HTMLElement);\n\t\t}\n\t\treturn new DOM(null);\n\t}\n\n\t/**\n\t * Check if any element in the collection is visible by checking their\n\t * display, offsetWidth and offsetHeight properties\n\t *\n\t * @returns Whether any element is visible\n\t */\n\tisVisible(): boolean {\n\t\tfor (const element of this.collection) {\n\t\t\tconst el = element as HTMLElement;\n\t\t\tif (el.style.display !== 'none' && el.offsetWidth > 0 && el.offsetHeight > 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Get the parents of ALL elements in the collection\n\t *\n\t * @returns DOM instance of the parent elements\n\t */\n\tparent(): DOM {\n\t\tconst parents: HTMLElement[] = [];\n\t\tfor (const element of this.collection) {\n\t\t\tif (element.parentElement && !parents.includes(element.parentElement)) {\n\t\t\t\tparents.push(element.parentElement);\n\t\t\t}\n\t\t}\n\t\treturn new DOM(parents.length > 0 ? parents : null);\n\t}\n\n\t/**\n\t * Find elements that match the given selector in ALL elements of the collection\n\t *\n\t * @param selector - Selector to find elements with\n\t * @returns DOM instance with found elements\n\t */\n\tfind(selector: string): DOM {\n\t\tconst found: HTMLElement[] = [];\n\t\tfor (const element of this.collection) {\n\t\t\tconst results = element.querySelectorAll(selector);\n\t\t\tfor (const result of results) {\n\t\t\t\tif (!found.includes(result as HTMLElement)) {\n\t\t\t\t\tfound.push(result as HTMLElement);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn new DOM(found.length > 0 ? found : null);\n\t}\n\n\t/**\n\t * Get the top and left offsets of elements in the collection\n\t *\n\t * @returns Single offset object if one element, array of offset objects if multiple\n\t */\n\toffset(): DOMOffset | DOMOffset[] | undefined {\n\t\tif (this.length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (this.length === 1) {\n\t\t\tconst rect = this.collection[0].getBoundingClientRect();\n\t\t\treturn {\n\t\t\t\ttop: rect.top + document.body.scrollTop,\n\t\t\t\tleft: rect.left + document.body.scrollLeft\n\t\t\t};\n\t\t}\n\t\tconst offsets: DOMOffset[] = [];\n\t\tfor (const element of this.collection) {\n\t\t\tconst rect = element.getBoundingClientRect();\n\t\t\toffsets.push({\n\t\t\t\ttop: rect.top + document.body.scrollTop,\n\t\t\t\tleft: rect.left + document.body.scrollLeft\n\t\t\t});\n\t\t}\n\t\treturn offsets;\n\t}\n\n\t/**\n\t * Find the closest element matching the given selector for ALL elements.\n\t * This bubbles up from the initial object and then follows to its parents.\n\t *\n\t * @param selector - Selector to match the closest element with\n\t * @returns DOM instance with the closest HTML elements matching the selector\n\t */\n\tclosest(selector: string): DOM {\n\t\tconst found: HTMLElement[] = [];\n\t\tfor (const element of this.collection) {\n\t\t\tconst closest = element.closest(selector) as HTMLElement | null;\n\t\t\tif (closest && !found.includes(closest)) {\n\t\t\t\tfound.push(closest);\n\t\t\t}\n\t\t}\n\t\treturn new DOM(found.length > 0 ? found : null);\n\t}\n\n\t/**\n\t * Find the closest parent element matching the given selector. This bubbles up\n\t * from the initial object and then follows to its parents.\n\t *\n\t * @param selector - Selector to match the closest element with\n\t * @param limit - Selector for limit element. If the limit is reached and no element matching the provided selector was found, it will cause an early return.\n\t * @returns DOM instance with the closest HTML element matching the selector\n\t */\n\tclosestParent(selector: string, limit?: string): DOM {\n\t\tif (this.length === 0) {\n\t\t\treturn new DOM(null);\n\t\t}\n\n\t\tlet current: Element | null = this.collection[0];\n\t\twhile (current) {\n\t\t\t// Check if the current element matches the selector\n\t\t\tif (current.matches(selector)) {\n\t\t\t\treturn new DOM(current as HTMLElement);\n\t\t\t}\n\n\t\t\t// Check if we hit the limit\n\t\t\tif (typeof limit === 'string' && current.matches(limit)) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcurrent = current.parentElement;\n\t\t}\n\t\treturn new DOM(null);\n\t}\n\n\t/**\n\t * Get or set the value of a given attribute\n\t *\n\t * @param attribute - Attribute's name\n\t * @param value - Value to set the attribute to\n\t * @returns If no value is provided, returns the attribute value(s) - single value if one element, array if multiple.\n\t */\n\tattribute(attribute: string, value?: string | number): this | string | (string | null)[] | null | undefined {\n\t\tif (typeof value !== 'undefined') {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\telement.setAttribute(attribute, String(value));\n\t\t\t}\n\t\t\treturn this;\n\t\t} else {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn this.collection[0].getAttribute(attribute);\n\t\t\t}\n\t\t\tconst values: (string | null)[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push(element.getAttribute(attribute));\n\t\t\t}\n\t\t\treturn values;\n\t\t}\n\t}\n\n\t/**\n\t * Check whether ALL elements have an attribute\n\t *\n\t * @param attribute - The name of the attribute to check existence for\n\t * @returns Whether all elements have the attribute\n\t */\n\thasAttribute(attribute: string): boolean {\n\t\tfor (const element of this.collection) {\n\t\t\tif (!element.hasAttribute(attribute)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t/**\n\t * Insert content after all elements in the collection\n\t *\n\t * @param content - String representation of the content to add\n\t * @returns Current instance\n\t */\n\tafter(content: string): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.insertAdjacentHTML('afterend', content);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Insert content before all elements in the collection\n\t *\n\t * @param content - String representation of the content to add\n\t * @returns Current instance\n\t */\n\tbefore(content: string): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.insertAdjacentHTML('beforebegin', content);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get or modify the `style` properties of the elements matching the selector\n\t *\n\t * @param properties - Properties to change or get. Can be either an individual property or a JSON object with key-value pairs\n\t * @param value - Value to set the property to when only changing one property\n\t * @returns If a property is given but not a value for it, returns the style value(s) - single value if one element, array if multiple.\n\t */\n\tstyle(properties: string | StyleProperties, value?: string): this | string | string[] | undefined {\n\t\t// Getting a style property\n\t\tif (typeof properties === 'string' && typeof value === 'undefined') {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn (this.collection[0] as HTMLElement).style.getPropertyValue(properties);\n\t\t\t}\n\t\t\tconst values: string[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push((element as HTMLElement).style.getPropertyValue(properties));\n\t\t\t}\n\t\t\treturn values;\n\t\t}\n\n\t\t// Setting style properties\n\t\tfor (const element of this.collection) {\n\t\t\tconst el = element as HTMLElement;\n\t\t\tif (typeof properties === 'string' && typeof value !== 'undefined') {\n\t\t\t\tel.style.setProperty(properties, value);\n\t\t\t} else if (typeof properties === 'object') {\n\t\t\t\tfor (const property in properties) {\n\t\t\t\t\tel.style.setProperty(property, String(properties[property]));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Animate the given `style` properties on all elements in the collection\n\t * with a given time duration\n\t *\n\t * @param style - JSON object with the key-value pairs of properties to animate\n\t * @param time - Time in milliseconds during which the properties will be animated\n\t * @returns Current instance\n\t */\n\tanimate(style: Record<string, number>, time: number): this {\n\t\tfor (let i = 0; i < this.collection.length; i++) {\n\t\t\tconst element = this.collection[i] as HTMLElement;\n\t\t\tfor (const property in style) {\n\t\t\t\tconst start = Date.now();\n\t\t\t\tlet initialValue: number;\n\n\t\t\t\tif (typeof element.style.getPropertyValue(property) !== 'undefined' && element.style.getPropertyValue(property) !== '') {\n\t\t\t\t\tinitialValue = parseFloat(element.style.getPropertyValue(property));\n\n\t\t\t\t\tconst timer = setInterval(() => {\n\t\t\t\t\t\tconst step = Math.min(1, (Date.now() - start) / time);\n\t\t\t\t\t\telement.style.setProperty(property, String(initialValue + step * (style[property] - initialValue)));\n\n\t\t\t\t\t\tif (step === 1) {\n\t\t\t\t\t\t\tclearInterval(timer);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 25);\n\t\t\t\t\telement.style.setProperty(property, String(initialValue));\n\t\t\t\t} else if (typeof (element as unknown as Record<string, number>)[property] !== 'undefined') {\n\t\t\t\t\tinitialValue = (element as unknown as Record<string, number>)[property];\n\n\t\t\t\t\tconst timer = setInterval(() => {\n\t\t\t\t\t\tconst step = Math.min(1, (Date.now() - start) / time);\n\t\t\t\t\t\t(element as unknown as Record<string, number>)[property] = initialValue + step * (style[property] - initialValue);\n\n\t\t\t\t\t\tif (step === 1) {\n\t\t\t\t\t\t\tclearInterval(timer);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 25);\n\t\t\t\t\t(element as unknown as Record<string, number>)[property] = initialValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Use a fade in animation on ALL elements in the collection\n\t *\n\t * @param time - Time duration for the animation\n\t * @param callback - Callback function to run once all animations are over\n\t * @returns Current instance\n\t */\n\tfadeIn(time: number = 400, callback?: () => void): this {\n\t\tlet completed = 0;\n\t\tconst total = this.collection.length;\n\n\t\tfor (const el of this.collection) {\n\t\t\tconst element = el as HTMLElement;\n\t\t\telement.style.opacity = '0';\n\n\t\t\tlet last = Date.now();\n\n\t\t\tconst tick = (): void => {\n\t\t\t\telement.style.opacity = String(parseFloat(element.style.opacity) + (Date.now() - last) / time);\n\t\t\t\tlast = Date.now();\n\n\t\t\t\tif (parseFloat(element.style.opacity) < 1) {\n\t\t\t\t\trequestAnimationFrame(tick);\n\t\t\t\t} else {\n\t\t\t\t\tcompleted++;\n\t\t\t\t\tif (completed === total && typeof callback === 'function') {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\ttick();\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Use a fade out animation on ALL elements in the collection\n\t *\n\t * @param time - Time duration for the animation\n\t * @param callback - Callback function to run once all animations are over\n\t * @returns Current instance\n\t */\n\tfadeOut(time: number = 400, callback?: () => void): this {\n\t\tlet completed = 0;\n\t\tconst total = this.collection.length;\n\n\t\tfor (const el of this.collection) {\n\t\t\tconst element = el as HTMLElement;\n\t\t\tlet last = Date.now();\n\n\t\t\tconst tick = (): void => {\n\t\t\t\telement.style.opacity = String(parseFloat(element.style.opacity) - (Date.now() - last) / time);\n\t\t\t\tlast = Date.now();\n\n\t\t\t\tif (parseFloat(element.style.opacity) > 0) {\n\t\t\t\t\trequestAnimationFrame(tick);\n\t\t\t\t} else {\n\t\t\t\t\tcompleted++;\n\t\t\t\t\tif (completed === total && typeof callback === 'function') {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\ttick();\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Check if ALL elements in the collection match a given selector\n\t *\n\t * @param selector - Selector to match\n\t * @returns Whether all elements match the selector\n\t */\n\tmatches(selector: string): boolean {\n\t\tif (this.length === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (const element of this.collection) {\n\t\t\tif (!element.matches(selector)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Remove all elements in the collection\n\t *\n\t * @returns Current instance\n\t */\n\tremove(): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.parentNode?.removeChild(element);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Replace ALL elements in the collection with a new element\n\t *\n\t * @param newElement - The replacement element or HTML string\n\t * @returns Current instance\n\t */\n\treplaceWith(newElement: string | Element): this {\n\t\tfor (const element of this.collection) {\n\t\t\tlet replaceElement: Element;\n\n\t\t\tif (typeof newElement === 'string') {\n\t\t\t\tconst div = document.createElement('div');\n\t\t\t\tdiv.innerHTML = newElement;\n\t\t\t\treplaceElement = div.firstChild as Element;\n\t\t\t} else {\n\t\t\t\treplaceElement = newElement.cloneNode(true) as Element;\n\t\t\t}\n\n\t\t\telement.parentElement?.replaceChild(replaceElement, element);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Reset every element in the collection (for form elements)\n\t *\n\t * @returns Current instance\n\t */\n\treset(): this {\n\t\tfor (const element of this.collection) {\n\t\t\tif ((element as HTMLFormElement).reset) {\n\t\t\t\t(element as HTMLFormElement).reset();\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get or set a property for elements in the collection\n\t *\n\t * @param property - Property name to set or get\n\t * @param value - Value to set the property to\n\t * @returns If no value is provided, returns the property value(s) - single value if one element, array if multiple.\n\t */\n\tproperty<T = unknown>(property: string, value?: T): this | T | T[] | undefined {\n\t\tif (typeof value !== 'undefined') {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\t(element as unknown as Record<string, T>)[property] = value;\n\t\t\t}\n\t\t\treturn this;\n\t\t} else {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn (this.collection[0] as unknown as Record<string, T>)[property];\n\t\t\t}\n\t\t\tconst values: T[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push((element as unknown as Record<string, T>)[property]);\n\t\t\t}\n\t\t\treturn values;\n\t\t}\n\t}\n}\n\n/**\n * Simple wrapper function to use the DOM library\n *\n * @param selector - Selector or DOM element to use\n * @returns DOM instance\n */\nexport function $_(selector: DOMSelector): DOM {\n\treturn new DOM(selector);\n}\n\n/**\n * Utility function to attach the 'load' listener to the window\n *\n * @param callback - Callback function to run when the window is ready\n */\nexport function $_ready(callback: EventListener): void {\n\twindow.addEventListener('load', callback);\n}\n\n",
|
|
7
7
|
"/**\n * ==============================\n * Request\n * ==============================\n */\n\n/**\n * Type for request data object\n */\nexport type RequestData = Record<string, string | number | boolean>;\n\n/**\n * Type for request options\n */\nexport interface RequestOptions extends Omit<RequestInit, 'headers'> {\n\theaders?: Record<string, string>;\n}\n\n/**\n * Simple Wrapper for the fetch API, providing simple functions to handle requests\n */\nexport class Request {\n\t/**\n\t * Serialize an object of data into a URI encoded format\n\t *\n\t * @param data - Key-value object of data to serialize\n\t * @returns Serialized Data\n\t */\n\tstatic serialize(data: RequestData): string {\n\t\treturn Object.keys(data).map((key) => {\n\t\t\treturn encodeURIComponent(key) + '=' + encodeURIComponent(String(data[key]));\n\t\t}).join('&');\n\t}\n\n\t/**\n\t * Make a GET request to a given URL with the provided data parameters\n\t * and an optional configuration object for the request.\n\t *\n\t * @param url - URL to make the request to\n\t * @param data - Parameters to send in the URL, represented as a JSON object\n\t * @param options - Options object for configurations you want to use in the fetch request\n\t * @returns Resolves to the response of the request\n\t */\n\tstatic get(url: string, data: RequestData = {}, options: RequestOptions = {}): Promise<Response> {\n\t\tconst query = Request.serialize(data);\n\n\t\t// Check if there is actually any data parameters and join them to the\n\t\t// url as query parameters\n\t\tif (query !== '') {\n\t\t\turl = `${url}?${query}`;\n\t\t}\n\n\t\treturn fetch(url, options as RequestInit);\n\t}\n\n\t/**\n\t * Make a POST request to a given URL with the provided data and an optional\n\t * configuration object for the request.\n\t *\n\t * @param url - URL to make the request\n\t * @param data - Set of data to send in the URL, represented as a JSON object\n\t * @param options - Options object for configurations you want to use in the fetch request\n\t * @returns Resolves to the response of the request\n\t */\n\tstatic post(url: string, data: RequestData, options: RequestOptions = {}): Promise<Response> {\n\t\tlet formData: FormData | string;\n\n\t\tconst contentType = options.headers?.['Content-Type'];\n\t\tif (contentType !== undefined) {\n\t\t\tif (contentType === 'multipart/form-data') {\n\t\t\t\tformData = new FormData();\n\t\t\t\tfor (const value in data) {\n\t\t\t\t\tformData.append(value, String(data[value]));\n\t\t\t\t}\n\t\t\t} else if (contentType === 'application/json') {\n\t\t\t\tformData = JSON.stringify(data);\n\t\t\t} else {\n\t\t\t\tformData = Request.serialize(data);\n\t\t\t}\n\t\t} else {\n\t\t\tformData = Request.serialize(data);\n\t\t}\n\n\t\tconst headers: Record<string, string> = {\n\t\t\t'Content-Type': 'application/x-www-form-urlencoded',\n\t\t\t...options.headers\n\t\t};\n\n\t\t// Delete the explicit multipart/form-data header to allow boundary automatic filling\n\t\tif (headers['Content-Type'] === 'multipart/form-data') {\n\t\t\tdelete headers['Content-Type'];\n\t\t}\n\n\t\tconst props: RequestInit = {\n\t\t\t...options,\n\t\t\tmethod: 'POST',\n\t\t\theaders,\n\t\t\tbody: formData\n\t\t};\n\n\t\treturn fetch(url, props);\n\t}\n\n\t/**\n\t * Make a PUT request to a given URL with the provided data and an optional\n\t * configuration object for the request.\n\t *\n\t * @param url - URL to make the request\n\t * @param data - Set of data to send in the URL, represented as a JSON object\n\t * @param options - Options object for configurations you want to use in the fetch request\n\t * @returns Resolves to the response of the request\n\t */\n\tstatic put(url: string, data: RequestData, options: RequestOptions = {}): Promise<Response> {\n\t\treturn Request.post(url, data, Object.assign({}, { method: 'PUT' }, options));\n\t}\n\n\t/**\n\t * Make a DELETE request to a given URL with the provided data and an optional\n\t * configuration object for the request.\n\t *\n\t * @param url - URL to make the request\n\t * @param data - Parameters to send in the URL, represented as a JSON object\n\t * @param options - Options object for configurations you want to use in the fetch request\n\t * @returns Resolves to the response of the request\n\t */\n\tstatic delete(url: string, data: RequestData, options: RequestOptions = {}): Promise<Response> {\n\t\treturn Request.get(url, data, Object.assign({}, { method: 'DELETE' }, options));\n\t}\n\n\t/**\n\t * Request a JSON object from a given URL through a GET request\n\t *\n\t * @param url - URL to make the request to\n\t * @param data - Parameters to send in the URL, represented as a JSON object\n\t * @param options - Options object for configurations you want to use in the fetch request\n\t * @returns Resolves to the json object obtained from the request response\n\t */\n\tstatic json<T = unknown>(url: string, data: RequestData = {}, options: RequestOptions = {}): Promise<T> {\n\t\treturn Request.get(url, data, options).then((response) => {\n\t\t\treturn response.json() as Promise<T>;\n\t\t});\n\t}\n\n\t/**\n\t * Request a Blob from a given URL through a GET request\n\t *\n\t * @param url - URL to make the request to\n\t * @param data - Parameters to send in the URL, represented as a JSON object\n\t * @param options - Options object for configurations you want to use in the fetch request\n\t * @returns Resolves to the blob obtained from the request response\n\t */\n\tstatic blob(url: string, data: RequestData = {}, options: RequestOptions = {}): Promise<Blob> {\n\t\treturn Request.get(url, data, options).then((response) => {\n\t\t\treturn response.blob();\n\t\t});\n\t}\n}\n\n",
|
|
8
8
|
"/**\n * ==============================\n * File System\n * ==============================\n */\n\nimport { Request, RequestOptions } from './Request';\n\n/**\n * File read type options\n */\nexport type FileReadType = 'text' | 'base64' | 'buffer';\n\n/**\n * File read result type based on read type\n */\nexport interface FileReadResult {\n\tevent: ProgressEvent<FileReader>;\n\tcontent: string | ArrayBuffer | null;\n}\n\n/**\n * A simple class wrapper for the File and FileReader web API, while this class\n * doesn't actually provide access to the host file system, it does provide useful\n * utilities for form file inputs and remote content loading.\n */\nexport class FileSystem {\n\t/**\n\t * Read a file from a remote location given a URL. This function will fetch\n\t * the file blob using the Request class and then use the read() function\n\t * to read the blob in the format required.\n\t *\n\t * @param url - URL to fetch the file from\n\t * @param type - Type of data to be read, values can be 'text', 'base64' and 'buffer'\n\t * @param props - Props to send to the Request object\n\t * @returns Content of the file. The format depends on the type parameter used.\n\t */\n\tstatic readRemote(url: string, type: FileReadType = 'base64', props: RequestOptions = {}): Promise<FileReadResult> {\n\t\treturn Request.blob(url, {}, props).then((file) => {\n\t\t\treturn FileSystem.read(file, type);\n\t\t});\n\t}\n\n\t/**\n\t * Read a given File or Blob object.\n\t *\n\t * @param file - File to read\n\t * @param type - Type of data to be read, values can be 'text', 'base64' and 'buffer'\n\t * @returns Promise that resolves to the load event and content of the file\n\t */\n\tstatic read(file: File | Blob, type: FileReadType = 'text'): Promise<FileReadResult> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst reader = new FileReader();\n\n\t\t\treader.onload = (event: ProgressEvent<FileReader>) => {\n\t\t\t\t// Pass down the event object and the content\n\t\t\t\tresolve({\n\t\t\t\t\tevent,\n\t\t\t\t\tcontent: event.target?.result ?? null\n\t\t\t\t});\n\t\t\t};\n\n\t\t\treader.onerror = (error) => {\n\t\t\t\treject(error);\n\t\t\t};\n\n\t\t\tif (type === 'base64') {\n\t\t\t\treader.readAsDataURL(file);\n\t\t\t} else if (type === 'buffer') {\n\t\t\t\treader.readAsArrayBuffer(file);\n\t\t\t} else {\n\t\t\t\treader.readAsText(file, 'UTF-8');\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Create a new File, this uses the File API and will not actually create\n\t * a file in the user's file system, however using it with other features,\n\t * that may be possible\n\t *\n\t * @param name - Name of the file (Including extension)\n\t * @param content - Content to save in the file\n\t * @param type - Mime Type for the file\n\t * @returns Promise resolving to the created File\n\t */\n\tstatic create(name: string, content: BlobPart, type: string = 'text/plain'): Promise<File> {\n\t\treturn Promise.resolve(new File([content], name, { type }));\n\t}\n\n\t/**\n\t * Returns the extension of a file given its file name.\n\t *\n\t * @param name - Name or full path of the file\n\t * @returns File extension without the leading dot (.)\n\t */\n\tstatic extension(name: string): string {\n\t\treturn name.split('.').pop() ?? '';\n\t}\n\n\t/**\n\t * Check if a file is an image by its extension.\n\t *\n\t * @param name - Name or full path of the file\n\t * @returns Whether the file is an image\n\t */\n\tstatic isImage(name: string): boolean {\n\t\tconst extensions = ['jpg', 'jpeg', 'png', 'gif', 'svg', 'webp', 'bmp'];\n\t\treturn extensions.indexOf(FileSystem.extension(name).toLowerCase()) > -1;\n\t}\n}\n\n",
|
|
9
9
|
"/**\n * ==============================\n * Form\n * ==============================\n */\n\nimport { $_ } from './DOM';\n\n/**\n * Form data object type\n */\nexport type FormData = Record<string, string | File | FileList | undefined>;\n\n/**\n * Utility class that provides simple functions for filling and retrieving values\n * from forms. This class requires the use of the `data-form` attribute.\n */\nexport class Form {\n\t/**\n\t * Fill a form's inputs with the given values. Each key in the provided object\n\t * must match the `name` attribute of the input to fill.\n\t *\n\t * @param name - Form name. Must match the `data-form` attribute of the Form.\n\t * @param data - JSON object with key-value pairs to fill the inputs.\n\t */\n\tstatic fill(name: string, data: Record<string, string>): void {\n\t\tfor (const field in data) {\n\t\t\tconst element = $_(`form[data-form='${name}'] [name='${field}']`).get(0) as HTMLInputElement | undefined;\n\t\t\tif (typeof element !== 'undefined') {\n\t\t\t\tswitch (element.type) {\n\t\t\t\t\tcase 'file':\n\t\t\t\t\tcase 'file[]':\n\t\t\t\t\t\t// Cannot programmatically set file input values\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\telement.value = data[field];\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Get all the values from a form's inputs. The keys are mapped using the\n\t * `name` attribute of each input.\n\t *\n\t * @param name - Form name. Must match the `data-form` attribute of the Form.\n\t * @returns Key-value JSON object\n\t */\n\tstatic values(name: string): FormData {\n\t\tconst data: FormData = {};\n\t\t$_(`form[data-form='${name}'] [name]`).each((el: Element) => {\n\t\t\tconst element = el as HTMLInputElement;\n\t\t\tlet value: string | File | FileList | undefined;\n\t\t\tswitch (element.type) {\n\t\t\t\tcase 'file[]':\n\t\t\t\t\tvalue = element.files ?? undefined;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'file':\n\t\t\t\t\tvalue = element.files?.[0];\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tvalue = element.value;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (typeof value !== 'undefined' && value !== null) {\n\t\t\t\tdata[element.name] = value;\n\t\t\t}\n\t\t});\n\n\t\treturn data;\n\t}\n}\n\n",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"/**\n * ==============================\n * Util\n * ==============================\n */\n\n/**\n * Callable function type\n */\nexport type Callable<T = unknown> = (...args: unknown[]) => T | Promise<T>;\n\n/**\n * Provides diverse utility functions\n */\nexport class Util {\n\t/**\n\t * Calls any function using promises to keep a standard behavior between\n\t * async and sync functions.\n\t *\n\t * @param callable - The function to run\n\t * @param context - The object `this` will be mapped to\n\t * @param args - List of parameters to pass to the function when called\n\t * @returns A promise that resolves to the result of the function\n\t */\n\tstatic callAsync<T = unknown>(callable: Callable<T>, context: unknown, ...args: unknown[]): Promise<T> {\n\t\ttry {\n\t\t\t// Call the provided function using the context and arguments given\n\t\t\tconst result = callable.apply(context, args);\n\n\t\t\t// Check if the function returned a simple value or a Promise\n\t\t\tif (result instanceof Promise) {\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn Promise.resolve(result);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n\n\t/**\n\t * Creates a UUID. These UUIDs should not be trusted for uniqueness\n\t *\n\t * @returns Generated UUID\n\t */\n\tstatic uuid(): string {\n\t\tif (typeof crypto !== 'undefined' && crypto.getRandomValues) {\n\t\t\treturn '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, (c) => {\n\t\t\t\tconst num = parseInt(c, 10);\n\t\t\t\treturn (num ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (num / 4)))).toString(16);\n\t\t\t});\n\t\t} else {\n\t\t\tconst generate = (): string => Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n\t\t\treturn generate() + generate() + '-' + generate() + '-' + generate() + '-' +\n\t\t\t\tgenerate() + '-' + generate() + generate() + generate();\n\t\t}\n\t}\n}\n\n",
|
|
19
19
|
"// 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\tinterface Window {\n\t\tArtemis: typeof Artemis;\n\t}\n}\n\nif (typeof window === 'object') {\n\twindow.Artemis = Artemis;\n}\n\n"
|
|
20
20
|
],
|
|
21
|
-
"mappings": "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",
|
|
22
|
-
"debugId": "
|
|
21
|
+
"mappings": "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",
|
|
22
|
+
"debugId": "9718D4631B30A69A64756E2164756E21",
|
|
23
23
|
"names": []
|
|
24
24
|
}
|
package/dist/artemis.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var M;((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"})(M||={});class T{static _level=0;static level(z){if(typeof z==="number")this._level=z;return this._level}static log(...z){if(this.level()>=4)console.log(...z)}static debug(...z){if(this.level()>=4)console.debug(...z)}static info(...z){if(this.level()>=3)console.info(...z)}static error(...z){if(this.level()>=1)console.error(...z)}static warning(...z){if(this.level()>=2)console.warn(...z)}static table(...z){if(this.level()>=4)console.table(...z)}static group(...z){if(this.level()>=4)console.group(...z)}static groupCollapsed(...z){if(this.level()>=4)console.groupCollapsed(...z)}static groupEnd(){if(this.level()>=4)console.groupEnd()}static time(z){if(this.level()>=4)console.time(z)}static timeLog(z,...H){if(this.level()>=4)console.timeLog(z,...H)}static timeEnd(z){if(this.level()>=4)console.timeEnd(z)}static trace(...z){if(this.level()>=4)console.trace(...z)}}class ${collection;length;_selector;constructor(z){if(z===null){this.collection=[],this.length=0,this._selector=null;return}if(typeof z==="string")this.collection=document.querySelectorAll(z),this.length=this.collection.length,this._selector=z;else if(z instanceof NodeList)this.collection=z,this.length=z.length,this._selector=z;else if(z instanceof $)this.collection=z.collection,this.length=this.collection.length,this._selector=z._selector;else if(z instanceof HTMLElement)this.collection=[z],this.length=this.collection.length,this._selector=z;else if(Array.isArray(z))this.collection=z,this.length=z.length,this._selector=z;else this.collection=[],this.length=0,this._selector=null}hide(){for(let z of this.collection)z.style.display="none";return this}show(z="block"){for(let H of this.collection)H.style.display=z;return this}addClass(z){for(let H of this.collection)H.classList.add(z);return this}removeClass(z=null){if(z!==null)for(let H of this.collection)H.classList.remove(z);else for(let H of this.collection)while(H.classList.length>0){let Q=H.classList.item(0);if(Q)H.classList.remove(Q)}return this}toggleClass(z){let H=z.split(" ");for(let Q of this.collection)for(let X of H)Q.classList.toggle(X);return this}hasClass(z){for(let H of this.collection)if(!H.classList.contains(z))return!1;return!0}value(z){if(typeof z<"u"){for(let H of this.collection)H.value=z;return this}else{if(this.length===0)return;if(this.length===1)return this.collection[0].value;let H=[];for(let Q of this.collection)H.push(Q.value);return H}}focus(){if(this.length>0)this.collection[0].focus();return this}click(z){for(let H of this.collection)H.addEventListener("click",z,!1);return this}keyup(z){for(let H of this.collection)H.addEventListener("keyup",z,!1);return this}keydown(z){for(let H of this.collection)H.addEventListener("keydown",z,!1);return this}submit(z){for(let H of this.collection)H.addEventListener("submit",z,!1);return this}change(z){for(let H of this.collection)H.addEventListener("change",z,!1);return this}scroll(z){for(let H of this.collection)H.addEventListener("scroll",z,!1);return this}on(z,H,Q){let X=z.split(" ");for(let Y of this.collection)for(let J of X)if(typeof H==="function")Y.addEventListener(J,H,!1);else if(typeof H==="string"&&typeof Q==="function")Y.addEventListener(J,(Z)=>{if(!Z.target)return;let _=new $(Z.target).closestParent(H,this._selector);if(_.exists())Q.call(_.get(0),Z)},!1);return this}filter(z){let H=[];for(let Q of this.collection)if(Q.matches(z))H.push(Q);return new $(H.length>0?H:null)}exists(){return this.length>0}data(z,H){if(typeof H<"u"){for(let Q of this.collection)Q.dataset[z]=H;return this}else{if(this.length===0)return;if(this.length===1)return this.collection[0].dataset[z];let Q=[];for(let X of this.collection)Q.push(X.dataset[z]);return Q}}removeData(z){for(let H of this.collection)delete H.dataset[z];return this}text(z){if(typeof z<"u"){for(let H of this.collection)H.textContent=z;return this}else{if(this.length===0)return;if(this.length===1)return this.collection[0].textContent;let H=[];for(let Q of this.collection)H.push(Q.textContent);return H}}html(z){if(typeof z<"u"){for(let H of this.collection)H.innerHTML=z;return this}else{if(this.length===0)return;if(this.length===1)return this.collection[0].innerHTML;let H=[];for(let Q of this.collection)H.push(Q.innerHTML);return H}}append(z){for(let H of this.collection)if(typeof z==="string"){let Q=document.createElement("div");if(Q.innerHTML=z.trim(),Q.firstChild)H.appendChild(Q.firstChild.cloneNode(!0))}else H.appendChild(z.cloneNode(!0));return this}prepend(z){for(let H of this.collection)if(typeof z==="string"){let Q=document.createElement("div");if(Q.innerHTML=z.trim(),Q.firstChild)if(H.childNodes.length>0)H.insertBefore(Q.firstChild.cloneNode(!0),H.childNodes[0]);else H.appendChild(Q.firstChild.cloneNode(!0))}else if(H.childNodes.length>0)H.insertBefore(z.cloneNode(!0),H.childNodes[0]);else H.appendChild(z.cloneNode(!0));return this}each(z){for(let H of this.collection)z(H);return this}get(z){return this.collection[z]}first(){if(this.length>0)return new $(this.collection[0]);return new $(null)}last(){if(this.length>0)return new $(this.collection[this.collection.length-1]);return new $(null)}isVisible(){for(let z of this.collection){let H=z;if(H.style.display!=="none"&&H.offsetWidth>0&&H.offsetHeight>0)return!0}return!1}parent(){let z=[];for(let H of this.collection)if(H.parentElement&&!z.includes(H.parentElement))z.push(H.parentElement);return new $(z.length>0?z:null)}find(z){let H=[];for(let Q of this.collection){let X=Q.querySelectorAll(z);for(let Y of X)if(!H.includes(Y))H.push(Y)}return new $(H.length>0?H:null)}offset(){if(this.length===0)return;if(this.length===1){let H=this.collection[0].getBoundingClientRect();return{top:H.top+document.body.scrollTop,left:H.left+document.body.scrollLeft}}let z=[];for(let H of this.collection){let Q=H.getBoundingClientRect();z.push({top:Q.top+document.body.scrollTop,left:Q.left+document.body.scrollLeft})}return z}closest(z){let H=[];for(let Q of this.collection){let X=Q.closest(z);if(X&&!H.includes(X))H.push(X)}return new $(H.length>0?H:null)}closestParent(z,H){if(this.length===0)return new $(null);let Q=this.collection[0];while(Q){if(Q.matches(z))return new $(Q);if(typeof H==="string"&&Q.matches(H))break;Q=Q.parentElement}return new $(null)}attribute(z,H){if(typeof H<"u"){for(let Q of this.collection)Q.setAttribute(z,String(H));return this}else{if(this.length===0)return;if(this.length===1)return this.collection[0].getAttribute(z);let Q=[];for(let X of this.collection)Q.push(X.getAttribute(z));return Q}}hasAttribute(z){for(let H of this.collection)if(!H.hasAttribute(z))return!1;return!0}after(z){for(let H of this.collection)H.insertAdjacentHTML("afterend",z);return this}before(z){for(let H of this.collection)H.insertAdjacentHTML("beforebegin",z);return this}style(z,H){if(typeof z==="string"&&typeof H>"u"){if(this.length===0)return;if(this.length===1)return this.collection[0].style.getPropertyValue(z);let Q=[];for(let X of this.collection)Q.push(X.style.getPropertyValue(z));return Q}for(let Q of this.collection){let X=Q;if(typeof z==="string"&&typeof H<"u")X.style.setProperty(z,H);else if(typeof z==="object")for(let Y in z)X.style.setProperty(Y,String(z[Y]))}return this}animate(z,H){for(let Q=0;Q<this.collection.length;Q++){let X=this.collection[Q];for(let Y in z){let J=Date.now(),Z;if(typeof X.style.getPropertyValue(Y)<"u"&&X.style.getPropertyValue(Y)!==""){Z=parseFloat(X.style.getPropertyValue(Y));let K=setInterval(()=>{let _=Math.min(1,(Date.now()-J)/H);if(X.style.setProperty(Y,String(Z+_*(z[Y]-Z))),_===1)clearInterval(K)},25);X.style.setProperty(Y,String(Z))}else if(typeof X[Y]<"u"){Z=X[Y];let K=setInterval(()=>{let _=Math.min(1,(Date.now()-J)/H);if(X[Y]=Z+_*(z[Y]-Z),_===1)clearInterval(K)},25);X[Y]=Z}}}return this}fadeIn(z=400,H){let Q=0,X=this.collection.length;for(let Y of this.collection){let J=Y;J.style.opacity="0";let Z=Date.now(),K=()=>{if(J.style.opacity=String(parseFloat(J.style.opacity)+(Date.now()-Z)/z),Z=Date.now(),parseFloat(J.style.opacity)<1)requestAnimationFrame(K);else if(Q++,Q===X&&typeof H==="function")H()};K()}return this}fadeOut(z=400,H){let Q=0,X=this.collection.length;for(let Y of this.collection){let J=Y,Z=Date.now(),K=()=>{if(J.style.opacity=String(parseFloat(J.style.opacity)-(Date.now()-Z)/z),Z=Date.now(),parseFloat(J.style.opacity)>0)requestAnimationFrame(K);else if(Q++,Q===X&&typeof H==="function")H()};K()}return this}matches(z){if(this.length===0)return!1;for(let H of this.collection)if(!H.matches(z))return!1;return!0}remove(){for(let z of this.collection)z.parentNode?.removeChild(z);return this}replaceWith(z){for(let H of this.collection){let Q;if(typeof z==="string"){let X=document.createElement("div");X.innerHTML=z,Q=X.firstChild}else Q=z.cloneNode(!0);H.parentElement?.replaceChild(Q,H)}return this}reset(){for(let z of this.collection)if(z.reset)z.reset();return this}property(z,H){if(typeof H<"u"){for(let Q of this.collection)Q[z]=H;return this}else{if(this.length===0)return;if(this.length===1)return this.collection[0][z];let Q=[];for(let X of this.collection)Q.push(X[z]);return Q}}}function A(z){return new $(z)}function D(z){window.addEventListener("load",z)}class G{static serialize(z){return Object.keys(z).map((H)=>{return encodeURIComponent(H)+"="+encodeURIComponent(String(z[H]))}).join("&")}static get(z,H={},Q={}){let X=G.serialize(H);if(X!=="")z=`${z}?${X}`;return fetch(z,Q)}static post(z,H,Q={}){let X,Y=Q.headers?.["Content-Type"];if(Y!==void 0)if(Y==="multipart/form-data"){X=new FormData;for(let K in H)X.append(K,String(H[K]))}else if(Y==="application/json")X=JSON.stringify(H);else X=G.serialize(H);else X=G.serialize(H);let J={"Content-Type":"application/x-www-form-urlencoded",...Q.headers};if(J["Content-Type"]==="multipart/form-data")delete J["Content-Type"];let Z={...Q,method:"POST",headers:J,body:X};return fetch(z,Z)}static put(z,H,Q={}){return G.post(z,H,Object.assign({},{method:"PUT"},Q))}static delete(z,H,Q={}){return G.get(z,H,Object.assign({},{method:"DELETE"},Q))}static json(z,H={},Q={}){return G.get(z,H,Q).then((X)=>{return X.json()})}static blob(z,H={},Q={}){return G.get(z,H,Q).then((X)=>{return X.blob()})}}class w{static readRemote(z,H="base64",Q={}){return G.blob(z,{},Q).then((X)=>{return w.read(X,H)})}static read(z,H="text"){return new Promise((Q,X)=>{let Y=new FileReader;if(Y.onload=(J)=>{Q({event:J,content:J.target?.result??null})},Y.onerror=(J)=>{X(J)},H==="base64")Y.readAsDataURL(z);else if(H==="buffer")Y.readAsArrayBuffer(z);else Y.readAsText(z,"UTF-8")})}static create(z,H,Q="text/plain"){return Promise.resolve(new File([H],z,{type:Q}))}static extension(z){return z.split(".").pop()??""}static isImage(z){return["jpg","jpeg","png","gif","svg","webp","bmp"].indexOf(w.extension(z).toLowerCase())>-1}}class q{static fill(z,H){for(let Q in H){let X=A(`form[data-form='${z}'] [name='${Q}']`).get(0);if(typeof X<"u")switch(X.type){case"file":case"file[]":break;default:X.value=H[Q];break}}}static values(z){let H={};return A(`form[data-form='${z}'] [name]`).each((Q)=>{let X=Q,Y;switch(X.type){case"file[]":Y=X.files??void 0;break;case"file":Y=X.files?.[0];break;default:Y=X.value;break}if(typeof Y<"u"&&Y!==null)H[X.name]=Y}),H}}class C{static retina(){return window.devicePixelRatio>=2}static portrait(){return window.screen.orientation.type==="portrait-primary"||window.screen.orientation.type==="portrait-secondary"}static landscape(){return window.screen.orientation.type==="landscape-primary"||window.screen.orientation.type==="landscape-secondary"}static orientation(){return C.portrait()?"portrait":"landscape"}static electron(){let z=window;if(typeof z<"u"&&typeof z.process==="object"&&z.process?.type==="renderer")return!0;let H=typeof globalThis<"u"?globalThis.process:void 0;if(H&&typeof H.versions==="object"&&!!H.versions?.electron)return!0;if(typeof navigator==="object"&&typeof navigator.userAgent==="string"&&navigator.userAgent.indexOf("Electron")>=0)return!0;return!1}static cordova(){return!!window.cordova}static getPlatformString(){if(navigator.userAgentData?.platform)return navigator.userAgentData.platform;let z=navigator.userAgent;if(z.includes("Win"))return"Windows";if(z.includes("Mac"))return"macOS";if(z.includes("Linux"))return"Linux";if(z.includes("FreeBSD"))return"FreeBSD";if(z.includes("WebTV"))return"webOS";return""}static desktop(z="Any"){let H=C.getPlatformString();switch(z){case"Windows":return H==="Windows"||H.includes("Win");case"macOS":return H==="macOS"||H.includes("Mac");case"Linux":return H==="Linux"||H.includes("Linux");case"FreeBSD":return H==="FreeBSD"||H.includes("FreeBSD");case"webOS":return H==="webOS"||H.includes("WebTV");case"Any":default:return["Windows","macOS","Linux","FreeBSD","webOS"].some((Q)=>H===Q||H.includes(Q.replace("macOS","Mac").replace("webOS","WebTV")))}}static mobile(z="Any"){if(navigator.userAgentData?.mobile!==void 0&&z==="Any")return navigator.userAgentData.mobile;let H=navigator.userAgent;switch(z){case"Android":return/Android/i.test(H);case"iOS":return/iPhone|iPad|iPod/i.test(H);case"Opera":return/Opera Mini/i.test(H);case"Windows":return/Windows Phone|IEMobile|WPDesktop/i.test(H);case"BlackBerry":return/BlackBerry|BB10/i.test(H);case"Any":default:return/Android|iPhone|iPad|iPod|Windows Phone|IEMobile|WPDesktop|BlackBerry|BB10/i.test(H)}}static serviceWorkers(){if(typeof navigator<"u"){if("serviceWorker"in navigator&&location.protocol.indexOf("http")>-1)return!0}return!1}}class R{static image(z){return new Promise((H,Q)=>{let X=new Image;X.onload=()=>{H(X)},X.onerror=(Y)=>{Q(Y)},X.src=z})}static file(z){return G.blob(z)}}class I{name;version;store;id;numericVersion;upgrades;storage;constructor({name:z="",version:H="",store:Q=""}){if(this.name=z,this.version=H,this.store=Q,this.upgrades={},this.version==="")this.numericVersion=0;else this.numericVersion=parseInt(H.replace(/\./g,""));if(z!==""&&H!==""&&Q!=="")this.id=`${this.name}::${this.store}::${this.version}_`;else if(z!==""&&H!=="")this.id=`${this.name}::${this.version}_`;else if(z!=="")this.id=`${this.name}::_`;else this.id=""}configuration(z){if(z.name)this.name=z.name;if(z.version)this.version=z.version;if(z.store)this.store=z.store}open(){if(this.storage instanceof Storage)return Promise.resolve(this);else if(this.storage instanceof Promise)return this.storage;else{let z=new Promise((H)=>{let Q=[];if(this.version!==""){let X="";if(this.name!==""&&this.version!==""&&this.store!=="")X=`${this.name}::${this.store}::`;else if(this.name!==""&&this.version!=="")X=`${this.name}::`;let Y=Object.keys(window.localStorage).filter((J)=>{return J.indexOf(X)===0}).map((J)=>{return J.replace(X,"").split("_")[0]}).filter((J)=>{return J.indexOf("::")===-1}).sort();if(Y.length>0){let J=Y[0],Z=parseInt(J.replace(/\./g,""));if(Z<this.numericVersion){let K=Object.keys(this.upgrades).sort(),_=K.findIndex((W)=>{let[N]=W.split("::");return parseInt(N)===Z});if(_>-1)Q=K.slice(_).filter((W)=>{let[N,L]=W.split("::");return parseInt(N)<this.numericVersion&&parseInt(L)<=this.numericVersion});let B=`${this.name}::${J}_`;if(this.name!==""&&this.version!==""&&this.store!=="")B=`${this.name}::${this.store}::${J}_`;else if(this.name!==""&&this.version!=="")B=`${this.name}::${J}_`;let F=Object.keys(window.localStorage).filter((W)=>{return W.indexOf(B)===0}).map((W)=>{return W.replace(B,"")});for(let W of F){let N=window.localStorage.getItem(`${B}${W}`);if(N!==null)window.localStorage.setItem(this.id+W,N);window.localStorage.removeItem(`${B}${W}`)}}}}H({upgrades:Q})}).then(({upgrades:H})=>{return this.storage=window.localStorage,new Promise((Q)=>{let X=()=>Q(this);this._upgrade(H,X)})});return this.storage=z,z}}set(z,H){return this.open().then(()=>{if(typeof H==="object")this.storage.setItem(this.id+z,JSON.stringify(H));else this.storage.setItem(this.id+z,String(H));return Promise.resolve({key:z,value:H})})}update(z,H){return this.get(z).then((Q)=>{if(typeof Q==="object"&&Q!==null){if(typeof H==="object"&&H!==null)H=Object.assign({},Q,H);this.storage.setItem(this.id+z,JSON.stringify(H))}else this.storage.setItem(this.id+z,String(H));return Promise.resolve({key:z,value:H})}).catch(()=>{return this.set(z,H)})}get(z){return this.open().then(()=>{return new Promise((H,Q)=>{let X=this.storage.getItem(this.id+z);try{let Y=JSON.parse(X);if(Y&&typeof Y==="object")X=Y}catch{}if(typeof X<"u"&&X!==null)H(X);else Q()})})}getAll(){return this.keys().then((z)=>{let H={},Q=[];for(let X of z)Q.push(this.get(X).then((Y)=>{H[X]=Y}));return Promise.all(Q).then(()=>H)})}contains(z){return this.keys().then((H)=>{if(H.includes(z))return Promise.resolve();else return Promise.reject()})}upgrade(z,H,Q){let X=`${parseInt(z.replace(/\./g,""))}::${parseInt(H.replace(/\./g,""))}`;return this.upgrades[X]=Q,Promise.resolve()}_upgrade(z,H){if(z.length>0)this.upgrades[z[0]].call(this,this).then(()=>{this._upgrade(z.slice(1),H)}).catch((Q)=>console.error(Q));else H()}rename(z){if(this.name!==z)return this.keys().then((H)=>{let Q=this.id;if(this.name=z,this.name!==""&&this.version!==""&&this.store!=="")this.id=`${this.name}::${this.store}::${this.version}_`;else if(this.name!==""&&this.version!=="")this.id=`${this.name}::${this.version}_`;else if(this.name!=="")this.id=`${this.name}::_`;else this.id="";let X=[];for(let Y of H){let J=this.storage.getItem(`${Q}${Y}`);if(J!==null)X.push(this.set(Y,J).then(()=>{this.storage.removeItem(`${Q}${Y}`)}))}return Promise.all(X).then(()=>{})});else return Promise.reject()}key(z,H=!1){return this.open().then(()=>{let Q=this.storage.key(z);if(H===!0)return Promise.resolve(Q??"");else return Promise.resolve((Q??"").replace(this.id,""))})}keys(z=!1){return this.open().then(()=>{return Promise.resolve(Object.keys(this.storage).filter((H)=>{return H.indexOf(this.id)===0}).map((H)=>{if(z===!0)return H;else return H.replace(this.id,"")}))})}remove(z){return this.get(z).then((H)=>{return this.storage.removeItem(this.id+z),Promise.resolve(H)})}clear(){return this.keys().then((z)=>{for(let H of z)this.remove(H);return Promise.resolve()})}}class P extends I{constructor({name:z="",version:H="",store:Q=""}){super({name:z,version:H,store:Q})}open(){if(typeof this.storage>"u")this.storage=window.sessionStorage;return Promise.resolve(this)}}class U{name;version;store;props;index;keyPath;numericVersion;upgrades;storage;constructor({name:z="",version:H="",store:Q="",props:X={},index:Y={}}){if(this.name=z,this.version=H,this.store=Q,this.props=X||{},this.index=Y,this.keyPath=X?.keyPath||"id",this.upgrades={},this.version==="")this.numericVersion=0;else this.numericVersion=parseInt(H.replace(/\./g,""))}configuration(z){if(z.name)this.name=z.name;if(z.version)this.version=z.version;if(z.store)this.store=z.store}open(){if(this.name==="")return console.error("No name has been defined for IndexedDB space."),Promise.reject();if(this.store==="")return console.error("No store has been defined for IndexedDB space."),Promise.reject();if(this.storage instanceof IDBDatabase)return Promise.resolve(this);else if(this.storage instanceof Promise)return this.storage;else{let z,H=new Promise((Q,X)=>{let Y=[],J=window.indexedDB.open(this.name,this.numericVersion);J.onerror=(Z)=>{X(Z)},J.onsuccess=(Z)=>{Q({storage:Z.target.result,upgrades:Y})},J.onupgradeneeded=(Z)=>{z=Z;let K=Z.target.result;if(Z.oldVersion<1){let B=K.createObjectStore(this.store,this.props);for(let F of Object.keys(this.index)){let W=this.index[F];B.createIndex(W.name,W.field,W.props)}}else{let B=Object.keys(this.upgrades).sort(),F=B.findIndex((W)=>{let[N]=W.split("::");return parseInt(N)===Z.oldVersion});if(F>-1)Y=B.slice(F).filter((W)=>{let[N,L]=W.split("::");return parseInt(N)<this.numericVersion&&parseInt(L)<=this.numericVersion})}let _=Z.target.transaction;if(_)_.addEventListener("complete",()=>{Q({storage:K,upgrades:Y})})}}).then(({storage:Q,upgrades:X})=>{return this.storage=Q,new Promise((Y)=>{let J=()=>Y(this);this._upgrade(X,J,z)})});return this.storage=H,H}}set(z=null,H){return this.open().then(()=>{return new Promise((Q,X)=>{let Y=this.storage.transaction(this.store,"readwrite").objectStore(this.store),J;if(z!==null){let Z={};Z[this.keyPath]=z,J=Y.put(Object.assign({},Z,H))}else J=Y.add(H);J.addEventListener("success",(Z)=>{Q({key:String(Z.target.result),value:H})}),J.addEventListener("error",(Z)=>{X(Z)})})})}update(z,H){return this.get(z).then((Q)=>{if(typeof Q>"u")return this.set(z,H);return new Promise((X,Y)=>{let Z=this.storage.transaction(this.store,"readwrite").objectStore(this.store).put(Object.assign({},Q,H));Z.addEventListener("success",(K)=>{X({key:String(K.target.result),value:H})}),Z.addEventListener("error",(K)=>{Y(K)})})})}get(z){return this.open().then(()=>{return new Promise((H,Q)=>{let Y=this.storage.transaction(this.store).objectStore(this.store).get(z);Y.addEventListener("success",(J)=>{let Z=J.target.result;if(typeof Z<"u"&&Z!==null)H(Z);else Q()}),Y.addEventListener("error",(J)=>{Q(J)})})})}getAll(){return this.open().then(()=>{return new Promise((z,H)=>{let X=this.storage.transaction(this.store).objectStore(this.store).getAll();X.addEventListener("success",(Y)=>{let J={};Y.target.result.forEach((K)=>{let _=K[this.keyPath];delete K[this.keyPath],J[_]=K}),z(J)}),X.addEventListener("error",(Y)=>{H(Y)})})})}contains(z){return this.get(z).then(()=>{return Promise.resolve()})}upgrade(z,H,Q){let X=`${parseInt(z.replace(/\./g,""))}::${parseInt(H.replace(/\./g,""))}`;return this.upgrades[X]=Q,Promise.resolve()}_upgrade(z,H,Q){if(z.length>0)this.upgrades[z[0]].call(this,this,Q).then(()=>{this._upgrade(z.slice(1),H,Q)}).catch((X)=>console.error(X));else H()}rename(){return Promise.reject()}key(){return Promise.reject()}keys(){return this.open().then(()=>{return new Promise((z,H)=>{let X=this.storage.transaction(this.store,"readwrite").objectStore(this.store).getAllKeys();X.addEventListener("success",(Y)=>{z(Y.target.result.map(String))},!1),X.addEventListener("error",(Y)=>{H(Y)},!1)})})}remove(z){return this.get(z).then((H)=>{return new Promise((Q,X)=>{let J=this.storage.transaction(this.store,"readwrite").objectStore(this.store).delete(z);J.addEventListener("success",()=>{Q(H)},!1),J.addEventListener("error",(Z)=>{X(Z)},!1)})})}clear(){return this.open().then(()=>{return new Promise((z,H)=>{let X=this.storage.transaction(this.store,"readwrite").objectStore(this.store).clear();X.addEventListener("success",()=>{z()},!1),X.addEventListener("error",(Y)=>{H(Y)},!1)})})}}class E{name;version;store;endpoint;props;storage;constructor({name:z="",version:H="",store:Q="",endpoint:X="",props:Y={}}){this.name=z,this.version=H,this.store=Q,this.endpoint=`${X}${Q}/`,this.props=Y}configuration(z){if(z.name)this.name=z.name;if(z.version)this.version=z.version;if(z.store)this.store=z.store}open(){if(typeof this.storage>"u")this.storage=G;return Promise.resolve(this)}set(z,H){return this.open().then(()=>{return this.storage.post(this.endpoint+z,H,this.props).then((Q)=>{return Promise.resolve({key:z,value:Q.json()})})})}update(z,H){return this.get(z).then((Q)=>{let X=Object.assign({},Q,H);return this.storage.put(this.endpoint+z,X,this.props).then((Y)=>{return Promise.resolve({key:z,value:Y.json()})})})}get(z){return this.open().then(()=>{return this.storage.json(this.endpoint+z,{},this.props)})}getAll(){return this.open().then(()=>{return this.storage.json(this.endpoint,{},this.props)})}contains(z){return this.keys().then((H)=>{if(H.includes(z))return Promise.resolve();else return Promise.reject()})}upgrade(){return Promise.reject()}rename(){return Promise.reject()}key(){return Promise.reject()}keys(){return this.open().then(()=>{return this.storage.json(this.endpoint,{keys:!0},this.props)})}remove(z){return this.open().then(()=>{return this.storage.delete(this.endpoint+z,{},this.props).then((H)=>{return H.json()})})}clear(){return this.open().then(()=>{return this.storage.delete(this.endpoint,{},this.props).then(()=>{})})}}var O={LocalStorage:I,SessionStorage:P,IndexedDB:U,RemoteStorage:E};class j{_configuration;adapter;callbacks;transformations;constructor(z=O.LocalStorage,H={}){this._configuration=Object.assign({},{name:"",version:"",store:""},H),this.adapter=new z(this._configuration),this.callbacks={create:[],update:[],delete:[]},this.transformations={}}configuration(z=null){if(z!==null){if(this._configuration=Object.assign({},this._configuration,z),this.adapter.configuration)this.adapter.configuration(z)}else return this._configuration}open(){return this.adapter.open().then(()=>{return Promise.resolve(this)})}set(z,H){for(let Q of Object.keys(this.transformations))if(typeof this.transformations[Q].set==="function")H=this.transformations[Q].set(z,H);return this.adapter.set(z,H).then(({key:Q,value:X})=>{for(let Y of this.callbacks.create)Y.call(null,Q,X);return Promise.resolve({key:Q,value:X})})}update(z,H){for(let Q of Object.keys(this.transformations))if(typeof this.transformations[Q].set==="function")H=this.transformations[Q].set(z,H);return this.adapter.update(z,H).then(({key:Q,value:X})=>{for(let Y of this.callbacks.update)Y.call(null,Q,X);return Promise.resolve({key:Q,value:X})})}get(z){return this.adapter.get(z).then((H)=>{for(let Q of Object.keys(this.transformations))if(typeof this.transformations[Q].get==="function")H=this.transformations[Q].get(z,H);return H})}getAll(){return this.adapter.getAll().then((z)=>{for(let H of Object.keys(z))for(let Q of Object.keys(this.transformations))if(typeof this.transformations[Q].get==="function")z[H]=this.transformations[Q].get(H,z[H]);return z})}each(z){return this.getAll().then((H)=>{let Q=[];for(let X of Object.keys(H))Q.push(z.call(this,X,H[X]));return Promise.all(Q)})}contains(z){return this.adapter.contains(z)}upgrade(z,H,Q){return this.adapter.upgrade(z,H,Q).then(()=>{return Promise.resolve(this)})}rename(z){return this.adapter.rename(z)}onCreate(z){this.callbacks.create.push(z)}onUpdate(z){this.callbacks.update.push(z)}onDelete(z){this.callbacks.delete.push(z)}addTransformation({id:z,get:H,set:Q}){this.transformations[z]={id:z,get:H,set:Q}}removeTransformation(z){delete this.transformations[z]}key(z,H=!1){return this.adapter.key(z,H)}keys(z=!1){return this.adapter.keys(z)}remove(z){return this.adapter.remove(z).then((H)=>{for(let Q of this.callbacks.delete)Q.call(null,z,H)})}clear(){return this.adapter.clear()}}class x{static capitalize(z){return z.replace(/\w\S*/g,(H)=>{return H.charAt(0).toUpperCase()+H.substring(1).toLowerCase()})}static suffix(z,H){let Q="",X=H.indexOf(z);if(X!==-1)X+=z.length,Q=H.substring(X);return Q}static selection(){let z=window.getSelection();if(z)return z.toString();return""}static prefix(z,H){let Q="",X=H.indexOf(z);if(X!==-1)Q=H.substring(0,X);return Q}static friendly(z){let H=[/[áàâãªä]/g,/[ÁÀÂÃÄ]/g,/[ÍÌÎÏ]/g,/[íìîï]/g,/[éèêë]/g,/[ÉÈÊË]/g,/[óòôõºö]/g,/[ÓÒÔÕÖ]/g,/[úùûü]/g,/[ÚÙÛÜ]/g,/ç/g,/Ç/g,/ñ/g,/Ñ/g,/_/g,/[''‹›<>']/g,/[""«»„"]/g,/[(){}[\]]/g,/[?¿!¡#$%&^*´`~/°|]/g,/[,.:;]/g,/ /g],Q=["a","A","I","i","e","E","o","O","u","U","c","C","n","N","-","","","","","","-"],X=z;for(let Y=0;Y<H.length;Y++)X=X.replace(H[Y],Q[Y]);return X}}class V{static callAsync(z,H,...Q){try{let X=z.apply(H,Q);if(X instanceof Promise)return X;else return Promise.resolve(X)}catch(X){return Promise.reject(X)}}static uuid(){if(typeof crypto<"u"&&crypto.getRandomValues)return"10000000-1000-4000-8000-100000000000".replace(/[018]/g,(z)=>{let H=parseInt(z,10);return(H^crypto.getRandomValues(new Uint8Array(1))[0]&15>>H/4).toString(16)});else{let z=()=>Math.floor((1+Math.random())*65536).toString(16).substring(1);return z()+z()+"-"+z()+"-"+z()+"-"+z()+"-"+z()+z()+z()}}}export{V as Util,x as Text,O as SpaceAdapter,j as Space,P as SessionStorage,G as Request,E as RemoteStorage,R as Preload,C as Platform,I as LocalStorage,U as IndexedDB,q as Form,w as FileSystem,M as DebugLevel,T as Debug,$ as DOM,D as $_ready,A as $_};
|
|
1
|
+
var M;((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"})(M||={});class T{static _level=0;static level(z){if(typeof z==="number")this._level=z;return this._level}static log(...z){if(this.level()>=4)console.log(...z)}static debug(...z){if(this.level()>=4)console.debug(...z)}static info(...z){if(this.level()>=3)console.info(...z)}static error(...z){if(this.level()>=1)console.error(...z)}static warning(...z){if(this.level()>=2)console.warn(...z)}static table(...z){if(this.level()>=4)console.table(...z)}static group(...z){if(this.level()>=4)console.group(...z)}static groupCollapsed(...z){if(this.level()>=4)console.groupCollapsed(...z)}static groupEnd(){if(this.level()>=4)console.groupEnd()}static time(z){if(this.level()>=4)console.time(z)}static timeLog(z,...H){if(this.level()>=4)console.timeLog(z,...H)}static timeEnd(z){if(this.level()>=4)console.timeEnd(z)}static trace(...z){if(this.level()>=4)console.trace(...z)}}class ${collection;length;_selector;constructor(z){if(z===null){this.collection=[],this.length=0,this._selector=null;return}if(typeof z==="string")this.collection=document.querySelectorAll(z),this.length=this.collection.length,this._selector=z;else if(z instanceof NodeList)this.collection=z,this.length=z.length,this._selector=z;else if(z instanceof $)this.collection=z.collection,this.length=this.collection.length,this._selector=z._selector;else if(z instanceof HTMLElement)this.collection=[z],this.length=this.collection.length,this._selector=z;else if(Array.isArray(z))this.collection=z,this.length=z.length,this._selector=z;else this.collection=[],this.length=0,this._selector=null}hide(){for(let z of this.collection)z.style.display="none";return this}show(z="block"){for(let H of this.collection)H.style.display=z;return this}addClass(z){for(let H of this.collection)H.classList.add(z);return this}removeClass(z=null){if(z!==null)for(let H of this.collection)H.classList.remove(z);else for(let H of this.collection)while(H.classList.length>0){let Q=H.classList.item(0);if(Q)H.classList.remove(Q)}return this}toggleClass(z){let H=z.split(" ");for(let Q of this.collection)for(let X of H)Q.classList.toggle(X);return this}hasClass(z){for(let H of this.collection)if(!H.classList.contains(z))return!1;return!0}value(z){if(typeof z<"u"){for(let H of this.collection)H.value=z;return this}else{if(this.length===0)return;if(this.length===1)return this.collection[0].value;let H=[];for(let Q of this.collection)H.push(Q.value);return H}}focus(){if(this.length>0)this.collection[0].focus();return this}click(z){for(let H of this.collection)H.addEventListener("click",z,!1);return this}keyup(z){for(let H of this.collection)H.addEventListener("keyup",z,!1);return this}keydown(z){for(let H of this.collection)H.addEventListener("keydown",z,!1);return this}submit(z){for(let H of this.collection)H.addEventListener("submit",z,!1);return this}change(z){for(let H of this.collection)H.addEventListener("change",z,!1);return this}scroll(z){for(let H of this.collection)H.addEventListener("scroll",z,!1);return this}on(z,H,Q){let X=z.split(" ");for(let Y of this.collection)for(let J of X)if(typeof H==="function")Y.addEventListener(J,H,!1);else if(typeof H==="string"&&typeof Q==="function")Y.addEventListener(J,(Z)=>{if(!Z.target)return;let _=new $(Z.target).closestParent(H,this._selector);if(_.exists())Q.call(_.get(0),Z)},!1);return this}filter(z){let H=[];for(let Q of this.collection)if(Q.matches(z))H.push(Q);return new $(H.length>0?H:null)}exists(){return this.length>0}data(z,H){if(typeof H<"u"){for(let Q of this.collection)Q.dataset[z]=H;return this}else{if(this.length===0)return;if(this.length===1)return this.collection[0].dataset[z];let Q=[];for(let X of this.collection)Q.push(X.dataset[z]);return Q}}removeData(z){for(let H of this.collection)delete H.dataset[z];return this}text(z){if(typeof z<"u"){for(let H of this.collection)H.textContent=z;return this}else{if(this.length===0)return;if(this.length===1)return this.collection[0].textContent;let H=[];for(let Q of this.collection)H.push(Q.textContent);return H}}html(z){if(typeof z<"u"){for(let H of this.collection)H.innerHTML=z;return this}else{if(this.length===0)return;if(this.length===1)return this.collection[0].innerHTML;let H=[];for(let Q of this.collection)H.push(Q.innerHTML);return H}}append(z){let H=!0;for(let Q of this.collection)if(typeof z==="string"){let X=document.createElement("div");if(X.innerHTML=z.trim(),X.firstChild)Q.appendChild(X.firstChild.cloneNode(!0))}else if(H)Q.appendChild(z),H=!1;else Q.appendChild(z.cloneNode(!0));return this}prepend(z){let H=!0;for(let Q of this.collection)if(typeof z==="string"){let X=document.createElement("div");if(X.innerHTML=z.trim(),X.firstChild)if(Q.childNodes.length>0)Q.insertBefore(X.firstChild.cloneNode(!0),Q.childNodes[0]);else Q.appendChild(X.firstChild.cloneNode(!0))}else{let X=H?z:z.cloneNode(!0);if(H)H=!1;if(Q.childNodes.length>0)Q.insertBefore(X,Q.childNodes[0]);else Q.appendChild(X)}return this}each(z){for(let H of this.collection)z(H);return this}get(z){return this.collection[z]}first(){if(this.length>0)return new $(this.collection[0]);return new $(null)}last(){if(this.length>0)return new $(this.collection[this.collection.length-1]);return new $(null)}isVisible(){for(let z of this.collection){let H=z;if(H.style.display!=="none"&&H.offsetWidth>0&&H.offsetHeight>0)return!0}return!1}parent(){let z=[];for(let H of this.collection)if(H.parentElement&&!z.includes(H.parentElement))z.push(H.parentElement);return new $(z.length>0?z:null)}find(z){let H=[];for(let Q of this.collection){let X=Q.querySelectorAll(z);for(let Y of X)if(!H.includes(Y))H.push(Y)}return new $(H.length>0?H:null)}offset(){if(this.length===0)return;if(this.length===1){let H=this.collection[0].getBoundingClientRect();return{top:H.top+document.body.scrollTop,left:H.left+document.body.scrollLeft}}let z=[];for(let H of this.collection){let Q=H.getBoundingClientRect();z.push({top:Q.top+document.body.scrollTop,left:Q.left+document.body.scrollLeft})}return z}closest(z){let H=[];for(let Q of this.collection){let X=Q.closest(z);if(X&&!H.includes(X))H.push(X)}return new $(H.length>0?H:null)}closestParent(z,H){if(this.length===0)return new $(null);let Q=this.collection[0];while(Q){if(Q.matches(z))return new $(Q);if(typeof H==="string"&&Q.matches(H))break;Q=Q.parentElement}return new $(null)}attribute(z,H){if(typeof H<"u"){for(let Q of this.collection)Q.setAttribute(z,String(H));return this}else{if(this.length===0)return;if(this.length===1)return this.collection[0].getAttribute(z);let Q=[];for(let X of this.collection)Q.push(X.getAttribute(z));return Q}}hasAttribute(z){for(let H of this.collection)if(!H.hasAttribute(z))return!1;return!0}after(z){for(let H of this.collection)H.insertAdjacentHTML("afterend",z);return this}before(z){for(let H of this.collection)H.insertAdjacentHTML("beforebegin",z);return this}style(z,H){if(typeof z==="string"&&typeof H>"u"){if(this.length===0)return;if(this.length===1)return this.collection[0].style.getPropertyValue(z);let Q=[];for(let X of this.collection)Q.push(X.style.getPropertyValue(z));return Q}for(let Q of this.collection){let X=Q;if(typeof z==="string"&&typeof H<"u")X.style.setProperty(z,H);else if(typeof z==="object")for(let Y in z)X.style.setProperty(Y,String(z[Y]))}return this}animate(z,H){for(let Q=0;Q<this.collection.length;Q++){let X=this.collection[Q];for(let Y in z){let J=Date.now(),Z;if(typeof X.style.getPropertyValue(Y)<"u"&&X.style.getPropertyValue(Y)!==""){Z=parseFloat(X.style.getPropertyValue(Y));let K=setInterval(()=>{let _=Math.min(1,(Date.now()-J)/H);if(X.style.setProperty(Y,String(Z+_*(z[Y]-Z))),_===1)clearInterval(K)},25);X.style.setProperty(Y,String(Z))}else if(typeof X[Y]<"u"){Z=X[Y];let K=setInterval(()=>{let _=Math.min(1,(Date.now()-J)/H);if(X[Y]=Z+_*(z[Y]-Z),_===1)clearInterval(K)},25);X[Y]=Z}}}return this}fadeIn(z=400,H){let Q=0,X=this.collection.length;for(let Y of this.collection){let J=Y;J.style.opacity="0";let Z=Date.now(),K=()=>{if(J.style.opacity=String(parseFloat(J.style.opacity)+(Date.now()-Z)/z),Z=Date.now(),parseFloat(J.style.opacity)<1)requestAnimationFrame(K);else if(Q++,Q===X&&typeof H==="function")H()};K()}return this}fadeOut(z=400,H){let Q=0,X=this.collection.length;for(let Y of this.collection){let J=Y,Z=Date.now(),K=()=>{if(J.style.opacity=String(parseFloat(J.style.opacity)-(Date.now()-Z)/z),Z=Date.now(),parseFloat(J.style.opacity)>0)requestAnimationFrame(K);else if(Q++,Q===X&&typeof H==="function")H()};K()}return this}matches(z){if(this.length===0)return!1;for(let H of this.collection)if(!H.matches(z))return!1;return!0}remove(){for(let z of this.collection)z.parentNode?.removeChild(z);return this}replaceWith(z){for(let H of this.collection){let Q;if(typeof z==="string"){let X=document.createElement("div");X.innerHTML=z,Q=X.firstChild}else Q=z.cloneNode(!0);H.parentElement?.replaceChild(Q,H)}return this}reset(){for(let z of this.collection)if(z.reset)z.reset();return this}property(z,H){if(typeof H<"u"){for(let Q of this.collection)Q[z]=H;return this}else{if(this.length===0)return;if(this.length===1)return this.collection[0][z];let Q=[];for(let X of this.collection)Q.push(X[z]);return Q}}}function A(z){return new $(z)}function D(z){window.addEventListener("load",z)}class G{static serialize(z){return Object.keys(z).map((H)=>{return encodeURIComponent(H)+"="+encodeURIComponent(String(z[H]))}).join("&")}static get(z,H={},Q={}){let X=G.serialize(H);if(X!=="")z=`${z}?${X}`;return fetch(z,Q)}static post(z,H,Q={}){let X,Y=Q.headers?.["Content-Type"];if(Y!==void 0)if(Y==="multipart/form-data"){X=new FormData;for(let K in H)X.append(K,String(H[K]))}else if(Y==="application/json")X=JSON.stringify(H);else X=G.serialize(H);else X=G.serialize(H);let J={"Content-Type":"application/x-www-form-urlencoded",...Q.headers};if(J["Content-Type"]==="multipart/form-data")delete J["Content-Type"];let Z={...Q,method:"POST",headers:J,body:X};return fetch(z,Z)}static put(z,H,Q={}){return G.post(z,H,Object.assign({},{method:"PUT"},Q))}static delete(z,H,Q={}){return G.get(z,H,Object.assign({},{method:"DELETE"},Q))}static json(z,H={},Q={}){return G.get(z,H,Q).then((X)=>{return X.json()})}static blob(z,H={},Q={}){return G.get(z,H,Q).then((X)=>{return X.blob()})}}class w{static readRemote(z,H="base64",Q={}){return G.blob(z,{},Q).then((X)=>{return w.read(X,H)})}static read(z,H="text"){return new Promise((Q,X)=>{let Y=new FileReader;if(Y.onload=(J)=>{Q({event:J,content:J.target?.result??null})},Y.onerror=(J)=>{X(J)},H==="base64")Y.readAsDataURL(z);else if(H==="buffer")Y.readAsArrayBuffer(z);else Y.readAsText(z,"UTF-8")})}static create(z,H,Q="text/plain"){return Promise.resolve(new File([H],z,{type:Q}))}static extension(z){return z.split(".").pop()??""}static isImage(z){return["jpg","jpeg","png","gif","svg","webp","bmp"].indexOf(w.extension(z).toLowerCase())>-1}}class q{static fill(z,H){for(let Q in H){let X=A(`form[data-form='${z}'] [name='${Q}']`).get(0);if(typeof X<"u")switch(X.type){case"file":case"file[]":break;default:X.value=H[Q];break}}}static values(z){let H={};return A(`form[data-form='${z}'] [name]`).each((Q)=>{let X=Q,Y;switch(X.type){case"file[]":Y=X.files??void 0;break;case"file":Y=X.files?.[0];break;default:Y=X.value;break}if(typeof Y<"u"&&Y!==null)H[X.name]=Y}),H}}class I{static retina(){return window.devicePixelRatio>=2}static portrait(){return window.screen.orientation.type==="portrait-primary"||window.screen.orientation.type==="portrait-secondary"}static landscape(){return window.screen.orientation.type==="landscape-primary"||window.screen.orientation.type==="landscape-secondary"}static orientation(){return I.portrait()?"portrait":"landscape"}static electron(){let z=window;if(typeof z<"u"&&typeof z.process==="object"&&z.process?.type==="renderer")return!0;let H=typeof globalThis<"u"?globalThis.process:void 0;if(H&&typeof H.versions==="object"&&!!H.versions?.electron)return!0;if(typeof navigator==="object"&&typeof navigator.userAgent==="string"&&navigator.userAgent.indexOf("Electron")>=0)return!0;return!1}static cordova(){return!!window.cordova}static getPlatformString(){if(navigator.userAgentData?.platform)return navigator.userAgentData.platform;let z=navigator.userAgent;if(z.includes("Win"))return"Windows";if(z.includes("Mac"))return"macOS";if(z.includes("Linux"))return"Linux";if(z.includes("FreeBSD"))return"FreeBSD";if(z.includes("WebTV"))return"webOS";return""}static desktop(z="Any"){let H=I.getPlatformString();switch(z){case"Windows":return H==="Windows"||H.includes("Win");case"macOS":return H==="macOS"||H.includes("Mac");case"Linux":return H==="Linux"||H.includes("Linux");case"FreeBSD":return H==="FreeBSD"||H.includes("FreeBSD");case"webOS":return H==="webOS"||H.includes("WebTV");case"Any":default:return["Windows","macOS","Linux","FreeBSD","webOS"].some((Q)=>H===Q||H.includes(Q.replace("macOS","Mac").replace("webOS","WebTV")))}}static mobile(z="Any"){if(navigator.userAgentData?.mobile!==void 0&&z==="Any")return navigator.userAgentData.mobile;let H=navigator.userAgent;switch(z){case"Android":return/Android/i.test(H);case"iOS":return/iPhone|iPad|iPod/i.test(H);case"Opera":return/Opera Mini/i.test(H);case"Windows":return/Windows Phone|IEMobile|WPDesktop/i.test(H);case"BlackBerry":return/BlackBerry|BB10/i.test(H);case"Any":default:return/Android|iPhone|iPad|iPod|Windows Phone|IEMobile|WPDesktop|BlackBerry|BB10/i.test(H)}}static serviceWorkers(){if(typeof navigator<"u"){if("serviceWorker"in navigator&&location.protocol.indexOf("http")>-1)return!0}return!1}}class R{static image(z){return new Promise((H,Q)=>{let X=new Image;X.onload=()=>{H(X)},X.onerror=(Y)=>{Q(Y)},X.src=z})}static file(z){return G.blob(z)}}class F{name;version;store;id;numericVersion;upgrades;storage;constructor({name:z="",version:H="",store:Q=""}){if(this.name=z,this.version=H,this.store=Q,this.upgrades={},this.version==="")this.numericVersion=0;else this.numericVersion=parseInt(H.replace(/\./g,""));if(z!==""&&H!==""&&Q!=="")this.id=`${this.name}::${this.store}::${this.version}_`;else if(z!==""&&H!=="")this.id=`${this.name}::${this.version}_`;else if(z!=="")this.id=`${this.name}::_`;else this.id=""}configuration(z){if(z.name)this.name=z.name;if(z.version)this.version=z.version;if(z.store)this.store=z.store}open(){if(this.storage instanceof Storage)return Promise.resolve(this);else if(this.storage instanceof Promise)return this.storage;else{let z=new Promise((H)=>{let Q=[];if(this.version!==""){let X="";if(this.name!==""&&this.version!==""&&this.store!=="")X=`${this.name}::${this.store}::`;else if(this.name!==""&&this.version!=="")X=`${this.name}::`;let Y=Object.keys(window.localStorage).filter((J)=>{return J.indexOf(X)===0}).map((J)=>{return J.replace(X,"").split("_")[0]}).filter((J)=>{return J.indexOf("::")===-1}).sort();if(Y.length>0){let J=Y[0],Z=parseInt(J.replace(/\./g,""));if(Z<this.numericVersion){let K=Object.keys(this.upgrades).sort(),_=K.findIndex((W)=>{let[N]=W.split("::");return parseInt(N)===Z});if(_>-1)Q=K.slice(_).filter((W)=>{let[N,L]=W.split("::");return parseInt(N)<this.numericVersion&&parseInt(L)<=this.numericVersion});let B=`${this.name}::${J}_`;if(this.name!==""&&this.version!==""&&this.store!=="")B=`${this.name}::${this.store}::${J}_`;else if(this.name!==""&&this.version!=="")B=`${this.name}::${J}_`;let C=Object.keys(window.localStorage).filter((W)=>{return W.indexOf(B)===0}).map((W)=>{return W.replace(B,"")});for(let W of C){let N=window.localStorage.getItem(`${B}${W}`);if(N!==null)window.localStorage.setItem(this.id+W,N);window.localStorage.removeItem(`${B}${W}`)}}}}H({upgrades:Q})}).then(({upgrades:H})=>{return this.storage=window.localStorage,new Promise((Q)=>{let X=()=>Q(this);this._upgrade(H,X)})});return this.storage=z,z}}set(z,H){return this.open().then(()=>{if(typeof H==="object")this.storage.setItem(this.id+z,JSON.stringify(H));else this.storage.setItem(this.id+z,String(H));return Promise.resolve({key:z,value:H})})}update(z,H){return this.get(z).then((Q)=>{if(typeof Q==="object"&&Q!==null){if(typeof H==="object"&&H!==null)H=Object.assign({},Q,H);this.storage.setItem(this.id+z,JSON.stringify(H))}else this.storage.setItem(this.id+z,String(H));return Promise.resolve({key:z,value:H})}).catch(()=>{return this.set(z,H)})}get(z){return this.open().then(()=>{return new Promise((H,Q)=>{let X=this.storage.getItem(this.id+z);try{let Y=JSON.parse(X);if(Y&&typeof Y==="object")X=Y}catch{}if(typeof X<"u"&&X!==null)H(X);else Q()})})}getAll(){return this.keys().then((z)=>{let H={},Q=[];for(let X of z)Q.push(this.get(X).then((Y)=>{H[X]=Y}));return Promise.all(Q).then(()=>H)})}contains(z){return this.keys().then((H)=>{if(H.includes(z))return Promise.resolve();else return Promise.reject()})}upgrade(z,H,Q){let X=`${parseInt(z.replace(/\./g,""))}::${parseInt(H.replace(/\./g,""))}`;return this.upgrades[X]=Q,Promise.resolve()}_upgrade(z,H){if(z.length>0)this.upgrades[z[0]].call(this,this).then(()=>{this._upgrade(z.slice(1),H)}).catch((Q)=>console.error(Q));else H()}rename(z){if(this.name!==z)return this.keys().then((H)=>{let Q=this.id;if(this.name=z,this.name!==""&&this.version!==""&&this.store!=="")this.id=`${this.name}::${this.store}::${this.version}_`;else if(this.name!==""&&this.version!=="")this.id=`${this.name}::${this.version}_`;else if(this.name!=="")this.id=`${this.name}::_`;else this.id="";let X=[];for(let Y of H){let J=this.storage.getItem(`${Q}${Y}`);if(J!==null)X.push(this.set(Y,J).then(()=>{this.storage.removeItem(`${Q}${Y}`)}))}return Promise.all(X).then(()=>{})});else return Promise.reject()}key(z,H=!1){return this.open().then(()=>{let Q=this.storage.key(z);if(H===!0)return Promise.resolve(Q??"");else return Promise.resolve((Q??"").replace(this.id,""))})}keys(z=!1){return this.open().then(()=>{return Promise.resolve(Object.keys(this.storage).filter((H)=>{return H.indexOf(this.id)===0}).map((H)=>{if(z===!0)return H;else return H.replace(this.id,"")}))})}remove(z){return this.get(z).then((H)=>{return this.storage.removeItem(this.id+z),Promise.resolve(H)})}clear(){return this.keys().then((z)=>{for(let H of z)this.remove(H);return Promise.resolve()})}}class P extends F{constructor({name:z="",version:H="",store:Q=""}){super({name:z,version:H,store:Q})}open(){if(typeof this.storage>"u")this.storage=window.sessionStorage;return Promise.resolve(this)}}class U{name;version;store;props;index;keyPath;numericVersion;upgrades;storage;constructor({name:z="",version:H="",store:Q="",props:X={},index:Y={}}){if(this.name=z,this.version=H,this.store=Q,this.props=X||{},this.index=Y,this.keyPath=X?.keyPath||"id",this.upgrades={},this.version==="")this.numericVersion=0;else this.numericVersion=parseInt(H.replace(/\./g,""))}configuration(z){if(z.name)this.name=z.name;if(z.version)this.version=z.version;if(z.store)this.store=z.store}open(){if(this.name==="")return console.error("No name has been defined for IndexedDB space."),Promise.reject();if(this.store==="")return console.error("No store has been defined for IndexedDB space."),Promise.reject();if(this.storage instanceof IDBDatabase)return Promise.resolve(this);else if(this.storage instanceof Promise)return this.storage;else{let z,H=new Promise((Q,X)=>{let Y=[],J=window.indexedDB.open(this.name,this.numericVersion);J.onerror=(Z)=>{X(Z)},J.onsuccess=(Z)=>{Q({storage:Z.target.result,upgrades:Y})},J.onupgradeneeded=(Z)=>{z=Z;let K=Z.target.result;if(Z.oldVersion<1){let B=K.createObjectStore(this.store,this.props);for(let C of Object.keys(this.index)){let W=this.index[C];B.createIndex(W.name,W.field,W.props)}}else{let B=Object.keys(this.upgrades).sort(),C=B.findIndex((W)=>{let[N]=W.split("::");return parseInt(N)===Z.oldVersion});if(C>-1)Y=B.slice(C).filter((W)=>{let[N,L]=W.split("::");return parseInt(N)<this.numericVersion&&parseInt(L)<=this.numericVersion})}let _=Z.target.transaction;if(_)_.addEventListener("complete",()=>{Q({storage:K,upgrades:Y})})}}).then(({storage:Q,upgrades:X})=>{return this.storage=Q,new Promise((Y)=>{let J=()=>Y(this);this._upgrade(X,J,z)})});return this.storage=H,H}}set(z=null,H){return this.open().then(()=>{return new Promise((Q,X)=>{let Y=this.storage.transaction(this.store,"readwrite").objectStore(this.store),J;if(z!==null){let Z={};Z[this.keyPath]=z,J=Y.put(Object.assign({},Z,H))}else J=Y.add(H);J.addEventListener("success",(Z)=>{Q({key:String(Z.target.result),value:H})}),J.addEventListener("error",(Z)=>{X(Z)})})})}update(z,H){return this.get(z).then((Q)=>{if(typeof Q>"u")return this.set(z,H);return new Promise((X,Y)=>{let Z=this.storage.transaction(this.store,"readwrite").objectStore(this.store).put(Object.assign({},Q,H));Z.addEventListener("success",(K)=>{X({key:String(K.target.result),value:H})}),Z.addEventListener("error",(K)=>{Y(K)})})})}get(z){return this.open().then(()=>{return new Promise((H,Q)=>{let Y=this.storage.transaction(this.store).objectStore(this.store).get(z);Y.addEventListener("success",(J)=>{let Z=J.target.result;if(typeof Z<"u"&&Z!==null)H(Z);else Q()}),Y.addEventListener("error",(J)=>{Q(J)})})})}getAll(){return this.open().then(()=>{return new Promise((z,H)=>{let X=this.storage.transaction(this.store).objectStore(this.store).getAll();X.addEventListener("success",(Y)=>{let J={};Y.target.result.forEach((K)=>{let _=K[this.keyPath];delete K[this.keyPath],J[_]=K}),z(J)}),X.addEventListener("error",(Y)=>{H(Y)})})})}contains(z){return this.get(z).then(()=>{return Promise.resolve()})}upgrade(z,H,Q){let X=`${parseInt(z.replace(/\./g,""))}::${parseInt(H.replace(/\./g,""))}`;return this.upgrades[X]=Q,Promise.resolve()}_upgrade(z,H,Q){if(z.length>0)this.upgrades[z[0]].call(this,this,Q).then(()=>{this._upgrade(z.slice(1),H,Q)}).catch((X)=>console.error(X));else H()}rename(){return Promise.reject()}key(){return Promise.reject()}keys(){return this.open().then(()=>{return new Promise((z,H)=>{let X=this.storage.transaction(this.store,"readwrite").objectStore(this.store).getAllKeys();X.addEventListener("success",(Y)=>{z(Y.target.result.map(String))},!1),X.addEventListener("error",(Y)=>{H(Y)},!1)})})}remove(z){return this.get(z).then((H)=>{return new Promise((Q,X)=>{let J=this.storage.transaction(this.store,"readwrite").objectStore(this.store).delete(z);J.addEventListener("success",()=>{Q(H)},!1),J.addEventListener("error",(Z)=>{X(Z)},!1)})})}clear(){return this.open().then(()=>{return new Promise((z,H)=>{let X=this.storage.transaction(this.store,"readwrite").objectStore(this.store).clear();X.addEventListener("success",()=>{z()},!1),X.addEventListener("error",(Y)=>{H(Y)},!1)})})}}class E{name;version;store;endpoint;props;storage;constructor({name:z="",version:H="",store:Q="",endpoint:X="",props:Y={}}){this.name=z,this.version=H,this.store=Q,this.endpoint=`${X}${Q}/`,this.props=Y}configuration(z){if(z.name)this.name=z.name;if(z.version)this.version=z.version;if(z.store)this.store=z.store}open(){if(typeof this.storage>"u")this.storage=G;return Promise.resolve(this)}set(z,H){return this.open().then(()=>{return this.storage.post(this.endpoint+z,H,this.props).then((Q)=>{return Promise.resolve({key:z,value:Q.json()})})})}update(z,H){return this.get(z).then((Q)=>{let X=Object.assign({},Q,H);return this.storage.put(this.endpoint+z,X,this.props).then((Y)=>{return Promise.resolve({key:z,value:Y.json()})})})}get(z){return this.open().then(()=>{return this.storage.json(this.endpoint+z,{},this.props)})}getAll(){return this.open().then(()=>{return this.storage.json(this.endpoint,{},this.props)})}contains(z){return this.keys().then((H)=>{if(H.includes(z))return Promise.resolve();else return Promise.reject()})}upgrade(){return Promise.reject()}rename(){return Promise.reject()}key(){return Promise.reject()}keys(){return this.open().then(()=>{return this.storage.json(this.endpoint,{keys:!0},this.props)})}remove(z){return this.open().then(()=>{return this.storage.delete(this.endpoint+z,{},this.props).then((H)=>{return H.json()})})}clear(){return this.open().then(()=>{return this.storage.delete(this.endpoint,{},this.props).then(()=>{})})}}var O={LocalStorage:F,SessionStorage:P,IndexedDB:U,RemoteStorage:E};class j{_configuration;adapter;callbacks;transformations;constructor(z=O.LocalStorage,H={}){this._configuration=Object.assign({},{name:"",version:"",store:""},H),this.adapter=new z(this._configuration),this.callbacks={create:[],update:[],delete:[]},this.transformations={}}configuration(z=null){if(z!==null){if(this._configuration=Object.assign({},this._configuration,z),this.adapter.configuration)this.adapter.configuration(z)}else return this._configuration}open(){return this.adapter.open().then(()=>{return Promise.resolve(this)})}set(z,H){for(let Q of Object.keys(this.transformations))if(typeof this.transformations[Q].set==="function")H=this.transformations[Q].set(z,H);return this.adapter.set(z,H).then(({key:Q,value:X})=>{for(let Y of this.callbacks.create)Y.call(null,Q,X);return Promise.resolve({key:Q,value:X})})}update(z,H){for(let Q of Object.keys(this.transformations))if(typeof this.transformations[Q].set==="function")H=this.transformations[Q].set(z,H);return this.adapter.update(z,H).then(({key:Q,value:X})=>{for(let Y of this.callbacks.update)Y.call(null,Q,X);return Promise.resolve({key:Q,value:X})})}get(z){return this.adapter.get(z).then((H)=>{for(let Q of Object.keys(this.transformations))if(typeof this.transformations[Q].get==="function")H=this.transformations[Q].get(z,H);return H})}getAll(){return this.adapter.getAll().then((z)=>{for(let H of Object.keys(z))for(let Q of Object.keys(this.transformations))if(typeof this.transformations[Q].get==="function")z[H]=this.transformations[Q].get(H,z[H]);return z})}each(z){return this.getAll().then((H)=>{let Q=[];for(let X of Object.keys(H))Q.push(z.call(this,X,H[X]));return Promise.all(Q)})}contains(z){return this.adapter.contains(z)}upgrade(z,H,Q){return this.adapter.upgrade(z,H,Q).then(()=>{return Promise.resolve(this)})}rename(z){return this.adapter.rename(z)}onCreate(z){this.callbacks.create.push(z)}onUpdate(z){this.callbacks.update.push(z)}onDelete(z){this.callbacks.delete.push(z)}addTransformation({id:z,get:H,set:Q}){this.transformations[z]={id:z,get:H,set:Q}}removeTransformation(z){delete this.transformations[z]}key(z,H=!1){return this.adapter.key(z,H)}keys(z=!1){return this.adapter.keys(z)}remove(z){return this.adapter.remove(z).then((H)=>{for(let Q of this.callbacks.delete)Q.call(null,z,H)})}clear(){return this.adapter.clear()}}class x{static capitalize(z){return z.replace(/\w\S*/g,(H)=>{return H.charAt(0).toUpperCase()+H.substring(1).toLowerCase()})}static suffix(z,H){let Q="",X=H.indexOf(z);if(X!==-1)X+=z.length,Q=H.substring(X);return Q}static selection(){let z=window.getSelection();if(z)return z.toString();return""}static prefix(z,H){let Q="",X=H.indexOf(z);if(X!==-1)Q=H.substring(0,X);return Q}static friendly(z){let H=[/[áàâãªä]/g,/[ÁÀÂÃÄ]/g,/[ÍÌÎÏ]/g,/[íìîï]/g,/[éèêë]/g,/[ÉÈÊË]/g,/[óòôõºö]/g,/[ÓÒÔÕÖ]/g,/[úùûü]/g,/[ÚÙÛÜ]/g,/ç/g,/Ç/g,/ñ/g,/Ñ/g,/_/g,/[''‹›<>']/g,/[""«»„"]/g,/[(){}[\]]/g,/[?¿!¡#$%&^*´`~/°|]/g,/[,.:;]/g,/ /g],Q=["a","A","I","i","e","E","o","O","u","U","c","C","n","N","-","","","","","","-"],X=z;for(let Y=0;Y<H.length;Y++)X=X.replace(H[Y],Q[Y]);return X}}class V{static callAsync(z,H,...Q){try{let X=z.apply(H,Q);if(X instanceof Promise)return X;else return Promise.resolve(X)}catch(X){return Promise.reject(X)}}static uuid(){if(typeof crypto<"u"&&crypto.getRandomValues)return"10000000-1000-4000-8000-100000000000".replace(/[018]/g,(z)=>{let H=parseInt(z,10);return(H^crypto.getRandomValues(new Uint8Array(1))[0]&15>>H/4).toString(16)});else{let z=()=>Math.floor((1+Math.random())*65536).toString(16).substring(1);return z()+z()+"-"+z()+"-"+z()+"-"+z()+"-"+z()+z()+z()}}}export{V as Util,x as Text,O as SpaceAdapter,j as Space,P as SessionStorage,G as Request,E as RemoteStorage,R as Preload,I as Platform,F as LocalStorage,U as IndexedDB,q as Form,w as FileSystem,M as DebugLevel,T as Debug,$ as DOM,D as $_ready,A as $_};
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=AA6F8848C88AE2F064756E2164756E21
|
|
4
4
|
//# sourceMappingURL=artemis.js.map
|
package/dist/artemis.js.map
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"sources": ["../src/Debug.ts", "../src/DOM.ts", "../src/Request.ts", "../src/FileSystem.ts", "../src/Form.ts", "../src/Platform.ts", "../src/Preload.ts", "../src/SpaceAdapter/LocalStorage.ts", "../src/SpaceAdapter/SessionStorage.ts", "../src/SpaceAdapter/IndexedDB.ts", "../src/SpaceAdapter/RemoteStorage.ts", "../src/Space.ts", "../src/Text.ts", "../src/Util.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"/**\n * ==============================\n * Debug\n * ==============================\n */\n\n\n/**\n * Debug level enum\n */\nexport enum DebugLevel {\n\tNONE = 0,\n\tERROR = 1,\n\tWARNING = 2,\n\tINFO = 3,\n\tDEBUG = 4,\n\tALL = 5\n}\n\n/**\n * This class acts as a proxy for the console. It shares the same methods as the\n * web console but they are conditioned to a debug level.\n */\nexport class Debug {\n\tprivate static _level: DebugLevel = DebugLevel.NONE;\n\n\t/**\n\t * Set or get the log level\n\t *\n\t * @param level - The debug level to use\n\t * @returns The current debug level\n\t */\n\tstatic level(level?: DebugLevel): DebugLevel {\n\t\tif (typeof level === 'number') {\n\t\t\tthis._level = level;\n\t\t}\n\t\treturn this._level;\n\t}\n\n\t/**\n\t * Log the given elements.\n\t * Logs will only be made if the level is set to DEBUG or above\n\t *\n\t * @param args - Arguments to log\n\t */\n\tstatic log(...args: unknown[]): void {\n\t\tif (this.level() >= DebugLevel.DEBUG) {\n\t\t\tconsole.log(...args);\n\t\t}\n\t}\n\n\t/**\n\t * Show a debugging log\n\t * Logs will only be made if the level is set DEBUG or above\n\t *\n\t * @param args - Arguments to log\n\t */\n\tstatic debug(...args: unknown[]): void {\n\t\tif (this.level() >= DebugLevel.DEBUG) {\n\t\t\tconsole.debug(...args);\n\t\t}\n\t}\n\n\t/**\n\t * Show an info log\n\t * Logs will only be made if the level is set to INFO or above\n\t *\n\t * @param args - Arguments to log\n\t */\n\tstatic info(...args: unknown[]): void {\n\t\tif (this.level() >= DebugLevel.INFO) {\n\t\t\tconsole.info(...args);\n\t\t}\n\t}\n\n\t/**\n\t * Show an error log\n\t * Logs will only be made if the level is set to ERROR or above\n\t *\n\t * @param args - Arguments to log\n\t */\n\tstatic error(...args: unknown[]): void {\n\t\tif (this.level() >= DebugLevel.ERROR) {\n\t\t\tconsole.error(...args);\n\t\t}\n\t}\n\n\t/**\n\t * Show a warning log\n\t * Logs will only be made if the level is set to WARNING or above\n\t *\n\t * @param args - Arguments to log\n\t */\n\tstatic warning(...args: unknown[]): void {\n\t\tif (this.level() >= DebugLevel.WARNING) {\n\t\t\tconsole.warn(...args);\n\t\t}\n\t}\n\n\t/**\n\t * Show data as a table\n\t * Table will only be made if the level is set to DEBUG or above\n\t *\n\t * @param args - Arguments to display as table\n\t */\n\tstatic table(...args: unknown[]): void {\n\t\tif (this.level() >= DebugLevel.DEBUG) {\n\t\t\tconsole.table(...args);\n\t\t}\n\t}\n\n\t/**\n\t * Start an indented group\n\t *\n\t * @param args - Group label arguments\n\t */\n\tstatic group(...args: unknown[]): void {\n\t\tif (this.level() >= DebugLevel.DEBUG) {\n\t\t\tconsole.group(...args);\n\t\t}\n\t}\n\n\t/**\n\t * Start an indented group collapsed by default\n\t *\n\t * @param args - Group label arguments\n\t */\n\tstatic groupCollapsed(...args: unknown[]): void {\n\t\tif (this.level() >= DebugLevel.DEBUG) {\n\t\t\tconsole.groupCollapsed(...args);\n\t\t}\n\t}\n\n\t/**\n\t * End a previously started group\n\t */\n\tstatic groupEnd(): void {\n\t\tif (this.level() >= DebugLevel.DEBUG) {\n\t\t\tconsole.groupEnd();\n\t\t}\n\t}\n\n\t/**\n\t * Start a timer\n\t * The timer will only start if the level is set to DEBUG or above\n\t *\n\t * @param label - Timer label\n\t */\n\tstatic time(label?: string): void {\n\t\tif (this.level() >= DebugLevel.DEBUG) {\n\t\t\tconsole.time(label);\n\t\t}\n\t}\n\n\t/**\n\t * Log the time a timer has been running for\n\t * The time will only be logged if the level is set to DEBUG or above\n\t *\n\t * @param label - Timer label\n\t * @param args - Additional arguments to log\n\t */\n\tstatic timeLog(label?: string, ...args: unknown[]): void {\n\t\tif (this.level() >= DebugLevel.DEBUG) {\n\t\t\tconsole.timeLog(label, ...args);\n\t\t}\n\t}\n\n\t/**\n\t * End a timer\n\t * The timer will only be available if the level is set to DEBUG or above\n\t *\n\t * @param label - Timer label\n\t */\n\tstatic timeEnd(label?: string): void {\n\t\tif (this.level() >= DebugLevel.DEBUG) {\n\t\t\tconsole.timeEnd(label);\n\t\t}\n\t}\n\n\t/**\n\t * Show the stack trace\n\t * The stack trace will only be available if the level is set to DEBUG or above\n\t *\n\t * @param args - Arguments to log with trace\n\t */\n\tstatic trace(...args: unknown[]): void {\n\t\tif (this.level() >= DebugLevel.DEBUG) {\n\t\t\tconsole.trace(...args);\n\t\t}\n\t}\n}\n\n",
|
|
6
|
-
"/**\n * ==============================\n * DOM\n * ==============================\n */\n\n/**\n * Type for elements that can be used as a selector\n */\nexport type DOMSelector = string | Element | Element[] | NodeList | NodeListOf<Element> | HTMLElement[] | DOM | null;\n\n/**\n * Type for style properties object\n */\nexport type StyleProperties = Record<string, string | number>;\n\n/**\n * Type for offset object\n */\nexport interface DOMOffset {\n\ttop: number;\n\tleft: number;\n}\n\n/**\n * Event callback type\n */\nexport type EventCallback = (event: Event) => void;\n\n/**\n * Element callback type\n */\nexport type ElementCallback = (element: Element) => void;\n\n/**\n * Simple DOM manipulation functions\n */\nexport class DOM {\n\tpublic collection: Element[] | NodeListOf<Element>;\n\tpublic length: number;\n\tpublic _selector: DOMSelector;\n\n\t/**\n\t * Create a new DOM object\n\t *\n\t * @param selector - Selector or DOM element to use\n\t */\n\tconstructor(selector: DOMSelector) {\n\t\tif (selector === null) {\n\t\t\tthis.collection = [];\n\t\t\tthis.length = 0;\n\t\t\tthis._selector = null;\n\t\t\treturn;\n\t\t}\n\n\t\tif (typeof selector === 'string') {\n\t\t\tthis.collection = document.querySelectorAll(selector);\n\t\t\tthis.length = this.collection.length;\n\t\t\tthis._selector = selector;\n\t\t} else if (selector instanceof NodeList) {\n\t\t\tthis.collection = selector as NodeListOf<Element>;\n\t\t\tthis.length = selector.length;\n\t\t\tthis._selector = selector;\n\t\t} else if (selector instanceof DOM) {\n\t\t\tthis.collection = selector.collection;\n\t\t\tthis.length = this.collection.length;\n\t\t\tthis._selector = selector._selector;\n\t\t} else if (selector instanceof HTMLElement) {\n\t\t\tthis.collection = [selector];\n\t\t\tthis.length = this.collection.length;\n\t\t\tthis._selector = selector;\n\t\t} else if (Array.isArray(selector)) {\n\t\t\tthis.collection = selector;\n\t\t\tthis.length = selector.length;\n\t\t\tthis._selector = selector;\n\t\t} else {\n\t\t\tthis.collection = [];\n\t\t\tthis.length = 0;\n\t\t\tthis._selector = null;\n\t\t}\n\t}\n\n\t/**\n\t * Hide elements by setting their `display` property to 'none'.\n\t *\n\t * @returns Current instance\n\t */\n\thide(): this {\n\t\tfor (const element of this.collection) {\n\t\t\t(element as HTMLElement).style.display = 'none';\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Show elements by setting their `display` property to the given value.\n\t *\n\t * @param display - Display property to set\n\t * @returns Current instance\n\t */\n\tshow(display: string = 'block'): this {\n\t\tfor (const element of this.collection) {\n\t\t\t(element as HTMLElement).style.display = display;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a class to the classList object\n\t *\n\t * @param newClass - Class name to add\n\t * @returns Current instance\n\t */\n\taddClass(newClass: string): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.classList.add(newClass);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Remove a given class from the classList object\n\t *\n\t * @param oldClass - Class to remove. If it's empty or null, all classes will be removed\n\t * @returns Current instance\n\t */\n\tremoveClass(oldClass: string | null = null): this {\n\t\tif (oldClass !== null) {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\telement.classList.remove(oldClass);\n\t\t\t}\n\t\t} else {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\twhile (element.classList.length > 0) {\n\t\t\t\t\tconst className = element.classList.item(0);\n\t\t\t\t\tif (className) {\n\t\t\t\t\t\telement.classList.remove(className);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Toggle between two classes\n\t *\n\t * @param classes - Space separated class names\n\t * @returns Current instance\n\t */\n\ttoggleClass(classes: string): this {\n\t\tconst classList = classes.split(' ');\n\t\tfor (const element of this.collection) {\n\t\t\tfor (const className of classList) {\n\t\t\t\telement.classList.toggle(className);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Check if ALL elements in the collection have the given class\n\t *\n\t * @param classToCheck - Class name to check for\n\t * @returns Whether all elements have the class\n\t */\n\thasClass(classToCheck: string): boolean {\n\t\tfor (const element of this.collection) {\n\t\t\tif (!element.classList.contains(classToCheck)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t/**\n\t * Get or set the value from the elements\n\t *\n\t * @param value - Value to set to the elements\n\t * @returns If a value is provided, returns current instance. Otherwise returns the value(s) - single value if one element, array if multiple.\n\t */\n\tvalue(value?: string): this | string | string[] | undefined {\n\t\tif (typeof value !== 'undefined') {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\t(element as HTMLInputElement).value = value;\n\t\t\t}\n\t\t\treturn this;\n\t\t} else {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn (this.collection[0] as HTMLInputElement).value;\n\t\t\t}\n\t\t\tconst values: string[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push((element as HTMLInputElement).value);\n\t\t\t}\n\t\t\treturn values;\n\t\t}\n\t}\n\n\t/**\n\t * Focus on the first element matching the selector\n\t *\n\t * @returns Current instance\n\t */\n\tfocus(): this {\n\t\tif (this.length > 0) {\n\t\t\t(this.collection[0] as HTMLElement).focus();\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback for the 'click' event on every element matching the selector\n\t *\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\tclick(callback: EventCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.addEventListener('click', callback, false);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback for the 'keyup' event on every element matching the selector\n\t *\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\tkeyup(callback: EventCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.addEventListener('keyup', callback, false);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback for the 'keydown' event on every element matching the selector\n\t *\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\tkeydown(callback: EventCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.addEventListener('keydown', callback, false);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback for the 'submit' event on every element matching the selector\n\t *\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\tsubmit(callback: EventCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.addEventListener('submit', callback, false);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback for the 'change' event on every element matching the selector\n\t *\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\tchange(callback: EventCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.addEventListener('change', callback, false);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback for the 'scroll' event on every element matching the selector\n\t *\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\tscroll(callback: EventCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.addEventListener('scroll', callback, false);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback function to a given event\n\t *\n\t * @param event - Event to add the listener to\n\t * @param target - Target element on which to detect the event or callback function\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\ton(event: string, target: string | EventCallback, callback?: EventCallback): this {\n\t\tconst events = event.split(' ');\n\t\tfor (const element of this.collection) {\n\t\t\tfor (const evt of events) {\n\t\t\t\t// Check if no target was defined and just a function was provided\n\t\t\t\tif (typeof target === 'function') {\n\t\t\t\t\telement.addEventListener(evt, target, false);\n\t\t\t\t} else if (typeof target === 'string' && typeof callback === 'function') {\n\t\t\t\t\telement.addEventListener(evt, (e: Event) => {\n\t\t\t\t\t\tif (!e.target) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst domInstance = new DOM(e.target as Element);\n\t\t\t\t\t\tconst targetElement = domInstance.closestParent(target, this._selector as string);\n\n\t\t\t\t\t\tif (targetElement.exists()) {\n\t\t\t\t\t\t\tcallback.call(targetElement.get(0), e);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Filter from the current collection to only those matching the new selector\n\t * Applies to ALL elements in the collection\n\t *\n\t * @param selector - Selector to filter the collection with\n\t * @returns New DOM instance with the filtered collection\n\t */\n\tfilter(selector: string): DOM {\n\t\tconst filtered: HTMLElement[] = [];\n\t\tfor (const element of this.collection) {\n\t\t\tif (element.matches(selector)) {\n\t\t\t\tfiltered.push(element as HTMLElement);\n\t\t\t}\n\t\t}\n\t\treturn new DOM(filtered.length > 0 ? filtered : null);\n\t}\n\n\t/**\n\t * Check if there are any elements that match the selector.\n\t *\n\t * @returns Whether elements matching the selector existed or not\n\t */\n\texists(): boolean {\n\t\treturn this.length > 0;\n\t}\n\n\t/**\n\t * Get or set a `data` property\n\t *\n\t * @param name - Name of the data property\n\t * @param value - Value of the property\n\t * @returns If no value is provided, returns the value(s) - single value if one element, array if multiple.\n\t */\n\tdata(name: string, value?: string): this | string | string[] | undefined {\n\t\tif (typeof value !== 'undefined') {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\t(element as HTMLElement).dataset[name] = value;\n\t\t\t}\n\t\t\treturn this;\n\t\t} else {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn (this.collection[0] as HTMLElement).dataset[name];\n\t\t\t}\n\t\t\tconst values: (string | undefined)[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push((element as HTMLElement).dataset[name]);\n\t\t\t}\n\t\t\treturn values as string[];\n\t\t}\n\t}\n\n\t/**\n\t * Remove a data property from all the elements on the collection given its name.\n\t *\n\t * @param name - Name of the data property to remove\n\t * @returns Current instance\n\t */\n\tremoveData(name: string): this {\n\t\tfor (const element of this.collection) {\n\t\t\tdelete (element as HTMLElement).dataset[name];\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get or set the text of elements\n\t *\n\t * @param value - Value to set the text to\n\t * @returns If no value is provided, returns the text(s) - single value if one element, array if multiple.\n\t */\n\ttext(value?: string): this | string | (string | null)[] | null | undefined {\n\t\tif (typeof value !== 'undefined') {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\telement.textContent = value;\n\t\t\t}\n\t\t\treturn this;\n\t\t} else {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn this.collection[0].textContent;\n\t\t\t}\n\t\t\tconst values: (string | null)[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push(element.textContent);\n\t\t\t}\n\t\t\treturn values;\n\t\t}\n\t}\n\n\t/**\n\t * Get or set the inner HTML of elements\n\t *\n\t * @param value - Value to set the HTML to\n\t * @returns If no value is provided, returns the HTML(s) - single value if one element, array if multiple.\n\t */\n\thtml(value?: string): this | string | string[] | undefined {\n\t\tif (typeof value !== 'undefined') {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\telement.innerHTML = value;\n\t\t\t}\n\t\t\treturn this;\n\t\t} else {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn this.collection[0].innerHTML;\n\t\t\t}\n\t\t\tconst values: string[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push(element.innerHTML);\n\t\t\t}\n\t\t\treturn values;\n\t\t}\n\t}\n\n\t/**\n\t * Append an element to ALL elements in the collection\n\t *\n\t * @param element - String representation of the element to add or an Element\n\t * @returns Current instance\n\t */\n\tappend(element: string | Element): this {\n\t\tfor (const el of this.collection) {\n\t\t\tif (typeof element === 'string') {\n\t\t\t\tconst div = document.createElement('div');\n\t\t\t\tdiv.innerHTML = element.trim();\n\t\t\t\tif (div.firstChild) {\n\t\t\t\t\tel.appendChild(div.firstChild.cloneNode(true));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tel.appendChild(element.cloneNode(true));\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Prepend an element to ALL elements in the collection\n\t *\n\t * @param element - String representation of the element to add or an Element\n\t * @returns Current instance\n\t */\n\tprepend(element: string | Element): this {\n\t\tfor (const el of this.collection) {\n\t\t\tif (typeof element === 'string') {\n\t\t\t\tconst div = document.createElement('div');\n\t\t\t\tdiv.innerHTML = element.trim();\n\t\t\t\tif (div.firstChild) {\n\t\t\t\t\tif (el.childNodes.length > 0) {\n\t\t\t\t\t\tel.insertBefore(div.firstChild.cloneNode(true), el.childNodes[0]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tel.appendChild(div.firstChild.cloneNode(true));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (el.childNodes.length > 0) {\n\t\t\t\t\tel.insertBefore(element.cloneNode(true), el.childNodes[0]);\n\t\t\t\t} else {\n\t\t\t\t\tel.appendChild(element.cloneNode(true));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Iterate over the collection of elements matching the selector\n\t *\n\t * @param callback - Callback to run for every element\n\t * @returns Current instance\n\t */\n\teach(callback: ElementCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\tcallback(element);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get an element from the collection given its index\n\t *\n\t * @param index - Index of the element to retrieve\n\t * @returns HTML Element in the position indicated by the index\n\t */\n\tget(index: number): Element | undefined {\n\t\treturn this.collection[index];\n\t}\n\n\t/**\n\t * Get the first element in the collection\n\t *\n\t * @returns DOM instance with the first element\n\t */\n\tfirst(): DOM {\n\t\tif (this.length > 0) {\n\t\t\treturn new DOM(this.collection[0] as HTMLElement);\n\t\t}\n\t\treturn new DOM(null);\n\t}\n\n\t/**\n\t * Get the last element in the collection\n\t *\n\t * @returns DOM instance with the last element\n\t */\n\tlast(): DOM {\n\t\tif (this.length > 0) {\n\t\t\treturn new DOM(this.collection[this.collection.length - 1] as HTMLElement);\n\t\t}\n\t\treturn new DOM(null);\n\t}\n\n\t/**\n\t * Check if any element in the collection is visible by checking their\n\t * display, offsetWidth and offsetHeight properties\n\t *\n\t * @returns Whether any element is visible\n\t */\n\tisVisible(): boolean {\n\t\tfor (const element of this.collection) {\n\t\t\tconst el = element as HTMLElement;\n\t\t\tif (el.style.display !== 'none' && el.offsetWidth > 0 && el.offsetHeight > 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Get the parents of ALL elements in the collection\n\t *\n\t * @returns DOM instance of the parent elements\n\t */\n\tparent(): DOM {\n\t\tconst parents: HTMLElement[] = [];\n\t\tfor (const element of this.collection) {\n\t\t\tif (element.parentElement && !parents.includes(element.parentElement)) {\n\t\t\t\tparents.push(element.parentElement);\n\t\t\t}\n\t\t}\n\t\treturn new DOM(parents.length > 0 ? parents : null);\n\t}\n\n\t/**\n\t * Find elements that match the given selector in ALL elements of the collection\n\t *\n\t * @param selector - Selector to find elements with\n\t * @returns DOM instance with found elements\n\t */\n\tfind(selector: string): DOM {\n\t\tconst found: HTMLElement[] = [];\n\t\tfor (const element of this.collection) {\n\t\t\tconst results = element.querySelectorAll(selector);\n\t\t\tfor (const result of results) {\n\t\t\t\tif (!found.includes(result as HTMLElement)) {\n\t\t\t\t\tfound.push(result as HTMLElement);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn new DOM(found.length > 0 ? found : null);\n\t}\n\n\t/**\n\t * Get the top and left offsets of elements in the collection\n\t *\n\t * @returns Single offset object if one element, array of offset objects if multiple\n\t */\n\toffset(): DOMOffset | DOMOffset[] | undefined {\n\t\tif (this.length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (this.length === 1) {\n\t\t\tconst rect = this.collection[0].getBoundingClientRect();\n\t\t\treturn {\n\t\t\t\ttop: rect.top + document.body.scrollTop,\n\t\t\t\tleft: rect.left + document.body.scrollLeft\n\t\t\t};\n\t\t}\n\t\tconst offsets: DOMOffset[] = [];\n\t\tfor (const element of this.collection) {\n\t\t\tconst rect = element.getBoundingClientRect();\n\t\t\toffsets.push({\n\t\t\t\ttop: rect.top + document.body.scrollTop,\n\t\t\t\tleft: rect.left + document.body.scrollLeft\n\t\t\t});\n\t\t}\n\t\treturn offsets;\n\t}\n\n\t/**\n\t * Find the closest element matching the given selector for ALL elements.\n\t * This bubbles up from the initial object and then follows to its parents.\n\t *\n\t * @param selector - Selector to match the closest element with\n\t * @returns DOM instance with the closest HTML elements matching the selector\n\t */\n\tclosest(selector: string): DOM {\n\t\tconst found: HTMLElement[] = [];\n\t\tfor (const element of this.collection) {\n\t\t\tconst closest = element.closest(selector) as HTMLElement | null;\n\t\t\tif (closest && !found.includes(closest)) {\n\t\t\t\tfound.push(closest);\n\t\t\t}\n\t\t}\n\t\treturn new DOM(found.length > 0 ? found : null);\n\t}\n\n\t/**\n\t * Find the closest parent element matching the given selector. This bubbles up\n\t * from the initial object and then follows to its parents.\n\t *\n\t * @param selector - Selector to match the closest element with\n\t * @param limit - Selector for limit element. If the limit is reached and no element matching the provided selector was found, it will cause an early return.\n\t * @returns DOM instance with the closest HTML element matching the selector\n\t */\n\tclosestParent(selector: string, limit?: string): DOM {\n\t\tif (this.length === 0) {\n\t\t\treturn new DOM(null);\n\t\t}\n\n\t\tlet current: Element | null = this.collection[0];\n\t\twhile (current) {\n\t\t\t// Check if the current element matches the selector\n\t\t\tif (current.matches(selector)) {\n\t\t\t\treturn new DOM(current as HTMLElement);\n\t\t\t}\n\n\t\t\t// Check if we hit the limit\n\t\t\tif (typeof limit === 'string' && current.matches(limit)) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcurrent = current.parentElement;\n\t\t}\n\t\treturn new DOM(null);\n\t}\n\n\t/**\n\t * Get or set the value of a given attribute\n\t *\n\t * @param attribute - Attribute's name\n\t * @param value - Value to set the attribute to\n\t * @returns If no value is provided, returns the attribute value(s) - single value if one element, array if multiple.\n\t */\n\tattribute(attribute: string, value?: string | number): this | string | (string | null)[] | null | undefined {\n\t\tif (typeof value !== 'undefined') {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\telement.setAttribute(attribute, String(value));\n\t\t\t}\n\t\t\treturn this;\n\t\t} else {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn this.collection[0].getAttribute(attribute);\n\t\t\t}\n\t\t\tconst values: (string | null)[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push(element.getAttribute(attribute));\n\t\t\t}\n\t\t\treturn values;\n\t\t}\n\t}\n\n\t/**\n\t * Check whether ALL elements have an attribute\n\t *\n\t * @param attribute - The name of the attribute to check existence for\n\t * @returns Whether all elements have the attribute\n\t */\n\thasAttribute(attribute: string): boolean {\n\t\tfor (const element of this.collection) {\n\t\t\tif (!element.hasAttribute(attribute)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t/**\n\t * Insert content after all elements in the collection\n\t *\n\t * @param content - String representation of the content to add\n\t * @returns Current instance\n\t */\n\tafter(content: string): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.insertAdjacentHTML('afterend', content);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Insert content before all elements in the collection\n\t *\n\t * @param content - String representation of the content to add\n\t * @returns Current instance\n\t */\n\tbefore(content: string): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.insertAdjacentHTML('beforebegin', content);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get or modify the `style` properties of the elements matching the selector\n\t *\n\t * @param properties - Properties to change or get. Can be either an individual property or a JSON object with key-value pairs\n\t * @param value - Value to set the property to when only changing one property\n\t * @returns If a property is given but not a value for it, returns the style value(s) - single value if one element, array if multiple.\n\t */\n\tstyle(properties: string | StyleProperties, value?: string): this | string | string[] | undefined {\n\t\t// Getting a style property\n\t\tif (typeof properties === 'string' && typeof value === 'undefined') {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn (this.collection[0] as HTMLElement).style.getPropertyValue(properties);\n\t\t\t}\n\t\t\tconst values: string[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push((element as HTMLElement).style.getPropertyValue(properties));\n\t\t\t}\n\t\t\treturn values;\n\t\t}\n\n\t\t// Setting style properties\n\t\tfor (const element of this.collection) {\n\t\t\tconst el = element as HTMLElement;\n\t\t\tif (typeof properties === 'string' && typeof value !== 'undefined') {\n\t\t\t\tel.style.setProperty(properties, value);\n\t\t\t} else if (typeof properties === 'object') {\n\t\t\t\tfor (const property in properties) {\n\t\t\t\t\tel.style.setProperty(property, String(properties[property]));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Animate the given `style` properties on all elements in the collection\n\t * with a given time duration\n\t *\n\t * @param style - JSON object with the key-value pairs of properties to animate\n\t * @param time - Time in milliseconds during which the properties will be animated\n\t * @returns Current instance\n\t */\n\tanimate(style: Record<string, number>, time: number): this {\n\t\tfor (let i = 0; i < this.collection.length; i++) {\n\t\t\tconst element = this.collection[i] as HTMLElement;\n\t\t\tfor (const property in style) {\n\t\t\t\tconst start = Date.now();\n\t\t\t\tlet initialValue: number;\n\n\t\t\t\tif (typeof element.style.getPropertyValue(property) !== 'undefined' && element.style.getPropertyValue(property) !== '') {\n\t\t\t\t\tinitialValue = parseFloat(element.style.getPropertyValue(property));\n\n\t\t\t\t\tconst timer = setInterval(() => {\n\t\t\t\t\t\tconst step = Math.min(1, (Date.now() - start) / time);\n\t\t\t\t\t\telement.style.setProperty(property, String(initialValue + step * (style[property] - initialValue)));\n\n\t\t\t\t\t\tif (step === 1) {\n\t\t\t\t\t\t\tclearInterval(timer);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 25);\n\t\t\t\t\telement.style.setProperty(property, String(initialValue));\n\t\t\t\t} else if (typeof (element as unknown as Record<string, number>)[property] !== 'undefined') {\n\t\t\t\t\tinitialValue = (element as unknown as Record<string, number>)[property];\n\n\t\t\t\t\tconst timer = setInterval(() => {\n\t\t\t\t\t\tconst step = Math.min(1, (Date.now() - start) / time);\n\t\t\t\t\t\t(element as unknown as Record<string, number>)[property] = initialValue + step * (style[property] - initialValue);\n\n\t\t\t\t\t\tif (step === 1) {\n\t\t\t\t\t\t\tclearInterval(timer);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 25);\n\t\t\t\t\t(element as unknown as Record<string, number>)[property] = initialValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Use a fade in animation on ALL elements in the collection\n\t *\n\t * @param time - Time duration for the animation\n\t * @param callback - Callback function to run once all animations are over\n\t * @returns Current instance\n\t */\n\tfadeIn(time: number = 400, callback?: () => void): this {\n\t\tlet completed = 0;\n\t\tconst total = this.collection.length;\n\n\t\tfor (const el of this.collection) {\n\t\t\tconst element = el as HTMLElement;\n\t\t\telement.style.opacity = '0';\n\n\t\t\tlet last = Date.now();\n\n\t\t\tconst tick = (): void => {\n\t\t\t\telement.style.opacity = String(parseFloat(element.style.opacity) + (Date.now() - last) / time);\n\t\t\t\tlast = Date.now();\n\n\t\t\t\tif (parseFloat(element.style.opacity) < 1) {\n\t\t\t\t\trequestAnimationFrame(tick);\n\t\t\t\t} else {\n\t\t\t\t\tcompleted++;\n\t\t\t\t\tif (completed === total && typeof callback === 'function') {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\ttick();\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Use a fade out animation on ALL elements in the collection\n\t *\n\t * @param time - Time duration for the animation\n\t * @param callback - Callback function to run once all animations are over\n\t * @returns Current instance\n\t */\n\tfadeOut(time: number = 400, callback?: () => void): this {\n\t\tlet completed = 0;\n\t\tconst total = this.collection.length;\n\n\t\tfor (const el of this.collection) {\n\t\t\tconst element = el as HTMLElement;\n\t\t\tlet last = Date.now();\n\n\t\t\tconst tick = (): void => {\n\t\t\t\telement.style.opacity = String(parseFloat(element.style.opacity) - (Date.now() - last) / time);\n\t\t\t\tlast = Date.now();\n\n\t\t\t\tif (parseFloat(element.style.opacity) > 0) {\n\t\t\t\t\trequestAnimationFrame(tick);\n\t\t\t\t} else {\n\t\t\t\t\tcompleted++;\n\t\t\t\t\tif (completed === total && typeof callback === 'function') {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\ttick();\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Check if ALL elements in the collection match a given selector\n\t *\n\t * @param selector - Selector to match\n\t * @returns Whether all elements match the selector\n\t */\n\tmatches(selector: string): boolean {\n\t\tif (this.length === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (const element of this.collection) {\n\t\t\tif (!element.matches(selector)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Remove all elements in the collection\n\t *\n\t * @returns Current instance\n\t */\n\tremove(): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.parentNode?.removeChild(element);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Replace ALL elements in the collection with a new element\n\t *\n\t * @param newElement - The replacement element or HTML string\n\t * @returns Current instance\n\t */\n\treplaceWith(newElement: string | Element): this {\n\t\tfor (const element of this.collection) {\n\t\t\tlet replaceElement: Element;\n\n\t\t\tif (typeof newElement === 'string') {\n\t\t\t\tconst div = document.createElement('div');\n\t\t\t\tdiv.innerHTML = newElement;\n\t\t\t\treplaceElement = div.firstChild as Element;\n\t\t\t} else {\n\t\t\t\treplaceElement = newElement.cloneNode(true) as Element;\n\t\t\t}\n\n\t\t\telement.parentElement?.replaceChild(replaceElement, element);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Reset every element in the collection (for form elements)\n\t *\n\t * @returns Current instance\n\t */\n\treset(): this {\n\t\tfor (const element of this.collection) {\n\t\t\tif ((element as HTMLFormElement).reset) {\n\t\t\t\t(element as HTMLFormElement).reset();\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get or set a property for elements in the collection\n\t *\n\t * @param property - Property name to set or get\n\t * @param value - Value to set the property to\n\t * @returns If no value is provided, returns the property value(s) - single value if one element, array if multiple.\n\t */\n\tproperty<T = unknown>(property: string, value?: T): this | T | T[] | undefined {\n\t\tif (typeof value !== 'undefined') {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\t(element as unknown as Record<string, T>)[property] = value;\n\t\t\t}\n\t\t\treturn this;\n\t\t} else {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn (this.collection[0] as unknown as Record<string, T>)[property];\n\t\t\t}\n\t\t\tconst values: T[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push((element as unknown as Record<string, T>)[property]);\n\t\t\t}\n\t\t\treturn values;\n\t\t}\n\t}\n}\n\n/**\n * Simple wrapper function to use the DOM library\n *\n * @param selector - Selector or DOM element to use\n * @returns DOM instance\n */\nexport function $_(selector: DOMSelector): DOM {\n\treturn new DOM(selector);\n}\n\n/**\n * Utility function to attach the 'load' listener to the window\n *\n * @param callback - Callback function to run when the window is ready\n */\nexport function $_ready(callback: EventListener): void {\n\twindow.addEventListener('load', callback);\n}\n\n",
|
|
6
|
+
"/**\n * ==============================\n * DOM\n * ==============================\n */\n\n/**\n * Type for elements that can be used as a selector\n */\nexport type DOMSelector = string | Element | Element[] | NodeList | NodeListOf<Element> | HTMLElement[] | DOM | null;\n\n/**\n * Type for style properties object\n */\nexport type StyleProperties = Record<string, string | number>;\n\n/**\n * Type for offset object\n */\nexport interface DOMOffset {\n\ttop: number;\n\tleft: number;\n}\n\n/**\n * Event callback type\n */\nexport type EventCallback = (event: Event) => void;\n\n/**\n * Element callback type\n */\nexport type ElementCallback = (element: Element) => void;\n\n/**\n * Simple DOM manipulation functions\n */\nexport class DOM {\n\tpublic collection: Element[] | NodeListOf<Element>;\n\tpublic length: number;\n\tpublic _selector: DOMSelector;\n\n\t/**\n\t * Create a new DOM object\n\t *\n\t * @param selector - Selector or DOM element to use\n\t */\n\tconstructor(selector: DOMSelector) {\n\t\tif (selector === null) {\n\t\t\tthis.collection = [];\n\t\t\tthis.length = 0;\n\t\t\tthis._selector = null;\n\t\t\treturn;\n\t\t}\n\n\t\tif (typeof selector === 'string') {\n\t\t\tthis.collection = document.querySelectorAll(selector);\n\t\t\tthis.length = this.collection.length;\n\t\t\tthis._selector = selector;\n\t\t} else if (selector instanceof NodeList) {\n\t\t\tthis.collection = selector as NodeListOf<Element>;\n\t\t\tthis.length = selector.length;\n\t\t\tthis._selector = selector;\n\t\t} else if (selector instanceof DOM) {\n\t\t\tthis.collection = selector.collection;\n\t\t\tthis.length = this.collection.length;\n\t\t\tthis._selector = selector._selector;\n\t\t} else if (selector instanceof HTMLElement) {\n\t\t\tthis.collection = [selector];\n\t\t\tthis.length = this.collection.length;\n\t\t\tthis._selector = selector;\n\t\t} else if (Array.isArray(selector)) {\n\t\t\tthis.collection = selector;\n\t\t\tthis.length = selector.length;\n\t\t\tthis._selector = selector;\n\t\t} else {\n\t\t\tthis.collection = [];\n\t\t\tthis.length = 0;\n\t\t\tthis._selector = null;\n\t\t}\n\t}\n\n\t/**\n\t * Hide elements by setting their `display` property to 'none'.\n\t *\n\t * @returns Current instance\n\t */\n\thide(): this {\n\t\tfor (const element of this.collection) {\n\t\t\t(element as HTMLElement).style.display = 'none';\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Show elements by setting their `display` property to the given value.\n\t *\n\t * @param display - Display property to set\n\t * @returns Current instance\n\t */\n\tshow(display: string = 'block'): this {\n\t\tfor (const element of this.collection) {\n\t\t\t(element as HTMLElement).style.display = display;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a class to the classList object\n\t *\n\t * @param newClass - Class name to add\n\t * @returns Current instance\n\t */\n\taddClass(newClass: string): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.classList.add(newClass);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Remove a given class from the classList object\n\t *\n\t * @param oldClass - Class to remove. If it's empty or null, all classes will be removed\n\t * @returns Current instance\n\t */\n\tremoveClass(oldClass: string | null = null): this {\n\t\tif (oldClass !== null) {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\telement.classList.remove(oldClass);\n\t\t\t}\n\t\t} else {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\twhile (element.classList.length > 0) {\n\t\t\t\t\tconst className = element.classList.item(0);\n\t\t\t\t\tif (className) {\n\t\t\t\t\t\telement.classList.remove(className);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Toggle between two classes\n\t *\n\t * @param classes - Space separated class names\n\t * @returns Current instance\n\t */\n\ttoggleClass(classes: string): this {\n\t\tconst classList = classes.split(' ');\n\t\tfor (const element of this.collection) {\n\t\t\tfor (const className of classList) {\n\t\t\t\telement.classList.toggle(className);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Check if ALL elements in the collection have the given class\n\t *\n\t * @param classToCheck - Class name to check for\n\t * @returns Whether all elements have the class\n\t */\n\thasClass(classToCheck: string): boolean {\n\t\tfor (const element of this.collection) {\n\t\t\tif (!element.classList.contains(classToCheck)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t/**\n\t * Get or set the value from the elements\n\t *\n\t * @param value - Value to set to the elements\n\t * @returns If a value is provided, returns current instance. Otherwise returns the value(s) - single value if one element, array if multiple.\n\t */\n\tvalue(value?: string): this | string | string[] | undefined {\n\t\tif (typeof value !== 'undefined') {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\t(element as HTMLInputElement).value = value;\n\t\t\t}\n\t\t\treturn this;\n\t\t} else {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn (this.collection[0] as HTMLInputElement).value;\n\t\t\t}\n\t\t\tconst values: string[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push((element as HTMLInputElement).value);\n\t\t\t}\n\t\t\treturn values;\n\t\t}\n\t}\n\n\t/**\n\t * Focus on the first element matching the selector\n\t *\n\t * @returns Current instance\n\t */\n\tfocus(): this {\n\t\tif (this.length > 0) {\n\t\t\t(this.collection[0] as HTMLElement).focus();\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback for the 'click' event on every element matching the selector\n\t *\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\tclick(callback: EventCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.addEventListener('click', callback, false);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback for the 'keyup' event on every element matching the selector\n\t *\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\tkeyup(callback: EventCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.addEventListener('keyup', callback, false);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback for the 'keydown' event on every element matching the selector\n\t *\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\tkeydown(callback: EventCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.addEventListener('keydown', callback, false);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback for the 'submit' event on every element matching the selector\n\t *\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\tsubmit(callback: EventCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.addEventListener('submit', callback, false);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback for the 'change' event on every element matching the selector\n\t *\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\tchange(callback: EventCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.addEventListener('change', callback, false);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback for the 'scroll' event on every element matching the selector\n\t *\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\tscroll(callback: EventCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.addEventListener('scroll', callback, false);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a callback function to a given event\n\t *\n\t * @param event - Event to add the listener to\n\t * @param target - Target element on which to detect the event or callback function\n\t * @param callback - Callback function to run when the event is triggered\n\t * @returns Current instance\n\t */\n\ton(event: string, target: string | EventCallback, callback?: EventCallback): this {\n\t\tconst events = event.split(' ');\n\t\tfor (const element of this.collection) {\n\t\t\tfor (const evt of events) {\n\t\t\t\t// Check if no target was defined and just a function was provided\n\t\t\t\tif (typeof target === 'function') {\n\t\t\t\t\telement.addEventListener(evt, target, false);\n\t\t\t\t} else if (typeof target === 'string' && typeof callback === 'function') {\n\t\t\t\t\telement.addEventListener(evt, (e: Event) => {\n\t\t\t\t\t\tif (!e.target) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst domInstance = new DOM(e.target as Element);\n\t\t\t\t\t\tconst targetElement = domInstance.closestParent(target, this._selector as string);\n\n\t\t\t\t\t\tif (targetElement.exists()) {\n\t\t\t\t\t\t\tcallback.call(targetElement.get(0), e);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Filter from the current collection to only those matching the new selector\n\t * Applies to ALL elements in the collection\n\t *\n\t * @param selector - Selector to filter the collection with\n\t * @returns New DOM instance with the filtered collection\n\t */\n\tfilter(selector: string): DOM {\n\t\tconst filtered: HTMLElement[] = [];\n\t\tfor (const element of this.collection) {\n\t\t\tif (element.matches(selector)) {\n\t\t\t\tfiltered.push(element as HTMLElement);\n\t\t\t}\n\t\t}\n\t\treturn new DOM(filtered.length > 0 ? filtered : null);\n\t}\n\n\t/**\n\t * Check if there are any elements that match the selector.\n\t *\n\t * @returns Whether elements matching the selector existed or not\n\t */\n\texists(): boolean {\n\t\treturn this.length > 0;\n\t}\n\n\t/**\n\t * Get or set a `data` property\n\t *\n\t * @param name - Name of the data property\n\t * @param value - Value of the property\n\t * @returns If no value is provided, returns the value(s) - single value if one element, array if multiple.\n\t */\n\tdata(name: string, value?: string): this | string | string[] | undefined {\n\t\tif (typeof value !== 'undefined') {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\t(element as HTMLElement).dataset[name] = value;\n\t\t\t}\n\t\t\treturn this;\n\t\t} else {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn (this.collection[0] as HTMLElement).dataset[name];\n\t\t\t}\n\t\t\tconst values: (string | undefined)[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push((element as HTMLElement).dataset[name]);\n\t\t\t}\n\t\t\treturn values as string[];\n\t\t}\n\t}\n\n\t/**\n\t * Remove a data property from all the elements on the collection given its name.\n\t *\n\t * @param name - Name of the data property to remove\n\t * @returns Current instance\n\t */\n\tremoveData(name: string): this {\n\t\tfor (const element of this.collection) {\n\t\t\tdelete (element as HTMLElement).dataset[name];\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get or set the text of elements\n\t *\n\t * @param value - Value to set the text to\n\t * @returns If no value is provided, returns the text(s) - single value if one element, array if multiple.\n\t */\n\ttext(value?: string): this | string | (string | null)[] | null | undefined {\n\t\tif (typeof value !== 'undefined') {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\telement.textContent = value;\n\t\t\t}\n\t\t\treturn this;\n\t\t} else {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn this.collection[0].textContent;\n\t\t\t}\n\t\t\tconst values: (string | null)[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push(element.textContent);\n\t\t\t}\n\t\t\treturn values;\n\t\t}\n\t}\n\n\t/**\n\t * Get or set the inner HTML of elements\n\t *\n\t * @param value - Value to set the HTML to\n\t * @returns If no value is provided, returns the HTML(s) - single value if one element, array if multiple.\n\t */\n\thtml(value?: string): this | string | string[] | undefined {\n\t\tif (typeof value !== 'undefined') {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\telement.innerHTML = value;\n\t\t\t}\n\t\t\treturn this;\n\t\t} else {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn this.collection[0].innerHTML;\n\t\t\t}\n\t\t\tconst values: string[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push(element.innerHTML);\n\t\t\t}\n\t\t\treturn values;\n\t\t}\n\t}\n\n\t/**\n\t * Append an element to ALL elements in the collection\n\t *\n\t * @param element - String representation of the element to add or an Element\n\t * @returns Current instance\n\t */\n\tappend(element: string | Element): this {\n\t\tlet isFirstElement = true;\n\t\tfor (const el of this.collection) {\n\t\t\tif (typeof element === 'string') {\n\t\t\t\tconst div = document.createElement('div');\n\t\t\t\tdiv.innerHTML = element.trim();\n\t\t\t\tif (div.firstChild) {\n\t\t\t\t\tel.appendChild(div.firstChild.cloneNode(true));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// For the first target, append the original element to preserve\n\t\t\t\t// custom element state/props. For subsequent targets, clone.\n\t\t\t\t// Note: Cloned custom elements will have their constructor re-run,\n\t\t\t\t// which may reset state/props to defaults.\n\t\t\t\tif (isFirstElement) {\n\t\t\t\t\tel.appendChild(element);\n\t\t\t\t\tisFirstElement = false;\n\t\t\t\t} else {\n\t\t\t\t\tel.appendChild(element.cloneNode(true));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Prepend an element to ALL elements in the collection\n\t *\n\t * @param element - String representation of the element to add or an Element\n\t * @returns Current instance\n\t */\n\tprepend(element: string | Element): this {\n\t\tlet isFirstElement = true;\n\n\t\tfor (const el of this.collection) {\n\t\t\tif (typeof element === 'string') {\n\t\t\t\tconst div = document.createElement('div');\n\t\t\t\tdiv.innerHTML = element.trim();\n\t\t\t\tif (div.firstChild) {\n\t\t\t\t\tif (el.childNodes.length > 0) {\n\t\t\t\t\t\tel.insertBefore(div.firstChild.cloneNode(true), el.childNodes[0]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tel.appendChild(div.firstChild.cloneNode(true));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// For the first target, use the original element to preserve\n\t\t\t\t// custom element state/props. For subsequent targets, clone.\n\t\t\t\t// Note: Cloned custom elements will have their constructor re-run,\n\t\t\t\t// which may reset state/props to defaults.\n\t\t\t\tconst nodeToInsert = isFirstElement ? element : element.cloneNode(true);\n\t\t\t\tif (isFirstElement) {\n\t\t\t\t\tisFirstElement = false;\n\t\t\t\t}\n\n\t\t\t\tif (el.childNodes.length > 0) {\n\t\t\t\t\tel.insertBefore(nodeToInsert, el.childNodes[0]);\n\t\t\t\t} else {\n\t\t\t\t\tel.appendChild(nodeToInsert);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Iterate over the collection of elements matching the selector\n\t *\n\t * @param callback - Callback to run for every element\n\t * @returns Current instance\n\t */\n\teach(callback: ElementCallback): this {\n\t\tfor (const element of this.collection) {\n\t\t\tcallback(element);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get an element from the collection given its index\n\t *\n\t * @param index - Index of the element to retrieve\n\t * @returns HTML Element in the position indicated by the index\n\t */\n\tget(index: number): Element | undefined {\n\t\treturn this.collection[index];\n\t}\n\n\t/**\n\t * Get the first element in the collection\n\t *\n\t * @returns DOM instance with the first element\n\t */\n\tfirst(): DOM {\n\t\tif (this.length > 0) {\n\t\t\treturn new DOM(this.collection[0] as HTMLElement);\n\t\t}\n\t\treturn new DOM(null);\n\t}\n\n\t/**\n\t * Get the last element in the collection\n\t *\n\t * @returns DOM instance with the last element\n\t */\n\tlast(): DOM {\n\t\tif (this.length > 0) {\n\t\t\treturn new DOM(this.collection[this.collection.length - 1] as HTMLElement);\n\t\t}\n\t\treturn new DOM(null);\n\t}\n\n\t/**\n\t * Check if any element in the collection is visible by checking their\n\t * display, offsetWidth and offsetHeight properties\n\t *\n\t * @returns Whether any element is visible\n\t */\n\tisVisible(): boolean {\n\t\tfor (const element of this.collection) {\n\t\t\tconst el = element as HTMLElement;\n\t\t\tif (el.style.display !== 'none' && el.offsetWidth > 0 && el.offsetHeight > 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Get the parents of ALL elements in the collection\n\t *\n\t * @returns DOM instance of the parent elements\n\t */\n\tparent(): DOM {\n\t\tconst parents: HTMLElement[] = [];\n\t\tfor (const element of this.collection) {\n\t\t\tif (element.parentElement && !parents.includes(element.parentElement)) {\n\t\t\t\tparents.push(element.parentElement);\n\t\t\t}\n\t\t}\n\t\treturn new DOM(parents.length > 0 ? parents : null);\n\t}\n\n\t/**\n\t * Find elements that match the given selector in ALL elements of the collection\n\t *\n\t * @param selector - Selector to find elements with\n\t * @returns DOM instance with found elements\n\t */\n\tfind(selector: string): DOM {\n\t\tconst found: HTMLElement[] = [];\n\t\tfor (const element of this.collection) {\n\t\t\tconst results = element.querySelectorAll(selector);\n\t\t\tfor (const result of results) {\n\t\t\t\tif (!found.includes(result as HTMLElement)) {\n\t\t\t\t\tfound.push(result as HTMLElement);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn new DOM(found.length > 0 ? found : null);\n\t}\n\n\t/**\n\t * Get the top and left offsets of elements in the collection\n\t *\n\t * @returns Single offset object if one element, array of offset objects if multiple\n\t */\n\toffset(): DOMOffset | DOMOffset[] | undefined {\n\t\tif (this.length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (this.length === 1) {\n\t\t\tconst rect = this.collection[0].getBoundingClientRect();\n\t\t\treturn {\n\t\t\t\ttop: rect.top + document.body.scrollTop,\n\t\t\t\tleft: rect.left + document.body.scrollLeft\n\t\t\t};\n\t\t}\n\t\tconst offsets: DOMOffset[] = [];\n\t\tfor (const element of this.collection) {\n\t\t\tconst rect = element.getBoundingClientRect();\n\t\t\toffsets.push({\n\t\t\t\ttop: rect.top + document.body.scrollTop,\n\t\t\t\tleft: rect.left + document.body.scrollLeft\n\t\t\t});\n\t\t}\n\t\treturn offsets;\n\t}\n\n\t/**\n\t * Find the closest element matching the given selector for ALL elements.\n\t * This bubbles up from the initial object and then follows to its parents.\n\t *\n\t * @param selector - Selector to match the closest element with\n\t * @returns DOM instance with the closest HTML elements matching the selector\n\t */\n\tclosest(selector: string): DOM {\n\t\tconst found: HTMLElement[] = [];\n\t\tfor (const element of this.collection) {\n\t\t\tconst closest = element.closest(selector) as HTMLElement | null;\n\t\t\tif (closest && !found.includes(closest)) {\n\t\t\t\tfound.push(closest);\n\t\t\t}\n\t\t}\n\t\treturn new DOM(found.length > 0 ? found : null);\n\t}\n\n\t/**\n\t * Find the closest parent element matching the given selector. This bubbles up\n\t * from the initial object and then follows to its parents.\n\t *\n\t * @param selector - Selector to match the closest element with\n\t * @param limit - Selector for limit element. If the limit is reached and no element matching the provided selector was found, it will cause an early return.\n\t * @returns DOM instance with the closest HTML element matching the selector\n\t */\n\tclosestParent(selector: string, limit?: string): DOM {\n\t\tif (this.length === 0) {\n\t\t\treturn new DOM(null);\n\t\t}\n\n\t\tlet current: Element | null = this.collection[0];\n\t\twhile (current) {\n\t\t\t// Check if the current element matches the selector\n\t\t\tif (current.matches(selector)) {\n\t\t\t\treturn new DOM(current as HTMLElement);\n\t\t\t}\n\n\t\t\t// Check if we hit the limit\n\t\t\tif (typeof limit === 'string' && current.matches(limit)) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcurrent = current.parentElement;\n\t\t}\n\t\treturn new DOM(null);\n\t}\n\n\t/**\n\t * Get or set the value of a given attribute\n\t *\n\t * @param attribute - Attribute's name\n\t * @param value - Value to set the attribute to\n\t * @returns If no value is provided, returns the attribute value(s) - single value if one element, array if multiple.\n\t */\n\tattribute(attribute: string, value?: string | number): this | string | (string | null)[] | null | undefined {\n\t\tif (typeof value !== 'undefined') {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\telement.setAttribute(attribute, String(value));\n\t\t\t}\n\t\t\treturn this;\n\t\t} else {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn this.collection[0].getAttribute(attribute);\n\t\t\t}\n\t\t\tconst values: (string | null)[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push(element.getAttribute(attribute));\n\t\t\t}\n\t\t\treturn values;\n\t\t}\n\t}\n\n\t/**\n\t * Check whether ALL elements have an attribute\n\t *\n\t * @param attribute - The name of the attribute to check existence for\n\t * @returns Whether all elements have the attribute\n\t */\n\thasAttribute(attribute: string): boolean {\n\t\tfor (const element of this.collection) {\n\t\t\tif (!element.hasAttribute(attribute)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t/**\n\t * Insert content after all elements in the collection\n\t *\n\t * @param content - String representation of the content to add\n\t * @returns Current instance\n\t */\n\tafter(content: string): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.insertAdjacentHTML('afterend', content);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Insert content before all elements in the collection\n\t *\n\t * @param content - String representation of the content to add\n\t * @returns Current instance\n\t */\n\tbefore(content: string): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.insertAdjacentHTML('beforebegin', content);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get or modify the `style` properties of the elements matching the selector\n\t *\n\t * @param properties - Properties to change or get. Can be either an individual property or a JSON object with key-value pairs\n\t * @param value - Value to set the property to when only changing one property\n\t * @returns If a property is given but not a value for it, returns the style value(s) - single value if one element, array if multiple.\n\t */\n\tstyle(properties: string | StyleProperties, value?: string): this | string | string[] | undefined {\n\t\t// Getting a style property\n\t\tif (typeof properties === 'string' && typeof value === 'undefined') {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn (this.collection[0] as HTMLElement).style.getPropertyValue(properties);\n\t\t\t}\n\t\t\tconst values: string[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push((element as HTMLElement).style.getPropertyValue(properties));\n\t\t\t}\n\t\t\treturn values;\n\t\t}\n\n\t\t// Setting style properties\n\t\tfor (const element of this.collection) {\n\t\t\tconst el = element as HTMLElement;\n\t\t\tif (typeof properties === 'string' && typeof value !== 'undefined') {\n\t\t\t\tel.style.setProperty(properties, value);\n\t\t\t} else if (typeof properties === 'object') {\n\t\t\t\tfor (const property in properties) {\n\t\t\t\t\tel.style.setProperty(property, String(properties[property]));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Animate the given `style` properties on all elements in the collection\n\t * with a given time duration\n\t *\n\t * @param style - JSON object with the key-value pairs of properties to animate\n\t * @param time - Time in milliseconds during which the properties will be animated\n\t * @returns Current instance\n\t */\n\tanimate(style: Record<string, number>, time: number): this {\n\t\tfor (let i = 0; i < this.collection.length; i++) {\n\t\t\tconst element = this.collection[i] as HTMLElement;\n\t\t\tfor (const property in style) {\n\t\t\t\tconst start = Date.now();\n\t\t\t\tlet initialValue: number;\n\n\t\t\t\tif (typeof element.style.getPropertyValue(property) !== 'undefined' && element.style.getPropertyValue(property) !== '') {\n\t\t\t\t\tinitialValue = parseFloat(element.style.getPropertyValue(property));\n\n\t\t\t\t\tconst timer = setInterval(() => {\n\t\t\t\t\t\tconst step = Math.min(1, (Date.now() - start) / time);\n\t\t\t\t\t\telement.style.setProperty(property, String(initialValue + step * (style[property] - initialValue)));\n\n\t\t\t\t\t\tif (step === 1) {\n\t\t\t\t\t\t\tclearInterval(timer);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 25);\n\t\t\t\t\telement.style.setProperty(property, String(initialValue));\n\t\t\t\t} else if (typeof (element as unknown as Record<string, number>)[property] !== 'undefined') {\n\t\t\t\t\tinitialValue = (element as unknown as Record<string, number>)[property];\n\n\t\t\t\t\tconst timer = setInterval(() => {\n\t\t\t\t\t\tconst step = Math.min(1, (Date.now() - start) / time);\n\t\t\t\t\t\t(element as unknown as Record<string, number>)[property] = initialValue + step * (style[property] - initialValue);\n\n\t\t\t\t\t\tif (step === 1) {\n\t\t\t\t\t\t\tclearInterval(timer);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 25);\n\t\t\t\t\t(element as unknown as Record<string, number>)[property] = initialValue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Use a fade in animation on ALL elements in the collection\n\t *\n\t * @param time - Time duration for the animation\n\t * @param callback - Callback function to run once all animations are over\n\t * @returns Current instance\n\t */\n\tfadeIn(time: number = 400, callback?: () => void): this {\n\t\tlet completed = 0;\n\t\tconst total = this.collection.length;\n\n\t\tfor (const el of this.collection) {\n\t\t\tconst element = el as HTMLElement;\n\t\t\telement.style.opacity = '0';\n\n\t\t\tlet last = Date.now();\n\n\t\t\tconst tick = (): void => {\n\t\t\t\telement.style.opacity = String(parseFloat(element.style.opacity) + (Date.now() - last) / time);\n\t\t\t\tlast = Date.now();\n\n\t\t\t\tif (parseFloat(element.style.opacity) < 1) {\n\t\t\t\t\trequestAnimationFrame(tick);\n\t\t\t\t} else {\n\t\t\t\t\tcompleted++;\n\t\t\t\t\tif (completed === total && typeof callback === 'function') {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\ttick();\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Use a fade out animation on ALL elements in the collection\n\t *\n\t * @param time - Time duration for the animation\n\t * @param callback - Callback function to run once all animations are over\n\t * @returns Current instance\n\t */\n\tfadeOut(time: number = 400, callback?: () => void): this {\n\t\tlet completed = 0;\n\t\tconst total = this.collection.length;\n\n\t\tfor (const el of this.collection) {\n\t\t\tconst element = el as HTMLElement;\n\t\t\tlet last = Date.now();\n\n\t\t\tconst tick = (): void => {\n\t\t\t\telement.style.opacity = String(parseFloat(element.style.opacity) - (Date.now() - last) / time);\n\t\t\t\tlast = Date.now();\n\n\t\t\t\tif (parseFloat(element.style.opacity) > 0) {\n\t\t\t\t\trequestAnimationFrame(tick);\n\t\t\t\t} else {\n\t\t\t\t\tcompleted++;\n\t\t\t\t\tif (completed === total && typeof callback === 'function') {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\ttick();\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Check if ALL elements in the collection match a given selector\n\t *\n\t * @param selector - Selector to match\n\t * @returns Whether all elements match the selector\n\t */\n\tmatches(selector: string): boolean {\n\t\tif (this.length === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (const element of this.collection) {\n\t\t\tif (!element.matches(selector)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Remove all elements in the collection\n\t *\n\t * @returns Current instance\n\t */\n\tremove(): this {\n\t\tfor (const element of this.collection) {\n\t\t\telement.parentNode?.removeChild(element);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Replace ALL elements in the collection with a new element\n\t *\n\t * @param newElement - The replacement element or HTML string\n\t * @returns Current instance\n\t */\n\treplaceWith(newElement: string | Element): this {\n\t\tfor (const element of this.collection) {\n\t\t\tlet replaceElement: Element;\n\n\t\t\tif (typeof newElement === 'string') {\n\t\t\t\tconst div = document.createElement('div');\n\t\t\t\tdiv.innerHTML = newElement;\n\t\t\t\treplaceElement = div.firstChild as Element;\n\t\t\t} else {\n\t\t\t\treplaceElement = newElement.cloneNode(true) as Element;\n\t\t\t}\n\n\t\t\telement.parentElement?.replaceChild(replaceElement, element);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Reset every element in the collection (for form elements)\n\t *\n\t * @returns Current instance\n\t */\n\treset(): this {\n\t\tfor (const element of this.collection) {\n\t\t\tif ((element as HTMLFormElement).reset) {\n\t\t\t\t(element as HTMLFormElement).reset();\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get or set a property for elements in the collection\n\t *\n\t * @param property - Property name to set or get\n\t * @param value - Value to set the property to\n\t * @returns If no value is provided, returns the property value(s) - single value if one element, array if multiple.\n\t */\n\tproperty<T = unknown>(property: string, value?: T): this | T | T[] | undefined {\n\t\tif (typeof value !== 'undefined') {\n\t\t\tfor (const element of this.collection) {\n\t\t\t\t(element as unknown as Record<string, T>)[property] = value;\n\t\t\t}\n\t\t\treturn this;\n\t\t} else {\n\t\t\tif (this.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (this.length === 1) {\n\t\t\t\treturn (this.collection[0] as unknown as Record<string, T>)[property];\n\t\t\t}\n\t\t\tconst values: T[] = [];\n\t\t\tfor (const element of this.collection) {\n\t\t\t\tvalues.push((element as unknown as Record<string, T>)[property]);\n\t\t\t}\n\t\t\treturn values;\n\t\t}\n\t}\n}\n\n/**\n * Simple wrapper function to use the DOM library\n *\n * @param selector - Selector or DOM element to use\n * @returns DOM instance\n */\nexport function $_(selector: DOMSelector): DOM {\n\treturn new DOM(selector);\n}\n\n/**\n * Utility function to attach the 'load' listener to the window\n *\n * @param callback - Callback function to run when the window is ready\n */\nexport function $_ready(callback: EventListener): void {\n\twindow.addEventListener('load', callback);\n}\n\n",
|
|
7
7
|
"/**\n * ==============================\n * Request\n * ==============================\n */\n\n/**\n * Type for request data object\n */\nexport type RequestData = Record<string, string | number | boolean>;\n\n/**\n * Type for request options\n */\nexport interface RequestOptions extends Omit<RequestInit, 'headers'> {\n\theaders?: Record<string, string>;\n}\n\n/**\n * Simple Wrapper for the fetch API, providing simple functions to handle requests\n */\nexport class Request {\n\t/**\n\t * Serialize an object of data into a URI encoded format\n\t *\n\t * @param data - Key-value object of data to serialize\n\t * @returns Serialized Data\n\t */\n\tstatic serialize(data: RequestData): string {\n\t\treturn Object.keys(data).map((key) => {\n\t\t\treturn encodeURIComponent(key) + '=' + encodeURIComponent(String(data[key]));\n\t\t}).join('&');\n\t}\n\n\t/**\n\t * Make a GET request to a given URL with the provided data parameters\n\t * and an optional configuration object for the request.\n\t *\n\t * @param url - URL to make the request to\n\t * @param data - Parameters to send in the URL, represented as a JSON object\n\t * @param options - Options object for configurations you want to use in the fetch request\n\t * @returns Resolves to the response of the request\n\t */\n\tstatic get(url: string, data: RequestData = {}, options: RequestOptions = {}): Promise<Response> {\n\t\tconst query = Request.serialize(data);\n\n\t\t// Check if there is actually any data parameters and join them to the\n\t\t// url as query parameters\n\t\tif (query !== '') {\n\t\t\turl = `${url}?${query}`;\n\t\t}\n\n\t\treturn fetch(url, options as RequestInit);\n\t}\n\n\t/**\n\t * Make a POST request to a given URL with the provided data and an optional\n\t * configuration object for the request.\n\t *\n\t * @param url - URL to make the request\n\t * @param data - Set of data to send in the URL, represented as a JSON object\n\t * @param options - Options object for configurations you want to use in the fetch request\n\t * @returns Resolves to the response of the request\n\t */\n\tstatic post(url: string, data: RequestData, options: RequestOptions = {}): Promise<Response> {\n\t\tlet formData: FormData | string;\n\n\t\tconst contentType = options.headers?.['Content-Type'];\n\t\tif (contentType !== undefined) {\n\t\t\tif (contentType === 'multipart/form-data') {\n\t\t\t\tformData = new FormData();\n\t\t\t\tfor (const value in data) {\n\t\t\t\t\tformData.append(value, String(data[value]));\n\t\t\t\t}\n\t\t\t} else if (contentType === 'application/json') {\n\t\t\t\tformData = JSON.stringify(data);\n\t\t\t} else {\n\t\t\t\tformData = Request.serialize(data);\n\t\t\t}\n\t\t} else {\n\t\t\tformData = Request.serialize(data);\n\t\t}\n\n\t\tconst headers: Record<string, string> = {\n\t\t\t'Content-Type': 'application/x-www-form-urlencoded',\n\t\t\t...options.headers\n\t\t};\n\n\t\t// Delete the explicit multipart/form-data header to allow boundary automatic filling\n\t\tif (headers['Content-Type'] === 'multipart/form-data') {\n\t\t\tdelete headers['Content-Type'];\n\t\t}\n\n\t\tconst props: RequestInit = {\n\t\t\t...options,\n\t\t\tmethod: 'POST',\n\t\t\theaders,\n\t\t\tbody: formData\n\t\t};\n\n\t\treturn fetch(url, props);\n\t}\n\n\t/**\n\t * Make a PUT request to a given URL with the provided data and an optional\n\t * configuration object for the request.\n\t *\n\t * @param url - URL to make the request\n\t * @param data - Set of data to send in the URL, represented as a JSON object\n\t * @param options - Options object for configurations you want to use in the fetch request\n\t * @returns Resolves to the response of the request\n\t */\n\tstatic put(url: string, data: RequestData, options: RequestOptions = {}): Promise<Response> {\n\t\treturn Request.post(url, data, Object.assign({}, { method: 'PUT' }, options));\n\t}\n\n\t/**\n\t * Make a DELETE request to a given URL with the provided data and an optional\n\t * configuration object for the request.\n\t *\n\t * @param url - URL to make the request\n\t * @param data - Parameters to send in the URL, represented as a JSON object\n\t * @param options - Options object for configurations you want to use in the fetch request\n\t * @returns Resolves to the response of the request\n\t */\n\tstatic delete(url: string, data: RequestData, options: RequestOptions = {}): Promise<Response> {\n\t\treturn Request.get(url, data, Object.assign({}, { method: 'DELETE' }, options));\n\t}\n\n\t/**\n\t * Request a JSON object from a given URL through a GET request\n\t *\n\t * @param url - URL to make the request to\n\t * @param data - Parameters to send in the URL, represented as a JSON object\n\t * @param options - Options object for configurations you want to use in the fetch request\n\t * @returns Resolves to the json object obtained from the request response\n\t */\n\tstatic json<T = unknown>(url: string, data: RequestData = {}, options: RequestOptions = {}): Promise<T> {\n\t\treturn Request.get(url, data, options).then((response) => {\n\t\t\treturn response.json() as Promise<T>;\n\t\t});\n\t}\n\n\t/**\n\t * Request a Blob from a given URL through a GET request\n\t *\n\t * @param url - URL to make the request to\n\t * @param data - Parameters to send in the URL, represented as a JSON object\n\t * @param options - Options object for configurations you want to use in the fetch request\n\t * @returns Resolves to the blob obtained from the request response\n\t */\n\tstatic blob(url: string, data: RequestData = {}, options: RequestOptions = {}): Promise<Blob> {\n\t\treturn Request.get(url, data, options).then((response) => {\n\t\t\treturn response.blob();\n\t\t});\n\t}\n}\n\n",
|
|
8
8
|
"/**\n * ==============================\n * File System\n * ==============================\n */\n\nimport { Request, RequestOptions } from './Request';\n\n/**\n * File read type options\n */\nexport type FileReadType = 'text' | 'base64' | 'buffer';\n\n/**\n * File read result type based on read type\n */\nexport interface FileReadResult {\n\tevent: ProgressEvent<FileReader>;\n\tcontent: string | ArrayBuffer | null;\n}\n\n/**\n * A simple class wrapper for the File and FileReader web API, while this class\n * doesn't actually provide access to the host file system, it does provide useful\n * utilities for form file inputs and remote content loading.\n */\nexport class FileSystem {\n\t/**\n\t * Read a file from a remote location given a URL. This function will fetch\n\t * the file blob using the Request class and then use the read() function\n\t * to read the blob in the format required.\n\t *\n\t * @param url - URL to fetch the file from\n\t * @param type - Type of data to be read, values can be 'text', 'base64' and 'buffer'\n\t * @param props - Props to send to the Request object\n\t * @returns Content of the file. The format depends on the type parameter used.\n\t */\n\tstatic readRemote(url: string, type: FileReadType = 'base64', props: RequestOptions = {}): Promise<FileReadResult> {\n\t\treturn Request.blob(url, {}, props).then((file) => {\n\t\t\treturn FileSystem.read(file, type);\n\t\t});\n\t}\n\n\t/**\n\t * Read a given File or Blob object.\n\t *\n\t * @param file - File to read\n\t * @param type - Type of data to be read, values can be 'text', 'base64' and 'buffer'\n\t * @returns Promise that resolves to the load event and content of the file\n\t */\n\tstatic read(file: File | Blob, type: FileReadType = 'text'): Promise<FileReadResult> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst reader = new FileReader();\n\n\t\t\treader.onload = (event: ProgressEvent<FileReader>) => {\n\t\t\t\t// Pass down the event object and the content\n\t\t\t\tresolve({\n\t\t\t\t\tevent,\n\t\t\t\t\tcontent: event.target?.result ?? null\n\t\t\t\t});\n\t\t\t};\n\n\t\t\treader.onerror = (error) => {\n\t\t\t\treject(error);\n\t\t\t};\n\n\t\t\tif (type === 'base64') {\n\t\t\t\treader.readAsDataURL(file);\n\t\t\t} else if (type === 'buffer') {\n\t\t\t\treader.readAsArrayBuffer(file);\n\t\t\t} else {\n\t\t\t\treader.readAsText(file, 'UTF-8');\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Create a new File, this uses the File API and will not actually create\n\t * a file in the user's file system, however using it with other features,\n\t * that may be possible\n\t *\n\t * @param name - Name of the file (Including extension)\n\t * @param content - Content to save in the file\n\t * @param type - Mime Type for the file\n\t * @returns Promise resolving to the created File\n\t */\n\tstatic create(name: string, content: BlobPart, type: string = 'text/plain'): Promise<File> {\n\t\treturn Promise.resolve(new File([content], name, { type }));\n\t}\n\n\t/**\n\t * Returns the extension of a file given its file name.\n\t *\n\t * @param name - Name or full path of the file\n\t * @returns File extension without the leading dot (.)\n\t */\n\tstatic extension(name: string): string {\n\t\treturn name.split('.').pop() ?? '';\n\t}\n\n\t/**\n\t * Check if a file is an image by its extension.\n\t *\n\t * @param name - Name or full path of the file\n\t * @returns Whether the file is an image\n\t */\n\tstatic isImage(name: string): boolean {\n\t\tconst extensions = ['jpg', 'jpeg', 'png', 'gif', 'svg', 'webp', 'bmp'];\n\t\treturn extensions.indexOf(FileSystem.extension(name).toLowerCase()) > -1;\n\t}\n}\n\n",
|
|
9
9
|
"/**\n * ==============================\n * Form\n * ==============================\n */\n\nimport { $_ } from './DOM';\n\n/**\n * Form data object type\n */\nexport type FormData = Record<string, string | File | FileList | undefined>;\n\n/**\n * Utility class that provides simple functions for filling and retrieving values\n * from forms. This class requires the use of the `data-form` attribute.\n */\nexport class Form {\n\t/**\n\t * Fill a form's inputs with the given values. Each key in the provided object\n\t * must match the `name` attribute of the input to fill.\n\t *\n\t * @param name - Form name. Must match the `data-form` attribute of the Form.\n\t * @param data - JSON object with key-value pairs to fill the inputs.\n\t */\n\tstatic fill(name: string, data: Record<string, string>): void {\n\t\tfor (const field in data) {\n\t\t\tconst element = $_(`form[data-form='${name}'] [name='${field}']`).get(0) as HTMLInputElement | undefined;\n\t\t\tif (typeof element !== 'undefined') {\n\t\t\t\tswitch (element.type) {\n\t\t\t\t\tcase 'file':\n\t\t\t\t\tcase 'file[]':\n\t\t\t\t\t\t// Cannot programmatically set file input values\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\telement.value = data[field];\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Get all the values from a form's inputs. The keys are mapped using the\n\t * `name` attribute of each input.\n\t *\n\t * @param name - Form name. Must match the `data-form` attribute of the Form.\n\t * @returns Key-value JSON object\n\t */\n\tstatic values(name: string): FormData {\n\t\tconst data: FormData = {};\n\t\t$_(`form[data-form='${name}'] [name]`).each((el: Element) => {\n\t\t\tconst element = el as HTMLInputElement;\n\t\t\tlet value: string | File | FileList | undefined;\n\t\t\tswitch (element.type) {\n\t\t\t\tcase 'file[]':\n\t\t\t\t\tvalue = element.files ?? undefined;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'file':\n\t\t\t\t\tvalue = element.files?.[0];\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tvalue = element.value;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (typeof value !== 'undefined' && value !== null) {\n\t\t\t\tdata[element.name] = value;\n\t\t\t}\n\t\t});\n\n\t\treturn data;\n\t}\n}\n\n",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"/**\n * ==============================\n * Text\n * ==============================\n */\n\n/**\n * Provides utility functions for texts\n */\nexport class Text {\n\t/**\n\t * Capitalizes every word in a string\n\t *\n\t * @param text - Text string to capitalize\n\t * @returns Capitalized string\n\t */\n\tstatic capitalize(text: string): string {\n\t\treturn text.replace(/\\w\\S*/g, (txt) => {\n\t\t\treturn txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase();\n\t\t});\n\t}\n\n\t/**\n\t * Gets the suffix of a string given a key\n\t *\n\t * @param key - Key part of the string\n\t * @param text - Full string to extract the suffix from\n\t * @returns Suffix\n\t */\n\tstatic suffix(key: string, text: string): string {\n\t\tlet suffix = '';\n\t\tlet position = text.indexOf(key);\n\t\tif (position !== -1) {\n\t\t\tposition += key.length;\n\t\t\tsuffix = text.substring(position);\n\t\t}\n\t\treturn suffix;\n\t}\n\n\t/**\n\t * Get the currently selected text\n\t *\n\t * @returns Text selection\n\t */\n\tstatic selection(): string {\n\t\tconst selection = window.getSelection();\n\t\tif (selection) {\n\t\t\treturn selection.toString();\n\t\t}\n\t\treturn '';\n\t}\n\n\t/**\n\t * Gets the prefix of a string given a key\n\t *\n\t * @param key - Key part of the string\n\t * @param text - Full string to extract the prefix from\n\t * @returns Prefix\n\t */\n\tstatic prefix(key: string, text: string): string {\n\t\tlet prefix = '';\n\t\tconst position = text.indexOf(key);\n\t\tif (position !== -1) {\n\t\t\tprefix = text.substring(0, position);\n\t\t}\n\t\treturn prefix;\n\t}\n\n\t/**\n\t * Transforms a given text into a friendly URL string replacing all special characters\n\t *\n\t * @param text - The text to build the url from\n\t * @returns Friendly URL\n\t */\n\tstatic friendly(text: string): string {\n\t\tconst regex: RegExp[] = [\n\t\t\t/[áàâãªä]/g,\n\t\t\t/[ÁÀÂÃÄ]/g,\n\t\t\t/[ÍÌÎÏ]/g,\n\t\t\t/[íìîï]/g,\n\t\t\t/[éèêë]/g,\n\t\t\t/[ÉÈÊË]/g,\n\t\t\t/[óòôõºö]/g,\n\t\t\t/[ÓÒÔÕÖ]/g,\n\t\t\t/[úùûü]/g,\n\t\t\t/[ÚÙÛÜ]/g,\n\t\t\t/ç/g,\n\t\t\t/Ç/g,\n\t\t\t/ñ/g,\n\t\t\t/Ñ/g,\n\t\t\t/_/g,\n\t\t\t/[''‹›<>']/g,\n\t\t\t/[\"\"«»„\"]/g,\n\t\t\t/[(){}[\\]]/g,\n\t\t\t/[?¿!¡#$%&^*´`~/°|]/g,\n\t\t\t/[,.:;]/g,\n\t\t\t/ /g\n\t\t];\n\n\t\tconst replacements: string[] = [\n\t\t\t'a',\n\t\t\t'A',\n\t\t\t'I',\n\t\t\t'i',\n\t\t\t'e',\n\t\t\t'E',\n\t\t\t'o',\n\t\t\t'O',\n\t\t\t'u',\n\t\t\t'U',\n\t\t\t'c',\n\t\t\t'C',\n\t\t\t'n',\n\t\t\t'N',\n\t\t\t'-',\n\t\t\t'',\n\t\t\t'',\n\t\t\t'',\n\t\t\t'',\n\t\t\t'',\n\t\t\t'-'\n\t\t];\n\n\t\tlet result = text;\n\t\tfor (let i = 0; i < regex.length; i++) {\n\t\t\tresult = result.replace(regex[i], replacements[i]);\n\t\t}\n\n\t\treturn result;\n\t}\n}\n\n",
|
|
18
18
|
"/**\n * ==============================\n * Util\n * ==============================\n */\n\n/**\n * Callable function type\n */\nexport type Callable<T = unknown> = (...args: unknown[]) => T | Promise<T>;\n\n/**\n * Provides diverse utility functions\n */\nexport class Util {\n\t/**\n\t * Calls any function using promises to keep a standard behavior between\n\t * async and sync functions.\n\t *\n\t * @param callable - The function to run\n\t * @param context - The object `this` will be mapped to\n\t * @param args - List of parameters to pass to the function when called\n\t * @returns A promise that resolves to the result of the function\n\t */\n\tstatic callAsync<T = unknown>(callable: Callable<T>, context: unknown, ...args: unknown[]): Promise<T> {\n\t\ttry {\n\t\t\t// Call the provided function using the context and arguments given\n\t\t\tconst result = callable.apply(context, args);\n\n\t\t\t// Check if the function returned a simple value or a Promise\n\t\t\tif (result instanceof Promise) {\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn Promise.resolve(result);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n\n\t/**\n\t * Creates a UUID. These UUIDs should not be trusted for uniqueness\n\t *\n\t * @returns Generated UUID\n\t */\n\tstatic uuid(): string {\n\t\tif (typeof crypto !== 'undefined' && crypto.getRandomValues) {\n\t\t\treturn '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, (c) => {\n\t\t\t\tconst num = parseInt(c, 10);\n\t\t\t\treturn (num ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (num / 4)))).toString(16);\n\t\t\t});\n\t\t} else {\n\t\t\tconst generate = (): string => Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n\t\t\treturn generate() + generate() + '-' + generate() + '-' + generate() + '-' +\n\t\t\t\tgenerate() + '-' + generate() + generate() + generate();\n\t\t}\n\t}\n}\n\n"
|
|
19
19
|
],
|
|
20
|
-
"mappings": "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",
|
|
21
|
-
"debugId": "
|
|
20
|
+
"mappings": "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",
|
|
21
|
+
"debugId": "AA6F8848C88AE2F064756E2164756E21",
|
|
22
22
|
"names": []
|
|
23
23
|
}
|
package/dist/types/DOM.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DOM.d.ts","sourceRoot":"","sources":["../../src/DOM.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"DOM.d.ts","sourceRoot":"","sources":["../../src/DOM.ts"],"names":[],"mappings":"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"}
|