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/captions.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/captions.js')
-rw-r--r-- | src/js/captions.js | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/src/js/captions.js b/src/js/captions.js index ae4642aa..f7c24534 100644 --- a/src/js/captions.js +++ b/src/js/captions.js @@ -85,7 +85,6 @@ const captions = { const browserLanguages = navigator.languages || [navigator.language || navigator.userLanguage || 'en']; const languages = dedupe(browserLanguages.map(language => language.split('-')[0])); - let language = (this.storage.get('language') || this.config.captions.language || 'auto').toLowerCase(); // Use first browser language when language is 'auto' @@ -124,19 +123,21 @@ const captions = { // Handle tracks (add event listener and "pseudo"-default) if (this.isHTML5 && this.isVideo) { - tracks.filter(track => !meta.get(track)).forEach(track => { - this.debug.log('Track added', track); - // Attempt to store if the original dom element was "default" - meta.set(track, { - default: track.mode === 'showing', + tracks + .filter(track => !meta.get(track)) + .forEach(track => { + this.debug.log('Track added', track); + // Attempt to store if the original dom element was "default" + meta.set(track, { + default: track.mode === 'showing', + }); + + // Turn off native caption rendering to avoid double captions + Object.assign(track, { mode: 'hidden' }); + + // Add event listener for cue changes + on.call(this, track, 'cuechange', () => captions.updateCues.call(this)); }); - - // Turn off native caption rendering to avoid double captions - track.mode = 'hidden'; - - // Add event listener for cue changes - on.call(this, track, 'cuechange', () => captions.updateCues.call(this)); - }); } // Update language first time it matches, or if the previous matching track was removed @@ -164,7 +165,6 @@ const captions = { const { toggled } = this.captions; // Current state const activeClass = this.config.classNames.captions.active; - // Get the next state // If the method is called without parameter, toggle based on current value const active = is.nullOrUndefined(input) ? !toggled : input; @@ -300,10 +300,12 @@ const captions = { const sortIsDefault = track => Number((this.captions.meta.get(track) || {}).default); const sorted = Array.from(tracks).sort((a, b) => sortIsDefault(b) - sortIsDefault(a)); let track; + languages.every(language => { - track = sorted.find(track => track.language === language); + track = sorted.find(t => t.language === language); return !track; // Break iteration if there is a match }); + // If no match is found but is required, get first return track || (force ? sorted[0] : undefined); }, @@ -360,6 +362,7 @@ const captions = { // Get cues from track if (!cues) { const track = captions.getCurrentTrack.call(this); + cues = Array.from((track || {}).activeCues || []) .map(cue => cue.getCueAsHTML()) .map(getHTML); |