diff --git a/.gitignore b/.gitignore index 0bc7c71..c0b5a6a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .DS_Store node_modules bower_components +/out diff --git a/out/css/perfect-scrollbar.css b/out/css/perfect-scrollbar.css deleted file mode 100644 index 41405ef..0000000 --- a/out/css/perfect-scrollbar.css +++ /dev/null @@ -1,118 +0,0 @@ -.ps-container.ps-active-x > .ps-scrollbar-x-rail, .ps-container.ps-active-y > .ps-scrollbar-y-rail { - display: block; } -.ps-container.ps-in-scrolling { - pointer-events: none; } - .ps-container.ps-in-scrolling > .ps-scrollbar-x-rail { - background-color: #eee; - opacity: 0.9; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"; - filter: alpha(opacity=90); } - .ps-container.ps-in-scrolling > .ps-scrollbar-x-rail > .ps-scrollbar-x { - background-color: #999; } - .ps-container.ps-in-scrolling > .ps-scrollbar-y-rail { - background-color: #eee; - opacity: 0.9; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"; - filter: alpha(opacity=90); } - .ps-container.ps-in-scrolling > .ps-scrollbar-y-rail > .ps-scrollbar-y { - background-color: #999; } -.ps-container > .ps-scrollbar-x-rail { - display: none; - position: absolute; - /* please don't change 'position' */ - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - -ms-border-radius: 4px; - border-radius: 4px; - opacity: 0; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - filter: alpha(opacity=0); - -webkit-transition: background-color .2s linear, opacity .2s linear; - -moz-transition: background-color .2s linear, opacity .2s linear; - -o-transition: background-color .2s linear, opacity .2s linear; - transition: background-color .2s linear, opacity .2s linear; - bottom: 3px; - /* there must be 'bottom' for ps-scrollbar-x-rail */ - height: 8px; } - .ps-container > .ps-scrollbar-x-rail > .ps-scrollbar-x { - position: absolute; - /* please don't change 'position' */ - background-color: #aaa; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - -ms-border-radius: 4px; - border-radius: 4px; - -webkit-transition: background-color .2s linear; - -moz-transition: background-color .2s linear; - -o-transition: background-color .2s linear; - transition: background-color .2s linear; - bottom: 0; - /* there must be 'bottom' for ps-scrollbar-x */ - height: 8px; } -.ps-container > .ps-scrollbar-y-rail { - display: none; - position: absolute; - /* please don't change 'position' */ - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - -ms-border-radius: 4px; - border-radius: 4px; - opacity: 0; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - filter: alpha(opacity=0); - -webkit-transition: background-color .2s linear, opacity .2s linear; - -moz-transition: background-color .2s linear, opacity .2s linear; - -o-transition: background-color .2s linear, opacity .2s linear; - transition: background-color .2s linear, opacity .2s linear; - right: 3px; - /* there must be 'right' for ps-scrollbar-y-rail */ - width: 8px; } - .ps-container > .ps-scrollbar-y-rail > .ps-scrollbar-y { - position: absolute; - /* please don't change 'position' */ - background-color: #aaa; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - -ms-border-radius: 4px; - border-radius: 4px; - -webkit-transition: background-color .2s linear; - -moz-transition: background-color .2s linear; - -o-transition: background-color .2s linear; - transition: background-color .2s linear; - right: 0; - /* there must be 'right' for ps-scrollbar-y */ - width: 8px; } -.ps-container:hover.ps-in-scrolling { - pointer-events: none; } - .ps-container:hover.ps-in-scrolling > .ps-scrollbar-x-rail { - background-color: #eee; - opacity: 0.9; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"; - filter: alpha(opacity=90); } - .ps-container:hover.ps-in-scrolling > .ps-scrollbar-x-rail > .ps-scrollbar-x { - background-color: #999; } - .ps-container:hover.ps-in-scrolling > .ps-scrollbar-y-rail { - background-color: #eee; - opacity: 0.9; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"; - filter: alpha(opacity=90); } - .ps-container:hover.ps-in-scrolling > .ps-scrollbar-y-rail > .ps-scrollbar-y { - background-color: #999; } -.ps-container:hover > .ps-scrollbar-x-rail, .ps-container:hover > .ps-scrollbar-y-rail { - opacity: 0.6; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; - filter: alpha(opacity=60); } -.ps-container:hover > .ps-scrollbar-x-rail:hover { - background-color: #eee; - opacity: 0.9; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"; - filter: alpha(opacity=90); } - .ps-container:hover > .ps-scrollbar-x-rail:hover > .ps-scrollbar-x { - background-color: #999; } -.ps-container:hover > .ps-scrollbar-y-rail:hover { - background-color: #eee; - opacity: 0.9; - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=90)"; - filter: alpha(opacity=90); } - .ps-container:hover > .ps-scrollbar-y-rail:hover > .ps-scrollbar-y { - background-color: #999; } diff --git a/out/css/perfect-scrollbar.min.css b/out/css/perfect-scrollbar.min.css deleted file mode 100644 index 6918c7a..0000000 --- a/out/css/perfect-scrollbar.min.css +++ /dev/null @@ -1 +0,0 @@ -.ps-container.ps-active-x>.ps-scrollbar-x-rail,.ps-container.ps-active-y>.ps-scrollbar-y-rail{display:block}.ps-container.ps-in-scrolling{pointer-events:none}.ps-container.ps-in-scrolling>.ps-scrollbar-x-rail{background-color:#eee;opacity:0.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";filter:alpha(opacity=90)}.ps-container.ps-in-scrolling>.ps-scrollbar-x-rail>.ps-scrollbar-x{background-color:#999}.ps-container.ps-in-scrolling>.ps-scrollbar-y-rail{background-color:#eee;opacity:0.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";filter:alpha(opacity=90)}.ps-container.ps-in-scrolling>.ps-scrollbar-y-rail>.ps-scrollbar-y{background-color:#999}.ps-container>.ps-scrollbar-x-rail{display:none;position:absolute;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;border-radius:4px;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-webkit-transition:background-color .2s linear,opacity .2s linear;-moz-transition:background-color .2s linear,opacity .2s linear;-o-transition:background-color .2s linear,opacity .2s linear;transition:background-color .2s linear,opacity .2s linear;bottom:3px;height:8px}.ps-container>.ps-scrollbar-x-rail>.ps-scrollbar-x{position:absolute;background-color:#aaa;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;border-radius:4px;-webkit-transition:background-color .2s linear;-moz-transition:background-color .2s linear;-o-transition:background-color .2s linear;transition:background-color .2s linear;bottom:0;height:8px}.ps-container>.ps-scrollbar-y-rail{display:none;position:absolute;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;border-radius:4px;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-webkit-transition:background-color .2s linear,opacity .2s linear;-moz-transition:background-color .2s linear,opacity .2s linear;-o-transition:background-color .2s linear,opacity .2s linear;transition:background-color .2s linear,opacity .2s linear;right:3px;width:8px}.ps-container>.ps-scrollbar-y-rail>.ps-scrollbar-y{position:absolute;background-color:#aaa;-webkit-border-radius:4px;-moz-border-radius:4px;-ms-border-radius:4px;border-radius:4px;-webkit-transition:background-color .2s linear;-moz-transition:background-color .2s linear;-o-transition:background-color .2s linear;transition:background-color .2s linear;right:0;width:8px}.ps-container:hover.ps-in-scrolling{pointer-events:none}.ps-container:hover.ps-in-scrolling>.ps-scrollbar-x-rail{background-color:#eee;opacity:0.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";filter:alpha(opacity=90)}.ps-container:hover.ps-in-scrolling>.ps-scrollbar-x-rail>.ps-scrollbar-x{background-color:#999}.ps-container:hover.ps-in-scrolling>.ps-scrollbar-y-rail{background-color:#eee;opacity:0.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";filter:alpha(opacity=90)}.ps-container:hover.ps-in-scrolling>.ps-scrollbar-y-rail>.ps-scrollbar-y{background-color:#999}.ps-container:hover>.ps-scrollbar-x-rail,.ps-container:hover>.ps-scrollbar-y-rail{opacity:0.6;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)";filter:alpha(opacity=60)}.ps-container:hover>.ps-scrollbar-x-rail:hover{background-color:#eee;opacity:0.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";filter:alpha(opacity=90)}.ps-container:hover>.ps-scrollbar-x-rail:hover>.ps-scrollbar-x{background-color:#999}.ps-container:hover>.ps-scrollbar-y-rail:hover{background-color:#eee;opacity:0.9;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=90)";filter:alpha(opacity=90)}.ps-container:hover>.ps-scrollbar-y-rail:hover>.ps-scrollbar-y{background-color:#999} \ No newline at end of file diff --git a/out/js/perfect-scrollbar.js b/out/js/perfect-scrollbar.js deleted file mode 100644 index 342a0df..0000000 --- a/out/js/perfect-scrollbar.js +++ /dev/null @@ -1,867 +0,0 @@ -(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").appendTo($this); - var $scrollbarX = $("
").appendTo($scrollbarXRail); - var scrollbarXActive; - var scrollbarXWidth; - var scrollbarXLeft; - var scrollbarXBottom = getInt($scrollbarXRail.css('bottom')); - var isScrollbarXUsingBottom = scrollbarXBottom === scrollbarXBottom; // !isNaN - var scrollbarXTop = isScrollbarXUsingBottom ? null : getInt($scrollbarXRail.css('top')); - var railBorderXWidth = getInt($scrollbarXRail.css('borderLeftWidth')) + getInt($scrollbarXRail.css('borderRightWidth')); - var railXMarginWidth = getInt($scrollbarXRail.css('marginLeft')) + getInt($scrollbarXRail.css('marginRight')); - var railXWidth; - - var $scrollbarYRail = $("
").appendTo($this); - var $scrollbarY = $("
").appendTo($scrollbarYRail); - var scrollbarYActive; - var scrollbarYHeight; - var scrollbarYTop; - var scrollbarYRight = getInt($scrollbarYRail.css('right')); - var isScrollbarYUsingRight = scrollbarYRight === scrollbarYRight; // !isNaN - var scrollbarYLeft = isScrollbarYUsingRight ? null : getInt($scrollbarYRail.css('left')); - var railBorderYWidth = getInt($scrollbarYRail.css('borderTopWidth')) + getInt($scrollbarYRail.css('borderBottomWidth')); - var railYMarginHeight = getInt($scrollbarYRail.css('marginTop')) + getInt($scrollbarYRail.css('marginBottom')); - var railYHeight; - - function updateScrollTop(currentTop, deltaY) { - var newTop = currentTop + deltaY; - var maxTop = containerHeight - scrollbarYHeight; - - if (newTop < 0) { - scrollbarYTop = 0; - } else if (newTop > maxTop) { - scrollbarYTop = maxTop; - } else { - scrollbarYTop = newTop; - } - - var scrollTop = getInt(scrollbarYTop * (contentHeight - containerHeight) / (containerHeight - scrollbarYHeight)); - $this.scrollTop(scrollTop); - } - - function updateScrollLeft(currentLeft, deltaX) { - var newLeft = currentLeft + deltaX; - var maxLeft = containerWidth - scrollbarXWidth; - - if (newLeft < 0) { - scrollbarXLeft = 0; - } else if (newLeft > maxLeft) { - scrollbarXLeft = maxLeft; - } else { - scrollbarXLeft = newLeft; - } - - var scrollLeft = getInt(scrollbarXLeft * (contentWidth - containerWidth) / (containerWidth - scrollbarXWidth)); - $this.scrollLeft(scrollLeft); - } - - function getThumbSize(thumbSize) { - if (settings.minScrollbarLength) { - thumbSize = Math.max(thumbSize, settings.minScrollbarLength); - } - if (settings.maxScrollbarLength) { - thumbSize = Math.min(thumbSize, settings.maxScrollbarLength); - } - return thumbSize; - } - - function updateCss() { - var xRailOffset = {width: railXWidth}; - if (isRtl) { - xRailOffset.left = $this.scrollLeft() + containerWidth - contentWidth; - } else { - xRailOffset.left = $this.scrollLeft(); - } - if (isScrollbarXUsingBottom) { - xRailOffset.bottom = scrollbarXBottom - $this.scrollTop(); - } else { - xRailOffset.top = scrollbarXTop + $this.scrollTop(); - } - $scrollbarXRail.css(xRailOffset); - - var railYOffset = {top: $this.scrollTop(), height: railYHeight}; - - if (isScrollbarYUsingRight) { - if (isRtl) { - railYOffset.right = contentWidth - $this.scrollLeft() - scrollbarYRight - $scrollbarY.outerWidth(); - } else { - railYOffset.right = scrollbarYRight - $this.scrollLeft(); - } - } else { - if (isRtl) { - railYOffset.left = $this.scrollLeft() + containerWidth * 2 - contentWidth - scrollbarYLeft - $scrollbarY.outerWidth(); - } else { - railYOffset.left = scrollbarYLeft + $this.scrollLeft(); - } - } - $scrollbarYRail.css(railYOffset); - - $scrollbarX.css({left: scrollbarXLeft, width: scrollbarXWidth - railBorderXWidth}); - $scrollbarY.css({top: scrollbarYTop, height: scrollbarYHeight - railBorderYWidth}); - } - - function updateGeometry() { - // Hide scrollbars not to affect scrollWidth and scrollHeight - $this.removeClass('ps-active-x'); - $this.removeClass('ps-active-y'); - - containerWidth = settings.includePadding ? $this.innerWidth() : $this.width(); - containerHeight = settings.includePadding ? $this.innerHeight() : $this.height(); - contentWidth = $this.prop('scrollWidth'); - contentHeight = $this.prop('scrollHeight'); - - if (!settings.suppressScrollX && containerWidth + settings.scrollXMarginOffset < contentWidth) { - scrollbarXActive = true; - railXWidth = containerWidth - railXMarginWidth; - scrollbarXWidth = getThumbSize(getInt(railXWidth * containerWidth / contentWidth)); - scrollbarXLeft = getInt($this.scrollLeft() * (railXWidth - scrollbarXWidth) / (contentWidth - containerWidth)); - } else { - scrollbarXActive = false; - scrollbarXWidth = 0; - scrollbarXLeft = 0; - $this.scrollLeft(0); - } - - if (!settings.suppressScrollY && containerHeight + settings.scrollYMarginOffset < contentHeight) { - scrollbarYActive = true; - railYHeight = containerHeight - railYMarginHeight; - scrollbarYHeight = getThumbSize(getInt(railYHeight * containerHeight / contentHeight)); - scrollbarYTop = getInt($this.scrollTop() * (railYHeight - scrollbarYHeight) / (contentHeight - containerHeight)); - } else { - scrollbarYActive = false; - scrollbarYHeight = 0; - scrollbarYTop = 0; - $this.scrollTop(0); - } - - if (scrollbarXLeft >= railXWidth - scrollbarXWidth) { - scrollbarXLeft = railXWidth - scrollbarXWidth; - } - if (scrollbarYTop >= railYHeight - scrollbarYHeight) { - scrollbarYTop = railYHeight - scrollbarYHeight; - } - - updateCss(); - - if (scrollbarXActive) { - $this.addClass('ps-active-x'); - } - if (scrollbarYActive) { - $this.addClass('ps-active-y'); - } - } - - function bindMouseScrollXHandler() { - var currentLeft; - var currentPageX; - - var mouseMoveHandler = function (e) { - updateScrollLeft(currentLeft, e.pageX - currentPageX); - updateGeometry(); - e.stopPropagation(); - e.preventDefault(); - }; - - var mouseUpHandler = function (e) { - $this.removeClass('ps-in-scrolling'); - $(ownerDocument).unbind(eventClass('mousemove'), mouseMoveHandler); - }; - - $scrollbarX.bind(eventClass('mousedown'), function (e) { - currentPageX = e.pageX; - currentLeft = $scrollbarX.position().left; - $this.addClass('ps-in-scrolling'); - - $(ownerDocument).bind(eventClass('mousemove'), mouseMoveHandler); - $(ownerDocument).one(eventClass('mouseup'), mouseUpHandler); - - e.stopPropagation(); - e.preventDefault(); - }); - - currentLeft = - currentPageX = null; - } - - function bindMouseScrollYHandler() { - var currentTop; - var currentPageY; - - var mouseMoveHandler = function (e) { - updateScrollTop(currentTop, e.pageY - currentPageY); - updateGeometry(); - e.stopPropagation(); - e.preventDefault(); - }; - - var mouseUpHandler = function (e) { - $this.removeClass('ps-in-scrolling'); - $(ownerDocument).unbind(eventClass('mousemove'), mouseMoveHandler); - }; - - $scrollbarY.bind(eventClass('mousedown'), function (e) { - currentPageY = e.pageY; - currentTop = $scrollbarY.position().top; - $this.addClass('ps-in-scrolling'); - - $(ownerDocument).bind(eventClass('mousemove'), mouseMoveHandler); - $(ownerDocument).one(eventClass('mouseup'), mouseUpHandler); - - e.stopPropagation(); - e.preventDefault(); - }); - - currentTop = - currentPageY = null; - } - - function shouldPreventWheel(deltaX, deltaY) { - var scrollTop = $this.scrollTop(); - if (deltaX === 0) { - if (!scrollbarYActive) { - return false; - } - if ((scrollTop === 0 && deltaY > 0) || (scrollTop >= contentHeight - containerHeight && deltaY < 0)) { - return !settings.wheelPropagation; - } - } - - var scrollLeft = $this.scrollLeft(); - if (deltaY === 0) { - if (!scrollbarXActive) { - return false; - } - if ((scrollLeft === 0 && deltaX < 0) || (scrollLeft >= contentWidth - containerWidth && deltaX > 0)) { - return !settings.wheelPropagation; - } - } - return true; - } - - function shouldPreventSwipe(deltaX, deltaY) { - var scrollTop = $this.scrollTop(); - var scrollLeft = $this.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 === contentHeight - containerHeight)) || - ((deltaY > 0) && (scrollTop === 0))) { - return !settings.swipePropagation; - } - } else if (magnitudeX > magnitudeY) { - // user is perhaps trying to swipe left/right across the page - - if (((deltaX < 0) && (scrollLeft === contentWidth - containerWidth)) || - ((deltaX > 0) && (scrollLeft === 0))) { - return !settings.swipePropagation; - } - } - - return true; - } - - function bindMouseWheelHandler() { - var shouldPrevent = false; - - function getDeltaFromEvent(e) { - var deltaX = e.originalEvent.deltaX; - var deltaY = -1 * e.originalEvent.deltaY; - - if (typeof deltaX === "undefined" || typeof deltaY === "undefined") { - // OS X Safari - deltaX = -1 * e.originalEvent.wheelDeltaX / 6; - deltaY = e.originalEvent.wheelDeltaY / 6; - } - - if (e.originalEvent.deltaMode && e.originalEvent.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.originalEvent.wheelDelta; - } - - return [deltaX, deltaY]; - } - - function mousewheelHandler(e) { - // FIXME: this is a quick fix for the select problem in FF and IE. - // If there comes an effective way to deal with the problem, - // this lines should be removed. - if (!isWebkit && $this.find('select:focus').length > 0) { - return; - } - - var delta = getDeltaFromEvent(e); - - var deltaX = delta[0]; - var deltaY = delta[1]; - - shouldPrevent = false; - if (!settings.useBothWheelAxes) { - // deltaX will only be used for horizontal scrolling and deltaY will - // only be used for vertical scrolling - this is the default - $this.scrollTop($this.scrollTop() - (deltaY * settings.wheelSpeed)); - $this.scrollLeft($this.scrollLeft() + (deltaX * settings.wheelSpeed)); - } else if (scrollbarYActive && !scrollbarXActive) { - // only vertical scrollbar is active and useBothWheelAxes option is - // active, so let's scroll vertical bar using both mouse wheel axes - if (deltaY) { - $this.scrollTop($this.scrollTop() - (deltaY * settings.wheelSpeed)); - } else { - $this.scrollTop($this.scrollTop() + (deltaX * settings.wheelSpeed)); - } - shouldPrevent = true; - } else if (scrollbarXActive && !scrollbarYActive) { - // useBothWheelAxes and only horizontal bar is active, so use both - // wheel axes for horizontal bar - if (deltaX) { - $this.scrollLeft($this.scrollLeft() + (deltaX * settings.wheelSpeed)); - } else { - $this.scrollLeft($this.scrollLeft() - (deltaY * settings.wheelSpeed)); - } - shouldPrevent = true; - } - - updateGeometry(); - - shouldPrevent = (shouldPrevent || shouldPreventWheel(deltaX, deltaY)); - if (shouldPrevent) { - e.stopPropagation(); - e.preventDefault(); - } - } - - if (typeof window.onwheel !== "undefined") { - $this.bind(eventClass('wheel'), mousewheelHandler); - } else if (typeof window.onmousewheel !== "undefined") { - $this.bind(eventClass('mousewheel'), mousewheelHandler); - } - } - - function bindKeyboardHandler() { - var hovered = false; - $this.bind(eventClass('mouseenter'), function (e) { - hovered = true; - }); - $this.bind(eventClass('mouseleave'), function (e) { - hovered = false; - }); - - var shouldPrevent = false; - $(ownerDocument).bind(eventClass('keydown'), function (e) { - if (e.isDefaultPrevented && e.isDefaultPrevented()) { - return; - } - - if (!hovered) { - return; - } - - var activeElement = document.activeElement ? document.activeElement : ownerDocument.activeElement; - // go deeper if element is a webcomponent - while (activeElement.shadowRoot) { - activeElement = activeElement.shadowRoot.activeElement; - } - if ($(activeElement).is(":input,[contenteditable]")) { - 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 - case 34: // page down - deltaY = -90; - break; - case 35: // end - if (e.ctrlKey) { - deltaY = -contentHeight; - } else { - deltaY = -containerHeight; - } - break; - case 36: // home - if (e.ctrlKey) { - deltaY = $this.scrollTop(); - } else { - deltaY = containerHeight; - } - break; - default: - return; - } - - $this.scrollTop($this.scrollTop() - deltaY); - $this.scrollLeft($this.scrollLeft() + deltaX); - - shouldPrevent = shouldPreventWheel(deltaX, deltaY); - if (shouldPrevent) { - e.preventDefault(); - } - }); - } - - function bindRailClickHandler() { - function stopPropagation(e) { e.stopPropagation(); } - - $scrollbarY.bind(eventClass('click'), stopPropagation); - $scrollbarYRail.bind(eventClass('click'), function (e) { - var halfOfScrollbarLength = getInt(scrollbarYHeight / 2); - var positionTop = e.pageY - $scrollbarYRail.offset().top - halfOfScrollbarLength; - var maxPositionTop = containerHeight - scrollbarYHeight; - var positionRatio = positionTop / maxPositionTop; - - if (positionRatio < 0) { - positionRatio = 0; - } else if (positionRatio > 1) { - positionRatio = 1; - } - - $this.scrollTop((contentHeight - containerHeight) * positionRatio); - }); - - $scrollbarX.bind(eventClass('click'), stopPropagation); - $scrollbarXRail.bind(eventClass('click'), function (e) { - var halfOfScrollbarLength = getInt(scrollbarXWidth / 2); - var positionLeft = e.pageX - $scrollbarXRail.offset().left - halfOfScrollbarLength; - var maxPositionLeft = containerWidth - scrollbarXWidth; - var positionRatio = positionLeft / maxPositionLeft; - - if (positionRatio < 0) { - positionRatio = 0; - } else if (positionRatio > 1) { - positionRatio = 1; - } - - $this.scrollLeft((contentWidth - containerWidth) * positionRatio); - }); - } - - function bindSelectionHandler() { - function getRangeNode() { - var selection = window.getSelection ? window.getSelection() : - document.getSlection ? document.getSlection() : {rangeCount: 0}; - if (selection.rangeCount === 0) { - return null; - } else { - return selection.getRangeAt(0).commonAncestorContainer; - } - } - - var scrollingLoop = null; - var scrollDiff = {top: 0, left: 0}; - function startScrolling() { - if (!scrollingLoop) { - scrollingLoop = setInterval(function () { - if (!isPluginAlive()) { - clearInterval(scrollingLoop); - return; - } - - $this.scrollTop($this.scrollTop() + scrollDiff.top); - $this.scrollLeft($this.scrollLeft() + scrollDiff.left); - updateGeometry(); - }, 50); // every .1 sec - } - } - function stopScrolling() { - if (scrollingLoop) { - clearInterval(scrollingLoop); - scrollingLoop = null; - } - $this.removeClass('ps-in-scrolling'); - $this.removeClass('ps-in-scrolling'); - } - - var isSelected = false; - $(ownerDocument).bind(eventClass('selectionchange'), function (e) { - if ($.contains($this[0], getRangeNode())) { - isSelected = true; - } else { - isSelected = false; - stopScrolling(); - } - }); - $(window).bind(eventClass('mouseup'), function (e) { - if (isSelected) { - isSelected = false; - stopScrolling(); - } - }); - - $(window).bind(eventClass('mousemove'), function (e) { - if (isSelected) { - var mousePosition = {x: e.pageX, y: e.pageY}; - var containerOffset = $this.offset(); - var containerGeometry = { - left: containerOffset.left, - right: containerOffset.left + $this.outerWidth(), - top: containerOffset.top, - bottom: containerOffset.top + $this.outerHeight() - }; - - if (mousePosition.x < containerGeometry.left + 3) { - scrollDiff.left = -5; - $this.addClass('ps-in-scrolling'); - } else if (mousePosition.x > containerGeometry.right - 3) { - scrollDiff.left = 5; - $this.addClass('ps-in-scrolling'); - } else { - scrollDiff.left = 0; - } - - if (mousePosition.y < containerGeometry.top + 3) { - if (containerGeometry.top + 3 - mousePosition.y < 5) { - scrollDiff.top = -5; - } else { - scrollDiff.top = -20; - } - $this.addClass('ps-in-scrolling'); - } else if (mousePosition.y > containerGeometry.bottom - 3) { - if (mousePosition.y - containerGeometry.bottom + 3 < 5) { - scrollDiff.top = 5; - } else { - scrollDiff.top = 20; - } - $this.addClass('ps-in-scrolling'); - } else { - scrollDiff.top = 0; - } - - if (scrollDiff.top === 0 && scrollDiff.left === 0) { - stopScrolling(); - } else { - startScrolling(); - } - } - }); - } - - function bindTouchHandler(supportsTouch, supportsIePointer) { - function applyTouchMove(differenceX, differenceY) { - $this.scrollTop($this.scrollTop() - differenceY); - $this.scrollLeft($this.scrollLeft() - differenceX); - - updateGeometry(); - } - - var startOffset = {}; - var startTime = 0; - var speed = {}; - var easingLoop = null; - var inGlobalTouch = false; - var inLocalTouch = false; - - function globalTouchStart(e) { - inGlobalTouch = true; - } - function globalTouchEnd(e) { - inGlobalTouch = false; - } - - function getTouch(e) { - if (e.originalEvent.targetTouches) { - return e.originalEvent.targetTouches[0]; - } else { - // Maybe IE pointer - return e.originalEvent; - } - } - function shouldHandle(e) { - var event = e.originalEvent; - if (event.targetTouches && event.targetTouches.length === 1) { - return true; - } - if (event.pointerType && event.pointerType !== 'mouse' && event.pointerType !== event.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 = {pageX: touch.pageX, pageY: touch.pageY}; - - var differenceX = currentOffset.pageX - startOffset.pageX; - var differenceY = currentOffset.pageY - startOffset.pageY; - - applyTouchMove(differenceX, differenceY); - startOffset = currentOffset; - - var currentTime = (new Date()).getTime(); - - var timeGap = currentTime - startTime; - if (timeGap > 0) { - speed.x = differenceX / timeGap; - speed.y = differenceY / timeGap; - startTime = currentTime; - } - - if (shouldPreventSwipe(differenceX, differenceY)) { - e.stopPropagation(); - e.preventDefault(); - } - } - } - function touchEnd(e) { - if (!inGlobalTouch && inLocalTouch) { - inLocalTouch = false; - - clearInterval(easingLoop); - easingLoop = setInterval(function () { - if (!isPluginAlive()) { - clearInterval(easingLoop); - return; - } - - if (Math.abs(speed.x) < 0.01 && Math.abs(speed.y) < 0.01) { - clearInterval(easingLoop); - return; - } - - applyTouchMove(speed.x * 30, speed.y * 30); - - speed.x *= 0.8; - speed.y *= 0.8; - }, 10); - } - } - - if (supportsTouch) { - $(window).bind(eventClass("touchstart"), globalTouchStart); - $(window).bind(eventClass("touchend"), globalTouchEnd); - $this.bind(eventClass("touchstart"), touchStart); - $this.bind(eventClass("touchmove"), touchMove); - $this.bind(eventClass("touchend"), touchEnd); - } - - if (supportsIePointer) { - if (window.PointerEvent) { - $(window).bind(eventClass("pointerdown"), globalTouchStart); - $(window).bind(eventClass("pointerup"), globalTouchEnd); - $this.bind(eventClass("pointerdown"), touchStart); - $this.bind(eventClass("pointermove"), touchMove); - $this.bind(eventClass("pointerup"), touchEnd); - } else if (window.MSPointerEvent) { - $(window).bind(eventClass("MSPointerDown"), globalTouchStart); - $(window).bind(eventClass("MSPointerUp"), globalTouchEnd); - $this.bind(eventClass("MSPointerDown"), touchStart); - $this.bind(eventClass("MSPointerMove"), touchMove); - $this.bind(eventClass("MSPointerUp"), touchEnd); - } - } - } - - function bindScrollHandler() { - $this.bind(eventClass('scroll'), function (e) { - updateGeometry(); - }); - } - - function destroy() { - $this.unbind(eventClass()); - $(window).unbind(eventClass()); - $(ownerDocument).unbind(eventClass()); - $this.data('perfect-scrollbar', null); - $this.data('perfect-scrollbar-update', null); - $this.data('perfect-scrollbar-destroy', null); - $scrollbarX.remove(); - $scrollbarY.remove(); - $scrollbarXRail.remove(); - $scrollbarYRail.remove(); - - // clean all variables - $this = - $scrollbarXRail = - $scrollbarYRail = - $scrollbarX = - $scrollbarY = - scrollbarXActive = - scrollbarYActive = - containerWidth = - containerHeight = - contentWidth = - contentHeight = - scrollbarXWidth = - scrollbarXLeft = - scrollbarXBottom = - isScrollbarXUsingBottom = - scrollbarXTop = - scrollbarYHeight = - scrollbarYTop = - scrollbarYRight = - isScrollbarYUsingRight = - scrollbarYLeft = - isRtl = - eventClass = null; - } - - var supportsTouch = (('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch); - var supportsIePointer = window.navigator.msMaxTouchPoints !== null; - - function initialize() { - updateGeometry(); - bindScrollHandler(); - bindMouseScrollXHandler(); - bindMouseScrollYHandler(); - bindRailClickHandler(); - bindSelectionHandler(); - bindMouseWheelHandler(); - - if (supportsTouch || supportsIePointer) { - bindTouchHandler(supportsTouch, supportsIePointer); - } - if (settings.useKeyboard) { - bindKeyboardHandler(); - } - $this.data('perfect-scrollbar', $this); - $this.data('perfect-scrollbar-update', updateGeometry); - $this.data('perfect-scrollbar-destroy', destroy); - } - - initialize(); - - return $this; - }); - }; -}); - -},{}]},{},[1]); diff --git a/out/js/perfect-scrollbar.min.js b/out/js/perfect-scrollbar.min.js deleted file mode 100644 index 788e78e..0000000 --- a/out/js/perfect-scrollbar.min.js +++ /dev/null @@ -1 +0,0 @@ -!function e(t,n,o){function r(i,a){if(!n[i]){if(!t[i]){var s="function"==typeof require&&require;if(!a&&s)return s(i,!0);if(l)return l(i,!0);var c=new Error("Cannot find module '"+i+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[i]={exports:{}};t[i][0].call(u.exports,function(e){var n=t[i][1][e];return r(n?n:e)},u,u.exports,e,t,n,o)}return n[i].exports}for(var l="function"==typeof require&&require,i=0;io?0:o>r?r:o;var l=t(A*(Y-D)/(D-R));x.scrollTop(l)}function s(e,n){var o=e+n,r=M-k;W=0>o?0:o>r?r:o;var l=t(W*(C-M)/(M-k));x.scrollLeft(l)}function c(e){return P.minScrollbarLength&&(e=Math.max(e,P.minScrollbarLength)),P.maxScrollbarLength&&(e=Math.min(e,P.maxScrollbarLength)),e}function u(){var e={width:I};e.left=q?x.scrollLeft()+M-C:x.scrollLeft(),j?e.bottom=N-x.scrollTop():e.top=F+x.scrollTop(),_.css(e);var t={top:x.scrollTop(),height:U};Z?t.right=q?C-x.scrollLeft()-V-J.outerWidth():V-x.scrollLeft():t.left=q?x.scrollLeft()+2*M-C-$-J.outerWidth():$+x.scrollLeft(),G.css(t),H.css({left:W,width:k-Q}),J.css({top:A,height:R-et})}function p(){x.removeClass("ps-active-x"),x.removeClass("ps-active-y"),M=P.includePadding?x.innerWidth():x.width(),D=P.includePadding?x.innerHeight():x.height(),C=x.prop("scrollWidth"),Y=x.prop("scrollHeight"),!P.suppressScrollX&&M+P.scrollXMarginOffset=I-k&&(W=I-k),A>=U-R&&(A=U-R),u(),X&&x.addClass("ps-active-x"),O&&x.addClass("ps-active-y")}function d(){var t,n,o=function(e){s(t,e.pageX-n),p(),e.stopPropagation(),e.preventDefault()},r=function(){x.removeClass("ps-in-scrolling"),e(K).unbind(B("mousemove"),o)};H.bind(B("mousedown"),function(l){n=l.pageX,t=H.position().left,x.addClass("ps-in-scrolling"),e(K).bind(B("mousemove"),o),e(K).one(B("mouseup"),r),l.stopPropagation(),l.preventDefault()}),t=n=null}function f(){var t,n,o=function(e){a(t,e.pageY-n),p(),e.stopPropagation(),e.preventDefault()},r=function(){x.removeClass("ps-in-scrolling"),e(K).unbind(B("mousemove"),o)};J.bind(B("mousedown"),function(l){n=l.pageY,t=J.position().top,x.addClass("ps-in-scrolling"),e(K).bind(B("mousemove"),o),e(K).one(B("mouseup"),r),l.stopPropagation(),l.preventDefault()}),t=n=null}function v(e,t){var n=x.scrollTop();if(0===e){if(!O)return!1;if(0===n&&t>0||n>=Y-D&&0>t)return!P.wheelPropagation}var o=x.scrollLeft();if(0===t){if(!X)return!1;if(0===o&&0>e||o>=C-M&&e>0)return!P.wheelPropagation}return!0}function g(e,t){var n=x.scrollTop(),o=x.scrollLeft(),r=Math.abs(e),l=Math.abs(t);if(l>r){if(0>t&&n===Y-D||t>0&&0===n)return!P.swipePropagation}else if(r>l&&(0>e&&o===C-M||e>0&&0===o))return!P.swipePropagation;return!0}function b(){function e(e){var t=e.originalEvent.deltaX,n=-1*e.originalEvent.deltaY;return("undefined"==typeof t||"undefined"==typeof n)&&(t=-1*e.originalEvent.wheelDeltaX/6,n=e.originalEvent.wheelDeltaY/6),e.originalEvent.deltaMode&&1===e.originalEvent.deltaMode&&(t*=10,n*=10),t!==t&&n!==n&&(t=0,n=e.originalEvent.wheelDelta),[t,n]}function t(t){if(l||!(x.find("select:focus").length>0)){var o=e(t),r=o[0],i=o[1];n=!1,P.useBothWheelAxes?O&&!X?(x.scrollTop(i?x.scrollTop()-i*P.wheelSpeed:x.scrollTop()+r*P.wheelSpeed),n=!0):X&&!O&&(x.scrollLeft(r?x.scrollLeft()+r*P.wheelSpeed:x.scrollLeft()-i*P.wheelSpeed),n=!0):(x.scrollTop(x.scrollTop()-i*P.wheelSpeed),x.scrollLeft(x.scrollLeft()+r*P.wheelSpeed)),p(),n=n||v(r,i),n&&(t.stopPropagation(),t.preventDefault())}}var n=!1;"undefined"!=typeof window.onwheel?x.bind(B("wheel"),t):"undefined"!=typeof window.onmousewheel&&x.bind(B("mousewheel"),t)}function h(){var t=!1;x.bind(B("mouseenter"),function(){t=!0}),x.bind(B("mouseleave"),function(){t=!1});var n=!1;e(K).bind(B("keydown"),function(o){if((!o.isDefaultPrevented||!o.isDefaultPrevented())&&t){for(var r=document.activeElement?document.activeElement:K.activeElement;r.shadowRoot;)r=r.shadowRoot.activeElement;if(!e(r).is(":input,[contenteditable]")){var l=0,i=0;switch(o.which){case 37:l=-30;break;case 38:i=30;break;case 39:l=30;break;case 40:i=-30;break;case 33:i=90;break;case 32:case 34:i=-90;break;case 35:i=o.ctrlKey?-Y:-D;break;case 36:i=o.ctrlKey?x.scrollTop():D;break;default:return}x.scrollTop(x.scrollTop()-i),x.scrollLeft(x.scrollLeft()+l),n=v(l,i),n&&o.preventDefault()}}})}function w(){function e(e){e.stopPropagation()}J.bind(B("click"),e),G.bind(B("click"),function(e){var n=t(R/2),o=e.pageY-G.offset().top-n,r=D-R,l=o/r;0>l?l=0:l>1&&(l=1),x.scrollTop((Y-D)*l)}),H.bind(B("click"),e),_.bind(B("click"),function(e){var n=t(k/2),o=e.pageX-_.offset().left-n,r=M-k,l=o/r;0>l?l=0:l>1&&(l=1),x.scrollLeft((C-M)*l)})}function m(){function t(){var e=window.getSelection?window.getSelection():document.getSlection?document.getSlection():{rangeCount:0};return 0===e.rangeCount?null:e.getRangeAt(0).commonAncestorContainer}function n(){r||(r=setInterval(function(){return E()?(x.scrollTop(x.scrollTop()+l.top),x.scrollLeft(x.scrollLeft()+l.left),void p()):void clearInterval(r)},50))}function o(){r&&(clearInterval(r),r=null),x.removeClass("ps-in-scrolling"),x.removeClass("ps-in-scrolling")}var r=null,l={top:0,left:0},i=!1;e(K).bind(B("selectionchange"),function(){e.contains(x[0],t())?i=!0:(i=!1,o())}),e(window).bind(B("mouseup"),function(){i&&(i=!1,o())}),e(window).bind(B("mousemove"),function(e){if(i){var t={x:e.pageX,y:e.pageY},r=x.offset(),a={left:r.left,right:r.left+x.outerWidth(),top:r.top,bottom:r.top+x.outerHeight()};t.xa.right-3?(l.left=5,x.addClass("ps-in-scrolling")):l.left=0,t.ya.bottom-3?(l.top=t.y-a.bottom+3<5?5:20,x.addClass("ps-in-scrolling")):l.top=0,0===l.top&&0===l.left?o():n()}})}function T(t,n){function o(e,t){x.scrollTop(x.scrollTop()-t),x.scrollLeft(x.scrollLeft()-e),p()}function r(){h=!0}function l(){h=!1}function i(e){return e.originalEvent.targetTouches?e.originalEvent.targetTouches[0]:e.originalEvent}function a(e){var t=e.originalEvent;return t.targetTouches&&1===t.targetTouches.length?!0:t.pointerType&&"mouse"!==t.pointerType&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE?!0:!1}function s(e){if(a(e)){w=!0;var t=i(e);d.pageX=t.pageX,d.pageY=t.pageY,f=(new Date).getTime(),null!==b&&clearInterval(b),e.stopPropagation()}}function c(e){if(!h&&w&&a(e)){var t=i(e),n={pageX:t.pageX,pageY:t.pageY},r=n.pageX-d.pageX,l=n.pageY-d.pageY;o(r,l),d=n;var s=(new Date).getTime(),c=s-f;c>0&&(v.x=r/c,v.y=l/c,f=s),g(r,l)&&(e.stopPropagation(),e.preventDefault())}}function u(){!h&&w&&(w=!1,clearInterval(b),b=setInterval(function(){return E()?Math.abs(v.x)<.01&&Math.abs(v.y)<.01?void clearInterval(b):(o(30*v.x,30*v.y),v.x*=.8,void(v.y*=.8)):void clearInterval(b)},10))}var d={},f=0,v={},b=null,h=!1,w=!1;t&&(e(window).bind(B("touchstart"),r),e(window).bind(B("touchend"),l),x.bind(B("touchstart"),s),x.bind(B("touchmove"),c),x.bind(B("touchend"),u)),n&&(window.PointerEvent?(e(window).bind(B("pointerdown"),r),e(window).bind(B("pointerup"),l),x.bind(B("pointerdown"),s),x.bind(B("pointermove"),c),x.bind(B("pointerup"),u)):window.MSPointerEvent&&(e(window).bind(B("MSPointerDown"),r),e(window).bind(B("MSPointerUp"),l),x.bind(B("MSPointerDown"),s),x.bind(B("MSPointerMove"),c),x.bind(B("MSPointerUp"),u)))}function y(){x.bind(B("scroll"),function(){p()})}function L(){x.unbind(B()),e(window).unbind(B()),e(K).unbind(B()),x.data("perfect-scrollbar",null),x.data("perfect-scrollbar-update",null),x.data("perfect-scrollbar-destroy",null),H.remove(),J.remove(),_.remove(),G.remove(),x=_=G=H=J=X=O=M=D=C=Y=k=W=N=j=F=R=A=V=Z=$=q=B=null}function S(){p(),y(),d(),f(),w(),m(),b(),(nt||ot)&&T(nt,ot),P.useKeyboard&&h(),x.data("perfect-scrollbar",x),x.data("perfect-scrollbar-update",p),x.data("perfect-scrollbar-destroy",L)}var P=e.extend(!0,{},n),x=e(this),E=function(){return!!x};if("object"==typeof o?e.extend(!0,P,o):i=o,"update"===i)return x.data("perfect-scrollbar-update")&&x.data("perfect-scrollbar-update")(),x;if("destroy"===i)return x.data("perfect-scrollbar-destroy")&&x.data("perfect-scrollbar-destroy")(),x;if(x.data("perfect-scrollbar"))return x.data("perfect-scrollbar");x.addClass("ps-container");var M,D,C,Y,X,k,W,I,O,R,A,U,q="rtl"===x.css("direction"),B=r(),K=this.ownerDocument||document,_=e("
").appendTo(x),H=e("
").appendTo(_),N=t(_.css("bottom")),j=N===N,F=j?null:t(_.css("top")),Q=t(_.css("borderLeftWidth"))+t(_.css("borderRightWidth")),z=t(_.css("marginLeft"))+t(_.css("marginRight")),G=e("
").appendTo(x),J=e("
").appendTo(G),V=t(G.css("right")),Z=V===V,$=Z?null:t(G.css("left")),et=t(G.css("borderTopWidth"))+t(G.css("borderBottomWidth")),tt=t(G.css("marginTop"))+t(G.css("marginBottom")),nt="ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch,ot=null!==window.navigator.msMaxTouchPoints;return S(),x})}})},{}]},{},[1]); \ No newline at end of file diff --git a/package.json b/package.json index f5f64f4..3cc8f42 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "vinyl-transform": "^1.0.0" }, "scripts": { + "postinstall": "gulp build", "test": "gulp" }, "license": "MIT"