UNPKG

babydom

Version:

Little DOM manipulations

5 lines 3.37 kB
/*! * babydom v0.0.7, https://github.com/hoho/babydom * (c) 2014 Marat Abdullin, MIT license */ var $B=function(e,t,n){"use strict";function r(t,n){return n=n||e,/:first$/.test(t)?(n=n.querySelector(t.slice(0,-6)))?[n]:[]:Array.prototype.slice.call(n.querySelectorAll(t))}function i(e,t){var n,i=e instanceof Node||e===window?[e]:e?r(e,t):[];for(n=0;n<i.length;n++)this[n]=i[n];this.length=i.length}function o(e){var t,n,r,i,o=0,l=e.stopPropagation,s=e.stopImmediatePropagation;for(t=e.target,e.stopPropagation=function(){o|=1,l.call(e)},e.stopImmediatePropagation=function(){o|=2,s.call(e)};t;){if((n=t.$b)&&(r=n[e.type]))for(r=r.slice(0),i=0;i<r.length;i++)if(r[i].call(t,e),2&o)return;if(1&o)return;t=t.parentNode}}function l(e){var t,n,r={};for(e=(e||"").split(v),t=0;t<e.length;t++)(n=e[t])&&(r[n]=1);return r}function s(e,t,r){var i,o;if(r===n)return t in f?t===d?e.style.cssText:e[t]:e.getAttribute(t);if(t in f)if(t===d){if("object"==typeof r){o=[];for(i in r)o.push(i+": "+r[i]);r=o.join("; ")}r!==n&&(e.style.cssText=r||null)}else e[t]=null===r?f[t]:r;else null===r?e.removeAttribute(t):e.setAttribute(t,r)}function a(e,t,r,i){var o,a,u,f,c=l(t);for(i!==n&&(i=!!i),o=0;o<e.length;o++){a=e[o],u=l(s(a,g));for(f in c)r===!0||i===!0?u[f]=1:r===!1||i===!1?delete u[f]:f in u?delete u[f]:u[f]=1;s(a,g,Object.keys(u).join(" ")||null)}return e}var u=i.prototype,f={disabled:!1,checked:!1,style:null,value:""},c={focus:1,blur:1},h={focus:1,blur:1,reset:1},p={},v=/[\x20\t\r\n\f]+/,g="class",d="style";return u.attr=function(e,t){var r,i,o=this;for(r=0;r<o.length;r++)if(i=s(o[r],e,t),t===n)return i;return t!==n?o:void 0},u.emit=function(t,n){var r,i,o,l=this;for(r=0;r<l.length;r++)i=l[r],t in h&&i[t]?i[t]():(o=e.createEvent("HTMLEvents"),o.initEvent(t,!0,!0),n&&(o.detail=n),i.dispatchEvent(o));return l},u.on=function(t,n){var r,i,l,s,a=this;if(t)if(t=t.split(v),1===t.length){t+="",t in p||(e.body.addEventListener(t,o,t in c),p[t]=!0);for(l=0;l<a.length;l++)s=a[l],(r=s.$b)||(r=s.$b={}),(i=r[t])||(i=r[t]=[]),i.push(n)}else for(l=0;l<t.length;l++)a.on(t[l],n);return a},u.off=function(e,t){var n,r,i,o=this;for(n=0;n<o.length;n++)if(r=o[n].$b,e&&r)if(e=e.split(v),1===e.length){if(e+="",(i=r[e])&&t)for(n=0;n<i.length;)i[n]===t?i.splice(n,1):n++;!i||i.length&&t||delete r[e]}else for(n=0;n<e.length;n++)o.off(e[n],t);return o},u.text=function(e){var t,r,i=this;for(t=0;t<i.length;t++){if(r=i[t],e===n)return r.textContent;r.textContent=e}return e!==n?i:void 0},u.addClass=function(e){return a(this,e,!0)},u.removeClass=function(e){return a(this,e,!1)},u.toggleClass=function(e,t){return a(this,e,n,t)},u.hasClass=function(e){return e in l(this.attr(g))},u.serialize=function(e){var n,r,i,o,l,s,a,u,f=this,c=[];for(n=0;n<f.length;n++)if(o=f[n],o instanceof HTMLFormElement)for(l=o.elements,r=0;r<l.length;r++)if(s=l[r],a=s.name)switch(s.type){case"submit":case"reset":case"button":case"file":break;case"checkbox":case"radio":s.checked&&c.push({name:a,value:s.value});break;case"select-multiple":for(u=s.options,i=0;i<u.length;i++)u[i].selected&&c.push({name:a,value:u[i].value});break;default:c.push({name:a,value:s.value})}if("map"===e){for(u={},n=c.length;n--;)u[c[n].name]=c[n].value;c=u}if("qs"===e){for(u=[],n=0;n<c.length;n++)u.push(t(c[n].name)+"="+t(c[n].value));c=u.join("&")}return c},function(e,t){return new i(e,t)}}(document,encodeURIComponent);