-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathkauli.min.js
1 lines (1 loc) · 6.18 KB
/
kauli.min.js
1
class DomElement{constructor(e){this.selector=e||null,this.elems="string"==typeof this.selector?document.querySelectorAll(this.selector):e}eventHandler={bindEvent:function(e,t,s,l){e.addEventListener(t,s,l),e.events=e.events||[],e.events.push({event:t,action:s,capture:l})},unbindEvent:function(e,t,s,l){if(e.events)if(s){let n;if(e.events.forEach((e,i)=>{e.event===t&&e.action===s&&e.capture===l&&(n=i)}),void 0!==n){const t=e.events.splice(n,1)[0];e.removeEventListener(t.event,t.action,t.capture)}}else e.events.forEach(t=>{e.removeEventListener(t.event,t.action,t.capture)}),e.events=[]}};on(e,t,s=!0){if(this.elems.length)for(let l=0;l<this.elems.length;l++)this.eventHandler.bindEvent(this.elems[l],e,t,s);else this.eventHandler.bindEvent(this.elems,e,t,s);return new DomElement(this.elems)}off(e,t,s=!0){if(this.elems.length)for(let l=0;l<this.elems.length;l++)this.eventHandler.unbindEvent(this.elems[l],e,t,s);else this.eventHandler.unbindEvent(this.elems,e,t,s);return new DomElement(this.elems)}live(e,t,s,l=!0){function n(e){e.target.matches(t)&&s(e)}if(this.elems.length)for(let t=0;t<this.elems.length;t++)this.eventHandler.bindEvent(this.elems[t],e,n,l);else this.eventHandler.bindEvent(this.elems,e,n,l);return n}kill(e,t,s=!0){if(this.elems.length)for(let l=0;l<this.elems.length;l++)this.eventHandler.unbindEvent(this.elems[l],e,t,s);else this.eventHandler.unbindEvent(this.elems,e,t,s)}val(e){if(void 0===e)return this.elems.length?this.elems[0].value:this.elems.value;if(this.elems.length)for(let t=0;t<this.elems.length;t++)this.elems[t].value=e;else this.elems.value=e;return new DomElement(this.elems)}attr(e,t){if(void 0===t)return this.elems.length?this.elems[0].getAttribute(e):this.elems.getAttribute(e);if(this.elems.length)for(let s=0;s<this.elems.length;s++)this.elems[s].setAttribute(e,t);else this.elems.setAttribute(e,t);return new DomElement(this.elems)}delAttr(e){if(this.elems.length)for(let t=0;t<this.elems.length;t++)this.elems[t].removeAttribute(e);else this.elems.removeAttribute(e);return new DomElement(this.elems)}append(e){if(this.elems.length)for(let t=0;t<this.elems.length;t++)this.elems[t].append(e);else this.elems.append(e);return new DomElement(this.elems)}prepend(e){if(this.elems.length)for(let t=0;t<this.elems.length;t++)this.elems[t].prepend(e);else this.elems.prepend(e);return new DomElement(this.elems)}prev(e){if(void 0===e){this.elems.length?this.elems[0]:this.elems;return new DomElement(this.elems.previousElementSibling)}if(this.elems.length)for(let t=0;t<this.elems.length;t++)this.elems[t].parentNode.insertBefore(e,this.elems[t]);else this.elems.parentNode.insertBefore(e,this.elems);return new DomElement(this.elems)}next(e){if(void 0===e){this.elems.length?this.elems[0]:this.elems;return new DomElement(this.elems.nextElementSibling)}if(this.elems.length)for(let t=0;t<this.elems.length;t++)this.elems[t].parentNode.insertBefore(e,this.elems[t].nextSibling);else this.elems.parentNode.insertBefore(e,this.elems.nextSibling);return new DomElement(this.elems)}del(){if(this.elems.length)for(let e=0;e<this.elems.length;e++)this.elems[e].remove();else this.elems.remove()}hasClass(e){return this.elems.length?!!this.elems[0].classList.contains(e):!!this.elems.classList.contains(e)}addClass(e){if(this.elems.length)for(let t=0;t<this.elems.length;t++)this.elems[t].classList.add(e);else this.elems.classList.add(e);return new DomElement(this.elems)}delClass(e){if(this.elems.length)for(const t of this.elems)t.classList.remove(e);else this.elems.classList.remove(e);return new DomElement(this.elems)}toggleClass(e){if(this.elems.length)for(let t=0;t<this.elems.length;t++)this.elems[t].classList.contains(e)?this.elems[t].classList.remove(e):this.elems[t].classList.add(e);else this.elems.classList.contains(e)?this.elems.classList.remove(e):this.elems.classList.add(e);return new DomElement(this.elems)}html(e){if(void 0===e)return this.elems.length?this.elems[0].innerHTML:this.elems.innerHTML;if(this.elems.length)for(let t=0;t<this.elems.length;t++)this.elems[t].innerHTML=e;else this.elems.innerHTML=e;return new DomElement(this.elems)}outer(){return this.elems.length?this.elems[0].outerHTML:this.elems.outerHTML}parent(){return this.elems.length?new DomElement(this.elems[0].parentNode):new DomElement(this.elems.parentNode)}find(e){return this.elems.length?new DomElement(this.elems[0].querySelectorAll(e)):new DomElement(this.elems.querySelectorAll(e))}focus(){return this.elems.length?this.elems[0].focus():this.elems.focus(),new DomElement(this.elems)}blur(){if(this.elems.length)for(let e=0;e<this.elems.length;e++)this.elems[e].blur();else this.elems.blur();return new DomElement(this.elems)}css(e){if(this.elems.length)for(let t=0;t<this.elems.length;t++)for(const s in e)this.elems[t].style[s]=e[s];else for(const t in e)this.elems.style[t]=e[t];return new DomElement(this.elems)}serialize(){const e={};if(this.elems.length)for(let t=0;t<this.elems.length;t++){const s=this.elems[t].querySelectorAll("[name]");for(const t of s){const s=t.getAttribute("name"),l=t.value;e[s]=l}}else{const t=this.elems.querySelectorAll("[name]");for(const s of t){const t=s.getAttribute("name"),l=s.value;e[t]=l}}return e}}window.$=e=>new DomElement(e),window.$.get=e=>new Promise((t,s)=>{fetch(e).then(t).catch(s)}),window.$.post=(e,t)=>{const s=new Headers;s.append("Content-Type","application/json");const l={method:"POST",headers:s,credentials:"include",body:JSON.stringify(t)};return new Promise((t,s)=>{fetch(e,l).then(t).catch(s)})},window.$.script=(e,t)=>{const s=document.createElement("script");if(s.src=e,t)for(const e of Object.keys(t))s[e]=t[e];document.getElementsByTagName("head")[0].appendChild(s)},window.$.stylesheet=e=>{const t=document.getElementsByTagName("head")[0],s=document.createElement("link");s.rel="stylesheet",s.type="text/css",s.href=e,t.insertBefore(s,t.firstChild)},window.$.cookie=(e,t,s)=>{if(t)if("del"===t)document.cookie=e+"=;expires=Thu, 01 Jan 1970 00:00:01 GMT;path=/";else{let l=`${e}=${t}`;s&&(l+=";path="+(s.path||"/"),s.expires&&(l+=";expires="+s.expires),s.maxage&&(l+=";max-age="+s.maxage)),document.cookie=l}else{const t=document.cookie.split(";");for(const s of t){if(!s)continue;const t=s.split("="),l=t[0].trim(),n=t[1].trim();if(l===e)return n}}},window.$.clone=function(e){return JSON.parse(JSON.stringify(e))};