wai-website-theme 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE.txt +21 -0
- data/README.md +52 -0
- data/_data/lang.json +730 -0
- data/_data/techniques.yml +180 -0
- data/_data/wcag.yml +125 -0
- data/_includes/.DS_Store +0 -0
- data/_includes/body-class.html +1 -0
- data/_includes/box.html +10 -0
- data/_includes/excol.html +13 -0
- data/_includes/footer.html +40 -0
- data/_includes/head.html +23 -0
- data/_includes/header.html +59 -0
- data/_includes/icon.html +6 -0
- data/_includes/img.html +17 -0
- data/_includes/multilang-list-policy-links.html +29 -0
- data/_includes/multilang-list.html +35 -0
- data/_includes/multilang-policy-title.html +5 -0
- data/_includes/multilang-title-full.html +1 -0
- data/_includes/multilang-title.html +1 -0
- data/_includes/navlist.html +22 -0
- data/_includes/notes.html +2 -0
- data/_includes/prevnext.html +34 -0
- data/_includes/resources.html +19 -0
- data/_includes/sidenav.html +65 -0
- data/_includes/sidenote.html +14 -0
- data/_includes/toc.html +10 -0
- data/_includes/video-player.html +99 -0
- data/_layouts/default.html +26 -0
- data/_layouts/home.html +14 -0
- data/_layouts/news.html +21 -0
- data/_layouts/none.html +1 -0
- data/_layouts/policy.html +72 -0
- data/_layouts/sidenav.html +27 -0
- data/_layouts/sidenavsidebar.html +22 -0
- data/assets/ableplayer/.gitattributes +14 -0
- data/assets/ableplayer/.gitignore +7 -0
- data/assets/ableplayer/Gruntfile.js +105 -0
- data/assets/ableplayer/LICENSE +26 -0
- data/assets/ableplayer/README.md +656 -0
- data/assets/ableplayer/build/ableplayer.dist.js +12157 -0
- data/assets/ableplayer/build/ableplayer.js +12157 -0
- data/assets/ableplayer/build/ableplayer.min.css +2 -0
- data/assets/ableplayer/build/ableplayer.min.js +8 -0
- data/assets/ableplayer/button-icons/able-icons.svg +116 -0
- data/assets/ableplayer/button-icons/black/captions.png +0 -0
- data/assets/ableplayer/button-icons/black/chapters.png +0 -0
- data/assets/ableplayer/button-icons/black/close.png +0 -0
- data/assets/ableplayer/button-icons/black/descriptions.png +0 -0
- data/assets/ableplayer/button-icons/black/ellipsis.png +0 -0
- data/assets/ableplayer/button-icons/black/faster.png +0 -0
- data/assets/ableplayer/button-icons/black/forward.png +0 -0
- data/assets/ableplayer/button-icons/black/fullscreen-collapse.png +0 -0
- data/assets/ableplayer/button-icons/black/fullscreen-expand.png +0 -0
- data/assets/ableplayer/button-icons/black/help.png +0 -0
- data/assets/ableplayer/button-icons/black/next.png +0 -0
- data/assets/ableplayer/button-icons/black/pause.png +0 -0
- data/assets/ableplayer/button-icons/black/pipe.png +0 -0
- data/assets/ableplayer/button-icons/black/play.png +0 -0
- data/assets/ableplayer/button-icons/black/preferences.png +0 -0
- data/assets/ableplayer/button-icons/black/previous.png +0 -0
- data/assets/ableplayer/button-icons/black/rabbit.png +0 -0
- data/assets/ableplayer/button-icons/black/restart.png +0 -0
- data/assets/ableplayer/button-icons/black/rewind.png +0 -0
- data/assets/ableplayer/button-icons/black/sign.png +0 -0
- data/assets/ableplayer/button-icons/black/slower.png +0 -0
- data/assets/ableplayer/button-icons/black/stop.png +0 -0
- data/assets/ableplayer/button-icons/black/transcript.png +0 -0
- data/assets/ableplayer/button-icons/black/turtle.png +0 -0
- data/assets/ableplayer/button-icons/black/volume-loud.png +0 -0
- data/assets/ableplayer/button-icons/black/volume-medium.png +0 -0
- data/assets/ableplayer/button-icons/black/volume-mute.png +0 -0
- data/assets/ableplayer/button-icons/black/volume-soft.png +0 -0
- data/assets/ableplayer/button-icons/fonts/able.eot +0 -0
- data/assets/ableplayer/button-icons/fonts/able.svg +40 -0
- data/assets/ableplayer/button-icons/fonts/able.ttf +0 -0
- data/assets/ableplayer/button-icons/fonts/able.woff +0 -0
- data/assets/ableplayer/button-icons/white/captions.png +0 -0
- data/assets/ableplayer/button-icons/white/chapters.png +0 -0
- data/assets/ableplayer/button-icons/white/close.png +0 -0
- data/assets/ableplayer/button-icons/white/descriptions.png +0 -0
- data/assets/ableplayer/button-icons/white/ellipsis.png +0 -0
- data/assets/ableplayer/button-icons/white/faster.png +0 -0
- data/assets/ableplayer/button-icons/white/forward.png +0 -0
- data/assets/ableplayer/button-icons/white/fullscreen-collapse.png +0 -0
- data/assets/ableplayer/button-icons/white/fullscreen-expand.png +0 -0
- data/assets/ableplayer/button-icons/white/help.png +0 -0
- data/assets/ableplayer/button-icons/white/next.png +0 -0
- data/assets/ableplayer/button-icons/white/pause.png +0 -0
- data/assets/ableplayer/button-icons/white/pipe.png +0 -0
- data/assets/ableplayer/button-icons/white/play.png +0 -0
- data/assets/ableplayer/button-icons/white/preferences.png +0 -0
- data/assets/ableplayer/button-icons/white/previous.png +0 -0
- data/assets/ableplayer/button-icons/white/rabbit.png +0 -0
- data/assets/ableplayer/button-icons/white/restart.png +0 -0
- data/assets/ableplayer/button-icons/white/rewind.png +0 -0
- data/assets/ableplayer/button-icons/white/sign.png +0 -0
- data/assets/ableplayer/button-icons/white/slower.png +0 -0
- data/assets/ableplayer/button-icons/white/stop.png +0 -0
- data/assets/ableplayer/button-icons/white/transcript.png +0 -0
- data/assets/ableplayer/button-icons/white/turtle.png +0 -0
- data/assets/ableplayer/button-icons/white/volume-loud.png +0 -0
- data/assets/ableplayer/button-icons/white/volume-medium.png +0 -0
- data/assets/ableplayer/button-icons/white/volume-mute.png +0 -0
- data/assets/ableplayer/button-icons/white/volume-soft.png +0 -0
- data/assets/ableplayer/images/wingrip.png +0 -0
- data/assets/ableplayer/package.json +22 -0
- data/assets/ableplayer/scripts/JQuery.doWhen.js +113 -0
- data/assets/ableplayer/scripts/ableplayer-base.js +440 -0
- data/assets/ableplayer/scripts/browser.js +162 -0
- data/assets/ableplayer/scripts/buildplayer.js +1609 -0
- data/assets/ableplayer/scripts/caption.js +385 -0
- data/assets/ableplayer/scripts/chapters.js +242 -0
- data/assets/ableplayer/scripts/control.js +1514 -0
- data/assets/ableplayer/scripts/description.js +283 -0
- data/assets/ableplayer/scripts/dialog.js +147 -0
- data/assets/ableplayer/scripts/dragdrop.js +766 -0
- data/assets/ableplayer/scripts/event.js +595 -0
- data/assets/ableplayer/scripts/initialize.js +725 -0
- data/assets/ableplayer/scripts/langs.js +750 -0
- data/assets/ableplayer/scripts/metadata.js +134 -0
- data/assets/ableplayer/scripts/misc.js +72 -0
- data/assets/ableplayer/scripts/preference.js +909 -0
- data/assets/ableplayer/scripts/search.js +171 -0
- data/assets/ableplayer/scripts/sign.js +92 -0
- data/assets/ableplayer/scripts/slider.js +454 -0
- data/assets/ableplayer/scripts/track.js +296 -0
- data/assets/ableplayer/scripts/transcript.js +590 -0
- data/assets/ableplayer/scripts/translation.js +66 -0
- data/assets/ableplayer/scripts/volume.js +383 -0
- data/assets/ableplayer/scripts/webvtt.js +765 -0
- data/assets/ableplayer/scripts/youtube.js +471 -0
- data/assets/ableplayer/styles/ableplayer.css +1241 -0
- data/assets/ableplayer/thirdparty/js.cookie.js +145 -0
- data/assets/ableplayer/thirdparty/modernizr.custom.js +4 -0
- data/assets/ableplayer/translations/ca.js +1 -0
- data/assets/ableplayer/translations/de.js +1 -0
- data/assets/ableplayer/translations/en.js +305 -0
- data/assets/ableplayer/translations/es.js +305 -0
- data/assets/ableplayer/translations/fr.js +305 -0
- data/assets/ableplayer/translations/it.js +303 -0
- data/assets/ableplayer/translations/ja.js +305 -0
- data/assets/ableplayer/translations/nl.js +305 -0
- data/assets/css/style.css +4360 -0
- data/assets/css/style.css.map +1 -0
- data/assets/fonts/anonymouspro-bold.woff +0 -0
- data/assets/fonts/anonymouspro-bold.woff2 +0 -0
- data/assets/fonts/anonymouspro-bolditalic.woff +0 -0
- data/assets/fonts/anonymouspro-bolditalic.woff2 +0 -0
- data/assets/fonts/anonymouspro-italic.woff +0 -0
- data/assets/fonts/anonymouspro-italic.woff2 +0 -0
- data/assets/fonts/anonymouspro-regular.woff +0 -0
- data/assets/fonts/anonymouspro-regular.woff2 +0 -0
- data/assets/fonts/notosans-bold.woff +0 -0
- data/assets/fonts/notosans-bold.woff2 +0 -0
- data/assets/fonts/notosans-bolditalic.woff +0 -0
- data/assets/fonts/notosans-bolditalic.woff2 +0 -0
- data/assets/fonts/notosans-italic.woff +0 -0
- data/assets/fonts/notosans-italic.woff2 +0 -0
- data/assets/fonts/notosans-regular.woff +0 -0
- data/assets/fonts/notosans-regular.woff2 +0 -0
- data/assets/images/.DS_Store +0 -0
- data/assets/images/Shape.svg +10 -0
- data/assets/images/icon-related-content.svg +14 -0
- data/assets/images/icons.svg +126 -0
- data/assets/images/teaser-image@1x.jpg +0 -0
- data/assets/images/teaser-image@2x.jpg +0 -0
- data/assets/images/w3c.sketch +0 -0
- data/assets/images/w3c.svg +10 -0
- data/assets/scripts/jquery.min.js +4 -0
- data/assets/scripts/main.js +208 -0
- data/assets/scripts/svg4everybody.js +1 -0
- metadata +257 -0
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
(function ($) {
|
|
2
|
+
// Loads files referenced in track elements, and performs appropriate setup.
|
|
3
|
+
// For example, captions and text descriptions.
|
|
4
|
+
// This will be called whenever the player is recreated.
|
|
5
|
+
// Added in v2.2.23: Also handles YouTube caption tracks
|
|
6
|
+
AblePlayer.prototype.setupTracks = function() {
|
|
7
|
+
|
|
8
|
+
var thisObj = this;
|
|
9
|
+
|
|
10
|
+
var deferred = new $.Deferred();
|
|
11
|
+
var promise = deferred.promise();
|
|
12
|
+
this.$tracks = this.$media.find('track');
|
|
13
|
+
|
|
14
|
+
this.captions = [];
|
|
15
|
+
this.captionLabels = [];
|
|
16
|
+
this.descriptions = [];
|
|
17
|
+
this.chapters = [];
|
|
18
|
+
this.meta = [];
|
|
19
|
+
|
|
20
|
+
var loadingPromises = [];
|
|
21
|
+
for (var ii = 0; ii < this.$tracks.length; ii++) {
|
|
22
|
+
var track = this.$tracks[ii];
|
|
23
|
+
var kind = track.getAttribute('kind');
|
|
24
|
+
var trackSrc = track.getAttribute('src');
|
|
25
|
+
|
|
26
|
+
var isDefaultTrack = track.getAttribute('default');
|
|
27
|
+
|
|
28
|
+
if (!trackSrc) {
|
|
29
|
+
// Nothing to load!
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
var loadingPromise = this.loadTextObject(trackSrc);
|
|
34
|
+
loadingPromises.push(loadingPromise);
|
|
35
|
+
loadingPromise.then((function (track, kind) {
|
|
36
|
+
return function (trackSrc, trackText) {
|
|
37
|
+
var cues = thisObj.parseWebVTT(trackSrc, trackText).cues;
|
|
38
|
+
if (kind === 'captions' || kind === 'subtitles') {
|
|
39
|
+
thisObj.setupCaptions(track, cues);
|
|
40
|
+
}
|
|
41
|
+
else if (kind === 'descriptions') {
|
|
42
|
+
thisObj.setupDescriptions(track, cues);
|
|
43
|
+
}
|
|
44
|
+
else if (kind === 'chapters') {
|
|
45
|
+
thisObj.setupChapters(track, cues);
|
|
46
|
+
}
|
|
47
|
+
else if (kind === 'metadata') {
|
|
48
|
+
thisObj.setupMetadata(track, cues);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
})(track, kind));
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
$.when.apply($, loadingPromises).then(function () {
|
|
55
|
+
deferred.resolve();
|
|
56
|
+
});
|
|
57
|
+
return promise;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
AblePlayer.prototype.setupCaptions = function (track, cues) {
|
|
61
|
+
|
|
62
|
+
this.hasCaptions = true;
|
|
63
|
+
// srcLang should always be included with <track>, but HTML5 spec doesn't require it
|
|
64
|
+
// if not provided, assume track is the same language as the default player language
|
|
65
|
+
var trackLang = track.getAttribute('srclang') || this.lang;
|
|
66
|
+
var trackLabel = track.getAttribute('label') || this.getLanguageName(trackLang);
|
|
67
|
+
if (typeof track.getAttribute('default') == 'string') {
|
|
68
|
+
var isDefaultTrack = true;
|
|
69
|
+
// Now remove 'default' attribute from <track>
|
|
70
|
+
// Otherwise, some browsers will display the track
|
|
71
|
+
track.removeAttribute('default');
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
var isDefaultTrack = false;
|
|
75
|
+
}
|
|
76
|
+
// caption cues from WebVTT are used to build a transcript for both audio and video
|
|
77
|
+
// but captions are currently only supported for video
|
|
78
|
+
if (this.mediaType === 'video') {
|
|
79
|
+
|
|
80
|
+
// create a pair of nested divs for displaying captions
|
|
81
|
+
// includes aria-hidden="true" because otherwise
|
|
82
|
+
// captions being added and removed causes sporadic changes to focus in JAWS
|
|
83
|
+
// (not a problem in NVDA or VoiceOver)
|
|
84
|
+
if (!this.$captionsDiv) {
|
|
85
|
+
this.$captionsDiv = $('<div>',{
|
|
86
|
+
'class': 'able-captions',
|
|
87
|
+
});
|
|
88
|
+
this.$captionsWrapper = $('<div>',{
|
|
89
|
+
'class': 'able-captions-wrapper',
|
|
90
|
+
'aria-hidden': 'true'
|
|
91
|
+
});
|
|
92
|
+
if (this.prefCaptionsPosition === 'below') {
|
|
93
|
+
this.$captionsWrapper.addClass('able-captions-below');
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
this.$captionsWrapper.addClass('able-captions-overlay');
|
|
97
|
+
}
|
|
98
|
+
this.$captionsWrapper.append(this.$captionsDiv);
|
|
99
|
+
this.$vidcapContainer.append(this.$captionsWrapper);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
this.currentCaption = -1;
|
|
104
|
+
if (this.prefCaptions === 1) {
|
|
105
|
+
// Captions default to on.
|
|
106
|
+
this.captionsOn = true;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
this.captionsOn = false;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
if (this.transcriptType === 'external' || this.transcriptType === 'popup') {
|
|
113
|
+
// Remove the "Unknown" option from the select box.
|
|
114
|
+
if (this.$unknownTranscriptOption) {
|
|
115
|
+
this.$unknownTranscriptOption.remove();
|
|
116
|
+
this.$unknownTranscriptOption = null;
|
|
117
|
+
}
|
|
118
|
+
var option = $('<option></option>',{
|
|
119
|
+
value: trackLang,
|
|
120
|
+
lang: trackLang
|
|
121
|
+
}).text(trackLabel);
|
|
122
|
+
}
|
|
123
|
+
// alphabetize tracks by label
|
|
124
|
+
if (this.transcriptType === 'external' || this.transcriptType === 'popup') {
|
|
125
|
+
var options = this.$transcriptLanguageSelect.find('option');
|
|
126
|
+
}
|
|
127
|
+
if (this.captions.length === 0) { // this is the first
|
|
128
|
+
this.captions.push({
|
|
129
|
+
'cues': cues,
|
|
130
|
+
'language': trackLang,
|
|
131
|
+
'label': trackLabel,
|
|
132
|
+
'def': isDefaultTrack
|
|
133
|
+
});
|
|
134
|
+
if (this.transcriptType === 'external' || this.transcriptType === 'popup') {
|
|
135
|
+
if (isDefaultTrack) {
|
|
136
|
+
option.prop('selected', true);
|
|
137
|
+
}
|
|
138
|
+
this.$transcriptLanguageSelect.append(option);
|
|
139
|
+
}
|
|
140
|
+
this.captionLabels.push(trackLabel);
|
|
141
|
+
}
|
|
142
|
+
else { // there are already tracks in the array
|
|
143
|
+
var inserted = false;
|
|
144
|
+
for (var i = 0; i < this.captions.length; i++) {
|
|
145
|
+
var capLabel = this.captionLabels[i];
|
|
146
|
+
if (trackLabel.toLowerCase() < this.captionLabels[i].toLowerCase()) {
|
|
147
|
+
// insert before track i
|
|
148
|
+
this.captions.splice(i,0,{
|
|
149
|
+
'cues': cues,
|
|
150
|
+
'language': trackLang,
|
|
151
|
+
'label': trackLabel,
|
|
152
|
+
'def': isDefaultTrack
|
|
153
|
+
});
|
|
154
|
+
if (this.transcriptType === 'external' || this.transcriptType === 'popup') {
|
|
155
|
+
if (isDefaultTrack) {
|
|
156
|
+
option.prop('selected', true);
|
|
157
|
+
}
|
|
158
|
+
option.insertBefore(options.eq(i));
|
|
159
|
+
}
|
|
160
|
+
this.captionLabels.splice(i,0,trackLabel);
|
|
161
|
+
inserted = true;
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
if (!inserted) {
|
|
166
|
+
// just add track to the end
|
|
167
|
+
this.captions.push({
|
|
168
|
+
'cues': cues,
|
|
169
|
+
'language': trackLang,
|
|
170
|
+
'label': trackLabel,
|
|
171
|
+
'def': isDefaultTrack
|
|
172
|
+
});
|
|
173
|
+
if (this.transcriptType === 'external' || this.transcriptType === 'popup') {
|
|
174
|
+
if (isDefaultTrack) {
|
|
175
|
+
option.prop('selected', true);
|
|
176
|
+
}
|
|
177
|
+
this.$transcriptLanguageSelect.append(option);
|
|
178
|
+
}
|
|
179
|
+
this.captionLabels.push(trackLabel);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
if (this.transcriptType === 'external' || this.transcriptType === 'popup') {
|
|
183
|
+
if (this.$transcriptLanguageSelect.find('option').length > 1) {
|
|
184
|
+
// More than one option now, so enable the select.
|
|
185
|
+
this.$transcriptLanguageSelect.prop('disabled', false);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
AblePlayer.prototype.setupDescriptions = function (track, cues) {
|
|
192
|
+
|
|
193
|
+
// called via setupTracks() only if there is track with kind="descriptions"
|
|
194
|
+
// prepares for delivery of text description , in case it's needed
|
|
195
|
+
// whether and how it's delivered is controlled within description.js > initDescription()
|
|
196
|
+
|
|
197
|
+
// srcLang should always be included with <track>, but HTML5 spec doesn't require it
|
|
198
|
+
// if not provided, assume track is the same language as the default player language
|
|
199
|
+
var trackLang = track.getAttribute('srclang') || this.lang;
|
|
200
|
+
|
|
201
|
+
this.hasClosedDesc = true;
|
|
202
|
+
this.currentDescription = -1;
|
|
203
|
+
this.descriptions.push({
|
|
204
|
+
cues: cues,
|
|
205
|
+
language: trackLang
|
|
206
|
+
});
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
AblePlayer.prototype.setupChapters = function (track, cues) {
|
|
210
|
+
|
|
211
|
+
// NOTE: WebVTT supports nested timestamps (to form an outline)
|
|
212
|
+
// This is not currently supported.
|
|
213
|
+
|
|
214
|
+
// srcLang should always be included with <track>, but HTML5 spec doesn't require it
|
|
215
|
+
// if not provided, assume track is the same language as the default player language
|
|
216
|
+
var trackLang = track.getAttribute('srclang') || this.lang;
|
|
217
|
+
|
|
218
|
+
this.hasChapters = true;
|
|
219
|
+
|
|
220
|
+
this.chapters.push({
|
|
221
|
+
cues: cues,
|
|
222
|
+
language: trackLang
|
|
223
|
+
});
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
AblePlayer.prototype.setupMetadata = function(track, cues) {
|
|
227
|
+
if (this.metaType === 'text') {
|
|
228
|
+
// Metadata is only supported if data-meta-div is provided
|
|
229
|
+
// The player does not display metadata internally
|
|
230
|
+
if (this.metaDiv) {
|
|
231
|
+
if ($('#' + this.metaDiv)) {
|
|
232
|
+
// container exists
|
|
233
|
+
this.$metaDiv = $('#' + this.metaDiv);
|
|
234
|
+
this.hasMeta = true;
|
|
235
|
+
this.meta = cues;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
else if (this.metaType === 'selector') {
|
|
240
|
+
this.hasMeta = true;
|
|
241
|
+
this.visibleSelectors = [];
|
|
242
|
+
this.meta = cues;
|
|
243
|
+
}
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
AblePlayer.prototype.loadTextObject = function(src) {
|
|
247
|
+
|
|
248
|
+
var deferred = new $.Deferred();
|
|
249
|
+
var promise = deferred.promise();
|
|
250
|
+
var thisObj = this;
|
|
251
|
+
|
|
252
|
+
// create a temp div for holding data
|
|
253
|
+
var $tempDiv = $('<div>',{
|
|
254
|
+
style: 'display:none'
|
|
255
|
+
});
|
|
256
|
+
|
|
257
|
+
$tempDiv.load(src, function (trackText, status, req) {
|
|
258
|
+
if (status === 'error') {
|
|
259
|
+
if (thisObj.debug) {
|
|
260
|
+
console.log ('error reading file ' + src + ': ' + status);
|
|
261
|
+
}
|
|
262
|
+
deferred.fail();
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
deferred.resolve(src, trackText);
|
|
266
|
+
}
|
|
267
|
+
$tempDiv.remove();
|
|
268
|
+
});
|
|
269
|
+
return promise;
|
|
270
|
+
};
|
|
271
|
+
|
|
272
|
+
AblePlayer.prototype.setupAltCaptions = function() {
|
|
273
|
+
// setup captions from an alternative source (not <track> elements)
|
|
274
|
+
// only do this if no <track> captions are provided
|
|
275
|
+
// currently supports: YouTube
|
|
276
|
+
var deferred = new $.Deferred();
|
|
277
|
+
var promise = deferred.promise();
|
|
278
|
+
|
|
279
|
+
if (this.captions.length === 0) {
|
|
280
|
+
if (this.player === 'youtube' && typeof youTubeDataAPIKey !== 'undefined') {
|
|
281
|
+
this.setupYouTubeCaptions().done(function() {
|
|
282
|
+
deferred.resolve();
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
// repeat for other alt sources once supported (e.g., Vimeo, DailyMotion)
|
|
287
|
+
deferred.resolve();
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
else { // there are <track> captions, so no need for alt source captions
|
|
291
|
+
deferred.resolve();
|
|
292
|
+
}
|
|
293
|
+
return promise;
|
|
294
|
+
};
|
|
295
|
+
|
|
296
|
+
})(jQuery);
|