webshims-rails 1.14.6 → 1.15.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/webshims-rails/version.rb +2 -2
- data/vendor/assets/javascripts/webshims/polyfiller.js +145 -139
- data/vendor/assets/javascripts/webshims/shims/canvas-blob.js +97 -0
- data/vendor/assets/javascripts/webshims/shims/combos/1.js +13 -15
- data/vendor/assets/javascripts/webshims/shims/combos/10.js +29 -28
- data/vendor/assets/javascripts/webshims/shims/combos/11.js +2 -1
- data/vendor/assets/javascripts/webshims/shims/combos/12.js +22 -10
- data/vendor/assets/javascripts/webshims/shims/combos/13.js +22 -10
- data/vendor/assets/javascripts/webshims/shims/combos/15.js +28 -43
- data/vendor/assets/javascripts/webshims/shims/combos/16.js +41 -44
- data/vendor/assets/javascripts/webshims/shims/combos/17.js +2 -1
- data/vendor/assets/javascripts/webshims/shims/combos/2.js +40 -42
- data/vendor/assets/javascripts/webshims/shims/combos/21.js +98 -71
- data/vendor/assets/javascripts/webshims/shims/combos/22.js +9 -9
- data/vendor/assets/javascripts/webshims/shims/combos/23.js +13 -1
- data/vendor/assets/javascripts/webshims/shims/combos/25.js +141 -51
- data/vendor/assets/javascripts/webshims/shims/combos/27.js +66 -12
- data/vendor/assets/javascripts/webshims/shims/combos/28.js +1 -2
- data/vendor/assets/javascripts/webshims/shims/combos/3.js +27 -41
- data/vendor/assets/javascripts/webshims/shims/combos/30.js +27 -41
- data/vendor/assets/javascripts/webshims/shims/combos/31.js +27 -41
- data/vendor/assets/javascripts/webshims/shims/combos/34.js +36 -36
- data/vendor/assets/javascripts/webshims/shims/combos/4.js +27 -27
- data/vendor/assets/javascripts/webshims/shims/combos/5.js +2 -1
- data/vendor/assets/javascripts/webshims/shims/combos/6.js +2 -1
- data/vendor/assets/javascripts/webshims/shims/combos/7.js +40 -42
- data/vendor/assets/javascripts/webshims/shims/combos/8.js +40 -42
- data/vendor/assets/javascripts/webshims/shims/combos/9.js +29 -28
- data/vendor/assets/javascripts/webshims/shims/combos/98.js +4 -2
- data/vendor/assets/javascripts/webshims/shims/combos/99.js +4 -2
- data/vendor/assets/javascripts/webshims/shims/dom-extend.js +27 -27
- data/vendor/assets/javascripts/webshims/shims/es6.js +23 -29
- data/vendor/assets/javascripts/webshims/shims/{filereader.js → filereader-xhr.js} +66 -12
- data/vendor/assets/javascripts/webshims/shims/form-core.js +0 -14
- data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +2 -1
- data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +1 -2
- data/vendor/assets/javascripts/webshims/shims/form-validation.js +18 -5
- data/vendor/assets/javascripts/webshims/shims/form-validators.js +15 -14
- data/vendor/assets/javascripts/webshims/shims/geolocation.js +41 -50
- data/vendor/assets/javascripts/webshims/shims/jme/controls.css +4 -4
- data/vendor/assets/javascripts/webshims/shims/jme/controls.scss +2 -1
- data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols.js +4 -2
- data/vendor/assets/javascripts/webshims/shims/mediacapture-picker.js +42 -0
- data/vendor/assets/javascripts/webshims/shims/mediacapture.js +159 -0
- data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +13 -1
- data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +48 -12
- data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +20 -8
- data/vendor/assets/javascripts/webshims/shims/{combos/26.js → moxie/js/moxie-html4.js} +2121 -1257
- data/vendor/assets/javascripts/webshims/shims/moxie/js/{moxie.js → moxie-swf.js} +1125 -1741
- data/vendor/assets/javascripts/webshims/shims/sticky.js +585 -0
- data/vendor/assets/javascripts/webshims/shims/styles/forms-picker.css +20 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-picker.scss +23 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +74 -34
- data/vendor/assets/javascripts/webshims/shims/styles/shim-ext.css +78 -31
- data/vendor/assets/javascripts/webshims/shims/styles/shim.css +78 -31
- data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/track-ui.js +214 -111
- data/vendor/assets/javascripts/webshims/shims/track.js +9 -9
- data/vendor/assets/javascripts/webshims/shims/usermedia-core.js +27 -0
- data/vendor/assets/javascripts/webshims/shims/usermedia-shim.js +34 -37
- metadata +9 -8
- data/vendor/assets/javascripts/webshims/shims/jajax.js +0 -1262
- data/vendor/assets/javascripts/webshims/shims/moxie/silverlight/Moxie.cdn.xap +0 -0
- data/vendor/assets/javascripts/webshims/shims/moxie/silverlight/Moxie.min.xap +0 -0
@@ -214,8 +214,12 @@ webshims.register('details', function($, webshims, window, doc, undefined, optio
|
|
214
214
|
var lastCue = this.cues[this.cues.length-1];
|
215
215
|
if(lastCue && lastCue.startTime > cue.startTime){
|
216
216
|
webshims.error("cue startTime higher than previous cue's startTime");
|
217
|
+
return;
|
217
218
|
}
|
218
219
|
}
|
220
|
+
if(cue.startTime >= cue.endTime ){
|
221
|
+
webshim.error('startTime >= endTime of cue: '+ cue.text);
|
222
|
+
}
|
219
223
|
if(cue.track && cue.track.removeCue){
|
220
224
|
cue.track.removeCue(cue);
|
221
225
|
}
|
@@ -307,6 +311,7 @@ webshims.register('details', function($, webshims, window, doc, undefined, optio
|
|
307
311
|
for(i = 0, len = added.length; i < len; i++){
|
308
312
|
$([trackList]).triggerHandler($.Event({type: 'addtrack', track: added[i]}));
|
309
313
|
}
|
314
|
+
//todo: remove
|
310
315
|
if(baseData.scriptedTextTracks || removed.length){
|
311
316
|
$(this).triggerHandler('updatetrackdisplay');
|
312
317
|
}
|
@@ -323,7 +328,7 @@ webshims.register('details', function($, webshims, window, doc, undefined, optio
|
|
323
328
|
setTimeout(function(){
|
324
329
|
$(track).closest('audio, video').triggerHandler('updatetrackdisplay');
|
325
330
|
trackData.isTriggering = false;
|
326
|
-
},
|
331
|
+
}, 9);
|
327
332
|
}
|
328
333
|
};
|
329
334
|
var isDefaultTrack = (function(){
|
@@ -516,15 +521,10 @@ webshims.register('details', function($, webshims, window, doc, undefined, optio
|
|
516
521
|
error: error
|
517
522
|
});
|
518
523
|
};
|
519
|
-
if(
|
520
|
-
|
521
|
-
setTimeout(createAjax, loadingTracks * 2);
|
522
|
-
} else {
|
523
|
-
createAjax();
|
524
|
-
}
|
524
|
+
if(isDisabled){
|
525
|
+
setTimeout(createAjax, loadingTracks * 2);
|
525
526
|
} else {
|
526
|
-
|
527
|
-
webshims.loader.loadList(['jajax']);
|
527
|
+
createAjax();
|
528
528
|
}
|
529
529
|
} catch(er){
|
530
530
|
error();
|
@@ -281,9 +281,16 @@ webshims.isReady('swfmini', true);
|
|
281
281
|
})();
|
282
282
|
}
|
283
283
|
|
284
|
+
if(window.CanvasRenderingContext2D && CanvasRenderingContext2D.prototype){
|
285
|
+
CanvasRenderingContext2D.prototype.wsImageComplete = function(cb){
|
286
|
+
cb.call(this, this);
|
287
|
+
};
|
288
|
+
}
|
289
|
+
|
284
290
|
webshims.register('mediaelement-core', function($, webshims, window, document, undefined, options){
|
285
291
|
var hasSwf = swfmini.hasFlashPlayerVersion('11.3');
|
286
292
|
var mediaelement = webshims.mediaelement;
|
293
|
+
var allowYtLoading = false;
|
287
294
|
|
288
295
|
mediaelement.parseRtmp = function(data){
|
289
296
|
var src = data.src.split('://');
|
@@ -379,7 +386,9 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
379
386
|
return function(){
|
380
387
|
if(loaded || !hasYt){return;}
|
381
388
|
loaded = true;
|
382
|
-
|
389
|
+
if(allowYtLoading){
|
390
|
+
webshims.loader.loadScript("https://www.youtube.com/player_api");
|
391
|
+
}
|
383
392
|
$(function(){
|
384
393
|
webshims._polyfill(["mediaelement-yt"]);
|
385
394
|
});
|
@@ -565,6 +574,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
565
574
|
}
|
566
575
|
});
|
567
576
|
if(!requested && hasYt && !mediaelement.createSWF){
|
577
|
+
allowYtLoading = true;
|
568
578
|
loadYt();
|
569
579
|
}
|
570
580
|
};
|
@@ -729,6 +739,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
729
739
|
.add(insertedElement.filter('video, audio'))
|
730
740
|
.each(function(){
|
731
741
|
if(!mediaelement.canNativePlaySrces(this)){
|
742
|
+
allowYtLoading = true;
|
732
743
|
loadThird();
|
733
744
|
handleMedia = true;
|
734
745
|
return false;
|
@@ -751,6 +762,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
751
762
|
mediaelement.loadDebugger();
|
752
763
|
});
|
753
764
|
}
|
765
|
+
|
754
766
|
//set native implementation ready, before swf api is retested
|
755
767
|
if(hasNative){
|
756
768
|
webshims.isReady('mediaelement-core', true);
|
@@ -64,11 +64,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
64
64
|
webshims.assumeARIA = true;
|
65
65
|
|
66
66
|
if($('<input type="email" />').attr('type') == 'text' || $('<form />').attr('novalidate') === "" || ('required' in $('<input />')[0].attributes)){
|
67
|
-
webshims.error("IE browser modes are busted in IE10+. Please test your HTML/CSS/JS with a real IE version or at least IETester or
|
68
|
-
}
|
69
|
-
|
70
|
-
if('debug' in webshims){
|
71
|
-
webshims.error('Use webshims.setOptions("debug", true||false||"noCombo"); to debug flag');
|
67
|
+
webshims.error("IE browser modes are busted in IE10+. Make sure to run IE in edge mode (X-UA-Compatible). Please test your HTML/CSS/JS with a real IE version or at least IETester or similar tools. ");
|
72
68
|
}
|
73
69
|
|
74
70
|
if (!webshims.cfg.no$Switch) {
|
@@ -681,33 +677,37 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
681
677
|
}
|
682
678
|
},
|
683
679
|
handler: (function(){
|
680
|
+
var evt;
|
684
681
|
var trigger = function(){
|
685
|
-
$(document).triggerHandler('updateshadowdom');
|
682
|
+
$(document).triggerHandler('updateshadowdom', [evt]);
|
686
683
|
};
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
var width = $window.width();
|
692
|
-
var height = $window.width();
|
684
|
+
var timed = function(){
|
685
|
+
if(evt && evt.type == 'resize'){
|
686
|
+
var width = $window.width();
|
687
|
+
var height = $window.width();
|
693
688
|
|
694
|
-
|
695
|
-
|
696
|
-
}
|
697
|
-
lastHeight = height;
|
698
|
-
lastWidth = width;
|
699
|
-
|
700
|
-
docObserve.height = docObserve.getHeight();
|
701
|
-
docObserve.width = docObserve.getWidth();
|
689
|
+
if(height == lastHeight && width == lastWidth){
|
690
|
+
return;
|
702
691
|
}
|
692
|
+
lastHeight = height;
|
693
|
+
lastWidth = width;
|
694
|
+
}
|
703
695
|
|
704
|
-
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
|
696
|
+
if(evt && evt.type != 'docresize'){
|
697
|
+
docObserve.height = docObserve.getHeight();
|
698
|
+
docObserve.width = docObserve.getWidth();
|
699
|
+
}
|
700
|
+
|
701
|
+
if(window.requestAnimationFrame){
|
702
|
+
requestAnimationFrame(trigger);
|
703
|
+
} else {
|
704
|
+
setTimeout(trigger, 0);
|
705
|
+
}
|
706
|
+
};
|
707
|
+
return function(e){
|
708
|
+
clearTimeout(resizeTimer);
|
709
|
+
evt = e;
|
710
|
+
resizeTimer = setTimeout(timed, (e.type == 'resize' && !window.requestAnimationFrame) ? 50 : 9);
|
711
711
|
};
|
712
712
|
})(),
|
713
713
|
_create: function(){
|
@@ -1229,11 +1229,11 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1229
1229
|
|
1230
1230
|
})();
|
1231
1231
|
});
|
1232
|
-
;webshim.register('filereader', function($, webshim, window, document, undefined, featureOptions){
|
1232
|
+
;webshim.register('filereader-xhr', function($, webshim, window, document, undefined, featureOptions){
|
1233
1233
|
"use strict";
|
1234
1234
|
var mOxie, moxie, hasXDomain;
|
1235
|
-
var
|
1236
|
-
var
|
1235
|
+
var sel = 'input[type="file"].ws-filereader, input[type="file"].ws-capture';
|
1236
|
+
var hasFlash = swfmini.hasFlashPlayerVersion('10.3');
|
1237
1237
|
var loadMoxie = function (){
|
1238
1238
|
webshim.loader.loadList(['moxie']);
|
1239
1239
|
};
|
@@ -1345,7 +1345,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1345
1345
|
}
|
1346
1346
|
);
|
1347
1347
|
var shimMoxiePath = webshim.cfg.basePath+'moxie/';
|
1348
|
-
var crossXMLMessage = 'You nedd a crossdomain.xml to get all "filereader" / "XHR2" / "CORS" features to work. Or host moxie.swf
|
1348
|
+
var crossXMLMessage = 'You nedd a crossdomain.xml to get all "filereader" / "XHR2" / "CORS" features to work. Or host moxie.swf on your server an configure filereader options: "swfpath"';
|
1349
1349
|
var testMoxie = function(options){
|
1350
1350
|
return (options.wsType == 'moxie' || (options.data && options.data instanceof mOxie.FormData) || (options.crossDomain && $.support.cors !== false && hasXDomain != 'no' && !noxhr.test(options.dataType || '')));
|
1351
1351
|
};
|
@@ -1528,6 +1528,10 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1528
1528
|
}
|
1529
1529
|
};
|
1530
1530
|
|
1531
|
+
webshim.loader.addModule('moxie', {
|
1532
|
+
src: 'moxie/js/moxie-'+ (hasFlash ? 'swf' : 'html4')
|
1533
|
+
});
|
1534
|
+
|
1531
1535
|
if(!featureOptions.progress){
|
1532
1536
|
featureOptions.progress = 'onprogress';
|
1533
1537
|
}
|
@@ -1539,9 +1543,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1539
1543
|
if(!featureOptions.swfpath){
|
1540
1544
|
featureOptions.swfpath = shimMoxiePath+'flash/Moxie.min.swf';
|
1541
1545
|
}
|
1542
|
-
if(!featureOptions.xappath){
|
1543
|
-
featureOptions.xappath = shimMoxiePath+'silverlight/Moxie.min.xap';
|
1544
|
-
}
|
1545
1546
|
|
1546
1547
|
if($.support.cors !== false || !window.XDomainRequest){
|
1547
1548
|
delete transports.xdomain;
|
@@ -1568,8 +1569,8 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1568
1569
|
writeable: false,
|
1569
1570
|
get: function(){
|
1570
1571
|
if(this.type != 'file'){return null;}
|
1571
|
-
if(!$(this).
|
1572
|
-
webshim.info("please add the 'ws-filereader' class to your input[type='file'] to implement files-property");
|
1572
|
+
if(!$(this).is('.ws-filereader, .ws-capture')){
|
1573
|
+
webshim.info("please add the 'ws-filereader'/'ws-capture' class to your input[type='file'] to implement files-property");
|
1573
1574
|
}
|
1574
1575
|
return webshim.data(this, 'fileList') || [];
|
1575
1576
|
}
|
@@ -1591,11 +1592,66 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1591
1592
|
});
|
1592
1593
|
|
1593
1594
|
webshim.onNodeNamesPropertyModify('input', 'value', function(value, boolVal, type){
|
1594
|
-
if(value === '' && this.type == 'file' && $(this).
|
1595
|
+
if(value === '' && this.type == 'file' && $(this).is('.ws-filereader, .ws-capture')){
|
1595
1596
|
webshim.data(this, 'fileList', []);
|
1596
1597
|
}
|
1597
1598
|
});
|
1598
1599
|
|
1600
|
+
if(!document.createElement('canvas').toBlob){
|
1601
|
+
|
1602
|
+
webshim.defineNodeNameProperty('canvas', 'toBlob', {
|
1603
|
+
prop: {
|
1604
|
+
value: function(cb, type, qualitiy){
|
1605
|
+
var dataURL;
|
1606
|
+
var $canvas = $(this);
|
1607
|
+
if(!type){
|
1608
|
+
type = 'image/jpeg';
|
1609
|
+
}
|
1610
|
+
if(type == 'image/jpeg' && !qualitiy){
|
1611
|
+
qualitiy = 0.8;
|
1612
|
+
}
|
1613
|
+
loadMoxie();
|
1614
|
+
setTimeout(function(){
|
1615
|
+
dataURL = $canvas.callProp('getAsDataURL', [type, qualitiy]);
|
1616
|
+
webshim.ready('moxie', function(){
|
1617
|
+
var img = new mOxie.Image();
|
1618
|
+
|
1619
|
+
img.onload = function() {
|
1620
|
+
var blob = img.getAsBlob();
|
1621
|
+
webshim.defineProperty(blob, '_wsDataURL', {
|
1622
|
+
value: dataURL,
|
1623
|
+
enumerable: false
|
1624
|
+
});
|
1625
|
+
cb(blob);
|
1626
|
+
};
|
1627
|
+
img.load(dataURL);
|
1628
|
+
});
|
1629
|
+
}, 9);
|
1630
|
+
}
|
1631
|
+
}
|
1632
|
+
});
|
1633
|
+
|
1634
|
+
webshim.ready('url', function(){
|
1635
|
+
var _nativeCreateObjectURL = URL.createObjectURL;
|
1636
|
+
var _nativeRevokeObjectURL = URL.revokeObjectURL;
|
1637
|
+
|
1638
|
+
URL.createObjectURL = function(obj){
|
1639
|
+
var url = obj;
|
1640
|
+
if(obj._wsimgDataURL) {
|
1641
|
+
url = obj._wsimgDataURL;
|
1642
|
+
} else if(_nativeCreateObjectURL){
|
1643
|
+
return _nativeCreateObjectURL.apply(this, arguments);
|
1644
|
+
}
|
1645
|
+
return url;
|
1646
|
+
};
|
1647
|
+
|
1648
|
+
URL.revokeObjectURL = function(url){
|
1649
|
+
if (_nativeRevokeObjectURL){
|
1650
|
+
return _nativeRevokeObjectURL.apply(this, arguments);
|
1651
|
+
}
|
1652
|
+
};
|
1653
|
+
});
|
1654
|
+
}
|
1599
1655
|
|
1600
1656
|
window.FileReader = notReadyYet;
|
1601
1657
|
window.FormData = notReadyYet;
|
@@ -1605,7 +1661,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1605
1661
|
mOxie = window.mOxie;
|
1606
1662
|
|
1607
1663
|
mOxie.Env.swf_url = featureOptions.swfpath;
|
1608
|
-
mOxie.Env.xap_url = featureOptions.xappath;
|
1609
1664
|
|
1610
1665
|
window.FileReader = mOxie.FileReader;
|
1611
1666
|
|
@@ -1644,7 +1699,6 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1644
1699
|
|
1645
1700
|
return moxieData;
|
1646
1701
|
};
|
1647
|
-
FormData = window.FormData;
|
1648
1702
|
|
1649
1703
|
createFilePicker = _createFilePicker;
|
1650
1704
|
transports.moxie = createMoxieTransport;
|
@@ -1829,12 +1883,13 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1829
1883
|
};
|
1830
1884
|
|
1831
1885
|
|
1832
|
-
mediaelement.jarisEvent = {};
|
1886
|
+
mediaelement.jarisEvent = mediaelement.jarisEvent || {};
|
1833
1887
|
var localConnectionTimer;
|
1834
1888
|
var onEvent = {
|
1835
1889
|
onPlayPause: function(jaris, data, override){
|
1836
1890
|
var playing, type;
|
1837
1891
|
var idled = data.paused || data.ended;
|
1892
|
+
|
1838
1893
|
if(override == null){
|
1839
1894
|
try {
|
1840
1895
|
playing = data.api.api_get("isPlaying");
|
@@ -1848,12 +1903,15 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
1848
1903
|
type = data.paused ? 'pause' : 'play';
|
1849
1904
|
data._ppFlag = true;
|
1850
1905
|
trigger(data._elem, type);
|
1906
|
+
|
1907
|
+
}
|
1908
|
+
if(!data.paused || playing == idled || playing == null){
|
1851
1909
|
if(data.readyState < 3){
|
1852
1910
|
setReadyState(3, data);
|
1853
1911
|
}
|
1854
|
-
|
1855
|
-
|
1856
|
-
|
1912
|
+
}
|
1913
|
+
if(!data.paused){
|
1914
|
+
trigger(data._elem, 'playing');
|
1857
1915
|
}
|
1858
1916
|
},
|
1859
1917
|
onSeek: function(jaris, data){
|
@@ -2605,11 +2663,11 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2605
2663
|
options.changeSWF(vars, elem, canPlaySrc, data, 'embed');
|
2606
2664
|
clearTimeout(data.flashBlock);
|
2607
2665
|
|
2608
|
-
swfmini.embedSWF(playerSwfPath, elemId, "100%", "100%", "
|
2666
|
+
swfmini.embedSWF(playerSwfPath, elemId, "100%", "100%", "11.3", false, vars, params, attrs, function(swfData){
|
2609
2667
|
if(swfData.success){
|
2610
2668
|
var fBlocker = function(){
|
2611
|
-
if((!swfData.ref.parentNode
|
2612
|
-
|
2669
|
+
if((!swfData.ref.parentNode) || swfData.ref.style.display == "none"){
|
2670
|
+
|
2613
2671
|
$(elem).trigger('flashblocker');
|
2614
2672
|
webshims.warn("flashblocker assumed");
|
2615
2673
|
}
|
@@ -2843,8 +2901,19 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2843
2901
|
webshim.error('canvas.drawImage feature is needed. In IE8 flashvanvas pro can be used');
|
2844
2902
|
}
|
2845
2903
|
|
2904
|
+
CanvasRenderingContext2D.prototype.wsImageComplete = function(cb){
|
2905
|
+
if(this._wsIsLoading){
|
2906
|
+
if(!this._wsLoadingCbs){
|
2907
|
+
this._wsLoadingCbs = [];
|
2908
|
+
}
|
2909
|
+
this._wsLoadingCbs.push(cb);
|
2910
|
+
} else {
|
2911
|
+
cb.call(this, this);
|
2912
|
+
}
|
2913
|
+
};
|
2914
|
+
|
2846
2915
|
CanvasRenderingContext2D.prototype.drawImage = function(elem){
|
2847
|
-
var data, img, args, imgData;
|
2916
|
+
var data, img, args, imgData, hadCachedImg;
|
2848
2917
|
var context = this;
|
2849
2918
|
|
2850
2919
|
if(isVideo[elem.nodeName] && (data = webshims.data(elem, 'mediaelement')) && data.isActive == 'third' && data.api.api_image){
|
@@ -2862,18 +2931,39 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
|
|
2862
2931
|
}
|
2863
2932
|
|
2864
2933
|
args = slice.call(arguments, 1);
|
2865
|
-
|
2934
|
+
|
2935
|
+
if(options.canvasSync && data.canvasImg){
|
2936
|
+
args.unshift(data.canvasImg);
|
2937
|
+
_drawImage.apply(context, args);
|
2938
|
+
args = slice.call(arguments, 1);
|
2939
|
+
hadCachedImg = true;
|
2940
|
+
}
|
2941
|
+
|
2942
|
+
img = document.createElement('img');
|
2866
2943
|
|
2867
2944
|
//todo find a performant sync way
|
2868
2945
|
img.onload = function(){
|
2869
2946
|
args.unshift(this);
|
2870
|
-
_drawImage.apply(context, args);
|
2871
2947
|
img.onload = null;
|
2948
|
+
|
2949
|
+
if(options.canvasSync){
|
2950
|
+
data.canvasImg = img;
|
2951
|
+
if(hadCachedImg && options.noDoubbleDraw){
|
2952
|
+
return;
|
2953
|
+
}
|
2954
|
+
}
|
2955
|
+
_drawImage.apply(context, args);
|
2956
|
+
context._wsIsLoading = false;
|
2957
|
+
if(context._wsLoadingCbs && context._wsLoadingCbs.length){
|
2958
|
+
while(context._wsLoadingCbs.length){
|
2959
|
+
context._wsLoadingCbs.shift().call(context, context);
|
2960
|
+
}
|
2961
|
+
}
|
2872
2962
|
};
|
2873
2963
|
|
2874
2964
|
img.src = 'data:image/jpeg;base64,'+imgData;
|
2875
|
-
|
2876
|
-
if(img.complete){
|
2965
|
+
this._wsIsLoading = true;
|
2966
|
+
if(img.complete && img.onload){
|
2877
2967
|
img.onload();
|
2878
2968
|
}
|
2879
2969
|
return;
|
@@ -1250,11 +1250,11 @@ webshims.register('form-shim-extend2', function($, webshims, window, document, u
|
|
1250
1250
|
|
1251
1251
|
|
1252
1252
|
});
|
1253
|
-
;webshim.register('filereader', function($, webshim, window, document, undefined, featureOptions){
|
1253
|
+
;webshim.register('filereader-xhr', function($, webshim, window, document, undefined, featureOptions){
|
1254
1254
|
"use strict";
|
1255
1255
|
var mOxie, moxie, hasXDomain;
|
1256
|
-
var
|
1257
|
-
var
|
1256
|
+
var sel = 'input[type="file"].ws-filereader, input[type="file"].ws-capture';
|
1257
|
+
var hasFlash = swfmini.hasFlashPlayerVersion('10.3');
|
1258
1258
|
var loadMoxie = function (){
|
1259
1259
|
webshim.loader.loadList(['moxie']);
|
1260
1260
|
};
|
@@ -1366,7 +1366,7 @@ webshims.register('form-shim-extend2', function($, webshims, window, document, u
|
|
1366
1366
|
}
|
1367
1367
|
);
|
1368
1368
|
var shimMoxiePath = webshim.cfg.basePath+'moxie/';
|
1369
|
-
var crossXMLMessage = 'You nedd a crossdomain.xml to get all "filereader" / "XHR2" / "CORS" features to work. Or host moxie.swf
|
1369
|
+
var crossXMLMessage = 'You nedd a crossdomain.xml to get all "filereader" / "XHR2" / "CORS" features to work. Or host moxie.swf on your server an configure filereader options: "swfpath"';
|
1370
1370
|
var testMoxie = function(options){
|
1371
1371
|
return (options.wsType == 'moxie' || (options.data && options.data instanceof mOxie.FormData) || (options.crossDomain && $.support.cors !== false && hasXDomain != 'no' && !noxhr.test(options.dataType || '')));
|
1372
1372
|
};
|
@@ -1549,6 +1549,10 @@ webshims.register('form-shim-extend2', function($, webshims, window, document, u
|
|
1549
1549
|
}
|
1550
1550
|
};
|
1551
1551
|
|
1552
|
+
webshim.loader.addModule('moxie', {
|
1553
|
+
src: 'moxie/js/moxie-'+ (hasFlash ? 'swf' : 'html4')
|
1554
|
+
});
|
1555
|
+
|
1552
1556
|
if(!featureOptions.progress){
|
1553
1557
|
featureOptions.progress = 'onprogress';
|
1554
1558
|
}
|
@@ -1560,9 +1564,6 @@ webshims.register('form-shim-extend2', function($, webshims, window, document, u
|
|
1560
1564
|
if(!featureOptions.swfpath){
|
1561
1565
|
featureOptions.swfpath = shimMoxiePath+'flash/Moxie.min.swf';
|
1562
1566
|
}
|
1563
|
-
if(!featureOptions.xappath){
|
1564
|
-
featureOptions.xappath = shimMoxiePath+'silverlight/Moxie.min.xap';
|
1565
|
-
}
|
1566
1567
|
|
1567
1568
|
if($.support.cors !== false || !window.XDomainRequest){
|
1568
1569
|
delete transports.xdomain;
|
@@ -1589,8 +1590,8 @@ webshims.register('form-shim-extend2', function($, webshims, window, document, u
|
|
1589
1590
|
writeable: false,
|
1590
1591
|
get: function(){
|
1591
1592
|
if(this.type != 'file'){return null;}
|
1592
|
-
if(!$(this).
|
1593
|
-
webshim.info("please add the 'ws-filereader' class to your input[type='file'] to implement files-property");
|
1593
|
+
if(!$(this).is('.ws-filereader, .ws-capture')){
|
1594
|
+
webshim.info("please add the 'ws-filereader'/'ws-capture' class to your input[type='file'] to implement files-property");
|
1594
1595
|
}
|
1595
1596
|
return webshim.data(this, 'fileList') || [];
|
1596
1597
|
}
|
@@ -1612,11 +1613,66 @@ webshims.register('form-shim-extend2', function($, webshims, window, document, u
|
|
1612
1613
|
});
|
1613
1614
|
|
1614
1615
|
webshim.onNodeNamesPropertyModify('input', 'value', function(value, boolVal, type){
|
1615
|
-
if(value === '' && this.type == 'file' && $(this).
|
1616
|
+
if(value === '' && this.type == 'file' && $(this).is('.ws-filereader, .ws-capture')){
|
1616
1617
|
webshim.data(this, 'fileList', []);
|
1617
1618
|
}
|
1618
1619
|
});
|
1619
1620
|
|
1621
|
+
if(!document.createElement('canvas').toBlob){
|
1622
|
+
|
1623
|
+
webshim.defineNodeNameProperty('canvas', 'toBlob', {
|
1624
|
+
prop: {
|
1625
|
+
value: function(cb, type, qualitiy){
|
1626
|
+
var dataURL;
|
1627
|
+
var $canvas = $(this);
|
1628
|
+
if(!type){
|
1629
|
+
type = 'image/jpeg';
|
1630
|
+
}
|
1631
|
+
if(type == 'image/jpeg' && !qualitiy){
|
1632
|
+
qualitiy = 0.8;
|
1633
|
+
}
|
1634
|
+
loadMoxie();
|
1635
|
+
setTimeout(function(){
|
1636
|
+
dataURL = $canvas.callProp('getAsDataURL', [type, qualitiy]);
|
1637
|
+
webshim.ready('moxie', function(){
|
1638
|
+
var img = new mOxie.Image();
|
1639
|
+
|
1640
|
+
img.onload = function() {
|
1641
|
+
var blob = img.getAsBlob();
|
1642
|
+
webshim.defineProperty(blob, '_wsDataURL', {
|
1643
|
+
value: dataURL,
|
1644
|
+
enumerable: false
|
1645
|
+
});
|
1646
|
+
cb(blob);
|
1647
|
+
};
|
1648
|
+
img.load(dataURL);
|
1649
|
+
});
|
1650
|
+
}, 9);
|
1651
|
+
}
|
1652
|
+
}
|
1653
|
+
});
|
1654
|
+
|
1655
|
+
webshim.ready('url', function(){
|
1656
|
+
var _nativeCreateObjectURL = URL.createObjectURL;
|
1657
|
+
var _nativeRevokeObjectURL = URL.revokeObjectURL;
|
1658
|
+
|
1659
|
+
URL.createObjectURL = function(obj){
|
1660
|
+
var url = obj;
|
1661
|
+
if(obj._wsimgDataURL) {
|
1662
|
+
url = obj._wsimgDataURL;
|
1663
|
+
} else if(_nativeCreateObjectURL){
|
1664
|
+
return _nativeCreateObjectURL.apply(this, arguments);
|
1665
|
+
}
|
1666
|
+
return url;
|
1667
|
+
};
|
1668
|
+
|
1669
|
+
URL.revokeObjectURL = function(url){
|
1670
|
+
if (_nativeRevokeObjectURL){
|
1671
|
+
return _nativeRevokeObjectURL.apply(this, arguments);
|
1672
|
+
}
|
1673
|
+
};
|
1674
|
+
});
|
1675
|
+
}
|
1620
1676
|
|
1621
1677
|
window.FileReader = notReadyYet;
|
1622
1678
|
window.FormData = notReadyYet;
|
@@ -1626,7 +1682,6 @@ webshims.register('form-shim-extend2', function($, webshims, window, document, u
|
|
1626
1682
|
mOxie = window.mOxie;
|
1627
1683
|
|
1628
1684
|
mOxie.Env.swf_url = featureOptions.swfpath;
|
1629
|
-
mOxie.Env.xap_url = featureOptions.xappath;
|
1630
1685
|
|
1631
1686
|
window.FileReader = mOxie.FileReader;
|
1632
1687
|
|
@@ -1665,7 +1720,6 @@ webshims.register('form-shim-extend2', function($, webshims, window, document, u
|
|
1665
1720
|
|
1666
1721
|
return moxieData;
|
1667
1722
|
};
|
1668
|
-
FormData = window.FormData;
|
1669
1723
|
|
1670
1724
|
createFilePicker = _createFilePicker;
|
1671
1725
|
transports.moxie = createMoxieTransport;
|