vendor: 2,260 bytes, lines 1-88
1/* ------------------------------------------------------------ *\ 2|* ------------------------------------------------------------ *| 3|* classie.js 4|* https://github.com/desandro/classie/blob/master/classie.js 5|* ------------------------------------------------------------ *| 6\* ------------------------------------------------------------ */ 7( function( window ) { 8 9'use strict'; 10 11// class helper functions from bonzo https://github.com/ded/bonzo 12 13function classReg( className ) { 14 return new RegExp("(^|\\s+)" + className + "(\\s+|$)"); 15} 16 17// classList support for class management 18// altho to be fair, the api sucks because it won't accept multiple classes at once 19var hasClass, addClass, removeClass; 20 21if ( 'classList' in document.documentElement ) { 22 hasClass = function( elem, c ) { 23 return elem.classList.contains( c ); 24 }; 25 addClass = function( elem, c ) { 26 elem.classList.add( c ); 27 }; 28 removeClass = function( elem, c ) { 29 elem.classList.remove( c ); 30 }; 31} 32else { 33 hasClass = function( elem, c ) { 34 return classReg( c ).test( elem.className ); 35 }; 36 addClass = function( elem, c ) { 37 if ( !hasClass( elem, c ) ) { 38 elem.className = elem.className + ' ' + c; 39 } 40 }; 41 removeClass = function( elem, c ) { 42 elem.className = elem.className.replace( classReg( c ), ' ' ); 43 }; 44} 45 46function toggleClass( elem, c ) { 47 var fn = hasClass( elem, c ) ? removeClass : addClass; 48 fn( elem, c ); 49} 50 51var classie = { 52 // full names 53 hasClass: hasClass, 54 addClass: addClass, 55 removeClass: removeClass, 56 toggleClass: toggleClass, 57 // short names 58 has: hasClass, 59 add: addClass, 60 remove: removeClass, 61 toggle: toggleClass 62}; 63 64// transport 65if ( typeof define === 'function' && define.amd ) { 66 // AMD 67 define( classie ); 68} else { 69 // browser global 70 window.classie = classie; 71} 72 73})( window ); 74 75 76 77 78/* ------------------------------------------------------------ *\ 79|* ------------------------------------------------------------ *| 80|* Functionality for adding/removing classes 81|* ------------------------------------------------------------ *| 82\* ------------------------------------------------------------ */ 83(function(window){ 84 85 // check for touch 86 if (Modernizr.touch) { 87 88 // run the forEach on each figure element
89 [].slice.call(document.querySelectorAll("figure")).forEach(function(el,i){ 90 91 // get close-caption button in variable 92 var closeCaption = el.querySelector(".close-caption"); 93 94 // show the close-caption button 95 classie.remove(closeCaption,"hidden"); 96 97 // check if the user moves a finger 98 var fingerMove = false; 99 el.addEventListener("touchmove",function(e){ 100 e.stopPropagation(); 101 fingerMove = true; 102 }); 103 104 // always reset fingerMove to false on touch start 105 el.addEventListener("touchstart",function(e){ 106 e.stopPropagation(); 107 fingerMove = false; 108 }); 109 110 // add hover class if figure touchend and fingerMove is false 111 el.addEventListener("touchend",function(e){ 112 e.stopPropagation(); 113 if (fingerMove == false) { 114 classie.add(el,"hover"); 115 } 116 }); 117 118 // if close-caption button clicked, remove hover class 119 closeCaption.addEventListener("touchend",function(e){ 120 e.preventDefault(); 121 e.stopPropagation(); 122 if (fingerMove == false) { 123 if (classie.has(el,"hover")) { 124 classie.remove(el,"hover"); 125 } 126 } 127 }); 128 129 }); 130 131 } 132 133})(window);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.