aboutsummaryrefslogtreecommitdiffstats
path: root/dist/plyr.polyfilled.js
diff options
context:
space:
mode:
Diffstat (limited to 'dist/plyr.polyfilled.js')
-rw-r--r--dist/plyr.polyfilled.js189
1 files changed, 127 insertions, 62 deletions
diff --git a/dist/plyr.polyfilled.js b/dist/plyr.polyfilled.js
index cea230a5..b4d9beb0 100644
--- a/dist/plyr.polyfilled.js
+++ b/dist/plyr.polyfilled.js
@@ -6112,6 +6112,7 @@ var defaults = {
all: 'All',
reset: 'Reset',
disabled: 'Disabled',
+ enabled: 'Enabled',
advertisement: 'Ad'
},
@@ -8064,6 +8065,36 @@ var Fullscreen = function () {
// ==========================================================================
+var i18n = {
+ get: function get() {
+ var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
+ var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+ if (utils.is.empty(key) || utils.is.empty(config) || !Object.keys(config.i18n).includes(key)) {
+ return '';
+ }
+
+ var string = config.i18n[key];
+
+ var replace = {
+ '{seektime}': config.seekTime,
+ '{title}': config.title
+ };
+
+ Object.entries(replace).forEach(function (_ref) {
+ var _ref2 = slicedToArray(_ref, 2),
+ key = _ref2[0],
+ value = _ref2[1];
+
+ string = utils.replaceAll(string, key, value);
+ });
+
+ return string;
+ }
+};
+
+// ==========================================================================
+
var captions = {
// Setup captions
setup: function setup() {
@@ -8103,6 +8134,7 @@ var captions = {
return;
}
+
// Inject the container
if (!utils.is.element(this.elements.captions)) {
this.elements.captions = utils.createElement('div', utils.getAttributesFromSelector(this.config.selectors.captions));
@@ -8207,9 +8239,54 @@ var captions = {
getCurrentTrack: function getCurrentTrack() {
var _this2 = this;
- return captions.getTracks.call(this).find(function (track) {
+ var tracks = captions.getTracks.call(this);
+
+ if (!tracks.length) {
+ return null;
+ }
+
+ // Get track based on current language
+ var track = tracks.find(function (track) {
return track.language.toLowerCase() === _this2.language;
});
+
+ // Get the <track> with default attribute
+ if (!track) {
+ track = utils.getElement.call(this, 'track[default]');
+ }
+
+ // Get the first track
+ if (!track) {
+ var _tracks = slicedToArray(tracks, 1);
+
+ track = _tracks[0];
+ }
+
+ return track;
+ },
+
+
+ // Get UI label for track
+ getLabel: function getLabel(track) {
+ var currentTrack = track;
+
+ if (!utils.is.track(currentTrack) && support.textTracks && this.captions.active) {
+ currentTrack = captions.getCurrentTrack.call(this);
+ }
+
+ if (utils.is.track(currentTrack)) {
+ if (!utils.is.empty(currentTrack.label)) {
+ return currentTrack.label;
+ }
+
+ if (!utils.is.empty(currentTrack.language)) {
+ return track.language.toUpperCase();
+ }
+
+ return i18n.get('enabled', this.config);
+ }
+
+ return i18n.get('disabled', this.config);
},
@@ -8295,36 +8372,6 @@ var captions = {
// ==========================================================================
-var i18n = {
- get: function get() {
- var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
- var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
- if (utils.is.empty(key) || utils.is.empty(config) || !Object.keys(config.i18n).includes(key)) {
- return '';
- }
-
- var string = config.i18n[key];
-
- var replace = {
- '{seektime}': config.seekTime,
- '{title}': config.title
- };
-
- Object.entries(replace).forEach(function (_ref) {
- var _ref2 = slicedToArray(_ref, 2),
- key = _ref2[0],
- value = _ref2[1];
-
- string = utils.replaceAll(string, key, value);
- });
-
- return string;
- }
-};
-
-// ==========================================================================
-
var ui = {
addStyleHook: function addStyleHook() {
utils.toggleClass(this.elements.container, this.config.selectors.container.replace('.', ''), true);
@@ -9245,6 +9292,9 @@ var controls = {
var toggle = !utils.is.empty(this.options.quality) && this.options.quality.length > 1;
controls.toggleTab.call(this, type, toggle);
+ // Check if we need to toggle the parent
+ controls.checkMenu.call(this);
+
// If we're hiding, nothing more to do
if (!toggle) {
return;
@@ -9307,10 +9357,11 @@ var controls = {
if (utils.is.number(value)) {
return value + 'p';
}
+
return utils.toTitleCase(value);
case 'captions':
- return controls.getLanguage.call(this);
+ return captions.getLabel.call(this);
default:
return null;
@@ -9326,7 +9377,18 @@ var controls = {
switch (setting) {
case 'captions':
- value = this.captions.active ? this.captions.language : i18n.get('disabled', this.config);
+ if (this.captions.active) {
+ if (this.options.captions.length > 2 || !this.options.captions.some(function (lang) {
+ return lang === 'enabled';
+ })) {
+ value = this.captions.language;
+ } else {
+ value = 'enabled';
+ }
+ } else {
+ value = '';
+ }
+
break;
default:
@@ -9358,16 +9420,13 @@ var controls = {
}
// Update the label
- if (!utils.is.empty(value)) {
- var label = this.elements.settings.tabs[setting].querySelector('.' + this.config.classNames.menu.value);
- label.innerHTML = controls.getLabel.call(this, setting, value);
- }
+ var label = this.elements.settings.tabs[setting].querySelector('.' + this.config.classNames.menu.value);
+ label.innerHTML = controls.getLabel.call(this, setting, value);
- // Find the radio option
+ // Find the radio option and check it
var target = list && list.querySelector('input[value="' + value + '"]');
if (utils.is.element(target)) {
- // Check it
target.checked = true;
}
},
@@ -9411,21 +9470,6 @@ var controls = {
// Get current selected caption language
// TODO: rework this to user the getter in the API?
- getLanguage: function getLanguage() {
- if (!this.supported.ui) {
- return null;
- }
-
- if (support.textTracks && captions.getTracks.call(this).length && this.captions.active) {
- var currentTrack = captions.getCurrentTrack.call(this);
-
- if (utils.is.track(currentTrack)) {
- return currentTrack.label;
- }
- }
-
- return i18n.get('disabled', this.config);
- },
// Set a list of available captions languages
@@ -9443,6 +9487,9 @@ var controls = {
// Empty the menu
utils.emptyElement(list);
+ // Check if we need to toggle the parent
+ controls.checkMenu.call(this);
+
// If there's no captions, bail
if (!toggle) {
return;
@@ -9451,8 +9498,8 @@ var controls = {
// Re-map the tracks into just the data we need
var tracks = captions.getTracks.call(this).map(function (track) {
return {
- language: track.language,
- label: !utils.is.empty(track.label) ? track.label : track.language.toUpperCase()
+ language: !utils.is.empty(track.language) ? track.language : 'enabled',
+ label: captions.getLabel.call(_this3, track)
};
});
@@ -9464,7 +9511,12 @@ var controls = {
// Generate options
tracks.forEach(function (track) {
- controls.createMenuItem.call(_this3, track.language, list, 'language', track.label || track.language, controls.createBadge.call(_this3, track.language.toUpperCase()), track.language.toLowerCase() === _this3.captions.language.toLowerCase());
+ controls.createMenuItem.call(_this3, track.language, list, 'language', track.label, track.language !== 'enabled' ? controls.createBadge.call(_this3, track.language.toUpperCase()) : null, track.language.toLowerCase() === _this3.captions.language.toLowerCase());
+ });
+
+ // Store reference
+ this.options.captions = tracks.map(function (track) {
+ return track.language;
});
controls.updateSetting.call(this, type, list);
@@ -9983,7 +10035,7 @@ var controls = {
seektime: this.config.seekTime,
speed: this.speed,
quality: this.quality,
- captions: controls.getLanguage.call(this)
+ captions: captions.getLabel.call(this)
// TODO: Looping
// loop: 'None',
});
@@ -12513,7 +12565,8 @@ var Plyr = function () {
// Options
this.options = {
speed: [],
- quality: []
+ quality: [],
+ captions: []
};
// Debugging
@@ -13676,17 +13729,29 @@ var Plyr = function () {
return;
}
- // Toggle captions based on input
- this.toggleCaptions(!utils.is.empty(input));
-
// If empty string is passed, assume disable captions
if (utils.is.empty(input)) {
+ this.toggleCaptions(false);
return;
}
// Normalize
var language = input.toLowerCase();
+ // Check for support
+ if (!this.options.captions.includes(language)) {
+ this.debug.warn('Unsupported language option: ' + language);
+ return;
+ }
+
+ // Ensure captions are enabled
+ this.toggleCaptions(true);
+
+ // Enabled only
+ if (language === 'enabled') {
+ return;
+ }
+
// If nothing to change, bail
if (this.language === language) {
return;