domtastic
Version:
Small, fast, and modular DOM and event library for modern browsers.
3 lines (2 loc) • 12 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).$=t()}(this,function(){"use strict";var e,t,n="undefined"!=typeof window?window:{},i=function(e){for(var t=e.length,n=new Array(t),i=0;i<t;i++)n[i]=e[i];return n},r=function(e,t,n){var i=e.length;if(void 0!==i&&void 0===e.nodeType)for(var r=0;r<i;r++)t.call(n,e[r],r,e);else t.call(n,e,0,e);return e},o=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];return n.forEach(function(t){for(var n in t)e[n]=t[n]}),e},u=function(e){return e.filter(function(t,n){return e.indexOf(t)===n})},s=!1,c=/^\s*<(\w+|!)[^>]*>/,f=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,a=/^[.#]?[\w-]*$/,l=function(e,t){var n;if(void 0===t&&(t=document),e){if(e instanceof DOMtastic)return e;"string"!=typeof e?n=e.nodeType||e===window?[e]:e:c.test(e)?n=v(e):(t="string"==typeof t?document.querySelector(t):t.length?t[0]:t,n=p(e,t))}else n=document.querySelectorAll(null);return m(n)},d=function(e){var t=[];return r(this,function(n){return r(p(e,n),function(e){-1===t.indexOf(e)&&t.push(e)})}),l(t)},h=(e="undefined"!=typeof Element?Element.prototype:n,t=e.matches||e.matchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector,function(e,n){return t.call(e,n)}),p=function(e,t){if(a.test(e)){if("#"===e[0]){var n=(t.getElementById?t:document).getElementById(e.slice(1));return n?[n]:[]}return"."===e[0]?t.getElementsByClassName(e.slice(1)):t.getElementsByTagName(e)}return t.querySelectorAll(e)},v=function(e){if(f.test(e))return[document.createElement(RegExp.$1)];var t=[],n=document.createElement("div"),i=n.childNodes;n.innerHTML=e;for(var r=0,o=i.length;r<o;r++)t.push(i[r]);return t},m=function(e){return s||(DOMtastic.prototype=l.fn,DOMtastic.prototype.constructor=DOMtastic,s=!0),new DOMtastic(e)},DOMtastic=function(e){for(var t=0,n=e.length;t<n;)this[t]=e[t++];this.length=n},y=Object.freeze({$:l,find:d,matches:h,DOMtastic:DOMtastic}),b=Array.prototype,g=b.every,E=function(e,t){return r(this,e,t)},N=E,C=b.indexOf,O=b.map,w=b.pop,T=b.push,j=b.reduce,A=b.reduceRight,L=b.shift,D=b.some,z=b.unshift,_=Object.freeze({every:g,filter:function(e,t){var n="function"==typeof e?e:function(t){return h(t,e)};return l(b.filter.call(this,n,t))},forEach:E,each:N,indexOf:C,map:O,pop:w,push:T,reduce:j,reduceRight:A,reverse:function(){return l(i(this).reverse())},shift:L,some:D,unshift:z});function M(e){var t=function(){DOMtastic.call(this,l.apply(void 0,arguments))};return o(t.prototype,e),t}var x=function(e){return e.replace(/-([\da-z])/gi,function(e,t){return t.toUpperCase()})},S=Object.freeze({css:function(e,t){var n,i,o;if("string"==typeof e){if(e=x(e),void 0===t){var u=this.nodeType?this:this[0];return u?function(e){return!isNaN(parseFloat(e))&&isFinite(e)}(o=u.style[e])?parseFloat(o):o:void 0}(n={})[e]=t}else for(i in n=e)o=n[i],delete n[i],n[x(i)]=o;return r(this,function(e){for(i in n)n[i]||0===n[i]?e.style[i]=n[i]:e.style.removeProperty(i.replace(/([a-z\d])([A-Z])/g,"$1-$2").toLowerCase())}),this}}),P=Array.prototype.forEach,H=function e(t){if(this instanceof Node)if("string"==typeof t)this.insertAdjacentHTML("beforeend",t);else if(t instanceof Node)this.appendChild(t);else{var n=t instanceof NodeList?i(t):t;P.call(n,this.appendChild.bind(this))}else B(this,e,t);return this},$=function e(t){if(this instanceof Node)if("string"==typeof t)this.insertAdjacentHTML("beforebegin",t);else if(t instanceof Node)this.parentNode.insertBefore(t,this);else{var n=t instanceof NodeList?i(t):t;P.call(n,e.bind(this))}else B(this,e,t);return this},I=function(e){return"string"==typeof e?e:e instanceof Node?e.cloneNode(!0):"length"in e?[].map.call(e,function(e){return e.cloneNode(!0)}):e},B=function(e,t,n){for(var i=e.length;i--;){var r=0===i?n:I(n);t.call(e[i],r)}},k=Object.freeze({append:H,prepend:function e(t){if(this instanceof Node)if("string"==typeof t)this.insertAdjacentHTML("afterbegin",t);else if(t instanceof Node)this.insertBefore(t,this.firstChild);else{var n=t instanceof NodeList?i(t):t;P.call(n.reverse(),e.bind(this))}else B(this,e,t);return this},before:$,after:function e(t){if(this instanceof Node)if("string"==typeof t)this.insertAdjacentHTML("afterend",t);else if(t instanceof Node)this.parentNode.insertBefore(t,this.nextSibling);else{var n=t instanceof NodeList?i(t):t;P.call(n.reverse(),e.bind(this))}else B(this,e,t);return this},clone:function(){return l(I(this))},_clone:I,_each:B}),q=Object.freeze({attr:function(e,t){if("string"==typeof e&&void 0===t){var n=this.nodeType?this:this[0];return n?n.getAttribute(e):void 0}return r(this,function(n){if("object"==typeof e)for(var i in e)n.setAttribute(i,e[i]);else n.setAttribute(e,t)})},removeAttr:function(e){return r(this,function(t){return t.removeAttribute(e)})}}),F=function(e,t){return r(this,function(n){return n.classList[e](t)})},R=Object.freeze({addClass:function(e){return e&&e.length&&r(e.split(" "),F.bind(this,"add")),this},removeClass:function(e){return e&&e.length&&r(e.split(" "),F.bind(this,"remove")),this},toggleClass:function(e,t){if(e&&e.length){var n="boolean"==typeof t?t?"add":"remove":"toggle";r(e.split(" "),F.bind(this,n))}return this},hasClass:function(e){return(this.nodeType?[this]:this).some(function(t){return t.classList.contains(e)})}}),U=function(e,t){return!(!e||!t||e===t)&&(e.contains?e.contains(t):!!e.compareDocumentPosition&&!(e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_DISCONNECTED))},K=Object.freeze({contains:U}),W="undefined"!=typeof document&&"dataset"in document.documentElement,Z=W?"dataset":"__DOMTASTIC_DATA__",G=function(e){return e.replace(/-+(.)?/g,function(e,t){return t?t.toUpperCase():""})},J=Object.freeze({data:function(e,t){if("string"==typeof e&&void 0===t){var n=this.nodeType?this:this[0];return n&&Z in n?n[Z][G(e)]:void 0}return r(this,function(n){W||(n[Z]=n[Z]||{}),n[Z][G(e)]=t})},prop:function(e,t){if("string"==typeof e&&void 0===t){var n=this.nodeType?this:this[0];return n&&n?n[e]:void 0}return r(this,function(n){return n[e]=t})}}),Q=Object.freeze({appendTo:function(e){var t="string"==typeof e?l(e):e;return H.call(t,this),this},empty:function(){return r(this,function(e){return e.innerHTML=""})},remove:function(){return r(this,function(e){e.parentNode&&e.parentNode.removeChild(e)})},replaceWith:function(){return $.apply(this,arguments).remove()},text:function(e){return void 0===e?this[0].textContent:r(this,function(t){return t.textContent=""+e})},val:function(e){return void 0===e?this.length>0?this[0].value:void 0:r(this,function(t){return t.value=e})}}),V=Object.freeze({html:function(e){if(void 0===e){var t=this.nodeType?this:this[0];return t?t.innerHTML:void 0}return r(this,function(t){return t.innerHTML=e})}}),X=function(){var e=function(e,t){var n=[];return r(this,function(i){for(;i&&i!==t;){if(h(i,e)){n.push(i);break}i=i.parentElement}}),l(u(n))};return"undefined"!=typeof Element&&Element.prototype.closest?function(t,n){if(n)return e.call(this,t,n);var i=[];return r(this,function(e){var n=e.closest(t);n&&i.push(n)}),l(u(i))}:e}(),Y=Object.freeze({closest:X}),ee=function(e,t,n,i,o){var u,s,c,f=this;return"function"==typeof t&&(n=t,t=null),e.split(" ").forEach(function(a){u=a.split("."),a=u[0]||null,s=u[1]||null,c=ce(n),r(f,function(r){if(t&&(c=he.bind(r,t,c)),o){var u=c;c=function(o){te.call(r,e,t,n,i),u.call(r,o)}}r.addEventListener(a,c,i||!1),ue(r).push({eventName:a,handler:n,eventListener:c,selector:t,namespace:s})})},this),this},te=function(e,t,n,i){var o,u,s,c=this;return void 0===e&&(e=""),"function"==typeof t&&(n=t,t=null),e.split(" ").forEach(function(e){return o=e.split("."),e=o[0]||null,u=o[1]||null,r(c,function(o){s=ue(o),r(s.filter(function(i){return!(e&&i.eventName!==e||u&&i.namespace!==u||n&&i.handler!==n||t&&i.selector!==t)}),function(e){o.removeEventListener(e.eventName,e.eventListener,i||!1),s.splice(s.indexOf(e),1)}),e||u||t||n?0===s.length&&se(o):se(o)})},this),this},ne="__domtastic_event__",ie=1,re={},oe=[],ue=function(e){e[ne]||(e[ne]=0===oe.length?++ie:oe.pop());var t=e[ne];return re[t]||(re[t]=[])},se=function(e){var t=e[ne];re[t]&&(re[t]=null,e[ne]=null,oe.push(t))},ce=function(e){return function(t){return e.call(this,de(t))}},fe={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"},ae=function(){return!0},le=function(){return!1},de=function(e){if(!e.isDefaultPrevented||e.stopImmediatePropagation||e.stopPropagation){for(var t in fe)!function(t,n,i){e[t]=function(){return this[n]=ae,i&&i.apply(this,arguments)},e[n]=le}(t,fe[t],e[t]);e._preventDefault&&e.preventDefault()}return e},he=function(e,t,n){var i=n._target||n.target,r=X.call([i],e,this)[0];r&&r!==this&&(r!==i&&n.isPropagationStopped&&n.isPropagationStopped()||t.call(r,n))},pe=ee,ve=te,me=Object.freeze({on:ee,off:te,one:function(e,t,n,i){return ee.call(this,e,t,n,i,1)},getHandlers:ue,clearHandlers:se,proxyHandler:ce,delegateHandler:he,bind:pe,unbind:ve}),ye=/^(mouse(down|up|over|out|enter|leave|move)|contextmenu|(dbl)?click)$/,be=/^key(down|press|up)$/,ge=function(e,t,n){var i=void 0===n?{}:n,o=i.bubbles,u=void 0===o||o,s=i.cancelable,c=void 0===s||s,f=i.preventDefault,a=void 0!==f&&f,l=new(Ee(e))(e,{bubbles:u,cancelable:c,preventDefault:a,detail:t});return l._preventDefault=a,r(this,function(n){!u||Te||Ne(n)?we(n,l):Ce(n,e,{bubbles:u,cancelable:c,preventDefault:a,detail:t})})},Ee=function(e){return je?ye.test(e)?MouseEvent:be.test(e)?KeyboardEvent:CustomEvent:CustomEvent},Ne=function(e){return e===window||e===document||U(e.ownerDocument.documentElement,e)},Ce=function(e,t,n){void 0===n&&(n={}),n.bubbles=!1;var i=new CustomEvent(t,n);i._target=e;do{we(e,i)}while(e=e.parentNode)},Oe=["blur","focus","select","submit"],we=function(e,t){-1===Oe.indexOf(t.type)||"function"!=typeof e[t.type]||t._preventDefault||t.cancelable?e.dispatchEvent(t):e[t.type]()};!function(){var e=function(e,t){void 0===t&&(t={bubbles:!1,cancelable:!1,detail:void 0});var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n};e.prototype=n.CustomEvent&&n.CustomEvent.prototype,n.CustomEvent=e}();var Te=function(){var e=!1,t=n.document;if(t){var i=t.createElement("div"),r=i.cloneNode();i.appendChild(r),i.addEventListener("e",function(){e=!0}),r.dispatchEvent(new CustomEvent("e",{bubbles:!0}))}return e}(),je=function(){try{new MouseEvent("click")}catch(e){return!1}return!0}(),Ae=Object.freeze({trigger:ge,triggerHandler:function(e,t){this[0]&&ge.call(this[0],e,t,{bubbles:!1,preventDefault:!0})}}),Le=Object.freeze({ready:function(e){return/complete|loaded|interactive/.test(document.readyState)&&document.body?e():document.addEventListener("DOMContentLoaded",e,!1),this}}),De=n.$,ze=Object.freeze({noConflict:function(){return n.$=De,this}}),_e=function(e,t){return l([].slice.apply(this,arguments))},Me=Object.freeze({children:function(e){var t=[];return r(this,function(n){n.children&&r(n.children,function(n){(!e||e&&h(n,e))&&t.push(n)})}),l(t)},concat:function(e){var t=this;return r(l(e),function(e){-1===[].indexOf.call(t,e)&&[].push.call(t,e)}),this},contents:function(){var e=[];return r(this,function(t){return e.push.apply(e,i(t.childNodes))}),l(e)},eq:function(e){return _e.call(this,e,e+1)},first:function(){return _e.call(this,0,1)},get:function(e){return this[e]},parent:function(e){var t=[];return r(this,function(n){(!e||e&&h(n.parentNode,e))&&t.push(n.parentNode)}),l(t)},siblings:function(e){var t=[];return r(this,function(n){return r(n.parentNode.children,function(i){i!==n&&(!e||e&&h(i,e))&&t.push(i)})}),l(t)},slice:_e}),xe=Array.isArray,Se=Object.freeze({isFunction:function(e){return"function"==typeof e},isArray:xe}),Pe={},He={};return void 0!==y&&((He=l).matches=h,Pe.find=d),o(He,K,ze,Se),o(Pe,_,S,q,k,R,J,Q,V,me,Ae,Le,Y,Me),He.fn=Pe,He.version="0.15.12",He.extend=o,He.BaseClass=M(He.fn),He});
//# sourceMappingURL=domtastic.min.js.map