edge fixes
diff --git a/player/index.html b/player/index.html
index d431bd9..2c8851b 100644
--- a/player/index.html
+++ b/player/index.html
@@ -47,6 +47,8 @@
<script src="js/utils/shapes/MouseModifier.js"></script>
<script src="js/utils/shapes/RoundCornersModifier.js"></script>
<script src="js/utils/imagePreloader.js"></script>
+ <script src="js/utils/featureSupport.js"></script>
+ <script src="js/utils/filters.js"></script>
<script src="js/renderers/BaseRenderer.js"></script>
<script src="js/renderers/SVGRenderer.js"></script>
<script src="js/renderers/CanvasRenderer.js" data-light-skip="true"></script>
@@ -104,12 +106,12 @@
var animData = {
container: document.getElementById('bodymovin'),
renderer: 'svg',
- loop: false,
+ loop: true,
autoplay: true,
rendererSettings: {
progressiveLoad:false
},
- path: 'exports/render/data.json'
+ path: 'exports/mobilo/P_1.json'
};
anim = bodymovin.loadAnimation(animData);
diff --git a/player/js/elements/svgElements/SVGBaseElement.js b/player/js/elements/svgElements/SVGBaseElement.js
index 72573c1..bc33236 100644
--- a/player/js/elements/svgElements/SVGBaseElement.js
+++ b/player/js/elements/svgElements/SVGBaseElement.js
@@ -20,6 +20,18 @@
masker.setAttribute('mask-type',this.data.td == 3 ? 'luminance':'alpha');
masker.appendChild(this.layerElement);
this.globalData.defs.appendChild(masker);
+ ////// This is only for IE and Edge when mask if of type alpha
+ if(!featureSupport.maskType && this.data.td == 1){
+ masker.setAttribute('mask-type','luminance');
+ var filId = randomString(10);
+ var fil = filtersFactory.createFilter(filId);
+ this.globalData.defs.appendChild(fil);
+ fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());
+ var gg = document.createElementNS(svgNS,'g');
+ gg.appendChild(this.layerElement);
+ masker.appendChild(gg);
+ gg.setAttribute('filter','url(#'+filId+')');
+ }
}else if(this.data.td == 2){
var maskGroup = document.createElementNS(svgNS,'mask');
maskGroup.setAttribute('id',this.layerId);
@@ -27,14 +39,8 @@
var maskGrouper = document.createElementNS(svgNS,'g');
maskGroup.appendChild(maskGrouper);
this.layerElement = document.createElementNS(svgNS,'g');
- var fil = document.createElementNS(svgNS,'filter');
var filId = randomString(10);
- fil.setAttribute('id',filId);
- fil.setAttribute('filterUnits','objectBoundingBox');
- fil.setAttribute('x','0%');
- fil.setAttribute('y','0%');
- fil.setAttribute('width','100%');
- fil.setAttribute('height','100%');
+ var fil = filtersFactory.createFilter(filId);
var feCTr = document.createElementNS(svgNS,'feComponentTransfer');
feCTr.setAttribute('in','SourceGraphic');
fil.appendChild(feCTr);
@@ -53,6 +59,14 @@
maskGrouper.setAttribute('filter','url(#'+filId+')');
maskGrouper.appendChild(alphaRect);
maskGrouper.appendChild(this.layerElement);
+ if(!featureSupport.maskType){
+ maskGroup.setAttribute('mask-type','luminance');
+ fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());
+ var gg = document.createElementNS(svgNS,'g');
+ maskGrouper.appendChild(alphaRect);
+ gg.appendChild(this.layerElement);
+ maskGrouper.appendChild(gg);
+ }
this.globalData.defs.appendChild(maskGroup);
}else{
this.layerElement = document.createElementNS(svgNS,'g');
diff --git a/player/js/elements/svgElements/SVGEffects.js b/player/js/elements/svgElements/SVGEffects.js
index 98dc110..a23a72a 100644
--- a/player/js/elements/svgElements/SVGEffects.js
+++ b/player/js/elements/svgElements/SVGEffects.js
@@ -1,6 +1,7 @@
function SVGEffects(elem){
var i, len = elem.data.ef.length;
- var fil = document.createElementNS(svgNS,'filter');
+ var filId = randomString(10);
+ var fil = filtersFactory.createFilter(filId);
var count = 0;
this.filters = [];
var filterManager;
@@ -19,13 +20,6 @@
}
}
if(count){
- var filId = randomString(10);
- fil.setAttribute('id',filId);
- fil.setAttribute('filterUnits','objectBoundingBox');
- fil.setAttribute('x','0%');
- fil.setAttribute('y','0%');
- fil.setAttribute('width','100%');
- fil.setAttribute('height','100%');
elem.globalData.defs.appendChild(fil);
elem.layerElement.setAttribute('filter','url(#'+filId+')');
}
@@ -136,12 +130,13 @@
groupPath.setAttribute('stroke','#fff');
} else if(this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2){
if(this.filterManager.effectElements[10].p.v === 2){
- while(this.elem.layerElement.children.length){
- this.elem.layerElement.removeChild(this.elem.layerElement.children[0]);
+ var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;
+ while(elemChildren.length){
+ this.elem.layerElement.removeChild(elemChildren[0]);
}
}
this.elem.layerElement.appendChild(groupPath);
- this.elem.layerElement.setAttribute('mask','');
+ this.elem.layerElement.removeAttribute('mask');
groupPath.setAttribute('stroke','#fff');
}
this.initialized = true;
diff --git a/player/js/utils/featureSupport.js b/player/js/utils/featureSupport.js
new file mode 100644
index 0000000..8a32ebe
--- /dev/null
+++ b/player/js/utils/featureSupport.js
@@ -0,0 +1,9 @@
+var featureSupport = (function(){
+ var ob = {
+ maskType: true
+ }
+ if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\/\d./i.test(navigator.userAgent)) {
+ ob.maskType = false;
+ }
+ return ob;
+}());
\ No newline at end of file
diff --git a/player/js/utils/filters.js b/player/js/utils/filters.js
new file mode 100644
index 0000000..f2375b6
--- /dev/null
+++ b/player/js/utils/filters.js
@@ -0,0 +1,26 @@
+var filtersFactory = (function(){
+ var ob = {};
+ ob.createFilter = createFilter;
+ ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;
+
+ function createFilter(filId){
+ var fil = document.createElementNS(svgNS,'filter');
+ fil.setAttribute('id',filId);
+ fil.setAttribute('filterUnits','objectBoundingBox');
+ fil.setAttribute('x','0%');
+ fil.setAttribute('y','0%');
+ fil.setAttribute('width','100%');
+ fil.setAttribute('height','100%');
+ return fil;
+ }
+
+ function createAlphaToLuminanceFilter(){
+ var feColorMatrix = document.createElementNS(svgNS,'feColorMatrix');
+ feColorMatrix.setAttribute('type','matrix');
+ feColorMatrix.setAttribute('color-interpolation-filters','sRGB');
+ feColorMatrix.setAttribute('values','0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1');
+ return feColorMatrix;
+ }
+
+ return ob;
+}())
\ No newline at end of file