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
@@ -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: []
|