diff --git a/package.json b/package.json index 4ffb38b..01fc0aa 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "vibe", "description": "jQuery-compatible CSS classes module", - "version": "0.9.3", + "version": "0.9.4", "homepage": "https://github.com/ryanve/vibe", "license": "MIT", "author": "Ryan Van Etten", diff --git a/vibe.js b/vibe.js index c332136..b6f260b 100644 --- a/vibe.js +++ b/vibe.js @@ -1,93 +1,93 @@ -/*! - * vibe 0.9.3+201311230520 - * https://github.com/ryanve/vibe - * MIT License 2013 Ryan Van Etten - */ - +/*! + * vibe 0.9.4+201403131410 + * https://github.com/ryanve/vibe + * MIT License (c) 2014 Ryan Van Etten + */ + (function(root, name, make) { - typeof module != 'undefined' && module['exports'] ? module['exports'] = make() : root[name] = make(); + if (typeof module != 'undefined' && module['exports']) module['exports'] = make(); + else root[name] = make(); }(this, 'vibe', function() { - var classList = 'classList' - , subject = document.documentElement[classList] - , hasApi = !!(subject && subject.contains && subject.add && subject.remove) - , whitespace = /\s+/g - , ssv = /\S+/g - , space = ' ' - , contains = function(str, token) { - return !!~(space + str.replace(whitespace, space) + space).indexOf(space + token + space); - } + var classList = 'classList' + , subject = typeof document != 'undefined' && document.documentElement[classList] + , hasApi = !!(subject && subject.contains && subject.add && subject.remove) + , whitespace = /\s+/g + , ssv = /\S+/g + , space = ' ' + , contains = function(str, token) { + return !!~(space + str.replace(whitespace, space) + space).indexOf(space + token + space); + } - , addClass = hasApi ? function(el, c) { - '' === c || el[classList].add(c); - } : function(el, c) { - contains(el.className, c) || (el.className += space + c); - } + , addClass = hasApi ? function(el, c) { + '' === c || el[classList].add(c); + } : function(el, c) { + contains(el.className, c) || (el.className += space + c); + } - , removeClass = hasApi ? function(el, c) { - '' === c || el[classList].remove(c); - } : function(el, c) { - var diff = 0, s = '', classes = el.className.match(ssv), i = classes && classes.length; - for (c = s + c; i--;) c === classes[i] ? ++diff : s = classes[i] + (s ? space : s) + s; - if (diff) el.className = s; - } + , removeClass = hasApi ? function(el, c) { + '' === c || el[classList].remove(c); + } : function(el, c) { + var diff = 0, s = '', classes = el.className.match(ssv), i = classes && classes.length; + for (c = s + c; i--;) c === classes[i] ? ++diff : s = classes[i] + (s ? space : s) + s; + if (diff) el.className = s; + } - , hasClass = hasApi ? function(el, c) { - return '' === c || !!el[classList].contains(c); - } : function(el, c) { - return contains(el.className, c); - } + , hasClass = hasApi ? function(el, c) { + return '' === c || !!el[classList].contains(c); + } : function(el, c) { + return contains(el.className, c); + } - , toggleClass = function(el, c, force) { - if ('' === c) return true; - force = typeof force == 'boolean' ? force : !hasClass(el, c); - (force ? addClass : removeClass)(el, c); - return force; - }; + , toggleClass = function(el, c, force) { + if ('' === c) return true; + force = typeof force == 'boolean' ? force : !hasClass(el, c); + (force ? addClass : removeClass)(el, c); + return force; + }; - /** - * @param {{length:number}} els - * @param {Function} fn method - * @param {string|Array|Function} list of classes or callback to determine them - */ - function bulk(els, fn, list) { - var j, n, i = 0, l = els.length; - if (typeof list == 'function') { - while (i < l) { - n = list.call(els[i]); - if (false === n) break; - bulk([els[i++]], fn, n); - } - } else if (typeof list == 'string' ? list = list.match(ssv) : list) { - for (n = list.length; i < l; i++) { - for (j = 0; j < n; j++) { - fn(els[i], list[j]); - } - } + /** + * @param {{length:number}} els + * @param {Function} fn method + * @param {string|Array|Function} list of classes or callback to determine them + */ + function bulk(els, fn, list) { + var j, n, i = 0, l = els.length; + if (typeof list == 'function') { + while (i < l) { + n = list.call(els[i]); + if (false === n) break; + bulk([els[i++]], fn, n); + } + } else if (typeof list == 'string' ? list = list.match(ssv) : list) { + for (n = list.length; i < l; i++) { + for (j = 0; j < n; j++) { + fn(els[i], list[j]); } - return els; + } } + return els; + } - return { - 'addClass': addClass - , 'removeClass': removeClass - , 'toggleClass': toggleClass - , 'hasClass': hasClass - , 'fn': { - 'addClass': function(list) { - return bulk(this, addClass, list); - } - , 'removeClass': function(list) { - return bulk(this, removeClass, list); - } - , 'toggleClass': function(list, state) { - return bulk(this, true === state ? addClass : false === state ? removeClass : toggleClass, list); - } - , 'hasClass': function(c) { - for (var i = 0, l = this.length; i < l;) - if (hasClass(this[i++], c)) return true; - return false; - } + return { + 'addClass': addClass + , 'removeClass': removeClass + , 'toggleClass': toggleClass + , 'hasClass': hasClass + , 'fn': { + 'addClass': function(list) { + return bulk(this, addClass, list); } - }; + , 'removeClass': function(list) { + return bulk(this, removeClass, list); + } + , 'toggleClass': function(list, state) { + return bulk(this, true === state ? addClass : false === state ? removeClass : toggleClass, list); + } + , 'hasClass': function(c) { + for (var i = 0, l = this.length; i < l;) if (hasClass(this[i++], c)) return true; + return false; + } + } + }; })); \ No newline at end of file diff --git a/vibe.min.js b/vibe.min.js index 18ca96d..2c292d6 100644 --- a/vibe.min.js +++ b/vibe.min.js @@ -1,6 +1,6 @@ /*! - * vibe 0.9.3+201311230520 + * vibe 0.9.4+201403131410 * https://github.com/ryanve/vibe - * MIT License 2013 Ryan Van Etten + * MIT License (c) 2014 Ryan Van Etten */ -!function(a,b,c){"undefined"!=typeof module&&module.exports?module.exports=c():a[b]=c()}(this,"vibe",function(){function a(b,c,d){var e,g,h=0,i=b.length;if("function"==typeof d)for(;i>h&&(g=d.call(b[h]),!1!==g);)a([b[h++]],c,g);else if("string"==typeof d?d=d.match(f):d)for(g=d.length;i>h;h++)for(e=0;g>e;e++)c(b[h],d[e]);return b}var b="classList",c=document.documentElement[b],d=!!(c&&c.contains&&c.add&&c.remove),e=/\s+/g,f=/\S+/g,g=" ",h=function(a,b){return!!~(g+a.replace(e,g)+g).indexOf(g+b+g)},i=d?function(a,c){""===c||a[b].add(c)}:function(a,b){h(a.className,b)||(a.className+=g+b)},j=d?function(a,c){""===c||a[b].remove(c)}:function(a,b){var c=0,d="",e=a.className.match(f),h=e&&e.length;for(b=d+b;h--;)b===e[h]?++c:d=e[h]+(d?g:d)+d;c&&(a.className=d)},k=d?function(a,c){return""===c||!!a[b].contains(c)}:function(a,b){return h(a.className,b)},l=function(a,b,c){return""===b?!0:(c="boolean"==typeof c?c:!k(a,b),(c?i:j)(a,b),c)};return{addClass:i,removeClass:j,toggleClass:l,hasClass:k,fn:{addClass:function(b){return a(this,i,b)},removeClass:function(b){return a(this,j,b)},toggleClass:function(b,c){return a(this,!0===c?i:!1===c?j:l,b)},hasClass:function(a){for(var b=0,c=this.length;c>b;)if(k(this[b++],a))return!0;return!1}}}}); \ No newline at end of file +!function(a,b,c){"undefined"!=typeof module&&module.exports?module.exports=c():a[b]=c()}(this,"vibe",function(){function a(b,c,d){var e,g,h=0,i=b.length;if("function"==typeof d)for(;i>h&&(g=d.call(b[h]),!1!==g);)a([b[h++]],c,g);else if("string"==typeof d?d=d.match(f):d)for(g=d.length;i>h;h++)for(e=0;g>e;e++)c(b[h],d[e]);return b}var b="classList",c="undefined"!=typeof document&&document.documentElement[b],d=!!(c&&c.contains&&c.add&&c.remove),e=/\s+/g,f=/\S+/g,g=" ",h=function(a,b){return!!~(g+a.replace(e,g)+g).indexOf(g+b+g)},i=d?function(a,c){""===c||a[b].add(c)}:function(a,b){h(a.className,b)||(a.className+=g+b)},j=d?function(a,c){""===c||a[b].remove(c)}:function(a,b){var c=0,d="",e=a.className.match(f),h=e&&e.length;for(b=d+b;h--;)b===e[h]?++c:d=e[h]+(d?g:d)+d;c&&(a.className=d)},k=d?function(a,c){return""===c||!!a[b].contains(c)}:function(a,b){return h(a.className,b)},l=function(a,b,c){return""===b?!0:(c="boolean"==typeof c?c:!k(a,b),(c?i:j)(a,b),c)};return{addClass:i,removeClass:j,toggleClass:l,hasClass:k,fn:{addClass:function(b){return a(this,i,b)},removeClass:function(b){return a(this,j,b)},toggleClass:function(b,c){return a(this,!0===c?i:!1===c?j:l,b)},hasClass:function(a){for(var b=0,c=this.length;c>b;)if(k(this[b++],a))return!0;return!1}}}}); \ No newline at end of file