mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Merge pull request #1774 from MrTimscampi/another-es6
Migrate navdrawer and scroller to ES6
This commit is contained in:
commit
016ac959ed
6 changed files with 1162 additions and 1198 deletions
|
@ -2,4 +2,3 @@ node_modules
|
||||||
dist
|
dist
|
||||||
.idea
|
.idea
|
||||||
.vscode
|
.vscode
|
||||||
src/libraries
|
|
||||||
|
|
|
@ -275,6 +275,8 @@
|
||||||
"src/elements/emby-tabs/emby-tabs.js",
|
"src/elements/emby-tabs/emby-tabs.js",
|
||||||
"src/elements/emby-textarea/emby-textarea.js",
|
"src/elements/emby-textarea/emby-textarea.js",
|
||||||
"src/elements/emby-toggle/emby-toggle.js",
|
"src/elements/emby-toggle/emby-toggle.js",
|
||||||
|
"src/libraries/navdrawer/navdrawer.js",
|
||||||
|
"src/libraries/scroller.js",
|
||||||
"src/plugins/backdropScreensaver/plugin.js",
|
"src/plugins/backdropScreensaver/plugin.js",
|
||||||
"src/plugins/bookPlayer/plugin.js",
|
"src/plugins/bookPlayer/plugin.js",
|
||||||
"src/plugins/bookPlayer/tableOfContents.js",
|
"src/plugins/bookPlayer/tableOfContents.js",
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager', 'cardBuilder', 'loading', 'connectionManager', 'alphaNumericShortcuts', 'scroller', 'playbackManager', 'alphaPicker', 'emby-itemscontainer', 'emby-scroller'], function (globalize, listView, layoutManager, userSettings, focusManager, cardBuilder, loading, connectionManager, AlphaNumericShortcuts, scroller, playbackManager, AlphaPicker) {
|
define(['globalize', 'listView', 'layoutManager', 'userSettings', 'focusManager', 'cardBuilder', 'loading', 'connectionManager', 'alphaNumericShortcuts', 'playbackManager', 'alphaPicker', 'emby-itemscontainer', 'emby-scroller'], function (globalize, listView, layoutManager, userSettings, focusManager, cardBuilder, loading, connectionManager, AlphaNumericShortcuts, playbackManager, AlphaPicker) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
playbackManager = playbackManager.default || playbackManager;
|
playbackManager = playbackManager.default || playbackManager;
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser, dom) {
|
/* Cleaning this file properly is not neecessary, since it's an outdated library
|
||||||
"use strict";
|
* and will be replaced soon by a Vue component.
|
||||||
|
*/
|
||||||
|
|
||||||
browser = browser.default || browser;
|
import browser from 'browser';
|
||||||
|
import dom from 'dom';
|
||||||
|
import 'css!./navdrawer';
|
||||||
|
import 'scrollStyles';
|
||||||
|
|
||||||
return function (options) {
|
export default function (options) {
|
||||||
function getTouches(e) {
|
function getTouches(e) {
|
||||||
return e.changedTouches || e.targetTouches || e.touches;
|
return e.changedTouches || e.targetTouches || e.touches;
|
||||||
}
|
}
|
||||||
|
|
||||||
function onMenuTouchStart(e) {
|
function onMenuTouchStart(e) {
|
||||||
options.target.classList.remove("transition");
|
options.target.classList.remove('transition');
|
||||||
var touches = getTouches(e);
|
var touches = getTouches(e);
|
||||||
var touch = touches[0] || {};
|
var touch = touches[0] || {};
|
||||||
menuTouchStartX = touch.clientX;
|
menuTouchStartX = touch.clientX;
|
||||||
|
@ -32,27 +36,27 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
||||||
var deltaY = endY - (menuTouchStartY || 0);
|
var deltaY = endY - (menuTouchStartY || 0);
|
||||||
setVelocity(deltaX);
|
setVelocity(deltaX);
|
||||||
|
|
||||||
if (isOpen && 1 !== dragMode && deltaX > 0) {
|
if (isOpen && dragMode !== 1 && deltaX > 0) {
|
||||||
dragMode = 2;
|
dragMode = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (0 === dragMode && (!isOpen || Math.abs(deltaX) >= 10) && Math.abs(deltaY) < 5) {
|
if (dragMode === 0 && (!isOpen || Math.abs(deltaX) >= 10) && Math.abs(deltaY) < 5) {
|
||||||
dragMode = 1;
|
dragMode = 1;
|
||||||
scrollContainer.addEventListener("scroll", disableEvent);
|
scrollContainer.addEventListener('scroll', disableEvent);
|
||||||
self.showMask();
|
self.showMask();
|
||||||
} else if (0 === dragMode && Math.abs(deltaY) >= 5) {
|
} else if (dragMode === 0 && Math.abs(deltaY) >= 5) {
|
||||||
dragMode = 2;
|
dragMode = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (1 === dragMode) {
|
if (dragMode === 1) {
|
||||||
newPos = currentPos + deltaX;
|
newPos = currentPos + deltaX;
|
||||||
self.changeMenuPos();
|
self.changeMenuPos();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function onMenuTouchEnd(e) {
|
function onMenuTouchEnd(e) {
|
||||||
options.target.classList.add("transition");
|
options.target.classList.add('transition');
|
||||||
scrollContainer.removeEventListener("scroll", disableEvent);
|
scrollContainer.removeEventListener('scroll', disableEvent);
|
||||||
dragMode = 0;
|
dragMode = 0;
|
||||||
var touches = getTouches(e);
|
var touches = getTouches(e);
|
||||||
var touch = touches[0] || {};
|
var touch = touches[0] || {};
|
||||||
|
@ -71,9 +75,9 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
||||||
if (((getTouches(e)[0] || {}).clientX || 0) <= options.handleSize) {
|
if (((getTouches(e)[0] || {}).clientX || 0) <= options.handleSize) {
|
||||||
isPeeking = true;
|
isPeeking = true;
|
||||||
|
|
||||||
if (e.type === "touchstart") {
|
if (e.type === 'touchstart') {
|
||||||
dom.removeEventListener(edgeContainer, "touchmove", onEdgeTouchMove, {});
|
dom.removeEventListener(edgeContainer, 'touchmove', onEdgeTouchMove, {});
|
||||||
dom.addEventListener(edgeContainer, "touchmove", onEdgeTouchMove, {});
|
dom.addEventListener(edgeContainer, 'touchmove', onEdgeTouchMove, {});
|
||||||
}
|
}
|
||||||
|
|
||||||
onMenuTouchStart(e);
|
onMenuTouchStart(e);
|
||||||
|
@ -90,7 +94,7 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
||||||
function onEdgeTouchEnd(e) {
|
function onEdgeTouchEnd(e) {
|
||||||
if (isPeeking) {
|
if (isPeeking) {
|
||||||
isPeeking = false;
|
isPeeking = false;
|
||||||
dom.removeEventListener(edgeContainer, "touchmove", onEdgeTouchMove, {});
|
dom.removeEventListener(edgeContainer, 'touchmove', onEdgeTouchMove, {});
|
||||||
onMenuTouchEnd(e);
|
onMenuTouchEnd(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -144,8 +148,8 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
||||||
function onMaskTransitionEnd() {
|
function onMaskTransitionEnd() {
|
||||||
var classList = mask.classList;
|
var classList = mask.classList;
|
||||||
|
|
||||||
if (!classList.contains("backdrop")) {
|
if (!classList.contains('backdrop')) {
|
||||||
classList.add("hide");
|
classList.add('hide');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -157,10 +161,10 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
||||||
var startPoint = 0;
|
var startPoint = 0;
|
||||||
var countStart = 0;
|
var countStart = 0;
|
||||||
var velocity = 0;
|
var velocity = 0;
|
||||||
options.target.classList.add("transition");
|
options.target.classList.add('transition');
|
||||||
var dragMode = 0;
|
var dragMode = 0;
|
||||||
var scrollContainer = options.target.querySelector(".mainDrawer-scrollContainer");
|
var scrollContainer = options.target.querySelector('.mainDrawer-scrollContainer');
|
||||||
scrollContainer.classList.add("scrollY");
|
scrollContainer.classList.add('scrollY');
|
||||||
|
|
||||||
var TouchMenuLA = function () {
|
var TouchMenuLA = function () {
|
||||||
self = this;
|
self = this;
|
||||||
|
@ -175,13 +179,13 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
||||||
};
|
};
|
||||||
|
|
||||||
TouchMenuLA.prototype.initElements = function () {
|
TouchMenuLA.prototype.initElements = function () {
|
||||||
options.target.classList.add("touch-menu-la");
|
options.target.classList.add('touch-menu-la');
|
||||||
options.target.style.width = options.width + "px";
|
options.target.style.width = options.width + 'px';
|
||||||
options.target.style.left = -options.width + "px";
|
options.target.style.left = -options.width + 'px';
|
||||||
|
|
||||||
if (!options.disableMask) {
|
if (!options.disableMask) {
|
||||||
mask = document.createElement("div");
|
mask = document.createElement('div');
|
||||||
mask.className = "tmla-mask hide";
|
mask.className = 'tmla-mask hide';
|
||||||
document.body.appendChild(mask);
|
document.body.appendChild(mask);
|
||||||
dom.addEventListener(mask, dom.whichTransitionEvent(), onMaskTransitionEnd, {
|
dom.addEventListener(mask, dom.whichTransitionEvent(), onMaskTransitionEnd, {
|
||||||
passive: true
|
passive: true
|
||||||
|
@ -192,12 +196,12 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
||||||
var menuTouchStartX;
|
var menuTouchStartX;
|
||||||
var menuTouchStartY;
|
var menuTouchStartY;
|
||||||
var menuTouchStartTime;
|
var menuTouchStartTime;
|
||||||
var edgeContainer = document.querySelector(".mainDrawerHandle");
|
var edgeContainer = document.querySelector('.mainDrawerHandle');
|
||||||
var isPeeking = false;
|
var isPeeking = false;
|
||||||
|
|
||||||
TouchMenuLA.prototype.animateToPosition = function (pos) {
|
TouchMenuLA.prototype.animateToPosition = function (pos) {
|
||||||
requestAnimationFrame(function () {
|
requestAnimationFrame(function () {
|
||||||
options.target.style.transform = pos ? "translateX(" + pos + "px)" : "none";
|
options.target.style.transform = pos ? 'translateX(' + pos + 'px)' : 'none';
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -208,7 +212,7 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
||||||
};
|
};
|
||||||
|
|
||||||
TouchMenuLA.prototype.clickMaskClose = function () {
|
TouchMenuLA.prototype.clickMaskClose = function () {
|
||||||
mask.addEventListener("click", function () {
|
mask.addEventListener('click', function () {
|
||||||
self.close();
|
self.close();
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -235,7 +239,7 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
||||||
this.animateToPosition(options.width);
|
this.animateToPosition(options.width);
|
||||||
currentPos = options.width;
|
currentPos = options.width;
|
||||||
this.isVisible = true;
|
this.isVisible = true;
|
||||||
options.target.classList.add("drawer-open");
|
options.target.classList.add('drawer-open');
|
||||||
self.showMask();
|
self.showMask();
|
||||||
self.invoke(options.onChange);
|
self.invoke(options.onChange);
|
||||||
};
|
};
|
||||||
|
@ -244,7 +248,7 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
||||||
this.animateToPosition(0);
|
this.animateToPosition(0);
|
||||||
currentPos = 0;
|
currentPos = 0;
|
||||||
self.isVisible = false;
|
self.isVisible = false;
|
||||||
options.target.classList.remove("drawer-open");
|
options.target.classList.remove('drawer-open');
|
||||||
self.hideMask();
|
self.hideMask();
|
||||||
self.invoke(options.onChange);
|
self.invoke(options.onChange);
|
||||||
};
|
};
|
||||||
|
@ -261,13 +265,13 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
||||||
var backgroundTouchStartTime;
|
var backgroundTouchStartTime;
|
||||||
|
|
||||||
TouchMenuLA.prototype.showMask = function () {
|
TouchMenuLA.prototype.showMask = function () {
|
||||||
mask.classList.remove("hide");
|
mask.classList.remove('hide');
|
||||||
mask.classList.add("backdrop");
|
mask.classList.add('backdrop');
|
||||||
};
|
};
|
||||||
|
|
||||||
TouchMenuLA.prototype.hideMask = function () {
|
TouchMenuLA.prototype.hideMask = function () {
|
||||||
mask.classList.add("hide");
|
mask.classList.add('hide');
|
||||||
mask.classList.remove("backdrop");
|
mask.classList.remove('backdrop');
|
||||||
};
|
};
|
||||||
|
|
||||||
TouchMenuLA.prototype.invoke = function (fn) {
|
TouchMenuLA.prototype.invoke = function (fn) {
|
||||||
|
@ -284,26 +288,26 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
if (!_edgeSwipeEnabled) {
|
if (!_edgeSwipeEnabled) {
|
||||||
_edgeSwipeEnabled = true;
|
_edgeSwipeEnabled = true;
|
||||||
dom.addEventListener(edgeContainer, "touchstart", onEdgeTouchStart, {
|
dom.addEventListener(edgeContainer, 'touchstart', onEdgeTouchStart, {
|
||||||
passive: true
|
passive: true
|
||||||
});
|
});
|
||||||
dom.addEventListener(edgeContainer, "touchend", onEdgeTouchEnd, {
|
dom.addEventListener(edgeContainer, 'touchend', onEdgeTouchEnd, {
|
||||||
passive: true
|
passive: true
|
||||||
});
|
});
|
||||||
dom.addEventListener(edgeContainer, "touchcancel", onEdgeTouchEnd, {
|
dom.addEventListener(edgeContainer, 'touchcancel', onEdgeTouchEnd, {
|
||||||
passive: true
|
passive: true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (_edgeSwipeEnabled) {
|
if (_edgeSwipeEnabled) {
|
||||||
_edgeSwipeEnabled = false;
|
_edgeSwipeEnabled = false;
|
||||||
dom.removeEventListener(edgeContainer, "touchstart", onEdgeTouchStart, {
|
dom.removeEventListener(edgeContainer, 'touchstart', onEdgeTouchStart, {
|
||||||
passive: true
|
passive: true
|
||||||
});
|
});
|
||||||
dom.removeEventListener(edgeContainer, "touchend", onEdgeTouchEnd, {
|
dom.removeEventListener(edgeContainer, 'touchend', onEdgeTouchEnd, {
|
||||||
passive: true
|
passive: true
|
||||||
});
|
});
|
||||||
dom.removeEventListener(edgeContainer, "touchcancel", onEdgeTouchEnd, {
|
dom.removeEventListener(edgeContainer, 'touchcancel', onEdgeTouchEnd, {
|
||||||
passive: true
|
passive: true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -322,26 +326,26 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
||||||
self.initElements();
|
self.initElements();
|
||||||
|
|
||||||
if (browser.touch) {
|
if (browser.touch) {
|
||||||
dom.addEventListener(options.target, "touchstart", onMenuTouchStart, {
|
dom.addEventListener(options.target, 'touchstart', onMenuTouchStart, {
|
||||||
passive: true
|
passive: true
|
||||||
});
|
});
|
||||||
dom.addEventListener(options.target, "touchmove", onMenuTouchMove, {
|
dom.addEventListener(options.target, 'touchmove', onMenuTouchMove, {
|
||||||
passive: true
|
passive: true
|
||||||
});
|
});
|
||||||
dom.addEventListener(options.target, "touchend", onMenuTouchEnd, {
|
dom.addEventListener(options.target, 'touchend', onMenuTouchEnd, {
|
||||||
passive: true
|
passive: true
|
||||||
});
|
});
|
||||||
dom.addEventListener(options.target, "touchcancel", onMenuTouchEnd, {
|
dom.addEventListener(options.target, 'touchcancel', onMenuTouchEnd, {
|
||||||
passive: true
|
passive: true
|
||||||
});
|
});
|
||||||
dom.addEventListener(mask, "touchstart", onBackgroundTouchStart, {
|
dom.addEventListener(mask, 'touchstart', onBackgroundTouchStart, {
|
||||||
passive: true
|
passive: true
|
||||||
});
|
});
|
||||||
dom.addEventListener(mask, "touchmove", onBackgroundTouchMove, {});
|
dom.addEventListener(mask, 'touchmove', onBackgroundTouchMove, {});
|
||||||
dom.addEventListener(mask, "touchend", onBackgroundTouchEnd, {
|
dom.addEventListener(mask, 'touchend', onBackgroundTouchEnd, {
|
||||||
passive: true
|
passive: true
|
||||||
});
|
});
|
||||||
dom.addEventListener(mask, "touchcancel", onBackgroundTouchEnd, {
|
dom.addEventListener(mask, 'touchcancel', onBackgroundTouchEnd, {
|
||||||
passive: true
|
passive: true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -350,5 +354,4 @@ define(["browser", "dom", "css!./navdrawer", "scrollStyles"], function (browser,
|
||||||
};
|
};
|
||||||
|
|
||||||
return new TouchMenuLA();
|
return new TouchMenuLA();
|
||||||
};
|
}
|
||||||
});
|
|
||||||
|
|
|
@ -1,17 +1,22 @@
|
||||||
define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'scrollStyles'], function (browser, layoutManager, dom, focusManager, ResizeObserver) {
|
/* Cleaning this file properly is not neecessary, since it's an outdated library
|
||||||
'use strict';
|
* and will be replaced soon by a Vue component.
|
||||||
|
*/
|
||||||
|
|
||||||
browser = browser.default || browser;
|
import browser from 'browser';
|
||||||
focusManager = focusManager.default || focusManager;
|
import layoutManager from 'layoutManager';
|
||||||
|
import dom from 'dom';
|
||||||
|
import focusManager from 'focusManager';
|
||||||
|
import ResizeObserver from 'ResizeObserver';
|
||||||
|
import 'scrollStyles';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return type of the value.
|
* Return type of the value.
|
||||||
*
|
*
|
||||||
* @param {Mixed} value
|
* @param {Mixed} value
|
||||||
*
|
*
|
||||||
* @return {String}
|
* @return {String}
|
||||||
*/
|
*/
|
||||||
function type(value) {
|
function type(value) {
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
return String(value);
|
return String(value);
|
||||||
}
|
}
|
||||||
|
@ -21,23 +26,23 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
}
|
}
|
||||||
|
|
||||||
return typeof value;
|
return typeof value;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Disables an event it was triggered on and unbinds itself.
|
* Disables an event it was triggered on and unbinds itself.
|
||||||
*
|
*
|
||||||
* @param {Event} event
|
* @param {Event} event
|
||||||
*
|
*
|
||||||
* @return {Void}
|
* @return {Void}
|
||||||
*/
|
*/
|
||||||
function disableOneEvent(event) {
|
function disableOneEvent(event) {
|
||||||
/*jshint validthis:true */
|
/*jshint validthis:true */
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
this.removeEventListener(event.type, disableOneEvent);
|
this.removeEventListener(event.type, disableOneEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Make sure that number is within the limits.
|
* Make sure that number is within the limits.
|
||||||
*
|
*
|
||||||
* @param {Number} number
|
* @param {Number} number
|
||||||
|
@ -46,28 +51,17 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
*
|
*
|
||||||
* @return {Number}
|
* @return {Number}
|
||||||
*/
|
*/
|
||||||
function within(number, min, max) {
|
function within(number, min, max) {
|
||||||
return number < min ? min : number > max ? max : number;
|
return number < min ? min : number > max ? max : number;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Other global values
|
// Other global values
|
||||||
var dragMouseEvents = ['mousemove', 'mouseup'];
|
var dragMouseEvents = ['mousemove', 'mouseup'];
|
||||||
var dragTouchEvents = ['touchmove', 'touchend'];
|
var dragTouchEvents = ['touchmove', 'touchend'];
|
||||||
var wheelEvent = (document.implementation.hasFeature('Event.wheel', '3.0') ? 'wheel' : 'mousewheel');
|
var wheelEvent = (document.implementation.hasFeature('Event.wheel', '3.0') ? 'wheel' : 'mousewheel');
|
||||||
var interactiveElements = ['INPUT', 'SELECT', 'TEXTAREA'];
|
var interactiveElements = ['INPUT', 'SELECT', 'TEXTAREA'];
|
||||||
var tmpArray = [];
|
|
||||||
var time;
|
|
||||||
|
|
||||||
// Math shorthands
|
|
||||||
var abs = Math.abs;
|
|
||||||
var sqrt = Math.sqrt;
|
|
||||||
var pow = Math.pow;
|
|
||||||
var round = Math.round;
|
|
||||||
var max = Math.max;
|
|
||||||
var min = Math.min;
|
|
||||||
|
|
||||||
var scrollerFactory = function (frame, options) {
|
|
||||||
|
|
||||||
|
var scrollerFactory = function (frame, options) {
|
||||||
// Extend options
|
// Extend options
|
||||||
var o = Object.assign({}, {
|
var o = Object.assign({}, {
|
||||||
slidee: null, // Selector, DOM element, or jQuery object with DOM element representing SLIDEE.
|
slidee: null, // Selector, DOM element, or jQuery object with DOM element representing SLIDEE.
|
||||||
|
@ -100,11 +94,9 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
// native smooth scroll
|
// native smooth scroll
|
||||||
options.enableNativeScroll = true;
|
options.enableNativeScroll = true;
|
||||||
} else if (options.requireAnimation && (browser.animate || browser.supportsCssAnimation())) {
|
} else if (options.requireAnimation && (browser.animate || browser.supportsCssAnimation())) {
|
||||||
|
|
||||||
// transform is the only way to guarantee animation
|
// transform is the only way to guarantee animation
|
||||||
options.enableNativeScroll = false;
|
options.enableNativeScroll = false;
|
||||||
} else if (!layoutManager.tv || !browser.animate) {
|
} else if (!layoutManager.tv || !browser.animate) {
|
||||||
|
|
||||||
options.enableNativeScroll = true;
|
options.enableNativeScroll = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -165,9 +157,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
var frameSize = 0;
|
var frameSize = 0;
|
||||||
var slideeSize = 0;
|
var slideeSize = 0;
|
||||||
function ensureSizeInfo() {
|
function ensureSizeInfo() {
|
||||||
|
|
||||||
if (requiresReflow) {
|
if (requiresReflow) {
|
||||||
|
|
||||||
requiresReflow = false;
|
requiresReflow = false;
|
||||||
|
|
||||||
// Reset global variables
|
// Reset global variables
|
||||||
|
@ -176,7 +166,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
slideeSize = o.scrollWidth || Math.max(slideeElement[o.horizontal ? 'offsetWidth' : 'offsetHeight'], slideeElement[o.horizontal ? 'scrollWidth' : 'scrollHeight']);
|
slideeSize = o.scrollWidth || Math.max(slideeElement[o.horizontal ? 'offsetWidth' : 'offsetHeight'], slideeElement[o.horizontal ? 'scrollWidth' : 'scrollHeight']);
|
||||||
|
|
||||||
// Set position limits & relativess
|
// Set position limits & relativess
|
||||||
self._pos.end = max(slideeSize - frameSize, 0);
|
self._pos.end = Math.max(slideeSize - frameSize, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,11 +179,9 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
* @return {Void}
|
* @return {Void}
|
||||||
*/
|
*/
|
||||||
function load(isInit) {
|
function load(isInit) {
|
||||||
|
|
||||||
requiresReflow = true;
|
requiresReflow = true;
|
||||||
|
|
||||||
if (!isInit) {
|
if (!isInit) {
|
||||||
|
|
||||||
ensureSizeInfo();
|
ensureSizeInfo();
|
||||||
|
|
||||||
// Fix possible overflowing
|
// Fix possible overflowing
|
||||||
|
@ -203,7 +191,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
}
|
}
|
||||||
|
|
||||||
function initFrameResizeObserver() {
|
function initFrameResizeObserver() {
|
||||||
|
|
||||||
var observerOptions = {};
|
var observerOptions = {};
|
||||||
|
|
||||||
self.frameResizeObserver = new ResizeObserver(onResize, observerOptions);
|
self.frameResizeObserver = new ResizeObserver(onResize, observerOptions);
|
||||||
|
@ -228,16 +215,13 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
};
|
};
|
||||||
|
|
||||||
function nativeScrollTo(container, pos, immediate) {
|
function nativeScrollTo(container, pos, immediate) {
|
||||||
|
|
||||||
if (container.scroll) {
|
if (container.scroll) {
|
||||||
if (o.horizontal) {
|
if (o.horizontal) {
|
||||||
|
|
||||||
container.scroll({
|
container.scroll({
|
||||||
left: pos,
|
left: pos,
|
||||||
behavior: immediate ? 'instant' : 'smooth'
|
behavior: immediate ? 'instant' : 'smooth'
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
container.scroll({
|
container.scroll({
|
||||||
top: pos,
|
top: pos,
|
||||||
behavior: immediate ? 'instant' : 'smooth'
|
behavior: immediate ? 'instant' : 'smooth'
|
||||||
|
@ -269,14 +253,12 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
* @return {Void}
|
* @return {Void}
|
||||||
*/
|
*/
|
||||||
self.slideTo = function (newPos, immediate, fullItemPos) {
|
self.slideTo = function (newPos, immediate, fullItemPos) {
|
||||||
|
|
||||||
ensureSizeInfo();
|
ensureSizeInfo();
|
||||||
var pos = self._pos;
|
var pos = self._pos;
|
||||||
|
|
||||||
newPos = within(newPos, pos.start, pos.end);
|
newPos = within(newPos, pos.start, pos.end);
|
||||||
|
|
||||||
if (!transform) {
|
if (!transform) {
|
||||||
|
|
||||||
nativeScrollTo(nativeScrollElement, newPos, immediate);
|
nativeScrollTo(nativeScrollElement, newPos, immediate);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -294,7 +276,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!immediate && o.skipSlideToWhenVisible && fullItemPos && fullItemPos.isVisible) {
|
if (!immediate && o.skipSlideToWhenVisible && fullItemPos && fullItemPos.isVisible) {
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -306,7 +287,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
};
|
};
|
||||||
|
|
||||||
function setStyleProperty(elem, name, value, speed, resetTransition) {
|
function setStyleProperty(elem, name, value, speed, resetTransition) {
|
||||||
|
|
||||||
var style = elem.style;
|
var style = elem.style;
|
||||||
|
|
||||||
if (resetTransition || browser.edge) {
|
if (resetTransition || browser.edge) {
|
||||||
|
@ -328,7 +308,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderAnimateWithTransform(fromPosition, toPosition, immediate) {
|
function renderAnimateWithTransform(fromPosition, toPosition, immediate) {
|
||||||
|
|
||||||
var speed = o.speed;
|
var speed = o.speed;
|
||||||
|
|
||||||
if (immediate) {
|
if (immediate) {
|
||||||
|
@ -336,9 +315,9 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
}
|
}
|
||||||
|
|
||||||
if (o.horizontal) {
|
if (o.horizontal) {
|
||||||
setStyleProperty(slideeElement, 'transform', 'translateX(' + (-round(toPosition)) + 'px)', speed);
|
setStyleProperty(slideeElement, 'transform', 'translateX(' + (-Math.round(toPosition)) + 'px)', speed);
|
||||||
} else {
|
} else {
|
||||||
setStyleProperty(slideeElement, 'transform', 'translateY(' + (-round(toPosition)) + 'px)', speed);
|
setStyleProperty(slideeElement, 'transform', 'translateY(' + (-Math.round(toPosition)) + 'px)', speed);
|
||||||
}
|
}
|
||||||
self._pos.cur = toPosition;
|
self._pos.cur = toPosition;
|
||||||
|
|
||||||
|
@ -346,7 +325,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
}
|
}
|
||||||
|
|
||||||
function getBoundingClientRect(elem) {
|
function getBoundingClientRect(elem) {
|
||||||
|
|
||||||
// Support: BlackBerry 5, iOS 3 (original iPhone)
|
// Support: BlackBerry 5, iOS 3 (original iPhone)
|
||||||
// If we don't have gBCR, just use 0,0 rather than error
|
// If we don't have gBCR, just use 0,0 rather than error
|
||||||
if (elem.getBoundingClientRect) {
|
if (elem.getBoundingClientRect) {
|
||||||
|
@ -364,14 +342,10 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
* @return {Object}
|
* @return {Object}
|
||||||
*/
|
*/
|
||||||
self.getPos = function (item) {
|
self.getPos = function (item) {
|
||||||
|
|
||||||
var scrollElement = transform ? slideeElement : nativeScrollElement;
|
var scrollElement = transform ? slideeElement : nativeScrollElement;
|
||||||
var slideeOffset = getBoundingClientRect(scrollElement);
|
var slideeOffset = getBoundingClientRect(scrollElement);
|
||||||
var itemOffset = getBoundingClientRect(item);
|
var itemOffset = getBoundingClientRect(item);
|
||||||
|
|
||||||
var slideeStartPos = o.horizontal ? slideeOffset.left : slideeOffset.top;
|
|
||||||
var slideeEndPos = o.horizontal ? slideeOffset.right : slideeOffset.bottom;
|
|
||||||
|
|
||||||
var offset = o.horizontal ? itemOffset.left - slideeOffset.left : itemOffset.top - slideeOffset.top;
|
var offset = o.horizontal ? itemOffset.left - slideeOffset.left : itemOffset.top - slideeOffset.top;
|
||||||
|
|
||||||
var size = o.horizontal ? itemOffset.width : itemOffset.height;
|
var size = o.horizontal ? itemOffset.width : itemOffset.height;
|
||||||
|
@ -408,7 +382,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
};
|
};
|
||||||
|
|
||||||
self.getCenterPosition = function (item) {
|
self.getCenterPosition = function (item) {
|
||||||
|
|
||||||
ensureSizeInfo();
|
ensureSizeInfo();
|
||||||
|
|
||||||
var pos = self.getPos(item);
|
var pos = self.getPos(item);
|
||||||
|
@ -453,7 +426,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
|
|
||||||
// Bind dragging events
|
// Bind dragging events
|
||||||
if (transform) {
|
if (transform) {
|
||||||
|
|
||||||
if (isTouch) {
|
if (isTouch) {
|
||||||
dragTouchEvents.forEach(function (eventName) {
|
dragTouchEvents.forEach(function (eventName) {
|
||||||
dom.addEventListener(document, eventName, dragHandler, {
|
dom.addEventListener(document, eventName, dragHandler, {
|
||||||
|
@ -482,7 +454,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
var pointer = dragging.touch ? event[dragging.released ? 'changedTouches' : 'touches'][0] : event;
|
var pointer = dragging.touch ? event[dragging.released ? 'changedTouches' : 'touches'][0] : event;
|
||||||
dragging.pathX = pointer.pageX - dragging.initX;
|
dragging.pathX = pointer.pageX - dragging.initX;
|
||||||
dragging.pathY = pointer.pageY - dragging.initY;
|
dragging.pathY = pointer.pageY - dragging.initY;
|
||||||
dragging.path = sqrt(pow(dragging.pathX, 2) + pow(dragging.pathY, 2));
|
dragging.path = Math.sqrt(Math.pow(dragging.pathX, 2) + Math.pow(dragging.pathY, 2));
|
||||||
dragging.delta = o.horizontal ? dragging.pathX : dragging.pathY;
|
dragging.delta = o.horizontal ? dragging.pathX : dragging.pathY;
|
||||||
|
|
||||||
if (!dragging.released && dragging.path < 1) {
|
if (!dragging.released && dragging.path < 1) {
|
||||||
|
@ -499,7 +471,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
} else {
|
} else {
|
||||||
// If dragging path is sufficiently long we can confidently start a drag
|
// If dragging path is sufficiently long we can confidently start a drag
|
||||||
// if drag is in different direction than scroll, ignore it
|
// if drag is in different direction than scroll, ignore it
|
||||||
if (o.horizontal ? abs(dragging.pathX) > abs(dragging.pathY) : abs(dragging.pathX) < abs(dragging.pathY)) {
|
if (o.horizontal ? Math.abs(dragging.pathX) > Math.abs(dragging.pathY) : Math.abs(dragging.pathX) < Math.abs(dragging.pathY)) {
|
||||||
dragging.init = 1;
|
dragging.init = 1;
|
||||||
} else {
|
} else {
|
||||||
return dragEnd();
|
return dragEnd();
|
||||||
|
@ -520,7 +492,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
dragEnd();
|
dragEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
self.slideTo(round(dragging.initPos - dragging.delta));
|
self.slideTo(Math.round(dragging.initPos - dragging.delta));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -557,9 +529,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
* @return {Boolean}
|
* @return {Boolean}
|
||||||
*/
|
*/
|
||||||
function isInteractive(element) {
|
function isInteractive(element) {
|
||||||
|
|
||||||
while (element) {
|
while (element) {
|
||||||
|
|
||||||
if (interactiveElements.indexOf(element.tagName) !== -1) {
|
if (interactiveElements.indexOf(element.tagName) !== -1) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -595,7 +565,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
* @return {Void}
|
* @return {Void}
|
||||||
*/
|
*/
|
||||||
function scrollHandler(event) {
|
function scrollHandler(event) {
|
||||||
|
|
||||||
ensureSizeInfo();
|
ensureSizeInfo();
|
||||||
var pos = self._pos;
|
var pos = self._pos;
|
||||||
// Ignore if there is no scrolling to be done
|
// Ignore if there is no scrolling to be done
|
||||||
|
@ -612,7 +581,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
|
|
||||||
self.slideBy(o.scrollBy * delta);
|
self.slideBy(o.scrollBy * delta);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
if (isSmoothScrollSupported) {
|
if (isSmoothScrollSupported) {
|
||||||
delta *= 12;
|
delta *= 12;
|
||||||
}
|
}
|
||||||
|
@ -631,7 +599,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
* @return {Void}
|
* @return {Void}
|
||||||
*/
|
*/
|
||||||
self.destroy = function () {
|
self.destroy = function () {
|
||||||
|
|
||||||
if (self.frameResizeObserver) {
|
if (self.frameResizeObserver) {
|
||||||
self.frameResizeObserver.disconnect();
|
self.frameResizeObserver.disconnect();
|
||||||
self.frameResizeObserver = null;
|
self.frameResizeObserver = null;
|
||||||
|
@ -667,11 +634,9 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
var contentRect = {};
|
var contentRect = {};
|
||||||
|
|
||||||
function onResize(entries) {
|
function onResize(entries) {
|
||||||
|
|
||||||
var entry = entries[0];
|
var entry = entries[0];
|
||||||
|
|
||||||
if (entry) {
|
if (entry) {
|
||||||
|
|
||||||
var newRect = entry.contentRect;
|
var newRect = entry.contentRect;
|
||||||
|
|
||||||
// handle element being hidden
|
// handle element being hidden
|
||||||
|
@ -680,7 +645,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newRect.width !== contentRect.width || newRect.height !== contentRect.height) {
|
if (newRect.width !== contentRect.width || newRect.height !== contentRect.height) {
|
||||||
|
|
||||||
contentRect = newRect;
|
contentRect = newRect;
|
||||||
|
|
||||||
load(false);
|
load(false);
|
||||||
|
@ -706,7 +670,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
}
|
}
|
||||||
|
|
||||||
self.getScrollPosition = function () {
|
self.getScrollPosition = function () {
|
||||||
|
|
||||||
if (transform) {
|
if (transform) {
|
||||||
return self._pos.cur;
|
return self._pos.cur;
|
||||||
}
|
}
|
||||||
|
@ -719,7 +682,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
};
|
};
|
||||||
|
|
||||||
self.getScrollSize = function () {
|
self.getScrollSize = function () {
|
||||||
|
|
||||||
if (transform) {
|
if (transform) {
|
||||||
return slideeSize;
|
return slideeSize;
|
||||||
}
|
}
|
||||||
|
@ -795,7 +757,6 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
initFrameResizeObserver();
|
initFrameResizeObserver();
|
||||||
|
|
||||||
if (transform) {
|
if (transform) {
|
||||||
|
|
||||||
dom.addEventListener(dragSourceElement, 'touchstart', dragInitSlidee, {
|
dom.addEventListener(dragSourceElement, 'touchstart', dragInitSlidee, {
|
||||||
passive: true
|
passive: true
|
||||||
});
|
});
|
||||||
|
@ -812,9 +773,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
passive: true
|
passive: true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (o.horizontal) {
|
} else if (o.horizontal) {
|
||||||
|
|
||||||
// Don't bind to mouse events with vertical scroll since the mouse wheel can handle this natively
|
// Don't bind to mouse events with vertical scroll since the mouse wheel can handle this natively
|
||||||
|
|
||||||
if (o.mouseWheel) {
|
if (o.mouseWheel) {
|
||||||
|
@ -839,9 +798,9 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
// Return instance
|
// Return instance
|
||||||
return self;
|
return self;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Slide SLIDEE by amount of pixels.
|
* Slide SLIDEE by amount of pixels.
|
||||||
*
|
*
|
||||||
* @param {Int} delta Pixels/Items. Positive means forward, negative means backward.
|
* @param {Int} delta Pixels/Items. Positive means forward, negative means backward.
|
||||||
|
@ -849,14 +808,14 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
*
|
*
|
||||||
* @return {Void}
|
* @return {Void}
|
||||||
*/
|
*/
|
||||||
scrollerFactory.prototype.slideBy = function (delta, immediate) {
|
scrollerFactory.prototype.slideBy = function (delta, immediate) {
|
||||||
if (!delta) {
|
if (!delta) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.slideTo(this._pos.dest + delta, immediate);
|
this.slideTo(this._pos.dest + delta, immediate);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Core method for handling `toLocation` methods.
|
* Core method for handling `toLocation` methods.
|
||||||
*
|
*
|
||||||
* @param {String} location
|
* @param {String} location
|
||||||
|
@ -865,7 +824,7 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
*
|
*
|
||||||
* @return {Void}
|
* @return {Void}
|
||||||
*/
|
*/
|
||||||
scrollerFactory.prototype.to = function (location, item, immediate) {
|
scrollerFactory.prototype.to = function (location, item, immediate) {
|
||||||
// Optional arguments logic
|
// Optional arguments logic
|
||||||
if (type(item) === 'boolean') {
|
if (type(item) === 'boolean') {
|
||||||
immediate = item;
|
immediate = item;
|
||||||
|
@ -881,9 +840,9 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
this.slideTo(itemPos[location], immediate, itemPos);
|
this.slideTo(itemPos[location], immediate, itemPos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Animate element or the whole SLIDEE to the start of the frame.
|
* Animate element or the whole SLIDEE to the start of the frame.
|
||||||
*
|
*
|
||||||
* @param {Mixed} item Item DOM element, or index starting at 0. Omitting will animate SLIDEE.
|
* @param {Mixed} item Item DOM element, or index starting at 0. Omitting will animate SLIDEE.
|
||||||
|
@ -891,11 +850,11 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
*
|
*
|
||||||
* @return {Void}
|
* @return {Void}
|
||||||
*/
|
*/
|
||||||
scrollerFactory.prototype.toStart = function (item, immediate) {
|
scrollerFactory.prototype.toStart = function (item, immediate) {
|
||||||
this.to('start', item, immediate);
|
this.to('start', item, immediate);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Animate element or the whole SLIDEE to the end of the frame.
|
* Animate element or the whole SLIDEE to the end of the frame.
|
||||||
*
|
*
|
||||||
* @param {Mixed} item Item DOM element, or index starting at 0. Omitting will animate SLIDEE.
|
* @param {Mixed} item Item DOM element, or index starting at 0. Omitting will animate SLIDEE.
|
||||||
|
@ -903,11 +862,11 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
*
|
*
|
||||||
* @return {Void}
|
* @return {Void}
|
||||||
*/
|
*/
|
||||||
scrollerFactory.prototype.toEnd = function (item, immediate) {
|
scrollerFactory.prototype.toEnd = function (item, immediate) {
|
||||||
this.to('end', item, immediate);
|
this.to('end', item, immediate);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Animate element or the whole SLIDEE to the center of the frame.
|
* Animate element or the whole SLIDEE to the center of the frame.
|
||||||
*
|
*
|
||||||
* @param {Mixed} item Item DOM element, or index starting at 0. Omitting will animate SLIDEE.
|
* @param {Mixed} item Item DOM element, or index starting at 0. Omitting will animate SLIDEE.
|
||||||
|
@ -915,14 +874,13 @@ define(['browser', 'layoutManager', 'dom', 'focusManager', 'ResizeObserver', 'sc
|
||||||
*
|
*
|
||||||
* @return {Void}
|
* @return {Void}
|
||||||
*/
|
*/
|
||||||
scrollerFactory.prototype.toCenter = function (item, immediate) {
|
scrollerFactory.prototype.toCenter = function (item, immediate) {
|
||||||
this.to('center', item, immediate);
|
this.to('center', item, immediate);
|
||||||
};
|
};
|
||||||
|
|
||||||
scrollerFactory.create = function (frame, options) {
|
scrollerFactory.create = function (frame, options) {
|
||||||
var instance = new scrollerFactory(frame, options);
|
var instance = new scrollerFactory(frame, options);
|
||||||
return Promise.resolve(instance);
|
return Promise.resolve(instance);
|
||||||
};
|
};
|
||||||
|
|
||||||
return scrollerFactory;
|
export default scrollerFactory;
|
||||||
});
|
|
||||||
|
|
|
@ -806,6 +806,8 @@ define(['dom', 'layoutManager', 'inputManager', 'connectionManager', 'events', '
|
||||||
navDrawerScrollContainer.addEventListener('click', onMainDrawerClick);
|
navDrawerScrollContainer.addEventListener('click', onMainDrawerClick);
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
require(['navdrawer'], function (navdrawer) {
|
require(['navdrawer'], function (navdrawer) {
|
||||||
|
navdrawer = navdrawer.default || navdrawer;
|
||||||
|
|
||||||
navDrawerInstance = new navdrawer(getNavDrawerOptions());
|
navDrawerInstance = new navdrawer(getNavDrawerOptions());
|
||||||
|
|
||||||
if (!layoutManager.tv) {
|
if (!layoutManager.tv) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue