Вход Регистрация
Файл: hashtag.io-2629a1a4ea078149b002e45e2e12bb946062c2b8/public/js/perfectScrollbar.js
Строк: 2082
<?php
/* perfect-scrollbar v0.6.10 */
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
'use strict';

var 
ps = require('../main')
  , 
psInstances = require('../plugin/instances');

function 
mountJQuery(jQuery) {
  
jQuery.fn.perfectScrollbar = function (settingOrCommand) {
    return 
this.each(function () {
      if (
typeof settingOrCommand === 'object' ||
          
typeof settingOrCommand === 'undefined') {
        
// If it's an object or none, initialize.
        
var settings settingOrCommand;

        if (!
psInstances.get(this)) {
          
ps.initialize(thissettings);
        }
      } else {
        
// Unless, it may be a command.
        
var command settingOrCommand;

        if (
command === 'update') {
          
ps.update(this);
        } else if (
command === 'destroy') {
          
ps.destroy(this);
        }
      }

      return 
jQuery(this);
    });
  };
}

if (
typeof define === 'function' && define.amd) {
  
// AMD. Register as an anonymous module.
  
define(['jquery'], mountJQuery);
} else {
  var 
jq window.jQuery window.jQuery window.$;
  if (
typeof jq !== 'undefined') {
    
mountJQuery(jq);
  }
}

