From 82d9a15feea5e82400710168aacd29c8daf63935 Mon Sep 17 00:00:00 2001 From: kangax Date: Mon, 30 Sep 2013 18:37:45 +0200 Subject: [PATCH] Fix left aligning in Node. Version 1.3.7 --- HEADER.js | 2 +- component.json | 2 +- dist/all.js | 4 ++-- dist/all.min.js | 4 ++-- dist/all.min.js.gz | Bin 51024 -> 51007 bytes dist/all.require.js | 4 ++-- package.json | 2 +- src/shapes/text.class.js | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/HEADER.js b/HEADER.js index 2b291209..c0238bac 100644 --- a/HEADER.js +++ b/HEADER.js @@ -1,6 +1,6 @@ /*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "1.3.6" }; +var fabric = fabric || { version: "1.3.7" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; } diff --git a/component.json b/component.json index 28e8f70d..42bef611 100644 --- a/component.json +++ b/component.json @@ -2,7 +2,7 @@ "name": "fabric.js", "repo": "kangax/fabric.js", "description": "Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.", - "version": "1.3.6", + "version": "1.3.7", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "dependencies": {}, "development": {}, diff --git a/dist/all.js b/dist/all.js index 16f1f616..3ef9f0ae 100644 --- a/dist/all.js +++ b/dist/all.js @@ -1,7 +1,7 @@ /* build: `node build.js modules=ALL exclude=gestures` */ /*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "1.3.6" }; +var fabric = fabric || { version: "1.3.7" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; } @@ -18374,7 +18374,7 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Imag * @return {Number} Left offset */ _getLeftOffset: function() { - if (fabric.isLikelyNode && (this.originX === 'left' || this.originX === 'center')) { + if (fabric.isLikelyNode) { return 0; } return -this.width / 2; diff --git a/dist/all.min.js b/dist/all.min.js index 0560c0ca..8db3ed73 100644 --- a/dist/all.min.js +++ b/dist/all.min.js @@ -1,6 +1,6 @@ -/* build: `node build.js modules=ALL exclude=gestures` *//*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"1.3.6"};typeof exports!="undefined"&&(exports.fabric=fabric),typeof document!="undefined"&&typeof window!="undefined"?(fabric.document=document,fabric.window=window):(fabric.document=require("jsdom").jsdom(""),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined";var Cufon=function(){function r(e){var t=this.face=e.face;this.glyphs=e.glyphs,this.w=e.w,this.baseSize=parseInt(t["units-per-em"],10),this.family=t["font-family"].toLowerCase(),this.weight=t["font-weight"],this.style=t["font-style"]||"normal",this.viewBox=function(){var e=t.bbox.split(/\s+/),n={minX:parseInt(e[0],10),minY:parseInt(e[1],10),maxX:parseInt(e[2],10),maxY:parseInt(e[3],10)};return n.width=n.maxX-n.minX,n.height=n.maxY-n.minY,n.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")},n}(),this.ascent=-parseInt(t.ascent,10),this.descent=-parseInt(t.descent,10),this.height=-this.ascent+this.descent}function i(){var e={},t={oblique:"italic",italic:"oblique"};this.add=function(t){(e[t.style]||(e[t.style]={}))[t.weight]=t},this.get=function(n,r){var i=e[n]||e[t[n]]||e.normal||e.italic||e.oblique;if(!i)return null;r={normal:400,bold:700}[r]||parseInt(r,10);if(i[r])return i[r];var s={1:1,99:0}[r%100],o=[],u,a;s===undefined&&(s=r>400),r==500&&(r=400);for(var f in i){f=parseInt(f,10);if(!u||fa)a=f;o.push(f)}return ra&&(r=a),o.sort(function(e,t){return(s?e>r&&t>r?et:et:e=i.length+e?r():setTimeout(arguments.callee,10)}),function(t){e?t():n.push(t)}}(),supports:function(e,t){var n=fabric.document.createElement("span").style;return n[e]===undefined?!1:(n[e]=t,n[e]===t)},textAlign:function(e,t,n,r){return t.get("textAlign")=="right"?n>0&&(e=" "+e):nk&&(k=N),A.push(N),N=0;continue}var O=t.glyphs[T[b]]||t.missingGlyph;if(!O)continue;N+=C=Number(O.w||t.w)+h}A.push(N),N=Math.max(k,N);var M=[];for(var b=A.length;b--;)M[b]=N-A[b];if(C===null)return null;d+=l.width-C,m+=l.minX;var _,D;if(f)_=u,D=u.firstChild;else{_=fabric.document.createElement("span"),_.className="cufon cufon-canvas",_.alt=n,D=fabric.document.createElement("canvas"),_.appendChild(D);if(i.printable){var P=fabric.document.createElement("span");P.className="cufon-alt",P.appendChild(fabric.document.createTextNode(n)),_.appendChild(P)}}var H=_.style,B=D.style||{},j=c.convert(l.height-p+v),F=Math.ceil(j),I=F/j;D.width=Math.ceil(c.convert(N+d-m)*I),D.height=F,p+=l.minY,B.top=Math.round(c.convert(p-t.ascent))+"px",B.left=Math.round(c.convert(m))+"px";var q=Math.ceil(c.convert(N*I)),R=q+"px",U=c.convert(t.height),z=(i.lineHeight-1)*c.convert(-t.ascent/5)*(L-1);Cufon.textOptions.width=q,Cufon.textOptions.height=U*L+z,Cufon.textOptions.lines=L,Cufon.textOptions.totalLineHeight=z,e?(H.width=R,H.height=U+"px"):(H.paddingLeft=R,H.paddingBottom=U-1+"px");var W=Cufon.textOptions.context||D.getContext("2d"),X=F/l.height;Cufon.textOptions.fontAscent=t.ascent*X,Cufon.textOptions.boundaries=null;for(var V=Cufon.textOptions.shadowOffsets,b=y.length;b--;)V[b]=[y[b][0]*X,y[b][1]*X];W.save(),W.scale(X,X),W.translate(-m-1/X*D.width/2+(Cufon.fonts[t.family].offsetLeft||0),-p-Cufon.textOptions.height/X/2+(Cufon.fonts[t.family].offsetTop||0)),W.lineWidth=t.face["underline-thickness"],W.save();var J=Cufon.getTextDecoration(i),K=i.fontStyle==="italic";W.save(),Q();if(g)for(var b=0,w=g.length;b.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}'),function(e,t,i,s,o,u,a){var f=t===null;f&&(t=o.alt);var l=e.viewBox,c=i.computedFontSize||(i.computedFontSize=new Cufon.CSS.Size(n(u,i.get("fontSize"))+"px",e.baseSize)),h=i.computedLSpacing;h==undefined&&(h=i.get("letterSpacing"),i.computedLSpacing=h=h=="normal"?0:~~c.convertFrom(r(u,h)));var p,d;if(f)p=o,d=o.firstChild;else{p=fabric.document.createElement("span"),p.className="cufon cufon-vml",p.alt=t,d=fabric.document.createElement("span"),d.className="cufon-vml-canvas",p.appendChild(d);if(s.printable){var v=fabric.document.createElement("span");v.className="cufon-alt",v.appendChild(fabric.document.createTextNode(t)),p.appendChild(v)}a||p.appendChild(fabric.document.createElement("cvml:shape"))}var m=p.style,g=d.style,y=c.convert(l.height),b=Math.ceil(y),w=b/y,E=l.minX,S=l.minY;g.height=b,g.top=Math.round(c.convert(S-e.ascent)),g.left=Math.round(c.convert(E)),m.height=c.convert(e.height)+"px";var x=Cufon.getTextDecoration(s),T=i.get("color"),N=Cufon.CSS.textTransform(t,i).split(""),C=0,k=0,L=null,A,O,M=s.textShadow;for(var _=0,D=0,P=N.length;_-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)}},function(e){function r(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e}function i(e,t){return Math.floor(Math.random()*(t-e+1))+e}function o(e){return e*s}function u(e){return e/s}function a(e,t,n){var r=Math.sin(n),i=Math.cos(n);e.subtractEquals(t);var s=e.x*i-e.y*r,o=e.x*r+e.y*i;return(new fabric.Point(s,o)).addEquals(t)}function f(e,t){return parseFloat(Number(e).toFixed(t))}function l(){return!1}function c(e,t){return e=fabric.util.string.camelize(e.charAt(0).toUpperCase()+e.slice(1)),h(t)[e]}function h(t){if(!t)return fabric;var n=t.split("."),r=n.length,i=e||fabric.window;for(var s=0;s1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r}function m(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),e[d?"lineTo":"moveTo"](r,0),d=!d;e.restore()}function y(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function b(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function w(e){var t=e.prototype;for(var n=t.stateProperties.length;n--;){var r=t.stateProperties[n],i=r.charAt(0).toUpperCase()+r.slice(1),s="set"+i,o="get"+i;t[o]||(t[o]=function(e){return new Function('return this.get("'+e+'")')}(r)),t[s]||(t[s]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(r))}}function E(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function S(e,t){var n=[[e[0],e[2],e[4]],[e[1],e[3],e[5]],[0,0,1]],r=[[t[0],t[2],t[4]],[t[1],t[3],t[5]],[0,0,1]],i=[];for(var s=0;s<3;s++){i[s]=[];for(var o=0;o<3;o++){var u=0;for(var a=0;a<3;a++)u+=n[s][a]*r[a][o];i[s][o]=u}}return[i[0][0],i[1][0],i[0][1],i[1][1],i[0][2],i[1][2]]}function x(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]}function T(e,t,n,r){var i=r[0],s=r[1],o=r[2],u=r[3],a=r[4],f=r[5],l=r[6],c=A(f,l,i,s,u,a,o,t,n);for(var h=0;h1&&(d=Math.sqrt(d),n*=d,r*=d);var v=c/n,m=l/n,g=-l/r,y=c/r,b=v*u+m*a,w=g*u+y*a,E=v*e+m*t,S=g*e+y*t,x=(E-b)*(E-b)+(S-w)*(S-w),T=1/x-.25;T<0&&(T=0);var C=Math.sqrt(T);s===i&&(C=-C);var A=.5*(b+E)-C*(S-w),O=.5*(w+S)+C*(E-b),M=Math.atan2(w-O,b-A),_=Math.atan2(S-O,E-A),D=_-M;D<0&&s===1?D+=2*Math.PI:D>0&&s===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B=r&&(r=e[n][t]);else while(n--)e[n]>=r&&(r=e[n]);return r}function r(e,t){if(!e||e.length===0)return undefined;var n=e.length-1,r=t?e[n][t]:e[n];if(t)while(n--)e[n][t]>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(t){var n=this.constructor.superclass.prototype[t];return arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this)}function o(){function u(){this.initialize.apply(this,arguments)}var n=null,o=e.call(arguments,0);typeof o[0]=="function"&&(n=o.shift()),u.superclass=n,u.subclasses=[],n&&(i.prototype=n.prototype,u.prototype=new i,n.subclasses.push(u));for(var a=0,f=o.length;a-1?e.prototype[i]=function(e){return function(){var n=this.constructor.superclass;this.constructor.superclass=r;var i=t[e].apply(this,arguments);this.constructor.superclass=n;if(e!=="initialize")return i}}(i):e.prototype[i]=t[i],n&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};fabric.util.createClass=o}(),function(){function e(e){var t=Array.prototype.slice.call(arguments,1),n,r,i=t.length;for(r=0;r"),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined";var Cufon=function(){function r(e){var t=this.face=e.face;this.glyphs=e.glyphs,this.w=e.w,this.baseSize=parseInt(t["units-per-em"],10),this.family=t["font-family"].toLowerCase(),this.weight=t["font-weight"],this.style=t["font-style"]||"normal",this.viewBox=function(){var e=t.bbox.split(/\s+/),n={minX:parseInt(e[0],10),minY:parseInt(e[1],10),maxX:parseInt(e[2],10),maxY:parseInt(e[3],10)};return n.width=n.maxX-n.minX,n.height=n.maxY-n.minY,n.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")},n}(),this.ascent=-parseInt(t.ascent,10),this.descent=-parseInt(t.descent,10),this.height=-this.ascent+this.descent}function i(){var e={},t={oblique:"italic",italic:"oblique"};this.add=function(t){(e[t.style]||(e[t.style]={}))[t.weight]=t},this.get=function(n,r){var i=e[n]||e[t[n]]||e.normal||e.italic||e.oblique;if(!i)return null;r={normal:400,bold:700}[r]||parseInt(r,10);if(i[r])return i[r];var s={1:1,99:0}[r%100],o=[],u,a;s===undefined&&(s=r>400),r==500&&(r=400);for(var f in i){f=parseInt(f,10);if(!u||fa)a=f;o.push(f)}return ra&&(r=a),o.sort(function(e,t){return(s?e>r&&t>r?et:et:e=i.length+e?r():setTimeout(arguments.callee,10)}),function(t){e?t():n.push(t)}}(),supports:function(e,t){var n=fabric.document.createElement("span").style;return n[e]===undefined?!1:(n[e]=t,n[e]===t)},textAlign:function(e,t,n,r){return t.get("textAlign")=="right"?n>0&&(e=" "+e):nk&&(k=N),A.push(N),N=0;continue}var O=t.glyphs[T[b]]||t.missingGlyph;if(!O)continue;N+=C=Number(O.w||t.w)+h}A.push(N),N=Math.max(k,N);var M=[];for(var b=A.length;b--;)M[b]=N-A[b];if(C===null)return null;d+=l.width-C,m+=l.minX;var _,D;if(f)_=u,D=u.firstChild;else{_=fabric.document.createElement("span"),_.className="cufon cufon-canvas",_.alt=n,D=fabric.document.createElement("canvas"),_.appendChild(D);if(i.printable){var P=fabric.document.createElement("span");P.className="cufon-alt",P.appendChild(fabric.document.createTextNode(n)),_.appendChild(P)}}var H=_.style,B=D.style||{},j=c.convert(l.height-p+v),F=Math.ceil(j),I=F/j;D.width=Math.ceil(c.convert(N+d-m)*I),D.height=F,p+=l.minY,B.top=Math.round(c.convert(p-t.ascent))+"px",B.left=Math.round(c.convert(m))+"px";var q=Math.ceil(c.convert(N*I)),R=q+"px",U=c.convert(t.height),z=(i.lineHeight-1)*c.convert(-t.ascent/5)*(L-1);Cufon.textOptions.width=q,Cufon.textOptions.height=U*L+z,Cufon.textOptions.lines=L,Cufon.textOptions.totalLineHeight=z,e?(H.width=R,H.height=U+"px"):(H.paddingLeft=R,H.paddingBottom=U-1+"px");var W=Cufon.textOptions.context||D.getContext("2d"),X=F/l.height;Cufon.textOptions.fontAscent=t.ascent*X,Cufon.textOptions.boundaries=null;for(var V=Cufon.textOptions.shadowOffsets,b=y.length;b--;)V[b]=[y[b][0]*X,y[b][1]*X];W.save(),W.scale(X,X),W.translate(-m-1/X*D.width/2+(Cufon.fonts[t.family].offsetLeft||0),-p-Cufon.textOptions.height/X/2+(Cufon.fonts[t.family].offsetTop||0)),W.lineWidth=t.face["underline-thickness"],W.save();var J=Cufon.getTextDecoration(i),K=i.fontStyle==="italic";W.save(),Q();if(g)for(var b=0,w=g.length;b.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}'),function(e,t,i,s,o,u,a){var f=t===null;f&&(t=o.alt);var l=e.viewBox,c=i.computedFontSize||(i.computedFontSize=new Cufon.CSS.Size(n(u,i.get("fontSize"))+"px",e.baseSize)),h=i.computedLSpacing;h==undefined&&(h=i.get("letterSpacing"),i.computedLSpacing=h=h=="normal"?0:~~c.convertFrom(r(u,h)));var p,d;if(f)p=o,d=o.firstChild;else{p=fabric.document.createElement("span"),p.className="cufon cufon-vml",p.alt=t,d=fabric.document.createElement("span"),d.className="cufon-vml-canvas",p.appendChild(d);if(s.printable){var v=fabric.document.createElement("span");v.className="cufon-alt",v.appendChild(fabric.document.createTextNode(t)),p.appendChild(v)}a||p.appendChild(fabric.document.createElement("cvml:shape"))}var m=p.style,g=d.style,y=c.convert(l.height),b=Math.ceil(y),w=b/y,E=l.minX,S=l.minY;g.height=b,g.top=Math.round(c.convert(S-e.ascent)),g.left=Math.round(c.convert(E)),m.height=c.convert(e.height)+"px";var x=Cufon.getTextDecoration(s),T=i.get("color"),N=Cufon.CSS.textTransform(t,i).split(""),C=0,k=0,L=null,A,O,M=s.textShadow;for(var _=0,D=0,P=N.length;_-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)}},function(e){function r(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e}function i(e,t){return Math.floor(Math.random()*(t-e+1))+e}function o(e){return e*s}function u(e){return e/s}function a(e,t,n){var r=Math.sin(n),i=Math.cos(n);e.subtractEquals(t);var s=e.x*i-e.y*r,o=e.x*r+e.y*i;return(new fabric.Point(s,o)).addEquals(t)}function f(e,t){return parseFloat(Number(e).toFixed(t))}function l(){return!1}function c(e,t){return e=fabric.util.string.camelize(e.charAt(0).toUpperCase()+e.slice(1)),h(t)[e]}function h(t){if(!t)return fabric;var n=t.split("."),r=n.length,i=e||fabric.window;for(var s=0;s1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r}function m(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),e[d?"lineTo":"moveTo"](r,0),d=!d;e.restore()}function y(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function b(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function w(e){var t=e.prototype;for(var n=t.stateProperties.length;n--;){var r=t.stateProperties[n],i=r.charAt(0).toUpperCase()+r.slice(1),s="set"+i,o="get"+i;t[o]||(t[o]=function(e){return new Function('return this.get("'+e+'")')}(r)),t[s]||(t[s]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(r))}}function E(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function S(e,t){var n=[[e[0],e[2],e[4]],[e[1],e[3],e[5]],[0,0,1]],r=[[t[0],t[2],t[4]],[t[1],t[3],t[5]],[0,0,1]],i=[];for(var s=0;s<3;s++){i[s]=[];for(var o=0;o<3;o++){var u=0;for(var a=0;a<3;a++)u+=n[s][a]*r[a][o];i[s][o]=u}}return[i[0][0],i[1][0],i[0][1],i[1][1],i[0][2],i[1][2]]}function x(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]}function T(e,t,n,r){var i=r[0],s=r[1],o=r[2],u=r[3],a=r[4],f=r[5],l=r[6],c=A(f,l,i,s,u,a,o,t,n);for(var h=0;h1&&(d=Math.sqrt(d),n*=d,r*=d);var v=c/n,m=l/n,g=-l/r,y=c/r,b=v*u+m*a,w=g*u+y*a,E=v*e+m*t,S=g*e+y*t,x=(E-b)*(E-b)+(S-w)*(S-w),T=1/x-.25;T<0&&(T=0);var C=Math.sqrt(T);s===i&&(C=-C);var A=.5*(b+E)-C*(S-w),O=.5*(w+S)+C*(E-b),M=Math.atan2(w-O,b-A),_=Math.atan2(S-O,E-A),D=_-M;D<0&&s===1?D+=2*Math.PI:D>0&&s===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B=r&&(r=e[n][t]);else while(n--)e[n]>=r&&(r=e[n]);return r}function r(e,t){if(!e||e.length===0)return undefined;var n=e.length-1,r=t?e[n][t]:e[n];if(t)while(n--)e[n][t]>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(t){var n=this.constructor.superclass.prototype[t];return arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this)}function o(){function u(){this.initialize.apply(this,arguments)}var n=null,o=e.call(arguments,0);typeof o[0]=="function"&&(n=o.shift()),u.superclass=n,u.subclasses=[],n&&(i.prototype=n.prototype,u.prototype=new i,n.subclasses.push(u));for(var a=0,f=o.length;a-1?e.prototype[i]=function(e){return function(){var n=this.constructor.superclass;this.constructor.superclass=r;var i=t[e].apply(this,arguments);this.constructor.superclass=n;if(e!=="initialize")return i}}(i):e.prototype[i]=t[i],n&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};fabric.util.createClass=o}(),function(){function e(e){var t=Array.prototype.slice.call(arguments,1),n,r,i=t.length;for(r=0;r-1?s(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if(r==="opacity")s(e,t[r]);else{var i=r==="float"||r==="cssFloat"?typeof n.styleFloat=="undefined"?"cssFloat":"styleFloat":r;n[i]=t[r]}return e}var t=fabric.document.createElement("div"),n=typeof t.style.opacity=="string",r=typeof t.style.filter=="string",i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(e){return e};n?s=function(e,t){return e.style.opacity=t,e}:r&&(s=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+t*100+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+t*100+")",e}),fabric.util.setStyle=e}(),function(){function t(e){return typeof e=="string"?fabric.document.getElementById(e):e}function s(e,t){var n=fabric.document.createElement(e);for(var r in t)r==="class"?n.className=t[r]:r==="for"?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function o(e,t){(" "+e.className+" ").indexOf(" "+t+" ")===-1&&(e.className+=(e.className?" ":"")+t)}function u(e,t,n){return typeof t=="string"&&(t=s(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t}function a(e){var t,n,r={left:0,top:0},i=e&&e.ownerDocument,s={left:0,top:0},o={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!i)return{left:0,top:0};for(var u in o)s[o[u]]+=parseInt(f(e,u),10)||0;return t=i.documentElement,typeof e.getBoundingClientRect!="undefined"&&(r=e.getBoundingClientRect()),i!=null&&i===i.window?n=i:n=i.nodeType===9&&(i.defaultView||i.parentWindow),{left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)+s.left,top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0)+s.top}}function f(e,t){e.style||(e.style={});if(fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle)return fabric.document.defaultView.getComputedStyle(e,null)[t];var n=e.style[t];return!n&&e.currentStyle&&(n=e.currentStyle[t]),n}var e=Array.prototype.slice,n=function(t){return e.call(t,0)},r;try{r=n(fabric.document.childNodes)instanceof Array}catch(i){}r||(n=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t}),function(){function n(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=fabric.util.falseFunction),t?e.style[t]="none":typeof e.unselectable=="string"&&(e.unselectable="on"),e}function r(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=null),t?e.style[t]="":typeof e.unselectable=="string"&&(e.unselectable=""),e}var e=fabric.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=n,fabric.util.makeElementSelectable=r}(),function(){function e(e,t){var n=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),i=!0;r.onload=r.onreadystatechange=function(e){if(i){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;i=!1,t(e||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=e,n.appendChild(r)}fabric.util.getScript=e}(),fabric.util.getById=t,fabric.util.toArray=n,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getElementOffset=a,fabric.util.getElementStyle=f}(),function(){function e(e,t){return e+(/\?/.test(e)?"&":"?")+t}function n(){}function r(r,i){i||(i={});var s=i.method?i.method.toUpperCase():"GET",o=i.onComplete||function(){},u=t(),a;return u.onreadystatechange=function(){u.readyState===4&&(o(u),u.onreadystatechange=n)},s==="GET"&&(a=null,typeof i.parameters=="string"&&(r=e(r,i.parameters))),u.open(s,r,!0),(s==="POST"||s==="PUT")&&u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),u.send(a),u}var t=function(){var e=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}];for(var t=e.length;t--;)try{var n=e[t]();if(n)return e[t]}catch(r){}}();fabric.util.request=r}(),function(){function e(e){e||(e={});var t=+(new Date),r=e.duration||500,i=t+r,s,o=e.onChange||function(){},u=e.abort||function(){return!1},a=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},f="startValue"in e?e.startValue:0,l="endValue"in e?e.endValue:100,c=e.byValue||l-f;e.onStart&&e.onStart(),function h(){s=+(new Date);var l=s>i?r:s-t;if(u()){e.onComplete&&e.onComplete();return}o(a(l,f,c,r));if(s>i){e.onComplete&&e.onComplete();return}n(h)}()}var t=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)},n=function(){return t.apply(fabric.window,arguments)};fabric.util.animate=e,fabric.util.requestAnimFrame=n}(),function(){function e(e,t,n,r){return n*(e/=r)*e+t}function t(e,t,n,r){return-n*(e/=r)*(e-2)+t}function n(e,t,n,r){return e/=r/2,e<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e,t,n,r){return n*(e/=r)*e*e+t}function i(e,t,n,r){return n*((e=e/r-1)*e*e+1)+t}function s(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e+t:n/2*((e-=2)*e*e+2)+t}function o(e,t,n,r){return n*(e/=r)*e*e*e+t}function u(e,t,n,r){return-n*((e=e/r-1)*e*e*e-1)+t}function a(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e+t:-n/2*((e-=2)*e*e*e-2)+t}function f(e,t,n,r){return n*(e/=r)*e*e*e*e+t}function l(e,t,n,r){return n*((e=e/r-1)*e*e*e*e+1)+t}function c(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e*e+t:n/2*((e-=2)*e*e*e*e+2)+t}function h(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t}function p(e,t,n,r){return n*Math.sin(e/r*(Math.PI/2))+t}function d(e,t,n,r){return-n/2*(Math.cos(Math.PI*e/r)-1)+t}function v(e,t,n,r){return e===0?t:n*Math.pow(2,10*(e/r-1))+t}function m(e,t,n,r){return e===r?t+n:n*(-Math.pow(2,-10*e/r)+1)+t}function g(e,t,n,r){return e===0?t:e===r?t+n:(e/=r/2,e<1?n/2*Math.pow(2,10*(e-1))+t:n/2*(-Math.pow(2,-10*--e)+2)+t)}function y(e,t,n,r){return-n*(Math.sqrt(1-(e/=r)*e)-1)+t}function b(e,t,n,r){return n*Math.sqrt(1-(e=e/r-1)*e)+t}function w(e,t,n,r){return e/=r/2,e<1?-n/2*(Math.sqrt(1-e*e)-1)+t:n/2*(Math.sqrt(1-(e-=2)*e)+1)+t}function E(e,t,n,r){var i=1.70158,s=0,o=n;return e===0?t:(e/=r,e===1?t+n:(s||(s=r*.3),o-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){w.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),w.has(e,function(r){r?w.get(e,function(e){var t=S(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function S(e){var n=e.objects,i=e.options;return n=n.map(function(e){return t[r(e.type)].fromObject(e)}),{objects:n,options:i}}function x(e,n,r){e=e.trim();var i;if(typeof DOMParser!="undefined"){var s=new DOMParser;s&&s.parseFromString&&(i=s.parseFromString(e,"text/xml"))}else t.window.ActiveXObject&&(i=new ActiveXObject("Microsoft.XMLDOM"),i.async="false",i.loadXML(e.replace(//i,"")));t.parseSVGDocument(i.documentElement,function(e,t){n(e,t)},r)}function T(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t}function N(e){var t="";return e.backgroundColor&&e.backgroundColor.source&&(t=['',''].join("")),t}function C(e){var t=e.getElementsByTagName("linearGradient"),n=e.getElementsByTagName("radialGradient"),r,i,s={};i=t.length;for(;i--;)r=t[i],s[r.getAttribute("id")]=r;i=n.length;for(;i--;)r=n[i],s[r.getAttribute("id")]=r;return s}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s=t.util.toFixed,o=t.util.multiplyTransformMatrices;t.SHARED_ATTRIBUTES=["transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width"];var u={"fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight",cx:"left",x:"left",r:"radius","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration",cy:"top",y:"top",transform:"transformMatrix"},a={stroke:"strokeOpacity",fill:"fillOpacity"};t.parseTransformAttribute=function(){function e(e,t){var n=t[0];e[0]=Math.cos(n),e[1]=Math.sin(n),e[2]=-Math.sin(n),e[3]=Math.cos(n)}function n(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function r(e,t){e[2]=t[0]}function i(e,t){e[1]=t[0]}function s(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var o=[1,0,0,1,0,0],u="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",a="(?:\\s+,?\\s*|,\\s*)",f="(?:(skewX)\\s*\\(\\s*("+u+")\\s*\\))",l="(?:(skewY)\\s*\\(\\s*("+u+")\\s*\\))",c="(?:(rotate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+")"+a+"("+u+"))?\\s*\\))",h="(?:(scale)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",p="(?:(translate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",d="(?:(matrix)\\s*\\(\\s*("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+"\\s*\\))",v="(?:"+d+"|"+p+"|"+h+"|"+c+"|"+f+"|"+l+")",m="(?:"+v+"(?:"+a+v+")*"+")",g="^\\s*(?:"+m+"?)\\s*$",y=new RegExp(g),b=new RegExp(v,"g");return function(u){var a=o.concat(),f=[];if(!u||u&&!y.test(u))return a;u.replace(b,function(t){var u=(new RegExp(v)).exec(t).filter(function(e){return e!==""&&e!=null}),l=u[1],c=u.slice(2).map(parseFloat);switch(l){case"translate":s(a,c);break;case"rotate":e(a,c);break;case"scale":n(a,c);break;case"skewX":r(a,c);break;case"skewY":i(a,c);break;case"matrix":a=c}f.push(a.concat()),a=o.concat()});var l=f[0];while(f.length>1)f.shift(),l=t.util.multiplyTransformMatrices(l,f[0]);return l}}(),t.parseSVGDocument=function(){function s(e,t){while(e&&(e=e.parentNode))if(t.test(e.nodeName))return!0;return!1}var e=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/,n="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",r=new RegExp("^\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*"+"$");return function(n,o,u){if(!n)return;var a=new Date,f=t.util.toArray(n.getElementsByTagName("*"));if(f.length===0){f=n.selectNodes("//*[name(.)!='svg']");var l=[];for(var c=0,h=f.length;ce.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,t){return new n(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},distanceFrom:function(e){var t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)},midPointFrom:function(e){return new n(this.x+(e.x-this.x)/2,this.y+(e.y-this.y)/2)},min:function(e){return new n(Math.min(this.x,e.x),Math.min(this.y,e.y))},max:function(e){return new n(Math.max(this.x,e.x),Math.max(this.y,e.y))},toString:function(){return this.x+","+this.y},setXY:function(e,t){this.x=e,this.y=t},setFromPoint:function(e){this.x=e.x,this.y=e.y},swap:function(e){var t=this.x,n=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=n}}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){this.status=e,this.points=[]}var t=e.fabric||(e.fabric={});if(t.Intersection){t.warn("fabric.Intersection is already defined");return}t.Intersection=n,t.Intersection.prototype={appendPoint:function(e){this.points.push(e)},appendPoints:function(e){this.points=this.points.concat(e)}},t.Intersection.intersectLineLine=function(e,r,i,s){var o,u=(s.x-i.x)*(e.y-i.y)-(s.y-i.y)*(e.x-i.x),a=(r.x-e.x)*(e.y-i.y)-(r.y-e.y)*(e.x-i.x),f=(s.y-i.y)*(r.x-e.x)-(s.x-i.x)*(r.y-e.y);if(f!==0){var l=u/f,c=a/f;0<=l&&l<=1&&0<=c&&c<=1?(o=new n("Intersection"),o.points.push(new t.Point(e.x+l*(r.x-e.x),e.y+l*(r.y-e.y)))):o=new n}else u===0||a===0?o=new n("Coincident"):o=new n("Parallel");return o},t.Intersection.intersectLinePolygon=function(e,t,r){var i=new n,s=r.length;for(var o=0;o0&&(i.status="Intersection"),i},t.Intersection.intersectPolygonPolygon=function(e,t){var r=new n,i=e.length;for(var s=0;s0&&(r.status="Intersection"),r},t.Intersection.intersectPolygonRectangle=function(e,r,i){var s=r.min(i),o=r.max(i),u=new t.Point(o.x,s.y),a=new t.Point(s.x,o.y),f=n.intersectLinePolygon(s,u,e),l=n.intersectLinePolygon(u,o,e),c=n.intersectLinePolygon(o,a,e),h=n.intersectLinePolygon(a,s,e),p=new n;return p.appendPoints(f.points),p.appendPoints(l.points),p.appendPoints(c.points),p.appendPoints(h.points),p.points.length>0&&(p.status="Intersection"),p}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){e?this._tryParsingColor(e):this.setSource([0,0,0,1])}function r(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var t=e.fabric||(e.fabric={});if(t.Color){t.warn("fabric.Color is already defined.");return}t.Color=n,t.Color.prototype={_tryParsingColor:function(e){var t;e in n.colorNameMap&&(e=n.colorNameMap[e]),t=n.sourceFromHex(e),t||(t=n.sourceFromRgb(e)),t||(t=n.sourceFromHsl(e)),t&&this.setSource(t)},_rgbToHsl:function(e,n,r){e/=255,n/=255,r/=255;var i,s,o,u=t.util.array.max([e,n,r]),a=t.util.array.min([e,n,r]);o=(u+a)/2;if(u===a)i=s=0;else{var f=u-a;s=o>.5?f/(2-u-a):f/(u+a);switch(u){case e:i=(n-r)/f+(n']:this.type==="radial"&&(i=["']);for(var s=0;s');return i.push(this.type==="linear"?"":""),i.join("")},toLive:function(e){var t;if(!this.type)return;this.type==="linear"?t=e.createLinearGradient(this.coords.x1,this.coords.y1,this.coords.x2,this.coords.y2):this.type==="radial"&&(t=e.createRadialGradient(this.coords.x1,this.coords.y1,this.coords.r1,this.coords.x2,this.coords.y2,this.coords.r2));for(var n=0,r=this.colorStops.length;n'+''+""},toLive:function(e){var t=typeof this.source=="function"?this.source():this.source;return e.createPattern(t,this.repeat)}}),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Shadow){t.warn("fabric.Shadow is already defined.");return}t.Shadow=t.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,initialize:function(e){typeof e=="string"&&(e=this._parseShadow(e));for(var n in e)this[n]=e[n];this.id=t.Object.__uid++},_parseShadow:function(e){var n=e.trim(),r=t.Shadow.reOffsetsAndBlur.exec(n)||[],i=n.replace(t.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)";return{color:i.trim(),offsetX:parseInt(r[1],10)||0,offsetY:parseInt(r[2],10)||0,blur:parseInt(r[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(e){var t="SourceAlpha";return e&&(e.fill===this.color||e.stroke===this.color)&&(t="SourceGraphic"),''+''+''+""+""+''+""+"" },toObject:function(){return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY}}}),t.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/}(typeof exports!="undefined"?exports:this),function(){"use strict";if(fabric.StaticCanvas){fabric.warn("fabric.StaticCanvas is already defined.");return}var e=fabric.util.object.extend,t=fabric.util.getElementOffset,n=fabric.util.removeFromArray,r=fabric.util.removeListener,i=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass({initialize:function(e,t){t||(t={}),this._initStatic(e,t),fabric.StaticCanvas.activeInstance=this},backgroundColor:"",backgroundImage:"",backgroundImageOpacity:1,backgroundImageStretch:!0,overlayImage:"",overlayImageLeft:0,overlayImageTop:0,includeDefaultValues:!0,stateful:!0,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!1,onBeforeScaleRotate:function(){},_initStatic:function(e,t){this._objects=[],this._createLowerCanvas(e),this._initOptions(t),t.overlayImage&&this.setOverlayImage(t.overlayImage,this.renderAll.bind(this)),t.backgroundImage&&this.setBackgroundImage(t.backgroundImage,this.renderAll.bind(this)),t.backgroundColor&&this.setBackgroundColor(t.backgroundColor,this.renderAll.bind(this)),this.calcOffset()},calcOffset:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(e,t,n){return fabric.util.loadImage(e,function(e){this.overlayImage=e,n&&"overlayImageLeft"in n&&(this.overlayImageLeft=n.overlayImageLeft),n&&"overlayImageTop"in n&&(this.overlayImageTop=n.overlayImageTop),t&&t()},this),this},setBackgroundImage:function(e,t,n){return fabric.util.loadImage(e,function(e){this.backgroundImage=e,n&&"backgroundImageOpacity"in n&&(this.backgroundImageOpacity=n.backgroundImageOpacity),n&&"backgroundImageStretch"in n&&(this.backgroundImageStretch=n.backgroundImageStretch),t&&t()},this),this},setBackgroundColor:function(e,t){if(e.source){var n=this;fabric.util.loadImage(e.source,function(r){n.backgroundColor=new fabric.Pattern({source:r,repeat:e.repeat}),t&&t()})}else this.backgroundColor=e,t&&t();return this},_createCanvasElement:function(){var e=fabric.document.createElement("canvas");e.style||(e.style={});if(!e)throw i;return this._initCanvasElement(e),e},_initCanvasElement:function(e){fabric.util.createCanvasElement(e);if(typeof e.getContext=="undefined")throw i},_initOptions:function(e){for(var t in e)this[t]=e[t];this.width=parseInt(this.lowerCanvasEl.width,10)||0,this.height=parseInt(this.lowerCanvasEl.height,10)||0;if(!this.lowerCanvasEl.style)return;this.lowerCanvasEl.style.width=this.width+"px",this.lowerCanvasEl.style.height=this.height+"px"},_createLowerCanvas:function(e){this.lowerCanvasEl=fabric.util.getById(e)||this._createCanvasElement(),this._initCanvasElement(this.lowerCanvasEl),fabric.util.addClass(this.lowerCanvasEl,"lower-canvas"),this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(e){return this._setDimension("width",e)},setHeight:function(e){return this._setDimension("height",e)},setDimensions:function(e){for(var t in e)this._setDimension(t,e[t]);return this},_setDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.lowerCanvasEl.style[e]=t+"px",this.upperCanvasEl&&(this.upperCanvasEl[e]=t,this.upperCanvasEl.style[e]=t+"px"),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t+"px"),this[e]=t,this.calcOffset(),this.renderAll(),this},getElement:function(){return this.lowerCanvasEl},getActiveObject:function(){return null},getActiveGroup:function(){return null},_draw:function(e,t){if(!t)return;if(this.controlsAboveOverlay){var n=t.hasBorders,r=t.hasControls;t.hasBorders=t.hasControls=!1,t.render(e),t.hasBorders=n,t.hasControls=r}else t.render(e)},_onObjectAdded:function(e){this.stateful&&e.setupState(),e.setCoords(),e.canvas=this,this.fire("object:added",{target:e}),e.fire("added")},_onObjectRemoved:function(e){this.fire("object:removed",{target:e}),e.fire("removed")},getObjects:function(){return this._objects},clearContext:function(e){return e.clearRect(0,0,this.width,this.height),this},getContext:function(){return this.contextContainer},clear:function(){return this._objects.length=0,this.discardActiveGroup&&this.discardActiveGroup(),this.discardActiveObject&&this.discardActiveObject(),this.clearContext(this.contextContainer),this.contextTop&&this.clearContext(this.contextTop),this.fire("canvas:cleared"),this.renderAll(),this},renderAll:function(e){var t=this[e===!0&&this.interactive?"contextTop":"contextContainer"];this.contextTop&&this.selection&&!this._groupSelector&&this.clearContext(this.contextTop),e||this.clearContext(t),this.fire("before:render"),this.clipTo&&fabric.util.clipContext(this,t),this.backgroundColor&&(t.fillStyle=this.backgroundColor.toLive?this.backgroundColor.toLive(t):this.backgroundColor,t.fillRect(this.backgroundColor.offsetX||0,this.backgroundColor.offsetY||0,this.width,this.height)),typeof this.backgroundImage=="object"&&this._drawBackroundImage(t);var n=this.getActiveGroup();for(var r=0,i=this._objects.length;r','\n'),n.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),""),this.backgroundColor&&this.backgroundColor.source&&n.push('"),this.backgroundImage&&n.push(''),this.overlayImage&&n.push('');var r=this.getActiveGroup();r&&this.discardActiveGroup();for(var i=0,s=this.getObjects(),o=s.length;i"),n.join("")},remove:function(e){return this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared")),fabric.Collection.remove.call(this,e)},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e,t){var r=this._objects.indexOf(e);if(r!==0){var i;if(t){i=r;for(var s=r-1;s>=0;--s){var o=e.intersectsWithObject(this._objects[s])||e.isContainedWithinObject(this._objects[s])||this._objects[s].isContainedWithinObject(e);if(o){i=s;break}}}else i=r-1;n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},bringForward:function(e,t){var r=this._objects.indexOf(e);if(r!==this._objects.length-1){var i;if(t){i=r;for(var s=r+1;s"}}),e(fabric.StaticCanvas.prototype,fabric.Observable),e(fabric.StaticCanvas.prototype,fabric.Collection),e(fabric.StaticCanvas.prototype,fabric.DataURLExporter),e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(e){var t=fabric.util.createCanvasElement();if(!t||!t.getContext)return null;var n=t.getContext("2d");if(!n)return null;switch(e){case"getImageData":return typeof n.getImageData!="undefined";case"setLineDash":return typeof n.setLineDash!="undefined";case"toDataURL":return typeof t.toDataURL!="undefined";case"toDataURLWithQuality":try{return t.toDataURL("image/jpeg",0),!0}catch(r){}return!1;default:return null}}}),fabric.StaticCanvas.prototype.toJSON=fabric.StaticCanvas.prototype.toObject}(),fabric.BaseBrush=fabric.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",setShadow:function(e){return this.shadow=new fabric.Shadow(e),this},_setBrushStyles:function(){var e=this.canvas.contextTop;e.strokeStyle=this.color,e.lineWidth=this.width,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin},_setShadow:function(){if(!this.shadow)return;var e=this.canvas.contextTop;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_resetShadow:function(){var e=this.canvas.contextTop;e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0}}),function(){var e=fabric.util.array.min,t=fabric.util.array.max;fabric.PencilBrush=fabric.util.createClass(fabric.BaseBrush,{initialize:function(e){this.canvas=e,this._points=[]},onMouseDown:function(e){this._prepareForDrawing(e),this._captureDrawingPath(e),this._render()},onMouseMove:function(e){this._captureDrawingPath(e),this.canvas.clearContext(this.canvas.contextTop),this._render()},onMouseUp:function(){this._finalizeAndAddPath()},_prepareForDrawing:function(e){var t=new fabric.Point(e.x,e.y);this._reset(),this._addPoint(t),this.canvas.contextTop.moveTo(t.x,t.y)},_addPoint:function(e){this._points.push(e)},_reset:function(){this._points.length=0,this._setBrushStyles(),this._setShadow()},_captureDrawingPath:function(e){var t=new fabric.Point(e.x,e.y);this._addPoint(t)},_render:function(){var e=this.canvas.contextTop;e.beginPath();var t=this._points[0],n=this._points[1];this._points.length===2&&t.x===n.x&&t.y===n.y&&(t.x-=.5,n.x+=.5),e.moveTo(t.x,t.y);for(var r=1,i=this._points.length;r0&&(t>this.targetFindTolerance?t-=this.targetFindTolerance:t=0,n>this.targetFindTolerance?n-=this.targetFindTolerance:n=0);var o=!0,u=r.getImageData(t,n,this.targetFindTolerance*2||1,this.targetFindTolerance*2||1);for(var a=3,f=u.data.length;ao.padding?l.x<0?l.x+=o.padding:l.x-=o.padding:l.x=0,i(l.y)>o.padding?l.y<0?l.y+=o.padding:l.y-=o.padding:l.y=0;var c=o.scaleX,h=o.scaleY;if(n==="equally"&&!u&&!a){var p=l.y+l.x,d=(o.height+o.strokeWidth)*r.original.scaleY+(o.width+o.strokeWidth)*r.original.scaleX;c=r.original.scaleX*p/d,h=r.original.scaleY*p/d,o.set("scaleX",c),o.set("scaleY",h)}else n?n==="x"&&!o.get("lockUniScaling")?(c=l.x/(o.width+o.strokeWidth),u||o.set("scaleX",c)):n==="y"&&!o.get("lockUniScaling")&&(h=l.y/(o.height+o.strokeWidth),a||o.set("scaleY",h)):(c=l.x/(o.width+o.strokeWidth),h=l.y/(o.height+o.strokeWidth),u||o.set("scaleX",c),a||o.set("scaleY",h));c<0&&(r.originX==="left"?r.originX="right":r.originX==="right"&&(r.originX="left")),h<0&&(r.originY==="top"?r.originY="bottom":r.originY==="bottom"&&(r.originY="top")),o.setPositionByOrigin(f,r.originX,r.originY)},_rotateObject:function(e,t){var i=this._currentTransform,s=this._offset;if(i.target.get("lockRotation"))return;var o=r(i.ey-i.top-s.top,i.ex-i.left-s.left),u=r(t-i.top-s.top,e-i.left-s.left),a=n(u-o+i.theta);a<0&&(a=360+a),i.target.angle=a},_setCursor:function(e){this.upperCanvasEl.style.cursor=e},_resetObjectTransform:function(e){e.scaleX=1,e.scaleY=1,e.setAngle(0)},_drawSelection:function(){var e=this.contextTop,t=this._groupSelector,n=t.left,r=t.top,s=i(n),o=i(r);e.fillStyle=this.selectionColor,e.fillRect(t.ex-(n>0?0:-n),t.ey-(r>0?0:-r),s,o),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var a=t.ex+u-(n>0?0:s),f=t.ey+u-(r>0?0:o);e.beginPath(),fabric.util.drawDashedLine(e,a,f,a+s,f,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f+o-1,a+s,f+o-1,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f,a,f+o,this.selectionDashArray),fabric.util.drawDashedLine(e,a+s-1,f,a+s-1,f+o,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+u-(n>0?0:s),t.ey+u-(r>0?0:o),s,o)},_findSelectedObjects:function(e){var t=[],n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,u=r+this._groupSelector.top,a,f=new fabric.Point(s(n,i),s(r,u)),l=new fabric.Point(o(n,i),o(r,u)),c=n===i&&r===u;for(var h=this._objects.length;h--;){a=this._objects[h];if(!a)continue;if(a.intersectsWithRect(f,l)||a.isContainedWithinRect(f,l)||a.containsPoint(f)||a.containsPoint(l))if(this.selection&&a.selectable){a.set("active",!0),t.push(a);if(c)break}}t.length===1?this.setActiveObject(t[0],e):t.length>1&&(t=new fabric.Group(t.reverse()),this.setActiveGroup(t),t.saveCoords(),this.fire("selection:created",{target:t}),this.renderAll())},findTarget:function(e,t){if(this.skipTargetFind)return;var n,r=this.getPointer(e);if(this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(e,this._offset))return n=this.lastRenderedObjectWithControlsAboveOverlay,n;var i=this.getActiveGroup();if(i&&!t&&this.containsPoint(e,i))return n=i,n;var s=[];for(var o=this._objects.length;o--;)if(this._objects[o]&&this._objects[o].visible&&this._objects[o].evented&&this.containsPoint(e,this._objects[o])){if(!this.perPixelTargetFind&&!this._objects[o].perPixelTargetFind){n=this._objects[o],this.relatedTarget=n;break}s[s.length]=this._objects[o]}for(var u=0,a=s.length;u"},get:function(e){return this[e]},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"&&e!=="clipTo"?this._set(e,t(this.get(e))):this._set(e,t);return this},_set:function(e,n){var i=e==="scaleX"||e==="scaleY";return i&&(n=this._constrainScale(n)),e==="scaleX"&&n<0?(this.flipX=!this.flipX,n*=-1):e==="scaleY"&&n<0?(this.flipY=!this.flipY,n*=-1):e==="width"||e==="height"?this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2):e==="shadow"&&n&&!(n instanceof t.Shadow)&&(n=new t.Shadow(n)),this[e]=n,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save();var r=this.transformMatrix;r&&!this.group&&e.setTransform(r[0],r[1],r[2],r[3],r[4],r[5]),n||this.transform(e),this.stroke&&(e.lineWidth=this.strokeWidth,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,e.strokeStyle=this.stroke.toLive?this.stroke.toLive(e):this.stroke),this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill),r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_renderFill:function(e){if(!this.fill)return;this.fill.toLive&&(e.save(),e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0)),e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke)return;e.save(),this.strokeDashArray?(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),o?(e.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(e)):this._renderDashedStroke&&this._renderDashedStroke(e),e.stroke()):this._stroke?this._stroke(e):e.stroke(),this._removeShadow(e),e.restore()},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){var n=this.toDataURL();return t.util.loadImage(n,function(n){e&&e(new t.Image(n))}),this},toDataURL:function(e){e||(e={});var n=t.util.createCanvasElement(),r=this.getBoundingRect();n.width=r.width,n.height=r.height,t.util.wrapElement(n,"div");var i=new t.Canvas(n);e.format==="jpg"&&(e.format="jpeg"),e.format==="jpeg"&&(i.backgroundColor="#fff");var s={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set("active",!1),this.setPositionByOrigin(new t.Point(n.width/2,n.height/2),"center","center"),i.add(this);var o=i.toDataURL(e);return this.set(s).setCoords(),i.dispose(),i=null,o},isType:function(e){return this.type===e},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}return this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){return this.set("fill",new t.Pattern(e))},setShadow:function(e){return this.set("shadow",new t.Shadow(e))},setColor:function(e){return this.set("fill",e),this},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.centerH().centerV()},remove:function(){return this.canvas.remove(this)},sendToBack:function(){return this.group?t.StaticCanvas.prototype.sendToBack.call(this.group,this):this.canvas.sendToBack(this),this},bringToFront:function(){return this.group?t.StaticCanvas.prototype.bringToFront.call(this.group,this):this.canvas.bringToFront(this),this},sendBackwards:function(e){return this.group?t.StaticCanvas.prototype.sendBackwards.call(this.group,this,e):this.canvas.sendBackwards(this,e),this},bringForward:function(e){return this.group?t.StaticCanvas.prototype.bringForward.call(this.group,this,e):this.canvas.bringForward(this,e),this},moveTo:function(e){return this.group?t.StaticCanvas.prototype.moveTo.call(this.group,this,e):this.canvas.moveTo(this,e),this}}),t.util.createAccessors(t.Object),t.Object.prototype.rotate=t.Object.prototype.setAngle,n(t.Object.prototype,t.Observable),t.Object.NUM_FRACTION_DIGITS=2,t.Object.__uid=0}(typeof exports!="undefined"?exports:this),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{translateToCenterPoint:function(t,n,r){var i=t.x,s=t.y;return n==="left"?i=t.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"&&(i=t.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2),r==="top"?s=t.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"&&(s=t.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},translateToOriginPoint:function(t,n,r){var i=t.x,s=t.y;return n==="left"?i=t.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"&&(i=t.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2),r==="top"?s=t.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"&&(s=t.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},getCenterPoint:function(){var e=new fabric.Point(this.left,this.top);return this.translateToCenterPoint(e,this.originX,this.originY)},getPointByOrigin:function(e,t){var n=this.getCenterPoint();return this.translateToOriginPoint(n,e,t)},toLocalPoint:function(t,n,r){var i=this.getCenterPoint(),s,o;return n!==undefined&&r!==undefined?(n==="left"?s=i.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"?s=i.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2:s=i.x,r==="top"?o=i.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"?o=i.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2:o=i.y):(s=this.left,o=this.top),fabric.util.rotatePoint(new fabric.Point(t.x,t.y),i,-e(this.angle)).subtractEquals(new fabric.Point(s,o))},setPositionByOrigin:function(e,t,n){var r=this.translateToCenterPoint(e,t,n),i=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",i.x),this.set("top",i.y)},adjustPosition:function(t){var n=e(this.angle),r=this.getWidth()/2,i=Math.cos(n)*r,s=Math.sin(n)*r,o=this.getWidth(),u=Math.cos(n)*o,a=Math.sin(n)*o;this.originX==="center"&&t==="left"||this.originX==="right"&&t==="center"?(this.left-=i,this.top-=s):this.originX==="left"&&t==="center"||this.originX==="center"&&t==="right"?(this.left+=i,this.top+=s):this.originX==="left"&&t==="right"?(this.left+=u,this.top+=a):this.originX==="right"&&t==="left"&&(this.left-=u,this.top-=a),this.setCoords(),this.originX=t},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","center")}})}(),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{oCoords:null,intersectsWithRect:function(e,t){var n=this.oCoords,r=new fabric.Point(n.tl.x,n.tl.y),i=new fabric.Point(n.tr.x,n.tr.y),s=new fabric.Point(n.bl.x,n.bl.y),o=new fabric.Point(n.br.x,n.br.y),u=fabric.Intersection.intersectPolygonRectangle([r,i,o,s],e,t);return u.status==="Intersection"},intersectsWithObject:function(e){function t(e){return{tl:new fabric.Point(e.tl.x,e.tl.y),tr:new fabric.Point(e.tr.x,e.tr.y),bl:new fabric.Point(e.bl.x,e.bl.y),br:new fabric.Point(e.br.x,e.br.y)}}var n=t(this.oCoords),r=t(e.oCoords),i=fabric.Intersection.intersectPolygonPolygon([n.tl,n.tr,n.br,n.bl],[r.tl,r.tr,r.br,r.bl]);return i.status==="Intersection"},isContainedWithinObject:function(e){var t=e.getBoundingRect(),n=new fabric.Point(t.left,t.top),r=new fabric.Point(t.left+t.width,t.top+t.height);return this.isContainedWithinRect(n,r)},isContainedWithinRect:function(e,t){var n=this.getBoundingRect();return n.left>e.x&&n.left+n.widthe.y&&n.top+n.height=e.y&&f.d.y>=e.y)continue;f.o.x===f.d.x&&f.o.x>=e.x?(o=f.o.x,u=e.y):(n=0,r=(f.d.y-f.o.y)/(f.d.x-f.o.x),i=e.y-n*e.x,s=f.o.y-r*f.o.x,o=-(i-s)/(n-r),u=i+n*o),o>=e.x&&(a+=1);if(a===2)break}return a},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],t=fabric.util.array.min(e),n=fabric.util.array.max(e),r=Math.abs(t-n),i=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],s=fabric.util.array.min(i),o=fabric.util.array.max(i),u=Math.abs(s-o);return{left:t,top:s,width:r,height:u}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(e){return Math.abs(e)1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x:m.x,y:m.y};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords&&this._setCornerCoords(),this}})}(),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this.get(e)!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner),o=this._findCrossPoints({x:i,y:s},u);if(o!==0&&o%2===1)return this.__corner=a,a}return!1},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=~~(this.strokeWidth/2)*2;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)-.5,~~(-(u/2)-t-r/2*this.scaleY)-.5,~~(o+n+r*this.scaleX)+1,~~(u+n+r*this.scaleY)+1);if(this.hasRotatingPoint&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;var t=this.cornerSize,n=t/2,r=~~(this.strokeWidth/2),i=-(this.width/2),s=-(this.height/2),o,u,a=t/this.scaleX,f=t/this.scaleY,l=this.padding/this.scaleX,c=this.padding/this.scaleY,h=n/this.scaleY,p=n/this.scaleX,d=(n-t)/this.scaleX,v=(n-t)/this.scaleY,m=this.height,g=this.width,y=this.transparentCorners?"strokeRect":"fillRect",b=this.transparentCorners,w=typeof G_vmlCanvasManager!="undefined";return e.save(),e.lineWidth=1/Math.max(this.scaleX,this.scaleY),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=e.fillStyle=this.cornerColor,o=i-p-r-l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),this.get("lockUniScaling")||(o=i+g/2-p,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),this.hasRotatingPoint&&(o=i+g/2-p,u=this.flipY?s+m+this.rotatingPointOffset/this.scaleY-f/2+r+c:s-this.rotatingPointOffset/this.scaleY-f/2-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),e.restore(),this}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("left"),endValue:this.getCenter().left,duration:this.FX_DURATION,onChange:function(t){e.set("left",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxCenterObjectV:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("top"),endValue:this.getCenter().top,duration:this.FX_DURATION,onChange:function(t){e.set("top",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxRemove:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("opacity"),endValue:0,duration:this.FX_DURATION,onStart:function(){e.set("active",!1)},onChange:function(t){e.set("opacity",t),s.renderAll(),i()},onComplete:function(){s.remove(e),r()}}),this}}),fabric.util.object.extend(fabric.Object.prototype,{animate:function(){if(arguments[0]&&typeof arguments[0]=="object"){var e=[],t,n;for(t in arguments[0])e.push(t);for(var r=0,i=e.length;r'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e)},_set:function(e,t){return this.callSuper("_set",e,t),e==="radius"&&this.setRadius(t),this},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(e){var t=this._createBaseSVGMarkup(),n=this.width/2,r=this.height/2,i=[-n+" "+r,"0 "+ -r,n+" "+r].join(",");return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this._renderFill(e),this._renderStroke(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}var r=t.Object.prototype.stateProperties.concat();r.push("rx","ry","x","y"),t.Rect=t.util.createClass(t.Object,{stateProperties:r,type:"rect",rx:0,ry:0,x:0,y:0,strokeDashArray:null,initialize:function(e){e=e||{},this.callSuper("initialize",e),this._initRxRy(),this.x=e.x||0,this.y=e.y||0},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height,u=this.group&&this.group.type!=="group";e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y);var a=t!==0||n!==0;e.moveTo(r+t,i),e.lineTo(r+s-t,i),a&&e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),a&&e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),a&&e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),a&&e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){var t=n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,r){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=i(s);var o=new t.Rect(n(r?t.util.object.clone(r):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed,r=t.util.array.min;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(e){var t=[],r=this._createBaseSVGMarkup();for(var i=0,s=this.points.length;i'),e?e(r.join("")):r.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),e?e(n.join("")):n.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n"},toObject:function(e){var t=s(this.callSuper("toObject",e),{path:this.path,pathOffset:this.pathOffset});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(e){var t=[],n=this._createBaseSVGMarkup();for(var r=0,i=this.path.length;r',"",""),e?e(n.join("")):n.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n=[],r,i,s=/(-?\.\d+)|(-?\d+(\.\d+)?)/g,o,u;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var r=0,i=t.length;r"),e?e(n.join("")):n.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e,n){typeof e.paths=="string"?t.loadSVGFromURL(e.paths,function(r){var i=e.paths;delete e.paths;var s=t.util.groupSVGElements(r,e,i);n(s)}):t.util.enlivenObjects(e.paths,function(r){delete e.paths,n(new t.PathGroup(r,e))})},t.PathGroup.async=!0}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){var e=this.left,t=this.top;this.forEachObject(function(n){var r=n.get("left"),i=n.get("top");n.set("originalLeft",r),n.set("originalTop",i),n.set("left",r-e),n.set("top",i-t),n.setCoords(),n.__origHasControls=n.hasControls,n.hasControls=!1},this)},toString:function(){return"#"},getObjects:function(){return this._objects},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._moveFlippedObject(e),this._restoreObjectsState(),this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e);var r=Math.max(this.scaleX,this.scaleY);this.clipTo&&t.util.clipContext(this,e);for(var i=0,s=this._objects.length;i'];for(var n=0,r=this._objects.length;n"),e?e(t.join("")):t.join("")},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','');if(this.stroke||this.strokeDashArray){var n=this.fill;this.fill=null,t.push("'),this.fill=n}return t.push(""),e?e(t.join("")):t.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this._element=this._originalElement,e&&e();return}var t=this._originalElement,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;return n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height,fabric.isLikelyNode?(r.src=n.toBuffer(undefined,fabric.Image.pngCompression),i._element=r,e&&e()):(r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png")),this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e,t){e.filters&&e.filters.length?fabric.util.enlivenObjects(e.filters,function(e){t&&t(e)},"fabric.Image.filters"):t&&t()},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){var n=fabric.document.createElement("img"),r=e.src;n.onload=function(){fabric.Image.prototype._initFilters.call(e,e,function(r){e.filters=r||[];var i=new fabric.Image(n,e);t&&t(i),n=n.onload=n.onerror=null})},n.onerror=function(){fabric.log("Error loading "+n.src),t&&t(null,!0),n=n.onload=n.onerror=null},n.src=r},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))})},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0,fabric.Image.pngCompression=1}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function( -e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.BaseFilter=fabric.util.createClass({type:"BaseFilter",toObject:function(){return{type:this.type}},toJSON:function(){return this.toObject()}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend;t.Image.filters.Brightness=t.util.createClass(t.Image.filters.BaseFilter,{type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;s=0&&N=0&&C-1?e.channel:0},applyTo:function(e){if(!this.mask)return;var n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=r.data,s=this.mask.getElement(),o=t.util.createCanvasElement(),u=this.channel,a,f=r.width*r.height*4;o.width=s.width,o.height=s.height,o.getContext("2d").drawImage(s,0,0,s.width,s.height);var l=o.getContext("2d").getImageData(0,0,s.width,s.height),c=l.data;for(a=0;ao&&f>o&&l>o&&u(a-f)'},_render:function(e){var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaNative:function(e){this.transform(e,t.isLikelyNode),this._setTextStyles(e);var n=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this.clipTo&&t.util.clipContext(this,e),this._renderTextBackground(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),e.save(),this._setShadow(e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this._removeShadow(e),e.restore(),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this.clipTo&&e.restore(),this._setBoundaries(e,n),this._totalLineHeight=0},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_drawChars:function(e,t,n,r,i){t[e](n,r,i)},_drawTextLine:function(e,t,n,r,i,s){i-=this.fontSize/4;if(this.textAlign!=="justify"){this._drawChars(e,t,n,r,i,s);return}var o=t.measureText(n).width,u=this.width;if(u>o){var a=n.split(/\s+/),f=t.measureText(n.replace(/\s+/g,"")).width,l=u-f,c=a.length-1,h=l/c,p=0;for(var d=0,v=a.length;d-1&&i(this.fontSize*this.lineHeight),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize*this.lineHeight-this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(this.fontSize*this.lineHeight-this.fontSize)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(e,t){if(!this.visible)return;e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){var t=n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textAlign:this.textAlign,path:this.path,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=[],n=this.text.split(/\r?\n/),r=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,s=-(this.width/2),o=this.useNative?this.fontSize-1:this.height/2-n.length*this.fontSize-this._totalLineHeight,u=this._getSVGTextAndBg(r,s,n),a=this._getSVGShadows(r,n);return o+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,t.push('',u.textBgRects.join(""),"',a.join(""),u.textSpans.join(""),"",""),e?e(t.join("")):t.join("")},_getSVGShadows:function(e,n){var r=[],s,o,u=1;if(!this.shadow||!this._boundaries)return r;for(s=0,o=n.length;s",t.util.string.escapeXml(n[s]),""),u=1}else u++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;this.backgroundColor&&this._boundaries&&o.push("');for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.textBackgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Text.prototype,{_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.shadow&&this.shadow.toString(),textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,n=null,this.setCoords()},_initDummyElementForCufon:function(){var e=fabric.document.createElement("pre"),t=fabric.document.createElement("div");return t.appendChild(e),typeof G_vmlCanvasManager=="undefined"?e.innerHTML=this.text:e.innerText=this.text.replace(/\r?\n/gi,"\r"),e.style.fontSize=this.fontSize+"px",e.style.letterSpacing="normal",e}}),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs");n.readFile(e,function(e,n){if(e)throw fabric.log(e),e;t(n)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&(e instanceof Buffer||e.indexOf("data")===0)?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e&&request(e,"binary",r)},fabric.loadSVGFromURL=function(e,t,n){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t,n)}):request(e,"",function(e){fabric.loadSVGFromString(e,t,n)})},fabric.loadSVGFromString=function(e,t,n){var r=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(r.documentElement,function(e,n){t&&t(e,n)},n)},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e,function(e){r.filters=e||[],t&&t(r)})})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file +e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.BaseFilter=fabric.util.createClass({type:"BaseFilter",toObject:function(){return{type:this.type}},toJSON:function(){return this.toObject()}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend;t.Image.filters.Brightness=t.util.createClass(t.Image.filters.BaseFilter,{type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;s=0&&N=0&&C-1?e.channel:0},applyTo:function(e){if(!this.mask)return;var n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=r.data,s=this.mask.getElement(),o=t.util.createCanvasElement(),u=this.channel,a,f=r.width*r.height*4;o.width=s.width,o.height=s.height,o.getContext("2d").drawImage(s,0,0,s.width,s.height);var l=o.getContext("2d").getImageData(0,0,s.width,s.height),c=l.data;for(a=0;ao&&f>o&&l>o&&u(a-f)'},_render:function(e){var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaNative:function(e){this.transform(e,t.isLikelyNode),this._setTextStyles(e);var n=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this.clipTo&&t.util.clipContext(this,e),this._renderTextBackground(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),e.save(),this._setShadow(e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this._removeShadow(e),e.restore(),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this.clipTo&&e.restore(),this._setBoundaries(e,n),this._totalLineHeight=0},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_drawChars:function(e,t,n,r,i){t[e](n,r,i)},_drawTextLine:function(e,t,n,r,i,s){i-=this.fontSize/4;if(this.textAlign!=="justify"){this._drawChars(e,t,n,r,i,s);return}var o=t.measureText(n).width,u=this.width;if(u>o){var a=n.split(/\s+/),f=t.measureText(n.replace(/\s+/g,"")).width,l=u-f,c=a.length-1,h=l/c,p=0;for(var d=0,v=a.length;d-1&&i(this.fontSize*this.lineHeight),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize*this.lineHeight-this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(this.fontSize*this.lineHeight-this.fontSize)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(e,t){if(!this.visible)return;e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){var t=n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textAlign:this.textAlign,path:this.path,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=[],n=this.text.split(/\r?\n/),r=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,s=-(this.width/2),o=this.useNative?this.fontSize-1:this.height/2-n.length*this.fontSize-this._totalLineHeight,u=this._getSVGTextAndBg(r,s,n),a=this._getSVGShadows(r,n);return o+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,t.push('',u.textBgRects.join(""),"',a.join(""),u.textSpans.join(""),"",""),e?e(t.join("")):t.join("")},_getSVGShadows:function(e,n){var r=[],s,o,u=1;if(!this.shadow||!this._boundaries)return r;for(s=0,o=n.length;s",t.util.string.escapeXml(n[s]),""),u=1}else u++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;this.backgroundColor&&this._boundaries&&o.push("');for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.textBackgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Text.prototype,{_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.shadow&&this.shadow.toString(),textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,n=null,this.setCoords()},_initDummyElementForCufon:function(){var e=fabric.document.createElement("pre"),t=fabric.document.createElement("div");return t.appendChild(e),typeof G_vmlCanvasManager=="undefined"?e.innerHTML=this.text:e.innerText=this.text.replace(/\r?\n/gi,"\r"),e.style.fontSize=this.fontSize+"px",e.style.letterSpacing="normal",e}}),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs");n.readFile(e,function(e,n){if(e)throw fabric.log(e),e;t(n)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&(e instanceof Buffer||e.indexOf("data")===0)?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e&&request(e,"binary",r)},fabric.loadSVGFromURL=function(e,t,n){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t,n)}):request(e,"",function(e){fabric.loadSVGFromString(e,t,n)})},fabric.loadSVGFromString=function(e,t,n){var r=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(r.documentElement,function(e,n){t&&t(e,n)},n)},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e,function(e){r.filters=e||[],t&&t(r)})})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file diff --git a/dist/all.min.js.gz b/dist/all.min.js.gz index 9eab60d91c22b0a698326e80f39fc053ae2542bb..1766762a236e9f25c2b1d72bae80d8b6ede228bb 100644 GIT binary patch delta 38448 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 delta 38488 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 diff --git a/dist/all.require.js b/dist/all.require.js index 4d36faf8..dcc1e18c 100644 --- a/dist/all.require.js +++ b/dist/all.require.js @@ -1,7 +1,7 @@ /* build: `node build.js modules=ALL exclude=gestures` */ /*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "1.3.6" }; +var fabric = fabric || { version: "1.3.7" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; } @@ -18374,7 +18374,7 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Imag * @return {Number} Left offset */ _getLeftOffset: function() { - if (fabric.isLikelyNode && (this.originX === 'left' || this.originX === 'center')) { + if (fabric.isLikelyNode) { return 0; } return -this.width / 2; diff --git a/package.json b/package.json index c0c67510..885ac7a4 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "fabric", "description": "Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.", - "version": "1.3.6", + "version": "1.3.7", "author": "Juriy Zaytsev ", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "repository": "git://github.com/kangax/fabric.js", diff --git a/src/shapes/text.class.js b/src/shapes/text.class.js index a098825e..085f5b15 100644 --- a/src/shapes/text.class.js +++ b/src/shapes/text.class.js @@ -529,7 +529,7 @@ * @return {Number} Left offset */ _getLeftOffset: function() { - if (fabric.isLikelyNode && (this.originX === 'left' || this.originX === 'center')) { + if (fabric.isLikelyNode) { return 0; } return -this.width / 2;