mirror of
https://github.com/tenrok/OverlayScrollbars.git
synced 2026-06-16 08:40:36 +03:00
version 1.11.0
This commit is contained in:
+51
-38
@@ -2,13 +2,13 @@
|
|||||||
* OverlayScrollbars
|
* OverlayScrollbars
|
||||||
* https://github.com/KingSora/OverlayScrollbars
|
* https://github.com/KingSora/OverlayScrollbars
|
||||||
*
|
*
|
||||||
* Version: 1.10.3
|
* Version: 1.11.0
|
||||||
*
|
*
|
||||||
* Copyright KingSora | Rene Haas.
|
* Copyright KingSora | Rene Haas.
|
||||||
* https://github.com/KingSora
|
* https://github.com/KingSora
|
||||||
*
|
*
|
||||||
* Released under the MIT license.
|
* Released under the MIT license.
|
||||||
* Date: 02.02.2020
|
* Date: 29.02.2020
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -96,6 +96,21 @@ body.os-dragging * {
|
|||||||
height: 200%;
|
height: 200%;
|
||||||
margin: 10px 0;
|
margin: 10px 0;
|
||||||
}
|
}
|
||||||
|
/* fix restricted measuring */
|
||||||
|
#os-dummy-scrollbar-size:before,
|
||||||
|
#os-dummy-scrollbar-size:after,
|
||||||
|
.os-content:before,
|
||||||
|
.os-content:after {
|
||||||
|
content: '';
|
||||||
|
display: table;
|
||||||
|
width: 0.01px;
|
||||||
|
height: 0.01px;
|
||||||
|
line-height: 0;
|
||||||
|
font-size: 0;
|
||||||
|
flex-grow: 0;
|
||||||
|
flex-shrink: 0;
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
#os-dummy-scrollbar-size,
|
#os-dummy-scrollbar-size,
|
||||||
.os-viewport {
|
.os-viewport {
|
||||||
-ms-overflow-style: scrollbar !important;
|
-ms-overflow-style: scrollbar !important;
|
||||||
@@ -172,15 +187,6 @@ body.os-dragging * {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
visibility: visible;
|
visibility: visible;
|
||||||
}
|
}
|
||||||
.os-content:before,
|
|
||||||
.os-content:after {
|
|
||||||
content: '';
|
|
||||||
display: table;
|
|
||||||
width: 0;
|
|
||||||
height: 0;
|
|
||||||
line-height: 0;
|
|
||||||
font-size: 0;
|
|
||||||
}
|
|
||||||
.os-content > .os-textarea {
|
.os-content > .os-textarea {
|
||||||
box-sizing: border-box !important;
|
box-sizing: border-box !important;
|
||||||
direction: inherit !important;
|
direction: inherit !important;
|
||||||
@@ -246,7 +252,7 @@ body.os-dragging * {
|
|||||||
.os-resize-observer-host {
|
.os-resize-observer-host {
|
||||||
box-sizing: inherit;
|
box-sizing: inherit;
|
||||||
display: block;
|
display: block;
|
||||||
opacity: 0;
|
visibility: hidden;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
@@ -263,11 +269,7 @@ body.os-dragging * {
|
|||||||
border-style: solid;
|
border-style: solid;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
.os-resize-observer-host:after {
|
.os-resize-observer-host > .os-resize-observer {
|
||||||
content: '';
|
|
||||||
}
|
|
||||||
.os-resize-observer-host > .os-resize-observer,
|
|
||||||
.os-resize-observer-host:after {
|
|
||||||
height: 200%;
|
height: 200%;
|
||||||
width: 200%;
|
width: 200%;
|
||||||
padding: inherit;
|
padding: inherit;
|
||||||
@@ -276,9 +278,17 @@ body.os-dragging * {
|
|||||||
display: block;
|
display: block;
|
||||||
box-sizing: content-box;
|
box-sizing: content-box;
|
||||||
}
|
}
|
||||||
.os-resize-observer.observed,
|
.os-resize-observer-host.observed {
|
||||||
object.os-resize-observer {
|
display: flex;
|
||||||
box-sizing: border-box !important;
|
flex-direction: column;
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-items: flex-start;
|
||||||
|
}
|
||||||
|
.os-resize-observer-host.observed > .os-resize-observer {
|
||||||
|
position: relative;
|
||||||
|
flex-grow: 1;
|
||||||
|
flex-shrink: 0;
|
||||||
|
flex-basis: auto;
|
||||||
}
|
}
|
||||||
.os-size-auto-observer {
|
.os-size-auto-observer {
|
||||||
box-sizing: inherit !important;
|
box-sizing: inherit !important;
|
||||||
@@ -334,8 +344,27 @@ object.os-resize-observer {
|
|||||||
.os-resize-observer {
|
.os-resize-observer {
|
||||||
-webkit-animation-duration: 0.001s;
|
-webkit-animation-duration: 0.001s;
|
||||||
animation-duration: 0.001s;
|
animation-duration: 0.001s;
|
||||||
-webkit-animation-name: hs-resize-observer-dummy-animation;
|
-webkit-animation-name: os-resize-observer-dummy-animation;
|
||||||
animation-name: hs-resize-observer-dummy-animation;
|
animation-name: os-resize-observer-dummy-animation;
|
||||||
|
}
|
||||||
|
object.os-resize-observer {
|
||||||
|
box-sizing: border-box !important;
|
||||||
|
}
|
||||||
|
@-webkit-keyframes os-resize-observer-dummy-animation {
|
||||||
|
from {
|
||||||
|
z-index: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
z-index: -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes os-resize-observer-dummy-animation {
|
||||||
|
from {
|
||||||
|
z-index: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
z-index: -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -468,22 +497,6 @@ html.os-html > .os-host > .os-scrollbar {
|
|||||||
}
|
}
|
||||||
.os-host-overflow-y {
|
.os-host-overflow-y {
|
||||||
}
|
}
|
||||||
@-webkit-keyframes hs-resize-observer-dummy-animation {
|
|
||||||
from {
|
|
||||||
z-index: 0;
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
z-index: -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@keyframes hs-resize-observer-dummy-animation {
|
|
||||||
from {
|
|
||||||
z-index: 0;
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
z-index: -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
THEMES:
|
THEMES:
|
||||||
|
|||||||
Vendored
+3
-3
File diff suppressed because one or more lines are too long
+87
-73
@@ -2,13 +2,13 @@
|
|||||||
* OverlayScrollbars
|
* OverlayScrollbars
|
||||||
* https://github.com/KingSora/OverlayScrollbars
|
* https://github.com/KingSora/OverlayScrollbars
|
||||||
*
|
*
|
||||||
* Version: 1.10.3
|
* Version: 1.11.0
|
||||||
*
|
*
|
||||||
* Copyright KingSora | Rene Haas.
|
* Copyright KingSora | Rene Haas.
|
||||||
* https://github.com/KingSora
|
* https://github.com/KingSora
|
||||||
*
|
*
|
||||||
* Released under the MIT license.
|
* Released under the MIT license.
|
||||||
* Date: 02.02.2020
|
* Date: 29.02.2020
|
||||||
*/
|
*/
|
||||||
|
|
||||||
(function (global, factory) {
|
(function (global, factory) {
|
||||||
@@ -42,6 +42,7 @@
|
|||||||
i: 'id',
|
i: 'id',
|
||||||
l: 'length',
|
l: 'length',
|
||||||
p: 'prototype',
|
p: 'prototype',
|
||||||
|
ti: 'tabindex',
|
||||||
oH: 'offsetHeight',
|
oH: 'offsetHeight',
|
||||||
cH: 'clientHeight',
|
cH: 'clientHeight',
|
||||||
sH: 'scrollHeight',
|
sH: 'scrollHeight',
|
||||||
@@ -1772,6 +1773,7 @@
|
|||||||
})(),
|
})(),
|
||||||
restrictedMeasuring: (function () {
|
restrictedMeasuring: (function () {
|
||||||
//https://bugzilla.mozilla.org/show_bug.cgi?id=1439305
|
//https://bugzilla.mozilla.org/show_bug.cgi?id=1439305
|
||||||
|
//since 1.11.0 always false -> fixed via CSS (hopefully)
|
||||||
scrollbarDummyElement.css(strOverflow, strHidden);
|
scrollbarDummyElement.css(strOverflow, strHidden);
|
||||||
var scrollSize = {
|
var scrollSize = {
|
||||||
w: scrollbarDummyElement0[LEXICON.sW],
|
w: scrollbarDummyElement0[LEXICON.sW],
|
||||||
@@ -1788,8 +1790,9 @@
|
|||||||
scrollbarDummyElement.css({ 'overflow-y': strHidden, 'overflow-x': strScroll, 'direction': 'rtl' }).scrollLeft(0);
|
scrollbarDummyElement.css({ 'overflow-y': strHidden, 'overflow-x': strScroll, 'direction': 'rtl' }).scrollLeft(0);
|
||||||
var dummyContainerOffset = scrollbarDummyElement.offset();
|
var dummyContainerOffset = scrollbarDummyElement.offset();
|
||||||
var dummyContainerChildOffset = dummyContainerChild.offset();
|
var dummyContainerChildOffset = dummyContainerChild.offset();
|
||||||
scrollbarDummyElement.scrollLeft(999);
|
//https://github.com/KingSora/OverlayScrollbars/issues/187
|
||||||
var dummyContainerScrollOffsetAfterScroll = dummyContainerChild.offset();
|
scrollbarDummyElement.scrollLeft(-999);
|
||||||
|
var dummyContainerChildOffsetAfterScroll = dummyContainerChild.offset();
|
||||||
return {
|
return {
|
||||||
//origin direction = determines if the zero scroll position is on the left or right side
|
//origin direction = determines if the zero scroll position is on the left or right side
|
||||||
//'i' means 'invert' (i === true means that the axis must be inverted to be correct)
|
//'i' means 'invert' (i === true means that the axis must be inverted to be correct)
|
||||||
@@ -1800,7 +1803,7 @@
|
|||||||
//'n' means 'negate' (n === true means that the axis must be negated to be correct)
|
//'n' means 'negate' (n === true means that the axis must be negated to be correct)
|
||||||
//true = negative
|
//true = negative
|
||||||
//false = positive
|
//false = positive
|
||||||
n: dummyContainerChildOffset.left - dummyContainerScrollOffsetAfterScroll.left === 0
|
n: dummyContainerChildOffset.left !== dummyContainerChildOffsetAfterScroll.left
|
||||||
};
|
};
|
||||||
})(),
|
})(),
|
||||||
supportTransform: VENDORS._cssProperty('transform') !== undefined,
|
supportTransform: VENDORS._cssProperty('transform') !== undefined,
|
||||||
@@ -2171,6 +2174,9 @@
|
|||||||
//callbacks:
|
//callbacks:
|
||||||
var _callbacksInitQeueue = [];
|
var _callbacksInitQeueue = [];
|
||||||
|
|
||||||
|
//attrs viewport shall inherit from target
|
||||||
|
var _viewportAttrsFromTarget = [LEXICON.ti];
|
||||||
|
|
||||||
//options:
|
//options:
|
||||||
var _defaultOptions;
|
var _defaultOptions;
|
||||||
var _currentOptions;
|
var _currentOptions;
|
||||||
@@ -2258,7 +2264,6 @@
|
|||||||
var _textareaDynHeightCache;
|
var _textareaDynHeightCache;
|
||||||
var _textareaDynWidthCache;
|
var _textareaDynWidthCache;
|
||||||
var _bodyMinSizeCache;
|
var _bodyMinSizeCache;
|
||||||
var _viewportScrollSizeCache;
|
|
||||||
var _displayIsHiddenCache;
|
var _displayIsHiddenCache;
|
||||||
var _updateAutoCache = {};
|
var _updateAutoCache = {};
|
||||||
|
|
||||||
@@ -2269,7 +2274,7 @@
|
|||||||
var _mutationObserverContentCallback;
|
var _mutationObserverContentCallback;
|
||||||
var _mutationObserversConnected;
|
var _mutationObserversConnected;
|
||||||
var _mutationObserverAttrsTextarea = ['wrap', 'cols', 'rows'];
|
var _mutationObserverAttrsTextarea = ['wrap', 'cols', 'rows'];
|
||||||
var _mutationObserverAttrsHost = [LEXICON.i, LEXICON.c, LEXICON.s, 'open'];
|
var _mutationObserverAttrsHost = [LEXICON.i, LEXICON.c, LEXICON.s, 'open'].concat(_viewportAttrsFromTarget);
|
||||||
|
|
||||||
//events:
|
//events:
|
||||||
var _destroyEvents = [];
|
var _destroyEvents = [];
|
||||||
@@ -2351,7 +2356,7 @@
|
|||||||
//add resize observer:
|
//add resize observer:
|
||||||
if (onElementResizedCallback) {
|
if (onElementResizedCallback) {
|
||||||
if (_supportResizeObserver) {
|
if (_supportResizeObserver) {
|
||||||
var element = targetElement.append(generateDiv(_classNameResizeObserverElement + ' observed')).contents()[0];
|
var element = targetElement.addClass('observed').append(generateDiv(_classNameResizeObserverElement)).contents()[0];
|
||||||
var observer = element[_strResizeObserverProperty] = new resizeObserver(callback);
|
var observer = element[_strResizeObserverProperty] = new resizeObserver(callback);
|
||||||
observer.observe(element);
|
observer.observe(element);
|
||||||
}
|
}
|
||||||
@@ -2458,7 +2463,7 @@
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
var obj = _documentElementNative.createElement(TYPES.o);
|
var obj = _documentElementNative.createElement(TYPES.o);
|
||||||
obj.setAttribute('tabindex', '-1');
|
obj.setAttribute(LEXICON.ti, '-1');
|
||||||
obj.setAttribute(LEXICON.c, _classNameResizeObserverElement);
|
obj.setAttribute(LEXICON.c, _classNameResizeObserverElement);
|
||||||
obj.onload = function () {
|
obj.onload = function () {
|
||||||
var wnd = this.contentDocument.defaultView;
|
var wnd = this.contentDocument.defaultView;
|
||||||
@@ -2587,6 +2592,7 @@
|
|||||||
_mutationObserverHostCallback = function (mutations) {
|
_mutationObserverHostCallback = function (mutations) {
|
||||||
var doUpdate = false;
|
var doUpdate = false;
|
||||||
var mutation;
|
var mutation;
|
||||||
|
var mutatedAttrs = [];
|
||||||
|
|
||||||
if (_initialized && !_sleeping) {
|
if (_initialized && !_sleeping) {
|
||||||
each(mutations, function () {
|
each(mutations, function () {
|
||||||
@@ -2594,17 +2600,20 @@
|
|||||||
mutationTarget = mutation.target;
|
mutationTarget = mutation.target;
|
||||||
mutationAttrName = mutation.attributeName;
|
mutationAttrName = mutation.attributeName;
|
||||||
|
|
||||||
if (mutationAttrName === LEXICON.c)
|
if(!doUpdate) {
|
||||||
doUpdate = hostClassNamesChanged(mutation.oldValue, mutationTarget.className);
|
if (mutationAttrName === LEXICON.c)
|
||||||
else if (mutationAttrName === LEXICON.s)
|
doUpdate = hostClassNamesChanged(mutation.oldValue, mutationTarget.className);
|
||||||
doUpdate = mutation.oldValue !== mutationTarget[LEXICON.s].cssText;
|
else if (mutationAttrName === LEXICON.s)
|
||||||
else
|
doUpdate = mutation.oldValue !== mutationTarget[LEXICON.s].cssText;
|
||||||
doUpdate = true;
|
else
|
||||||
|
doUpdate = true;
|
||||||
if (doUpdate)
|
}
|
||||||
return false;
|
|
||||||
|
mutatedAttrs.push(mutationAttrName);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
updateViewportAttrsFromTarget(mutatedAttrs);
|
||||||
|
|
||||||
if (doUpdate)
|
if (doUpdate)
|
||||||
_base.update(_strAuto);
|
_base.update(_strAuto);
|
||||||
}
|
}
|
||||||
@@ -2890,22 +2899,12 @@
|
|||||||
var contentMeasureElement = getContentMeasureElement();
|
var contentMeasureElement = getContentMeasureElement();
|
||||||
var textareaValueLength = _isTextarea && _widthAutoCache && !_textareaAutoWrappingCache ? _targetElement.val().length : 0;
|
var textareaValueLength = _isTextarea && _widthAutoCache && !_textareaAutoWrappingCache ? _targetElement.val().length : 0;
|
||||||
var setCSS = !_mutationObserversConnected && _widthAutoCache && !_isTextarea;
|
var setCSS = !_mutationObserversConnected && _widthAutoCache && !_isTextarea;
|
||||||
var viewportScrollSize = {};
|
|
||||||
var css = {};
|
var css = {};
|
||||||
var float;
|
var float;
|
||||||
var bodyMinSizeC;
|
var bodyMinSizeC;
|
||||||
var changed;
|
var changed;
|
||||||
var viewportScrollSizeChanged;
|
|
||||||
var contentElementScrollSize;
|
var contentElementScrollSize;
|
||||||
|
|
||||||
//fix for https://bugzilla.mozilla.org/show_bug.cgi?id=1439305, it only works with "clipAlways : true"
|
|
||||||
//it can work with "clipAlways : false" too, but I had to set the overflow of the viewportElement to hidden every time before measuring
|
|
||||||
if (_restrictedMeasuring) {
|
|
||||||
viewportScrollSize = {
|
|
||||||
x: _viewportElementNative[LEXICON.sW],
|
|
||||||
y: _viewportElementNative[LEXICON.sH]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (setCSS) {
|
if (setCSS) {
|
||||||
float = _contentElement.css(_strFloat);
|
float = _contentElement.css(_strFloat);
|
||||||
css[_strFloat] = _isRTL ? _strRight : _strLeft;
|
css[_strFloat] = _isRTL ? _strRight : _strLeft;
|
||||||
@@ -2924,12 +2923,10 @@
|
|||||||
|
|
||||||
bodyMinSizeC = bodyMinSizeChanged();
|
bodyMinSizeC = bodyMinSizeChanged();
|
||||||
changed = checkCache(contentElementScrollSize, _contentElementScrollSizeChangeDetectedCache);
|
changed = checkCache(contentElementScrollSize, _contentElementScrollSizeChangeDetectedCache);
|
||||||
viewportScrollSizeChanged = checkCache(viewportScrollSize, _viewportScrollSizeCache);
|
|
||||||
|
|
||||||
_contentElementScrollSizeChangeDetectedCache = contentElementScrollSize;
|
_contentElementScrollSizeChangeDetectedCache = contentElementScrollSize;
|
||||||
_viewportScrollSizeCache = viewportScrollSize;
|
|
||||||
|
|
||||||
return changed || bodyMinSizeC || viewportScrollSizeChanged;
|
return changed || bodyMinSizeC;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -2939,37 +2936,41 @@
|
|||||||
function meaningfulAttrsChanged() {
|
function meaningfulAttrsChanged() {
|
||||||
if (_sleeping || _mutationObserversConnected)
|
if (_sleeping || _mutationObserversConnected)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var changed;
|
|
||||||
var elem;
|
var elem;
|
||||||
var curr;
|
var curr;
|
||||||
var cache;
|
var cache;
|
||||||
|
var changedAttrs = [];
|
||||||
var checks = [
|
var checks = [
|
||||||
{
|
{
|
||||||
_elem: _hostElement,
|
_elem: _hostElement,
|
||||||
_props: _mutationObserverAttrsHost.concat(':visible')
|
_attrs: _mutationObserverAttrsHost.concat(':visible')
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
_elem: _isTextarea ? _targetElement : undefined,
|
_elem: _isTextarea ? _targetElement : undefined,
|
||||||
_props: _mutationObserverAttrsTextarea
|
_attrs: _mutationObserverAttrsTextarea
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
each(checks, function (index, check) {
|
each(checks, function (index, check) {
|
||||||
elem = check._elem;
|
elem = check._elem;
|
||||||
if (elem) {
|
if (elem) {
|
||||||
each(check._props, function (index, prop) {
|
each(check._attrs, function (index, attr) {
|
||||||
curr = prop.charAt(0) === ':' ? elem.is(prop) : elem.attr(prop);
|
curr = attr.charAt(0) === ':' ? elem.is(attr) : elem.attr(attr);
|
||||||
cache = _updateAutoCache[prop];
|
cache = _updateAutoCache[attr];
|
||||||
|
|
||||||
|
if(checkCache(curr, cache)) {
|
||||||
|
changedAttrs.push(attr);
|
||||||
|
}
|
||||||
|
|
||||||
changed = changed || checkCache(curr, cache);
|
_updateAutoCache[attr] = curr;
|
||||||
|
|
||||||
_updateAutoCache[prop] = curr;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return changed;
|
updateViewportAttrsFromTarget(changedAttrs);
|
||||||
|
|
||||||
|
return changedAttrs[LEXICON.l] > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -3051,6 +3052,26 @@
|
|||||||
|
|
||||||
//==== Update ====//
|
//==== Update ====//
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the attribute values of the viewport element to the values from the target element.
|
||||||
|
* The value of a attribute is only set if the attribute is whitelisted.
|
||||||
|
* @attrs attrs The array of attributes which shall be set or undefined if all whitelisted shall be set.
|
||||||
|
*/
|
||||||
|
function updateViewportAttrsFromTarget(attrs) {
|
||||||
|
attrs = attrs || _viewportAttrsFromTarget;
|
||||||
|
each(attrs, function (index, attr) {
|
||||||
|
if (COMPATIBILITY.inA(attr, _viewportAttrsFromTarget) > -1) {
|
||||||
|
var targetAttr = _targetElement.attr(attr);
|
||||||
|
if(type(targetAttr) == TYPES.s) {
|
||||||
|
_viewportElement.attr(attr, targetAttr);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
_viewportElement.removeAttr(attr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates the variables and size of the textarea element, and manages the scroll on new line or new character.
|
* Updates the variables and size of the textarea element, and manages the scroll on new line or new character.
|
||||||
*/
|
*/
|
||||||
@@ -3626,41 +3647,36 @@
|
|||||||
var strOverflowY = strOverflow + '-y';
|
var strOverflowY = strOverflow + '-y';
|
||||||
var strHidden = 'hidden';
|
var strHidden = 'hidden';
|
||||||
var strVisible = 'visible';
|
var strVisible = 'visible';
|
||||||
//decide whether the content overflow must get hidden for correct overflow measuring, it !MUST! be always hidden if the height is auto
|
|
||||||
var hideOverflow4CorrectMeasuring = _restrictedMeasuring ?
|
|
||||||
(_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y) || //it must be hidden if native scrollbars are overlaid
|
|
||||||
(_viewportSize.w < _nativeScrollbarMinSize.y || _viewportSize.h < _nativeScrollbarMinSize.x) || //it must be hidden if host-element is too small
|
|
||||||
heightAuto || displayIsHiddenChanged //it must be hidden if height is auto or display was changed
|
|
||||||
: heightAuto; //if there is not the restricted Measuring bug, it must be hidden if the height is auto
|
|
||||||
|
|
||||||
//Reset the viewport (very important for natively overlaid scrollbars and zoom change
|
//Reset the viewport (very important for natively overlaid scrollbars and zoom change
|
||||||
//don't change the overflow prop as it is very expensive and affects performance !A LOT!
|
//don't change the overflow prop as it is very expensive and affects performance !A LOT!
|
||||||
var viewportElementResetCSS = {};
|
if(!_nativeScrollbarStyling) {
|
||||||
var resetXTmp = _hasOverflowCache.y && _hideOverflowCache.ys && !ignoreOverlayScrollbarHiding && !_nativeScrollbarStyling ? (_nativeScrollbarIsOverlaid.y ? _viewportElement.css(isRTLLeft) : -_nativeScrollbarSize.y) : 0;
|
var viewportElementResetCSS = {};
|
||||||
var resetBottomTmp = _hasOverflowCache.x && _hideOverflowCache.xs && !ignoreOverlayScrollbarHiding && !_nativeScrollbarStyling ? (_nativeScrollbarIsOverlaid.x ? _viewportElement.css(_strBottom) : -_nativeScrollbarSize.x) : 0;
|
var resetXTmp = _hasOverflowCache.y && _hideOverflowCache.ys && !ignoreOverlayScrollbarHiding ? (_nativeScrollbarIsOverlaid.y ? _viewportElement.css(isRTLLeft) : -_nativeScrollbarSize.y) : 0;
|
||||||
setTopRightBottomLeft(viewportElementResetCSS, _strEmpty);
|
var resetBottomTmp = _hasOverflowCache.x && _hideOverflowCache.xs && !ignoreOverlayScrollbarHiding ? (_nativeScrollbarIsOverlaid.x ? _viewportElement.css(_strBottom) : -_nativeScrollbarSize.x) : 0;
|
||||||
_viewportElement.css(viewportElementResetCSS);
|
setTopRightBottomLeft(viewportElementResetCSS, _strEmpty);
|
||||||
if (hideOverflow4CorrectMeasuring)
|
_viewportElement.css(viewportElementResetCSS);
|
||||||
_contentElement.css(strOverflow, strHidden);
|
}
|
||||||
|
|
||||||
//measure several sizes:
|
//measure several sizes:
|
||||||
var contentMeasureElement = getContentMeasureElement();
|
var contentMeasureElement = getContentMeasureElement();
|
||||||
//in Firefox content element has to have overflow hidden, else element margins aren't calculated properly, this element prevents this bug, but only if scrollbars aren't overlaid
|
//in Firefox content element has to have overflow hidden, else element margins aren't calculated properly, this element prevents this bug, but only if scrollbars aren't overlaid
|
||||||
var contentMeasureElementGuaranty = _restrictedMeasuring && !hideOverflow4CorrectMeasuring ? _viewportElementNative : contentMeasureElement;
|
|
||||||
var contentSize = {
|
var contentSize = {
|
||||||
//use clientSize because natively overlaidScrollbars add borders
|
//use clientSize because natively overlaidScrollbars add borders
|
||||||
w: textareaDynOrigSize.w || contentMeasureElement[LEXICON.cW],
|
w: textareaDynOrigSize.w || contentMeasureElement[LEXICON.cW],
|
||||||
h: textareaDynOrigSize.h || contentMeasureElement[LEXICON.cH]
|
h: textareaDynOrigSize.h || contentMeasureElement[LEXICON.cH]
|
||||||
};
|
};
|
||||||
var scrollSize = {
|
var scrollSize = {
|
||||||
w: MATH.max(contentMeasureElement[LEXICON.sW], contentMeasureElementGuaranty[LEXICON.sW]),
|
w: contentMeasureElement[LEXICON.sW],
|
||||||
h: MATH.max(contentMeasureElement[LEXICON.sH], contentMeasureElementGuaranty[LEXICON.sH])
|
h: contentMeasureElement[LEXICON.sH]
|
||||||
};
|
};
|
||||||
|
|
||||||
//apply the correct viewport style and measure viewport size
|
//apply the correct viewport style and measure viewport size
|
||||||
viewportElementResetCSS[_strBottom] = wasHeightAuto ? _strEmpty : resetBottomTmp;
|
if(!_nativeScrollbarStyling) {
|
||||||
viewportElementResetCSS[isRTLLeft] = wasWidthAuto ? _strEmpty : resetXTmp;
|
viewportElementResetCSS[_strBottom] = wasHeightAuto ? _strEmpty : resetBottomTmp;
|
||||||
_viewportElement.css(viewportElementResetCSS);
|
viewportElementResetCSS[isRTLLeft] = wasWidthAuto ? _strEmpty : resetXTmp;
|
||||||
|
_viewportElement.css(viewportElementResetCSS);
|
||||||
|
}
|
||||||
_viewportSize = getViewportSize();
|
_viewportSize = getViewportSize();
|
||||||
|
|
||||||
//measure and correct several sizes
|
//measure and correct several sizes
|
||||||
@@ -3738,16 +3754,12 @@
|
|||||||
|
|
||||||
//measure again, but this time all correct sizes:
|
//measure again, but this time all correct sizes:
|
||||||
var contentScrollSize = {
|
var contentScrollSize = {
|
||||||
w: MATH.max(contentMeasureElement[LEXICON.sW], contentMeasureElementGuaranty[LEXICON.sW]),
|
w: contentMeasureElement[LEXICON.sW],
|
||||||
h: MATH.max(contentMeasureElement[LEXICON.sH], contentMeasureElementGuaranty[LEXICON.sH])
|
h: contentMeasureElement[LEXICON.sH],
|
||||||
};
|
};
|
||||||
contentScrollSize.c = contentSizeChanged = checkCacheAutoForce(contentScrollSize, _contentScrollSizeCache);
|
contentScrollSize.c = contentSizeChanged = checkCacheAutoForce(contentScrollSize, _contentScrollSizeCache);
|
||||||
_contentScrollSizeCache = contentScrollSize;
|
_contentScrollSizeCache = contentScrollSize;
|
||||||
|
|
||||||
//remove overflow hidden to restore overflow
|
|
||||||
if (hideOverflow4CorrectMeasuring)
|
|
||||||
_contentElement.css(strOverflow, _strEmpty);
|
|
||||||
|
|
||||||
//refresh viewport size after correct measuring
|
//refresh viewport size after correct measuring
|
||||||
_viewportSize = getViewportSize();
|
_viewportSize = getViewportSize();
|
||||||
|
|
||||||
@@ -4315,6 +4327,8 @@
|
|||||||
_paddingElementNative = _paddingElement[0];
|
_paddingElementNative = _paddingElement[0];
|
||||||
_viewportElementNative = _viewportElement[0];
|
_viewportElementNative = _viewportElement[0];
|
||||||
_contentElementNative = _contentElement[0];
|
_contentElementNative = _contentElement[0];
|
||||||
|
|
||||||
|
updateViewportAttrsFromTarget();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (_domExists && _initialized) {
|
if (_domExists && _initialized) {
|
||||||
@@ -5531,7 +5545,7 @@
|
|||||||
var doUpdateAuto;
|
var doUpdateAuto;
|
||||||
var mutHost;
|
var mutHost;
|
||||||
var mutContent;
|
var mutContent;
|
||||||
|
|
||||||
if (isString) {
|
if (isString) {
|
||||||
if (force === _strAuto) {
|
if (force === _strAuto) {
|
||||||
attrsChanged = meaningfulAttrsChanged();
|
attrsChanged = meaningfulAttrsChanged();
|
||||||
@@ -6413,7 +6427,7 @@
|
|||||||
initBodyScroll.t = MATH.max(_targetElement[_strScrollTop](), _htmlElement[_strScrollTop](), _windowElement[_strScrollTop]());
|
initBodyScroll.t = MATH.max(_targetElement[_strScrollTop](), _htmlElement[_strScrollTop](), _windowElement[_strScrollTop]());
|
||||||
|
|
||||||
bodyMouseTouchDownListener = function () {
|
bodyMouseTouchDownListener = function () {
|
||||||
_viewportElement.removeAttr('tabindex');
|
_viewportElement.removeAttr(LEXICON.ti);
|
||||||
setupResponsiveEventListener(_viewportElement, _strMouseTouchDownEvent, bodyMouseTouchDownListener, true, true);
|
setupResponsiveEventListener(_viewportElement, _strMouseTouchDownEvent, bodyMouseTouchDownListener, true, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6427,8 +6441,8 @@
|
|||||||
setupStructureEvents();
|
setupStructureEvents();
|
||||||
setupScrollbarEvents(true);
|
setupScrollbarEvents(true);
|
||||||
setupScrollbarEvents(false);
|
setupScrollbarEvents(false);
|
||||||
setupScrollbarCornerEvents();
|
setupScrollbarCornerEvents();
|
||||||
|
|
||||||
//create mutation observers
|
//create mutation observers
|
||||||
createMutationObservers();
|
createMutationObservers();
|
||||||
|
|
||||||
@@ -6442,7 +6456,7 @@
|
|||||||
//set the focus on the viewport element so you dont have to click on the page to use keyboard keys (up / down / space) for scrolling
|
//set the focus on the viewport element so you dont have to click on the page to use keyboard keys (up / down / space) for scrolling
|
||||||
if (document.activeElement == targetElement && _viewportElementNative.focus) {
|
if (document.activeElement == targetElement && _viewportElementNative.focus) {
|
||||||
//set a tabindex to make the viewportElement focusable
|
//set a tabindex to make the viewportElement focusable
|
||||||
_viewportElement.attr('tabindex', '-1');
|
_viewportElement.attr(LEXICON.ti, '-1');
|
||||||
_viewportElementNative.focus();
|
_viewportElementNative.focus();
|
||||||
|
|
||||||
/* the tabindex has to be removed due to;
|
/* the tabindex has to be removed due to;
|
||||||
|
|||||||
Vendored
+3
-3
File diff suppressed because one or more lines are too long
+100
-86
@@ -2,13 +2,13 @@
|
|||||||
* OverlayScrollbars
|
* OverlayScrollbars
|
||||||
* https://github.com/KingSora/OverlayScrollbars
|
* https://github.com/KingSora/OverlayScrollbars
|
||||||
*
|
*
|
||||||
* Version: 1.10.3
|
* Version: 1.11.0
|
||||||
*
|
*
|
||||||
* Copyright KingSora | Rene Haas.
|
* Copyright KingSora | Rene Haas.
|
||||||
* https://github.com/KingSora
|
* https://github.com/KingSora
|
||||||
*
|
*
|
||||||
* Released under the MIT license.
|
* Released under the MIT license.
|
||||||
* Date: 02.02.2020
|
* Date: 29.02.2020
|
||||||
*/
|
*/
|
||||||
|
|
||||||
(function (global, factory) {
|
(function (global, factory) {
|
||||||
@@ -37,19 +37,20 @@
|
|||||||
//y : 'symbol'
|
//y : 'symbol'
|
||||||
};
|
};
|
||||||
var LEXICON = {
|
var LEXICON = {
|
||||||
c : 'class',
|
c: 'class',
|
||||||
s : 'style',
|
s: 'style',
|
||||||
i : 'id',
|
i: 'id',
|
||||||
l : 'length',
|
l: 'length',
|
||||||
p : 'prototype',
|
p: 'prototype',
|
||||||
oH : 'offsetHeight',
|
ti: 'tabindex',
|
||||||
cH : 'clientHeight',
|
oH: 'offsetHeight',
|
||||||
sH : 'scrollHeight',
|
cH: 'clientHeight',
|
||||||
oW : 'offsetWidth',
|
sH: 'scrollHeight',
|
||||||
cW : 'clientWidth',
|
oW: 'offsetWidth',
|
||||||
sW : 'scrollWidth',
|
cW: 'clientWidth',
|
||||||
hOP : 'hasOwnProperty',
|
sW: 'scrollWidth',
|
||||||
bCR : 'getBoundingClientRect'
|
hOP: 'hasOwnProperty',
|
||||||
|
bCR: 'getBoundingClientRect'
|
||||||
};
|
};
|
||||||
var VENDORS = (function() {
|
var VENDORS = (function() {
|
||||||
//https://developer.mozilla.org/en-US/docs/Glossary/Vendor_Prefix
|
//https://developer.mozilla.org/en-US/docs/Glossary/Vendor_Prefix
|
||||||
@@ -690,6 +691,7 @@
|
|||||||
})(),
|
})(),
|
||||||
restrictedMeasuring: (function () {
|
restrictedMeasuring: (function () {
|
||||||
//https://bugzilla.mozilla.org/show_bug.cgi?id=1439305
|
//https://bugzilla.mozilla.org/show_bug.cgi?id=1439305
|
||||||
|
//since 1.11.0 always false -> fixed via CSS (hopefully)
|
||||||
scrollbarDummyElement.css(strOverflow, strHidden);
|
scrollbarDummyElement.css(strOverflow, strHidden);
|
||||||
var scrollSize = {
|
var scrollSize = {
|
||||||
w: scrollbarDummyElement0[LEXICON.sW],
|
w: scrollbarDummyElement0[LEXICON.sW],
|
||||||
@@ -706,8 +708,9 @@
|
|||||||
scrollbarDummyElement.css({ 'overflow-y': strHidden, 'overflow-x': strScroll, 'direction': 'rtl' }).scrollLeft(0);
|
scrollbarDummyElement.css({ 'overflow-y': strHidden, 'overflow-x': strScroll, 'direction': 'rtl' }).scrollLeft(0);
|
||||||
var dummyContainerOffset = scrollbarDummyElement.offset();
|
var dummyContainerOffset = scrollbarDummyElement.offset();
|
||||||
var dummyContainerChildOffset = dummyContainerChild.offset();
|
var dummyContainerChildOffset = dummyContainerChild.offset();
|
||||||
scrollbarDummyElement.scrollLeft(999);
|
//https://github.com/KingSora/OverlayScrollbars/issues/187
|
||||||
var dummyContainerScrollOffsetAfterScroll = dummyContainerChild.offset();
|
scrollbarDummyElement.scrollLeft(-999);
|
||||||
|
var dummyContainerChildOffsetAfterScroll = dummyContainerChild.offset();
|
||||||
return {
|
return {
|
||||||
//origin direction = determines if the zero scroll position is on the left or right side
|
//origin direction = determines if the zero scroll position is on the left or right side
|
||||||
//'i' means 'invert' (i === true means that the axis must be inverted to be correct)
|
//'i' means 'invert' (i === true means that the axis must be inverted to be correct)
|
||||||
@@ -718,7 +721,7 @@
|
|||||||
//'n' means 'negate' (n === true means that the axis must be negated to be correct)
|
//'n' means 'negate' (n === true means that the axis must be negated to be correct)
|
||||||
//true = negative
|
//true = negative
|
||||||
//false = positive
|
//false = positive
|
||||||
n: dummyContainerChildOffset.left - dummyContainerScrollOffsetAfterScroll.left === 0
|
n: dummyContainerChildOffset.left !== dummyContainerChildOffsetAfterScroll.left
|
||||||
};
|
};
|
||||||
})(),
|
})(),
|
||||||
supportTransform: VENDORS._cssProperty('transform') !== undefined,
|
supportTransform: VENDORS._cssProperty('transform') !== undefined,
|
||||||
@@ -1089,6 +1092,9 @@
|
|||||||
//callbacks:
|
//callbacks:
|
||||||
var _callbacksInitQeueue = [];
|
var _callbacksInitQeueue = [];
|
||||||
|
|
||||||
|
//attrs viewport shall inherit from target
|
||||||
|
var _viewportAttrsFromTarget = [LEXICON.ti];
|
||||||
|
|
||||||
//options:
|
//options:
|
||||||
var _defaultOptions;
|
var _defaultOptions;
|
||||||
var _currentOptions;
|
var _currentOptions;
|
||||||
@@ -1176,7 +1182,6 @@
|
|||||||
var _textareaDynHeightCache;
|
var _textareaDynHeightCache;
|
||||||
var _textareaDynWidthCache;
|
var _textareaDynWidthCache;
|
||||||
var _bodyMinSizeCache;
|
var _bodyMinSizeCache;
|
||||||
var _viewportScrollSizeCache;
|
|
||||||
var _displayIsHiddenCache;
|
var _displayIsHiddenCache;
|
||||||
var _updateAutoCache = {};
|
var _updateAutoCache = {};
|
||||||
|
|
||||||
@@ -1187,7 +1192,7 @@
|
|||||||
var _mutationObserverContentCallback;
|
var _mutationObserverContentCallback;
|
||||||
var _mutationObserversConnected;
|
var _mutationObserversConnected;
|
||||||
var _mutationObserverAttrsTextarea = ['wrap', 'cols', 'rows'];
|
var _mutationObserverAttrsTextarea = ['wrap', 'cols', 'rows'];
|
||||||
var _mutationObserverAttrsHost = [LEXICON.i, LEXICON.c, LEXICON.s, 'open'];
|
var _mutationObserverAttrsHost = [LEXICON.i, LEXICON.c, LEXICON.s, 'open'].concat(_viewportAttrsFromTarget);
|
||||||
|
|
||||||
//events:
|
//events:
|
||||||
var _destroyEvents = [];
|
var _destroyEvents = [];
|
||||||
@@ -1269,7 +1274,7 @@
|
|||||||
//add resize observer:
|
//add resize observer:
|
||||||
if (onElementResizedCallback) {
|
if (onElementResizedCallback) {
|
||||||
if (_supportResizeObserver) {
|
if (_supportResizeObserver) {
|
||||||
var element = targetElement.append(generateDiv(_classNameResizeObserverElement + ' observed')).contents()[0];
|
var element = targetElement.addClass('observed').append(generateDiv(_classNameResizeObserverElement)).contents()[0];
|
||||||
var observer = element[_strResizeObserverProperty] = new resizeObserver(callback);
|
var observer = element[_strResizeObserverProperty] = new resizeObserver(callback);
|
||||||
observer.observe(element);
|
observer.observe(element);
|
||||||
}
|
}
|
||||||
@@ -1376,7 +1381,7 @@
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
var obj = _documentElementNative.createElement(TYPES.o);
|
var obj = _documentElementNative.createElement(TYPES.o);
|
||||||
obj.setAttribute('tabindex', '-1');
|
obj.setAttribute(LEXICON.ti, '-1');
|
||||||
obj.setAttribute(LEXICON.c, _classNameResizeObserverElement);
|
obj.setAttribute(LEXICON.c, _classNameResizeObserverElement);
|
||||||
obj.onload = function () {
|
obj.onload = function () {
|
||||||
var wnd = this.contentDocument.defaultView;
|
var wnd = this.contentDocument.defaultView;
|
||||||
@@ -1505,6 +1510,7 @@
|
|||||||
_mutationObserverHostCallback = function (mutations) {
|
_mutationObserverHostCallback = function (mutations) {
|
||||||
var doUpdate = false;
|
var doUpdate = false;
|
||||||
var mutation;
|
var mutation;
|
||||||
|
var mutatedAttrs = [];
|
||||||
|
|
||||||
if (_initialized && !_sleeping) {
|
if (_initialized && !_sleeping) {
|
||||||
each(mutations, function () {
|
each(mutations, function () {
|
||||||
@@ -1512,17 +1518,20 @@
|
|||||||
mutationTarget = mutation.target;
|
mutationTarget = mutation.target;
|
||||||
mutationAttrName = mutation.attributeName;
|
mutationAttrName = mutation.attributeName;
|
||||||
|
|
||||||
if (mutationAttrName === LEXICON.c)
|
if(!doUpdate) {
|
||||||
doUpdate = hostClassNamesChanged(mutation.oldValue, mutationTarget.className);
|
if (mutationAttrName === LEXICON.c)
|
||||||
else if (mutationAttrName === LEXICON.s)
|
doUpdate = hostClassNamesChanged(mutation.oldValue, mutationTarget.className);
|
||||||
doUpdate = mutation.oldValue !== mutationTarget[LEXICON.s].cssText;
|
else if (mutationAttrName === LEXICON.s)
|
||||||
else
|
doUpdate = mutation.oldValue !== mutationTarget[LEXICON.s].cssText;
|
||||||
doUpdate = true;
|
else
|
||||||
|
doUpdate = true;
|
||||||
if (doUpdate)
|
}
|
||||||
return false;
|
|
||||||
|
mutatedAttrs.push(mutationAttrName);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
updateViewportAttrsFromTarget(mutatedAttrs);
|
||||||
|
|
||||||
if (doUpdate)
|
if (doUpdate)
|
||||||
_base.update(_strAuto);
|
_base.update(_strAuto);
|
||||||
}
|
}
|
||||||
@@ -1808,22 +1817,12 @@
|
|||||||
var contentMeasureElement = getContentMeasureElement();
|
var contentMeasureElement = getContentMeasureElement();
|
||||||
var textareaValueLength = _isTextarea && _widthAutoCache && !_textareaAutoWrappingCache ? _targetElement.val().length : 0;
|
var textareaValueLength = _isTextarea && _widthAutoCache && !_textareaAutoWrappingCache ? _targetElement.val().length : 0;
|
||||||
var setCSS = !_mutationObserversConnected && _widthAutoCache && !_isTextarea;
|
var setCSS = !_mutationObserversConnected && _widthAutoCache && !_isTextarea;
|
||||||
var viewportScrollSize = {};
|
|
||||||
var css = {};
|
var css = {};
|
||||||
var float;
|
var float;
|
||||||
var bodyMinSizeC;
|
var bodyMinSizeC;
|
||||||
var changed;
|
var changed;
|
||||||
var viewportScrollSizeChanged;
|
|
||||||
var contentElementScrollSize;
|
var contentElementScrollSize;
|
||||||
|
|
||||||
//fix for https://bugzilla.mozilla.org/show_bug.cgi?id=1439305, it only works with "clipAlways : true"
|
|
||||||
//it can work with "clipAlways : false" too, but I had to set the overflow of the viewportElement to hidden every time before measuring
|
|
||||||
if (_restrictedMeasuring) {
|
|
||||||
viewportScrollSize = {
|
|
||||||
x: _viewportElementNative[LEXICON.sW],
|
|
||||||
y: _viewportElementNative[LEXICON.sH]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (setCSS) {
|
if (setCSS) {
|
||||||
float = _contentElement.css(_strFloat);
|
float = _contentElement.css(_strFloat);
|
||||||
css[_strFloat] = _isRTL ? _strRight : _strLeft;
|
css[_strFloat] = _isRTL ? _strRight : _strLeft;
|
||||||
@@ -1842,12 +1841,10 @@
|
|||||||
|
|
||||||
bodyMinSizeC = bodyMinSizeChanged();
|
bodyMinSizeC = bodyMinSizeChanged();
|
||||||
changed = checkCache(contentElementScrollSize, _contentElementScrollSizeChangeDetectedCache);
|
changed = checkCache(contentElementScrollSize, _contentElementScrollSizeChangeDetectedCache);
|
||||||
viewportScrollSizeChanged = checkCache(viewportScrollSize, _viewportScrollSizeCache);
|
|
||||||
|
|
||||||
_contentElementScrollSizeChangeDetectedCache = contentElementScrollSize;
|
_contentElementScrollSizeChangeDetectedCache = contentElementScrollSize;
|
||||||
_viewportScrollSizeCache = viewportScrollSize;
|
|
||||||
|
|
||||||
return changed || bodyMinSizeC || viewportScrollSizeChanged;
|
return changed || bodyMinSizeC;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1857,37 +1854,41 @@
|
|||||||
function meaningfulAttrsChanged() {
|
function meaningfulAttrsChanged() {
|
||||||
if (_sleeping || _mutationObserversConnected)
|
if (_sleeping || _mutationObserversConnected)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var changed;
|
|
||||||
var elem;
|
var elem;
|
||||||
var curr;
|
var curr;
|
||||||
var cache;
|
var cache;
|
||||||
|
var changedAttrs = [];
|
||||||
var checks = [
|
var checks = [
|
||||||
{
|
{
|
||||||
_elem: _hostElement,
|
_elem: _hostElement,
|
||||||
_props: _mutationObserverAttrsHost.concat(':visible')
|
_attrs: _mutationObserverAttrsHost.concat(':visible')
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
_elem: _isTextarea ? _targetElement : undefined,
|
_elem: _isTextarea ? _targetElement : undefined,
|
||||||
_props: _mutationObserverAttrsTextarea
|
_attrs: _mutationObserverAttrsTextarea
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
each(checks, function (index, check) {
|
each(checks, function (index, check) {
|
||||||
elem = check._elem;
|
elem = check._elem;
|
||||||
if (elem) {
|
if (elem) {
|
||||||
each(check._props, function (index, prop) {
|
each(check._attrs, function (index, attr) {
|
||||||
curr = prop.charAt(0) === ':' ? elem.is(prop) : elem.attr(prop);
|
curr = attr.charAt(0) === ':' ? elem.is(attr) : elem.attr(attr);
|
||||||
cache = _updateAutoCache[prop];
|
cache = _updateAutoCache[attr];
|
||||||
|
|
||||||
|
if(checkCache(curr, cache)) {
|
||||||
|
changedAttrs.push(attr);
|
||||||
|
}
|
||||||
|
|
||||||
changed = changed || checkCache(curr, cache);
|
_updateAutoCache[attr] = curr;
|
||||||
|
|
||||||
_updateAutoCache[prop] = curr;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return changed;
|
updateViewportAttrsFromTarget(changedAttrs);
|
||||||
|
|
||||||
|
return changedAttrs[LEXICON.l] > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1969,6 +1970,26 @@
|
|||||||
|
|
||||||
//==== Update ====//
|
//==== Update ====//
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the attribute values of the viewport element to the values from the target element.
|
||||||
|
* The value of a attribute is only set if the attribute is whitelisted.
|
||||||
|
* @attrs attrs The array of attributes which shall be set or undefined if all whitelisted shall be set.
|
||||||
|
*/
|
||||||
|
function updateViewportAttrsFromTarget(attrs) {
|
||||||
|
attrs = attrs || _viewportAttrsFromTarget;
|
||||||
|
each(attrs, function (index, attr) {
|
||||||
|
if (COMPATIBILITY.inA(attr, _viewportAttrsFromTarget) > -1) {
|
||||||
|
var targetAttr = _targetElement.attr(attr);
|
||||||
|
if(type(targetAttr) == TYPES.s) {
|
||||||
|
_viewportElement.attr(attr, targetAttr);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
_viewportElement.removeAttr(attr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates the variables and size of the textarea element, and manages the scroll on new line or new character.
|
* Updates the variables and size of the textarea element, and manages the scroll on new line or new character.
|
||||||
*/
|
*/
|
||||||
@@ -2544,41 +2565,36 @@
|
|||||||
var strOverflowY = strOverflow + '-y';
|
var strOverflowY = strOverflow + '-y';
|
||||||
var strHidden = 'hidden';
|
var strHidden = 'hidden';
|
||||||
var strVisible = 'visible';
|
var strVisible = 'visible';
|
||||||
//decide whether the content overflow must get hidden for correct overflow measuring, it !MUST! be always hidden if the height is auto
|
|
||||||
var hideOverflow4CorrectMeasuring = _restrictedMeasuring ?
|
|
||||||
(_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y) || //it must be hidden if native scrollbars are overlaid
|
|
||||||
(_viewportSize.w < _nativeScrollbarMinSize.y || _viewportSize.h < _nativeScrollbarMinSize.x) || //it must be hidden if host-element is too small
|
|
||||||
heightAuto || displayIsHiddenChanged //it must be hidden if height is auto or display was changed
|
|
||||||
: heightAuto; //if there is not the restricted Measuring bug, it must be hidden if the height is auto
|
|
||||||
|
|
||||||
//Reset the viewport (very important for natively overlaid scrollbars and zoom change
|
//Reset the viewport (very important for natively overlaid scrollbars and zoom change
|
||||||
//don't change the overflow prop as it is very expensive and affects performance !A LOT!
|
//don't change the overflow prop as it is very expensive and affects performance !A LOT!
|
||||||
var viewportElementResetCSS = {};
|
if(!_nativeScrollbarStyling) {
|
||||||
var resetXTmp = _hasOverflowCache.y && _hideOverflowCache.ys && !ignoreOverlayScrollbarHiding && !_nativeScrollbarStyling ? (_nativeScrollbarIsOverlaid.y ? _viewportElement.css(isRTLLeft) : -_nativeScrollbarSize.y) : 0;
|
var viewportElementResetCSS = {};
|
||||||
var resetBottomTmp = _hasOverflowCache.x && _hideOverflowCache.xs && !ignoreOverlayScrollbarHiding && !_nativeScrollbarStyling ? (_nativeScrollbarIsOverlaid.x ? _viewportElement.css(_strBottom) : -_nativeScrollbarSize.x) : 0;
|
var resetXTmp = _hasOverflowCache.y && _hideOverflowCache.ys && !ignoreOverlayScrollbarHiding ? (_nativeScrollbarIsOverlaid.y ? _viewportElement.css(isRTLLeft) : -_nativeScrollbarSize.y) : 0;
|
||||||
setTopRightBottomLeft(viewportElementResetCSS, _strEmpty);
|
var resetBottomTmp = _hasOverflowCache.x && _hideOverflowCache.xs && !ignoreOverlayScrollbarHiding ? (_nativeScrollbarIsOverlaid.x ? _viewportElement.css(_strBottom) : -_nativeScrollbarSize.x) : 0;
|
||||||
_viewportElement.css(viewportElementResetCSS);
|
setTopRightBottomLeft(viewportElementResetCSS, _strEmpty);
|
||||||
if (hideOverflow4CorrectMeasuring)
|
_viewportElement.css(viewportElementResetCSS);
|
||||||
_contentElement.css(strOverflow, strHidden);
|
}
|
||||||
|
|
||||||
//measure several sizes:
|
//measure several sizes:
|
||||||
var contentMeasureElement = getContentMeasureElement();
|
var contentMeasureElement = getContentMeasureElement();
|
||||||
//in Firefox content element has to have overflow hidden, else element margins aren't calculated properly, this element prevents this bug, but only if scrollbars aren't overlaid
|
//in Firefox content element has to have overflow hidden, else element margins aren't calculated properly, this element prevents this bug, but only if scrollbars aren't overlaid
|
||||||
var contentMeasureElementGuaranty = _restrictedMeasuring && !hideOverflow4CorrectMeasuring ? _viewportElementNative : contentMeasureElement;
|
|
||||||
var contentSize = {
|
var contentSize = {
|
||||||
//use clientSize because natively overlaidScrollbars add borders
|
//use clientSize because natively overlaidScrollbars add borders
|
||||||
w: textareaDynOrigSize.w || contentMeasureElement[LEXICON.cW],
|
w: textareaDynOrigSize.w || contentMeasureElement[LEXICON.cW],
|
||||||
h: textareaDynOrigSize.h || contentMeasureElement[LEXICON.cH]
|
h: textareaDynOrigSize.h || contentMeasureElement[LEXICON.cH]
|
||||||
};
|
};
|
||||||
var scrollSize = {
|
var scrollSize = {
|
||||||
w: MATH.max(contentMeasureElement[LEXICON.sW], contentMeasureElementGuaranty[LEXICON.sW]),
|
w: contentMeasureElement[LEXICON.sW],
|
||||||
h: MATH.max(contentMeasureElement[LEXICON.sH], contentMeasureElementGuaranty[LEXICON.sH])
|
h: contentMeasureElement[LEXICON.sH]
|
||||||
};
|
};
|
||||||
|
|
||||||
//apply the correct viewport style and measure viewport size
|
//apply the correct viewport style and measure viewport size
|
||||||
viewportElementResetCSS[_strBottom] = wasHeightAuto ? _strEmpty : resetBottomTmp;
|
if(!_nativeScrollbarStyling) {
|
||||||
viewportElementResetCSS[isRTLLeft] = wasWidthAuto ? _strEmpty : resetXTmp;
|
viewportElementResetCSS[_strBottom] = wasHeightAuto ? _strEmpty : resetBottomTmp;
|
||||||
_viewportElement.css(viewportElementResetCSS);
|
viewportElementResetCSS[isRTLLeft] = wasWidthAuto ? _strEmpty : resetXTmp;
|
||||||
|
_viewportElement.css(viewportElementResetCSS);
|
||||||
|
}
|
||||||
_viewportSize = getViewportSize();
|
_viewportSize = getViewportSize();
|
||||||
|
|
||||||
//measure and correct several sizes
|
//measure and correct several sizes
|
||||||
@@ -2656,16 +2672,12 @@
|
|||||||
|
|
||||||
//measure again, but this time all correct sizes:
|
//measure again, but this time all correct sizes:
|
||||||
var contentScrollSize = {
|
var contentScrollSize = {
|
||||||
w: MATH.max(contentMeasureElement[LEXICON.sW], contentMeasureElementGuaranty[LEXICON.sW]),
|
w: contentMeasureElement[LEXICON.sW],
|
||||||
h: MATH.max(contentMeasureElement[LEXICON.sH], contentMeasureElementGuaranty[LEXICON.sH])
|
h: contentMeasureElement[LEXICON.sH],
|
||||||
};
|
};
|
||||||
contentScrollSize.c = contentSizeChanged = checkCacheAutoForce(contentScrollSize, _contentScrollSizeCache);
|
contentScrollSize.c = contentSizeChanged = checkCacheAutoForce(contentScrollSize, _contentScrollSizeCache);
|
||||||
_contentScrollSizeCache = contentScrollSize;
|
_contentScrollSizeCache = contentScrollSize;
|
||||||
|
|
||||||
//remove overflow hidden to restore overflow
|
|
||||||
if (hideOverflow4CorrectMeasuring)
|
|
||||||
_contentElement.css(strOverflow, _strEmpty);
|
|
||||||
|
|
||||||
//refresh viewport size after correct measuring
|
//refresh viewport size after correct measuring
|
||||||
_viewportSize = getViewportSize();
|
_viewportSize = getViewportSize();
|
||||||
|
|
||||||
@@ -3233,6 +3245,8 @@
|
|||||||
_paddingElementNative = _paddingElement[0];
|
_paddingElementNative = _paddingElement[0];
|
||||||
_viewportElementNative = _viewportElement[0];
|
_viewportElementNative = _viewportElement[0];
|
||||||
_contentElementNative = _contentElement[0];
|
_contentElementNative = _contentElement[0];
|
||||||
|
|
||||||
|
updateViewportAttrsFromTarget();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (_domExists && _initialized) {
|
if (_domExists && _initialized) {
|
||||||
@@ -4449,7 +4463,7 @@
|
|||||||
var doUpdateAuto;
|
var doUpdateAuto;
|
||||||
var mutHost;
|
var mutHost;
|
||||||
var mutContent;
|
var mutContent;
|
||||||
|
|
||||||
if (isString) {
|
if (isString) {
|
||||||
if (force === _strAuto) {
|
if (force === _strAuto) {
|
||||||
attrsChanged = meaningfulAttrsChanged();
|
attrsChanged = meaningfulAttrsChanged();
|
||||||
@@ -5331,7 +5345,7 @@
|
|||||||
initBodyScroll.t = MATH.max(_targetElement[_strScrollTop](), _htmlElement[_strScrollTop](), _windowElement[_strScrollTop]());
|
initBodyScroll.t = MATH.max(_targetElement[_strScrollTop](), _htmlElement[_strScrollTop](), _windowElement[_strScrollTop]());
|
||||||
|
|
||||||
bodyMouseTouchDownListener = function () {
|
bodyMouseTouchDownListener = function () {
|
||||||
_viewportElement.removeAttr('tabindex');
|
_viewportElement.removeAttr(LEXICON.ti);
|
||||||
setupResponsiveEventListener(_viewportElement, _strMouseTouchDownEvent, bodyMouseTouchDownListener, true, true);
|
setupResponsiveEventListener(_viewportElement, _strMouseTouchDownEvent, bodyMouseTouchDownListener, true, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5345,8 +5359,8 @@
|
|||||||
setupStructureEvents();
|
setupStructureEvents();
|
||||||
setupScrollbarEvents(true);
|
setupScrollbarEvents(true);
|
||||||
setupScrollbarEvents(false);
|
setupScrollbarEvents(false);
|
||||||
setupScrollbarCornerEvents();
|
setupScrollbarCornerEvents();
|
||||||
|
|
||||||
//create mutation observers
|
//create mutation observers
|
||||||
createMutationObservers();
|
createMutationObservers();
|
||||||
|
|
||||||
@@ -5360,7 +5374,7 @@
|
|||||||
//set the focus on the viewport element so you dont have to click on the page to use keyboard keys (up / down / space) for scrolling
|
//set the focus on the viewport element so you dont have to click on the page to use keyboard keys (up / down / space) for scrolling
|
||||||
if (document.activeElement == targetElement && _viewportElementNative.focus) {
|
if (document.activeElement == targetElement && _viewportElementNative.focus) {
|
||||||
//set a tabindex to make the viewportElement focusable
|
//set a tabindex to make the viewportElement focusable
|
||||||
_viewportElement.attr('tabindex', '-1');
|
_viewportElement.attr(LEXICON.ti, '-1');
|
||||||
_viewportElementNative.focus();
|
_viewportElementNative.focus();
|
||||||
|
|
||||||
/* the tabindex has to be removed due to;
|
/* the tabindex has to be removed due to;
|
||||||
|
|||||||
Vendored
+3
-3
File diff suppressed because one or more lines are too long
Generated
+19
-38
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "overlayscrollbars",
|
"name": "overlayscrollbars",
|
||||||
"version": "1.10.0",
|
"version": "1.11.0",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -524,9 +524,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"commander": {
|
"commander": {
|
||||||
"version": "2.20.0",
|
"version": "2.20.3",
|
||||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
|
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
|
||||||
"integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
|
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"component-emitter": {
|
"component-emitter": {
|
||||||
@@ -1085,8 +1085,7 @@
|
|||||||
"ansi-regex": {
|
"ansi-regex": {
|
||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"aproba": {
|
"aproba": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
@@ -1107,14 +1106,12 @@
|
|||||||
"balanced-match": {
|
"balanced-match": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"brace-expansion": {
|
"brace-expansion": {
|
||||||
"version": "1.1.11",
|
"version": "1.1.11",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"balanced-match": "^1.0.0",
|
"balanced-match": "^1.0.0",
|
||||||
"concat-map": "0.0.1"
|
"concat-map": "0.0.1"
|
||||||
@@ -1129,20 +1126,17 @@
|
|||||||
"code-point-at": {
|
"code-point-at": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"concat-map": {
|
"concat-map": {
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"console-control-strings": {
|
"console-control-strings": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"core-util-is": {
|
"core-util-is": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
@@ -1259,8 +1253,7 @@
|
|||||||
"inherits": {
|
"inherits": {
|
||||||
"version": "2.0.3",
|
"version": "2.0.3",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"ini": {
|
"ini": {
|
||||||
"version": "1.3.5",
|
"version": "1.3.5",
|
||||||
@@ -1272,7 +1265,6 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"number-is-nan": "^1.0.0"
|
"number-is-nan": "^1.0.0"
|
||||||
}
|
}
|
||||||
@@ -1287,7 +1279,6 @@
|
|||||||
"version": "3.0.4",
|
"version": "3.0.4",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"brace-expansion": "^1.1.7"
|
"brace-expansion": "^1.1.7"
|
||||||
}
|
}
|
||||||
@@ -1295,14 +1286,12 @@
|
|||||||
"minimist": {
|
"minimist": {
|
||||||
"version": "0.0.8",
|
"version": "0.0.8",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"minipass": {
|
"minipass": {
|
||||||
"version": "2.3.5",
|
"version": "2.3.5",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"safe-buffer": "^5.1.2",
|
"safe-buffer": "^5.1.2",
|
||||||
"yallist": "^3.0.0"
|
"yallist": "^3.0.0"
|
||||||
@@ -1321,7 +1310,6 @@
|
|||||||
"version": "0.5.1",
|
"version": "0.5.1",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"minimist": "0.0.8"
|
"minimist": "0.0.8"
|
||||||
}
|
}
|
||||||
@@ -1402,8 +1390,7 @@
|
|||||||
"number-is-nan": {
|
"number-is-nan": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"object-assign": {
|
"object-assign": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.1",
|
||||||
@@ -1415,7 +1402,6 @@
|
|||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"wrappy": "1"
|
"wrappy": "1"
|
||||||
}
|
}
|
||||||
@@ -1501,8 +1487,7 @@
|
|||||||
"safe-buffer": {
|
"safe-buffer": {
|
||||||
"version": "5.1.2",
|
"version": "5.1.2",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"safer-buffer": {
|
"safer-buffer": {
|
||||||
"version": "2.1.2",
|
"version": "2.1.2",
|
||||||
@@ -1538,7 +1523,6 @@
|
|||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"code-point-at": "^1.0.0",
|
"code-point-at": "^1.0.0",
|
||||||
"is-fullwidth-code-point": "^1.0.0",
|
"is-fullwidth-code-point": "^1.0.0",
|
||||||
@@ -1558,7 +1542,6 @@
|
|||||||
"version": "3.0.1",
|
"version": "3.0.1",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"ansi-regex": "^2.0.0"
|
"ansi-regex": "^2.0.0"
|
||||||
}
|
}
|
||||||
@@ -1602,14 +1585,12 @@
|
|||||||
"wrappy": {
|
"wrappy": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"yallist": {
|
"yallist": {
|
||||||
"version": "3.0.3",
|
"version": "3.0.3",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -3264,12 +3245,12 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"uglify-js": {
|
"uglify-js": {
|
||||||
"version": "3.6.0",
|
"version": "3.8.0",
|
||||||
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.8.0.tgz",
|
||||||
"integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==",
|
"integrity": "sha512-ugNSTT8ierCsDHso2jkBHXYrU8Y5/fY2ZUprfrJUiD7YpuFvV4jODLFmb3h4btQjqr5Nh4TX4XtgDfCU1WdioQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"commander": "~2.20.0",
|
"commander": "~2.20.3",
|
||||||
"source-map": "~0.6.1"
|
"source-map": "~0.6.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "overlayscrollbars",
|
"name": "overlayscrollbars",
|
||||||
"version": "1.10.3",
|
"version": "1.11.0",
|
||||||
"description": "A javascript scrollbar plugin which hides native scrollbars, provides custom styleable overlay scrollbars and keeps the native functionality and feeling.",
|
"description": "A javascript scrollbar plugin which hides native scrollbars, provides custom styleable overlay scrollbars and keeps the native functionality and feeling.",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"overlayscrollbars",
|
"overlayscrollbars",
|
||||||
@@ -40,6 +40,6 @@
|
|||||||
"csso": "^3.5.1",
|
"csso": "^3.5.1",
|
||||||
"gulp": "^4.0.2",
|
"gulp": "^4.0.2",
|
||||||
"shelljs": "^0.8.3",
|
"shelljs": "^0.8.3",
|
||||||
"uglify-js": "^3.6.0"
|
"uglify-js": "^3.8.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user