1/** 2 * @fileoverview dragscroll - scroll area by dragging 3 * @version 0.0.8 4 * 5 * @license MIT, see http://github.com/asvd/dragscroll 6 * @copyright 2015 asvd <[email protected]> 7 */ 8 9 10(function (root, factory) { 11 if (typeof define === 'function' && define.amd) { 12 define(['exports'], factory); 13 } else if (typeof exports !== 'undefined') { 14 factory(exports); 15 } else { 16 factory((root.dragscroll = {})); 17 } 18}(this, function (exports) { 19 var _window = window; 20 var _document = document; 21 var mousemove = 'mousemove'; 22 var mouseup = 'mouseup'; 23 var mousedown = 'mousedown'; 24 var EventListener = 'EventListener'; 25 var addEventListener = 'add'+EventListener; 26 var removeEventListener = 'remove'+EventListener; 27 var newScrollX, newScrollY; 28 29 var dragged = []; 30 var reset = function(i, el) { 31 for (i = 0; i < dragged.length;) { 32 el = dragged[i++]; 33 el = el.container || el; 34 el[removeEventListener](mousedown, el.md, 0); 35 _window[removeEventListener](mouseup, el.mu, 0); 36 _window[removeEventListener](mousemove, el.mm, 0); 37 } 38 39 // cloning into array since HTMLCollection is updated dynamically 40 dragged = [].slice.call(_document.getElementsByClassName('dragscroll')); 41 for (i = 0; i < dragged.length;) { 42 (function(el, lastClientX, lastClientY, pushed, scroller, cont){ 43 (cont = el.container || el)[addEventListener]( 44 mousedown, 45 cont.md = function(e) { 46 if (!el.hasAttribute('nochilddrag') || 47 _document.elementFromPoint( 48 e.pageX, e.pageY 49 ) == cont 50 ) { 51 pushed = 1; 52 lastClientX = e.clientX; 53 lastClientY = e.clientY; 54 55 e.preventDefault(); 56 } 57 }, 0 58 ); 59 60 _window[addEventListener]( 61 mouseup, cont.mu = function() {pushed = 0;}, 0 62 ); 63 64 _window[addEventListener]( 65 mousemove, 66 cont.mm = function(e) { 67 if (pushed) { 68 (scroller = el.scroller||el).scrollLeft -= 69 newScrollX = (- lastClientX + (lastClientX=e.clientX)); 70 scroller.scrollTop -= 71 newScrollY = (- lastClientY + (lastClientY=e.clientY)); 72 if (el == _document.body) { 73 (scroller = _document.documentElement).scrollLeft -= newScrollX; 74 scroller.scrollTop -= newScrollY; 75 } 76 } 77 }, 0 78 ); 79 })(dragged[i++]); 80 } 81 } 82 83 84 if (_document.readyState == 'complete') { 85 reset(); 86 } else { 87 _window[addEventListener]('load', reset, 0); 88 } 89 90 exports.reset = reset; 91})); 92
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.