Skip to content

Commit

Permalink
fix(captions): Added workflow to verify that tracks match the track
Browse files Browse the repository at this point in the history
… tag(s) (if any) to avoid extra TextTracks to be included
  • Loading branch information
rafa8626 committed Apr 30, 2019
1 parent 06281c7 commit f424dbd
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 9 deletions.
28 changes: 23 additions & 5 deletions dist/openplayer.js
Original file line number Diff line number Diff line change
Expand Up @@ -4538,7 +4538,25 @@ var Captions = function () {
this.player = player;
this.labels = player.getOptions().labels;
this.detachMenu = player.getOptions().detachMenus;
this.trackList = this.player.getElement().textTracks;
var trackList = this.player.getElement().textTracks;
var tracks = [];

for (var i = 0, total = trackList.length; i < total; i++) {
var selector = "track[kind=\"subtitles\"][srclang=\"".concat(trackList[i].language, "\"][label=\"").concat(trackList[i].label, "\"]");
var tag = this.player.getElement().querySelector(selector);

if (tag) {
tracks.push(trackList[i]);
}
}

if (!tracks.length) {
for (var _i = 0, _total = trackList.length; _i < _total; _i++) {
tracks.push(trackList[_i]);
}
}

this.trackList = tracks;
this.hasTracks = !!this.trackList.length;
return this;
}
Expand All @@ -4562,8 +4580,8 @@ var Captions = function () {
this.button.setAttribute('data-active-captions', 'off');
this.button.innerHTML = "<span class=\"op-sr\">".concat(this.labels.toggleCaptions, "</span>");

var _loop = function _loop(i, tracks, total) {
var element = tracks[i];
var _loop = function _loop(i, total, _tracks) {
var element = _tracks[i];

if (element.kind === 'subtitles') {
if (element.default) {
Expand Down Expand Up @@ -4608,8 +4626,8 @@ var Captions = function () {
}
};

for (var i = 0, tracks = this.player.getElement().querySelectorAll('track'), total = tracks.length; i < total; i++) {
_loop(i, tracks, total);
for (var i = 0, _tracks = this.player.getElement().querySelectorAll('track'), total = _tracks.length; i < total; i++) {
_loop(i, total, _tracks);
}

this.captions = document.createElement('div');
Expand Down
2 changes: 1 addition & 1 deletion dist/openplayer.min.js

Large diffs are not rendered by default.

23 changes: 20 additions & 3 deletions src/js/controls/captions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -85,10 +85,10 @@ class Captions implements PlayerComponent {
* List of tracks found in current media.
*
* @private
* @type TextTrackList
* @type TextTrack[]
* @memberof Captions
*/
private trackList: TextTrackList;
private trackList: TextTrack[];

/**
* List of remote/local track sources in case no cues are detected natively.
Expand Down Expand Up @@ -157,7 +157,24 @@ class Captions implements PlayerComponent {
this.player = player;
this.labels = player.getOptions().labels;
this.detachMenu = player.getOptions().detachMenus;
this.trackList = this.player.getElement().textTracks;
const trackList = this.player.getElement().textTracks;

// Check that `trackList` matches with track tags (if any)
const tracks = [];
for (let i = 0, total = trackList.length; i < total; i++) {
const selector = `track[kind="subtitles"][srclang="${trackList[i].language}"][label="${trackList[i].label}"]`;
const tag = this.player.getElement().querySelector(selector);
if (tag) {
tracks.push(trackList[i]);
}
}

if (!tracks.length) {
for (let i = 0, total = trackList.length; i < total; i++) {
tracks.push(trackList[i]);
}
}
this.trackList = tracks;
this.hasTracks = !!this.trackList.length;
return this;
}
Expand Down

0 comments on commit f424dbd

Please sign in to comment.