webshims-rails 1.14.1 → 1.14.3
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/extras/modernizr-custom.js +0 -0
- data/vendor/assets/javascripts/webshims/polyfiller.js +3 -8
- data/vendor/assets/javascripts/webshims/shims/FlashCanvas/canvas2png.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvas/flashcanvas.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvas/flashcanvas.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvas/proxy.php +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvas/save.php +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/canvas2png.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/flash10canvas.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/flash9canvas.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/flashcanvas.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/proxy.php +0 -0
- data/vendor/assets/javascripts/webshims/shims/FlashCanvasPro/save.php +0 -0
- data/vendor/assets/javascripts/webshims/shims/color-picker.js +2 -2
- data/vendor/assets/javascripts/webshims/shims/combos/1.js +66 -43
- data/vendor/assets/javascripts/webshims/shims/combos/10.js +66 -31
- data/vendor/assets/javascripts/webshims/shims/combos/11.js +66 -31
- data/vendor/assets/javascripts/webshims/shims/combos/12.js +96 -59
- data/vendor/assets/javascripts/webshims/shims/combos/13.js +96 -59
- data/vendor/assets/javascripts/webshims/shims/combos/14.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/15.js +4 -1
- data/vendor/assets/javascripts/webshims/shims/combos/16.js +70 -44
- data/vendor/assets/javascripts/webshims/shims/combos/17.js +66 -31
- data/vendor/assets/javascripts/webshims/shims/combos/18.js +1241 -1126
- data/vendor/assets/javascripts/webshims/shims/combos/19.js +1272 -1214
- data/vendor/assets/javascripts/webshims/shims/combos/2.js +66 -43
- data/vendor/assets/javascripts/webshims/shims/combos/20.js +1272 -1214
- data/vendor/assets/javascripts/webshims/shims/combos/21.js +61 -92
- data/vendor/assets/javascripts/webshims/shims/combos/22.js +30 -16
- data/vendor/assets/javascripts/webshims/shims/combos/23.js +66 -43
- data/vendor/assets/javascripts/webshims/shims/combos/25.js +41 -85
- data/vendor/assets/javascripts/webshims/shims/combos/26.js +1556 -2316
- data/vendor/assets/javascripts/webshims/shims/combos/27.js +12 -10
- data/vendor/assets/javascripts/webshims/shims/combos/28.js +4 -1
- data/vendor/assets/javascripts/webshims/shims/combos/29.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/3.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/30.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/31.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/32.js +1175 -1095
- data/vendor/assets/javascripts/webshims/shims/combos/33.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/34.js +30 -16
- data/vendor/assets/javascripts/webshims/shims/combos/4.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/combos/5.js +66 -31
- data/vendor/assets/javascripts/webshims/shims/combos/6.js +66 -31
- data/vendor/assets/javascripts/webshims/shims/combos/7.js +66 -43
- data/vendor/assets/javascripts/webshims/shims/combos/8.js +66 -43
- data/vendor/assets/javascripts/webshims/shims/combos/9.js +66 -31
- data/vendor/assets/javascripts/webshims/shims/combos/97.js +63 -28
- data/vendor/assets/javascripts/webshims/shims/combos/98.js +149 -74
- data/vendor/assets/javascripts/webshims/shims/combos/99.js +149 -74
- data/vendor/assets/javascripts/webshims/shims/combos/comboinfo.json +1 -1
- data/vendor/assets/javascripts/webshims/shims/details.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/dom-extend.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/es5.js +1175 -1095
- data/vendor/assets/javascripts/webshims/shims/excanvas.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/filereader.js +10 -9
- data/vendor/assets/javascripts/webshims/shims/form-combat.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/form-core.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/form-datalist.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/form-fixrangechange.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/form-message.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/form-native-extend.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/form-number-date-api.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +40 -11
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +4 -1
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +2 -1
- data/vendor/assets/javascripts/webshims/shims/form-validation.js +80 -47
- data/vendor/assets/javascripts/webshims/shims/form-validators.js +19 -8
- data/vendor/assets/javascripts/webshims/shims/forms-picker.js +21 -1
- data/vendor/assets/javascripts/webshims/shims/geolocation.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ar.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ch-CN.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-cs.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-de.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-el.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-en.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-es.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-fa.js +130 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-fr.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-he.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-hi.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-hu.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-it.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ja.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-lt.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-nl.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pl.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pt-BR.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pt-PT.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-pt.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-ru.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-sv.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-zh-CN.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-zh-TW.js +130 -0
- data/vendor/assets/javascripts/webshims/shims/jajax.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/jme/_icons.scss +186 -0
- data/vendor/assets/javascripts/webshims/shims/jme/b.js +63 -28
- data/vendor/assets/javascripts/webshims/shims/jme/c.js +86 -46
- data/vendor/assets/javascripts/webshims/shims/jme/controls.css +317 -211
- data/vendor/assets/javascripts/webshims/shims/jme/controls.scss +59 -223
- data/vendor/assets/javascripts/webshims/shims/jme/jme.eot +0 -0
- data/vendor/assets/javascripts/webshims/shims/jme/jme.svg +0 -0
- data/vendor/assets/javascripts/webshims/shims/jme/jme.ttf +0 -0
- data/vendor/assets/javascripts/webshims/shims/jme/jme.woff +0 -0
- data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols-lazy.js +66 -14
- data/vendor/assets/javascripts/webshims/shims/jme/p.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/ChangeLog.txt +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/ReadMe.txt +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/AlphaBar.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/Bars.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/Maps.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/NoColor.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/bar-opacity.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/map-opacity.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/mappoint.gif +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/picker.gif +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/preview-opacity.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/images/rangearrows.gif +0 -0
- data/vendor/assets/javascripts/webshims/shims/jpicker/jpicker.css +55 -48
- data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +66 -43
- data/vendor/assets/javascripts/webshims/shims/mediaelement-debug.js +833 -0
- data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +31 -76
- data/vendor/assets/javascripts/webshims/shims/mediaelement-native-fix.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/moxie/flash/Moxie.cdn.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/moxie/flash/Moxie.min.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/moxie/js/moxie.js +1542 -2303
- data/vendor/assets/javascripts/webshims/shims/moxie/silverlight/Moxie.cdn.xap +0 -0
- data/vendor/assets/javascripts/webshims/shims/moxie/silverlight/Moxie.min.xap +0 -0
- data/vendor/assets/javascripts/webshims/shims/picture.js +160 -79
- data/vendor/assets/javascripts/webshims/shims/plugins/jquery.ui.position.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/promise.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/range-ui.js +26 -20
- data/vendor/assets/javascripts/webshims/shims/sizzle.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/color-picker.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +444 -326
- data/vendor/assets/javascripts/webshims/shims/styles/forms-picker.css +379 -300
- data/vendor/assets/javascripts/webshims/shims/styles/progress.gif +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/progress.png +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/_api-forms-ext.scss +8 -8
- data/vendor/assets/javascripts/webshims/shims/styles/scss/_api-shim.scss +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/_extends.scss +0 -14
- data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +104 -85
- data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-picker.scss +20 -32
- data/vendor/assets/javascripts/webshims/shims/styles/scss/shim-ext.scss +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +14 -34
- data/vendor/assets/javascripts/webshims/shims/styles/shim-ext.css +920 -728
- data/vendor/assets/javascripts/webshims/shims/styles/shim.css +471 -391
- data/vendor/assets/javascripts/webshims/shims/styles/widget.eot +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/widget.svg +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/widget.ttf +0 -0
- data/vendor/assets/javascripts/webshims/shims/styles/widget.woff +0 -0
- data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/swfmini-embed.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/swfmini.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/track-ui.js +0 -0
- data/vendor/assets/javascripts/webshims/shims/track.js +30 -16
- metadata +8 -4
- data/vendor/assets/javascripts/webshims/shims/styles/config.rb +0 -12
- data/vendor/assets/javascripts/webshims/shims/swf/filereader.swf +0 -0
@@ -491,8 +491,8 @@
|
|
491
491
|
data.seeking = false;
|
492
492
|
}, 300);
|
493
493
|
},
|
494
|
-
onConnectionFailed: function(){
|
495
|
-
|
494
|
+
onConnectionFailed: function(jaris, data){
|
495
|
+
mediaelement.setError(data._elem, 'flash connection error');
|
496
496
|
},
|
497
497
|
onNotBuffering: function(jaris, data){
|
498
498
|
setReadyState(3, data);
|
@@ -1408,6 +1408,13 @@
|
|
1408
1408
|
|
1409
1409
|
if(hasFlash && $.cleanData){
|
1410
1410
|
var oldClean = $.cleanData;
|
1411
|
+
var objElem = document.createElement('object');
|
1412
|
+
var noRemove = {
|
1413
|
+
SetVariable: 1,
|
1414
|
+
GetVariable: 1,
|
1415
|
+
SetReturnValue: 1,
|
1416
|
+
GetReturnValue: 1
|
1417
|
+
};
|
1411
1418
|
var flashNames = {
|
1412
1419
|
object: 1,
|
1413
1420
|
OBJECT: 1
|
@@ -1415,6 +1422,7 @@
|
|
1415
1422
|
|
1416
1423
|
$.cleanData = function(elems){
|
1417
1424
|
var i, len, prop;
|
1425
|
+
var ret = oldClean.apply(this, arguments);
|
1418
1426
|
if(elems && (len = elems.length) && loadedSwf){
|
1419
1427
|
|
1420
1428
|
for(i = 0; i < len; i++){
|
@@ -1424,7 +1432,7 @@
|
|
1424
1432
|
elems[i].api_pause();
|
1425
1433
|
if(elems[i].readyState == 4){
|
1426
1434
|
for (prop in elems[i]) {
|
1427
|
-
if (typeof elems[i][prop] == "function") {
|
1435
|
+
if (!noRemove[prop] && !objElem[prop] && typeof elems[i][prop] == "function") {
|
1428
1436
|
elems[i][prop] = null;
|
1429
1437
|
}
|
1430
1438
|
}
|
@@ -1434,7 +1442,7 @@
|
|
1434
1442
|
}
|
1435
1443
|
|
1436
1444
|
}
|
1437
|
-
return
|
1445
|
+
return ret;
|
1438
1446
|
};
|
1439
1447
|
}
|
1440
1448
|
|
@@ -1506,62 +1514,6 @@
|
|
1506
1514
|
} else if(!('media' in document.createElement('source'))){
|
1507
1515
|
webshims.reflectProperties('source', ['media']);
|
1508
1516
|
}
|
1509
|
-
if(options.experimentallyMimetypeCheck){
|
1510
|
-
(function(){
|
1511
|
-
var ADDBACK = $.fn.addBack ? 'addBack' : 'andSelf';
|
1512
|
-
var getMimeType = function(){
|
1513
|
-
var done;
|
1514
|
-
var unknown = 'media/unknown please provide mime type';
|
1515
|
-
var media = $(this);
|
1516
|
-
var xhrs = [];
|
1517
|
-
media
|
1518
|
-
.not('.ws-after-check')
|
1519
|
-
.find('source')
|
1520
|
-
[ADDBACK]()
|
1521
|
-
.filter('[data-wsrecheckmimetype]:not([type])')
|
1522
|
-
.each(function(){
|
1523
|
-
var source = $(this).removeAttr('data-wsrecheckmimetype');
|
1524
|
-
var error = function(){
|
1525
|
-
source.attr('data-type', unknown);
|
1526
|
-
};
|
1527
|
-
try {
|
1528
|
-
xhrs.push(
|
1529
|
-
$.ajax({
|
1530
|
-
type: 'head',
|
1531
|
-
url: $.attr(this, 'src'),
|
1532
|
-
success: function(content, status, xhr){
|
1533
|
-
var mime = xhr.getResponseHeader('Content-Type');
|
1534
|
-
if(mime){
|
1535
|
-
done = true;
|
1536
|
-
}
|
1537
|
-
source.attr('data-type', mime || unknown);
|
1538
|
-
},
|
1539
|
-
error: error
|
1540
|
-
})
|
1541
|
-
)
|
1542
|
-
;
|
1543
|
-
} catch(er){
|
1544
|
-
error();
|
1545
|
-
}
|
1546
|
-
})
|
1547
|
-
;
|
1548
|
-
if(xhrs.length){
|
1549
|
-
media.addClass('ws-after-check');
|
1550
|
-
$.when.apply($, xhrs).always(function(){
|
1551
|
-
media.mediaLoad();
|
1552
|
-
setTimeout(function(){
|
1553
|
-
media.removeClass('ws-after-check');
|
1554
|
-
}, 9);
|
1555
|
-
});
|
1556
|
-
}
|
1557
|
-
};
|
1558
|
-
$('audio.media-error, video.media-error').each(getMimeType);
|
1559
|
-
$(document).on('mediaerror', function(e){
|
1560
|
-
getMimeType.call(e.target);
|
1561
|
-
});
|
1562
|
-
})();
|
1563
|
-
}
|
1564
|
-
|
1565
1517
|
|
1566
1518
|
if(hasNative && hasFlash && !options.preferFlash){
|
1567
1519
|
var switchErrors = {
|
@@ -1570,35 +1522,38 @@
|
|
1570
1522
|
};
|
1571
1523
|
var switchOptions = function(e){
|
1572
1524
|
var media, error, parent;
|
1573
|
-
if(
|
1525
|
+
if(
|
1574
1526
|
($(e.target).is('audio, video') || ((parent = e.target.parentNode) && $('source', parent).last()[0] == e.target)) &&
|
1575
|
-
(media = $(e.target).closest('audio, video')) &&
|
1527
|
+
(media = $(e.target).closest('audio, video')) && !media.is('.nonnative-api-active')
|
1576
1528
|
){
|
1577
|
-
|
1578
|
-
|
1529
|
+
error = media.prop('error');
|
1530
|
+
setTimeout(function(){
|
1579
1531
|
if(!media.is('.nonnative-api-active')){
|
1580
|
-
|
1581
|
-
|
1582
|
-
|
1583
|
-
|
1584
|
-
|
1585
|
-
|
1532
|
+
if(error && switchErrors[error.code]){
|
1533
|
+
options.preferFlash = true;
|
1534
|
+
document.removeEventListener('error', switchOptions, true);
|
1535
|
+
$('audio, video').each(function(){
|
1536
|
+
webshims.mediaelement.selectSource(this);
|
1537
|
+
});
|
1538
|
+
webshims.error("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.currentSrc+" Mediaerror: "+ media.prop('error')+ ' error.code: '+ error.code);
|
1539
|
+
}
|
1540
|
+
webshims.warn('There was a mediaelement error. Run the following line in your console to get more info: webshim.mediaelement.loadDebugger();')
|
1586
1541
|
}
|
1587
|
-
}
|
1588
|
-
|
1589
|
-
|
1542
|
+
});
|
1543
|
+
|
1544
|
+
|
1590
1545
|
}
|
1591
1546
|
};
|
1547
|
+
|
1548
|
+
document.addEventListener('error', switchOptions, true);
|
1592
1549
|
setTimeout(function(){
|
1593
|
-
document.addEventListener('error', switchOptions, true);
|
1594
1550
|
$('audio, video').each(function(){
|
1595
1551
|
var error = $.prop(this, 'error');
|
1596
1552
|
if(error && switchErrors[error]){
|
1597
1553
|
switchOptions({target: this});
|
1598
|
-
return false;
|
1599
1554
|
}
|
1600
1555
|
});
|
1601
|
-
}
|
1556
|
+
});
|
1602
1557
|
}
|
1603
1558
|
|
1604
1559
|
});
|
@@ -1898,6 +1853,26 @@
|
|
1898
1853
|
return cueText.replace(tagSplits, replacer);
|
1899
1854
|
};
|
1900
1855
|
})();
|
1856
|
+
var mapTtmlToVtt = function(i){
|
1857
|
+
var content = i+'';
|
1858
|
+
var begin = this.getAttribute('begin') || '';
|
1859
|
+
var end = this.getAttribute('end') || '';
|
1860
|
+
var text = $.trim($.text(this));
|
1861
|
+
if(!/\./.test(begin)){
|
1862
|
+
begin += '.000';
|
1863
|
+
}
|
1864
|
+
if(!/\./.test(end)){
|
1865
|
+
end += '.000';
|
1866
|
+
}
|
1867
|
+
content += '\n';
|
1868
|
+
content += begin +' --> '+end+'\n';
|
1869
|
+
content += text;
|
1870
|
+
return content;
|
1871
|
+
};
|
1872
|
+
var ttmlTextToVTT = function(ttml){
|
1873
|
+
ttml = $.parseXML(ttml) || [];
|
1874
|
+
return $(ttml).find('[begin][end]').map(mapTtmlToVtt).get().join('\n\n') || '';
|
1875
|
+
};
|
1901
1876
|
|
1902
1877
|
mediaelement.loadTextTrack = function(mediaelem, track, trackData, _default){
|
1903
1878
|
var loadEvents = 'play playing';
|
@@ -1925,7 +1900,11 @@
|
|
1925
1900
|
dataType: 'text',
|
1926
1901
|
url: src,
|
1927
1902
|
success: function(text){
|
1928
|
-
|
1903
|
+
var contentType = ajax.getResponseHeader('content-type');
|
1904
|
+
|
1905
|
+
if(!contentType.indexOf('application/xml')){
|
1906
|
+
text = ttmlTextToVTT(text);
|
1907
|
+
} else if(contentType.indexOf('text/vtt')){
|
1929
1908
|
webshims.error('set the mime-type of your WebVTT files to text/vtt. see: http://dev.w3.org/html5/webvtt/#text/vtt');
|
1930
1909
|
}
|
1931
1910
|
mediaelement.parseCaptions(text, obj, function(cues){
|
@@ -2045,25 +2024,20 @@ modified for webshims
|
|
2045
2024
|
*/
|
2046
2025
|
mediaelement.parseCaptionChunk = (function(){
|
2047
2026
|
// Set up timestamp parsers
|
2048
|
-
var WebVTTTimestampParser
|
2027
|
+
var WebVTTTimestampParser = /^(\d{2})?:?(\d{2}):(\d{2})\.(\d+)\s+\-\-\>\s+(\d{2})?:?(\d{2}):(\d{2})\.(\d+)\s*(.*)/;
|
2049
2028
|
var WebVTTDEFAULTSCueParser = /^(DEFAULTS|DEFAULT)\s+\-\-\>\s+(.*)/g;
|
2050
2029
|
var WebVTTSTYLECueParser = /^(STYLE|STYLES)\s+\-\-\>\s*\n([\s\S]*)/g;
|
2051
2030
|
var WebVTTCOMMENTCueParser = /^(COMMENT|COMMENTS)\s+\-\-\>\s+(.*)/g;
|
2031
|
+
var SRTTimestampParser = /^(\d{2})?:?(\d{2}):(\d{2})[\.\,](\d+)\s+\-\-\>\s+(\d{2})?:?(\d{2}):(\d{2})[\.\,](\d+)\s*(.*)/;
|
2052
2032
|
|
2053
2033
|
return function(subtitleElement,objectCount){
|
2054
2034
|
|
2055
|
-
var subtitleParts, timeIn, timeOut, html, timeData, subtitlePartIndex, id
|
2035
|
+
var subtitleParts, timeIn, timeOut, html, timeData, subtitlePartIndex, id;
|
2056
2036
|
var timestampMatch, tmpCue;
|
2057
2037
|
|
2058
2038
|
// WebVTT Special Cue Logic
|
2059
|
-
if (WebVTTDEFAULTSCueParser.exec(subtitleElement)) {
|
2060
|
-
// cueDefaults = specialCueData.slice(2).join("");
|
2061
|
-
// cueDefaults = cueDefaults.split(/\s+/g).filter(function(def) { return def && !!def.length; });
|
2039
|
+
if (WebVTTDEFAULTSCueParser.exec(subtitleElement) || WebVTTCOMMENTCueParser.exec(subtitleElement) || WebVTTSTYLECueParser.exec(subtitleElement)) {
|
2062
2040
|
return null;
|
2063
|
-
} else if ((specialCueData = WebVTTSTYLECueParser.exec(subtitleElement))) {
|
2064
|
-
return null;
|
2065
|
-
} else if ((specialCueData = WebVTTCOMMENTCueParser.exec(subtitleElement))) {
|
2066
|
-
return null; // At this stage, we don't want to do anything with these.
|
2067
2041
|
}
|
2068
2042
|
|
2069
2043
|
subtitleParts = subtitleElement.split(/\n/g);
|
@@ -2081,7 +2055,7 @@ modified for webshims
|
|
2081
2055
|
for (subtitlePartIndex = 0; subtitlePartIndex < subtitleParts.length; subtitlePartIndex ++) {
|
2082
2056
|
var timestamp = subtitleParts[subtitlePartIndex];
|
2083
2057
|
|
2084
|
-
if ((timestampMatch = WebVTTTimestampParser.exec(timestamp))) {
|
2058
|
+
if ((timestampMatch = WebVTTTimestampParser.exec(timestamp)) || (timestampMatch = SRTTimestampParser.exec(timestamp))) {
|
2085
2059
|
|
2086
2060
|
// WebVTT
|
2087
2061
|
|
@@ -2168,11 +2142,6 @@ modified for webshims
|
|
2168
2142
|
if(regWevVTT.test(cue)){
|
2169
2143
|
isWEBVTT = true;
|
2170
2144
|
} else if(cue.replace(/\s*/ig,"").length){
|
2171
|
-
if(!isWEBVTT){
|
2172
|
-
webshims.error('please use WebVTT format. This is the standard');
|
2173
|
-
complete(null);
|
2174
|
-
break;
|
2175
|
-
}
|
2176
2145
|
cue = mediaelement.parseCaptionChunk(cue, i);
|
2177
2146
|
if(cue){
|
2178
2147
|
track.addCue(cue);
|
@@ -442,6 +442,26 @@ webshims.register('details', function($, webshims, window, doc, undefined, optio
|
|
442
442
|
return cueText.replace(tagSplits, replacer);
|
443
443
|
};
|
444
444
|
})();
|
445
|
+
var mapTtmlToVtt = function(i){
|
446
|
+
var content = i+'';
|
447
|
+
var begin = this.getAttribute('begin') || '';
|
448
|
+
var end = this.getAttribute('end') || '';
|
449
|
+
var text = $.trim($.text(this));
|
450
|
+
if(!/\./.test(begin)){
|
451
|
+
begin += '.000';
|
452
|
+
}
|
453
|
+
if(!/\./.test(end)){
|
454
|
+
end += '.000';
|
455
|
+
}
|
456
|
+
content += '\n';
|
457
|
+
content += begin +' --> '+end+'\n';
|
458
|
+
content += text;
|
459
|
+
return content;
|
460
|
+
};
|
461
|
+
var ttmlTextToVTT = function(ttml){
|
462
|
+
ttml = $.parseXML(ttml) || [];
|
463
|
+
return $(ttml).find('[begin][end]').map(mapTtmlToVtt).get().join('\n\n') || '';
|
464
|
+
};
|
445
465
|
|
446
466
|
mediaelement.loadTextTrack = function(mediaelem, track, trackData, _default){
|
447
467
|
var loadEvents = 'play playing';
|
@@ -469,7 +489,11 @@ webshims.register('details', function($, webshims, window, doc, undefined, optio
|
|
469
489
|
dataType: 'text',
|
470
490
|
url: src,
|
471
491
|
success: function(text){
|
472
|
-
|
492
|
+
var contentType = ajax.getResponseHeader('content-type');
|
493
|
+
|
494
|
+
if(!contentType.indexOf('application/xml')){
|
495
|
+
text = ttmlTextToVTT(text);
|
496
|
+
} else if(contentType.indexOf('text/vtt')){
|
473
497
|
webshims.error('set the mime-type of your WebVTT files to text/vtt. see: http://dev.w3.org/html5/webvtt/#text/vtt');
|
474
498
|
}
|
475
499
|
mediaelement.parseCaptions(text, obj, function(cues){
|
@@ -589,25 +613,20 @@ modified for webshims
|
|
589
613
|
*/
|
590
614
|
mediaelement.parseCaptionChunk = (function(){
|
591
615
|
// Set up timestamp parsers
|
592
|
-
var WebVTTTimestampParser
|
616
|
+
var WebVTTTimestampParser = /^(\d{2})?:?(\d{2}):(\d{2})\.(\d+)\s+\-\-\>\s+(\d{2})?:?(\d{2}):(\d{2})\.(\d+)\s*(.*)/;
|
593
617
|
var WebVTTDEFAULTSCueParser = /^(DEFAULTS|DEFAULT)\s+\-\-\>\s+(.*)/g;
|
594
618
|
var WebVTTSTYLECueParser = /^(STYLE|STYLES)\s+\-\-\>\s*\n([\s\S]*)/g;
|
595
619
|
var WebVTTCOMMENTCueParser = /^(COMMENT|COMMENTS)\s+\-\-\>\s+(.*)/g;
|
620
|
+
var SRTTimestampParser = /^(\d{2})?:?(\d{2}):(\d{2})[\.\,](\d+)\s+\-\-\>\s+(\d{2})?:?(\d{2}):(\d{2})[\.\,](\d+)\s*(.*)/;
|
596
621
|
|
597
622
|
return function(subtitleElement,objectCount){
|
598
623
|
|
599
|
-
var subtitleParts, timeIn, timeOut, html, timeData, subtitlePartIndex, id
|
624
|
+
var subtitleParts, timeIn, timeOut, html, timeData, subtitlePartIndex, id;
|
600
625
|
var timestampMatch, tmpCue;
|
601
626
|
|
602
627
|
// WebVTT Special Cue Logic
|
603
|
-
if (WebVTTDEFAULTSCueParser.exec(subtitleElement)) {
|
604
|
-
// cueDefaults = specialCueData.slice(2).join("");
|
605
|
-
// cueDefaults = cueDefaults.split(/\s+/g).filter(function(def) { return def && !!def.length; });
|
606
|
-
return null;
|
607
|
-
} else if ((specialCueData = WebVTTSTYLECueParser.exec(subtitleElement))) {
|
628
|
+
if (WebVTTDEFAULTSCueParser.exec(subtitleElement) || WebVTTCOMMENTCueParser.exec(subtitleElement) || WebVTTSTYLECueParser.exec(subtitleElement)) {
|
608
629
|
return null;
|
609
|
-
} else if ((specialCueData = WebVTTCOMMENTCueParser.exec(subtitleElement))) {
|
610
|
-
return null; // At this stage, we don't want to do anything with these.
|
611
630
|
}
|
612
631
|
|
613
632
|
subtitleParts = subtitleElement.split(/\n/g);
|
@@ -625,7 +644,7 @@ modified for webshims
|
|
625
644
|
for (subtitlePartIndex = 0; subtitlePartIndex < subtitleParts.length; subtitlePartIndex ++) {
|
626
645
|
var timestamp = subtitleParts[subtitlePartIndex];
|
627
646
|
|
628
|
-
if ((timestampMatch = WebVTTTimestampParser.exec(timestamp))) {
|
647
|
+
if ((timestampMatch = WebVTTTimestampParser.exec(timestamp)) || (timestampMatch = SRTTimestampParser.exec(timestamp))) {
|
629
648
|
|
630
649
|
// WebVTT
|
631
650
|
|
@@ -712,11 +731,6 @@ modified for webshims
|
|
712
731
|
if(regWevVTT.test(cue)){
|
713
732
|
isWEBVTT = true;
|
714
733
|
} else if(cue.replace(/\s*/ig,"").length){
|
715
|
-
if(!isWEBVTT){
|
716
|
-
webshims.error('please use WebVTT format. This is the standard');
|
717
|
-
complete(null);
|
718
|
-
break;
|
719
|
-
}
|
720
734
|
cue = mediaelement.parseCaptionChunk(cue, i);
|
721
735
|
if(cue){
|
722
736
|
track.addCue(cue);
|
@@ -238,7 +238,7 @@ webshims.isReady('swfmini', true);
|
|
238
238
|
|
239
239
|
var wsCfg = webshims.cfg;
|
240
240
|
var options = wsCfg.mediaelement;
|
241
|
-
var
|
241
|
+
var isIE = navigator.userAgent.indexOf('MSIE') != -1;
|
242
242
|
if(!options){
|
243
243
|
webshims.error("mediaelement wasn't implemented but loaded");
|
244
244
|
return;
|
@@ -253,7 +253,7 @@ webshims.isReady('swfmini', true);
|
|
253
253
|
|
254
254
|
webshims.capturingEvents(['play', 'playing', 'waiting', 'paused', 'ended', 'durationchange', 'loadedmetadata', 'canplay', 'volumechange']);
|
255
255
|
|
256
|
-
if( !Modernizr.videoBuffered || !supportsLoop || (!Modernizr.mediaDefaultMuted &&
|
256
|
+
if( !Modernizr.videoBuffered || !supportsLoop || (!Modernizr.mediaDefaultMuted && isIE && 'ActiveXObject' in window) ){
|
257
257
|
webshims.addPolyfill('mediaelement-native-fix', {
|
258
258
|
d: ['dom-support']
|
259
259
|
});
|
@@ -281,7 +281,7 @@ webshims.isReady('swfmini', true);
|
|
281
281
|
}
|
282
282
|
|
283
283
|
webshims.register('mediaelement-core', function($, webshims, window, document, undefined, options){
|
284
|
-
hasSwf = swfmini.hasFlashPlayerVersion('10.0.3');
|
284
|
+
var hasSwf = swfmini.hasFlashPlayerVersion('10.0.3');
|
285
285
|
var mediaelement = webshims.mediaelement;
|
286
286
|
|
287
287
|
mediaelement.parseRtmp = function(data){
|
@@ -343,11 +343,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
343
343
|
}
|
344
344
|
}
|
345
345
|
}
|
346
|
-
|
347
|
-
if(!src.container){
|
348
|
-
$(elem).attr('data-wsrecheckmimetype', '');
|
349
|
-
}
|
350
|
-
|
346
|
+
|
351
347
|
tmp = elem.attr('media');
|
352
348
|
if(tmp){
|
353
349
|
src.media = tmp;
|
@@ -477,11 +473,6 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
477
473
|
}
|
478
474
|
};
|
479
475
|
|
480
|
-
|
481
|
-
$.fn.loadMediaSrc = function(){
|
482
|
-
webshims.error('loadMediaSrc was removed.');
|
483
|
-
};
|
484
|
-
|
485
476
|
mediaelement.swfMimeTypes = ['video/3gpp', 'video/x-msvideo', 'video/quicktime', 'video/x-m4v', 'video/mp4', 'video/m4p', 'video/x-flv', 'video/flv', 'audio/mpeg', 'audio/aac', 'audio/mp4', 'audio/x-m4a', 'audio/m4a', 'audio/mp3', 'audio/x-fla', 'audio/fla', 'youtube/flv', 'video/jarisplayer', 'jarisplayer/jarisplayer', 'video/youtube', 'video/rtmp', 'audio/rtmp'];
|
486
477
|
|
487
478
|
mediaelement.canThirdPlaySrces = function(mediaElem, srces){
|
@@ -539,7 +530,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
539
530
|
message = "can't play sources";
|
540
531
|
}
|
541
532
|
$(elem).pause().data('mediaerror', message);
|
542
|
-
webshims.error('mediaelementError: '+ message);
|
533
|
+
webshims.error('mediaelementError: '+ message +'. Run the following line in your console to get more info: webshim.mediaelement.loadDebugger();');
|
543
534
|
setTimeout(function(){
|
544
535
|
if($(elem).data('mediaerror')){
|
545
536
|
$(elem).addClass('media-error').trigger('mediaerror');
|
@@ -571,36 +562,49 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
571
562
|
}
|
572
563
|
};
|
573
564
|
})();
|
574
|
-
|
575
|
-
var
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
if(!ret){
|
580
|
-
if(_noLoop){
|
581
|
-
mediaelement.setError(elem, false);
|
582
|
-
} else {
|
583
|
-
stepSources(elem, data, false, _srces, true);
|
584
|
-
}
|
585
|
-
} else {
|
586
|
-
handleThird(elem, ret, data);
|
565
|
+
|
566
|
+
var activate = {
|
567
|
+
native: function(elem, src, data){
|
568
|
+
if(data && data.isActive == 'third') {
|
569
|
+
mediaelement.setActive(elem, 'html5', data);
|
587
570
|
}
|
588
|
-
}
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
|
571
|
+
},
|
572
|
+
third: handleThird
|
573
|
+
};
|
574
|
+
|
575
|
+
var stepSources = function(elem, data, srces){
|
576
|
+
var i, src;
|
577
|
+
var testOrder = [{test: 'canNativePlaySrces', activate: 'native'}, {test: 'canThirdPlaySrces', activate: 'third'}];
|
578
|
+
if(options.preferFlash || (data && data.isActive == 'third') ){
|
579
|
+
testOrder.reverse();
|
580
|
+
}
|
581
|
+
for(i = 0; i < 2; i++){
|
582
|
+
src = mediaelement[testOrder[i].test](elem, srces);
|
583
|
+
if(src){
|
584
|
+
activate[testOrder[i].activate](elem, src, data);
|
585
|
+
break;
|
586
|
+
}
|
587
|
+
}
|
588
|
+
|
589
|
+
if(!src){
|
590
|
+
mediaelement.setError(elem, false);
|
591
|
+
if(data && data.isActive == 'third') {
|
600
592
|
mediaelement.setActive(elem, 'html5', data);
|
601
593
|
}
|
602
594
|
}
|
603
595
|
};
|
596
|
+
var allowedPreload = {'metadata': 1, 'auto': 1, '': 1};
|
597
|
+
var fixPreload = function(elem){
|
598
|
+
var preload, img;
|
599
|
+
if(elem.getAttribute('preload') == 'none'){
|
600
|
+
if(allowedPreload[(preload = $.attr(elem, 'data-preload'))]){
|
601
|
+
$.attr(elem, 'preload', preload);
|
602
|
+
} else if(hasNative && (preload = elem.getAttribute('poster'))){
|
603
|
+
img = document.createElement('img');
|
604
|
+
img.src = preload;
|
605
|
+
}
|
606
|
+
}
|
607
|
+
};
|
604
608
|
var stopParent = /^(?:embed|object|datalist)$/i;
|
605
609
|
var selectSource = function(elem, data){
|
606
610
|
var baseData = webshims.data(elem, 'mediaelementBase') || webshims.data(elem, 'mediaelementBase', {});
|
@@ -616,7 +620,9 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
616
620
|
if(mediaelement.sortMedia){
|
617
621
|
_srces.sort(mediaelement.sortMedia);
|
618
622
|
}
|
619
|
-
|
623
|
+
fixPreload(elem);
|
624
|
+
stepSources(elem, data, _srces);
|
625
|
+
|
620
626
|
};
|
621
627
|
mediaelement.selectSource = selectSource;
|
622
628
|
|
@@ -627,20 +633,22 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
627
633
|
setTimeout(function(){
|
628
634
|
if( $.prop(e.target, 'paused') || !$.prop(e.target, 'loop') ){return;}
|
629
635
|
$(e.target).prop('currentTime', 0).play();
|
630
|
-
}
|
636
|
+
});
|
631
637
|
|
632
638
|
});
|
633
639
|
|
634
640
|
var handleMedia = false;
|
641
|
+
|
635
642
|
var initMediaElements = function(){
|
636
643
|
var testFixMedia = function(){
|
644
|
+
|
637
645
|
if(webshims.implement(this, 'mediaelement')){
|
638
646
|
selectSource(this);
|
639
647
|
if(!Modernizr.mediaDefaultMuted && $.attr(this, 'muted') != null){
|
640
648
|
$.prop(this, 'muted', true);
|
641
649
|
}
|
650
|
+
|
642
651
|
}
|
643
|
-
|
644
652
|
};
|
645
653
|
|
646
654
|
webshims.ready('dom-support', function(){
|
@@ -656,6 +664,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
656
664
|
prop: {
|
657
665
|
value: function(){
|
658
666
|
var data = webshims.data(this, 'mediaelement');
|
667
|
+
|
659
668
|
selectSource(this, data);
|
660
669
|
if(hasNative && (!data || data.isActive == 'html5') && supLoad.prop._supvalue){
|
661
670
|
supLoad.prop._supvalue.apply(this, arguments);
|
@@ -667,6 +676,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
667
676
|
}
|
668
677
|
}
|
669
678
|
});
|
679
|
+
|
670
680
|
nativeCanPlayType[nodeName] = webshims.defineNodeNameProperty(nodeName, 'canPlayType', {
|
671
681
|
prop: {
|
672
682
|
value: function(type){
|
@@ -683,6 +693,9 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
683
693
|
ret = 'maybe';
|
684
694
|
}
|
685
695
|
}
|
696
|
+
if(!ret && hasYt && type == 'video/youtube'){
|
697
|
+
ret = 'maybe';
|
698
|
+
}
|
686
699
|
return ret;
|
687
700
|
}
|
688
701
|
}
|
@@ -732,8 +745,18 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
732
745
|
});
|
733
746
|
}
|
734
747
|
};
|
735
|
-
|
736
748
|
|
749
|
+
mediaelement.loadDebugger = function(){
|
750
|
+
webshims.ready('dom-support', function(){
|
751
|
+
webshims.loader.loadScript('mediaelement-debug');
|
752
|
+
});
|
753
|
+
};
|
754
|
+
|
755
|
+
if(({noCombo: 1, media: 1})[webshims.cfg.debug]){
|
756
|
+
$(document).on('mediaerror', function(e){
|
757
|
+
mediaelement.loadDebugger();
|
758
|
+
});
|
759
|
+
}
|
737
760
|
//set native implementation ready, before swf api is retested
|
738
761
|
if(hasNative){
|
739
762
|
webshims.isReady('mediaelement-core', true);
|