module.exports mountJQuery;

},{
"../main":7,"../plugin/instances":18}],2:[function(require,module,exports){
'use strict';

function 
oldAdd(elementclassName) {
  var 
classes element.className.split(' ');
  if (
classes.indexOf(className) < 0) {
    
classes.push(className);
  }
  
element.className classes.join(' ');
}

function 
oldRemove(elementclassName) {
  var 
classes element.className.split(' ');
  var 
idx classes.indexOf(className);
  if (
idx >= 0) {
    
classes.splice(idx1);
  }
  
element.className classes.join(' ');
}

exports.add = function (elementclassName) {
  if (
element.classList) {
    
element.classList.add(className);
  } else {
    
oldAdd(elementclassName);
  }
};

exports.remove = function (elementclassName) {
  if (
element.classList) {
    
element.classList.remove(className);
  } else {
    
oldRemove(elementclassName);
  }
};

exports.list = function (element) {
  if (
element.classList) {
    return Array.
prototype.slice.apply(element.classList);
  } else {
    return 
element.className.split(' ');
  }
};

},{}],
3:[function(require,module,exports){
'use strict';

var 
DOM = {};

DOM.= function (tagNameclassName) {
  var 
element document.createElement(tagName);
  
element.className className;
  return 
element;
};

DOM.appendTo = function (childparent) {
  
parent.appendChild(child);
  return 
child;
};

function 
cssGet(elementstyleName) {
  return 
window.getComputedStyle(element)[styleName];
}

function 
cssSet(elementstyleNamestyleValue) {
  if (
typeof styleValue === 'number') {
    
styleValue styleValue.toString() + 'px';
  }
  
element.style[styleName] = styleValue;
  return 
element;
}

function 
cssMultiSet(elementobj) {
  for (var 
key in obj) {
    var 
val obj[key];
    if (
typeof val === 'number') {
      
val val.toString() + 'px';
    }
    
element.style[key] = val;
  }
  return 
element;
}

DOM.css = function (elementstyleNameOrObjectstyleValue) {
  if (
typeof styleNameOrObject === 'object') {
    
// multiple set with object
    
return cssMultiSet(elementstyleNameOrObject);
  } else {
    if (
typeof styleValue === 'undefined') {
      return 
cssGet(elementstyleNameOrObject);
    } else {
      return 
cssSet(elementstyleNameOrObjectstyleValue);
    }
  }
};

DOM.matches = function (elementquery) {
  if (
typeof element.matches !== 'undefined') {
    return 
element.matches(query);
  } else {
    if (
typeof element.matchesSelector !== 'undefined') {
      return 
element.matchesSelector(query);
    } else if (
typeof element.webkitMatchesSelector !== 'undefined') {
      return 
element.webkitMatchesSelector(query);
    } else if (
typeof element.mozMatchesSelector !== 'undefined') {
      return 
element.mozMatchesSelector(query);
    } else if (
typeof element.msMatchesSelector !== 'undefined') {
      return 
element.msMatchesSelector(query);
    }
  }
};

DOM.remove = function (element) {
  if (
typeof element.remove !== 'undefined') {
    
element.remove();
  } else {
    if (
element.parentNode) {
      
element.parentNode.removeChild(element);
    }
  }
};

DOM.queryChildren = function (elementselector) {
  return Array.
prototype.filter.call(element.childNodes, function (child) {
    return 
DOM.matches(childselector);
  });
};

module.exports DOM;

},{}],
4:[function(require,module,exports){
'use strict';

var 
EventElement = function (element) {
  
this.element element;
  
this.events = {};
};

EventElement.prototype.bind = function (eventNamehandler) {
  if (
typeof this.events[eventName] === 'undefined') {
    
this.events[eventName] = [];
  }
  
this.events[eventName].push(handler);
  
this.element.addEventListener(eventNamehandlerfalse);
};

EventElement.prototype.unbind = function (eventNamehandler) {
  var 
isHandlerProvided = (typeof handler !== 'undefined');
  
this.events[eventName] = this.events[eventName].filter(function (hdlr) {
    if (
isHandlerProvided && hdlr !== handler) {
      return 
true;
    }
    
this.element.removeEventListener(eventNamehdlrfalse);
    return 
false;
  }, 
this);
};

EventElement.prototype.unbindAll = function () {
  for (var 
name in this.events) {
    
this.unbind(name);
  }
};

var 
EventManager = function () {
  
this.eventElements = [];
};

EventManager.prototype.eventElement = function (element) {
  var 
ee this.eventElements.filter(function (eventElement) {
    return 
eventElement.element === element;
  })[
0];
  if (
typeof ee === 'undefined') {
    
ee = new EventElement(element);
    
this.eventElements.push(ee);
  }
  return 
ee;
};

EventManager.prototype.bind = function (elementeventNamehandler) {
  
this.eventElement(element).bind(eventNamehandler);
};

EventManager.prototype.unbind = function (elementeventNamehandler) {
  
this.eventElement(element).unbind(eventNamehandler);
};

EventManager.prototype.unbindAll = function () {
  for (var 
0this.eventElements.lengthi++) {
    
this.eventElements[i].unbindAll();
  }
};

EventManager.prototype.once = function (elementeventNamehandler) {
  var 
ee this.eventElement(element);
  var 
onceHandler = function (e) {
    
ee.unbind(eventNameonceHandler);
    
handler(e);
  };
  
ee.bind(eventNameonceHandler);
};

module.exports EventManager;

},{}],
5:[function(require,module,exports){
'use strict';

module.exports = (function () {
  function 
s4() {
    return 
Math.floor((Math.random()) * 0x10000)
               .
toString(16)
               .
substring(1);
  }
  return function () {
    return 
s4() + s4() + '-' s4() + '-' s4() + '-' +
           
s4() + '-' s4() + s4() + s4();
  };
})();

},{}],
6:[function(require,module,exports){
'use strict';

var 
cls = require('./class')
  , 
= require('./dom');

exports.toInt = function (x) {
  return 
parseInt(x10) || 0;
};

exports.clone = function (obj) {
  if (
obj === null) {
    return 
null;
  } else if (
typeof obj === 'object') {
    var 
result = {};
    for (var 
key in obj) {
      
result[key] = this.clone(obj[key]);
    }
    return 
result;
  } else {
    return 
obj;
  }
};

exports.extend = function (originalsource) {
  var 
result this.clone(original);
  for (var 
key in source) {
    
result[key] = this.clone(source[key]);
  }
  return 
result;
};

exports.isEditable = function (el) {
  return 
d.matches(el"input,[contenteditable]") ||
         
d.matches(el"select,[contenteditable]") ||
         
d.matches(el"textarea,[contenteditable]") ||
         
d.matches(el"button,[contenteditable]");
};

exports.removePsClasses = function (element) {
  var 
clsList cls.list(element);
  for (var 
0clsList.lengthi++) {
    var 
className clsList[i];
    if (
className.indexOf('ps-') === 0) {
      
cls.remove(elementclassName);
    }
  }
};

exports.outerWidth = function (element) {
  return 
this.toInt(d.css(element'width')) +
         
this.toInt(d.css(element'paddingLeft')) +
         
this.toInt(d.css(element'paddingRight')) +
         
this.toInt(d.css(element'borderLeftWidth')) +
         
this.toInt(d.css(element'borderRightWidth'));
};

exports.startScrolling = function (elementaxis) {
  
cls.add(element'ps-in-scrolling');
  if (
typeof axis !== 'undefined') {
    
cls.add(element'ps-' axis);
  } else {
    
cls.add(element'ps-x');
    
cls.add(element'ps-y');
  }
};

exports.stopScrolling = function (elementaxis) {
  
cls.remove(element'ps-in-scrolling');
  if (
typeof axis !== 'undefined') {
    
cls.remove(element'ps-' axis);
  } else {
    
cls.remove(element'ps-x');
    
cls.remove(element'ps-y');
  }
};

exports.env = {
  
isWebKit'WebkitAppearance' in document.documentElement.style,
  
supportsTouch: (('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch),
  
supportsIePointerwindow.navigator.msMaxTouchPoints !== null
};

},{
"./class":2,"./dom":3}],7:[function(require,module,exports){
'use strict';

var 
destroy = require('./plugin/destroy')
  , 
initialize = require('./plugin/initialize')
  , 
update = require('./plugin/update');

module.exports = {
  
initializeinitialize,
  
updateupdate,
  
destroydestroy
};

},{
"./plugin/destroy":9,"./plugin/initialize":17,"./plugin/update":21}],8:[function(require,module,exports){
'use strict';

module.exports = {
  
maxScrollbarLengthnull,
  
minScrollbarLengthnull,
  
scrollXMarginOffset0,
  
scrollYMarginOffset0,
  
stopPropagationOnClicktrue,
  
suppressScrollXfalse,
  
suppressScrollYfalse,
  
swipePropagationtrue,
  
useBothWheelAxesfalse,
  
useKeyboardtrue,
  
useSelectionScrollfalse,
  
wheelPropagationfalse,
  
wheelSpeed1,
  
theme'default'
};

},{}],
9:[function(require,module,exports){
'use strict';

var 
= require('../lib/dom')
  , 
= require('../lib/helper')
  , 
instances = require('./instances');

module.exports = function (element) {
  var 
instances.get(element);

  if (!
i) {
    return;
  }

  
i.event.unbindAll();
  
d.remove(i.scrollbarX);
  
d.remove(i.scrollbarY);
  
d.remove(i.scrollbarXRail);
  
d.remove(i.scrollbarYRail);
  
h.removePsClasses(element);

  
instances.remove(element);
};

},{
"../lib/dom":3,"../lib/helper":6,"./instances":18}],10:[function(require,module,exports){
'use strict';

var 
= require('../../lib/helper')
  , 
instances = require('../instances')
  , 
updateGeometry = require('../update-geometry')
  , 
updateScroll = require('../update-scroll');

function 
bindClickRailHandler(elementi) {
  function 
pageOffset(el) {
    return 
el.getBoundingClientRect();
  }
  var 
stopPropagation window.Event.prototype.stopPropagation.bind;

  if (
i.settings.stopPropagationOnClick) {
    
i.event.bind(i.scrollbarY'click'stopPropagation);
  }
  
i.event.bind(i.scrollbarYRail'click', function (e) {
    var 
halfOfScrollbarLength h.toInt(i.scrollbarYHeight 2);
    var 
positionTop i.railYRatio * (e.pageY window.pageYOffset pageOffset(i.scrollbarYRail).top halfOfScrollbarLength);
    var 
maxPositionTop i.railYRatio * (i.railYHeight i.scrollbarYHeight);
    var 
positionRatio positionTop maxPositionTop;

    if (
positionRatio 0) {
      
positionRatio 0;
    } else if (
positionRatio 1) {
      
positionRatio 1;
    }

    
updateScroll(element'top', (i.contentHeight i.containerHeight) * positionRatio);
    
updateGeometry(element);

    
e.stopPropagation();
  });

  if (
i.settings.stopPropagationOnClick) {
    
i.event.bind(i.scrollbarX'click'stopPropagation);
  }
  
i.event.bind(i.scrollbarXRail'click', function (e) {
    var 
halfOfScrollbarLength h.toInt(i.scrollbarXWidth 2);
    var 
positionLeft i.railXRatio * (e.pageX window.pageXOffset pageOffset(i.scrollbarXRail).left halfOfScrollbarLength);
    var 
maxPositionLeft i.railXRatio * (i.railXWidth i.scrollbarXWidth);
    var 
positionRatio positionLeft maxPositionLeft;

    if (
positionRatio 0) {
      
positionRatio 0;
    } else if (
positionRatio 1) {
      
positionRatio 1;
    }

    
updateScroll(element'left', ((i.contentWidth i.containerWidth) * positionRatio) - i.negativeScrollAdjustment);
    
updateGeometry(element);

    
e.stopPropagation();
  });
}

module.exports = function (element) {
  var 
instances.get(element);
  
bindClickRailHandler(elementi);
};

},{
"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],11:[function(require,module,exports){
'use strict';

var 
= require('../../lib/dom')
  , 
= require('../../lib/helper')
  , 
instances = require('../instances')
  , 
updateGeometry = require('../update-geometry')
  , 
updateScroll = require('../update-scroll');

function 
bindMouseScrollXHandler(elementi) {
  var 
currentLeft null;
  var 
currentPageX null;

  function 
updateScrollLeft(deltaX) {
    var 
newLeft currentLeft + (deltaX i.railXRatio);
    var 
maxLeft Math.max(0i.scrollbarXRail.getBoundingClientRect().left) + (i.railXRatio * (i.railXWidth i.scrollbarXWidth));

    if (
newLeft 0) {
      
i.scrollbarXLeft 0;
    } else if (
newLeft maxLeft) {
      
i.scrollbarXLeft maxLeft;
    } else {
      
i.scrollbarXLeft newLeft;
    }

    var 
scrollLeft h.toInt(i.scrollbarXLeft * (i.contentWidth i.containerWidth) / (i.containerWidth - (i.railXRatio i.scrollbarXWidth))) - i.negativeScrollAdjustment;
    
updateScroll(element'left'scrollLeft);
  }

  var 
mouseMoveHandler = function (e) {
    
updateScrollLeft(e.pageX currentPageX);
    
updateGeometry(element);
    
e.stopPropagation();
    
e.preventDefault();
  };

  var 
mouseUpHandler = function () {
    
h.stopScrolling(element'x');
    
i.event.unbind(i.ownerDocument'mousemove'mouseMoveHandler);
  };

  
i.event.bind(i.scrollbarX'mousedown', function (e) {
    
currentPageX e.pageX;
    
currentLeft h.toInt(d.css(i.scrollbarX'left')) * i.railXRatio;
    
h.startScrolling(element'x');

    
i.event.bind(i.ownerDocument'mousemove'mouseMoveHandler);
    
i.event.once(i.ownerDocument'mouseup'mouseUpHandler);

    
e.stopPropagation();
    
e.preventDefault();
  });
}

function 
bindMouseScrollYHandler(elementi) {
  var 
currentTop null;
  var 
currentPageY null;

  function 
updateScrollTop(deltaY) {
    var 
newTop currentTop + (deltaY i.railYRatio);
    var 
maxTop Math.max(0i.scrollbarYRail.getBoundingClientRect().top) + (i.railYRatio * (i.railYHeight i.scrollbarYHeight));

    if (
newTop 0) {
      
i.scrollbarYTop 0;
    } else if (
newTop maxTop) {
      
i.scrollbarYTop maxTop;
    } else {
      
i.scrollbarYTop newTop;
    }

    var 
scrollTop h.toInt(i.scrollbarYTop * (i.contentHeight i.containerHeight) / (i.containerHeight - (i.railYRatio i.scrollbarYHeight)));
    
updateScroll(element'top'scrollTop);
  }

  var 
mouseMoveHandler = function (e) {
    
updateScrollTop(e.pageY currentPageY);
    
updateGeometry(element);
    
e.stopPropagation();
    
e.preventDefault();
  };

  var 
mouseUpHandler = function () {
    
h.stopScrolling(element'y');
    
i.event.unbind(i.ownerDocument'mousemove'mouseMoveHandler);
  };

  
i.event.bind(i.scrollbarY'mousedown', function (e) {
    
currentPageY e.pageY;
    
currentTop h.toInt(d.css(i.scrollbarY'top')) * i.railYRatio;
    
h.startScrolling(element'y');

    
i.event.bind(i.ownerDocument'mousemove'mouseMoveHandler);
    
i.event.once(i.ownerDocument'mouseup'mouseUpHandler);

    
e.stopPropagation();
    
e.preventDefault();
  });
}

module.exports = function (element) {
  var 
instances.get(element);
  
bindMouseScrollXHandler(elementi);
  
bindMouseScrollYHandler(elementi);
};

},{
"../../lib/dom":3,"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],12:[function(require,module,exports){
'use strict';

var 
= require('../../lib/helper')
  , 
= require('../../lib/dom')
  , 
instances = require('../instances')
  , 
updateGeometry = require('../update-geometry')
  , 
updateScroll = require('../update-scroll');

function 
bindKeyboardHandler(elementi) {
  var 
hovered false;
  
i.event.bind(element'mouseenter', function () {
    
hovered true;
  });
  
i.event.bind(element'mouseleave', function () {
    
hovered false;
  });

  var 
shouldPrevent false;
  function 
shouldPreventDefault(deltaXdeltaY) {
    var 
scrollTop element.scrollTop;
    if (
deltaX === 0) {
      if (!
i.scrollbarYActive) {
        return 
false;
      }
      if ((
scrollTop === && deltaY 0) || (scrollTop >= i.contentHeight i.containerHeight && deltaY 0)) {
        return !
i.settings.wheelPropagation;
      }
    }

    var 
scrollLeft element.scrollLeft;
    if (
deltaY === 0) {
      if (!
i.scrollbarXActive) {
        return 
false;
      }
      if ((
scrollLeft === && deltaX 0) || (scrollLeft >= i.contentWidth i.containerWidth && deltaX 0)) {
        return !
i.settings.wheelPropagation;
      }
    }
    return 
true;
  }

  
i.event.bind(i.ownerDocument'keydown', function (e) {
    if (
e.isDefaultPrevented && e.isDefaultPrevented()) {
      return;
    }

    var 
focused d.matches(i.scrollbarX':focus') ||
                  
d.matches(i.scrollbarY':focus');

    if (!
hovered && !focused) {
      return;
    }

    var 
activeElement document.activeElement document.activeElement i.ownerDocument.activeElement;
    if (
activeElement) {
      
// go deeper if element is a webcomponent
      
while (activeElement.shadowRoot) {
        
activeElement activeElement.shadowRoot.activeElement;
      }
      if (
h.isEditable(activeElement)) {
        return;
      }
    }

    var 
deltaX 0;
    var 
deltaY 0;

    switch (
e.which) {
    case 
37// left
      
deltaX = -30;
      break;
    case 
38// up
      
deltaY 30;
      break;
    case 
39// right
      
deltaX 30;
      break;
    case 
40// down
      
deltaY = -30;
      break;
    case 
33// page up
      
deltaY 90;
      break;
    case 
32// space bar
      
if (e.shiftKey) {
        
deltaY 90;
      } else {
        
deltaY = -90;
      }
      break;
    case 
34// page down
      
deltaY = -90;
      break;
    case 
35// end
      
if (e.ctrlKey) {
        
deltaY = -i.contentHeight;
      } else {
        
deltaY = -i.containerHeight;
      }
      break;
    case 
36// home
      
if (e.ctrlKey) {
        
deltaY element.scrollTop;
      } else {
        
deltaY i.containerHeight;
      }
      break;
    default:
      return;
    }

    
updateScroll(element'top'element.scrollTop deltaY);
    
updateScroll(element'left'element.scrollLeft deltaX);
    
updateGeometry(element);

    
shouldPrevent shouldPreventDefault(deltaXdeltaY);
    if (
shouldPrevent) {
      
e.preventDefault();
    }
  });
}

module.exports = function (element) {
  var 
instances.get(element);
  
bindKeyboardHandler(elementi);
};

},{
"../../lib/dom":3,"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],13:[function(require,module,exports){
'use strict';

var 
instances = require('../instances')
  , 
updateGeometry = require('../update-geometry')
  , 
updateScroll = require('../update-scroll');

function 
bindMouseWheelHandler(elementi) {
  var 
shouldPrevent false;

  function 
shouldPreventDefault(deltaXdeltaY) {
    var 
scrollTop element.scrollTop;
    if (
deltaX === 0) {
      if (!
i.scrollbarYActive) {
        return 
false;
      }
      if ((
scrollTop === && deltaY 0) || (scrollTop >= i.contentHeight i.containerHeight && deltaY 0)) {
        return !
i.settings.wheelPropagation;
      }
    }

    var 
scrollLeft element.scrollLeft;
    if (
deltaY === 0) {
      if (!
i.scrollbarXActive) {
        return 
false;
      }
      if ((
scrollLeft === && deltaX 0) || (scrollLeft >= i.contentWidth i.containerWidth && deltaX 0)) {
        return !
i.settings.wheelPropagation;
      }
    }
    return 
true;
  }

  function 
getDeltaFromEvent(e) {
    var 
deltaX e.deltaX;
    var 
deltaY = -e.deltaY;

    if (
typeof deltaX === "undefined" || typeof deltaY === "undefined") {
      
// OS X Safari
      
deltaX = -e.wheelDeltaX 6;
      
deltaY e.wheelDeltaY 6;
    }

    if (
e.deltaMode && e.deltaMode === 1) {
      
// Firefox in deltaMode 1: Line scrolling
      
deltaX *= 10;
      
deltaY *= 10;
    }

    if (
deltaX !== deltaX && deltaY !== deltaY/* NaN checks */) {
      
// IE in some mouse drivers
      
deltaX 0;
      
deltaY e.wheelDelta;
    }

    return [
deltaXdeltaY];
  }

  function 
shouldBeConsumedByTextarea(deltaXdeltaY) {
    var 
hoveredTextarea element.querySelector('textarea:hover');
    if (
hoveredTextarea) {
      var 
maxScrollTop hoveredTextarea.scrollHeight hoveredTextarea.clientHeight;
      if (
maxScrollTop 0) {
        if (!(
hoveredTextarea.scrollTop === && deltaY 0) &&
            !(
hoveredTextarea.scrollTop === maxScrollTop && deltaY 0)) {
          return 
true;
        }
      }
      var 
maxScrollLeft hoveredTextarea.scrollLeft hoveredTextarea.clientWidth;
      if (
maxScrollLeft 0) {
        if (!(
hoveredTextarea.scrollLeft === && deltaX 0) &&
            !(
hoveredTextarea.scrollLeft === maxScrollLeft && deltaX 0)) {
          return 
true;
        }
      }
    }
    return 
false;
  }

  function 
mousewheelHandler(e) {
    var 
delta getDeltaFromEvent(e);

    var 
deltaX delta[0];
    var 
deltaY delta[1];

    if (
shouldBeConsumedByTextarea(deltaXdeltaY)) {
      return;
    }

    
shouldPrevent false;
    if (!
i.settings.useBothWheelAxes) {
      
// deltaX will only be used for horizontal scrolling and deltaY will
      // only be used for vertical scrolling - this is the default
      
updateScroll(element'top'element.scrollTop - (deltaY i.settings.wheelSpeed));
      
updateScroll(element'left'element.scrollLeft + (deltaX i.settings.wheelSpeed));
    } else if (
i.scrollbarYActive && !i.scrollbarXActive) {
      
// only vertical scrollbar is active and useBothWheelAxes option is
      // active, so let's scroll vertical bar using both mouse wheel axes
      
if (deltaY) {
        
updateScroll(element'top'element.scrollTop - (deltaY i.settings.wheelSpeed));
      } else {
        
updateScroll(element'top'element.scrollTop + (deltaX i.settings.wheelSpeed));
      }
      
shouldPrevent true;
    } else if (
i.scrollbarXActive && !i.scrollbarYActive) {
      
// useBothWheelAxes and only horizontal bar is active, so use both
      // wheel axes for horizontal bar
      
if (deltaX) {
        
updateScroll(element'left'element.scrollLeft + (deltaX i.settings.wheelSpeed));
      } else {
        
updateScroll(element'left'element.scrollLeft - (deltaY i.settings.wheelSpeed));
      }
      
shouldPrevent true;
    }

    
updateGeometry(element);

    
shouldPrevent = (shouldPrevent || shouldPreventDefault(deltaXdeltaY));
    if (
shouldPrevent) {
      
e.stopPropagation();
      
e.preventDefault();
    }
  }

  if (
typeof window.onwheel !== "undefined") {
    
i.event.bind(element'wheel'mousewheelHandler);
  } else if (
typeof window.onmousewheel !== "undefined") {
    
i.event.bind(element'mousewheel'mousewheelHandler);
  }
}

module.exports = function (element) {
  var 
instances.get(element);
  
bindMouseWheelHandler(elementi);
};

},{
"../instances":18,"../update-geometry":19,"../update-scroll":20}],14:[function(require,module,exports){
'use strict';

var 
instances = require('../instances')
  , 
updateGeometry = require('../update-geometry');

function 
bindNativeScrollHandler(elementi) {
  
i.event.bind(element'scroll', function () {
    
updateGeometry(element);
  });
}

module.exports = function (element) {
  var 
instances.get(element);
  
bindNativeScrollHandler(elementi);
};

},{
"../instances":18,"../update-geometry":19}],15:[function(require,module,exports){
'use strict';

var 
= require('../../lib/helper')
  , 
instances = require('../instances')
  , 
updateGeometry = require('../update-geometry')
  , 
updateScroll = require('../update-scroll');

function 
bindSelectionHandler(elementi) {
  function 
getRangeNode() {
    var 
selection window.getSelection window.getSelection() :
                    
document.getSelection document.getSelection() : '';
    if (
selection.toString().length === 0) {
      return 
null;
    } else {
      return 
selection.getRangeAt(0).commonAncestorContainer;
    }
  }

  var 
scrollingLoop null;
  var 
scrollDiff = {top0left0};
  function 
startScrolling() {
    if (!
scrollingLoop) {
      
scrollingLoop setInterval(function () {
        if (!
instances.get(element)) {
          
clearInterval(scrollingLoop);
          return;
        }

        
updateScroll(element'top'element.scrollTop scrollDiff.top);
        
updateScroll(element'left'element.scrollLeft scrollDiff.left);
        
updateGeometry(element);
      }, 
50); // every .1 sec
    
}
  }
  function 
stopScrolling() {
    if (
scrollingLoop) {
      
clearInterval(scrollingLoop);
      
scrollingLoop null;
    }
    
h.stopScrolling(element);
  }

  var 
isSelected false;
  
i.event.bind(i.ownerDocument'selectionchange', function () {
    if (
element.contains(getRangeNode())) {
      
isSelected true;
    } else {
      
isSelected false;
      
stopScrolling();
    }
  });
  
i.event.bind(window'mouseup', function () {
    if (
isSelected) {
      
isSelected false;
      
stopScrolling();
    }
  });

  
i.event.bind(window'mousemove', function (e) {
    if (
isSelected) {
      var 
mousePosition = {xe.pageXye.pageY};
      var 
containerGeometry = {
        
leftelement.offsetLeft,
        
rightelement.offsetLeft element.offsetWidth,
        
topelement.offsetTop,
        
bottomelement.offsetTop element.offsetHeight
      
};

      if (
mousePosition.containerGeometry.left 3) {
        
scrollDiff.left = -5;
        
h.startScrolling(element'x');
      } else if (
mousePosition.containerGeometry.right 3) {
        
scrollDiff.left 5;
        
h.startScrolling(element'x');
      } else {
        
scrollDiff.left 0;
      }

      if (
mousePosition.containerGeometry.top 3) {
        if (
containerGeometry.top mousePosition.5) {
          
scrollDiff.top = -5;
        } else {
          
scrollDiff.top = -20;
        }
        
h.startScrolling(element'y');
      } else if (
mousePosition.containerGeometry.bottom 3) {
        if (
mousePosition.containerGeometry.bottom 5) {
          
scrollDiff.top 5;
        } else {
          
scrollDiff.top 20;
        }
        
h.startScrolling(element'y');
      } else {
        
scrollDiff.top 0;
      }

      if (
scrollDiff.top === && scrollDiff.left === 0) {
        
stopScrolling();
      } else {
        
startScrolling();
      }
    }
  });
}

module.exports = function (element) {
  var 
instances.get(element);
  
bindSelectionHandler(elementi);
};

},{
"../../lib/helper":6,"../instances":18,"../update-geometry":19,"../update-scroll":20}],16:[function(require,module,exports){
'use strict';

var 
instances = require('../instances')
  , 
updateGeometry = require('../update-geometry')
  , 
updateScroll = require('../update-scroll');

function 
bindTouchHandler(elementisupportsTouchsupportsIePointer) {
  function 
shouldPreventDefault(deltaXdeltaY) {
    var 
scrollTop element.scrollTop;
    var 
scrollLeft element.scrollLeft;
    var 
magnitudeX Math.abs(deltaX);
    var 
magnitudeY Math.abs(deltaY);

    if (
magnitudeY magnitudeX) {
      
// user is perhaps trying to swipe up/down the page

      
if (((deltaY 0) && (scrollTop === i.contentHeight i.containerHeight)) ||
          ((
deltaY 0) && (scrollTop === 0))) {
        return !
i.settings.swipePropagation;
      }
    } else if (
magnitudeX magnitudeY) {
      
// user is perhaps trying to swipe left/right across the page

      
if (((deltaX 0) && (scrollLeft === i.contentWidth i.containerWidth)) ||
          ((
deltaX 0) && (scrollLeft === 0))) {
        return !
i.settings.swipePropagation;
      }
    }

    return 
true;
  }

  function 
applyTouchMove(differenceXdifferenceY) {
    
updateScroll(element'top'element.scrollTop differenceY);
    
updateScroll(element'left'element.scrollLeft differenceX);

    
updateGeometry(element);
  }

  var 
startOffset = {};
  var 
startTime 0;
  var 
speed = {};
  var 
easingLoop null;
  var 
inGlobalTouch false;
  var 
inLocalTouch false;

  function 
globalTouchStart() {
    
inGlobalTouch true;
  }
  function 
globalTouchEnd() {
    
inGlobalTouch false;
  }

  function 
getTouch(e) {
    if (
e.targetTouches) {
      return 
e.targetTouches[0];
    } else {
      
// Maybe IE pointer
      
return e;
    }
  }
  function 
shouldHandle(e) {
    if (
e.targetTouches && e.targetTouches.length === 1) {
      return 
true;
    }
    if (
e.pointerType && e.pointerType !== 'mouse' && e.pointerType !== e.MSPOINTER_TYPE_MOUSE) {
      return 
true;
    }
    return 
false;
  }
  function 
touchStart(e) {
    if (
shouldHandle(e)) {
      
inLocalTouch true;

      var 
touch getTouch(e);

      
startOffset.pageX touch.pageX;
      
startOffset.pageY touch.pageY;

      
startTime = (new Date()).getTime();

      if (
easingLoop !== null) {
        
clearInterval(easingLoop);
      }

      
e.stopPropagation();
    }
  }
  function 
touchMove(e) {
    if (!
inGlobalTouch && inLocalTouch && shouldHandle(e)) {
      var 
touch getTouch(e);

      var 
currentOffset = {pageXtouch.pageXpageYtouch.pageY};

      var 
differenceX currentOffset.pageX startOffset.pageX;
      var 
differenceY currentOffset.pageY startOffset.pageY;

      
applyTouchMove(differenceXdifferenceY);
      
startOffset currentOffset;

      var 
currentTime = (new Date()).getTime();

      var 
timeGap currentTime startTime;
      if (
timeGap 0) {
        
speed.differenceX timeGap;
        
speed.differenceY timeGap;
        
startTime currentTime;
      }

      if (
shouldPreventDefault(differenceXdifferenceY)) {
        
e.stopPropagation();
        
e.preventDefault();
      }
    }
  }
  function 
touchEnd() {
    if (!
inGlobalTouch && inLocalTouch) {
      
inLocalTouch false;

      
clearInterval(easingLoop);
      
easingLoop setInterval(function () {
        if (!
instances.get(element)) {
          
clearInterval(easingLoop);
          return;
        }

        if (
Math.abs(speed.x) < 0.01 && Math.abs(speed.y) < 0.01) {
          
clearInterval(easingLoop);
          return;
        }

        
applyTouchMove(speed.30speed.30);

        
speed.*= 0.8;
        
speed.*= 0.8;
      }, 
10);
    }
  }

  if (
supportsTouch) {
    
i.event.bind(window'touchstart'globalTouchStart);
    
i.event.bind(window'touchend'globalTouchEnd);
    
i.event.bind(element'touchstart'touchStart);
    
i.event.bind(element'touchmove'touchMove);
    
i.event.bind(element'touchend'touchEnd);
  }

  if (
supportsIePointer) {
    if (
window.PointerEvent) {
      
i.event.bind(window'pointerdown'globalTouchStart);
      
i.event.bind(window'pointerup'globalTouchEnd);
      
i.event.bind(element'pointerdown'touchStart);
      
i.event.bind(element'pointermove'touchMove);
      
i.event.bind(element'pointerup'touchEnd);
    } else if (
window.MSPointerEvent) {
      
i.event.bind(window'MSPointerDown'globalTouchStart);
      
i.event.bind(window'MSPointerUp'globalTouchEnd);
      
i.event.bind(element'MSPointerDown'touchStart);
      
i.event.bind(element'MSPointerMove'touchMove);
      
i.event.bind(element'MSPointerUp'touchEnd);
    }
  }
}

module.exports = function (elementsupportsTouchsupportsIePointer) {
  var 
instances.get(element);
  
bindTouchHandler(elementisupportsTouchsupportsIePointer);
};

},{
"../instances":18,"../update-geometry":19,"../update-scroll":20}],17:[function(require,module,exports){
'use strict';

var 
cls = require('../lib/class')
  , 
= require('../lib/helper')
  , 
instances = require('./instances')
  , 
updateGeometry = require('./update-geometry');

// Handlers
var clickRailHandler = require('./handler/click-rail')
  , 
dragScrollbarHandler = require('./handler/drag-scrollbar')
  , 
keyboardHandler = require('./handler/keyboard')
  , 
mouseWheelHandler = require('./handler/mouse-wheel')
  , 
nativeScrollHandler = require('./handler/native-scroll')
  , 
selectionHandler = require('./handler/selection')
  , 
touchHandler = require('./handler/touch');

module.exports = function (elementuserSettings) {
  
userSettings typeof userSettings === 'object' userSettings : {};

  
cls.add(element'ps-container');

  
// Create a plugin instance.
  
var instances.add(element);

  
i.settings h.extend(i.settingsuserSettings);
  
cls.add(element'ps-theme-' i.settings.theme);

  
clickRailHandler(element);
  
dragScrollbarHandler(element);
  
mouseWheelHandler(element);
  
nativeScrollHandler(element);

  if (
i.settings.useSelectionScroll) {
    
selectionHandler(element);
  }

  if (
h.env.supportsTouch || h.env.supportsIePointer) {
    
touchHandler(elementh.env.supportsTouchh.env.supportsIePointer);
  }
  if (
i.settings.useKeyboard) {
    
keyboardHandler(element);
  }

  
updateGeometry(element);
};

},{
"../lib/class":2,"../lib/helper":6,"./handler/click-rail":10,"./handler/drag-scrollbar":11,"./handler/keyboard":12,"./handler/mouse-wheel":13,"./handler/native-scroll":14,"./handler/selection":15,"./handler/touch":16,"./instances":18,"./update-geometry":19}],18:[function(require,module,exports){
'use strict';

var 
cls = require('../lib/class')
  , 
= require('../lib/dom')
  , 
defaultSettings = require('./default-setting')
  , 
EventManager = require('../lib/event-manager')
  , 
guid = require('../lib/guid')
  , 
= require('../lib/helper');

var 
instances = {};

function 
Instance(element) {
  var 
this;

  
i.settings h.clone(defaultSettings);
  
i.containerWidth null;
  
i.containerHeight null;
  
i.contentWidth null;
  
i.contentHeight null;

  
i.isRtl d.css(element'direction') === "rtl";
  
i.isNegativeScroll = (function () {
    var 
originalScrollLeft element.scrollLeft;
    var 
result null;
    
element.scrollLeft = -1;
    
result element.scrollLeft 0;
    
element.scrollLeft originalScrollLeft;
    return 
result;
  })();
  
i.negativeScrollAdjustment i.isNegativeScroll element.scrollWidth element.clientWidth 0;
  
i.event = new EventManager();
  
i.ownerDocument element.ownerDocument || document;

  function 
focus() {
    
cls.add(element'ps-focus');
  }

  function 
blur() {
    
cls.remove(element'ps-focus');
  }

  
i.scrollbarXRail d.appendTo(d.e('div''ps-scrollbar-x-rail'), element);
  
i.scrollbarX d.appendTo(d.e('div''ps-scrollbar-x'), i.scrollbarXRail);
  
i.scrollbarX.setAttribute('tabindex'0);
  
i.event.bind(i.scrollbarX'focus'focus);
  
i.event.bind(i.scrollbarX'blur'blur);
  
i.scrollbarXActive null;
  
i.scrollbarXWidth null;
  
i.scrollbarXLeft null;
  
i.scrollbarXBottom h.toInt(d.css(i.scrollbarXRail'bottom'));
  
i.isScrollbarXUsingBottom i.scrollbarXBottom === i.scrollbarXBottom// !isNaN
  
i.scrollbarXTop i.isScrollbarXUsingBottom null h.toInt(d.css(i.scrollbarXRail'top'));
  
i.railBorderXWidth h.toInt(d.css(i.scrollbarXRail'borderLeftWidth')) + h.toInt(d.css(i.scrollbarXRail'borderRightWidth'));
  
// Set rail to display:block to calculate margins
  
d.css(i.scrollbarXRail'display''block');
  
i.railXMarginWidth h.toInt(d.css(i.scrollbarXRail'marginLeft')) + h.toInt(d.css(i.scrollbarXRail'marginRight'));
  
d.css(i.scrollbarXRail'display''');
  
i.railXWidth null;
  
i.railXRatio null;

  
i.scrollbarYRail d.appendTo(d.e('div''ps-scrollbar-y-rail'), element);
  
i.scrollbarY d.appendTo(d.e('div''ps-scrollbar-y'), i.scrollbarYRail);
  
i.scrollbarY.setAttribute('tabindex'0);
  
i.event.bind(i.scrollbarY'focus'focus);
  
i.event.bind(i.scrollbarY'blur'blur);
  
i.scrollbarYActive null;
  
i.scrollbarYHeight null;
  
i.scrollbarYTop null;
  
i.scrollbarYRight h.toInt(d.css(i.scrollbarYRail'right'));
  
i.isScrollbarYUsingRight i.scrollbarYRight === i.scrollbarYRight// !isNaN
  
i.scrollbarYLeft i.isScrollbarYUsingRight null h.toInt(d.css(i.scrollbarYRail'left'));
  
i.scrollbarYOuterWidth i.isRtl h.outerWidth(i.scrollbarY) : null;
  
i.railBorderYWidth h.toInt(d.css(i.scrollbarYRail'borderTopWidth')) + h.toInt(d.css(i.scrollbarYRail'borderBottomWidth'));
  
d.css(i.scrollbarYRail'display''block');
  
i.railYMarginHeight h.toInt(d.css(i.scrollbarYRail'marginTop')) + h.toInt(d.css(i.scrollbarYRail'marginBottom'));
  
d.css(i.scrollbarYRail'display''');
  
i.railYHeight null;
  
i.railYRatio null;
}

function 
getId(element) {
  if (
typeof element.dataset === 'undefined') {
    return 
element.getAttribute('data-ps-id');
  } else {
    return 
element.dataset.psId;
  }
}

function 
setId(elementid) {
  if (
typeof element.dataset === 'undefined') {
    
element.setAttribute('data-ps-id'id);
  } else {
    
element.dataset.psId id;
  }
}

function 
removeId(element) {
  if (
typeof element.dataset === 'undefined') {
    
element.removeAttribute('data-ps-id');
  } else {
    
delete element.dataset.psId;
  }
}

exports.add = function (element) {
  var 
newId guid();
  
setId(elementnewId);
  
instances[newId] = new Instance(element);
  return 
instances[newId];
};

exports.remove = function (element) {
  
delete instances[getId(element)];
  
removeId(element);
};

exports.get = function (element) {
  return 
instances[getId(element)];
};

},{
"../lib/class":2,"../lib/dom":3,"../lib/event-manager":4,"../lib/guid":5,"../lib/helper":6,"./default-setting":8}],19:[function(require,module,exports){
'use strict';

var 
cls = require('../lib/class')
  , 
= require('../lib/dom')
  , 
= require('../lib/helper')
  , 
instances = require('./instances')
  , 
updateScroll = require('./update-scroll');

function 
getThumbSize(ithumbSize) {
  if (
i.settings.minScrollbarLength) {
    
thumbSize Math.max(thumbSizei.settings.minScrollbarLength);
  }
  if (
i.settings.maxScrollbarLength) {
    
thumbSize Math.min(thumbSizei.settings.maxScrollbarLength);
  }
  return 
thumbSize;
}

function 
updateCss(elementi) {
  var 
xRailOffset = {widthi.railXWidth};
  if (
i.isRtl) {
    
xRailOffset.left i.negativeScrollAdjustment element.scrollLeft i.containerWidth i.contentWidth;
  } else {
    
xRailOffset.left element.scrollLeft;
  }
  if (
i.isScrollbarXUsingBottom) {
    
xRailOffset.bottom i.scrollbarXBottom element.scrollTop;
  } else {
    
xRailOffset.top i.scrollbarXTop element.scrollTop;
  }
  
d.css(i.scrollbarXRailxRailOffset);

  var 
yRailOffset = {topelement.scrollTopheighti.railYHeight};
  if (
i.isScrollbarYUsingRight) {
    if (
i.isRtl) {
      
yRailOffset.right i.contentWidth - (i.negativeScrollAdjustment element.scrollLeft) - i.scrollbarYRight i.scrollbarYOuterWidth;
    } else {
      
yRailOffset.right i.scrollbarYRight element.scrollLeft;
    }
  } else {
    if (
i.isRtl) {
      
yRailOffset.left i.negativeScrollAdjustment element.scrollLeft i.containerWidth i.contentWidth i.scrollbarYLeft i.scrollbarYOuterWidth;
    } else {
      
yRailOffset.left i.scrollbarYLeft element.scrollLeft;
    }
  }
  
d.css(i.scrollbarYRailyRailOffset);

  
d.css(i.scrollbarX, {lefti.scrollbarXLeftwidthi.scrollbarXWidth i.railBorderXWidth});
  
d.css(i.scrollbarY, {topi.scrollbarYTopheighti.scrollbarYHeight i.railBorderYWidth});
}

module.exports = function (element) {
  var 
instances.get(element);

  
i.containerWidth element.clientWidth;
  
i.containerHeight element.clientHeight;
  
i.contentWidth element.scrollWidth;
  
i.contentHeight element.scrollHeight;

  var 
existingRails;
  if (!
element.contains(i.scrollbarXRail)) {
    
existingRails d.queryChildren(element'.ps-scrollbar-x-rail');
    if (
existingRails.length 0) {
      
existingRails.forEach(function (rail) {
        
d.remove(rail);
      });
    }
    
d.appendTo(i.scrollbarXRailelement);
  }
  if (!
element.contains(i.scrollbarYRail)) {
    
existingRails d.queryChildren(element'.ps-scrollbar-y-rail');
    if (
existingRails.length 0) {
      
existingRails.forEach(function (rail) {
        
d.remove(rail);
      });
    }
    
d.appendTo(i.scrollbarYRailelement);
  }

  if (!
i.settings.suppressScrollX && i.containerWidth i.settings.scrollXMarginOffset i.contentWidth) {
    
i.scrollbarXActive true;
    
i.railXWidth i.containerWidth i.railXMarginWidth;
    
i.railXRatio i.containerWidth i.railXWidth;
    
i.scrollbarXWidth getThumbSize(ih.toInt(i.railXWidth i.containerWidth i.contentWidth));
    
i.scrollbarXLeft h.toInt((i.negativeScrollAdjustment element.scrollLeft) * (i.railXWidth i.scrollbarXWidth) / (i.contentWidth i.containerWidth));
  } else {
    
i.scrollbarXActive false;
  }

  if (!
i.settings.suppressScrollY && i.containerHeight i.settings.scrollYMarginOffset i.contentHeight) {
    
i.scrollbarYActive true;
    
i.railYHeight i.containerHeight i.railYMarginHeight;
    
i.railYRatio i.containerHeight i.railYHeight;
    
i.scrollbarYHeight getThumbSize(ih.toInt(i.railYHeight i.containerHeight i.contentHeight));
    
i.scrollbarYTop h.toInt(element.scrollTop * (i.railYHeight i.scrollbarYHeight) / (i.contentHeight i.containerHeight));
  } else {
    
i.scrollbarYActive false;
  }

  if (
i.scrollbarXLeft >= i.railXWidth i.scrollbarXWidth) {
    
i.scrollbarXLeft i.railXWidth i.scrollbarXWidth;
  }
  if (
i.scrollbarYTop >= i.railYHeight i.scrollbarYHeight) {
    
i.scrollbarYTop i.railYHeight i.scrollbarYHeight;
  }

  
updateCss(elementi);

  if (
i.scrollbarXActive) {
    
cls.add(element'ps-active-x');
  } else {
    
cls.remove(element'ps-active-x');
    
i.scrollbarXWidth 0;
    
i.scrollbarXLeft 0;
    
updateScroll(element'left'0);
  }
  if (
i.scrollbarYActive) {
    
cls.add(element'ps-active-y');
  } else {
    
cls.remove(element'ps-active-y');
    
i.scrollbarYHeight 0;
    
i.scrollbarYTop 0;
    
updateScroll(element'top'0);
  }
};

},{
"../lib/class":2,"../lib/dom":3,"../lib/helper":6,"./instances":18,"./update-scroll":20}],20:[function(require,module,exports){
'use strict';

var 
instances = require('./instances');

var 
upEvent document.createEvent('Event')
  , 
downEvent document.createEvent('Event')
  , 
leftEvent document.createEvent('Event')
  , 
rightEvent document.createEvent('Event')
  , 
yEvent document.createEvent('Event')
  , 
xEvent document.createEvent('Event')
  , 
xStartEvent document.createEvent('Event')
  , 
xEndEvent document.createEvent('Event')
  , 
yStartEvent document.createEvent('Event')
  , 
yEndEvent document.createEvent('Event')
  , 
lastTop
  
lastLeft;

upEvent.initEvent('ps-scroll-up'truetrue);
downEvent.initEvent('ps-scroll-down'truetrue);
leftEvent.initEvent('ps-scroll-left'truetrue);
rightEvent.initEvent('ps-scroll-right'truetrue);
yEvent.initEvent('ps-scroll-y'truetrue);
xEvent.initEvent('ps-scroll-x'truetrue);
xStartEvent.initEvent('ps-x-reach-start'truetrue);
xEndEvent.initEvent('ps-x-reach-end'truetrue);
yStartEvent.initEvent('ps-y-reach-start'truetrue);
yEndEvent.initEvent('ps-y-reach-end'truetrue);

module.exports = function (elementaxisvalue) {
  if (
typeof element === 'undefined') {
    throw 
'You must provide an element to the update-scroll function';
  }

  if (
typeof axis === 'undefined') {
    throw 
'You must provide an axis to the update-scroll function';
  }

  if (
typeof value === 'undefined') {
    throw 
'You must provide a value to the update-scroll function';
  }

  if (
axis === 'top' && value <= 0) {
    
element.scrollTop value 0// don't allow negative scroll
    
element.dispatchEvent(yStartEvent);
  }

  if (
axis === 'left' && value <= 0) {
    
element.scrollLeft value 0// don't allow negative scroll
    
element.dispatchEvent(xStartEvent);
  }

  var 
instances.get(element);

  if (
axis === 'top' && value >= i.contentHeight i.containerHeight) {
    
element.scrollTop value i.contentHeight i.containerHeight// don't allow scroll past container
    
element.dispatchEvent(yEndEvent);
  }

  if (
axis === 'left' && value >= i.contentWidth i.containerWidth) {
    
element.scrollLeft value i.contentWidth i.containerWidth// don't allow scroll past container
    
element.dispatchEvent(xEndEvent);
  }

  if (!
lastTop) {
    
lastTop element.scrollTop;
  }

  if (!
lastLeft) {
    
lastLeft element.scrollLeft;
  }

  if (
axis === 'top' && value lastTop) {
    
element.dispatchEvent(upEvent);
  }

  if (
axis === 'top' && value lastTop) {
    
element.dispatchEvent(downEvent);
  }

  if (
axis === 'left' && value lastLeft) {
    
element.dispatchEvent(leftEvent);
  }

  if (
axis === 'left' && value lastLeft) {
    
element.dispatchEvent(rightEvent);
  }

  if (
axis === 'top') {
    
element.scrollTop lastTop value;
    
element.dispatchEvent(yEvent);
  }

  if (
axis === 'left') {
    
element.scrollLeft lastLeft value;
    
element.dispatchEvent(xEvent);
  }

};

},{
"./instances":18}],21:[function(require,module,exports){
'use strict';

var 
= require('../lib/dom')
  , 
= require('../lib/helper')
  , 
instances = require('./instances')
  , 
updateGeometry = require('./update-geometry')
  , 
updateScroll = require('./update-scroll');

module.exports = function (element) {
  var 
instances.get(element);

  if (!
i) {
    return;
  }

  
// Recalcuate negative scrollLeft adjustment
  
i.negativeScrollAdjustment i.isNegativeScroll element.scrollWidth element.clientWidth 0;

  
// Recalculate rail margins
  
d.css(i.scrollbarXRail'display''block');
  
d.css(i.scrollbarYRail'display''block');
  
i.railXMarginWidth h.toInt(d.css(i.scrollbarXRail'marginLeft')) + h.toInt(d.css(i.scrollbarXRail'marginRight'));
  
i.railYMarginHeight h.toInt(d.css(i.scrollbarYRail'marginTop')) + h.toInt(d.css(i.scrollbarYRail'marginBottom'));

  
// Hide scrollbars not to affect scrollWidth and scrollHeight
  
d.css(i.scrollbarXRail'display''none');
  
d.css(i.scrollbarYRail'display''none');

  
updateGeometry(element);

  
// Update top/left scroll to trigger events
  
updateScroll(element'top'element.scrollTop);
  
updateScroll(element'left'element.scrollLeft);

  
d.css(i.scrollbarXRail'display''');
  
d.css(i.scrollbarYRail'display''');
};

},{
"../lib/dom":3,"../lib/helper":6,"./instances":18,"./update-geometry":19,"./update-scroll":20}]},{},[1]);
?>
Онлайн: 1
Реклама