webshims-rails 1.12.5 → 1.12.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/webshims-rails/version.rb +2 -2
- data/vendor/assets/javascripts/webshims/polyfiller.js +111 -132
- data/vendor/assets/javascripts/webshims/shims/combos/1.js +40 -37
- data/vendor/assets/javascripts/webshims/shims/combos/10.js +217 -36
- data/vendor/assets/javascripts/webshims/shims/combos/11.js +151 -29
- data/vendor/assets/javascripts/webshims/shims/combos/12.js +70 -93
- data/vendor/assets/javascripts/webshims/shims/combos/13.js +70 -93
- data/vendor/assets/javascripts/webshims/shims/combos/14.js +90 -13
- data/vendor/assets/javascripts/webshims/shims/combos/15.js +202 -59
- data/vendor/assets/javascripts/webshims/shims/combos/16.js +208 -70
- data/vendor/assets/javascripts/webshims/shims/combos/17.js +151 -29
- data/vendor/assets/javascripts/webshims/shims/combos/18.js +155 -30
- data/vendor/assets/javascripts/webshims/shims/combos/19.js +79 -20
- data/vendor/assets/javascripts/webshims/shims/combos/2.js +109 -47
- data/vendor/assets/javascripts/webshims/shims/combos/20.js +79 -20
- data/vendor/assets/javascripts/webshims/shims/combos/21.js +80 -87
- data/vendor/assets/javascripts/webshims/shims/combos/22.js +66 -83
- data/vendor/assets/javascripts/webshims/shims/combos/23.js +4 -10
- data/vendor/assets/javascripts/webshims/shims/combos/25.js +79 -20
- data/vendor/assets/javascripts/webshims/shims/combos/26.js +66 -7
- data/vendor/assets/javascripts/webshims/shims/combos/28.js +100 -25
- data/vendor/assets/javascripts/webshims/shims/combos/3.js +192 -47
- data/vendor/assets/javascripts/webshims/shims/combos/30.js +193 -49
- data/vendor/assets/javascripts/webshims/shims/combos/31.js +103 -36
- data/vendor/assets/javascripts/webshims/shims/combos/32.js +5 -3
- data/vendor/assets/javascripts/webshims/shims/combos/33.js +1 -2
- data/vendor/assets/javascripts/webshims/shims/combos/34.js +2048 -0
- data/vendor/assets/javascripts/webshims/shims/combos/4.js +156 -20
- data/vendor/assets/javascripts/webshims/shims/combos/5.js +151 -29
- data/vendor/assets/javascripts/webshims/shims/combos/6.js +152 -31
- data/vendor/assets/javascripts/webshims/shims/combos/7.js +199 -60
- data/vendor/assets/javascripts/webshims/shims/combos/8.js +197 -58
- data/vendor/assets/javascripts/webshims/shims/combos/9.js +218 -38
- data/vendor/assets/javascripts/webshims/shims/combos/97.js +1004 -0
- data/vendor/assets/javascripts/webshims/shims/combos/98.js +1283 -0
- data/vendor/assets/javascripts/webshims/shims/combos/99.js +204 -1248
- data/vendor/assets/javascripts/webshims/shims/dom-extend.js +66 -7
- data/vendor/assets/javascripts/webshims/shims/es5.js +4 -1
- data/vendor/assets/javascripts/webshims/shims/form-combat.js +3 -3
- data/vendor/assets/javascripts/webshims/shims/form-core.js +36 -27
- data/vendor/assets/javascripts/webshims/shims/form-datalist.js +1 -2
- data/vendor/assets/javascripts/webshims/shims/form-fixrangechange.js +137 -0
- data/vendor/assets/javascripts/webshims/shims/form-message.js +90 -13
- data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +129 -15
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +9 -10
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +886 -985
- data/vendor/assets/javascripts/webshims/shims/form-validation.js +78 -174
- data/vendor/assets/javascripts/webshims/shims/form-validators.js +39 -26
- data/vendor/assets/javascripts/webshims/shims/forms-picker.js +45 -17
- data/vendor/assets/javascripts/webshims/shims/geolocation.js +10 -3
- data/vendor/assets/javascripts/webshims/shims/jme/b.js +71 -246
- data/vendor/assets/javascripts/webshims/shims/jme/c.js +133 -1002
- data/vendor/assets/javascripts/webshims/shims/jme/controls.css +62 -23
- data/vendor/assets/javascripts/webshims/shims/jme/controls.scss +73 -10
- data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols-lazy.js +1117 -0
- data/vendor/assets/javascripts/webshims/shims/jme/p.js +603 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/jpicker.css +5 -2
- data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +4 -10
- data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +4 -1
- data/vendor/assets/javascripts/webshims/shims/range-ui.js +22 -14
- data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +29 -344
- data/vendor/assets/javascripts/webshims/shims/styles/forms-picker.css +362 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +6 -483
- data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-picker.scss +488 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/shim-ext.scss +2 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +10 -2
- data/vendor/assets/javascripts/webshims/shims/styles/shim.css +6 -2
- data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/track-ui.js +8 -1
- data/vendor/assets/javascripts/webshims/shims/track.js +66 -83
- metadata +12 -5
- data/vendor/assets/javascripts/webshims/shims/$ajax.js +0 -862
- data/vendor/assets/javascripts/webshims/shims/combos/24.js +0 -2087
@@ -238,7 +238,6 @@ webshims.isReady('swfmini', true);
|
|
238
238
|
|
239
239
|
var wsCfg = webshims.cfg;
|
240
240
|
var options = wsCfg.mediaelement;
|
241
|
-
var hasFullTrackSupport;
|
242
241
|
var hasSwf;
|
243
242
|
if(!options){
|
244
243
|
webshims.error("mediaelement wasn't implemented but loaded");
|
@@ -280,11 +279,9 @@ webshims.isReady('swfmini', true);
|
|
280
279
|
}
|
281
280
|
})();
|
282
281
|
}
|
283
|
-
hasFullTrackSupport = Modernizr.track && !bugs.track;
|
284
282
|
|
285
283
|
webshims.register('mediaelement-core', function($, webshims, window, document, undefined, options){
|
286
284
|
hasSwf = swfmini.hasFlashPlayerVersion('10.0.3');
|
287
|
-
$('html').addClass(hasSwf ? 'swf' : 'no-swf');
|
288
285
|
var mediaelement = webshims.mediaelement;
|
289
286
|
|
290
287
|
mediaelement.parseRtmp = function(data){
|
@@ -663,6 +660,9 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
663
660
|
if(hasNative && (!data || data.isActive == 'html5') && supLoad.prop._supvalue){
|
664
661
|
supLoad.prop._supvalue.apply(this, arguments);
|
665
662
|
}
|
663
|
+
if(!loadTrackUi.loaded && $('track', this).length){
|
664
|
+
loadTrackUi();
|
665
|
+
}
|
666
666
|
$(this).triggerHandler('wsmediareload');
|
667
667
|
}
|
668
668
|
}
|
@@ -733,13 +733,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
733
733
|
}
|
734
734
|
};
|
735
735
|
|
736
|
-
|
737
|
-
webshims.defineProperty(TextTrack.prototype, 'shimActiveCues', {
|
738
|
-
get: function(){
|
739
|
-
return this._shimActiveCues || this.activeCues;
|
740
|
-
}
|
741
|
-
});
|
742
|
-
}
|
736
|
+
|
743
737
|
//set native implementation ready, before swf api is retested
|
744
738
|
if(hasNative){
|
745
739
|
webshims.isReady('mediaelement-core', true);
|
@@ -756,12 +750,8 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
756
750
|
"use strict";
|
757
751
|
var mediaelement = webshims.mediaelement;
|
758
752
|
var id = new Date().getTime();
|
759
|
-
var ADDBACK = $.fn.addBack ? 'addBack' : 'andSelf';
|
760
753
|
//descriptions are not really shown, but they are inserted into the dom
|
761
754
|
var showTracks = {subtitles: 1, captions: 1, descriptions: 1};
|
762
|
-
var notImplemented = function(){
|
763
|
-
webshims.error('not implemented yet');
|
764
|
-
};
|
765
755
|
var dummyTrack = $('<track />');
|
766
756
|
var supportTrackMod = Modernizr.ES5 && Modernizr.objectAccessor;
|
767
757
|
var createEventTarget = function(obj){
|
@@ -863,9 +853,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
863
853
|
};
|
864
854
|
var copyProps = ['kind', 'label', 'srclang'];
|
865
855
|
var copyName = {srclang: 'language'};
|
866
|
-
|
867
|
-
var owns = Function.prototype.call.bind(Object.prototype.hasOwnProperty);
|
868
|
-
|
856
|
+
|
869
857
|
var updateMediaTrackList = function(baseData, trackList){
|
870
858
|
var removed = [];
|
871
859
|
var added = [];
|
@@ -968,60 +956,44 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
968
956
|
};
|
969
957
|
})();
|
970
958
|
var emptyDiv = $('<div />')[0];
|
959
|
+
|
971
960
|
function VTTCue(startTime, endTime, text){
|
972
961
|
if(arguments.length != 3){
|
973
962
|
webshims.error("wrong arguments.length for VTTCue.constructor");
|
974
963
|
}
|
975
|
-
|
964
|
+
|
976
965
|
this.startTime = startTime;
|
977
966
|
this.endTime = endTime;
|
978
967
|
this.text = text;
|
979
|
-
|
980
|
-
|
981
|
-
|
982
|
-
|
983
|
-
|
984
|
-
|
985
|
-
|
986
|
-
onenter: null,
|
987
|
-
onexit: null,
|
988
|
-
pauseOnExit: false,
|
989
|
-
getCueAsHTML: function(){
|
968
|
+
this.onenter = null;
|
969
|
+
this.onexit = null;
|
970
|
+
this.pauseOnExit = false;
|
971
|
+
this.track = null;
|
972
|
+
this.id = null;
|
973
|
+
this.getCueAsHTML = (function(){
|
990
974
|
var lastText = "";
|
991
975
|
var parsedText = "";
|
992
|
-
var fragment
|
993
|
-
|
994
|
-
|
995
|
-
|
996
|
-
|
997
|
-
|
998
|
-
|
999
|
-
|
1000
|
-
|
1001
|
-
|
1002
|
-
|
1003
|
-
|
1004
|
-
|
976
|
+
var fragment;
|
977
|
+
|
978
|
+
return function(){
|
979
|
+
var i, len;
|
980
|
+
if(!fragment){
|
981
|
+
fragment = document.createDocumentFragment();
|
982
|
+
}
|
983
|
+
if(lastText != this.text){
|
984
|
+
lastText = this.text;
|
985
|
+
parsedText = mediaelement.parseCueTextToHTML(lastText);
|
986
|
+
emptyDiv.innerHTML = parsedText;
|
987
|
+
|
988
|
+
for(i = 0, len = emptyDiv.childNodes.length; i < len; i++){
|
989
|
+
fragment.appendChild(emptyDiv.childNodes[i].cloneNode(true));
|
1005
990
|
}
|
1006
|
-
|
1007
|
-
|
1008
|
-
|
1009
|
-
|
1010
|
-
|
1011
|
-
|
1012
|
-
track: null,
|
1013
|
-
|
1014
|
-
|
1015
|
-
id: ''
|
1016
|
-
//todo-->
|
1017
|
-
// ,
|
1018
|
-
// snapToLines: true,
|
1019
|
-
// line: 'auto',
|
1020
|
-
// size: 100,
|
1021
|
-
// position: 50,
|
1022
|
-
// vertical: '',
|
1023
|
-
// align: 'middle'
|
1024
|
-
};
|
991
|
+
}
|
992
|
+
return fragment.cloneNode(true);
|
993
|
+
};
|
994
|
+
|
995
|
+
})();
|
996
|
+
}
|
1025
997
|
|
1026
998
|
window.VTTCue = VTTCue;
|
1027
999
|
window.TextTrackCue = function(){
|
@@ -1072,14 +1044,15 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
1072
1044
|
})();
|
1073
1045
|
|
1074
1046
|
mediaelement.loadTextTrack = function(mediaelem, track, trackData, _default){
|
1075
|
-
var loadEvents = 'play playing
|
1047
|
+
var loadEvents = 'play playing';
|
1076
1048
|
var obj = trackData.track;
|
1077
1049
|
var load = function(){
|
1078
1050
|
var error, ajax, createAjax;
|
1079
|
-
|
1080
1051
|
var src = obj.mode != 'disabled' && ($.attr(track, 'src') && $.prop(track, 'src'));
|
1052
|
+
|
1081
1053
|
if(src){
|
1082
|
-
$(mediaelem).off(loadEvents, load);
|
1054
|
+
$(mediaelem).off(loadEvents, load).off('updatetrackdisplay', load);
|
1055
|
+
|
1083
1056
|
if(!trackData.readyState){
|
1084
1057
|
error = function(){
|
1085
1058
|
trackData.readyState = 3;
|
@@ -1113,7 +1086,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
1113
1086
|
error: error
|
1114
1087
|
});
|
1115
1088
|
};
|
1116
|
-
if($.ajax){
|
1089
|
+
if($.ajax && $.ajaxSettings.xhr){
|
1117
1090
|
createAjax();
|
1118
1091
|
} else {
|
1119
1092
|
webshims.ready('jajax', createAjax);
|
@@ -1131,11 +1104,15 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
1131
1104
|
obj._shimActiveCues = null;
|
1132
1105
|
obj.activeCues = null;
|
1133
1106
|
obj.cues = null;
|
1134
|
-
|
1107
|
+
|
1135
1108
|
$(mediaelem).on(loadEvents, load);
|
1136
1109
|
if(_default){
|
1137
1110
|
obj.mode = showTracks[obj.kind] ? 'showing' : 'hidden';
|
1138
|
-
load
|
1111
|
+
webshims.ready('WINDOWLOAD', load);
|
1112
|
+
} else {
|
1113
|
+
webshims.ready('WINDOWLOAD', function(){
|
1114
|
+
$(mediaelem).on('updatetrackdisplay', load);
|
1115
|
+
});
|
1139
1116
|
}
|
1140
1117
|
};
|
1141
1118
|
|
@@ -1164,7 +1141,6 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
1164
1141
|
|
1165
1142
|
|
1166
1143
|
if(track.nodeName){
|
1167
|
-
|
1168
1144
|
if(supportTrackMod){
|
1169
1145
|
copyProps.forEach(function(copyProp){
|
1170
1146
|
webshims.defineProperty(obj, copyName[copyProp] || copyProp, {
|
@@ -1199,8 +1175,8 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
1199
1175
|
|
1200
1176
|
return obj;
|
1201
1177
|
};
|
1202
|
-
|
1203
|
-
|
1178
|
+
|
1179
|
+
|
1204
1180
|
/*
|
1205
1181
|
taken from:
|
1206
1182
|
Captionator 0.5.1 [CaptionCrunch]
|
@@ -1217,7 +1193,7 @@ modified for webshims
|
|
1217
1193
|
var WebVTTDEFAULTSCueParser = /^(DEFAULTS|DEFAULT)\s+\-\-\>\s+(.*)/g;
|
1218
1194
|
var WebVTTSTYLECueParser = /^(STYLE|STYLES)\s+\-\-\>\s*\n([\s\S]*)/g;
|
1219
1195
|
var WebVTTCOMMENTCueParser = /^(COMMENT|COMMENTS)\s+\-\-\>\s+(.*)/g;
|
1220
|
-
|
1196
|
+
|
1221
1197
|
return function(subtitleElement,objectCount){
|
1222
1198
|
|
1223
1199
|
var subtitleParts, timeIn, timeOut, html, timeData, subtitlePartIndex, id, specialCueData;
|
@@ -1233,33 +1209,33 @@ modified for webshims
|
|
1233
1209
|
} else if ((specialCueData = WebVTTCOMMENTCueParser.exec(subtitleElement))) {
|
1234
1210
|
return null; // At this stage, we don't want to do anything with these.
|
1235
1211
|
}
|
1236
|
-
|
1212
|
+
|
1237
1213
|
subtitleParts = subtitleElement.split(/\n/g);
|
1238
|
-
|
1214
|
+
|
1239
1215
|
// Trim off any blank lines (logically, should only be max. one, but loop to be sure)
|
1240
1216
|
while (!subtitleParts[0].replace(/\s+/ig,"").length && subtitleParts.length > 0) {
|
1241
1217
|
subtitleParts.shift();
|
1242
1218
|
}
|
1243
|
-
|
1219
|
+
|
1244
1220
|
if (subtitleParts[0].match(/^\s*[a-z0-9-\_]+\s*$/ig)) {
|
1245
1221
|
// The identifier becomes the cue ID (when *we* load the cues from file. Programatically created cues can have an ID of whatever.)
|
1246
1222
|
id = String(subtitleParts.shift().replace(/\s*/ig,""));
|
1247
1223
|
}
|
1248
|
-
|
1224
|
+
|
1249
1225
|
for (subtitlePartIndex = 0; subtitlePartIndex < subtitleParts.length; subtitlePartIndex ++) {
|
1250
1226
|
var timestamp = subtitleParts[subtitlePartIndex];
|
1251
|
-
|
1227
|
+
|
1252
1228
|
if ((timestampMatch = WebVTTTimestampParser.exec(timestamp))) {
|
1253
|
-
|
1229
|
+
|
1254
1230
|
// WebVTT
|
1255
|
-
|
1231
|
+
|
1256
1232
|
timeData = timestampMatch.slice(1);
|
1257
|
-
|
1233
|
+
|
1258
1234
|
timeIn = parseInt((timeData[0]||0) * 60 * 60,10) + // Hours
|
1259
1235
|
parseInt((timeData[1]||0) * 60,10) + // Minutes
|
1260
1236
|
parseInt((timeData[2]||0),10) + // Seconds
|
1261
1237
|
parseFloat("0." + (timeData[3]||0)); // MS
|
1262
|
-
|
1238
|
+
|
1263
1239
|
timeOut = parseInt((timeData[4]||0) * 60 * 60,10) + // Hours
|
1264
1240
|
parseInt((timeData[5]||0) * 60,10) + // Minutes
|
1265
1241
|
parseInt((timeData[6]||0),10) + // Seconds
|
@@ -1270,7 +1246,7 @@ modified for webshims
|
|
1270
1246
|
}
|
1271
1247
|
*/
|
1272
1248
|
}
|
1273
|
-
|
1249
|
+
|
1274
1250
|
// We've got the timestamp - return all the other unmatched lines as the raw subtitle data
|
1275
1251
|
subtitleParts = subtitleParts.slice(0,subtitlePartIndex).concat(subtitleParts.slice(subtitlePartIndex+1));
|
1276
1252
|
break;
|
@@ -1289,7 +1265,7 @@ modified for webshims
|
|
1289
1265
|
previous[current.split(":")[0]] = current.split(":")[1];
|
1290
1266
|
return previous;
|
1291
1267
|
},{});
|
1292
|
-
|
1268
|
+
|
1293
1269
|
// Loop through cue settings, replace defaults with cue specific settings if they exist
|
1294
1270
|
compositeCueSettings =
|
1295
1271
|
cueSettings
|
@@ -1300,7 +1276,7 @@ modified for webshims
|
|
1300
1276
|
previous[current.split(":")[0]] = current.split(":")[1];
|
1301
1277
|
return previous;
|
1302
1278
|
},compositeCueSettings);
|
1303
|
-
|
1279
|
+
|
1304
1280
|
// Turn back into string like the VTTCue constructor expects
|
1305
1281
|
cueSettings = "";
|
1306
1282
|
for (var key in compositeCueSettings) {
|
@@ -1319,18 +1295,18 @@ modified for webshims
|
|
1319
1295
|
return tmpCue;
|
1320
1296
|
};
|
1321
1297
|
})();
|
1322
|
-
|
1298
|
+
|
1323
1299
|
mediaelement.parseCaptions = function(captionData, track, complete) {
|
1324
1300
|
|
1325
1301
|
var cue, lazyProcess, regWevVTT, startDate, isWEBVTT;
|
1326
1302
|
|
1327
1303
|
mediaelement.createCueList();
|
1328
1304
|
if (captionData) {
|
1329
|
-
|
1305
|
+
|
1330
1306
|
regWevVTT = /^WEBVTT(\s*FILE)?/ig;
|
1331
|
-
|
1307
|
+
|
1332
1308
|
lazyProcess = function(i, len){
|
1333
|
-
|
1309
|
+
|
1334
1310
|
for(; i < len; i++){
|
1335
1311
|
cue = captionData[i];
|
1336
1312
|
if(regWevVTT.test(cue)){
|
@@ -1352,7 +1328,7 @@ modified for webshims
|
|
1352
1328
|
startDate = new Date().getTime();
|
1353
1329
|
lazyProcess(i, len);
|
1354
1330
|
}, 90);
|
1355
|
-
|
1331
|
+
|
1356
1332
|
break;
|
1357
1333
|
}
|
1358
1334
|
}
|
@@ -1363,9 +1339,9 @@ modified for webshims
|
|
1363
1339
|
complete(track.cues);
|
1364
1340
|
}
|
1365
1341
|
};
|
1366
|
-
|
1342
|
+
|
1367
1343
|
captionData = captionData.replace(/\r\n/g,"\n");
|
1368
|
-
|
1344
|
+
|
1369
1345
|
setTimeout(function(){
|
1370
1346
|
captionData = captionData.replace(/\r/g,"\n");
|
1371
1347
|
setTimeout(function(){
|
@@ -1374,12 +1350,12 @@ modified for webshims
|
|
1374
1350
|
lazyProcess(0, captionData.length);
|
1375
1351
|
}, 9);
|
1376
1352
|
}, 9);
|
1377
|
-
|
1353
|
+
|
1378
1354
|
} else {
|
1379
1355
|
webshims.error("Required parameter captionData not supplied.");
|
1380
1356
|
}
|
1381
1357
|
};
|
1382
|
-
|
1358
|
+
|
1383
1359
|
|
1384
1360
|
mediaelement.createTrackList = function(mediaelem, baseData){
|
1385
1361
|
baseData = baseData || webshims.data(mediaelem, 'mediaelementBase') || webshims.data(mediaelem, 'mediaelementBase', {});
|
@@ -1601,8 +1577,9 @@ modified for webshims
|
|
1601
1577
|
if(Modernizr.track){
|
1602
1578
|
var shimedTextTracks = $.prop(this, 'textTracks');
|
1603
1579
|
var origTextTracks = this.textTracks;
|
1580
|
+
|
1604
1581
|
if(shimedTextTracks.length != origTextTracks.length){
|
1605
|
-
webshims.
|
1582
|
+
webshims.warn("textTracks couldn't be copied");
|
1606
1583
|
}
|
1607
1584
|
|
1608
1585
|
$('track', this).each(hideNativeTracks);
|
@@ -15,7 +15,6 @@
|
|
15
15
|
|
16
16
|
var wsCfg = webshims.cfg;
|
17
17
|
var options = wsCfg.mediaelement;
|
18
|
-
var hasFullTrackSupport;
|
19
18
|
var hasSwf;
|
20
19
|
if(!options){
|
21
20
|
webshims.error("mediaelement wasn't implemented but loaded");
|
@@ -57,11 +56,9 @@
|
|
57
56
|
}
|
58
57
|
})();
|
59
58
|
}
|
60
|
-
hasFullTrackSupport = Modernizr.track && !bugs.track;
|
61
59
|
|
62
60
|
webshims.register('mediaelement-core', function($, webshims, window, document, undefined, options){
|
63
61
|
hasSwf = swfmini.hasFlashPlayerVersion('10.0.3');
|
64
|
-
$('html').addClass(hasSwf ? 'swf' : 'no-swf');
|
65
62
|
var mediaelement = webshims.mediaelement;
|
66
63
|
|
67
64
|
mediaelement.parseRtmp = function(data){
|
@@ -440,6 +437,9 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
440
437
|
if(hasNative && (!data || data.isActive == 'html5') && supLoad.prop._supvalue){
|
441
438
|
supLoad.prop._supvalue.apply(this, arguments);
|
442
439
|
}
|
440
|
+
if(!loadTrackUi.loaded && $('track', this).length){
|
441
|
+
loadTrackUi();
|
442
|
+
}
|
443
443
|
$(this).triggerHandler('wsmediareload');
|
444
444
|
}
|
445
445
|
}
|
@@ -510,13 +510,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
510
510
|
}
|
511
511
|
};
|
512
512
|
|
513
|
-
|
514
|
-
webshims.defineProperty(TextTrack.prototype, 'shimActiveCues', {
|
515
|
-
get: function(){
|
516
|
-
return this._shimActiveCues || this.activeCues;
|
517
|
-
}
|
518
|
-
});
|
519
|
-
}
|
513
|
+
|
520
514
|
//set native implementation ready, before swf api is retested
|
521
515
|
if(hasNative){
|
522
516
|
webshims.isReady('mediaelement-core', true);
|
@@ -533,12 +527,8 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
533
527
|
"use strict";
|
534
528
|
var mediaelement = webshims.mediaelement;
|
535
529
|
var id = new Date().getTime();
|
536
|
-
var ADDBACK = $.fn.addBack ? 'addBack' : 'andSelf';
|
537
530
|
//descriptions are not really shown, but they are inserted into the dom
|
538
531
|
var showTracks = {subtitles: 1, captions: 1, descriptions: 1};
|
539
|
-
var notImplemented = function(){
|
540
|
-
webshims.error('not implemented yet');
|
541
|
-
};
|
542
532
|
var dummyTrack = $('<track />');
|
543
533
|
var supportTrackMod = Modernizr.ES5 && Modernizr.objectAccessor;
|
544
534
|
var createEventTarget = function(obj){
|
@@ -640,9 +630,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
640
630
|
};
|
641
631
|
var copyProps = ['kind', 'label', 'srclang'];
|
642
632
|
var copyName = {srclang: 'language'};
|
643
|
-
|
644
|
-
var owns = Function.prototype.call.bind(Object.prototype.hasOwnProperty);
|
645
|
-
|
633
|
+
|
646
634
|
var updateMediaTrackList = function(baseData, trackList){
|
647
635
|
var removed = [];
|
648
636
|
var added = [];
|
@@ -745,60 +733,44 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
745
733
|
};
|
746
734
|
})();
|
747
735
|
var emptyDiv = $('<div />')[0];
|
736
|
+
|
748
737
|
function VTTCue(startTime, endTime, text){
|
749
738
|
if(arguments.length != 3){
|
750
739
|
webshims.error("wrong arguments.length for VTTCue.constructor");
|
751
740
|
}
|
752
|
-
|
741
|
+
|
753
742
|
this.startTime = startTime;
|
754
743
|
this.endTime = endTime;
|
755
744
|
this.text = text;
|
756
|
-
|
757
|
-
|
758
|
-
|
759
|
-
|
760
|
-
|
761
|
-
|
762
|
-
|
763
|
-
onenter: null,
|
764
|
-
onexit: null,
|
765
|
-
pauseOnExit: false,
|
766
|
-
getCueAsHTML: function(){
|
745
|
+
this.onenter = null;
|
746
|
+
this.onexit = null;
|
747
|
+
this.pauseOnExit = false;
|
748
|
+
this.track = null;
|
749
|
+
this.id = null;
|
750
|
+
this.getCueAsHTML = (function(){
|
767
751
|
var lastText = "";
|
768
752
|
var parsedText = "";
|
769
|
-
var fragment
|
770
|
-
|
771
|
-
|
772
|
-
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
|
778
|
-
|
779
|
-
|
780
|
-
|
781
|
-
|
753
|
+
var fragment;
|
754
|
+
|
755
|
+
return function(){
|
756
|
+
var i, len;
|
757
|
+
if(!fragment){
|
758
|
+
fragment = document.createDocumentFragment();
|
759
|
+
}
|
760
|
+
if(lastText != this.text){
|
761
|
+
lastText = this.text;
|
762
|
+
parsedText = mediaelement.parseCueTextToHTML(lastText);
|
763
|
+
emptyDiv.innerHTML = parsedText;
|
764
|
+
|
765
|
+
for(i = 0, len = emptyDiv.childNodes.length; i < len; i++){
|
766
|
+
fragment.appendChild(emptyDiv.childNodes[i].cloneNode(true));
|
782
767
|
}
|
783
|
-
|
784
|
-
|
785
|
-
|
786
|
-
|
787
|
-
|
788
|
-
|
789
|
-
track: null,
|
790
|
-
|
791
|
-
|
792
|
-
id: ''
|
793
|
-
//todo-->
|
794
|
-
// ,
|
795
|
-
// snapToLines: true,
|
796
|
-
// line: 'auto',
|
797
|
-
// size: 100,
|
798
|
-
// position: 50,
|
799
|
-
// vertical: '',
|
800
|
-
// align: 'middle'
|
801
|
-
};
|
768
|
+
}
|
769
|
+
return fragment.cloneNode(true);
|
770
|
+
};
|
771
|
+
|
772
|
+
})();
|
773
|
+
}
|
802
774
|
|
803
775
|
window.VTTCue = VTTCue;
|
804
776
|
window.TextTrackCue = function(){
|
@@ -849,14 +821,15 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
849
821
|
})();
|
850
822
|
|
851
823
|
mediaelement.loadTextTrack = function(mediaelem, track, trackData, _default){
|
852
|
-
var loadEvents = 'play playing
|
824
|
+
var loadEvents = 'play playing';
|
853
825
|
var obj = trackData.track;
|
854
826
|
var load = function(){
|
855
827
|
var error, ajax, createAjax;
|
856
|
-
|
857
828
|
var src = obj.mode != 'disabled' && ($.attr(track, 'src') && $.prop(track, 'src'));
|
829
|
+
|
858
830
|
if(src){
|
859
|
-
$(mediaelem).off(loadEvents, load);
|
831
|
+
$(mediaelem).off(loadEvents, load).off('updatetrackdisplay', load);
|
832
|
+
|
860
833
|
if(!trackData.readyState){
|
861
834
|
error = function(){
|
862
835
|
trackData.readyState = 3;
|
@@ -890,7 +863,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
890
863
|
error: error
|
891
864
|
});
|
892
865
|
};
|
893
|
-
if($.ajax){
|
866
|
+
if($.ajax && $.ajaxSettings.xhr){
|
894
867
|
createAjax();
|
895
868
|
} else {
|
896
869
|
webshims.ready('jajax', createAjax);
|
@@ -908,11 +881,15 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
908
881
|
obj._shimActiveCues = null;
|
909
882
|
obj.activeCues = null;
|
910
883
|
obj.cues = null;
|
911
|
-
|
884
|
+
|
912
885
|
$(mediaelem).on(loadEvents, load);
|
913
886
|
if(_default){
|
914
887
|
obj.mode = showTracks[obj.kind] ? 'showing' : 'hidden';
|
915
|
-
load
|
888
|
+
webshims.ready('WINDOWLOAD', load);
|
889
|
+
} else {
|
890
|
+
webshims.ready('WINDOWLOAD', function(){
|
891
|
+
$(mediaelem).on('updatetrackdisplay', load);
|
892
|
+
});
|
916
893
|
}
|
917
894
|
};
|
918
895
|
|
@@ -941,7 +918,6 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
941
918
|
|
942
919
|
|
943
920
|
if(track.nodeName){
|
944
|
-
|
945
921
|
if(supportTrackMod){
|
946
922
|
copyProps.forEach(function(copyProp){
|
947
923
|
webshims.defineProperty(obj, copyName[copyProp] || copyProp, {
|
@@ -976,8 +952,8 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
976
952
|
|
977
953
|
return obj;
|
978
954
|
};
|
979
|
-
|
980
|
-
|
955
|
+
|
956
|
+
|
981
957
|
/*
|
982
958
|
taken from:
|
983
959
|
Captionator 0.5.1 [CaptionCrunch]
|
@@ -994,7 +970,7 @@ modified for webshims
|
|
994
970
|
var WebVTTDEFAULTSCueParser = /^(DEFAULTS|DEFAULT)\s+\-\-\>\s+(.*)/g;
|
995
971
|
var WebVTTSTYLECueParser = /^(STYLE|STYLES)\s+\-\-\>\s*\n([\s\S]*)/g;
|
996
972
|
var WebVTTCOMMENTCueParser = /^(COMMENT|COMMENTS)\s+\-\-\>\s+(.*)/g;
|
997
|
-
|
973
|
+
|
998
974
|
return function(subtitleElement,objectCount){
|
999
975
|
|
1000
976
|
var subtitleParts, timeIn, timeOut, html, timeData, subtitlePartIndex, id, specialCueData;
|
@@ -1010,33 +986,33 @@ modified for webshims
|
|
1010
986
|
} else if ((specialCueData = WebVTTCOMMENTCueParser.exec(subtitleElement))) {
|
1011
987
|
return null; // At this stage, we don't want to do anything with these.
|
1012
988
|
}
|
1013
|
-
|
989
|
+
|
1014
990
|
subtitleParts = subtitleElement.split(/\n/g);
|
1015
|
-
|
991
|
+
|
1016
992
|
// Trim off any blank lines (logically, should only be max. one, but loop to be sure)
|
1017
993
|
while (!subtitleParts[0].replace(/\s+/ig,"").length && subtitleParts.length > 0) {
|
1018
994
|
subtitleParts.shift();
|
1019
995
|
}
|
1020
|
-
|
996
|
+
|
1021
997
|
if (subtitleParts[0].match(/^\s*[a-z0-9-\_]+\s*$/ig)) {
|
1022
998
|
// The identifier becomes the cue ID (when *we* load the cues from file. Programatically created cues can have an ID of whatever.)
|
1023
999
|
id = String(subtitleParts.shift().replace(/\s*/ig,""));
|
1024
1000
|
}
|
1025
|
-
|
1001
|
+
|
1026
1002
|
for (subtitlePartIndex = 0; subtitlePartIndex < subtitleParts.length; subtitlePartIndex ++) {
|
1027
1003
|
var timestamp = subtitleParts[subtitlePartIndex];
|
1028
|
-
|
1004
|
+
|
1029
1005
|
if ((timestampMatch = WebVTTTimestampParser.exec(timestamp))) {
|
1030
|
-
|
1006
|
+
|
1031
1007
|
// WebVTT
|
1032
|
-
|
1008
|
+
|
1033
1009
|
timeData = timestampMatch.slice(1);
|
1034
|
-
|
1010
|
+
|
1035
1011
|
timeIn = parseInt((timeData[0]||0) * 60 * 60,10) + // Hours
|
1036
1012
|
parseInt((timeData[1]||0) * 60,10) + // Minutes
|
1037
1013
|
parseInt((timeData[2]||0),10) + // Seconds
|
1038
1014
|
parseFloat("0." + (timeData[3]||0)); // MS
|
1039
|
-
|
1015
|
+
|
1040
1016
|
timeOut = parseInt((timeData[4]||0) * 60 * 60,10) + // Hours
|
1041
1017
|
parseInt((timeData[5]||0) * 60,10) + // Minutes
|
1042
1018
|
parseInt((timeData[6]||0),10) + // Seconds
|
@@ -1047,7 +1023,7 @@ modified for webshims
|
|
1047
1023
|
}
|
1048
1024
|
*/
|
1049
1025
|
}
|
1050
|
-
|
1026
|
+
|
1051
1027
|
// We've got the timestamp - return all the other unmatched lines as the raw subtitle data
|
1052
1028
|
subtitleParts = subtitleParts.slice(0,subtitlePartIndex).concat(subtitleParts.slice(subtitlePartIndex+1));
|
1053
1029
|
break;
|
@@ -1066,7 +1042,7 @@ modified for webshims
|
|
1066
1042
|
previous[current.split(":")[0]] = current.split(":")[1];
|
1067
1043
|
return previous;
|
1068
1044
|
},{});
|
1069
|
-
|
1045
|
+
|
1070
1046
|
// Loop through cue settings, replace defaults with cue specific settings if they exist
|
1071
1047
|
compositeCueSettings =
|
1072
1048
|
cueSettings
|
@@ -1077,7 +1053,7 @@ modified for webshims
|
|
1077
1053
|
previous[current.split(":")[0]] = current.split(":")[1];
|
1078
1054
|
return previous;
|
1079
1055
|
},compositeCueSettings);
|
1080
|
-
|
1056
|
+
|
1081
1057
|
// Turn back into string like the VTTCue constructor expects
|
1082
1058
|
cueSettings = "";
|
1083
1059
|
for (var key in compositeCueSettings) {
|
@@ -1096,18 +1072,18 @@ modified for webshims
|
|
1096
1072
|
return tmpCue;
|
1097
1073
|
};
|
1098
1074
|
})();
|
1099
|
-
|
1075
|
+
|
1100
1076
|
mediaelement.parseCaptions = function(captionData, track, complete) {
|
1101
1077
|
|
1102
1078
|
var cue, lazyProcess, regWevVTT, startDate, isWEBVTT;
|
1103
1079
|
|
1104
1080
|
mediaelement.createCueList();
|
1105
1081
|
if (captionData) {
|
1106
|
-
|
1082
|
+
|
1107
1083
|
regWevVTT = /^WEBVTT(\s*FILE)?/ig;
|
1108
|
-
|
1084
|
+
|
1109
1085
|
lazyProcess = function(i, len){
|
1110
|
-
|
1086
|
+
|
1111
1087
|
for(; i < len; i++){
|
1112
1088
|
cue = captionData[i];
|
1113
1089
|
if(regWevVTT.test(cue)){
|
@@ -1129,7 +1105,7 @@ modified for webshims
|
|
1129
1105
|
startDate = new Date().getTime();
|
1130
1106
|
lazyProcess(i, len);
|
1131
1107
|
}, 90);
|
1132
|
-
|
1108
|
+
|
1133
1109
|
break;
|
1134
1110
|
}
|
1135
1111
|
}
|
@@ -1140,9 +1116,9 @@ modified for webshims
|
|
1140
1116
|
complete(track.cues);
|
1141
1117
|
}
|
1142
1118
|
};
|
1143
|
-
|
1119
|
+
|
1144
1120
|
captionData = captionData.replace(/\r\n/g,"\n");
|
1145
|
-
|
1121
|
+
|
1146
1122
|
setTimeout(function(){
|
1147
1123
|
captionData = captionData.replace(/\r/g,"\n");
|
1148
1124
|
setTimeout(function(){
|
@@ -1151,12 +1127,12 @@ modified for webshims
|
|
1151
1127
|
lazyProcess(0, captionData.length);
|
1152
1128
|
}, 9);
|
1153
1129
|
}, 9);
|
1154
|
-
|
1130
|
+
|
1155
1131
|
} else {
|
1156
1132
|
webshims.error("Required parameter captionData not supplied.");
|
1157
1133
|
}
|
1158
1134
|
};
|
1159
|
-
|
1135
|
+
|
1160
1136
|
|
1161
1137
|
mediaelement.createTrackList = function(mediaelem, baseData){
|
1162
1138
|
baseData = baseData || webshims.data(mediaelem, 'mediaelementBase') || webshims.data(mediaelem, 'mediaelementBase', {});
|
@@ -1378,8 +1354,9 @@ modified for webshims
|
|
1378
1354
|
if(Modernizr.track){
|
1379
1355
|
var shimedTextTracks = $.prop(this, 'textTracks');
|
1380
1356
|
var origTextTracks = this.textTracks;
|
1357
|
+
|
1381
1358
|
if(shimedTextTracks.length != origTextTracks.length){
|
1382
|
-
webshims.
|
1359
|
+
webshims.warn("textTracks couldn't be copied");
|
1383
1360
|
}
|
1384
1361
|
|
1385
1362
|
$('track', this).each(hideNativeTracks);
|