diff options
| author | Sam Potts <sam@potts.es> | 2019-06-01 19:55:14 +1000 |
|---|---|---|
| committer | Sam Potts <sam@potts.es> | 2019-06-01 19:55:14 +1000 |
| commit | 12c6282d14e3e06a7784760f83affc9195afed1f (patch) | |
| tree | af1c6be692c4cf2679e7efc604896b686974368d /src/js/listeners.js | |
| parent | 996075decc6e8c0f0c5059dccea21b16020eb78b (diff) | |
| parent | 0249772f019762ebd494ac409e597103820413c3 (diff) | |
| download | plyr-12c6282d14e3e06a7784760f83affc9195afed1f.tar.lz plyr-12c6282d14e3e06a7784760f83affc9195afed1f.tar.xz plyr-12c6282d14e3e06a7784760f83affc9195afed1f.zip | |
Merge branch 'develop' into css-variables
# Conflicts:
# .eslintrc
# demo/dist/demo.css
# demo/dist/demo.js
# demo/dist/demo.min.js
# demo/dist/demo.min.js.map
# dist/plyr.css
# dist/plyr.js
# dist/plyr.min.js
# dist/plyr.min.js.map
# dist/plyr.min.mjs
# dist/plyr.min.mjs.map
# dist/plyr.mjs
# dist/plyr.polyfilled.js
# dist/plyr.polyfilled.min.js
# dist/plyr.polyfilled.min.js.map
# dist/plyr.polyfilled.min.mjs
# dist/plyr.polyfilled.min.mjs.map
# dist/plyr.polyfilled.mjs
# gulpfile.js
# package.json
Diffstat (limited to 'src/js/listeners.js')
| -rw-r--r-- | src/js/listeners.js | 33 |
1 files changed, 13 insertions, 20 deletions
diff --git a/src/js/listeners.js b/src/js/listeners.js index 3c65b824..f5c9cda8 100644 --- a/src/js/listeners.js +++ b/src/js/listeners.js @@ -9,7 +9,7 @@ import browser from './utils/browser'; import { getElement, getElements, matches, toggleClass, toggleHidden } from './utils/elements'; import { off, on, once, toggleListener, triggerEvent } from './utils/events'; import is from './utils/is'; -import { setAspectRatio } from './utils/style'; +import { getAspectRatio, setAspectRatio } from './utils/style'; class Listeners { constructor(player) { @@ -147,7 +147,7 @@ class Listeners { player.loop = !player.loop; break; - /* case 73: + /* case 73: this.setLoop('start'); break; @@ -275,17 +275,16 @@ class Listeners { elements.container, 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen', event => { - const { controls } = elements; + const { controls: controlsElement } = elements; // Remove button states for fullscreen - if (controls && event.type === 'enterfullscreen') { - controls.pressed = false; - controls.hover = false; + if (controlsElement && event.type === 'enterfullscreen') { + controlsElement.pressed = false; + controlsElement.hover = false; } // Show, then hide after a timeout unless another control event occurs const show = ['touchstart', 'touchmove', 'mousemove'].includes(event.type); - let delay = 0; if (show) { @@ -317,10 +316,10 @@ class Listeners { } const target = player.elements.wrapper.firstChild; - const [, height] = ratio.split(':').map(Number); - const [videoWidth, videoHeight] = player.embed.ratio.split(':').map(Number); + const [, y] = ratio; + const [videoX, videoY] = getAspectRatio.call(player); - target.style.maxWidth = toggle ? `${(height / videoHeight) * videoWidth}px` : null; + target.style.maxWidth = toggle ? `${(y / videoY) * videoX}px` : null; target.style.margin = toggle ? '0 auto' : null; }; @@ -338,8 +337,8 @@ class Listeners { }; const resized = () => { - window.clearTimeout(timers.resized); - timers.resized = window.setTimeout(setPlayerSize, 50); + clearTimeout(timers.resized); + timers.resized = setTimeout(setPlayerSize, 50); }; on.call(player, elements.container, 'enterfullscreen exitfullscreen', event => { @@ -351,7 +350,6 @@ class Listeners { } const isEnter = event.type === 'enterfullscreen'; - // Set the player size when entering fullscreen to viewport size const { padding, ratio } = setPlayerSize(isEnter); @@ -486,7 +484,7 @@ class Listeners { // Update download link when ready and if quality changes on.call(player, player.media, 'ready qualitychange', () => { - controls.setDownloadLink.call(player); + controls.setDownloadUrl.call(player); }); // Proxy events to container @@ -542,7 +540,6 @@ class Listeners { controls() { const { player } = this; const { elements } = player; - // IE doesn't support input event, so we fallback to change const inputEvent = browser.isIE ? 'change' : 'input'; @@ -678,7 +675,6 @@ class Listeners { // Was playing before? const play = seek.hasAttribute(attribute); - // Done seeking const done = ['mouseup', 'touchend', 'keyup'].includes(event.type); @@ -706,7 +702,6 @@ class Listeners { inputEvent, event => { const seek = event.currentTarget; - // If it exists, use seek-value instead of "value" for consistency with tooltip time (#954) let seekTo = seek.getAttribute('seek-value'); @@ -806,7 +801,7 @@ class Listeners { // Show controls when they receive focus (e.g., when using keyboard tab key) this.bind(elements.controls, 'focusin', () => { - const { config, elements, timers } = player; + const { config, timers } = player; // Skip transition to prevent focus from scrolling the parent element toggleClass(elements.controls, config.classNames.noTransition, true); @@ -837,10 +832,8 @@ class Listeners { // Detect "natural" scroll - suppored on OS X Safari only // Other browsers on OS X will be inverted until support improves const inverted = event.webkitDirectionInvertedFromDevice; - // Get delta from event. Invert if `inverted` is true const [x, y] = [event.deltaX, -event.deltaY].map(value => (inverted ? -value : value)); - // Using the biggest delta, normalize to 1 or -1 (or 0 if no delta) const direction = Math.sign(Math.abs(x) > Math.abs(y) ? x : y); |
