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
@@ -375,15 +375,6 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
375
375
|
lastDuration: 0
|
376
376
|
}, getProps, getSetProps);
|
377
377
|
|
378
|
-
var idRep = /^jarisplayer-/;
|
379
|
-
var getSwfDataFromID = function(id){
|
380
|
-
|
381
|
-
var elem = document.getElementById(id.replace(idRep, ''));
|
382
|
-
if(!elem){return;}
|
383
|
-
var data = webshims.data(elem, 'mediaelement');
|
384
|
-
return data.isActive == 'third' ? data : null;
|
385
|
-
};
|
386
|
-
|
387
378
|
|
388
379
|
var getSwfDataFromElem = function(elem){
|
389
380
|
try {
|
@@ -976,6 +967,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
976
967
|
box = data.shadowElem;
|
977
968
|
resetSwfProps(data);
|
978
969
|
} else {
|
970
|
+
$(document.getElementById('wrapper-'+ elemId )).remove();
|
979
971
|
box = $('<div class="polyfill-'+ (elemNodeName) +' polyfill-mediaelement" id="wrapper-'+ elemId +'"><div id="'+ elemId +'"></div>')
|
980
972
|
.css({
|
981
973
|
position: 'relative',
|
@@ -1058,8 +1050,11 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
1058
1050
|
;
|
1059
1051
|
}
|
1060
1052
|
|
1061
|
-
|
1062
|
-
|
1053
|
+
if(mediaelement.jarisEvent[data.id] && mediaelement.jarisEvent[data.id].elem != elem){
|
1054
|
+
webshims.error('something went wrong');
|
1055
|
+
return;
|
1056
|
+
} else if(!mediaelement.jarisEvent[data.id]){
|
1057
|
+
|
1063
1058
|
mediaelement.jarisEvent[data.id] = function(jaris){
|
1064
1059
|
|
1065
1060
|
if(jaris.type == 'ready'){
|
@@ -1265,6 +1260,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
1265
1260
|
descs[fn] = {
|
1266
1261
|
value: function(){
|
1267
1262
|
var data = getSwfDataFromElem(this);
|
1263
|
+
|
1268
1264
|
if(data){
|
1269
1265
|
if(data.stopPlayPause){
|
1270
1266
|
clearTimeout(data.stopPlayPause);
|
@@ -1287,6 +1283,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
1287
1283
|
|
1288
1284
|
webshims.onNodeNamesPropertyModify(nodeName, 'controls', function(val, boolProp){
|
1289
1285
|
var data = getSwfDataFromElem(this);
|
1286
|
+
|
1290
1287
|
$(this)[boolProp ? 'addClass' : 'removeClass']('webshims-controls');
|
1291
1288
|
|
1292
1289
|
if(data){
|
@@ -1420,6 +1417,61 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
1420
1417
|
} else if(!('media' in document.createElement('source'))){
|
1421
1418
|
webshims.reflectProperties('source', ['media']);
|
1422
1419
|
}
|
1420
|
+
if(options.experimentallyMimetypeCheck){
|
1421
|
+
(function(){
|
1422
|
+
var ADDBACK = $.fn.addBack ? 'addBack' : 'andSelf';
|
1423
|
+
var getMimeType = function(){
|
1424
|
+
var done;
|
1425
|
+
var unknown = 'media/unknown please provide mime type';
|
1426
|
+
var media = $(this);
|
1427
|
+
var xhrs = [];
|
1428
|
+
media
|
1429
|
+
.not('.ws-after-check')
|
1430
|
+
.find('source')
|
1431
|
+
[ADDBACK]()
|
1432
|
+
.filter('[data-wsrecheckmimetype]:not([type])')
|
1433
|
+
.each(function(){
|
1434
|
+
var source = $(this).removeAttr('data-wsrecheckmimetype');
|
1435
|
+
var error = function(){
|
1436
|
+
source.attr('data-type', unknown);
|
1437
|
+
};
|
1438
|
+
try {
|
1439
|
+
xhrs.push(
|
1440
|
+
$.ajax({
|
1441
|
+
type: 'head',
|
1442
|
+
url: $.attr(this, 'src'),
|
1443
|
+
success: function(content, status, xhr){
|
1444
|
+
var mime = xhr.getResponseHeader('Content-Type');
|
1445
|
+
if(mime){
|
1446
|
+
done = true;
|
1447
|
+
}
|
1448
|
+
source.attr('data-type', mime || unknown);
|
1449
|
+
},
|
1450
|
+
error: error
|
1451
|
+
})
|
1452
|
+
)
|
1453
|
+
;
|
1454
|
+
} catch(er){
|
1455
|
+
error();
|
1456
|
+
}
|
1457
|
+
})
|
1458
|
+
;
|
1459
|
+
if(xhrs.length){
|
1460
|
+
media.addClass('ws-after-check');
|
1461
|
+
$.when.apply($, xhrs).always(function(){
|
1462
|
+
media.mediaLoad();
|
1463
|
+
setTimeout(function(){
|
1464
|
+
media.removeClass('ws-after-check');
|
1465
|
+
}, 9);
|
1466
|
+
});
|
1467
|
+
}
|
1468
|
+
};
|
1469
|
+
$('audio.media-error, video.media-error').each(getMimeType);
|
1470
|
+
$(document).on('mediaerror', function(e){
|
1471
|
+
getMimeType.call(e.target);
|
1472
|
+
});
|
1473
|
+
})();
|
1474
|
+
}
|
1423
1475
|
|
1424
1476
|
});
|
1425
1477
|
webshims.register('track', function($, webshims, window, document, undefined){
|
@@ -588,7 +588,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
588
588
|
src.server = tmp;
|
589
589
|
}
|
590
590
|
|
591
|
-
tmp = elem.attr('type');
|
591
|
+
tmp = elem.attr('type') || elem.attr('data-type');
|
592
592
|
if(tmp){
|
593
593
|
src.type = tmp;
|
594
594
|
src.container = $.trim(tmp.split(';')[0]);
|
@@ -612,6 +612,11 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
612
612
|
}
|
613
613
|
}
|
614
614
|
}
|
615
|
+
|
616
|
+
if(!src.container){
|
617
|
+
$(elem).attr('data-wsrecheckmimetype', '');
|
618
|
+
}
|
619
|
+
|
615
620
|
tmp = elem.attr('media');
|
616
621
|
if(tmp){
|
617
622
|
src.media = tmp;
|
@@ -845,15 +850,18 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
845
850
|
|
846
851
|
var handleThird = (function(){
|
847
852
|
var requested;
|
853
|
+
var readyType = hasSwf ? swfType : 'mediaelement-yt';
|
848
854
|
return function( mediaElem, ret, data ){
|
855
|
+
//readd to ready
|
849
856
|
|
850
|
-
|
851
|
-
|
857
|
+
|
858
|
+
webshims.ready(readyType, function(){
|
859
|
+
if(mediaelement.createSWF && $(mediaElem).parent()[0]){
|
852
860
|
mediaelement.createSWF( mediaElem, ret, data );
|
853
861
|
} else if(!requested) {
|
854
862
|
requested = true;
|
855
863
|
loadThird();
|
856
|
-
|
864
|
+
|
857
865
|
handleThird( mediaElem, ret, data );
|
858
866
|
}
|
859
867
|
});
|
@@ -1322,6 +1322,7 @@ try {
|
|
1322
1322
|
}
|
1323
1323
|
|
1324
1324
|
(function(){
|
1325
|
+
if(options.noPlaceholderPolyfill){return;}
|
1325
1326
|
var bustedPlaceholder;
|
1326
1327
|
Modernizr.textareaPlaceholder = !!('placeholder' in $('<textarea />')[0]);
|
1327
1328
|
if(Modernizr.input.placeholder && options.overridePlaceholder){
|
@@ -1504,7 +1505,6 @@ try {
|
|
1504
1505
|
create: function(elem){
|
1505
1506
|
var data = $.data(elem, 'placeHolder');
|
1506
1507
|
var form;
|
1507
|
-
var responsiveElem;
|
1508
1508
|
if(data){return data;}
|
1509
1509
|
data = $.data(elem, 'placeHolder', {});
|
1510
1510
|
|
@@ -1524,7 +1524,6 @@ try {
|
|
1524
1524
|
if(elem.type == 'password' || isOver){
|
1525
1525
|
data.text = createPlaceholder(elem);
|
1526
1526
|
if(isResponsive || $(elem).is('.responsive-width') || (elem.currentStyle || {width: ''}).width.indexOf('%') != -1){
|
1527
|
-
responsiveElem = true;
|
1528
1527
|
data.box = data.text;
|
1529
1528
|
} else {
|
1530
1529
|
data.box = $(elem)
|
@@ -1764,7 +1763,6 @@ try {
|
|
1764
1763
|
|
1765
1764
|
//pro forma
|
1766
1765
|
,color: 1
|
1767
|
-
//,range: 1
|
1768
1766
|
},
|
1769
1767
|
observe = function(input){
|
1770
1768
|
var timer,
|
@@ -1786,7 +1784,7 @@ try {
|
|
1786
1784
|
extraTimer = setTimeout(trigger, 9);
|
1787
1785
|
},
|
1788
1786
|
unbind = function(){
|
1789
|
-
input.unbind('focusout', unbind).unbind('keyup keypress keydown paste cut', extraTest).unbind('input change updateInput', trigger);
|
1787
|
+
input.unbind('focusout', unbind).unbind('keyup keypress keydown paste cut', extraTest).unbind('input change updateInput triggerinput', trigger);
|
1790
1788
|
clearInterval(timer);
|
1791
1789
|
setTimeout(function(){
|
1792
1790
|
trigger();
|
@@ -1802,7 +1800,7 @@ try {
|
|
1802
1800
|
input.on({
|
1803
1801
|
'keyup keypress keydown paste cut': extraTest,
|
1804
1802
|
focusout: unbind,
|
1805
|
-
'input updateInput change': trigger
|
1803
|
+
'input updateInput change triggerinput': trigger
|
1806
1804
|
});
|
1807
1805
|
}
|
1808
1806
|
;
|
@@ -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){
|
@@ -2882,7 +2920,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
2882
2920
|
src.server = tmp;
|
2883
2921
|
}
|
2884
2922
|
|
2885
|
-
tmp = elem.attr('type');
|
2923
|
+
tmp = elem.attr('type') || elem.attr('data-type');
|
2886
2924
|
if(tmp){
|
2887
2925
|
src.type = tmp;
|
2888
2926
|
src.container = $.trim(tmp.split(';')[0]);
|
@@ -2906,6 +2944,11 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
2906
2944
|
}
|
2907
2945
|
}
|
2908
2946
|
}
|
2947
|
+
|
2948
|
+
if(!src.container){
|
2949
|
+
$(elem).attr('data-wsrecheckmimetype', '');
|
2950
|
+
}
|
2951
|
+
|
2909
2952
|
tmp = elem.attr('media');
|
2910
2953
|
if(tmp){
|
2911
2954
|
src.media = tmp;
|
@@ -3139,15 +3182,18 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
3139
3182
|
|
3140
3183
|
var handleThird = (function(){
|
3141
3184
|
var requested;
|
3185
|
+
var readyType = hasSwf ? swfType : 'mediaelement-yt';
|
3142
3186
|
return function( mediaElem, ret, data ){
|
3187
|
+
//readd to ready
|
3188
|
+
|
3143
3189
|
|
3144
|
-
webshims.ready(
|
3145
|
-
if(mediaelement.createSWF){
|
3190
|
+
webshims.ready(readyType, function(){
|
3191
|
+
if(mediaelement.createSWF && $(mediaElem).parent()[0]){
|
3146
3192
|
mediaelement.createSWF( mediaElem, ret, data );
|
3147
3193
|
} else if(!requested) {
|
3148
3194
|
requested = true;
|
3149
3195
|
loadThird();
|
3150
|
-
|
3196
|
+
|
3151
3197
|
handleThird( mediaElem, ret, data );
|
3152
3198
|
}
|
3153
3199
|
});
|
@@ -3488,15 +3534,6 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
3488
3534
|
lastDuration: 0
|
3489
3535
|
}, getProps, getSetProps);
|
3490
3536
|
|
3491
|
-
var idRep = /^jarisplayer-/;
|
3492
|
-
var getSwfDataFromID = function(id){
|
3493
|
-
|
3494
|
-
var elem = document.getElementById(id.replace(idRep, ''));
|
3495
|
-
if(!elem){return;}
|
3496
|
-
var data = webshims.data(elem, 'mediaelement');
|
3497
|
-
return data.isActive == 'third' ? data : null;
|
3498
|
-
};
|
3499
|
-
|
3500
3537
|
|
3501
3538
|
var getSwfDataFromElem = function(elem){
|
3502
3539
|
try {
|
@@ -4089,6 +4126,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
4089
4126
|
box = data.shadowElem;
|
4090
4127
|
resetSwfProps(data);
|
4091
4128
|
} else {
|
4129
|
+
$(document.getElementById('wrapper-'+ elemId )).remove();
|
4092
4130
|
box = $('<div class="polyfill-'+ (elemNodeName) +' polyfill-mediaelement" id="wrapper-'+ elemId +'"><div id="'+ elemId +'"></div>')
|
4093
4131
|
.css({
|
4094
4132
|
position: 'relative',
|
@@ -4171,8 +4209,11 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
4171
4209
|
;
|
4172
4210
|
}
|
4173
4211
|
|
4174
|
-
|
4175
|
-
|
4212
|
+
if(mediaelement.jarisEvent[data.id] && mediaelement.jarisEvent[data.id].elem != elem){
|
4213
|
+
webshims.error('something went wrong');
|
4214
|
+
return;
|
4215
|
+
} else if(!mediaelement.jarisEvent[data.id]){
|
4216
|
+
|
4176
4217
|
mediaelement.jarisEvent[data.id] = function(jaris){
|
4177
4218
|
|
4178
4219
|
if(jaris.type == 'ready'){
|
@@ -4378,6 +4419,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
4378
4419
|
descs[fn] = {
|
4379
4420
|
value: function(){
|
4380
4421
|
var data = getSwfDataFromElem(this);
|
4422
|
+
|
4381
4423
|
if(data){
|
4382
4424
|
if(data.stopPlayPause){
|
4383
4425
|
clearTimeout(data.stopPlayPause);
|
@@ -4400,6 +4442,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
4400
4442
|
|
4401
4443
|
webshims.onNodeNamesPropertyModify(nodeName, 'controls', function(val, boolProp){
|
4402
4444
|
var data = getSwfDataFromElem(this);
|
4445
|
+
|
4403
4446
|
$(this)[boolProp ? 'addClass' : 'removeClass']('webshims-controls');
|
4404
4447
|
|
4405
4448
|
if(data){
|
@@ -4533,5 +4576,60 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
4533
4576
|
} else if(!('media' in document.createElement('source'))){
|
4534
4577
|
webshims.reflectProperties('source', ['media']);
|
4535
4578
|
}
|
4579
|
+
if(options.experimentallyMimetypeCheck){
|
4580
|
+
(function(){
|
4581
|
+
var ADDBACK = $.fn.addBack ? 'addBack' : 'andSelf';
|
4582
|
+
var getMimeType = function(){
|
4583
|
+
var done;
|
4584
|
+
var unknown = 'media/unknown please provide mime type';
|
4585
|
+
var media = $(this);
|
4586
|
+
var xhrs = [];
|
4587
|
+
media
|
4588
|
+
.not('.ws-after-check')
|
4589
|
+
.find('source')
|
4590
|
+
[ADDBACK]()
|
4591
|
+
.filter('[data-wsrecheckmimetype]:not([type])')
|
4592
|
+
.each(function(){
|
4593
|
+
var source = $(this).removeAttr('data-wsrecheckmimetype');
|
4594
|
+
var error = function(){
|
4595
|
+
source.attr('data-type', unknown);
|
4596
|
+
};
|
4597
|
+
try {
|
4598
|
+
xhrs.push(
|
4599
|
+
$.ajax({
|
4600
|
+
type: 'head',
|
4601
|
+
url: $.attr(this, 'src'),
|
4602
|
+
success: function(content, status, xhr){
|
4603
|
+
var mime = xhr.getResponseHeader('Content-Type');
|
4604
|
+
if(mime){
|
4605
|
+
done = true;
|
4606
|
+
}
|
4607
|
+
source.attr('data-type', mime || unknown);
|
4608
|
+
},
|
4609
|
+
error: error
|
4610
|
+
})
|
4611
|
+
)
|
4612
|
+
;
|
4613
|
+
} catch(er){
|
4614
|
+
error();
|
4615
|
+
}
|
4616
|
+
})
|
4617
|
+
;
|
4618
|
+
if(xhrs.length){
|
4619
|
+
media.addClass('ws-after-check');
|
4620
|
+
$.when.apply($, xhrs).always(function(){
|
4621
|
+
media.mediaLoad();
|
4622
|
+
setTimeout(function(){
|
4623
|
+
media.removeClass('ws-after-check');
|
4624
|
+
}, 9);
|
4625
|
+
});
|
4626
|
+
}
|
4627
|
+
};
|
4628
|
+
$('audio.media-error, video.media-error').each(getMimeType);
|
4629
|
+
$(document).on('mediaerror', function(e){
|
4630
|
+
getMimeType.call(e.target);
|
4631
|
+
});
|
4632
|
+
})();
|
4633
|
+
}
|
4536
4634
|
|
4537
4635
|
});
|
@@ -3,6 +3,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
3
3
|
"use strict";
|
4
4
|
var supportHrefNormalized = !('hrefNormalized' in $.support) || $.support.hrefNormalized;
|
5
5
|
var supportGetSetAttribute = !('getSetAttribute' in $.support) || $.support.getSetAttribute;
|
6
|
+
var has = Object.prototype.hasOwnProperty;
|
6
7
|
webshims.assumeARIA = supportGetSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
|
7
8
|
|
8
9
|
if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
|
@@ -75,6 +76,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
75
76
|
//proxying attribute
|
76
77
|
var olds = {};
|
77
78
|
var havePolyfill = {};
|
79
|
+
var hasPolyfillMethod = {};
|
78
80
|
var extendedProps = {};
|
79
81
|
var extendQ = {};
|
80
82
|
var modifyProps = {};
|
@@ -180,6 +182,39 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
180
182
|
};
|
181
183
|
});
|
182
184
|
|
185
|
+
//add support for $('video').trigger('play') in case extendNative is set to false
|
186
|
+
if(!webshims.cfg.extendNative && !webshims.cfg.noTriggerOverride){
|
187
|
+
(function(oldTrigger){
|
188
|
+
$.event.trigger = function(event, data, elem, onlyHandlers){
|
189
|
+
|
190
|
+
if(!hasPolyfillMethod[event] || onlyHandlers || !elem || elem.nodeType !== 1){
|
191
|
+
return oldTrigger.apply(this, arguments);
|
192
|
+
}
|
193
|
+
var ret, isOrig, origName;
|
194
|
+
var origFn = elem[event];
|
195
|
+
var polyfilledFn = $.prop(elem, event);
|
196
|
+
var changeFn = polyfilledFn && origFn != polyfilledFn;
|
197
|
+
if(changeFn){
|
198
|
+
origName = '__ws'+event;
|
199
|
+
isOrig = (event in elem) && has.call(elem, event);
|
200
|
+
elem[event] = polyfilledFn;
|
201
|
+
elem[origName] = origFn;
|
202
|
+
}
|
203
|
+
|
204
|
+
ret = oldTrigger.apply(this, arguments);
|
205
|
+
if (changeFn) {
|
206
|
+
if(isOrig){
|
207
|
+
elem[event] = origFn;
|
208
|
+
} else {
|
209
|
+
delete elem[event];
|
210
|
+
}
|
211
|
+
delete elem[origName];
|
212
|
+
}
|
213
|
+
|
214
|
+
return ret;
|
215
|
+
};
|
216
|
+
})($.event.trigger);
|
217
|
+
}
|
183
218
|
|
184
219
|
['removeAttr', 'prop', 'attr'].forEach(function(type){
|
185
220
|
olds[type] = $[type];
|
@@ -264,6 +299,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
264
299
|
}
|
265
300
|
var oldDesc = extendedProps[nodeName][prop][type];
|
266
301
|
var getSup = function(propType, descriptor, oDesc){
|
302
|
+
var origProp;
|
267
303
|
if(descriptor && descriptor[propType]){
|
268
304
|
return descriptor[propType];
|
269
305
|
}
|
@@ -280,8 +316,10 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
280
316
|
};
|
281
317
|
}
|
282
318
|
if(type == 'prop' && propType == 'value' && desc.value.apply){
|
319
|
+
origProp = '__ws'+prop;
|
320
|
+
hasPolyfillMethod[prop] = true;
|
283
321
|
return function(value){
|
284
|
-
var sup = olds[type](this, prop);
|
322
|
+
var sup = this[origProp] || olds[type](this, prop);
|
285
323
|
if(sup && sup.apply){
|
286
324
|
sup = sup.apply(this, arguments);
|
287
325
|
}
|
@@ -319,7 +357,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
319
357
|
|
320
358
|
var extendNativeValue = (function(){
|
321
359
|
var UNKNOWN = webshims.getPrototypeOf(document.createElement('foobar'));
|
322
|
-
|
360
|
+
|
323
361
|
//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
|
324
362
|
var isExtendNativeSave = Modernizr.advancedObjectProperties && Modernizr.objectAccessor;
|
325
363
|
return function(nodeName, prop, desc){
|
@@ -3,6 +3,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
3
3
|
"use strict";
|
4
4
|
var supportHrefNormalized = !('hrefNormalized' in $.support) || $.support.hrefNormalized;
|
5
5
|
var supportGetSetAttribute = !('getSetAttribute' in $.support) || $.support.getSetAttribute;
|
6
|
+
var has = Object.prototype.hasOwnProperty;
|
6
7
|
webshims.assumeARIA = supportGetSetAttribute || Modernizr.canvas || Modernizr.video || Modernizr.boxsizing;
|
7
8
|
|
8
9
|
if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
|
@@ -75,6 +76,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
75
76
|
//proxying attribute
|
76
77
|
var olds = {};
|
77
78
|
var havePolyfill = {};
|
79
|
+
var hasPolyfillMethod = {};
|
78
80
|
var extendedProps = {};
|
79
81
|
var extendQ = {};
|
80
82
|
var modifyProps = {};
|
@@ -180,6 +182,39 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
180
182
|
};
|
181
183
|
});
|
182
184
|
|
185
|
+
//add support for $('video').trigger('play') in case extendNative is set to false
|
186
|
+
if(!webshims.cfg.extendNative && !webshims.cfg.noTriggerOverride){
|
187
|
+
(function(oldTrigger){
|
188
|
+
$.event.trigger = function(event, data, elem, onlyHandlers){
|
189
|
+
|
190
|
+
if(!hasPolyfillMethod[event] || onlyHandlers || !elem || elem.nodeType !== 1){
|
191
|
+
return oldTrigger.apply(this, arguments);
|
192
|
+
}
|
193
|
+
var ret, isOrig, origName;
|
194
|
+
var origFn = elem[event];
|
195
|
+
var polyfilledFn = $.prop(elem, event);
|
196
|
+
var changeFn = polyfilledFn && origFn != polyfilledFn;
|
197
|
+
if(changeFn){
|
198
|
+
origName = '__ws'+event;
|
199
|
+
isOrig = (event in elem) && has.call(elem, event);
|
200
|
+
elem[event] = polyfilledFn;
|
201
|
+
elem[origName] = origFn;
|
202
|
+
}
|
203
|
+
|
204
|
+
ret = oldTrigger.apply(this, arguments);
|
205
|
+
if (changeFn) {
|
206
|
+
if(isOrig){
|
207
|
+
elem[event] = origFn;
|
208
|
+
} else {
|
209
|
+
delete elem[event];
|
210
|
+
}
|
211
|
+
delete elem[origName];
|
212
|
+
}
|
213
|
+
|
214
|
+
return ret;
|
215
|
+
};
|
216
|
+
})($.event.trigger);
|
217
|
+
}
|
183
218
|
|
184
219
|
['removeAttr', 'prop', 'attr'].forEach(function(type){
|
185
220
|
olds[type] = $[type];
|
@@ -264,6 +299,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
264
299
|
}
|
265
300
|
var oldDesc = extendedProps[nodeName][prop][type];
|
266
301
|
var getSup = function(propType, descriptor, oDesc){
|
302
|
+
var origProp;
|
267
303
|
if(descriptor && descriptor[propType]){
|
268
304
|
return descriptor[propType];
|
269
305
|
}
|
@@ -280,8 +316,10 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
280
316
|
};
|
281
317
|
}
|
282
318
|
if(type == 'prop' && propType == 'value' && desc.value.apply){
|
319
|
+
origProp = '__ws'+prop;
|
320
|
+
hasPolyfillMethod[prop] = true;
|
283
321
|
return function(value){
|
284
|
-
var sup = olds[type](this, prop);
|
322
|
+
var sup = this[origProp] || olds[type](this, prop);
|
285
323
|
if(sup && sup.apply){
|
286
324
|
sup = sup.apply(this, arguments);
|
287
325
|
}
|
@@ -319,7 +357,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
319
357
|
|
320
358
|
var extendNativeValue = (function(){
|
321
359
|
var UNKNOWN = webshims.getPrototypeOf(document.createElement('foobar'));
|
322
|
-
|
360
|
+
|
323
361
|
//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
|
324
362
|
var isExtendNativeSave = Modernizr.advancedObjectProperties && Modernizr.objectAccessor;
|
325
363
|
return function(nodeName, prop, desc){
|
@@ -1147,17 +1185,21 @@ webshims.register('form-core', function($, webshims, window, document, undefined
|
|
1147
1185
|
/*
|
1148
1186
|
* Selectors for all browsers
|
1149
1187
|
*/
|
1188
|
+
var rElementsGroup = /^(?:form|fieldset)$/i;
|
1150
1189
|
var hasInvalid = function(elem){
|
1151
1190
|
var ret = false;
|
1152
1191
|
$(elem).jProp('elements').each(function(){
|
1153
|
-
|
1154
|
-
|
1155
|
-
|
1192
|
+
if(!rElementsGroup.test(elem.nodeName || '')){
|
1193
|
+
ret = $(this).is(':invalid');
|
1194
|
+
if(ret){
|
1195
|
+
return false;
|
1196
|
+
}
|
1156
1197
|
}
|
1198
|
+
|
1157
1199
|
});
|
1158
1200
|
return ret;
|
1159
1201
|
};
|
1160
|
-
|
1202
|
+
|
1161
1203
|
$.extend($.expr[":"], {
|
1162
1204
|
"valid-element": function(elem){
|
1163
1205
|
return rElementsGroup.test(elem.nodeName || '') ? !hasInvalid(elem) :!!($.prop(elem, 'willValidate') && isValid(elem));
|