webshims-rails 1.11.2 → 1.11.3
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 +6 -14
- data/lib/webshims-rails/version.rb +2 -2
- data/vendor/assets/javascripts/webshims/polyfiller.js +3 -4
- data/vendor/assets/javascripts/webshims/shims/combos/1.js +20 -8
- data/vendor/assets/javascripts/webshims/shims/combos/10.js +43 -2
- data/vendor/assets/javascripts/webshims/shims/combos/11.js +3 -0
- data/vendor/assets/javascripts/webshims/shims/combos/12.js +12 -4
- data/vendor/assets/javascripts/webshims/shims/combos/13.js +12 -4
- data/vendor/assets/javascripts/webshims/shims/combos/14.js +40 -2
- data/vendor/assets/javascripts/webshims/shims/combos/15.js +48 -6
- data/vendor/assets/javascripts/webshims/shims/combos/16.js +60 -10
- data/vendor/assets/javascripts/webshims/shims/combos/17.js +3 -0
- data/vendor/assets/javascripts/webshims/shims/combos/18.js +3 -0
- data/vendor/assets/javascripts/webshims/shims/combos/19.js +115 -17
- data/vendor/assets/javascripts/webshims/shims/combos/2.js +60 -10
- data/vendor/assets/javascripts/webshims/shims/combos/20.js +115 -17
- data/vendor/assets/javascripts/webshims/shims/combos/21.js +63 -11
- data/vendor/assets/javascripts/webshims/shims/combos/23.js +12 -4
- data/vendor/assets/javascripts/webshims/shims/combos/24.js +3 -5
- data/vendor/assets/javascripts/webshims/shims/combos/25.js +115 -17
- data/vendor/assets/javascripts/webshims/shims/combos/26.js +40 -2
- data/vendor/assets/javascripts/webshims/shims/combos/3.js +48 -6
- data/vendor/assets/javascripts/webshims/shims/combos/30.js +48 -6
- data/vendor/assets/javascripts/webshims/shims/combos/31.js +48 -6
- data/vendor/assets/javascripts/webshims/shims/combos/4.js +40 -2
- data/vendor/assets/javascripts/webshims/shims/combos/5.js +3 -0
- data/vendor/assets/javascripts/webshims/shims/combos/6.js +3 -0
- data/vendor/assets/javascripts/webshims/shims/combos/7.js +60 -10
- data/vendor/assets/javascripts/webshims/shims/combos/8.js +60 -10
- data/vendor/assets/javascripts/webshims/shims/combos/9.js +43 -2
- data/vendor/assets/javascripts/webshims/shims/dom-extend.js +40 -2
- data/vendor/assets/javascripts/webshims/shims/form-core.js +8 -4
- data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +3 -0
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +3 -5
- data/vendor/assets/javascripts/webshims/shims/form-validation.js +137 -0
- data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +12 -4
- data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +63 -11
- metadata +6 -6
@@ -1412,6 +1412,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1412
1412
|
if(!langCfg['datetime-local']){
|
1413
1413
|
langCfg['datetime-local'] = {};
|
1414
1414
|
}
|
1415
|
+
if(!langCfg.time){
|
1416
|
+
langCfg.time = {};
|
1417
|
+
}
|
1415
1418
|
if(!langCfg['datetime-local'].currentText && langCfg.time.currentText){
|
1416
1419
|
langCfg['datetime-local'].currentText = langCfg.time.currentText;
|
1417
1420
|
}
|
@@ -2215,6 +2215,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
2215
2215
|
if(!langCfg['datetime-local']){
|
2216
2216
|
langCfg['datetime-local'] = {};
|
2217
2217
|
}
|
2218
|
+
if(!langCfg.time){
|
2219
|
+
langCfg.time = {};
|
2220
|
+
}
|
2218
2221
|
if(!langCfg['datetime-local'].currentText && langCfg.time.currentText){
|
2219
2222
|
langCfg['datetime-local'].currentText = langCfg.time.currentText;
|
2220
2223
|
}
|
@@ -1258,6 +1258,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1258
1258
|
"use strict";
|
1259
1259
|
var supportHrefNormalized = !('hrefNormalized' in $.support) || $.support.hrefNormalized;
|
1260
1260
|
var supportGetSetAttribute = !('getSetAttribute' in $.support) || $.support.getSetAttribute;
|
1261
|
+
var has = Object.prototype.hasOwnProperty;
|
1261
1262
|
webshims.assumeARIA = supportGetSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
|
1262
1263
|
|
1263
1264
|
if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
|
@@ -1330,6 +1331,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1330
1331
|
//proxying attribute
|
1331
1332
|
var olds = {};
|
1332
1333
|
var havePolyfill = {};
|
1334
|
+
var hasPolyfillMethod = {};
|
1333
1335
|
var extendedProps = {};
|
1334
1336
|
var extendQ = {};
|
1335
1337
|
var modifyProps = {};
|
@@ -1435,6 +1437,39 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1435
1437
|
};
|
1436
1438
|
});
|
1437
1439
|
|
1440
|
+
//add support for $('video').trigger('play') in case extendNative is set to false
|
1441
|
+
if(!webshims.cfg.extendNative && !webshims.cfg.noTriggerOverride){
|
1442
|
+
(function(oldTrigger){
|
1443
|
+
$.event.trigger = function(event, data, elem, onlyHandlers){
|
1444
|
+
|
1445
|
+
if(!hasPolyfillMethod[event] || onlyHandlers || !elem || elem.nodeType !== 1){
|
1446
|
+
return oldTrigger.apply(this, arguments);
|
1447
|
+
}
|
1448
|
+
var ret, isOrig, origName;
|
1449
|
+
var origFn = elem[event];
|
1450
|
+
var polyfilledFn = $.prop(elem, event);
|
1451
|
+
var changeFn = polyfilledFn && origFn != polyfilledFn;
|
1452
|
+
if(changeFn){
|
1453
|
+
origName = '__ws'+event;
|
1454
|
+
isOrig = (event in elem) && has.call(elem, event);
|
1455
|
+
elem[event] = polyfilledFn;
|
1456
|
+
elem[origName] = origFn;
|
1457
|
+
}
|
1458
|
+
|
1459
|
+
ret = oldTrigger.apply(this, arguments);
|
1460
|
+
if (changeFn) {
|
1461
|
+
if(isOrig){
|
1462
|
+
elem[event] = origFn;
|
1463
|
+
} else {
|
1464
|
+
delete elem[event];
|
1465
|
+
}
|
1466
|
+
delete elem[origName];
|
1467
|
+
}
|
1468
|
+
|
1469
|
+
return ret;
|
1470
|
+
};
|
1471
|
+
})($.event.trigger);
|
1472
|
+
}
|
1438
1473
|
|
1439
1474
|
['removeAttr', 'prop', 'attr'].forEach(function(type){
|
1440
1475
|
olds[type] = $[type];
|
@@ -1519,6 +1554,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1519
1554
|
}
|
1520
1555
|
var oldDesc = extendedProps[nodeName][prop][type];
|
1521
1556
|
var getSup = function(propType, descriptor, oDesc){
|
1557
|
+
var origProp;
|
1522
1558
|
if(descriptor && descriptor[propType]){
|
1523
1559
|
return descriptor[propType];
|
1524
1560
|
}
|
@@ -1535,8 +1571,10 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1535
1571
|
};
|
1536
1572
|
}
|
1537
1573
|
if(type == 'prop' && propType == 'value' && desc.value.apply){
|
1574
|
+
origProp = '__ws'+prop;
|
1575
|
+
hasPolyfillMethod[prop] = true;
|
1538
1576
|
return function(value){
|
1539
|
-
var sup = olds[type](this, prop);
|
1577
|
+
var sup = this[origProp] || olds[type](this, prop);
|
1540
1578
|
if(sup && sup.apply){
|
1541
1579
|
sup = sup.apply(this, arguments);
|
1542
1580
|
}
|
@@ -1574,7 +1612,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1574
1612
|
|
1575
1613
|
var extendNativeValue = (function(){
|
1576
1614
|
var UNKNOWN = webshims.getPrototypeOf(document.createElement('foobar'));
|
1577
|
-
|
1615
|
+
|
1578
1616
|
//see also: https://github.com/lojjic/PIE/issues/40 | https://prototype.lighthouseapp.com/projects/8886/tickets/1107-ie8-fatal-crash-when-prototypejs-is-loaded-with-rounded-cornershtc
|
1579
1617
|
var isExtendNativeSave = Modernizr.advancedObjectProperties && Modernizr.objectAccessor;
|
1580
1618
|
return function(nodeName, prop, desc){
|
@@ -2492,7 +2530,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
2492
2530
|
src.server = tmp;
|
2493
2531
|
}
|
2494
2532
|
|
2495
|
-
tmp = elem.attr('type');
|
2533
|
+
tmp = elem.attr('type') || elem.attr('data-type');
|
2496
2534
|
if(tmp){
|
2497
2535
|
src.type = tmp;
|
2498
2536
|
src.container = $.trim(tmp.split(';')[0]);
|
@@ -2516,6 +2554,11 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
2516
2554
|
}
|
2517
2555
|
}
|
2518
2556
|
}
|
2557
|
+
|
2558
|
+
if(!src.container){
|
2559
|
+
$(elem).attr('data-wsrecheckmimetype', '');
|
2560
|
+
}
|
2561
|
+
|
2519
2562
|
tmp = elem.attr('media');
|
2520
2563
|
if(tmp){
|
2521
2564
|
src.media = tmp;
|
@@ -2749,15 +2792,18 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
2749
2792
|
|
2750
2793
|
var handleThird = (function(){
|
2751
2794
|
var requested;
|
2795
|
+
var readyType = hasSwf ? swfType : 'mediaelement-yt';
|
2752
2796
|
return function( mediaElem, ret, data ){
|
2797
|
+
//readd to ready
|
2753
2798
|
|
2754
|
-
|
2755
|
-
|
2799
|
+
|
2800
|
+
webshims.ready(readyType, function(){
|
2801
|
+
if(mediaelement.createSWF && $(mediaElem).parent()[0]){
|
2756
2802
|
mediaelement.createSWF( mediaElem, ret, data );
|
2757
2803
|
} else if(!requested) {
|
2758
2804
|
requested = true;
|
2759
2805
|
loadThird();
|
2760
|
-
|
2806
|
+
|
2761
2807
|
handleThird( mediaElem, ret, data );
|
2762
2808
|
}
|
2763
2809
|
});
|
@@ -3098,15 +3144,6 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
3098
3144
|
lastDuration: 0
|
3099
3145
|
}, getProps, getSetProps);
|
3100
3146
|
|
3101
|
-
var idRep = /^jarisplayer-/;
|
3102
|
-
var getSwfDataFromID = function(id){
|
3103
|
-
|
3104
|
-
var elem = document.getElementById(id.replace(idRep, ''));
|
3105
|
-
if(!elem){return;}
|
3106
|
-
var data = webshims.data(elem, 'mediaelement');
|
3107
|
-
return data.isActive == 'third' ? data : null;
|
3108
|
-
};
|
3109
|
-
|
3110
3147
|
|
3111
3148
|
var getSwfDataFromElem = function(elem){
|
3112
3149
|
try {
|
@@ -3699,6 +3736,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
3699
3736
|
box = data.shadowElem;
|
3700
3737
|
resetSwfProps(data);
|
3701
3738
|
} else {
|
3739
|
+
$(document.getElementById('wrapper-'+ elemId )).remove();
|
3702
3740
|
box = $('<div class="polyfill-'+ (elemNodeName) +' polyfill-mediaelement" id="wrapper-'+ elemId +'"><div id="'+ elemId +'"></div>')
|
3703
3741
|
.css({
|
3704
3742
|
position: 'relative',
|
@@ -3781,8 +3819,11 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
3781
3819
|
;
|
3782
3820
|
}
|
3783
3821
|
|
3784
|
-
|
3785
|
-
|
3822
|
+
if(mediaelement.jarisEvent[data.id] && mediaelement.jarisEvent[data.id].elem != elem){
|
3823
|
+
webshims.error('something went wrong');
|
3824
|
+
return;
|
3825
|
+
} else if(!mediaelement.jarisEvent[data.id]){
|
3826
|
+
|
3786
3827
|
mediaelement.jarisEvent[data.id] = function(jaris){
|
3787
3828
|
|
3788
3829
|
if(jaris.type == 'ready'){
|
@@ -3988,6 +4029,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
3988
4029
|
descs[fn] = {
|
3989
4030
|
value: function(){
|
3990
4031
|
var data = getSwfDataFromElem(this);
|
4032
|
+
|
3991
4033
|
if(data){
|
3992
4034
|
if(data.stopPlayPause){
|
3993
4035
|
clearTimeout(data.stopPlayPause);
|
@@ -4010,6 +4052,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
4010
4052
|
|
4011
4053
|
webshims.onNodeNamesPropertyModify(nodeName, 'controls', function(val, boolProp){
|
4012
4054
|
var data = getSwfDataFromElem(this);
|
4055
|
+
|
4013
4056
|
$(this)[boolProp ? 'addClass' : 'removeClass']('webshims-controls');
|
4014
4057
|
|
4015
4058
|
if(data){
|
@@ -4143,5 +4186,60 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
4143
4186
|
} else if(!('media' in document.createElement('source'))){
|
4144
4187
|
webshims.reflectProperties('source', ['media']);
|
4145
4188
|
}
|
4189
|
+
if(options.experimentallyMimetypeCheck){
|
4190
|
+
(function(){
|
4191
|
+
var ADDBACK = $.fn.addBack ? 'addBack' : 'andSelf';
|
4192
|
+
var getMimeType = function(){
|
4193
|
+
var done;
|
4194
|
+
var unknown = 'media/unknown please provide mime type';
|
4195
|
+
var media = $(this);
|
4196
|
+
var xhrs = [];
|
4197
|
+
media
|
4198
|
+
.not('.ws-after-check')
|
4199
|
+
.find('source')
|
4200
|
+
[ADDBACK]()
|
4201
|
+
.filter('[data-wsrecheckmimetype]:not([type])')
|
4202
|
+
.each(function(){
|
4203
|
+
var source = $(this).removeAttr('data-wsrecheckmimetype');
|
4204
|
+
var error = function(){
|
4205
|
+
source.attr('data-type', unknown);
|
4206
|
+
};
|
4207
|
+
try {
|
4208
|
+
xhrs.push(
|
4209
|
+
$.ajax({
|
4210
|
+
type: 'head',
|
4211
|
+
url: $.attr(this, 'src'),
|
4212
|
+
success: function(content, status, xhr){
|
4213
|
+
var mime = xhr.getResponseHeader('Content-Type');
|
4214
|
+
if(mime){
|
4215
|
+
done = true;
|
4216
|
+
}
|
4217
|
+
source.attr('data-type', mime || unknown);
|
4218
|
+
},
|
4219
|
+
error: error
|
4220
|
+
})
|
4221
|
+
)
|
4222
|
+
;
|
4223
|
+
} catch(er){
|
4224
|
+
error();
|
4225
|
+
}
|
4226
|
+
})
|
4227
|
+
;
|
4228
|
+
if(xhrs.length){
|
4229
|
+
media.addClass('ws-after-check');
|
4230
|
+
$.when.apply($, xhrs).always(function(){
|
4231
|
+
media.mediaLoad();
|
4232
|
+
setTimeout(function(){
|
4233
|
+
media.removeClass('ws-after-check');
|
4234
|
+
}, 9);
|
4235
|
+
});
|
4236
|
+
}
|
4237
|
+
};
|
4238
|
+
$('audio.media-error, video.media-error').each(getMimeType);
|
4239
|
+
$(document).on('mediaerror', function(e){
|
4240
|
+
getMimeType.call(e.target);
|
4241
|
+
});
|
4242
|
+
})();
|
4243
|
+
}
|
4146
4244
|
|
4147
4245
|
});
|
@@ -455,6 +455,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
455
455
|
"use strict";
|
456
456
|
var supportHrefNormalized = !('hrefNormalized' in $.support) || $.support.hrefNormalized;
|
457
457
|
var supportGetSetAttribute = !('getSetAttribute' in $.support) || $.support.getSetAttribute;
|
458
|
+
var has = Object.prototype.hasOwnProperty;
|
458
459
|
webshims.assumeARIA = supportGetSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
|
459
460
|
|
460
461
|
if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
|
@@ -527,6 +528,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
527
528
|
//proxying attribute
|
528
529
|
var olds = {};
|
529
530
|
var havePolyfill = {};
|
531
|
+
var hasPolyfillMethod = {};
|
530
532
|
var extendedProps = {};
|
531
533
|
var extendQ = {};
|
532
534
|
var modifyProps = {};
|
@@ -632,6 +634,39 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
632
634
|
};
|
633
635
|
});
|
634
636
|
|
637
|
+
//add support for $('video').trigger('play') in case extendNative is set to false
|
638
|
+
if(!webshims.cfg.extendNative && !webshims.cfg.noTriggerOverride){
|
639
|
+
(function(oldTrigger){
|
640
|
+
$.event.trigger = function(event, data, elem, onlyHandlers){
|
641
|
+
|
642
|
+
if(!hasPolyfillMethod[event] || onlyHandlers || !elem || elem.nodeType !== 1){
|
643
|
+
return oldTrigger.apply(this, arguments);
|
644
|
+
}
|
645
|
+
var ret, isOrig, origName;
|
646
|
+
var origFn = elem[event];
|
647
|
+
var polyfilledFn = $.prop(elem, event);
|
648
|
+
var changeFn = polyfilledFn && origFn != polyfilledFn;
|
649
|
+
if(changeFn){
|
650
|
+
origName = '__ws'+event;
|
651
|
+
isOrig = (event in elem) && has.call(elem, event);
|
652
|
+
elem[event] = polyfilledFn;
|
653
|
+
elem[origName] = origFn;
|
654
|
+
}
|
655
|
+
|
656
|
+
ret = oldTrigger.apply(this, arguments);
|
657
|
+
if (changeFn) {
|
658
|
+
if(isOrig){
|
659
|
+
elem[event] = origFn;
|
660
|
+
} else {
|
661
|
+
delete elem[event];
|
662
|
+
}
|
663
|
+
delete elem[origName];
|
664
|
+
}
|
665
|
+
|
666
|
+
return ret;
|
667
|
+
};
|
668
|
+
})($.event.trigger);
|
669
|
+
}
|
635
670
|
|
636
671
|
['removeAttr', 'prop', 'attr'].forEach(function(type){
|
637
672
|
olds[type] = $[type];
|
@@ -716,6 +751,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
716
751
|
}
|
717
752
|
var oldDesc = extendedProps[nodeName][prop][type];
|
718
753
|
var getSup = function(propType, descriptor, oDesc){
|
754
|
+
var origProp;
|
719
755
|
if(descriptor && descriptor[propType]){
|
720
756
|
return descriptor[propType];
|
721
757
|
}
|
@@ -732,8 +768,10 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
732
768
|
};
|
733
769
|
}
|
734
770
|
if(type == 'prop' && propType == 'value' && desc.value.apply){
|
771
|
+
origProp = '__ws'+prop;
|
772
|
+
hasPolyfillMethod[prop] = true;
|
735
773
|
return function(value){
|
736
|
-
var sup = olds[type](this, prop);
|
774
|
+
var sup = this[origProp] || olds[type](this, prop);
|
737
775
|
if(sup && sup.apply){
|
738
776
|
sup = sup.apply(this, arguments);
|
739
777
|
}
|
@@ -771,7 +809,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
771
809
|
|
772
810
|
var extendNativeValue = (function(){
|
773
811
|
var UNKNOWN = webshims.getPrototypeOf(document.createElement('foobar'));
|
774
|
-
|
812
|
+
|
775
813
|
//see also: https://github.com/lojjic/PIE/issues/40 | https://prototype.lighthouseapp.com/projects/8886/tickets/1107-ie8-fatal-crash-when-prototypejs-is-loaded-with-rounded-cornershtc
|
776
814
|
var isExtendNativeSave = Modernizr.advancedObjectProperties && Modernizr.objectAccessor;
|
777
815
|
return function(nodeName, prop, desc){
|
@@ -1599,17 +1637,21 @@ webshims.register('form-core', function($, webshims, window, document, undefined
|
|
1599
1637
|
/*
|
1600
1638
|
* Selectors for all browsers
|
1601
1639
|
*/
|
1640
|
+
var rElementsGroup = /^(?:form|fieldset)$/i;
|
1602
1641
|
var hasInvalid = function(elem){
|
1603
1642
|
var ret = false;
|
1604
1643
|
$(elem).jProp('elements').each(function(){
|
1605
|
-
|
1606
|
-
|
1607
|
-
|
1644
|
+
if(!rElementsGroup.test(elem.nodeName || '')){
|
1645
|
+
ret = $(this).is(':invalid');
|
1646
|
+
if(ret){
|
1647
|
+
return false;
|
1648
|
+
}
|
1608
1649
|
}
|
1650
|
+
|
1609
1651
|
});
|
1610
1652
|
return ret;
|
1611
1653
|
};
|
1612
|
-
|
1654
|
+
|
1613
1655
|
$.extend($.expr[":"], {
|
1614
1656
|
"valid-element": function(elem){
|
1615
1657
|
return rElementsGroup.test(elem.nodeName || '') ? !hasInvalid(elem) :!!($.prop(elem, 'willValidate') && isValid(elem));
|
@@ -2192,7 +2234,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
2192
2234
|
src.server = tmp;
|
2193
2235
|
}
|
2194
2236
|
|
2195
|
-
tmp = elem.attr('type');
|
2237
|
+
tmp = elem.attr('type') || elem.attr('data-type');
|
2196
2238
|
if(tmp){
|
2197
2239
|
src.type = tmp;
|
2198
2240
|
src.container = $.trim(tmp.split(';')[0]);
|
@@ -2216,6 +2258,11 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
2216
2258
|
}
|
2217
2259
|
}
|
2218
2260
|
}
|
2261
|
+
|
2262
|
+
if(!src.container){
|
2263
|
+
$(elem).attr('data-wsrecheckmimetype', '');
|
2264
|
+
}
|
2265
|
+
|
2219
2266
|
tmp = elem.attr('media');
|
2220
2267
|
if(tmp){
|
2221
2268
|
src.media = tmp;
|
@@ -2449,15 +2496,18 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
2449
2496
|
|
2450
2497
|
var handleThird = (function(){
|
2451
2498
|
var requested;
|
2499
|
+
var readyType = hasSwf ? swfType : 'mediaelement-yt';
|
2452
2500
|
return function( mediaElem, ret, data ){
|
2501
|
+
//readd to ready
|
2453
2502
|
|
2454
|
-
|
2455
|
-
|
2503
|
+
|
2504
|
+
webshims.ready(readyType, function(){
|
2505
|
+
if(mediaelement.createSWF && $(mediaElem).parent()[0]){
|
2456
2506
|
mediaelement.createSWF( mediaElem, ret, data );
|
2457
2507
|
} else if(!requested) {
|
2458
2508
|
requested = true;
|
2459
2509
|
loadThird();
|
2460
|
-
|
2510
|
+
|
2461
2511
|
handleThird( mediaElem, ret, data );
|
2462
2512
|
}
|
2463
2513
|
});
|
@@ -806,6 +806,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
806
806
|
"use strict";
|
807
807
|
var supportHrefNormalized = !('hrefNormalized' in $.support) || $.support.hrefNormalized;
|
808
808
|
var supportGetSetAttribute = !('getSetAttribute' in $.support) || $.support.getSetAttribute;
|
809
|
+
var has = Object.prototype.hasOwnProperty;
|
809
810
|
webshims.assumeARIA = supportGetSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
|
810
811
|
|
811
812
|
if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
|
@@ -878,6 +879,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
878
879
|
//proxying attribute
|
879
880
|
var olds = {};
|
880
881
|
var havePolyfill = {};
|
882
|
+
var hasPolyfillMethod = {};
|
881
883
|
var extendedProps = {};
|
882
884
|
var extendQ = {};
|
883
885
|
var modifyProps = {};
|
@@ -983,6 +985,39 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
983
985
|
};
|
984
986
|
});
|
985
987
|
|
988
|
+
//add support for $('video').trigger('play') in case extendNative is set to false
|
989
|
+
if(!webshims.cfg.extendNative && !webshims.cfg.noTriggerOverride){
|
990
|
+
(function(oldTrigger){
|
991
|
+
$.event.trigger = function(event, data, elem, onlyHandlers){
|
992
|
+
|
993
|
+
if(!hasPolyfillMethod[event] || onlyHandlers || !elem || elem.nodeType !== 1){
|
994
|
+
return oldTrigger.apply(this, arguments);
|
995
|
+
}
|
996
|
+
var ret, isOrig, origName;
|
997
|
+
var origFn = elem[event];
|
998
|
+
var polyfilledFn = $.prop(elem, event);
|
999
|
+
var changeFn = polyfilledFn && origFn != polyfilledFn;
|
1000
|
+
if(changeFn){
|
1001
|
+
origName = '__ws'+event;
|
1002
|
+
isOrig = (event in elem) && has.call(elem, event);
|
1003
|
+
elem[event] = polyfilledFn;
|
1004
|
+
elem[origName] = origFn;
|
1005
|
+
}
|
1006
|
+
|
1007
|
+
ret = oldTrigger.apply(this, arguments);
|
1008
|
+
if (changeFn) {
|
1009
|
+
if(isOrig){
|
1010
|
+
elem[event] = origFn;
|
1011
|
+
} else {
|
1012
|
+
delete elem[event];
|
1013
|
+
}
|
1014
|
+
delete elem[origName];
|
1015
|
+
}
|
1016
|
+
|
1017
|
+
return ret;
|
1018
|
+
};
|
1019
|
+
})($.event.trigger);
|
1020
|
+
}
|
986
1021
|
|
987
1022
|
['removeAttr', 'prop', 'attr'].forEach(function(type){
|
988
1023
|
olds[type] = $[type];
|
@@ -1067,6 +1102,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1067
1102
|
}
|
1068
1103
|
var oldDesc = extendedProps[nodeName][prop][type];
|
1069
1104
|
var getSup = function(propType, descriptor, oDesc){
|
1105
|
+
var origProp;
|
1070
1106
|
if(descriptor && descriptor[propType]){
|
1071
1107
|
return descriptor[propType];
|
1072
1108
|
}
|
@@ -1083,8 +1119,10 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1083
1119
|
};
|
1084
1120
|
}
|
1085
1121
|
if(type == 'prop' && propType == 'value' && desc.value.apply){
|
1122
|
+
origProp = '__ws'+prop;
|
1123
|
+
hasPolyfillMethod[prop] = true;
|
1086
1124
|
return function(value){
|
1087
|
-
var sup = olds[type](this, prop);
|
1125
|
+
var sup = this[origProp] || olds[type](this, prop);
|
1088
1126
|
if(sup && sup.apply){
|
1089
1127
|
sup = sup.apply(this, arguments);
|
1090
1128
|
}
|
@@ -1122,7 +1160,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1122
1160
|
|
1123
1161
|
var extendNativeValue = (function(){
|
1124
1162
|
var UNKNOWN = webshims.getPrototypeOf(document.createElement('foobar'));
|
1125
|
-
|
1163
|
+
|
1126
1164
|
//see also: https://github.com/lojjic/PIE/issues/40 | https://prototype.lighthouseapp.com/projects/8886/tickets/1107-ie8-fatal-crash-when-prototypejs-is-loaded-with-rounded-cornershtc
|
1127
1165
|
var isExtendNativeSave = Modernizr.advancedObjectProperties && Modernizr.objectAccessor;
|
1128
1166
|
return function(nodeName, prop, desc){
|
@@ -2040,7 +2078,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
2040
2078
|
src.server = tmp;
|
2041
2079
|
}
|
2042
2080
|
|
2043
|
-
tmp = elem.attr('type');
|
2081
|
+
tmp = elem.attr('type') || elem.attr('data-type');
|
2044
2082
|
if(tmp){
|
2045
2083
|
src.type = tmp;
|
2046
2084
|
src.container = $.trim(tmp.split(';')[0]);
|
@@ -2064,6 +2102,11 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
2064
2102
|
}
|
2065
2103
|
}
|
2066
2104
|
}
|
2105
|
+
|
2106
|
+
if(!src.container){
|
2107
|
+
$(elem).attr('data-wsrecheckmimetype', '');
|
2108
|
+
}
|
2109
|
+
|
2067
2110
|
tmp = elem.attr('media');
|
2068
2111
|
if(tmp){
|
2069
2112
|
src.media = tmp;
|
@@ -2297,15 +2340,18 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
2297
2340
|
|
2298
2341
|
var handleThird = (function(){
|
2299
2342
|
var requested;
|
2343
|
+
var readyType = hasSwf ? swfType : 'mediaelement-yt';
|
2300
2344
|
return function( mediaElem, ret, data ){
|
2345
|
+
//readd to ready
|
2346
|
+
|
2301
2347
|
|
2302
|
-
webshims.ready(
|
2303
|
-
if(mediaelement.createSWF){
|
2348
|
+
webshims.ready(readyType, function(){
|
2349
|
+
if(mediaelement.createSWF && $(mediaElem).parent()[0]){
|
2304
2350
|
mediaelement.createSWF( mediaElem, ret, data );
|
2305
2351
|
} else if(!requested) {
|
2306
2352
|
requested = true;
|
2307
2353
|
loadThird();
|
2308
|
-
|
2354
|
+
|
2309
2355
|
handleThird( mediaElem, ret, data );
|
2310
2356
|
}
|
2311
2357
|
});
|
@@ -2646,15 +2692,6 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
2646
2692
|
lastDuration: 0
|
2647
2693
|
}, getProps, getSetProps);
|
2648
2694
|
|
2649
|
-
var idRep = /^jarisplayer-/;
|
2650
|
-
var getSwfDataFromID = function(id){
|
2651
|
-
|
2652
|
-
var elem = document.getElementById(id.replace(idRep, ''));
|
2653
|
-
if(!elem){return;}
|
2654
|
-
var data = webshims.data(elem, 'mediaelement');
|
2655
|
-
return data.isActive == 'third' ? data : null;
|
2656
|
-
};
|
2657
|
-
|
2658
2695
|
|
2659
2696
|
var getSwfDataFromElem = function(elem){
|
2660
2697
|
try {
|
@@ -3247,6 +3284,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
3247
3284
|
box = data.shadowElem;
|
3248
3285
|
resetSwfProps(data);
|
3249
3286
|
} else {
|
3287
|
+
$(document.getElementById('wrapper-'+ elemId )).remove();
|
3250
3288
|
box = $('<div class="polyfill-'+ (elemNodeName) +' polyfill-mediaelement" id="wrapper-'+ elemId +'"><div id="'+ elemId +'"></div>')
|
3251
3289
|
.css({
|
3252
3290
|
position: 'relative',
|
@@ -3329,8 +3367,11 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
3329
3367
|
;
|
3330
3368
|
}
|
3331
3369
|
|
3332
|
-
|
3333
|
-
|
3370
|
+
if(mediaelement.jarisEvent[data.id] && mediaelement.jarisEvent[data.id].elem != elem){
|
3371
|
+
webshims.error('something went wrong');
|
3372
|
+
return;
|
3373
|
+
} else if(!mediaelement.jarisEvent[data.id]){
|
3374
|
+
|
3334
3375
|
mediaelement.jarisEvent[data.id] = function(jaris){
|
3335
3376
|
|
3336
3377
|
if(jaris.type == 'ready'){
|
@@ -3536,6 +3577,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
3536
3577
|
descs[fn] = {
|
3537
3578
|
value: function(){
|
3538
3579
|
var data = getSwfDataFromElem(this);
|
3580
|
+
|
3539
3581
|
if(data){
|
3540
3582
|
if(data.stopPlayPause){
|
3541
3583
|
clearTimeout(data.stopPlayPause);
|
@@ -3558,6 +3600,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
3558
3600
|
|
3559
3601
|
webshims.onNodeNamesPropertyModify(nodeName, 'controls', function(val, boolProp){
|
3560
3602
|
var data = getSwfDataFromElem(this);
|
3603
|
+
|
3561
3604
|
$(this)[boolProp ? 'addClass' : 'removeClass']('webshims-controls');
|
3562
3605
|
|
3563
3606
|
if(data){
|
@@ -3691,5 +3734,60 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
3691
3734
|
} else if(!('media' in document.createElement('source'))){
|
3692
3735
|
webshims.reflectProperties('source', ['media']);
|
3693
3736
|
}
|
3737
|
+
if(options.experimentallyMimetypeCheck){
|
3738
|
+
(function(){
|
3739
|
+
var ADDBACK = $.fn.addBack ? 'addBack' : 'andSelf';
|
3740
|
+
var getMimeType = function(){
|
3741
|
+
var done;
|
3742
|
+
var unknown = 'media/unknown please provide mime type';
|
3743
|
+
var media = $(this);
|
3744
|
+
var xhrs = [];
|
3745
|
+
media
|
3746
|
+
.not('.ws-after-check')
|
3747
|
+
.find('source')
|
3748
|
+
[ADDBACK]()
|
3749
|
+
.filter('[data-wsrecheckmimetype]:not([type])')
|
3750
|
+
.each(function(){
|
3751
|
+
var source = $(this).removeAttr('data-wsrecheckmimetype');
|
3752
|
+
var error = function(){
|
3753
|
+
source.attr('data-type', unknown);
|
3754
|
+
};
|
3755
|
+
try {
|
3756
|
+
xhrs.push(
|
3757
|
+
$.ajax({
|
3758
|
+
type: 'head',
|
3759
|
+
url: $.attr(this, 'src'),
|
3760
|
+
success: function(content, status, xhr){
|
3761
|
+
var mime = xhr.getResponseHeader('Content-Type');
|
3762
|
+
if(mime){
|
3763
|
+
done = true;
|
3764
|
+
}
|
3765
|
+
source.attr('data-type', mime || unknown);
|
3766
|
+
},
|
3767
|
+
error: error
|
3768
|
+
})
|
3769
|
+
)
|
3770
|
+
;
|
3771
|
+
} catch(er){
|
3772
|
+
error();
|
3773
|
+
}
|
3774
|
+
})
|
3775
|
+
;
|
3776
|
+
if(xhrs.length){
|
3777
|
+
media.addClass('ws-after-check');
|
3778
|
+
$.when.apply($, xhrs).always(function(){
|
3779
|
+
media.mediaLoad();
|
3780
|
+
setTimeout(function(){
|
3781
|
+
media.removeClass('ws-after-check');
|
3782
|
+
}, 9);
|
3783
|
+
});
|
3784
|
+
}
|
3785
|
+
};
|
3786
|
+
$('audio.media-error, video.media-error').each(getMimeType);
|
3787
|
+
$(document).on('mediaerror', function(e){
|
3788
|
+
getMimeType.call(e.target);
|
3789
|
+
});
|
3790
|
+
})();
|
3791
|
+
}
|
3694
3792
|
|
3695
3793
|
});
|