diff options
Diffstat (limited to 'src/js')
| -rw-r--r-- | src/js/defaults.js | 2 | ||||
| -rw-r--r-- | src/js/plyr.js | 59 | ||||
| -rw-r--r-- | src/js/ui.js | 16 | ||||
| -rw-r--r-- | src/js/utils.js | 1 | 
4 files changed, 45 insertions, 33 deletions
| diff --git a/src/js/defaults.js b/src/js/defaults.js index 91bb2386..a7d017ef 100644 --- a/src/js/defaults.js +++ b/src/js/defaults.js @@ -376,7 +376,7 @@ const defaults = {      // Register for an account here: http://vi.ai/publisher-video-monetization/?aid=plyrio      ads: {          enabled: false, -        publisherId: '918848828995742', +        publisherId: '',      },  }; diff --git a/src/js/plyr.js b/src/js/plyr.js index 32c8c062..00b7a007 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -293,22 +293,22 @@ class Plyr {       * Types and provider helpers       */      get isHTML5() { -        return this.provider === providers.html5; +        return Boolean(this.provider === providers.html5);      }      get isEmbed() { -        return this.isYouTube || this.isVimeo; +        return Boolean(this.isYouTube || this.isVimeo);      }      get isYouTube() { -        return this.provider === providers.youtube; +        return Boolean(this.provider === providers.youtube);      }      get isVimeo() { -        return this.provider === providers.vimeo; +        return Boolean(this.provider === providers.vimeo);      }      get isVideo() { -        return this.type === types.video; +        return Boolean(this.type === types.video);      }      get isAudio() { -        return this.type === types.audio; +        return Boolean(this.type === types.audio);      }      /** @@ -339,21 +339,21 @@ class Plyr {       * Get paused state       */      get paused() { -        return this.media.paused; +        return Boolean(this.media.paused);      }      /**       * Get playing state       */      get playing() { -        return !this.paused && !this.ended && (this.isHTML5 ? this.media.readyState > 2 : true); +        return Boolean(!this.paused && !this.ended && (this.isHTML5 ? this.media.readyState > 2 : true));      }      /**       * Get ended state       */      get ended() { -        return this.media.ended; +        return Boolean(this.media.ended);      }      /** @@ -435,10 +435,31 @@ class Plyr {      }      /** +     * Get buffered +     */ +    get buffered() { +        const { buffered } = this.media; + +        // YouTube / Vimeo return a float between 0-1 +        if (utils.is.number(buffered)) { +            return buffered; +        } + +        // HTML5 +        // TODO: Handle buffered chunks of the media +        // (i.e. seek to another section buffers only that section) +        if (buffered && buffered.length && this.duration > 0) { +            return buffered.end(0) / this.duration; +        } + +        return 0; +    } + +    /**       * Get seeking status       */      get seeking() { -        return this.media.seeking; +        return Boolean(this.media.seeking);      }      /** @@ -503,7 +524,7 @@ class Plyr {       * Get the current player volume       */      get volume() { -        return this.media.volume; +        return Number(this.media.volume);      }      /** @@ -552,7 +573,7 @@ class Plyr {       * Get current muted state       */      get muted() { -        return this.media.muted; +        return Boolean(this.media.muted);      }      /** @@ -569,12 +590,16 @@ class Plyr {          }          // Get audio tracks -        return this.media.mozHasAudio || Boolean(this.media.webkitAudioDecodedByteCount) || Boolean(this.media.audioTracks && this.media.audioTracks.length); +        return ( +            Boolean(this.media.mozHasAudio) || +            Boolean(this.media.webkitAudioDecodedByteCount) || +            Boolean(this.media.audioTracks && this.media.audioTracks.length) +        );      }      /**       * Set playback speed -     * @param {decimal} speed - the speed of playback (0.5-2.0) +     * @param {number} speed - the speed of playback (0.5-2.0)       */      set speed(input) {          let speed = null; @@ -615,7 +640,7 @@ class Plyr {       * Get current playback speed       */      get speed() { -        return this.media.playbackRate; +        return Number(this.media.playbackRate);      }      /** @@ -715,7 +740,7 @@ class Plyr {       * Get current loop state       */      get loop() { -        return this.media.loop; +        return Boolean(this.media.loop);      }      /** @@ -772,7 +797,7 @@ class Plyr {       * Get the current autoplay state       */      get autoplay() { -        return this.config.autoplay; +        return Boolean(this.config.autoplay);      }      /** diff --git a/src/js/ui.js b/src/js/ui.js index a083d502..a4f22413 100644 --- a/src/js/ui.js +++ b/src/js/ui.js @@ -255,21 +255,7 @@ const ui = {                  // Check buffer status                  case 'playing':                  case 'progress': -                    value = (() => { -                        const { buffered } = this.media; - -                        if (buffered && buffered.length) { -                            // HTML5 -                            return utils.getPercentage(buffered.end(0), this.duration); -                        } else if (utils.is.number(buffered)) { -                            // YouTube returns between 0 and 1 -                            return buffered * 100; -                        } - -                        return 0; -                    })(); - -                    ui.setProgress.call(this, this.elements.display.buffer, value); +                    ui.setProgress.call(this, this.elements.display.buffer, this.buffered * 100);                      break; diff --git a/src/js/utils.js b/src/js/utils.js index 4958627b..37dd6461 100644 --- a/src/js/utils.js +++ b/src/js/utils.js @@ -671,6 +671,7 @@ const utils = {          if (current === 0 || max === 0 || Number.isNaN(current) || Number.isNaN(max)) {              return 0;          } +          return (current / max * 100).toFixed(2);      }, | 
