UNPKG

perfect-scrollbar

Version:

Minimalistic but perfect custom scrollbar plugin

89 lines (78 loc) 2.32 kB
/* Copyright (c) 2015 Hyunje Alex Jun and other contributors * Licensed under the MIT License */ 'use strict'; var cls = require('./class') , d = require('./dom'); exports.toInt = function (x) { if (typeof x === 'string') { return parseInt(x, 10); } else { return ~~x; } }; 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 (original, source) { 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 i = 0; i < clsList.length; i++) { var className = clsList[i]; if (className.indexOf('ps-') === 0) { cls.remove(element, className); } } }; 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 (element, axis) { 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 (element, axis) { 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), supportsIePointer: window.navigator.msMaxTouchPoints !== null };