| /*! |
| * classie - class helper functions |
| * from bonzo https://github.com/ded/bonzo |
| * |
| * classie.has( elem, 'my-class' ) -> true/false |
| * classie.add( elem, 'my-new-class' ) |
| * classie.remove( elem, 'my-unwanted-class' ) |
| * classie.toggle( elem, 'my-class' ) |
| */ |
| |
| /*jshint browser: true, strict: true, undef: true */ |
| /*global define: false */ |
| |
| ( function( window ) { |
| |
| 'use strict'; |
| |
| // class helper functions from bonzo https://github.com/ded/bonzo |
| |
| function classReg( className ) { |
| return new RegExp("(^|\\s+)" + className + "(\\s+|$)"); |
| } |
| |
| // classList support for class management |
| // altho to be fair, the api sucks because it won't accept multiple classes at once |
| var hasClass, addClass, removeClass; |
| |
| if ( 'classList' in document.documentElement ) { |
| hasClass = function( elem, c ) { |
| return elem.classList.contains( c ); |
| }; |
| addClass = function( elem, c ) { |
| elem.classList.add( c ); |
| }; |
| removeClass = function( elem, c ) { |
| elem.classList.remove( c ); |
| }; |
| } |
| else { |
| hasClass = function( elem, c ) { |
| return classReg( c ).test( elem.className ); |
| }; |
| addClass = function( elem, c ) { |
| if ( !hasClass( elem, c ) ) { |
| elem.className = elem.className + ' ' + c; |
| } |
| }; |
| removeClass = function( elem, c ) { |
| elem.className = elem.className.replace( classReg( c ), ' ' ); |
| }; |
| } |
| |
| function toggleClass( elem, c ) { |
| var fn = hasClass( elem, c ) ? removeClass : addClass; |
| fn( elem, c ); |
| } |
| |
| var classie = { |
| // full names |
| hasClass: hasClass, |
| addClass: addClass, |
| removeClass: removeClass, |
| toggleClass: toggleClass, |
| // short names |
| has: hasClass, |
| add: addClass, |
| remove: removeClass, |
| toggle: toggleClass |
| }; |
| |
| // transport |
| if ( typeof define === 'function' && define.amd ) { |
| // AMD |
| define( classie ); |
| } else { |
| // browser global |
| window.classie = classie; |
| } |
| |
| })( window ); |