webshims-rails 1.11.2 → 1.11.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -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){
|
@@ -1924,6 +1962,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
1924
1962
|
if(!langCfg['datetime-local']){
|
1925
1963
|
langCfg['datetime-local'] = {};
|
1926
1964
|
}
|
1965
|
+
if(!langCfg.time){
|
1966
|
+
langCfg.time = {};
|
1967
|
+
}
|
1927
1968
|
if(!langCfg['datetime-local'].currentText && langCfg.time.currentText){
|
1928
1969
|
langCfg['datetime-local'].currentText = langCfg.time.currentText;
|
1929
1970
|
}
|
@@ -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){
|
@@ -46,17 +46,21 @@ webshims.register('form-core', function($, webshims, window, document, undefined
|
|
46
46
|
/*
|
47
47
|
* Selectors for all browsers
|
48
48
|
*/
|
49
|
+
var rElementsGroup = /^(?:form|fieldset)$/i;
|
49
50
|
var hasInvalid = function(elem){
|
50
51
|
var ret = false;
|
51
52
|
$(elem).jProp('elements').each(function(){
|
52
|
-
|
53
|
-
|
54
|
-
|
53
|
+
if(!rElementsGroup.test(elem.nodeName || '')){
|
54
|
+
ret = $(this).is(':invalid');
|
55
|
+
if(ret){
|
56
|
+
return false;
|
57
|
+
}
|
55
58
|
}
|
59
|
+
|
56
60
|
});
|
57
61
|
return ret;
|
58
62
|
};
|
59
|
-
|
63
|
+
|
60
64
|
$.extend($.expr[":"], {
|
61
65
|
"valid-element": function(elem){
|
62
66
|
return rElementsGroup.test(elem.nodeName || '') ? !hasInvalid(elem) :!!($.prop(elem, 'willValidate') && isValid(elem));
|
@@ -268,6 +268,9 @@ webshims.register('form-number-date-ui', function($, webshims, window, document,
|
|
268
268
|
if(!langCfg['datetime-local']){
|
269
269
|
langCfg['datetime-local'] = {};
|
270
270
|
}
|
271
|
+
if(!langCfg.time){
|
272
|
+
langCfg.time = {};
|
273
|
+
}
|
271
274
|
if(!langCfg['datetime-local'].currentText && langCfg.time.currentText){
|
272
275
|
langCfg['datetime-local'].currentText = langCfg.time.currentText;
|
273
276
|
}
|
@@ -577,6 +577,7 @@ try {
|
|
577
577
|
}
|
578
578
|
|
579
579
|
(function(){
|
580
|
+
if(options.noPlaceholderPolyfill){return;}
|
580
581
|
var bustedPlaceholder;
|
581
582
|
Modernizr.textareaPlaceholder = !!('placeholder' in $('<textarea />')[0]);
|
582
583
|
if(Modernizr.input.placeholder && options.overridePlaceholder){
|
@@ -759,7 +760,6 @@ try {
|
|
759
760
|
create: function(elem){
|
760
761
|
var data = $.data(elem, 'placeHolder');
|
761
762
|
var form;
|
762
|
-
var responsiveElem;
|
763
763
|
if(data){return data;}
|
764
764
|
data = $.data(elem, 'placeHolder', {});
|
765
765
|
|
@@ -779,7 +779,6 @@ try {
|
|
779
779
|
if(elem.type == 'password' || isOver){
|
780
780
|
data.text = createPlaceholder(elem);
|
781
781
|
if(isResponsive || $(elem).is('.responsive-width') || (elem.currentStyle || {width: ''}).width.indexOf('%') != -1){
|
782
|
-
responsiveElem = true;
|
783
782
|
data.box = data.text;
|
784
783
|
} else {
|
785
784
|
data.box = $(elem)
|
@@ -1019,7 +1018,6 @@ try {
|
|
1019
1018
|
|
1020
1019
|
//pro forma
|
1021
1020
|
,color: 1
|
1022
|
-
//,range: 1
|
1023
1021
|
},
|
1024
1022
|
observe = function(input){
|
1025
1023
|
var timer,
|
@@ -1041,7 +1039,7 @@ try {
|
|
1041
1039
|
extraTimer = setTimeout(trigger, 9);
|
1042
1040
|
},
|
1043
1041
|
unbind = function(){
|
1044
|
-
input.unbind('focusout', unbind).unbind('keyup keypress keydown paste cut', extraTest).unbind('input change updateInput', trigger);
|
1042
|
+
input.unbind('focusout', unbind).unbind('keyup keypress keydown paste cut', extraTest).unbind('input change updateInput triggerinput', trigger);
|
1045
1043
|
clearInterval(timer);
|
1046
1044
|
setTimeout(function(){
|
1047
1045
|
trigger();
|
@@ -1057,7 +1055,7 @@ try {
|
|
1057
1055
|
input.on({
|
1058
1056
|
'keyup keypress keydown paste cut': extraTest,
|
1059
1057
|
focusout: unbind,
|
1060
|
-
'input updateInput change': trigger
|
1058
|
+
'input updateInput change triggerinput': trigger
|
1061
1059
|
});
|
1062
1060
|
}
|
1063
1061
|
;
|
@@ -770,4 +770,141 @@ webshims.register('form-validation', function($, webshims, window, document, und
|
|
770
770
|
|
771
771
|
})();
|
772
772
|
}
|
773
|
+
|
774
|
+
if(!$.event.special.change && !$.event.special.input && Modernizr.inputtypes && options.fixRangeChange){
|
775
|
+
var rangeChange = {
|
776
|
+
|
777
|
+
trigger: function(e){
|
778
|
+
if(rangeChange.blockElement){
|
779
|
+
rangeChange.blockElement = false;
|
780
|
+
setTimeout(function(){
|
781
|
+
if(rangeChange.requestedChange && rangeChange.value != rangeChange.requestedChange.value){
|
782
|
+
$(rangeChange.requestedChange).trigger('change');
|
783
|
+
}
|
784
|
+
rangeChange.value = false;
|
785
|
+
}, 9);
|
786
|
+
}
|
787
|
+
|
788
|
+
},
|
789
|
+
lastValue: false,
|
790
|
+
updateInputValue: function(e){
|
791
|
+
rangeChange.lastValue = e.target.value;
|
792
|
+
},
|
793
|
+
triggerInput: function(e){
|
794
|
+
if(rangeChange.lastValue !== false && rangeChange.lastValue != e.target.value){
|
795
|
+
$(e.target).trigger('input');
|
796
|
+
}
|
797
|
+
},
|
798
|
+
inputTeardown: function(e){
|
799
|
+
$(e.target)
|
800
|
+
.off('input', rangeChange.updateInputValue)
|
801
|
+
.off('blur', rangeChange.inputTeardown)
|
802
|
+
;
|
803
|
+
rangeChange.lastValue = false;
|
804
|
+
},
|
805
|
+
inputSetup: function(e){
|
806
|
+
|
807
|
+
if(e.target.type == 'range'){
|
808
|
+
rangeChange.inputTeardown(e);
|
809
|
+
rangeChange.lastValue = e.target.value;
|
810
|
+
$(e.target)
|
811
|
+
.on('input', rangeChange.updateInputValue)
|
812
|
+
.on('blur', rangeChange.inputTeardown)
|
813
|
+
;
|
814
|
+
}
|
815
|
+
}
|
816
|
+
};
|
817
|
+
|
818
|
+
|
819
|
+
$.each([{name: 'key', evt: 'keyup'}, {name: 'mouse', evt: 'mouseup'}, {name: 'touch', evt: 'touchend'}], function(i, obj){
|
820
|
+
var setup = obj.name + 'Setup';
|
821
|
+
var commit = obj.name + 'Commit';
|
822
|
+
rangeChange[obj.name+'Block'] = function(e){
|
823
|
+
|
824
|
+
if(!rangeChange.blockElement && e.target.type == 'range'){
|
825
|
+
|
826
|
+
rangeChange.blockElement = e.target;
|
827
|
+
rangeChange.value = e.target.value;
|
828
|
+
$(rangeChange.blockElement)
|
829
|
+
.off('blur', rangeChange.trigger)
|
830
|
+
.on('blur', rangeChange.trigger)
|
831
|
+
;
|
832
|
+
|
833
|
+
$(document.body)
|
834
|
+
.off(obj.evt, rangeChange[commit])
|
835
|
+
.on(obj.evt, rangeChange[commit])
|
836
|
+
;
|
837
|
+
}
|
838
|
+
};
|
839
|
+
|
840
|
+
rangeChange[commit] = function(e){
|
841
|
+
$(document.body).off(obj.evt, rangeChange[commit]);
|
842
|
+
rangeChange.trigger();
|
843
|
+
};
|
844
|
+
|
845
|
+
});
|
846
|
+
|
847
|
+
$(document.body || 'html').on({
|
848
|
+
mousedown: rangeChange.mouseBlock,
|
849
|
+
'keydown kepress': function(e){
|
850
|
+
if(e.keyCode < 45 && e.keyCode > 30){
|
851
|
+
rangeChange.keyBlock(e);
|
852
|
+
}
|
853
|
+
},
|
854
|
+
'touchstart': rangeChange.touchBlock,
|
855
|
+
focusin: rangeChange.inputSetup
|
856
|
+
});
|
857
|
+
|
858
|
+
$.extend(true, $.event.special, {
|
859
|
+
change: {
|
860
|
+
handle: function(e){
|
861
|
+
|
862
|
+
if(!e.isTrigger && rangeChange.blockElement == e.target){
|
863
|
+
rangeChange.requestedChange = e.target;
|
864
|
+
rangeChange.triggerInput(e);
|
865
|
+
return false;
|
866
|
+
} else if(rangeChange.requestedChange == e.target){
|
867
|
+
rangeChange.requestedChange = false;
|
868
|
+
}
|
869
|
+
e.handleObj.handler.apply(this, arguments);
|
870
|
+
}
|
871
|
+
},
|
872
|
+
input: {
|
873
|
+
handle: (function(){
|
874
|
+
var lastValue, lastElement;
|
875
|
+
|
876
|
+
var remove = function(){
|
877
|
+
if(lastElement){
|
878
|
+
$(lastElement).off('change', remove);
|
879
|
+
}
|
880
|
+
lastValue = false;
|
881
|
+
lastElement = false;
|
882
|
+
};
|
883
|
+
|
884
|
+
var setup = function(e){
|
885
|
+
remove(e);
|
886
|
+
lastElement = e.target;
|
887
|
+
lastValue = e.target.value;
|
888
|
+
$(e.target).on('change', remove);
|
889
|
+
};
|
890
|
+
|
891
|
+
return function(e){
|
892
|
+
var value;
|
893
|
+
if(!e.isTrigger && e.target.type == 'range'){
|
894
|
+
|
895
|
+
if(lastElement != e.target){
|
896
|
+
setup(e);
|
897
|
+
} else if(lastElement == e.target){
|
898
|
+
if(lastValue == (value = e.target.value)){
|
899
|
+
return false;
|
900
|
+
}
|
901
|
+
lastValue = e.target.value;
|
902
|
+
}
|
903
|
+
}
|
904
|
+
e.handleObj.handler.apply(this, arguments);
|
905
|
+
};
|
906
|
+
})()
|
907
|
+
}
|
908
|
+
});
|
909
|
+
}
|
773
910
|
});
|
@@ -136,7 +136,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
136
136
|
src.server = tmp;
|
137
137
|
}
|
138
138
|
|
139
|
-
tmp = elem.attr('type');
|
139
|
+
tmp = elem.attr('type') || elem.attr('data-type');
|
140
140
|
if(tmp){
|
141
141
|
src.type = tmp;
|
142
142
|
src.container = $.trim(tmp.split(';')[0]);
|
@@ -160,6 +160,11 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
160
160
|
}
|
161
161
|
}
|
162
162
|
}
|
163
|
+
|
164
|
+
if(!src.container){
|
165
|
+
$(elem).attr('data-wsrecheckmimetype', '');
|
166
|
+
}
|
167
|
+
|
163
168
|
tmp = elem.attr('media');
|
164
169
|
if(tmp){
|
165
170
|
src.media = tmp;
|
@@ -393,15 +398,18 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
393
398
|
|
394
399
|
var handleThird = (function(){
|
395
400
|
var requested;
|
401
|
+
var readyType = hasSwf ? swfType : 'mediaelement-yt';
|
396
402
|
return function( mediaElem, ret, data ){
|
403
|
+
//readd to ready
|
397
404
|
|
398
|
-
|
399
|
-
|
405
|
+
|
406
|
+
webshims.ready(readyType, function(){
|
407
|
+
if(mediaelement.createSWF && $(mediaElem).parent()[0]){
|
400
408
|
mediaelement.createSWF( mediaElem, ret, data );
|
401
409
|
} else if(!requested) {
|
402
410
|
requested = true;
|
403
411
|
loadThird();
|
404
|
-
|
412
|
+
|
405
413
|
handleThird( mediaElem, ret, data );
|
406
414
|
}
|
407
415
|
});
|
@@ -57,15 +57,6 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
57
57
|
lastDuration: 0
|
58
58
|
}, getProps, getSetProps);
|
59
59
|
|
60
|
-
var idRep = /^jarisplayer-/;
|
61
|
-
var getSwfDataFromID = function(id){
|
62
|
-
|
63
|
-
var elem = document.getElementById(id.replace(idRep, ''));
|
64
|
-
if(!elem){return;}
|
65
|
-
var data = webshims.data(elem, 'mediaelement');
|
66
|
-
return data.isActive == 'third' ? data : null;
|
67
|
-
};
|
68
|
-
|
69
60
|
|
70
61
|
var getSwfDataFromElem = function(elem){
|
71
62
|
try {
|
@@ -658,6 +649,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
658
649
|
box = data.shadowElem;
|
659
650
|
resetSwfProps(data);
|
660
651
|
} else {
|
652
|
+
$(document.getElementById('wrapper-'+ elemId )).remove();
|
661
653
|
box = $('<div class="polyfill-'+ (elemNodeName) +' polyfill-mediaelement" id="wrapper-'+ elemId +'"><div id="'+ elemId +'"></div>')
|
662
654
|
.css({
|
663
655
|
position: 'relative',
|
@@ -740,8 +732,11 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
740
732
|
;
|
741
733
|
}
|
742
734
|
|
743
|
-
|
744
|
-
|
735
|
+
if(mediaelement.jarisEvent[data.id] && mediaelement.jarisEvent[data.id].elem != elem){
|
736
|
+
webshims.error('something went wrong');
|
737
|
+
return;
|
738
|
+
} else if(!mediaelement.jarisEvent[data.id]){
|
739
|
+
|
745
740
|
mediaelement.jarisEvent[data.id] = function(jaris){
|
746
741
|
|
747
742
|
if(jaris.type == 'ready'){
|
@@ -947,6 +942,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
947
942
|
descs[fn] = {
|
948
943
|
value: function(){
|
949
944
|
var data = getSwfDataFromElem(this);
|
945
|
+
|
950
946
|
if(data){
|
951
947
|
if(data.stopPlayPause){
|
952
948
|
clearTimeout(data.stopPlayPause);
|
@@ -969,6 +965,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
969
965
|
|
970
966
|
webshims.onNodeNamesPropertyModify(nodeName, 'controls', function(val, boolProp){
|
971
967
|
var data = getSwfDataFromElem(this);
|
968
|
+
|
972
969
|
$(this)[boolProp ? 'addClass' : 'removeClass']('webshims-controls');
|
973
970
|
|
974
971
|
if(data){
|
@@ -1102,5 +1099,60 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
1102
1099
|
} else if(!('media' in document.createElement('source'))){
|
1103
1100
|
webshims.reflectProperties('source', ['media']);
|
1104
1101
|
}
|
1102
|
+
if(options.experimentallyMimetypeCheck){
|
1103
|
+
(function(){
|
1104
|
+
var ADDBACK = $.fn.addBack ? 'addBack' : 'andSelf';
|
1105
|
+
var getMimeType = function(){
|
1106
|
+
var done;
|
1107
|
+
var unknown = 'media/unknown please provide mime type';
|
1108
|
+
var media = $(this);
|
1109
|
+
var xhrs = [];
|
1110
|
+
media
|
1111
|
+
.not('.ws-after-check')
|
1112
|
+
.find('source')
|
1113
|
+
[ADDBACK]()
|
1114
|
+
.filter('[data-wsrecheckmimetype]:not([type])')
|
1115
|
+
.each(function(){
|
1116
|
+
var source = $(this).removeAttr('data-wsrecheckmimetype');
|
1117
|
+
var error = function(){
|
1118
|
+
source.attr('data-type', unknown);
|
1119
|
+
};
|
1120
|
+
try {
|
1121
|
+
xhrs.push(
|
1122
|
+
$.ajax({
|
1123
|
+
type: 'head',
|
1124
|
+
url: $.attr(this, 'src'),
|
1125
|
+
success: function(content, status, xhr){
|
1126
|
+
var mime = xhr.getResponseHeader('Content-Type');
|
1127
|
+
if(mime){
|
1128
|
+
done = true;
|
1129
|
+
}
|
1130
|
+
source.attr('data-type', mime || unknown);
|
1131
|
+
},
|
1132
|
+
error: error
|
1133
|
+
})
|
1134
|
+
)
|
1135
|
+
;
|
1136
|
+
} catch(er){
|
1137
|
+
error();
|
1138
|
+
}
|
1139
|
+
})
|
1140
|
+
;
|
1141
|
+
if(xhrs.length){
|
1142
|
+
media.addClass('ws-after-check');
|
1143
|
+
$.when.apply($, xhrs).always(function(){
|
1144
|
+
media.mediaLoad();
|
1145
|
+
setTimeout(function(){
|
1146
|
+
media.removeClass('ws-after-check');
|
1147
|
+
}, 9);
|
1148
|
+
});
|
1149
|
+
}
|
1150
|
+
};
|
1151
|
+
$('audio.media-error, video.media-error').each(getMimeType);
|
1152
|
+
$(document).on('mediaerror', function(e){
|
1153
|
+
getMimeType.call(e.target);
|
1154
|
+
});
|
1155
|
+
})();
|
1156
|
+
}
|
1105
1157
|
|
1106
1158
|
});
|
metadata
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webshims-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.11.
|
4
|
+
version: 1.11.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Reese
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-11-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '>'
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 3.1.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - '>'
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 3.1.0
|
27
27
|
description: Makes it simple to include the webshims js library (by Alexander Farkas)
|
@@ -168,12 +168,12 @@ require_paths:
|
|
168
168
|
- lib
|
169
169
|
required_ruby_version: !ruby/object:Gem::Requirement
|
170
170
|
requirements:
|
171
|
-
- -
|
171
|
+
- - '>='
|
172
172
|
- !ruby/object:Gem::Version
|
173
173
|
version: '0'
|
174
174
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
175
175
|
requirements:
|
176
|
-
- -
|
176
|
+
- - '>='
|
177
177
|
- !ruby/object:Gem::Version
|
178
178
|
version: '0'
|
179
179
|
requirements: []
|