axentix
Version:
Axentix is a framework mixing fully customizable components & utility-first classes, leaving the design choice to the developer.
3 lines (2 loc) • 4.17 kB
JavaScript
(function(o,r){typeof exports=="object"&&typeof module!="undefined"?r(exports):typeof define=="function"&&define.amd?define(["exports"],r):(o=typeof globalThis!="undefined"?globalThis:o||self,r(o.Utilities={}))})(this,function(o){"use strict";const r=[],g={components:[],plugins:[],prefix:"ax",mode:""},d=t=>g.components.find(e=>e.name===t).class,h=()=>{const t=g.components.filter(n=>n.dataDetection),e=g.plugins.filter(n=>n.dataDetection);return[...t,...e].map(n=>n.name)},T=t=>t.replace(/[\w]([A-Z])/g,e=>e[0]+"-"+e[1]).toLowerCase(),v=(t,e="")=>{const n=T(t);return e?e+"-"+n:n},w=(t,e,n,s,c="")=>{const i=e[0].toUpperCase()+e.slice(1).toLowerCase();h().includes(i)&&n!=="Collapsible"&&i!=="Sidenav"&&(t[e]=d(i).getDefaultOptions());const a=c?c+"-"+e:e,l=y(t[e],n,s,a);if(!(Object.keys(l).length===0&&t.constructor===Object))return l},y=(t,e,n,s="")=>Object.keys(t).reduce((c,i)=>{if(typeof t[i]=="object"&&t[i]!==null){const a=w(t,i,e,n,s);a&&(c[i]=a)}else if(t[i]!==null){const a="data-"+e.toLowerCase()+"-"+v(i,s);if(n.hasAttribute(a)){const l=n.getAttribute(a);c[i]=typeof t[i]=="number"?Number(l):l,typeof t[i]=="boolean"&&(c[i]=l==="true")}}return c},{}),A=(t,e)=>{const n=Object.assign({},d(t).getDefaultOptions());return y(n,t,e)},C=()=>{document.querySelectorAll("[data-ax]").forEach(e=>{let n=e.dataset.ax;if(n=n[0].toUpperCase()+n.slice(1).toLowerCase(),!h().includes(n)){console.error(`[Axentix] Error: ${n} component doesn't exist.
Did you forget to register him ?`,e);return}try{const s=d(n);new s(`#${e.id}`)}catch(s){console.error("[Axentix] Data: Unable to load "+n,s)}})},O=()=>{try{new Axentix.Axentix("all")}catch(t){console.error("[Axentix] Unable to auto init.",t)}};document.addEventListener("DOMContentLoaded",()=>{document.documentElement.dataset.axentix&&O(),C()});const f=(...t)=>t.reduce((e,n)=>{for(let s in n)e[s]=typeof n[s]=="object"&&n[s]!==null?f(e[s],n[s]):n[s];return e},{}),E=(t,e,n)=>f(d(t).getDefaultOptions(),A(t,n),e),D=(t,e=document.createElement("div"))=>(t[0].parentElement.insertBefore(e,t[0]),t.forEach(s=>e.appendChild(s)),e),P=t=>t.replaceWith(...t.childNodes),b=(t,e,n)=>{const s=new CustomEvent("ax."+e,{detail:n||{},bubbles:!0});t.dispatchEvent(s)},p=()=>"ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0,m=()=>!!window.PointerEvent&&"maxTouchPoints"in window.navigator&&window.navigator.maxTouchPoints>=0,L=()=>p()?"touch":m()?"pointer":"mouse",k=t=>r.filter(e=>e.type===t).map(e=>e.instance),u=t=>{const e=r.find(n=>n.type!=="Toast"&&"#"+n.instance.el.id===t);return e?e.instance:!1},I=()=>Math.random().toString().split(".")[1],M=()=>r,S=t=>u(t).sync(),U=()=>r.map(t=>t.instance.sync()),x=t=>u(t).reset(),X=()=>r.map(t=>t.instance.reset()),Y=t=>u(t).destroy(),N=()=>r.map(t=>t.instance.destroy()),q=(t,e,n,s)=>{const c=t&&e?document.querySelector(`.ax-overlay[data-target="${n}"]`):document.createElement("div");return c.classList.add("ax-overlay"),c.style.transitionDuration=s+"ms",c.dataset.target=n,c},B=(t,e,n,s,c)=>{t&&(s?(e.addEventListener("click",n),document.body.appendChild(e),setTimeout(()=>{e.classList.add("active")},50)):(e.classList.remove("active"),setTimeout(()=>{e.removeEventListener("click",n),document.body.removeChild(e)},c)))},$=(t,e='[data-target="{ID}"]')=>Array.from(document.querySelectorAll(e.replace("{ID}",t))),F=t=>t.targetTouches&&t.targetTouches.length>=1?t.targetTouches[0].clientY:t.changedTouches&&t.changedTouches.length>=1?t.changedTouches[0].pageY:t.clientY,W=t=>t.targetTouches&&t.targetTouches.length>=1?t.targetTouches[0].clientX:t.changedTouches&&t.changedTouches.length>=1?t.changedTouches[0].pageX:t.clientX,Z=()=>window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches;o.createEvent=b,o.createOverlay=q,o.destroy=Y,o.destroyAll=N,o.extend=f,o.getAllInstances=M,o.getClientXPosition=W,o.getClientYPosition=F,o.getComponentOptions=E,o.getInstance=u,o.getInstanceByType=k,o.getPointerType=L,o.getTriggers=$,o.getUid=I,o.isDarkMode=Z,o.isPointerEnabled=m,o.isTouchEnabled=p,o.reset=x,o.resetAll=X,o.sync=S,o.syncAll=U,o.unwrap=P,o.updateOverlay=B,o.wrap=D,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})});