webshims-rails 1.14.5 → 1.14.6
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 +4 -4
- data/Rakefile +2 -0
- data/lib/webshims-rails/version.rb +2 -2
- data/readme.textile +7 -0
- data/vendor/assets/javascripts/webshims/polyfiller.js +38 -6
- data/vendor/assets/javascripts/webshims/shims/combos/1.js +26 -20
- data/vendor/assets/javascripts/webshims/shims/combos/10.js +54 -19
- data/vendor/assets/javascripts/webshims/shims/combos/11.js +32 -15
- data/vendor/assets/javascripts/webshims/shims/combos/12.js +45 -21
- data/vendor/assets/javascripts/webshims/shims/combos/13.js +45 -21
- data/vendor/assets/javascripts/webshims/shims/combos/15.js +22 -4
- data/vendor/assets/javascripts/webshims/shims/combos/16.js +48 -24
- data/vendor/assets/javascripts/webshims/shims/combos/17.js +32 -15
- data/vendor/assets/javascripts/webshims/shims/combos/18.js +18 -81
- data/vendor/assets/javascripts/webshims/shims/combos/2.js +48 -24
- data/vendor/assets/javascripts/webshims/shims/combos/21.js +286 -179
- data/vendor/assets/javascripts/webshims/shims/combos/22.js +19 -1
- data/vendor/assets/javascripts/webshims/shims/combos/23.js +26 -20
- data/vendor/assets/javascripts/webshims/shims/combos/25.js +311 -199
- data/vendor/assets/javascripts/webshims/shims/combos/26.js +22 -17
- data/vendor/assets/javascripts/webshims/shims/combos/27.js +22 -17
- data/vendor/assets/javascripts/webshims/shims/combos/3.js +22 -4
- data/vendor/assets/javascripts/webshims/shims/combos/30.js +22 -4
- data/vendor/assets/javascripts/webshims/shims/combos/31.js +22 -4
- data/vendor/assets/javascripts/webshims/shims/combos/34.js +41 -5
- data/vendor/assets/javascripts/webshims/shims/combos/4.js +22 -4
- data/vendor/assets/javascripts/webshims/shims/combos/5.js +32 -15
- data/vendor/assets/javascripts/webshims/shims/combos/6.js +32 -15
- data/vendor/assets/javascripts/webshims/shims/combos/7.js +48 -24
- data/vendor/assets/javascripts/webshims/shims/combos/8.js +48 -24
- data/vendor/assets/javascripts/webshims/shims/combos/9.js +54 -19
- data/vendor/assets/javascripts/webshims/shims/combos/98.js +24 -7
- data/vendor/assets/javascripts/webshims/shims/combos/99.js +24 -7
- data/vendor/assets/javascripts/webshims/shims/dom-extend.js +22 -4
- data/vendor/assets/javascripts/webshims/shims/es5.js +3 -1
- data/vendor/assets/javascripts/webshims/shims/es6.js +1 -5
- data/vendor/assets/javascripts/webshims/shims/filereader.js +22 -17
- data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +32 -15
- data/vendor/assets/javascripts/webshims/shims/forms-picker.js +18 -8
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-fa.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/jme/controls.css +11 -0
- data/vendor/assets/javascripts/webshims/shims/jme/controls.scss +16 -0
- data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols-lazy.js +3 -20
- data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols.js +24 -7
- data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +26 -20
- data/vendor/assets/javascripts/webshims/shims/mediaelement-debug.js +9 -1
- data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +267 -178
- data/vendor/assets/javascripts/webshims/shims/picture.js +18 -81
- data/vendor/assets/javascripts/webshims/shims/plugins/jquery.ui.position.js +1 -9
- data/vendor/assets/javascripts/webshims/shims/sizzle.js +1 -8
- data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +4 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +5 -0
- data/vendor/assets/javascripts/webshims/shims/styles/shim-ext.css +4 -0
- data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/track.js +19 -1
- data/vendor/assets/javascripts/webshims/shims/url.js +316 -0
- data/vendor/assets/javascripts/webshims/shims/usermedia-core.js +28 -0
- data/vendor/assets/javascripts/webshims/shims/usermedia-shim.js +179 -0
- metadata +5 -3
- data/vendor/assets/javascripts/webshims/extras/modernizr-custom.js +0 -511
@@ -604,11 +604,29 @@ webshims.register('details', function($, webshims, window, doc, undefined, optio
|
|
604
604
|
webshims.error('you must provide a language for track in subtitles state');
|
605
605
|
}
|
606
606
|
obj.__wsmode = obj.mode;
|
607
|
+
|
608
|
+
webshims.defineProperty(obj, '_wsUpdateMode', {
|
609
|
+
value: function(){
|
610
|
+
$(mediaelem).triggerHandler('updatetrackdisplay');
|
611
|
+
},
|
612
|
+
enumerable: false
|
613
|
+
});
|
607
614
|
}
|
608
615
|
|
609
616
|
return obj;
|
610
617
|
};
|
611
618
|
|
619
|
+
if(!$.propHooks.mode){
|
620
|
+
$.propHooks.mode = {
|
621
|
+
set: function(obj, value){
|
622
|
+
obj.mode = value;
|
623
|
+
if(obj._wsUpdateMode && obj._wsUpdateMode.call){
|
624
|
+
obj._wsUpdateMode();
|
625
|
+
}
|
626
|
+
return obj.mode;
|
627
|
+
}
|
628
|
+
};
|
629
|
+
}
|
612
630
|
|
613
631
|
/*
|
614
632
|
taken from:
|
@@ -859,7 +877,7 @@ modified for webshims
|
|
859
877
|
var name = copyName[copyProp] || copyProp;
|
860
878
|
webshims.onNodeNamesPropertyModify('track', copyProp, function(){
|
861
879
|
var trackData = webshims.data(this, 'trackData');
|
862
|
-
|
880
|
+
|
863
881
|
if(trackData){
|
864
882
|
if(copyProp == 'kind'){
|
865
883
|
refreshTrack(this, trackData);
|
@@ -282,7 +282,7 @@ webshims.isReady('swfmini', true);
|
|
282
282
|
}
|
283
283
|
|
284
284
|
webshims.register('mediaelement-core', function($, webshims, window, document, undefined, options){
|
285
|
-
var hasSwf = swfmini.hasFlashPlayerVersion('
|
285
|
+
var hasSwf = swfmini.hasFlashPlayerVersion('11.3');
|
286
286
|
var mediaelement = webshims.mediaelement;
|
287
287
|
|
288
288
|
mediaelement.parseRtmp = function(data){
|
@@ -392,6 +392,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
392
392
|
loadYt();
|
393
393
|
}
|
394
394
|
};
|
395
|
+
|
395
396
|
|
396
397
|
webshims.addPolyfill('mediaelement-yt', {
|
397
398
|
test: !hasYt,
|
@@ -436,7 +437,16 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
436
437
|
if(src.indexOf('youtube.com/watch?') != -1 || src.indexOf('youtube.com/v/') != -1){
|
437
438
|
return 'video/youtube';
|
438
439
|
}
|
439
|
-
|
440
|
+
|
441
|
+
if(!src.indexOf('mediastream:') || !src.indexOf('blob:http')){
|
442
|
+
return 'usermedia';
|
443
|
+
}
|
444
|
+
|
445
|
+
if(!src.indexOf('webshimstream')){
|
446
|
+
return 'jarisplayer/stream';
|
447
|
+
}
|
448
|
+
|
449
|
+
if(!src.indexOf('rtmp')){
|
440
450
|
return nodeName+'/rtmp';
|
441
451
|
}
|
442
452
|
src = src.split('?')[0].split('#')[0].split('.');
|
@@ -453,28 +463,24 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
453
463
|
};
|
454
464
|
|
455
465
|
|
456
|
-
mediaelement.srces = function(mediaElem
|
466
|
+
mediaelement.srces = function(mediaElem){
|
467
|
+
var srces = [];
|
457
468
|
mediaElem = $(mediaElem);
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
if(src.src){srces.push(src);}
|
467
|
-
});
|
468
|
-
} else {
|
469
|
-
srces.push(src);
|
470
|
-
}
|
471
|
-
return srces;
|
469
|
+
var nodeName = mediaElem[0].nodeName.toLowerCase();
|
470
|
+
var src = getSrcObj(mediaElem, nodeName);
|
471
|
+
|
472
|
+
if(!src.src){
|
473
|
+
$('source', mediaElem).each(function(){
|
474
|
+
src = getSrcObj(this, nodeName);
|
475
|
+
if(src.src){srces.push(src);}
|
476
|
+
});
|
472
477
|
} else {
|
473
|
-
|
478
|
+
srces.push(src);
|
474
479
|
}
|
480
|
+
return srces;
|
475
481
|
};
|
476
482
|
|
477
|
-
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'];
|
483
|
+
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', 'jarisplayer/stream', 'video/youtube', 'video/rtmp', 'audio/rtmp'];
|
478
484
|
|
479
485
|
mediaelement.canThirdPlaySrces = function(mediaElem, srces){
|
480
486
|
var ret = '';
|
@@ -504,7 +510,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
504
510
|
srces = srces || mediaelement.srces(mediaElem);
|
505
511
|
|
506
512
|
$.each(srces, function(i, src){
|
507
|
-
if(src.type && nativeCanPlay.call(mediaElem[0], src.type) ){
|
513
|
+
if(src.type == 'usermedia' || (src.type && nativeCanPlay.call(mediaElem[0], src.type)) ){
|
508
514
|
ret = src;
|
509
515
|
return false;
|
510
516
|
}
|
@@ -60,7 +60,6 @@
|
|
60
60
|
webshims.register('dom-extend', function($, webshims, window, document, undefined){
|
61
61
|
"use strict";
|
62
62
|
var supportHrefNormalized = !('hrefNormalized' in $.support) || $.support.hrefNormalized;
|
63
|
-
var supportGetSetAttribute = !('getSetAttribute' in $.support) || $.support.getSetAttribute;
|
64
63
|
var has = Object.prototype.hasOwnProperty;
|
65
64
|
webshims.assumeARIA = true;
|
66
65
|
|
@@ -91,7 +90,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
91
90
|
}
|
92
91
|
|
93
92
|
//shortcus
|
94
|
-
var modules = webshims.modules;
|
95
93
|
var listReg = /\s*,\s*/;
|
96
94
|
|
97
95
|
//proxying attribute
|
@@ -476,8 +474,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
476
474
|
(tempCache || $( document.getElementsByTagName(nodeName) )).each(fn);
|
477
475
|
}
|
478
476
|
};
|
479
|
-
|
480
|
-
var elementExtends = {};
|
477
|
+
|
481
478
|
return {
|
482
479
|
createTmpCache: function(nodeName){
|
483
480
|
if($.isDOMReady){
|
@@ -529,6 +526,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
529
526
|
};
|
530
527
|
|
531
528
|
$.extend(webshims, {
|
529
|
+
xProps: havePolyfill,
|
532
530
|
getID: (function(){
|
533
531
|
var ID = new Date().getTime();
|
534
532
|
return function(elem){
|
@@ -542,6 +540,26 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
542
540
|
return id;
|
543
541
|
};
|
544
542
|
})(),
|
543
|
+
domPrefixes: ["ws", "webkit", "moz", "ms", "o"],
|
544
|
+
|
545
|
+
prefixed: function (prop, obj){
|
546
|
+
var i, testProp;
|
547
|
+
var ret = false;
|
548
|
+
if(obj[prop]){
|
549
|
+
ret = prop;
|
550
|
+
}
|
551
|
+
if(!ret){
|
552
|
+
prop = prop.charAt(0).toUpperCase() + prop.slice(1);
|
553
|
+
for(i = 0; i < webshims.domPrefixes.length; i++){
|
554
|
+
testProp = webshims.domPrefixes[i]+prop;
|
555
|
+
if(testProp in obj){
|
556
|
+
ret = testProp;
|
557
|
+
break;
|
558
|
+
}
|
559
|
+
}
|
560
|
+
}
|
561
|
+
return ret;
|
562
|
+
},
|
545
563
|
shadowClass: 'wsshadow-'+(Date.now()),
|
546
564
|
implement: function(elem, type){
|
547
565
|
var data = elementData(elem, 'implemented') || elementData(elem, 'implemented', {});
|
@@ -1659,35 +1677,40 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1659
1677
|
} catch(e){}
|
1660
1678
|
printMessage();
|
1661
1679
|
if(hasXDomain == null){
|
1662
|
-
|
1663
|
-
|
1664
|
-
|
1665
|
-
|
1666
|
-
|
1667
|
-
|
1668
|
-
|
1669
|
-
|
1670
|
-
|
1671
|
-
|
1672
|
-
|
1673
|
-
|
1674
|
-
|
1675
|
-
|
1676
|
-
|
1677
|
-
|
1678
|
-
|
1680
|
+
try {
|
1681
|
+
$.ajax({
|
1682
|
+
url: 'crossdomain.xml',
|
1683
|
+
type: 'HEAD',
|
1684
|
+
dataType: 'xml',
|
1685
|
+
success: function(){
|
1686
|
+
hasXDomain = 'yes';
|
1687
|
+
},
|
1688
|
+
error: function(){
|
1689
|
+
hasXDomain = 'no';
|
1690
|
+
},
|
1691
|
+
complete: function(){
|
1692
|
+
try {
|
1693
|
+
sessionStorage.setItem('wsXdomain.xml', hasXDomain);
|
1694
|
+
} catch(e){}
|
1695
|
+
printMessage();
|
1696
|
+
}
|
1697
|
+
});
|
1698
|
+
} catch(e){}
|
1679
1699
|
}
|
1680
1700
|
});
|
1681
1701
|
}
|
1702
|
+
if(document.readyState == 'complete'){
|
1703
|
+
webshims.isReady('WINDOWLOAD', true);
|
1704
|
+
}
|
1682
1705
|
});
|
1683
1706
|
;webshims.register('mediaelement-jaris', function($, webshims, window, document, undefined, options){
|
1684
1707
|
"use strict";
|
1685
|
-
|
1708
|
+
|
1686
1709
|
var mediaelement = webshims.mediaelement;
|
1687
1710
|
var swfmini = window.swfmini;
|
1688
1711
|
var support = webshims.support;
|
1689
1712
|
var hasNative = support.mediaelement;
|
1690
|
-
var hasFlash = swfmini.hasFlashPlayerVersion('
|
1713
|
+
var hasFlash = swfmini.hasFlashPlayerVersion('11.3');
|
1691
1714
|
var loadedSwf = 0;
|
1692
1715
|
var needsLoadPreload = 'ActiveXObject' in window && hasNative;
|
1693
1716
|
var getProps = {
|
@@ -1720,18 +1743,19 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1720
1743
|
}
|
1721
1744
|
};
|
1722
1745
|
var getPropKeys = Object.keys(getProps);
|
1723
|
-
|
1746
|
+
|
1724
1747
|
var getSetProps = {
|
1725
1748
|
currentTime: 0,
|
1726
1749
|
volume: 1,
|
1727
1750
|
muted: false
|
1728
1751
|
};
|
1729
1752
|
var getSetPropKeys = Object.keys(getSetProps);
|
1730
|
-
|
1753
|
+
|
1731
1754
|
var playerStateObj = $.extend({
|
1732
1755
|
isActive: 'html5',
|
1733
|
-
activating: 'html5',
|
1756
|
+
activating: 'html5',
|
1734
1757
|
wasSwfReady: false,
|
1758
|
+
_usermedia: null,
|
1735
1759
|
_bufferedEnd: 0,
|
1736
1760
|
_bufferedStart: 0,
|
1737
1761
|
currentTime: 0,
|
@@ -1741,8 +1765,8 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1741
1765
|
lastDuration: 0,
|
1742
1766
|
_timeDif: 0.3
|
1743
1767
|
}, getProps, getSetProps);
|
1744
|
-
|
1745
|
-
|
1768
|
+
|
1769
|
+
|
1746
1770
|
var getSwfDataFromElem = function(elem){
|
1747
1771
|
try {
|
1748
1772
|
(elem.nodeName);
|
@@ -1752,15 +1776,15 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1752
1776
|
var data = webshims.data(elem, 'mediaelement');
|
1753
1777
|
return (data && data.isActive == 'third') ? data : null;
|
1754
1778
|
};
|
1755
|
-
|
1779
|
+
|
1756
1780
|
var trigger = function(elem, evt){
|
1757
1781
|
evt = $.Event(evt);
|
1758
1782
|
evt.preventDefault();
|
1759
1783
|
$.event.trigger(evt, undefined, elem);
|
1760
1784
|
};
|
1761
|
-
|
1785
|
+
|
1762
1786
|
var playerSwfPath = options.playerPath || webshims.cfg.basePath + "swf/" + (options.playerName || 'JarisFLVPlayer.swf');
|
1763
|
-
|
1787
|
+
|
1764
1788
|
webshims.extendUNDEFProp(options.params, {
|
1765
1789
|
allowscriptaccess: 'always',
|
1766
1790
|
allowfullscreen: 'true',
|
@@ -1774,7 +1798,8 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1774
1798
|
webshims.extendUNDEFProp(options.attrs, {
|
1775
1799
|
bgcolor: '#000000'
|
1776
1800
|
});
|
1777
|
-
|
1801
|
+
options.playerPath = playerSwfPath;
|
1802
|
+
|
1778
1803
|
var setReadyState = function(readyState, data){
|
1779
1804
|
if(readyState < 3){
|
1780
1805
|
clearTimeout(data._canplaythroughTimer);
|
@@ -1802,8 +1827,8 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1802
1827
|
$(data._elem).triggerHandler('seeked');
|
1803
1828
|
}
|
1804
1829
|
};
|
1805
|
-
|
1806
|
-
|
1830
|
+
|
1831
|
+
|
1807
1832
|
mediaelement.jarisEvent = {};
|
1808
1833
|
var localConnectionTimer;
|
1809
1834
|
var onEvent = {
|
@@ -1818,7 +1843,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1818
1843
|
playing = override;
|
1819
1844
|
}
|
1820
1845
|
if(playing == idled || playing == null){
|
1821
|
-
|
1846
|
+
|
1822
1847
|
data.paused = !playing;
|
1823
1848
|
type = data.paused ? 'pause' : 'play';
|
1824
1849
|
data._ppFlag = true;
|
@@ -1833,7 +1858,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1833
1858
|
},
|
1834
1859
|
onSeek: function(jaris, data){
|
1835
1860
|
data._lastSeektime = jaris.seekTime;
|
1836
|
-
|
1861
|
+
|
1837
1862
|
data.seeking = true;
|
1838
1863
|
$(data._elem).triggerHandler('seeking');
|
1839
1864
|
clearTimeout(data._seekedTimer);
|
@@ -1849,19 +1874,19 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1849
1874
|
setReadyState(3, data);
|
1850
1875
|
},
|
1851
1876
|
onDataInitialized: function(jaris, data){
|
1852
|
-
|
1877
|
+
|
1853
1878
|
var oldDur = data.duration;
|
1854
1879
|
var durDelta;
|
1855
1880
|
data.duration = jaris.duration;
|
1856
1881
|
if(oldDur == data.duration || isNaN(data.duration)){return;}
|
1857
|
-
|
1882
|
+
|
1858
1883
|
if(data._calledMeta && ((durDelta = Math.abs(data.lastDuration - data.duration)) < 2)){return;}
|
1859
|
-
|
1860
|
-
|
1861
|
-
|
1884
|
+
|
1885
|
+
|
1886
|
+
|
1862
1887
|
data.videoHeight = jaris.height;
|
1863
1888
|
data.videoWidth = jaris.width;
|
1864
|
-
|
1889
|
+
|
1865
1890
|
if(!data.networkState){
|
1866
1891
|
data.networkState = 2;
|
1867
1892
|
}
|
@@ -1917,7 +1942,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1917
1942
|
data.lastCalledTime = data.currentTime;
|
1918
1943
|
$.event.trigger('timeupdate', undefined, data._elem, true);
|
1919
1944
|
}
|
1920
|
-
|
1945
|
+
|
1921
1946
|
},
|
1922
1947
|
onProgress: function(jaris, data){
|
1923
1948
|
if(data.ended){
|
@@ -1927,7 +1952,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1927
1952
|
return;
|
1928
1953
|
}
|
1929
1954
|
var percentage = jaris.loaded / jaris.total;
|
1930
|
-
|
1955
|
+
|
1931
1956
|
if(percentage > 0.02 && percentage < 0.2){
|
1932
1957
|
setReadyState(3, data);
|
1933
1958
|
} else if(percentage > 0.2){
|
@@ -1940,10 +1965,10 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1940
1965
|
if(data._bufferedEnd && (data._bufferedEnd > percentage)){
|
1941
1966
|
data._bufferedStart = data.currentTime || 0;
|
1942
1967
|
}
|
1943
|
-
|
1968
|
+
|
1944
1969
|
data._bufferedEnd = percentage;
|
1945
1970
|
data.buffered.length = 1;
|
1946
|
-
|
1971
|
+
|
1947
1972
|
$.event.trigger('progress', undefined, data._elem, true);
|
1948
1973
|
},
|
1949
1974
|
onPlaybackFinished: function(jaris, data){
|
@@ -1963,7 +1988,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1963
1988
|
ready: (function(){
|
1964
1989
|
var testAPI = function(data){
|
1965
1990
|
var passed = true;
|
1966
|
-
|
1991
|
+
|
1967
1992
|
try {
|
1968
1993
|
data.api.api_get('volume');
|
1969
1994
|
} catch(er){
|
@@ -1971,17 +1996,17 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1971
1996
|
}
|
1972
1997
|
return passed;
|
1973
1998
|
};
|
1974
|
-
|
1999
|
+
|
1975
2000
|
return function(jaris, data){
|
1976
2001
|
var i = 0;
|
1977
|
-
|
2002
|
+
|
1978
2003
|
var doneFn = function(){
|
1979
2004
|
if(i > 9){
|
1980
2005
|
data.tryedReframeing = 0;
|
1981
2006
|
return;
|
1982
2007
|
}
|
1983
2008
|
i++;
|
1984
|
-
|
2009
|
+
|
1985
2010
|
data.tryedReframeing++;
|
1986
2011
|
if(testAPI(data)){
|
1987
2012
|
data.wasSwfReady = true;
|
@@ -2011,25 +2036,25 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2011
2036
|
clearTimeout(localConnectionTimer);
|
2012
2037
|
clearTimeout(data.reframeTimer);
|
2013
2038
|
data.shadowElem.removeClass('flashblocker-assumed');
|
2014
|
-
|
2039
|
+
|
2015
2040
|
if(!i){
|
2016
2041
|
doneFn();
|
2017
2042
|
} else {
|
2018
2043
|
data.reframeTimer = setTimeout(doneFn, 9);
|
2019
2044
|
}
|
2020
|
-
|
2045
|
+
|
2021
2046
|
};
|
2022
2047
|
})()
|
2023
2048
|
};
|
2024
|
-
|
2049
|
+
|
2025
2050
|
onEvent.onMute = onEvent.onVolumeChange;
|
2026
|
-
|
2027
|
-
|
2051
|
+
mediaelement.onEvent = onEvent;
|
2052
|
+
|
2028
2053
|
var workActionQueue = function(data){
|
2029
2054
|
var actionLen = data.actionQueue.length;
|
2030
2055
|
var i = 0;
|
2031
2056
|
var operation;
|
2032
|
-
|
2057
|
+
|
2033
2058
|
if(actionLen && data.isActive == 'third'){
|
2034
2059
|
while(data.actionQueue.length && actionLen > i){
|
2035
2060
|
i++;
|
@@ -2050,7 +2075,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2050
2075
|
if( (data._ppFlag === undefined && ($.prop(data._elem, 'autoplay')) || !data.paused)){
|
2051
2076
|
setTimeout(function(){
|
2052
2077
|
if(data.isActive == 'third' && (data._ppFlag === undefined || !data.paused)){
|
2053
|
-
|
2078
|
+
|
2054
2079
|
try {
|
2055
2080
|
$(data._elem).play();
|
2056
2081
|
data._ppFlag = true;
|
@@ -2058,7 +2083,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2058
2083
|
}
|
2059
2084
|
}, 1);
|
2060
2085
|
}
|
2061
|
-
|
2086
|
+
|
2062
2087
|
if(data.muted){
|
2063
2088
|
$.prop(data._elem, 'muted', true);
|
2064
2089
|
}
|
@@ -2066,8 +2091,8 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2066
2091
|
$.prop(data._elem, 'volume', data.volume);
|
2067
2092
|
}
|
2068
2093
|
};
|
2069
|
-
|
2070
|
-
|
2094
|
+
|
2095
|
+
|
2071
2096
|
var addMediaToStopEvents = $.noop;
|
2072
2097
|
if(hasNative){
|
2073
2098
|
var stopEvents = {
|
@@ -2078,14 +2103,14 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2078
2103
|
var hidevents = hideEvtArray.map(function(evt){
|
2079
2104
|
return evt +'.webshimspolyfill';
|
2080
2105
|
}).join(' ');
|
2081
|
-
|
2106
|
+
|
2082
2107
|
var hidePlayerEvents = function(event){
|
2083
2108
|
var data = webshims.data(event.target, 'mediaelement');
|
2084
2109
|
if(!data){return;}
|
2085
2110
|
var isNativeHTML5 = ( event.originalEvent && event.originalEvent.type === event.type );
|
2086
2111
|
if( isNativeHTML5 == (data.activating == 'third') ){
|
2087
2112
|
event.stopImmediatePropagation();
|
2088
|
-
|
2113
|
+
|
2089
2114
|
if(stopEvents[event.type]){
|
2090
2115
|
if(data.isActive != data.activating){
|
2091
2116
|
$(event.target).pause();
|
@@ -2095,7 +2120,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2095
2120
|
}
|
2096
2121
|
}
|
2097
2122
|
};
|
2098
|
-
|
2123
|
+
|
2099
2124
|
addMediaToStopEvents = function(elem){
|
2100
2125
|
$(elem)
|
2101
2126
|
.off(hidevents)
|
@@ -2107,8 +2132,8 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2107
2132
|
};
|
2108
2133
|
addMediaToStopEvents(document);
|
2109
2134
|
}
|
2110
|
-
|
2111
|
-
|
2135
|
+
|
2136
|
+
|
2112
2137
|
mediaelement.setActive = function(elem, type, data){
|
2113
2138
|
if(!data){
|
2114
2139
|
data = webshims.data(elem, 'mediaelement');
|
@@ -2130,14 +2155,14 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2130
2155
|
}
|
2131
2156
|
$(elem).trigger('mediaelementapichange');
|
2132
2157
|
};
|
2133
|
-
|
2134
|
-
|
2135
|
-
|
2158
|
+
|
2159
|
+
|
2160
|
+
|
2136
2161
|
var resetSwfProps = (function(){
|
2137
|
-
var resetProtoProps = ['_calledMeta', 'lastDuration', '_bufferedEnd', 'lastCalledTime', '_bufferedStart', '_ppFlag', 'currentSrc', 'currentTime', 'duration', 'ended', 'networkState', 'paused', 'seeking', 'videoHeight', 'videoWidth'];
|
2162
|
+
var resetProtoProps = ['_calledMeta', 'lastDuration', '_bufferedEnd', 'lastCalledTime', '_usermedia', '_bufferedStart', '_ppFlag', 'currentSrc', 'currentTime', 'duration', 'ended', 'networkState', 'paused', 'seeking', 'videoHeight', 'videoWidth'];
|
2138
2163
|
var len = resetProtoProps.length;
|
2139
2164
|
return function(data){
|
2140
|
-
|
2165
|
+
|
2141
2166
|
if(!data){return;}
|
2142
2167
|
clearTimeout(data._seekedTimer);
|
2143
2168
|
var lenI = len;
|
@@ -2154,8 +2179,8 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2154
2179
|
}
|
2155
2180
|
};
|
2156
2181
|
})();
|
2157
|
-
|
2158
|
-
|
2182
|
+
|
2183
|
+
|
2159
2184
|
var getComputedDimension = (function(){
|
2160
2185
|
var dimCache = {};
|
2161
2186
|
var getVideoDims = function(data){
|
@@ -2177,7 +2202,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2177
2202
|
width: this.width,
|
2178
2203
|
height: this.height
|
2179
2204
|
};
|
2180
|
-
|
2205
|
+
|
2181
2206
|
if(dimCache[poster].height && dimCache[poster].width){
|
2182
2207
|
setElementDimension(data, $.prop(data._elem, 'controls'));
|
2183
2208
|
} else {
|
@@ -2193,12 +2218,12 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2193
2218
|
}
|
2194
2219
|
return ret || {width: 300, height: data._elemNodeName == 'video' ? 150 : 50};
|
2195
2220
|
};
|
2196
|
-
|
2221
|
+
|
2197
2222
|
var getCssStyle = function(elem, style){
|
2198
2223
|
return elem.style[style] || (elem.currentStyle && elem.currentStyle[style]) || (window.getComputedStyle && (window.getComputedStyle( elem, null ) || {} )[style]) || '';
|
2199
2224
|
};
|
2200
2225
|
var minMaxProps = ['minWidth', 'maxWidth', 'minHeight', 'maxHeight'];
|
2201
|
-
|
2226
|
+
|
2202
2227
|
var addMinMax = function(elem, ret){
|
2203
2228
|
var i, prop;
|
2204
2229
|
var hasMinMax = false;
|
@@ -2212,7 +2237,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2212
2237
|
return hasMinMax;
|
2213
2238
|
};
|
2214
2239
|
var retFn = function(data){
|
2215
|
-
var videoDims, ratio
|
2240
|
+
var videoDims, ratio;
|
2216
2241
|
var elem = data._elem;
|
2217
2242
|
var autos = {
|
2218
2243
|
width: getCssStyle(elem, 'width') == 'auto',
|
@@ -2222,11 +2247,11 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2222
2247
|
width: !autos.width && $(elem).width(),
|
2223
2248
|
height: !autos.height && $(elem).height()
|
2224
2249
|
};
|
2225
|
-
|
2250
|
+
|
2226
2251
|
if(autos.width || autos.height){
|
2227
2252
|
videoDims = getVideoDims(data);
|
2228
2253
|
ratio = videoDims.width / videoDims.height;
|
2229
|
-
|
2254
|
+
|
2230
2255
|
if(autos.width && autos.height){
|
2231
2256
|
ret.width = videoDims.width;
|
2232
2257
|
ret.height = videoDims.height;
|
@@ -2235,12 +2260,12 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2235
2260
|
} else if(autos.height){
|
2236
2261
|
ret.height = ret.width / ratio;
|
2237
2262
|
}
|
2238
|
-
|
2263
|
+
|
2239
2264
|
if(addMinMax(elem, ret)){
|
2240
2265
|
data.shadowElem.css(ret);
|
2241
2266
|
if(autos.width){
|
2242
2267
|
ret.width = data.shadowElem.height() * ratio;
|
2243
|
-
}
|
2268
|
+
}
|
2244
2269
|
if(autos.height){
|
2245
2270
|
ret.height = ((autos.width) ? ret.width : data.shadowElem.width()) / ratio;
|
2246
2271
|
}
|
@@ -2248,11 +2273,11 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2248
2273
|
data.shadowElem.css(ret);
|
2249
2274
|
ret.height = data.shadowElem.width() / ratio;
|
2250
2275
|
ret.width = ret.height * ratio;
|
2251
|
-
|
2276
|
+
|
2252
2277
|
data.shadowElem.css(ret);
|
2253
2278
|
ret.width = data.shadowElem.height() * ratio;
|
2254
2279
|
ret.height = ret.width / ratio;
|
2255
|
-
|
2280
|
+
|
2256
2281
|
}
|
2257
2282
|
if(!webshims.support.mediaelement){
|
2258
2283
|
ret.width = data.shadowElem.width();
|
@@ -2262,13 +2287,13 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2262
2287
|
}
|
2263
2288
|
return ret;
|
2264
2289
|
};
|
2265
|
-
|
2290
|
+
|
2266
2291
|
return retFn;
|
2267
2292
|
})();
|
2268
|
-
|
2293
|
+
|
2269
2294
|
var setElementDimension = function(data, hasControls){
|
2270
2295
|
var dims;
|
2271
|
-
|
2296
|
+
|
2272
2297
|
var box = data.shadowElem;
|
2273
2298
|
$(data._elem)[hasControls ? 'addClass' : 'removeClass']('webshims-controls');
|
2274
2299
|
|
@@ -2283,7 +2308,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2283
2308
|
}
|
2284
2309
|
}
|
2285
2310
|
};
|
2286
|
-
|
2311
|
+
|
2287
2312
|
var bufferSrc = (function(){
|
2288
2313
|
var preloads = {
|
2289
2314
|
'': 1,
|
@@ -2298,17 +2323,17 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2298
2323
|
return !!(preloads[preload] || (preload == 'metadata' && $(elem).is('.preload-in-doubt, video:not([poster])')));
|
2299
2324
|
};
|
2300
2325
|
})();
|
2301
|
-
|
2326
|
+
|
2302
2327
|
var regs = {
|
2303
|
-
|
2304
|
-
|
2305
|
-
|
2306
|
-
|
2307
|
-
|
2308
|
-
|
2309
|
-
|
2310
|
-
|
2311
|
-
|
2328
|
+
A: /&/g,
|
2329
|
+
a: /&/g,
|
2330
|
+
e: /\=/g,
|
2331
|
+
q: /\?/g
|
2332
|
+
},
|
2333
|
+
replaceVar = function(val){
|
2334
|
+
return (val.replace) ? val.replace(regs.A, '%26').replace(regs.a, '%26').replace(regs.e, '%3D').replace(regs.q, '%3F') : val;
|
2335
|
+
};
|
2336
|
+
|
2312
2337
|
if('matchMedia' in window){
|
2313
2338
|
var allowMediaSorting = false;
|
2314
2339
|
try {
|
@@ -2322,14 +2347,15 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2322
2347
|
} catch(er){
|
2323
2348
|
return 0;
|
2324
2349
|
}
|
2325
|
-
return src1 == src2 ?
|
2350
|
+
return src1 == src2 ?
|
2326
2351
|
0 :
|
2327
2352
|
src1 ? -1
|
2328
|
-
|
2353
|
+
: 1;
|
2329
2354
|
};
|
2330
2355
|
}
|
2331
2356
|
}
|
2332
2357
|
|
2358
|
+
mediaelement.resetSwfProps = resetSwfProps;
|
2333
2359
|
mediaelement.createSWF = function( elem, canPlaySrc, data ){
|
2334
2360
|
if(!hasFlash){
|
2335
2361
|
setTimeout(function(){
|
@@ -2337,7 +2363,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2337
2363
|
}, 1);
|
2338
2364
|
return;
|
2339
2365
|
}
|
2340
|
-
|
2366
|
+
|
2341
2367
|
var attrStyle = {};
|
2342
2368
|
|
2343
2369
|
if(loadedSwf < 1){
|
@@ -2348,55 +2374,40 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2348
2374
|
if(!data){
|
2349
2375
|
data = webshims.data(elem, 'mediaelement');
|
2350
2376
|
}
|
2351
|
-
|
2377
|
+
|
2352
2378
|
if((attrStyle.height = $.attr(elem, 'height') || '') || (attrStyle.width = $.attr(elem, 'width') || '')){
|
2353
2379
|
$(elem).css(attrStyle);
|
2354
2380
|
webshims.warn("width or height content attributes used. Webshims prefers the usage of CSS (computed styles or inline styles) to detect size of a video/audio. It's really more powerfull.");
|
2355
2381
|
}
|
2356
|
-
|
2357
|
-
var
|
2358
|
-
var
|
2359
|
-
|
2360
|
-
|
2361
|
-
server: replaceVar(canPlaySrc.server || '')
|
2362
|
-
});
|
2363
|
-
var elemVars = $(elem).data('vars') || {};
|
2364
|
-
|
2365
|
-
|
2366
|
-
|
2382
|
+
var box;
|
2383
|
+
var streamRequest = canPlaySrc.streamrequest;
|
2384
|
+
var isStream = canPlaySrc.type == 'jarisplayer/stream';
|
2385
|
+
|
2386
|
+
|
2367
2387
|
var hasControls = $.prop(elem, 'controls');
|
2368
2388
|
var elemId = 'jarisplayer-'+ webshims.getID(elem);
|
2369
|
-
|
2370
|
-
|
2371
|
-
{},
|
2372
|
-
options.params,
|
2373
|
-
$(elem).data('params')
|
2374
|
-
);
|
2389
|
+
|
2390
|
+
|
2375
2391
|
var elemNodeName = elem.nodeName.toLowerCase();
|
2376
|
-
|
2377
|
-
{},
|
2378
|
-
options.attrs,
|
2379
|
-
{
|
2380
|
-
name: elemId,
|
2381
|
-
id: elemId
|
2382
|
-
},
|
2383
|
-
$(elem).data('attrs')
|
2384
|
-
);
|
2392
|
+
|
2385
2393
|
var setDimension = function(){
|
2386
2394
|
if(data.isActive == 'third'){
|
2387
2395
|
setElementDimension(data, $.prop(elem, 'controls'));
|
2388
2396
|
}
|
2389
2397
|
};
|
2390
|
-
|
2391
|
-
|
2392
|
-
|
2398
|
+
|
2399
|
+
if(isStream && !streamRequest){
|
2400
|
+
webshim.usermedia.attach(elem, canPlaySrc, data);
|
2401
|
+
return;
|
2402
|
+
}
|
2403
|
+
|
2393
2404
|
if(data && data.swfCreated){
|
2394
2405
|
mediaelement.setActive(elem, 'third', data);
|
2395
|
-
|
2406
|
+
|
2396
2407
|
data.currentSrc = '';
|
2397
|
-
|
2408
|
+
|
2398
2409
|
data.shadowElem.html('<div id="'+ elemId +'">');
|
2399
|
-
|
2410
|
+
|
2400
2411
|
data.api = false;
|
2401
2412
|
data.actionQueue = [];
|
2402
2413
|
box = data.shadowElem;
|
@@ -2425,7 +2436,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2425
2436
|
value: elem
|
2426
2437
|
},
|
2427
2438
|
currentSrc: {
|
2428
|
-
value: canPlaySrc.srcProp
|
2439
|
+
value: streamRequest ? '' : canPlaySrc.srcProp
|
2429
2440
|
},
|
2430
2441
|
swfCreated: {
|
2431
2442
|
value: true
|
@@ -2453,26 +2464,27 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2453
2464
|
}
|
2454
2465
|
}
|
2455
2466
|
}));
|
2456
|
-
|
2457
|
-
|
2458
|
-
|
2467
|
+
|
2468
|
+
|
2469
|
+
|
2459
2470
|
box.insertBefore(elem);
|
2460
|
-
|
2471
|
+
|
2461
2472
|
if(hasNative){
|
2462
2473
|
$.extend(data, {volume: $.prop(elem, 'volume'), muted: $.prop(elem, 'muted'), paused: $.prop(elem, 'paused')});
|
2463
2474
|
}
|
2464
|
-
|
2475
|
+
|
2465
2476
|
webshims.addShadowDom(elem, box);
|
2466
2477
|
if(!webshims.data(elem, 'mediaelement')){
|
2467
2478
|
webshims.data(elem, 'mediaelement', data);
|
2468
2479
|
}
|
2469
2480
|
addMediaToStopEvents(elem);
|
2470
|
-
|
2481
|
+
|
2471
2482
|
mediaelement.setActive(elem, 'third', data);
|
2472
|
-
|
2483
|
+
|
2473
2484
|
setElementDimension(data, hasControls);
|
2474
|
-
|
2485
|
+
|
2475
2486
|
$(elem)
|
2487
|
+
|
2476
2488
|
.on({
|
2477
2489
|
'updatemediaelementdimensions loadedmetadata emptied': setDimension,
|
2478
2490
|
'remove': function(e){
|
@@ -2486,14 +2498,13 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2486
2498
|
.onWSOff('updateshadowdom', setDimension)
|
2487
2499
|
;
|
2488
2500
|
}
|
2489
|
-
|
2501
|
+
|
2490
2502
|
if(mediaelement.jarisEvent[data.id] && mediaelement.jarisEvent[data.id].elem != elem){
|
2491
2503
|
webshims.error('something went wrong');
|
2492
2504
|
return;
|
2493
2505
|
} else if(!mediaelement.jarisEvent[data.id]){
|
2494
|
-
|
2506
|
+
|
2495
2507
|
mediaelement.jarisEvent[data.id] = function(jaris){
|
2496
|
-
|
2497
2508
|
if(jaris.type == 'ready'){
|
2498
2509
|
var onReady = function(){
|
2499
2510
|
if(data.api){
|
@@ -2518,11 +2529,11 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2518
2529
|
if(!data._calledMeta && isNaN(jaris.duration) && data.duration != jaris.duration && isNaN(data.duration)){
|
2519
2530
|
onEvent.onDataInitialized(jaris, data);
|
2520
2531
|
}
|
2521
|
-
|
2532
|
+
|
2522
2533
|
if(!data._ppFlag && jaris.type != 'onPlayPause'){
|
2523
2534
|
onEvent.onPlayPause(jaris, data);
|
2524
2535
|
}
|
2525
|
-
|
2536
|
+
|
2526
2537
|
if(onEvent[jaris.type]){
|
2527
2538
|
onEvent[jaris.type](jaris, data);
|
2528
2539
|
}
|
@@ -2532,29 +2543,68 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2532
2543
|
};
|
2533
2544
|
mediaelement.jarisEvent[data.id].elem = elem;
|
2534
2545
|
}
|
2535
|
-
|
2536
|
-
|
2546
|
+
|
2547
|
+
createSwf(elem, canPlaySrc, data, elemId, hasControls, elemNodeName);
|
2548
|
+
|
2549
|
+
if(!streamRequest){
|
2550
|
+
trigger(data._elem, 'loadstart');
|
2551
|
+
}
|
2552
|
+
};
|
2553
|
+
|
2554
|
+
var createSwf = function(elem, canPlaySrc, data, elemId, hasControls, elemNodeName){
|
2555
|
+
var vars, elemVars, params, attrs;
|
2556
|
+
var isRtmp = canPlaySrc.type == 'audio/rtmp' || canPlaySrc.type == 'video/rtmp';
|
2557
|
+
var isUserStream = canPlaySrc.type == 'jarisplayer/stream';
|
2558
|
+
|
2559
|
+
vars = $.extend({}, options.vars, {
|
2560
|
+
poster: replaceVar($.attr(elem, 'poster') && $.prop(elem, 'poster') || ''),
|
2561
|
+
source: replaceVar(canPlaySrc.streamId || canPlaySrc.srcProp),
|
2562
|
+
server: replaceVar(canPlaySrc.server || '')
|
2563
|
+
});
|
2564
|
+
|
2565
|
+
elemVars = $(elem).data('vars') || {};
|
2566
|
+
|
2567
|
+
$.extend(vars,
|
2537
2568
|
{
|
2538
2569
|
id: elemId,
|
2539
2570
|
evtId: data.id,
|
2540
|
-
controls: ''+hasControls,
|
2571
|
+
controls: ''+(!isUserStream && hasControls),
|
2541
2572
|
autostart: 'false',
|
2542
2573
|
nodename: elemNodeName
|
2543
2574
|
},
|
2544
2575
|
elemVars
|
2545
2576
|
);
|
2546
|
-
|
2577
|
+
|
2547
2578
|
if(isRtmp){
|
2548
2579
|
vars.streamtype = 'rtmp';
|
2580
|
+
} else if(isUserStream){
|
2581
|
+
vars.streamtype = 'usermedia';
|
2549
2582
|
} else if(canPlaySrc.type == 'audio/mpeg' || canPlaySrc.type == 'audio/mp3'){
|
2550
2583
|
vars.type = 'audio';
|
2551
2584
|
vars.streamtype = 'file';
|
2552
2585
|
} else if(canPlaySrc.type == 'video/youtube'){
|
2553
2586
|
vars.streamtype = 'youtube';
|
2554
2587
|
}
|
2588
|
+
|
2589
|
+
attrs = $.extend(
|
2590
|
+
{},
|
2591
|
+
options.attrs,
|
2592
|
+
{
|
2593
|
+
name: elemId,
|
2594
|
+
id: elemId
|
2595
|
+
},
|
2596
|
+
$(elem).data('attrs')
|
2597
|
+
);
|
2598
|
+
|
2599
|
+
params = $.extend(
|
2600
|
+
{},
|
2601
|
+
options.params,
|
2602
|
+
$(elem).data('params')
|
2603
|
+
);
|
2604
|
+
|
2555
2605
|
options.changeSWF(vars, elem, canPlaySrc, data, 'embed');
|
2556
2606
|
clearTimeout(data.flashBlock);
|
2557
|
-
|
2607
|
+
|
2558
2608
|
swfmini.embedSWF(playerSwfPath, elemId, "100%", "100%", "9.0.115", false, vars, params, attrs, function(swfData){
|
2559
2609
|
if(swfData.success){
|
2560
2610
|
var fBlocker = function(){
|
@@ -2566,13 +2616,13 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2566
2616
|
$(swfData.ref).css({'minHeight': '2px', 'minWidth': '2px', display: 'block'});
|
2567
2617
|
};
|
2568
2618
|
data.api = swfData.ref;
|
2569
|
-
|
2619
|
+
|
2570
2620
|
if(!hasControls){
|
2571
2621
|
$(swfData.ref).attr('tabindex', '-1').css('outline', 'none');
|
2572
2622
|
}
|
2573
|
-
|
2623
|
+
|
2574
2624
|
data.flashBlock = setTimeout(fBlocker, 99);
|
2575
|
-
|
2625
|
+
|
2576
2626
|
if(!localConnectionTimer){
|
2577
2627
|
clearTimeout(localConnectionTimer);
|
2578
2628
|
localConnectionTimer = setTimeout(function(){
|
@@ -2586,23 +2636,24 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2586
2636
|
flash = null;
|
2587
2637
|
}, 8000);
|
2588
2638
|
}
|
2639
|
+
if(isUserStream){
|
2640
|
+
webshim.usermedia.request(elem, canPlaySrc, data);
|
2641
|
+
}
|
2589
2642
|
}
|
2590
2643
|
});
|
2591
|
-
|
2592
|
-
trigger(data._elem, 'loadstart');
|
2593
2644
|
};
|
2594
|
-
|
2595
|
-
|
2645
|
+
|
2646
|
+
|
2596
2647
|
var queueSwfMethod = function(elem, fn, args, data){
|
2597
2648
|
data = data || getSwfDataFromElem(elem);
|
2598
|
-
|
2649
|
+
|
2599
2650
|
if(data){
|
2600
2651
|
if(data.api && data.api[fn]){
|
2601
2652
|
data.api[fn].apply(data.api, args || []);
|
2602
2653
|
} else {
|
2603
2654
|
//todo add to queue
|
2604
2655
|
data.actionQueue.push({fn: fn, args: args});
|
2605
|
-
|
2656
|
+
|
2606
2657
|
if(data.actionQueue.length > 10){
|
2607
2658
|
setTimeout(function(){
|
2608
2659
|
if(data.actionQueue.length > 5){
|
@@ -2615,13 +2666,14 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2615
2666
|
}
|
2616
2667
|
return false;
|
2617
2668
|
};
|
2618
|
-
|
2669
|
+
mediaelement.queueSwfMethod = queueSwfMethod;
|
2670
|
+
|
2619
2671
|
['audio', 'video'].forEach(function(nodeName){
|
2620
2672
|
var descs = {};
|
2621
2673
|
var mediaSup;
|
2622
2674
|
var createGetProp = function(key){
|
2623
2675
|
if(nodeName == 'audio' && (key == 'videoHeight' || key == 'videoWidth')){return;}
|
2624
|
-
|
2676
|
+
|
2625
2677
|
descs[key] = {
|
2626
2678
|
get: function(){
|
2627
2679
|
var data = getSwfDataFromElem(this);
|
@@ -2641,33 +2693,33 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2641
2693
|
delete descs[key].writeable;
|
2642
2694
|
descs[key].set = setFn;
|
2643
2695
|
};
|
2644
|
-
|
2696
|
+
|
2645
2697
|
createGetSetProp('seeking');
|
2646
|
-
|
2698
|
+
|
2647
2699
|
createGetSetProp('volume', function(v){
|
2648
2700
|
var data = getSwfDataFromElem(this);
|
2649
2701
|
if(data){
|
2650
2702
|
v *= 1;
|
2651
2703
|
if(!isNaN(v)){
|
2652
|
-
|
2704
|
+
|
2653
2705
|
if(v < 0 || v > 1){
|
2654
2706
|
webshims.error('volume greater or less than allowed '+ (v / 100));
|
2655
2707
|
}
|
2656
|
-
|
2708
|
+
|
2657
2709
|
queueSwfMethod(this, 'api_volume', [v], data);
|
2658
|
-
|
2659
|
-
|
2710
|
+
|
2711
|
+
|
2660
2712
|
if(data.volume != v){
|
2661
2713
|
data.volume = v;
|
2662
2714
|
trigger(data._elem, 'volumechange');
|
2663
2715
|
}
|
2664
2716
|
data = null;
|
2665
|
-
}
|
2717
|
+
}
|
2666
2718
|
} else if(mediaSup.volume.prop._supset) {
|
2667
2719
|
return mediaSup.volume.prop._supset.apply(this, arguments);
|
2668
2720
|
}
|
2669
2721
|
});
|
2670
|
-
|
2722
|
+
|
2671
2723
|
createGetSetProp('muted', function(m){
|
2672
2724
|
var data = getSwfDataFromElem(this);
|
2673
2725
|
if(data){
|
@@ -2682,8 +2734,8 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2682
2734
|
return mediaSup.muted.prop._supset.apply(this, arguments);
|
2683
2735
|
}
|
2684
2736
|
});
|
2685
|
-
|
2686
|
-
|
2737
|
+
|
2738
|
+
|
2687
2739
|
createGetSetProp('currentTime', function(t){
|
2688
2740
|
var data = getSwfDataFromElem(this);
|
2689
2741
|
if(data){
|
@@ -2691,23 +2743,23 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2691
2743
|
if (!isNaN(t)) {
|
2692
2744
|
queueSwfMethod(this, 'api_seek', [t], data);
|
2693
2745
|
}
|
2694
|
-
|
2746
|
+
|
2695
2747
|
} else if(mediaSup.currentTime.prop._supset) {
|
2696
2748
|
return mediaSup.currentTime.prop._supset.apply(this, arguments);
|
2697
2749
|
}
|
2698
2750
|
});
|
2699
|
-
|
2751
|
+
|
2700
2752
|
['play', 'pause'].forEach(function(fn){
|
2701
2753
|
descs[fn] = {
|
2702
2754
|
value: function(){
|
2703
2755
|
var data = getSwfDataFromElem(this);
|
2704
|
-
|
2756
|
+
|
2705
2757
|
if(data){
|
2706
2758
|
if(data.stopPlayPause){
|
2707
2759
|
clearTimeout(data.stopPlayPause);
|
2708
2760
|
}
|
2709
2761
|
queueSwfMethod(this, fn == 'play' ? 'api_play' : 'api_pause', [], data);
|
2710
|
-
|
2762
|
+
|
2711
2763
|
data._ppFlag = true;
|
2712
2764
|
if(data.paused != (fn != 'play')){
|
2713
2765
|
data.paused = fn != 'play';
|
@@ -2719,14 +2771,14 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2719
2771
|
}
|
2720
2772
|
};
|
2721
2773
|
});
|
2722
|
-
|
2774
|
+
|
2723
2775
|
getPropKeys.forEach(createGetProp);
|
2724
|
-
|
2776
|
+
|
2725
2777
|
webshims.onNodeNamesPropertyModify(nodeName, 'controls', function(val, boolProp){
|
2726
2778
|
var data = getSwfDataFromElem(this);
|
2727
|
-
|
2779
|
+
|
2728
2780
|
$(this)[boolProp ? 'addClass' : 'removeClass']('webshims-controls');
|
2729
|
-
|
2781
|
+
|
2730
2782
|
if(data){
|
2731
2783
|
if(nodeName == 'audio'){
|
2732
2784
|
setElementDimension(data, boolProp);
|
@@ -2734,12 +2786,12 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2734
2786
|
queueSwfMethod(this, 'api_controls', [boolProp], data);
|
2735
2787
|
}
|
2736
2788
|
});
|
2737
|
-
|
2738
|
-
|
2789
|
+
|
2790
|
+
|
2739
2791
|
webshims.onNodeNamesPropertyModify(nodeName, 'preload', function(val){
|
2740
2792
|
var data, baseData, elem;
|
2741
|
-
|
2742
|
-
|
2793
|
+
|
2794
|
+
|
2743
2795
|
if(bufferSrc(this)){
|
2744
2796
|
data = getSwfDataFromElem(this);
|
2745
2797
|
if(data){
|
@@ -2754,9 +2806,9 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2754
2806
|
}
|
2755
2807
|
}
|
2756
2808
|
});
|
2757
|
-
|
2809
|
+
|
2758
2810
|
mediaSup = webshims.defineNodeNameProperties(nodeName, descs, 'prop');
|
2759
|
-
|
2811
|
+
|
2760
2812
|
if(!support.mediaDefaultMuted){
|
2761
2813
|
webshims.defineNodeNameProperties(nodeName, {
|
2762
2814
|
defaultMuted: {
|
@@ -2774,8 +2826,68 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2774
2826
|
}, 'prop');
|
2775
2827
|
}
|
2776
2828
|
});
|
2777
|
-
|
2778
|
-
|
2829
|
+
|
2830
|
+
var addCanvasBridge = function(){
|
2831
|
+
if(!window.CanvasRenderingContext2D){
|
2832
|
+
return false;
|
2833
|
+
}
|
2834
|
+
var _drawImage = CanvasRenderingContext2D.prototype.drawImage;
|
2835
|
+
var slice = Array.prototype.slice;
|
2836
|
+
var isVideo = {
|
2837
|
+
video: 1,
|
2838
|
+
VIDEO: 1
|
2839
|
+
};
|
2840
|
+
var tested = {};
|
2841
|
+
|
2842
|
+
if(!_drawImage){
|
2843
|
+
webshim.error('canvas.drawImage feature is needed. In IE8 flashvanvas pro can be used');
|
2844
|
+
}
|
2845
|
+
|
2846
|
+
CanvasRenderingContext2D.prototype.drawImage = function(elem){
|
2847
|
+
var data, img, args, imgData;
|
2848
|
+
var context = this;
|
2849
|
+
|
2850
|
+
if(isVideo[elem.nodeName] && (data = webshims.data(elem, 'mediaelement')) && data.isActive == 'third' && data.api.api_image){
|
2851
|
+
|
2852
|
+
try {
|
2853
|
+
imgData = data.api.api_image();
|
2854
|
+
} catch (er){
|
2855
|
+
webshims.error(er);
|
2856
|
+
}
|
2857
|
+
if(!tested[data.currentSrc]){
|
2858
|
+
tested[data.currentSrc] = true;
|
2859
|
+
if(imgData == null){
|
2860
|
+
webshims.error('video has to be same origin or a crossdomain.xml has to be provided. Video has to be visible for flash API');
|
2861
|
+
}
|
2862
|
+
}
|
2863
|
+
|
2864
|
+
args = slice.call(arguments, 1);
|
2865
|
+
img = new Image();
|
2866
|
+
|
2867
|
+
//todo find a performant sync way
|
2868
|
+
img.onload = function(){
|
2869
|
+
args.unshift(this);
|
2870
|
+
_drawImage.apply(context, args);
|
2871
|
+
img.onload = null;
|
2872
|
+
};
|
2873
|
+
|
2874
|
+
img.src = 'data:image/jpeg;base64,'+imgData;
|
2875
|
+
|
2876
|
+
if(img.complete){
|
2877
|
+
img.onload();
|
2878
|
+
}
|
2879
|
+
return;
|
2880
|
+
}
|
2881
|
+
return _drawImage.apply(this, arguments);
|
2882
|
+
};
|
2883
|
+
return true;
|
2884
|
+
};
|
2885
|
+
|
2886
|
+
if(!addCanvasBridge()){
|
2887
|
+
webshims.ready('canvas', addCanvasBridge);
|
2888
|
+
}
|
2889
|
+
|
2890
|
+
|
2779
2891
|
if(hasFlash && $.cleanData){
|
2780
2892
|
var oldClean = $.cleanData;
|
2781
2893
|
var objElem = document.createElement('object');
|
@@ -2789,12 +2901,12 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2789
2901
|
object: 1,
|
2790
2902
|
OBJECT: 1
|
2791
2903
|
};
|
2792
|
-
|
2904
|
+
|
2793
2905
|
$.cleanData = function(elems){
|
2794
2906
|
var i, len, prop;
|
2795
2907
|
var ret = oldClean.apply(this, arguments);
|
2796
2908
|
if(elems && (len = elems.length) && loadedSwf){
|
2797
|
-
|
2909
|
+
|
2798
2910
|
for(i = 0; i < len; i++){
|
2799
2911
|
if(flashNames[elems[i].nodeName] && 'api_destroy' in elems[i]){
|
2800
2912
|
loadedSwf--;
|
@@ -2810,14 +2922,14 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2810
2922
|
} catch(er){console.log(er);}
|
2811
2923
|
}
|
2812
2924
|
}
|
2813
|
-
|
2925
|
+
|
2814
2926
|
}
|
2815
2927
|
return ret;
|
2816
2928
|
};
|
2817
2929
|
}
|
2818
2930
|
|
2819
2931
|
if(!hasNative){
|
2820
|
-
|
2932
|
+
|
2821
2933
|
['poster', 'src'].forEach(function(prop){
|
2822
2934
|
webshims.defineNodeNamesProperty(prop == 'src' ? ['audio', 'video', 'source'] : ['video'], prop, {
|
2823
2935
|
//attr: {},
|
@@ -2825,21 +2937,21 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2825
2937
|
propType: 'src'
|
2826
2938
|
});
|
2827
2939
|
});
|
2828
|
-
|
2940
|
+
|
2829
2941
|
webshims.defineNodeNamesProperty(['audio', 'video'], 'preload', {
|
2830
2942
|
reflect: true,
|
2831
2943
|
propType: 'enumarated',
|
2832
2944
|
defaultValue: '',
|
2833
2945
|
limitedTo: ['', 'auto', 'metadata', 'none']
|
2834
2946
|
});
|
2835
|
-
|
2947
|
+
|
2836
2948
|
webshims.reflectProperties('source', ['type', 'media']);
|
2837
|
-
|
2838
|
-
|
2949
|
+
|
2950
|
+
|
2839
2951
|
['autoplay', 'controls'].forEach(function(name){
|
2840
2952
|
webshims.defineNodeNamesBooleanProperty(['audio', 'video'], name);
|
2841
2953
|
});
|
2842
|
-
|
2954
|
+
|
2843
2955
|
webshims.defineNodeNamesProperties(['audio', 'video'], {
|
2844
2956
|
HAVE_CURRENT_DATA: {
|
2845
2957
|
value: 2
|
@@ -2868,7 +2980,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2868
2980
|
NETWORK_NO_SOURCE: {
|
2869
2981
|
value: 3
|
2870
2982
|
}
|
2871
|
-
|
2983
|
+
|
2872
2984
|
}, 'prop');
|
2873
2985
|
|
2874
2986
|
|
@@ -2894,7 +3006,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2894
3006
|
var media, error, parent;
|
2895
3007
|
if(
|
2896
3008
|
($(e.target).is('audio, video') || ((parent = e.target.parentNode) && $('source', parent).last()[0] == e.target)) &&
|
2897
|
-
|
3009
|
+
(media = $(e.target).closest('audio, video')) && !media.hasClass('nonnative-api-active')
|
2898
3010
|
){
|
2899
3011
|
error = media.prop('error');
|
2900
3012
|
setTimeout(function(){
|