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
@@ -283,7 +283,6 @@ webshims.isReady('swfmini', true);
|
|
283
283
|
webshims.register('dom-extend', function($, webshims, window, document, undefined){
|
284
284
|
"use strict";
|
285
285
|
var supportHrefNormalized = !('hrefNormalized' in $.support) || $.support.hrefNormalized;
|
286
|
-
var supportGetSetAttribute = !('getSetAttribute' in $.support) || $.support.getSetAttribute;
|
287
286
|
var has = Object.prototype.hasOwnProperty;
|
288
287
|
webshims.assumeARIA = true;
|
289
288
|
|
@@ -314,7 +313,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
314
313
|
}
|
315
314
|
|
316
315
|
//shortcus
|
317
|
-
var modules = webshims.modules;
|
318
316
|
var listReg = /\s*,\s*/;
|
319
317
|
|
320
318
|
//proxying attribute
|
@@ -699,8 +697,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
699
697
|
(tempCache || $( document.getElementsByTagName(nodeName) )).each(fn);
|
700
698
|
}
|
701
699
|
};
|
702
|
-
|
703
|
-
var elementExtends = {};
|
700
|
+
|
704
701
|
return {
|
705
702
|
createTmpCache: function(nodeName){
|
706
703
|
if($.isDOMReady){
|
@@ -752,6 +749,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
752
749
|
};
|
753
750
|
|
754
751
|
$.extend(webshims, {
|
752
|
+
xProps: havePolyfill,
|
755
753
|
getID: (function(){
|
756
754
|
var ID = new Date().getTime();
|
757
755
|
return function(elem){
|
@@ -765,6 +763,26 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
765
763
|
return id;
|
766
764
|
};
|
767
765
|
})(),
|
766
|
+
domPrefixes: ["ws", "webkit", "moz", "ms", "o"],
|
767
|
+
|
768
|
+
prefixed: function (prop, obj){
|
769
|
+
var i, testProp;
|
770
|
+
var ret = false;
|
771
|
+
if(obj[prop]){
|
772
|
+
ret = prop;
|
773
|
+
}
|
774
|
+
if(!ret){
|
775
|
+
prop = prop.charAt(0).toUpperCase() + prop.slice(1);
|
776
|
+
for(i = 0; i < webshims.domPrefixes.length; i++){
|
777
|
+
testProp = webshims.domPrefixes[i]+prop;
|
778
|
+
if(testProp in obj){
|
779
|
+
ret = testProp;
|
780
|
+
break;
|
781
|
+
}
|
782
|
+
}
|
783
|
+
}
|
784
|
+
return ret;
|
785
|
+
},
|
768
786
|
shadowClass: 'wsshadow-'+(Date.now()),
|
769
787
|
implement: function(elem, type){
|
770
788
|
var data = elementData(elem, 'implemented') || elementData(elem, 'implemented', {});
|
@@ -2117,7 +2135,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2117
2135
|
}
|
2118
2136
|
|
2119
2137
|
webshims.register('mediaelement-core', function($, webshims, window, document, undefined, options){
|
2120
|
-
var hasSwf = swfmini.hasFlashPlayerVersion('
|
2138
|
+
var hasSwf = swfmini.hasFlashPlayerVersion('11.3');
|
2121
2139
|
var mediaelement = webshims.mediaelement;
|
2122
2140
|
|
2123
2141
|
mediaelement.parseRtmp = function(data){
|
@@ -2227,6 +2245,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
2227
2245
|
loadYt();
|
2228
2246
|
}
|
2229
2247
|
};
|
2248
|
+
|
2230
2249
|
|
2231
2250
|
webshims.addPolyfill('mediaelement-yt', {
|
2232
2251
|
test: !hasYt,
|
@@ -2271,7 +2290,16 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
2271
2290
|
if(src.indexOf('youtube.com/watch?') != -1 || src.indexOf('youtube.com/v/') != -1){
|
2272
2291
|
return 'video/youtube';
|
2273
2292
|
}
|
2274
|
-
|
2293
|
+
|
2294
|
+
if(!src.indexOf('mediastream:') || !src.indexOf('blob:http')){
|
2295
|
+
return 'usermedia';
|
2296
|
+
}
|
2297
|
+
|
2298
|
+
if(!src.indexOf('webshimstream')){
|
2299
|
+
return 'jarisplayer/stream';
|
2300
|
+
}
|
2301
|
+
|
2302
|
+
if(!src.indexOf('rtmp')){
|
2275
2303
|
return nodeName+'/rtmp';
|
2276
2304
|
}
|
2277
2305
|
src = src.split('?')[0].split('#')[0].split('.');
|
@@ -2288,28 +2316,24 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
2288
2316
|
};
|
2289
2317
|
|
2290
2318
|
|
2291
|
-
mediaelement.srces = function(mediaElem
|
2319
|
+
mediaelement.srces = function(mediaElem){
|
2320
|
+
var srces = [];
|
2292
2321
|
mediaElem = $(mediaElem);
|
2293
|
-
|
2294
|
-
|
2295
|
-
|
2296
|
-
|
2297
|
-
|
2298
|
-
|
2299
|
-
|
2300
|
-
|
2301
|
-
if(src.src){srces.push(src);}
|
2302
|
-
});
|
2303
|
-
} else {
|
2304
|
-
srces.push(src);
|
2305
|
-
}
|
2306
|
-
return srces;
|
2322
|
+
var nodeName = mediaElem[0].nodeName.toLowerCase();
|
2323
|
+
var src = getSrcObj(mediaElem, nodeName);
|
2324
|
+
|
2325
|
+
if(!src.src){
|
2326
|
+
$('source', mediaElem).each(function(){
|
2327
|
+
src = getSrcObj(this, nodeName);
|
2328
|
+
if(src.src){srces.push(src);}
|
2329
|
+
});
|
2307
2330
|
} else {
|
2308
|
-
|
2331
|
+
srces.push(src);
|
2309
2332
|
}
|
2333
|
+
return srces;
|
2310
2334
|
};
|
2311
2335
|
|
2312
|
-
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'];
|
2336
|
+
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'];
|
2313
2337
|
|
2314
2338
|
mediaelement.canThirdPlaySrces = function(mediaElem, srces){
|
2315
2339
|
var ret = '';
|
@@ -2339,7 +2363,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
2339
2363
|
srces = srces || mediaelement.srces(mediaElem);
|
2340
2364
|
|
2341
2365
|
$.each(srces, function(i, src){
|
2342
|
-
if(src.type && nativeCanPlay.call(mediaElem[0], src.type) ){
|
2366
|
+
if(src.type == 'usermedia' || (src.type && nativeCanPlay.call(mediaElem[0], src.type)) ){
|
2343
2367
|
ret = src;
|
2344
2368
|
return false;
|
2345
2369
|
}
|
@@ -335,12 +335,12 @@
|
|
335
335
|
});
|
336
336
|
;webshims.register('mediaelement-jaris', function($, webshims, window, document, undefined, options){
|
337
337
|
"use strict";
|
338
|
-
|
338
|
+
|
339
339
|
var mediaelement = webshims.mediaelement;
|
340
340
|
var swfmini = window.swfmini;
|
341
341
|
var support = webshims.support;
|
342
342
|
var hasNative = support.mediaelement;
|
343
|
-
var hasFlash = swfmini.hasFlashPlayerVersion('
|
343
|
+
var hasFlash = swfmini.hasFlashPlayerVersion('11.3');
|
344
344
|
var loadedSwf = 0;
|
345
345
|
var needsLoadPreload = 'ActiveXObject' in window && hasNative;
|
346
346
|
var getProps = {
|
@@ -373,18 +373,19 @@
|
|
373
373
|
}
|
374
374
|
};
|
375
375
|
var getPropKeys = Object.keys(getProps);
|
376
|
-
|
376
|
+
|
377
377
|
var getSetProps = {
|
378
378
|
currentTime: 0,
|
379
379
|
volume: 1,
|
380
380
|
muted: false
|
381
381
|
};
|
382
382
|
var getSetPropKeys = Object.keys(getSetProps);
|
383
|
-
|
383
|
+
|
384
384
|
var playerStateObj = $.extend({
|
385
385
|
isActive: 'html5',
|
386
|
-
activating: 'html5',
|
386
|
+
activating: 'html5',
|
387
387
|
wasSwfReady: false,
|
388
|
+
_usermedia: null,
|
388
389
|
_bufferedEnd: 0,
|
389
390
|
_bufferedStart: 0,
|
390
391
|
currentTime: 0,
|
@@ -394,8 +395,8 @@
|
|
394
395
|
lastDuration: 0,
|
395
396
|
_timeDif: 0.3
|
396
397
|
}, getProps, getSetProps);
|
397
|
-
|
398
|
-
|
398
|
+
|
399
|
+
|
399
400
|
var getSwfDataFromElem = function(elem){
|
400
401
|
try {
|
401
402
|
(elem.nodeName);
|
@@ -405,15 +406,15 @@
|
|
405
406
|
var data = webshims.data(elem, 'mediaelement');
|
406
407
|
return (data && data.isActive == 'third') ? data : null;
|
407
408
|
};
|
408
|
-
|
409
|
+
|
409
410
|
var trigger = function(elem, evt){
|
410
411
|
evt = $.Event(evt);
|
411
412
|
evt.preventDefault();
|
412
413
|
$.event.trigger(evt, undefined, elem);
|
413
414
|
};
|
414
|
-
|
415
|
+
|
415
416
|
var playerSwfPath = options.playerPath || webshims.cfg.basePath + "swf/" + (options.playerName || 'JarisFLVPlayer.swf');
|
416
|
-
|
417
|
+
|
417
418
|
webshims.extendUNDEFProp(options.params, {
|
418
419
|
allowscriptaccess: 'always',
|
419
420
|
allowfullscreen: 'true',
|
@@ -427,7 +428,8 @@
|
|
427
428
|
webshims.extendUNDEFProp(options.attrs, {
|
428
429
|
bgcolor: '#000000'
|
429
430
|
});
|
430
|
-
|
431
|
+
options.playerPath = playerSwfPath;
|
432
|
+
|
431
433
|
var setReadyState = function(readyState, data){
|
432
434
|
if(readyState < 3){
|
433
435
|
clearTimeout(data._canplaythroughTimer);
|
@@ -455,8 +457,8 @@
|
|
455
457
|
$(data._elem).triggerHandler('seeked');
|
456
458
|
}
|
457
459
|
};
|
458
|
-
|
459
|
-
|
460
|
+
|
461
|
+
|
460
462
|
mediaelement.jarisEvent = {};
|
461
463
|
var localConnectionTimer;
|
462
464
|
var onEvent = {
|
@@ -471,7 +473,7 @@
|
|
471
473
|
playing = override;
|
472
474
|
}
|
473
475
|
if(playing == idled || playing == null){
|
474
|
-
|
476
|
+
|
475
477
|
data.paused = !playing;
|
476
478
|
type = data.paused ? 'pause' : 'play';
|
477
479
|
data._ppFlag = true;
|
@@ -486,7 +488,7 @@
|
|
486
488
|
},
|
487
489
|
onSeek: function(jaris, data){
|
488
490
|
data._lastSeektime = jaris.seekTime;
|
489
|
-
|
491
|
+
|
490
492
|
data.seeking = true;
|
491
493
|
$(data._elem).triggerHandler('seeking');
|
492
494
|
clearTimeout(data._seekedTimer);
|
@@ -502,19 +504,19 @@
|
|
502
504
|
setReadyState(3, data);
|
503
505
|
},
|
504
506
|
onDataInitialized: function(jaris, data){
|
505
|
-
|
507
|
+
|
506
508
|
var oldDur = data.duration;
|
507
509
|
var durDelta;
|
508
510
|
data.duration = jaris.duration;
|
509
511
|
if(oldDur == data.duration || isNaN(data.duration)){return;}
|
510
|
-
|
512
|
+
|
511
513
|
if(data._calledMeta && ((durDelta = Math.abs(data.lastDuration - data.duration)) < 2)){return;}
|
512
|
-
|
513
|
-
|
514
|
-
|
514
|
+
|
515
|
+
|
516
|
+
|
515
517
|
data.videoHeight = jaris.height;
|
516
518
|
data.videoWidth = jaris.width;
|
517
|
-
|
519
|
+
|
518
520
|
if(!data.networkState){
|
519
521
|
data.networkState = 2;
|
520
522
|
}
|
@@ -570,7 +572,7 @@
|
|
570
572
|
data.lastCalledTime = data.currentTime;
|
571
573
|
$.event.trigger('timeupdate', undefined, data._elem, true);
|
572
574
|
}
|
573
|
-
|
575
|
+
|
574
576
|
},
|
575
577
|
onProgress: function(jaris, data){
|
576
578
|
if(data.ended){
|
@@ -580,7 +582,7 @@
|
|
580
582
|
return;
|
581
583
|
}
|
582
584
|
var percentage = jaris.loaded / jaris.total;
|
583
|
-
|
585
|
+
|
584
586
|
if(percentage > 0.02 && percentage < 0.2){
|
585
587
|
setReadyState(3, data);
|
586
588
|
} else if(percentage > 0.2){
|
@@ -593,10 +595,10 @@
|
|
593
595
|
if(data._bufferedEnd && (data._bufferedEnd > percentage)){
|
594
596
|
data._bufferedStart = data.currentTime || 0;
|
595
597
|
}
|
596
|
-
|
598
|
+
|
597
599
|
data._bufferedEnd = percentage;
|
598
600
|
data.buffered.length = 1;
|
599
|
-
|
601
|
+
|
600
602
|
$.event.trigger('progress', undefined, data._elem, true);
|
601
603
|
},
|
602
604
|
onPlaybackFinished: function(jaris, data){
|
@@ -616,7 +618,7 @@
|
|
616
618
|
ready: (function(){
|
617
619
|
var testAPI = function(data){
|
618
620
|
var passed = true;
|
619
|
-
|
621
|
+
|
620
622
|
try {
|
621
623
|
data.api.api_get('volume');
|
622
624
|
} catch(er){
|
@@ -624,17 +626,17 @@
|
|
624
626
|
}
|
625
627
|
return passed;
|
626
628
|
};
|
627
|
-
|
629
|
+
|
628
630
|
return function(jaris, data){
|
629
631
|
var i = 0;
|
630
|
-
|
632
|
+
|
631
633
|
var doneFn = function(){
|
632
634
|
if(i > 9){
|
633
635
|
data.tryedReframeing = 0;
|
634
636
|
return;
|
635
637
|
}
|
636
638
|
i++;
|
637
|
-
|
639
|
+
|
638
640
|
data.tryedReframeing++;
|
639
641
|
if(testAPI(data)){
|
640
642
|
data.wasSwfReady = true;
|
@@ -664,25 +666,25 @@
|
|
664
666
|
clearTimeout(localConnectionTimer);
|
665
667
|
clearTimeout(data.reframeTimer);
|
666
668
|
data.shadowElem.removeClass('flashblocker-assumed');
|
667
|
-
|
669
|
+
|
668
670
|
if(!i){
|
669
671
|
doneFn();
|
670
672
|
} else {
|
671
673
|
data.reframeTimer = setTimeout(doneFn, 9);
|
672
674
|
}
|
673
|
-
|
675
|
+
|
674
676
|
};
|
675
677
|
})()
|
676
678
|
};
|
677
|
-
|
679
|
+
|
678
680
|
onEvent.onMute = onEvent.onVolumeChange;
|
679
|
-
|
680
|
-
|
681
|
+
mediaelement.onEvent = onEvent;
|
682
|
+
|
681
683
|
var workActionQueue = function(data){
|
682
684
|
var actionLen = data.actionQueue.length;
|
683
685
|
var i = 0;
|
684
686
|
var operation;
|
685
|
-
|
687
|
+
|
686
688
|
if(actionLen && data.isActive == 'third'){
|
687
689
|
while(data.actionQueue.length && actionLen > i){
|
688
690
|
i++;
|
@@ -703,7 +705,7 @@
|
|
703
705
|
if( (data._ppFlag === undefined && ($.prop(data._elem, 'autoplay')) || !data.paused)){
|
704
706
|
setTimeout(function(){
|
705
707
|
if(data.isActive == 'third' && (data._ppFlag === undefined || !data.paused)){
|
706
|
-
|
708
|
+
|
707
709
|
try {
|
708
710
|
$(data._elem).play();
|
709
711
|
data._ppFlag = true;
|
@@ -711,7 +713,7 @@
|
|
711
713
|
}
|
712
714
|
}, 1);
|
713
715
|
}
|
714
|
-
|
716
|
+
|
715
717
|
if(data.muted){
|
716
718
|
$.prop(data._elem, 'muted', true);
|
717
719
|
}
|
@@ -719,8 +721,8 @@
|
|
719
721
|
$.prop(data._elem, 'volume', data.volume);
|
720
722
|
}
|
721
723
|
};
|
722
|
-
|
723
|
-
|
724
|
+
|
725
|
+
|
724
726
|
var addMediaToStopEvents = $.noop;
|
725
727
|
if(hasNative){
|
726
728
|
var stopEvents = {
|
@@ -731,14 +733,14 @@
|
|
731
733
|
var hidevents = hideEvtArray.map(function(evt){
|
732
734
|
return evt +'.webshimspolyfill';
|
733
735
|
}).join(' ');
|
734
|
-
|
736
|
+
|
735
737
|
var hidePlayerEvents = function(event){
|
736
738
|
var data = webshims.data(event.target, 'mediaelement');
|
737
739
|
if(!data){return;}
|
738
740
|
var isNativeHTML5 = ( event.originalEvent && event.originalEvent.type === event.type );
|
739
741
|
if( isNativeHTML5 == (data.activating == 'third') ){
|
740
742
|
event.stopImmediatePropagation();
|
741
|
-
|
743
|
+
|
742
744
|
if(stopEvents[event.type]){
|
743
745
|
if(data.isActive != data.activating){
|
744
746
|
$(event.target).pause();
|
@@ -748,7 +750,7 @@
|
|
748
750
|
}
|
749
751
|
}
|
750
752
|
};
|
751
|
-
|
753
|
+
|
752
754
|
addMediaToStopEvents = function(elem){
|
753
755
|
$(elem)
|
754
756
|
.off(hidevents)
|
@@ -760,8 +762,8 @@
|
|
760
762
|
};
|
761
763
|
addMediaToStopEvents(document);
|
762
764
|
}
|
763
|
-
|
764
|
-
|
765
|
+
|
766
|
+
|
765
767
|
mediaelement.setActive = function(elem, type, data){
|
766
768
|
if(!data){
|
767
769
|
data = webshims.data(elem, 'mediaelement');
|
@@ -783,14 +785,14 @@
|
|
783
785
|
}
|
784
786
|
$(elem).trigger('mediaelementapichange');
|
785
787
|
};
|
786
|
-
|
787
|
-
|
788
|
-
|
788
|
+
|
789
|
+
|
790
|
+
|
789
791
|
var resetSwfProps = (function(){
|
790
|
-
var resetProtoProps = ['_calledMeta', 'lastDuration', '_bufferedEnd', 'lastCalledTime', '_bufferedStart', '_ppFlag', 'currentSrc', 'currentTime', 'duration', 'ended', 'networkState', 'paused', 'seeking', 'videoHeight', 'videoWidth'];
|
792
|
+
var resetProtoProps = ['_calledMeta', 'lastDuration', '_bufferedEnd', 'lastCalledTime', '_usermedia', '_bufferedStart', '_ppFlag', 'currentSrc', 'currentTime', 'duration', 'ended', 'networkState', 'paused', 'seeking', 'videoHeight', 'videoWidth'];
|
791
793
|
var len = resetProtoProps.length;
|
792
794
|
return function(data){
|
793
|
-
|
795
|
+
|
794
796
|
if(!data){return;}
|
795
797
|
clearTimeout(data._seekedTimer);
|
796
798
|
var lenI = len;
|
@@ -807,8 +809,8 @@
|
|
807
809
|
}
|
808
810
|
};
|
809
811
|
})();
|
810
|
-
|
811
|
-
|
812
|
+
|
813
|
+
|
812
814
|
var getComputedDimension = (function(){
|
813
815
|
var dimCache = {};
|
814
816
|
var getVideoDims = function(data){
|
@@ -830,7 +832,7 @@
|
|
830
832
|
width: this.width,
|
831
833
|
height: this.height
|
832
834
|
};
|
833
|
-
|
835
|
+
|
834
836
|
if(dimCache[poster].height && dimCache[poster].width){
|
835
837
|
setElementDimension(data, $.prop(data._elem, 'controls'));
|
836
838
|
} else {
|
@@ -846,12 +848,12 @@
|
|
846
848
|
}
|
847
849
|
return ret || {width: 300, height: data._elemNodeName == 'video' ? 150 : 50};
|
848
850
|
};
|
849
|
-
|
851
|
+
|
850
852
|
var getCssStyle = function(elem, style){
|
851
853
|
return elem.style[style] || (elem.currentStyle && elem.currentStyle[style]) || (window.getComputedStyle && (window.getComputedStyle( elem, null ) || {} )[style]) || '';
|
852
854
|
};
|
853
855
|
var minMaxProps = ['minWidth', 'maxWidth', 'minHeight', 'maxHeight'];
|
854
|
-
|
856
|
+
|
855
857
|
var addMinMax = function(elem, ret){
|
856
858
|
var i, prop;
|
857
859
|
var hasMinMax = false;
|
@@ -865,7 +867,7 @@
|
|
865
867
|
return hasMinMax;
|
866
868
|
};
|
867
869
|
var retFn = function(data){
|
868
|
-
var videoDims, ratio
|
870
|
+
var videoDims, ratio;
|
869
871
|
var elem = data._elem;
|
870
872
|
var autos = {
|
871
873
|
width: getCssStyle(elem, 'width') == 'auto',
|
@@ -875,11 +877,11 @@
|
|
875
877
|
width: !autos.width && $(elem).width(),
|
876
878
|
height: !autos.height && $(elem).height()
|
877
879
|
};
|
878
|
-
|
880
|
+
|
879
881
|
if(autos.width || autos.height){
|
880
882
|
videoDims = getVideoDims(data);
|
881
883
|
ratio = videoDims.width / videoDims.height;
|
882
|
-
|
884
|
+
|
883
885
|
if(autos.width && autos.height){
|
884
886
|
ret.width = videoDims.width;
|
885
887
|
ret.height = videoDims.height;
|
@@ -888,12 +890,12 @@
|
|
888
890
|
} else if(autos.height){
|
889
891
|
ret.height = ret.width / ratio;
|
890
892
|
}
|
891
|
-
|
893
|
+
|
892
894
|
if(addMinMax(elem, ret)){
|
893
895
|
data.shadowElem.css(ret);
|
894
896
|
if(autos.width){
|
895
897
|
ret.width = data.shadowElem.height() * ratio;
|
896
|
-
}
|
898
|
+
}
|
897
899
|
if(autos.height){
|
898
900
|
ret.height = ((autos.width) ? ret.width : data.shadowElem.width()) / ratio;
|
899
901
|
}
|
@@ -901,11 +903,11 @@
|
|
901
903
|
data.shadowElem.css(ret);
|
902
904
|
ret.height = data.shadowElem.width() / ratio;
|
903
905
|
ret.width = ret.height * ratio;
|
904
|
-
|
906
|
+
|
905
907
|
data.shadowElem.css(ret);
|
906
908
|
ret.width = data.shadowElem.height() * ratio;
|
907
909
|
ret.height = ret.width / ratio;
|
908
|
-
|
910
|
+
|
909
911
|
}
|
910
912
|
if(!webshims.support.mediaelement){
|
911
913
|
ret.width = data.shadowElem.width();
|
@@ -915,13 +917,13 @@
|
|
915
917
|
}
|
916
918
|
return ret;
|
917
919
|
};
|
918
|
-
|
920
|
+
|
919
921
|
return retFn;
|
920
922
|
})();
|
921
|
-
|
923
|
+
|
922
924
|
var setElementDimension = function(data, hasControls){
|
923
925
|
var dims;
|
924
|
-
|
926
|
+
|
925
927
|
var box = data.shadowElem;
|
926
928
|
$(data._elem)[hasControls ? 'addClass' : 'removeClass']('webshims-controls');
|
927
929
|
|
@@ -936,7 +938,7 @@
|
|
936
938
|
}
|
937
939
|
}
|
938
940
|
};
|
939
|
-
|
941
|
+
|
940
942
|
var bufferSrc = (function(){
|
941
943
|
var preloads = {
|
942
944
|
'': 1,
|
@@ -951,17 +953,17 @@
|
|
951
953
|
return !!(preloads[preload] || (preload == 'metadata' && $(elem).is('.preload-in-doubt, video:not([poster])')));
|
952
954
|
};
|
953
955
|
})();
|
954
|
-
|
956
|
+
|
955
957
|
var regs = {
|
956
|
-
|
957
|
-
|
958
|
-
|
959
|
-
|
960
|
-
|
961
|
-
|
962
|
-
|
963
|
-
|
964
|
-
|
958
|
+
A: /&/g,
|
959
|
+
a: /&/g,
|
960
|
+
e: /\=/g,
|
961
|
+
q: /\?/g
|
962
|
+
},
|
963
|
+
replaceVar = function(val){
|
964
|
+
return (val.replace) ? val.replace(regs.A, '%26').replace(regs.a, '%26').replace(regs.e, '%3D').replace(regs.q, '%3F') : val;
|
965
|
+
};
|
966
|
+
|
965
967
|
if('matchMedia' in window){
|
966
968
|
var allowMediaSorting = false;
|
967
969
|
try {
|
@@ -975,14 +977,15 @@
|
|
975
977
|
} catch(er){
|
976
978
|
return 0;
|
977
979
|
}
|
978
|
-
return src1 == src2 ?
|
980
|
+
return src1 == src2 ?
|
979
981
|
0 :
|
980
982
|
src1 ? -1
|
981
|
-
|
983
|
+
: 1;
|
982
984
|
};
|
983
985
|
}
|
984
986
|
}
|
985
987
|
|
988
|
+
mediaelement.resetSwfProps = resetSwfProps;
|
986
989
|
mediaelement.createSWF = function( elem, canPlaySrc, data ){
|
987
990
|
if(!hasFlash){
|
988
991
|
setTimeout(function(){
|
@@ -990,7 +993,7 @@
|
|
990
993
|
}, 1);
|
991
994
|
return;
|
992
995
|
}
|
993
|
-
|
996
|
+
|
994
997
|
var attrStyle = {};
|
995
998
|
|
996
999
|
if(loadedSwf < 1){
|
@@ -1001,55 +1004,40 @@
|
|
1001
1004
|
if(!data){
|
1002
1005
|
data = webshims.data(elem, 'mediaelement');
|
1003
1006
|
}
|
1004
|
-
|
1007
|
+
|
1005
1008
|
if((attrStyle.height = $.attr(elem, 'height') || '') || (attrStyle.width = $.attr(elem, 'width') || '')){
|
1006
1009
|
$(elem).css(attrStyle);
|
1007
1010
|
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.");
|
1008
1011
|
}
|
1009
|
-
|
1010
|
-
var
|
1011
|
-
var
|
1012
|
-
|
1013
|
-
|
1014
|
-
server: replaceVar(canPlaySrc.server || '')
|
1015
|
-
});
|
1016
|
-
var elemVars = $(elem).data('vars') || {};
|
1017
|
-
|
1018
|
-
|
1019
|
-
|
1012
|
+
var box;
|
1013
|
+
var streamRequest = canPlaySrc.streamrequest;
|
1014
|
+
var isStream = canPlaySrc.type == 'jarisplayer/stream';
|
1015
|
+
|
1016
|
+
|
1020
1017
|
var hasControls = $.prop(elem, 'controls');
|
1021
1018
|
var elemId = 'jarisplayer-'+ webshims.getID(elem);
|
1022
|
-
|
1023
|
-
|
1024
|
-
{},
|
1025
|
-
options.params,
|
1026
|
-
$(elem).data('params')
|
1027
|
-
);
|
1019
|
+
|
1020
|
+
|
1028
1021
|
var elemNodeName = elem.nodeName.toLowerCase();
|
1029
|
-
|
1030
|
-
{},
|
1031
|
-
options.attrs,
|
1032
|
-
{
|
1033
|
-
name: elemId,
|
1034
|
-
id: elemId
|
1035
|
-
},
|
1036
|
-
$(elem).data('attrs')
|
1037
|
-
);
|
1022
|
+
|
1038
1023
|
var setDimension = function(){
|
1039
1024
|
if(data.isActive == 'third'){
|
1040
1025
|
setElementDimension(data, $.prop(elem, 'controls'));
|
1041
1026
|
}
|
1042
1027
|
};
|
1043
|
-
|
1044
|
-
|
1045
|
-
|
1028
|
+
|
1029
|
+
if(isStream && !streamRequest){
|
1030
|
+
webshim.usermedia.attach(elem, canPlaySrc, data);
|
1031
|
+
return;
|
1032
|
+
}
|
1033
|
+
|
1046
1034
|
if(data && data.swfCreated){
|
1047
1035
|
mediaelement.setActive(elem, 'third', data);
|
1048
|
-
|
1036
|
+
|
1049
1037
|
data.currentSrc = '';
|
1050
|
-
|
1038
|
+
|
1051
1039
|
data.shadowElem.html('<div id="'+ elemId +'">');
|
1052
|
-
|
1040
|
+
|
1053
1041
|
data.api = false;
|
1054
1042
|
data.actionQueue = [];
|
1055
1043
|
box = data.shadowElem;
|
@@ -1078,7 +1066,7 @@
|
|
1078
1066
|
value: elem
|
1079
1067
|
},
|
1080
1068
|
currentSrc: {
|
1081
|
-
value: canPlaySrc.srcProp
|
1069
|
+
value: streamRequest ? '' : canPlaySrc.srcProp
|
1082
1070
|
},
|
1083
1071
|
swfCreated: {
|
1084
1072
|
value: true
|
@@ -1106,26 +1094,27 @@
|
|
1106
1094
|
}
|
1107
1095
|
}
|
1108
1096
|
}));
|
1109
|
-
|
1110
|
-
|
1111
|
-
|
1097
|
+
|
1098
|
+
|
1099
|
+
|
1112
1100
|
box.insertBefore(elem);
|
1113
|
-
|
1101
|
+
|
1114
1102
|
if(hasNative){
|
1115
1103
|
$.extend(data, {volume: $.prop(elem, 'volume'), muted: $.prop(elem, 'muted'), paused: $.prop(elem, 'paused')});
|
1116
1104
|
}
|
1117
|
-
|
1105
|
+
|
1118
1106
|
webshims.addShadowDom(elem, box);
|
1119
1107
|
if(!webshims.data(elem, 'mediaelement')){
|
1120
1108
|
webshims.data(elem, 'mediaelement', data);
|
1121
1109
|
}
|
1122
1110
|
addMediaToStopEvents(elem);
|
1123
|
-
|
1111
|
+
|
1124
1112
|
mediaelement.setActive(elem, 'third', data);
|
1125
|
-
|
1113
|
+
|
1126
1114
|
setElementDimension(data, hasControls);
|
1127
|
-
|
1115
|
+
|
1128
1116
|
$(elem)
|
1117
|
+
|
1129
1118
|
.on({
|
1130
1119
|
'updatemediaelementdimensions loadedmetadata emptied': setDimension,
|
1131
1120
|
'remove': function(e){
|
@@ -1139,14 +1128,13 @@
|
|
1139
1128
|
.onWSOff('updateshadowdom', setDimension)
|
1140
1129
|
;
|
1141
1130
|
}
|
1142
|
-
|
1131
|
+
|
1143
1132
|
if(mediaelement.jarisEvent[data.id] && mediaelement.jarisEvent[data.id].elem != elem){
|
1144
1133
|
webshims.error('something went wrong');
|
1145
1134
|
return;
|
1146
1135
|
} else if(!mediaelement.jarisEvent[data.id]){
|
1147
|
-
|
1136
|
+
|
1148
1137
|
mediaelement.jarisEvent[data.id] = function(jaris){
|
1149
|
-
|
1150
1138
|
if(jaris.type == 'ready'){
|
1151
1139
|
var onReady = function(){
|
1152
1140
|
if(data.api){
|
@@ -1171,11 +1159,11 @@
|
|
1171
1159
|
if(!data._calledMeta && isNaN(jaris.duration) && data.duration != jaris.duration && isNaN(data.duration)){
|
1172
1160
|
onEvent.onDataInitialized(jaris, data);
|
1173
1161
|
}
|
1174
|
-
|
1162
|
+
|
1175
1163
|
if(!data._ppFlag && jaris.type != 'onPlayPause'){
|
1176
1164
|
onEvent.onPlayPause(jaris, data);
|
1177
1165
|
}
|
1178
|
-
|
1166
|
+
|
1179
1167
|
if(onEvent[jaris.type]){
|
1180
1168
|
onEvent[jaris.type](jaris, data);
|
1181
1169
|
}
|
@@ -1185,29 +1173,68 @@
|
|
1185
1173
|
};
|
1186
1174
|
mediaelement.jarisEvent[data.id].elem = elem;
|
1187
1175
|
}
|
1188
|
-
|
1189
|
-
|
1176
|
+
|
1177
|
+
createSwf(elem, canPlaySrc, data, elemId, hasControls, elemNodeName);
|
1178
|
+
|
1179
|
+
if(!streamRequest){
|
1180
|
+
trigger(data._elem, 'loadstart');
|
1181
|
+
}
|
1182
|
+
};
|
1183
|
+
|
1184
|
+
var createSwf = function(elem, canPlaySrc, data, elemId, hasControls, elemNodeName){
|
1185
|
+
var vars, elemVars, params, attrs;
|
1186
|
+
var isRtmp = canPlaySrc.type == 'audio/rtmp' || canPlaySrc.type == 'video/rtmp';
|
1187
|
+
var isUserStream = canPlaySrc.type == 'jarisplayer/stream';
|
1188
|
+
|
1189
|
+
vars = $.extend({}, options.vars, {
|
1190
|
+
poster: replaceVar($.attr(elem, 'poster') && $.prop(elem, 'poster') || ''),
|
1191
|
+
source: replaceVar(canPlaySrc.streamId || canPlaySrc.srcProp),
|
1192
|
+
server: replaceVar(canPlaySrc.server || '')
|
1193
|
+
});
|
1194
|
+
|
1195
|
+
elemVars = $(elem).data('vars') || {};
|
1196
|
+
|
1197
|
+
$.extend(vars,
|
1190
1198
|
{
|
1191
1199
|
id: elemId,
|
1192
1200
|
evtId: data.id,
|
1193
|
-
controls: ''+hasControls,
|
1201
|
+
controls: ''+(!isUserStream && hasControls),
|
1194
1202
|
autostart: 'false',
|
1195
1203
|
nodename: elemNodeName
|
1196
1204
|
},
|
1197
1205
|
elemVars
|
1198
1206
|
);
|
1199
|
-
|
1207
|
+
|
1200
1208
|
if(isRtmp){
|
1201
1209
|
vars.streamtype = 'rtmp';
|
1210
|
+
} else if(isUserStream){
|
1211
|
+
vars.streamtype = 'usermedia';
|
1202
1212
|
} else if(canPlaySrc.type == 'audio/mpeg' || canPlaySrc.type == 'audio/mp3'){
|
1203
1213
|
vars.type = 'audio';
|
1204
1214
|
vars.streamtype = 'file';
|
1205
1215
|
} else if(canPlaySrc.type == 'video/youtube'){
|
1206
1216
|
vars.streamtype = 'youtube';
|
1207
1217
|
}
|
1218
|
+
|
1219
|
+
attrs = $.extend(
|
1220
|
+
{},
|
1221
|
+
options.attrs,
|
1222
|
+
{
|
1223
|
+
name: elemId,
|
1224
|
+
id: elemId
|
1225
|
+
},
|
1226
|
+
$(elem).data('attrs')
|
1227
|
+
);
|
1228
|
+
|
1229
|
+
params = $.extend(
|
1230
|
+
{},
|
1231
|
+
options.params,
|
1232
|
+
$(elem).data('params')
|
1233
|
+
);
|
1234
|
+
|
1208
1235
|
options.changeSWF(vars, elem, canPlaySrc, data, 'embed');
|
1209
1236
|
clearTimeout(data.flashBlock);
|
1210
|
-
|
1237
|
+
|
1211
1238
|
swfmini.embedSWF(playerSwfPath, elemId, "100%", "100%", "9.0.115", false, vars, params, attrs, function(swfData){
|
1212
1239
|
if(swfData.success){
|
1213
1240
|
var fBlocker = function(){
|
@@ -1219,13 +1246,13 @@
|
|
1219
1246
|
$(swfData.ref).css({'minHeight': '2px', 'minWidth': '2px', display: 'block'});
|
1220
1247
|
};
|
1221
1248
|
data.api = swfData.ref;
|
1222
|
-
|
1249
|
+
|
1223
1250
|
if(!hasControls){
|
1224
1251
|
$(swfData.ref).attr('tabindex', '-1').css('outline', 'none');
|
1225
1252
|
}
|
1226
|
-
|
1253
|
+
|
1227
1254
|
data.flashBlock = setTimeout(fBlocker, 99);
|
1228
|
-
|
1255
|
+
|
1229
1256
|
if(!localConnectionTimer){
|
1230
1257
|
clearTimeout(localConnectionTimer);
|
1231
1258
|
localConnectionTimer = setTimeout(function(){
|
@@ -1239,23 +1266,24 @@
|
|
1239
1266
|
flash = null;
|
1240
1267
|
}, 8000);
|
1241
1268
|
}
|
1269
|
+
if(isUserStream){
|
1270
|
+
webshim.usermedia.request(elem, canPlaySrc, data);
|
1271
|
+
}
|
1242
1272
|
}
|
1243
1273
|
});
|
1244
|
-
|
1245
|
-
trigger(data._elem, 'loadstart');
|
1246
1274
|
};
|
1247
|
-
|
1248
|
-
|
1275
|
+
|
1276
|
+
|
1249
1277
|
var queueSwfMethod = function(elem, fn, args, data){
|
1250
1278
|
data = data || getSwfDataFromElem(elem);
|
1251
|
-
|
1279
|
+
|
1252
1280
|
if(data){
|
1253
1281
|
if(data.api && data.api[fn]){
|
1254
1282
|
data.api[fn].apply(data.api, args || []);
|
1255
1283
|
} else {
|
1256
1284
|
//todo add to queue
|
1257
1285
|
data.actionQueue.push({fn: fn, args: args});
|
1258
|
-
|
1286
|
+
|
1259
1287
|
if(data.actionQueue.length > 10){
|
1260
1288
|
setTimeout(function(){
|
1261
1289
|
if(data.actionQueue.length > 5){
|
@@ -1268,13 +1296,14 @@
|
|
1268
1296
|
}
|
1269
1297
|
return false;
|
1270
1298
|
};
|
1271
|
-
|
1299
|
+
mediaelement.queueSwfMethod = queueSwfMethod;
|
1300
|
+
|
1272
1301
|
['audio', 'video'].forEach(function(nodeName){
|
1273
1302
|
var descs = {};
|
1274
1303
|
var mediaSup;
|
1275
1304
|
var createGetProp = function(key){
|
1276
1305
|
if(nodeName == 'audio' && (key == 'videoHeight' || key == 'videoWidth')){return;}
|
1277
|
-
|
1306
|
+
|
1278
1307
|
descs[key] = {
|
1279
1308
|
get: function(){
|
1280
1309
|
var data = getSwfDataFromElem(this);
|
@@ -1294,33 +1323,33 @@
|
|
1294
1323
|
delete descs[key].writeable;
|
1295
1324
|
descs[key].set = setFn;
|
1296
1325
|
};
|
1297
|
-
|
1326
|
+
|
1298
1327
|
createGetSetProp('seeking');
|
1299
|
-
|
1328
|
+
|
1300
1329
|
createGetSetProp('volume', function(v){
|
1301
1330
|
var data = getSwfDataFromElem(this);
|
1302
1331
|
if(data){
|
1303
1332
|
v *= 1;
|
1304
1333
|
if(!isNaN(v)){
|
1305
|
-
|
1334
|
+
|
1306
1335
|
if(v < 0 || v > 1){
|
1307
1336
|
webshims.error('volume greater or less than allowed '+ (v / 100));
|
1308
1337
|
}
|
1309
|
-
|
1338
|
+
|
1310
1339
|
queueSwfMethod(this, 'api_volume', [v], data);
|
1311
|
-
|
1312
|
-
|
1340
|
+
|
1341
|
+
|
1313
1342
|
if(data.volume != v){
|
1314
1343
|
data.volume = v;
|
1315
1344
|
trigger(data._elem, 'volumechange');
|
1316
1345
|
}
|
1317
1346
|
data = null;
|
1318
|
-
}
|
1347
|
+
}
|
1319
1348
|
} else if(mediaSup.volume.prop._supset) {
|
1320
1349
|
return mediaSup.volume.prop._supset.apply(this, arguments);
|
1321
1350
|
}
|
1322
1351
|
});
|
1323
|
-
|
1352
|
+
|
1324
1353
|
createGetSetProp('muted', function(m){
|
1325
1354
|
var data = getSwfDataFromElem(this);
|
1326
1355
|
if(data){
|
@@ -1335,8 +1364,8 @@
|
|
1335
1364
|
return mediaSup.muted.prop._supset.apply(this, arguments);
|
1336
1365
|
}
|
1337
1366
|
});
|
1338
|
-
|
1339
|
-
|
1367
|
+
|
1368
|
+
|
1340
1369
|
createGetSetProp('currentTime', function(t){
|
1341
1370
|
var data = getSwfDataFromElem(this);
|
1342
1371
|
if(data){
|
@@ -1344,23 +1373,23 @@
|
|
1344
1373
|
if (!isNaN(t)) {
|
1345
1374
|
queueSwfMethod(this, 'api_seek', [t], data);
|
1346
1375
|
}
|
1347
|
-
|
1376
|
+
|
1348
1377
|
} else if(mediaSup.currentTime.prop._supset) {
|
1349
1378
|
return mediaSup.currentTime.prop._supset.apply(this, arguments);
|
1350
1379
|
}
|
1351
1380
|
});
|
1352
|
-
|
1381
|
+
|
1353
1382
|
['play', 'pause'].forEach(function(fn){
|
1354
1383
|
descs[fn] = {
|
1355
1384
|
value: function(){
|
1356
1385
|
var data = getSwfDataFromElem(this);
|
1357
|
-
|
1386
|
+
|
1358
1387
|
if(data){
|
1359
1388
|
if(data.stopPlayPause){
|
1360
1389
|
clearTimeout(data.stopPlayPause);
|
1361
1390
|
}
|
1362
1391
|
queueSwfMethod(this, fn == 'play' ? 'api_play' : 'api_pause', [], data);
|
1363
|
-
|
1392
|
+
|
1364
1393
|
data._ppFlag = true;
|
1365
1394
|
if(data.paused != (fn != 'play')){
|
1366
1395
|
data.paused = fn != 'play';
|
@@ -1372,14 +1401,14 @@
|
|
1372
1401
|
}
|
1373
1402
|
};
|
1374
1403
|
});
|
1375
|
-
|
1404
|
+
|
1376
1405
|
getPropKeys.forEach(createGetProp);
|
1377
|
-
|
1406
|
+
|
1378
1407
|
webshims.onNodeNamesPropertyModify(nodeName, 'controls', function(val, boolProp){
|
1379
1408
|
var data = getSwfDataFromElem(this);
|
1380
|
-
|
1409
|
+
|
1381
1410
|
$(this)[boolProp ? 'addClass' : 'removeClass']('webshims-controls');
|
1382
|
-
|
1411
|
+
|
1383
1412
|
if(data){
|
1384
1413
|
if(nodeName == 'audio'){
|
1385
1414
|
setElementDimension(data, boolProp);
|
@@ -1387,12 +1416,12 @@
|
|
1387
1416
|
queueSwfMethod(this, 'api_controls', [boolProp], data);
|
1388
1417
|
}
|
1389
1418
|
});
|
1390
|
-
|
1391
|
-
|
1419
|
+
|
1420
|
+
|
1392
1421
|
webshims.onNodeNamesPropertyModify(nodeName, 'preload', function(val){
|
1393
1422
|
var data, baseData, elem;
|
1394
|
-
|
1395
|
-
|
1423
|
+
|
1424
|
+
|
1396
1425
|
if(bufferSrc(this)){
|
1397
1426
|
data = getSwfDataFromElem(this);
|
1398
1427
|
if(data){
|
@@ -1407,9 +1436,9 @@
|
|
1407
1436
|
}
|
1408
1437
|
}
|
1409
1438
|
});
|
1410
|
-
|
1439
|
+
|
1411
1440
|
mediaSup = webshims.defineNodeNameProperties(nodeName, descs, 'prop');
|
1412
|
-
|
1441
|
+
|
1413
1442
|
if(!support.mediaDefaultMuted){
|
1414
1443
|
webshims.defineNodeNameProperties(nodeName, {
|
1415
1444
|
defaultMuted: {
|
@@ -1427,8 +1456,68 @@
|
|
1427
1456
|
}, 'prop');
|
1428
1457
|
}
|
1429
1458
|
});
|
1430
|
-
|
1431
|
-
|
1459
|
+
|
1460
|
+
var addCanvasBridge = function(){
|
1461
|
+
if(!window.CanvasRenderingContext2D){
|
1462
|
+
return false;
|
1463
|
+
}
|
1464
|
+
var _drawImage = CanvasRenderingContext2D.prototype.drawImage;
|
1465
|
+
var slice = Array.prototype.slice;
|
1466
|
+
var isVideo = {
|
1467
|
+
video: 1,
|
1468
|
+
VIDEO: 1
|
1469
|
+
};
|
1470
|
+
var tested = {};
|
1471
|
+
|
1472
|
+
if(!_drawImage){
|
1473
|
+
webshim.error('canvas.drawImage feature is needed. In IE8 flashvanvas pro can be used');
|
1474
|
+
}
|
1475
|
+
|
1476
|
+
CanvasRenderingContext2D.prototype.drawImage = function(elem){
|
1477
|
+
var data, img, args, imgData;
|
1478
|
+
var context = this;
|
1479
|
+
|
1480
|
+
if(isVideo[elem.nodeName] && (data = webshims.data(elem, 'mediaelement')) && data.isActive == 'third' && data.api.api_image){
|
1481
|
+
|
1482
|
+
try {
|
1483
|
+
imgData = data.api.api_image();
|
1484
|
+
} catch (er){
|
1485
|
+
webshims.error(er);
|
1486
|
+
}
|
1487
|
+
if(!tested[data.currentSrc]){
|
1488
|
+
tested[data.currentSrc] = true;
|
1489
|
+
if(imgData == null){
|
1490
|
+
webshims.error('video has to be same origin or a crossdomain.xml has to be provided. Video has to be visible for flash API');
|
1491
|
+
}
|
1492
|
+
}
|
1493
|
+
|
1494
|
+
args = slice.call(arguments, 1);
|
1495
|
+
img = new Image();
|
1496
|
+
|
1497
|
+
//todo find a performant sync way
|
1498
|
+
img.onload = function(){
|
1499
|
+
args.unshift(this);
|
1500
|
+
_drawImage.apply(context, args);
|
1501
|
+
img.onload = null;
|
1502
|
+
};
|
1503
|
+
|
1504
|
+
img.src = 'data:image/jpeg;base64,'+imgData;
|
1505
|
+
|
1506
|
+
if(img.complete){
|
1507
|
+
img.onload();
|
1508
|
+
}
|
1509
|
+
return;
|
1510
|
+
}
|
1511
|
+
return _drawImage.apply(this, arguments);
|
1512
|
+
};
|
1513
|
+
return true;
|
1514
|
+
};
|
1515
|
+
|
1516
|
+
if(!addCanvasBridge()){
|
1517
|
+
webshims.ready('canvas', addCanvasBridge);
|
1518
|
+
}
|
1519
|
+
|
1520
|
+
|
1432
1521
|
if(hasFlash && $.cleanData){
|
1433
1522
|
var oldClean = $.cleanData;
|
1434
1523
|
var objElem = document.createElement('object');
|
@@ -1442,12 +1531,12 @@
|
|
1442
1531
|
object: 1,
|
1443
1532
|
OBJECT: 1
|
1444
1533
|
};
|
1445
|
-
|
1534
|
+
|
1446
1535
|
$.cleanData = function(elems){
|
1447
1536
|
var i, len, prop;
|
1448
1537
|
var ret = oldClean.apply(this, arguments);
|
1449
1538
|
if(elems && (len = elems.length) && loadedSwf){
|
1450
|
-
|
1539
|
+
|
1451
1540
|
for(i = 0; i < len; i++){
|
1452
1541
|
if(flashNames[elems[i].nodeName] && 'api_destroy' in elems[i]){
|
1453
1542
|
loadedSwf--;
|
@@ -1463,14 +1552,14 @@
|
|
1463
1552
|
} catch(er){console.log(er);}
|
1464
1553
|
}
|
1465
1554
|
}
|
1466
|
-
|
1555
|
+
|
1467
1556
|
}
|
1468
1557
|
return ret;
|
1469
1558
|
};
|
1470
1559
|
}
|
1471
1560
|
|
1472
1561
|
if(!hasNative){
|
1473
|
-
|
1562
|
+
|
1474
1563
|
['poster', 'src'].forEach(function(prop){
|
1475
1564
|
webshims.defineNodeNamesProperty(prop == 'src' ? ['audio', 'video', 'source'] : ['video'], prop, {
|
1476
1565
|
//attr: {},
|
@@ -1478,21 +1567,21 @@
|
|
1478
1567
|
propType: 'src'
|
1479
1568
|
});
|
1480
1569
|
});
|
1481
|
-
|
1570
|
+
|
1482
1571
|
webshims.defineNodeNamesProperty(['audio', 'video'], 'preload', {
|
1483
1572
|
reflect: true,
|
1484
1573
|
propType: 'enumarated',
|
1485
1574
|
defaultValue: '',
|
1486
1575
|
limitedTo: ['', 'auto', 'metadata', 'none']
|
1487
1576
|
});
|
1488
|
-
|
1577
|
+
|
1489
1578
|
webshims.reflectProperties('source', ['type', 'media']);
|
1490
|
-
|
1491
|
-
|
1579
|
+
|
1580
|
+
|
1492
1581
|
['autoplay', 'controls'].forEach(function(name){
|
1493
1582
|
webshims.defineNodeNamesBooleanProperty(['audio', 'video'], name);
|
1494
1583
|
});
|
1495
|
-
|
1584
|
+
|
1496
1585
|
webshims.defineNodeNamesProperties(['audio', 'video'], {
|
1497
1586
|
HAVE_CURRENT_DATA: {
|
1498
1587
|
value: 2
|
@@ -1521,7 +1610,7 @@
|
|
1521
1610
|
NETWORK_NO_SOURCE: {
|
1522
1611
|
value: 3
|
1523
1612
|
}
|
1524
|
-
|
1613
|
+
|
1525
1614
|
}, 'prop');
|
1526
1615
|
|
1527
1616
|
|
@@ -1547,7 +1636,7 @@
|
|
1547
1636
|
var media, error, parent;
|
1548
1637
|
if(
|
1549
1638
|
($(e.target).is('audio, video') || ((parent = e.target.parentNode) && $('source', parent).last()[0] == e.target)) &&
|
1550
|
-
|
1639
|
+
(media = $(e.target).closest('audio, video')) && !media.hasClass('nonnative-api-active')
|
1551
1640
|
){
|
1552
1641
|
error = media.prop('error');
|
1553
1642
|
setTimeout(function(){
|
@@ -2038,11 +2127,29 @@
|
|
2038
2127
|
webshims.error('you must provide a language for track in subtitles state');
|
2039
2128
|
}
|
2040
2129
|
obj.__wsmode = obj.mode;
|
2130
|
+
|
2131
|
+
webshims.defineProperty(obj, '_wsUpdateMode', {
|
2132
|
+
value: function(){
|
2133
|
+
$(mediaelem).triggerHandler('updatetrackdisplay');
|
2134
|
+
},
|
2135
|
+
enumerable: false
|
2136
|
+
});
|
2041
2137
|
}
|
2042
2138
|
|
2043
2139
|
return obj;
|
2044
2140
|
};
|
2045
2141
|
|
2142
|
+
if(!$.propHooks.mode){
|
2143
|
+
$.propHooks.mode = {
|
2144
|
+
set: function(obj, value){
|
2145
|
+
obj.mode = value;
|
2146
|
+
if(obj._wsUpdateMode && obj._wsUpdateMode.call){
|
2147
|
+
obj._wsUpdateMode();
|
2148
|
+
}
|
2149
|
+
return obj.mode;
|
2150
|
+
}
|
2151
|
+
};
|
2152
|
+
}
|
2046
2153
|
|
2047
2154
|
/*
|
2048
2155
|
taken from:
|
@@ -2293,7 +2400,7 @@ modified for webshims
|
|
2293
2400
|
var name = copyName[copyProp] || copyProp;
|
2294
2401
|
webshims.onNodeNamesPropertyModify('track', copyProp, function(){
|
2295
2402
|
var trackData = webshims.data(this, 'trackData');
|
2296
|
-
|
2403
|
+
|
2297
2404
|
if(trackData){
|
2298
2405
|
if(copyProp == 'kind'){
|
2299
2406
|
refreshTrack(this, trackData);
|