From 95c97f544783cc4af28b6c57076f94e1f332b33c Mon Sep 17 00:00:00 2001 From: kangax Date: Mon, 9 Sep 2013 16:39:39 +0200 Subject: [PATCH] [BACK_INCOMPAT] Object rotation now happens around originX/originY point UNLESS `centerTransform=true`. Version 1.2.12. Closes #439 --- HEADER.js | 2 +- component.json | 2 +- dist/all.js | 47 +++++++++++++++++++++--------- dist/all.min.js | 10 +++---- dist/all.min.js.gz | Bin 50392 -> 50443 bytes dist/all.require.js | 47 +++++++++++++++++++++--------- package.json | 2 +- src/canvas.class.js | 10 +++---- src/mixins/canvas_events.mixin.js | 35 +++++++++++++++++----- 9 files changed, 109 insertions(+), 46 deletions(-) diff --git a/HEADER.js b/HEADER.js index db79d3e8..ccf9b087 100644 --- a/HEADER.js +++ b/HEADER.js @@ -1,7 +1,7 @@ /*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */ var exports = exports || {}; -var fabric = fabric || { version: "1.2.11" }; +var fabric = fabric || { version: "1.2.12" }; // make sure exports.fabric is always defined when used as 'global' later scopes exports.fabric = fabric; diff --git a/component.json b/component.json index a1ed3af1..a6b844f5 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.2.11", + "version": "1.2.12", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "dependencies": {}, "development": {}, diff --git a/dist/all.js b/dist/all.js index 635ce517..1e6812ca 100644 --- a/dist/all.js +++ b/dist/all.js @@ -2,7 +2,7 @@ /*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */ var exports = exports || {}; -var fabric = fabric || { version: "1.2.11" }; +var fabric = fabric || { version: "1.2.12" }; // make sure exports.fabric is always defined when used as 'global' later scopes exports.fabric = fabric; @@ -8684,7 +8684,7 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab : 'scale'; } - var originX = "center", originY = "center"; + var originX = target.originX, originY = target.originY; if (corner === 'ml' || corner === 'tl' || corner === 'bl') { originX = "right"; @@ -8700,10 +8700,10 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab originY = "top"; } - if (corner === 'mtr') { - originX = 'center'; - originY = 'center'; - } + // if (corner === 'mtr') { + // originX = 'center'; + // originY = 'center'; + // } // var center = target.getCenterPoint(); this._currentTransform = { @@ -9551,9 +9551,21 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab target.fire('modified'); } - if (this._previousOriginX) { - this._currentTransform.target.adjustPosition(this._previousOriginX); + if (this._previousOriginX && this._previousOriginY) { + + var originPoint = target.translateToOriginPoint( + target.getCenterPoint(), + this._previousOriginX, + this._previousOriginY); + + target.originX = this._previousOriginX; + target.originY = this._previousOriginY; + + target.left = originPoint.x; + target.top = originPoint.y; + this._previousOriginX = null; + this._previousOriginY = null; } } @@ -9654,12 +9666,21 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab this.fire('mouse:down', { target: target, e: e }); target && target.fire('mousedown', { e: e }); - // center origin when rotating - if (corner === 'mtr') { + if (corner === 'mtr' && target.centerTransform) { + this._previousOriginX = this._currentTransform.target.originX; - this._currentTransform.target.adjustPosition('center'); - this._currentTransform.left = this._currentTransform.target.left; - this._currentTransform.top = this._currentTransform.target.top; + this._previousOriginY = this._currentTransform.target.originY; + + var center = target.getCenterPoint(); + + target.originX = 'center'; + target.originY = 'center'; + + target.left = center.x; + target.top = center.y; + + this._currentTransform.left = target.left; + this._currentTransform.top = target.top; } }, diff --git a/dist/all.min.js b/dist/all.min.js index 605cc3c3..54a01da1 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 exports=exports||{},fabric=fabric||{version:"1.2.11"};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)},toGrayscale:function(){return this.forEachObject(function(e){e.toGrayscale()})}},function(){function n(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e}function r(e,t){return Math.floor(Math.random()*(t-e+1))+e}function s(e){return e*i}function o(e){return e/i}function u(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 a(e,t){return parseFloat(Number(e).toFixed(t))}function f(){return!1}function l(e,t){return c(t)[fabric.util.string.camelize(fabric.util.string.capitalize(e))]}function c(e){if(!e)return fabric;var t=e.split("."),n=t.length,r=fabric.window;for(var i=0;i1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r}function v(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),n[d?"lineTo":"moveTo"](r,0),d=!d;n.restore()}function g(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function y(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function b(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 w(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function E(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 S(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]}function x(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=L(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),N=1/x-.25;N<0&&(N=0);var L=Math.sqrt(N);s===i&&(L=-L);var A=.5*(b+E)-L*(S-w),O=.5*(w+S)+L*(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)},toGrayscale:function(){return this.forEachObject(function(e){e.toGrayscale()})}},function(){function n(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e}function r(e,t){return Math.floor(Math.random()*(t-e+1))+e}function s(e){return e*i}function o(e){return e/i}function u(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 a(e,t){return parseFloat(Number(e).toFixed(t))}function f(){return!1}function l(e,t){return c(t)[fabric.util.string.camelize(fabric.util.string.capitalize(e))]}function c(e){if(!e)return fabric;var t=e.split("."),n=t.length,r=fabric.window;for(var i=0;i1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r}function v(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),n[d?"lineTo":"moveTo"](r,0),d=!d;n.restore()}function g(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function y(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function b(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 w(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function E(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 S(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]}function x(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=L(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),N=1/x-.25;N<0&&(N=0);var L=Math.sqrt(N);s===i&&(L=-L);var A=.5*(b+E)-L*(S-w),O=.5*(w+S)+L*(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;o(a(l,f,c,r));if(s>i||u()){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'),t.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),""),this.backgroundColor&&this.backgroundColor.source&&t.push('"),this.backgroundImage&&t.push(''),this.overlayImage&&t.push('');var n=this.getActiveGroup();n&&this.discardActiveGroup();for(var r=0,i=this.getObjects(),s=i.length;r"),t.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"}',toGrayscale:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;a0&&(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].selectable&&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.overlayFill?e.fillStyle=this.overlayFill: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();n.width=this.getBoundingRectWidth(),n.height=this.getBoundingRectHeight(),t.util.wrapElement(n,"div");var r=new t.Canvas(n);e.format==="jpeg"&&(r.backgroundColor="#fff");var i={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set({active:!1,left:n.width/2,top:n.height/2}),r.add(this);var s=r.toDataURL(e);return this.set(i).setCoords(),r.dispose(),r=null,s},isType:function(e){return this.type===e},toGrayscale:function(){var e=this.get("fill");return e&&this.set("overlayFill",(new t.Color(e)).toGrayscale().toRgb()),this},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()})}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))},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(){return this.translateToCenterPoint(new fabric.Point(this.left,this.top),this.originX,this.originY)},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(){var t=e(this.angle),n=this.getWidth()/2,r=Math.cos(t)*n,i=Math.sin(t)*n,s=this.left,o=this.top;if(this.originX==="center"||this.originX==="right")s-=r;if(this.originY==="center"||this.originY==="bottom")o-=i;return{x:s,y:o}}})}(),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.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(){var e=this._createBaseSVGMarkup();return e.push("'),e.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(){var e=this._createBaseSVGMarkup(),t=this.width/2,n=this.height/2,r=[-t+" "+n,"0 "+ -n,t+" "+n].join(",");return e.push("'),e.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(){var e=this._createBaseSVGMarkup();return e.push("'),e.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 r(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}t.Rect=t.util.createClass(t.Object,{type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(e){e=e||{},this._initStateProperties(),this.callSuper("initialize",e),this._initRxRy(),this.x=e.x||0,this.y=e.y||0},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_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){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")})},toSVG:function(){var e=this._createBaseSVGMarkup();return e.push("'),e.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,i){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=r(s);var o=new t.Rect(n(i?t.util.object.clone(i):{},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(){var e=[],t=this._createBaseSVGMarkup();for(var r=0,i=this.points.length;r'),t.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'),t.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(){var e=[],t=this._createBaseSVGMarkup();for(var n=0,r=this.path.length;n',"",""),t.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 n=0,r=e.length;n"),t.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)},toGrayscale:function(){var e=this.paths.length;while(e--)this.paths[e].toGrayscale();return this},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._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'+e.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 t=this.fill;this.fill=null,e.push("'),this.fill=t}return e.push(""),e.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)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toObject:function(){return n(this.callSuper("toObject"),{color:this.color})}}),t.Image.filters.Tint.fromObject=function(e){return new t.Image.filters.Tint(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.object.clone,i=t.util.toFixed,s=t.StaticCanvas.supports("setLineDash");if(t.Text){t.warn("fabric.Text is already defined");return}var o=t.Object.prototype.stateProperties.concat();o.push("fontFamily","fontWeight","fontSize","path","text","textDecoration","textAlign","fontStyle","lineHeight","backgroundColor","textBackgroundColor","useNative"),t.Text=t.util.createClass(t.Object,{_dimensionAffectingProps:{fontSize:!0,fontWeight:!0,fontFamily:!0,textDecoration:!0,fontStyle:!0,lineHeight:!0,stroke:!0,strokeWidth:!0,text:!0},type:"text",fontSize:40,fontWeight:"normal",fontFamily:"Times New Roman",textDecoration:"",textAlign:"left",fontStyle:"",lineHeight:1.3,backgroundColor:"",textBackgroundColor:"",path:null,useNative:!0,stateProperties:o,stroke:null,shadow:null,initialize:function(e,t){t=t||{},this.text=e,this.__skipDimension=!0,this.setOptions(t),this.__skipDimension=!1,this._initDimensions(),this.setCoords()},_initDimensions:function(){if(this.__skipDimension)return;var e=t.util.createCanvasElement();this._render(e.getContext("2d"))},toString:function(){return"#'},_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){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-s),this.textDecoration.indexOf("overline")>-1&&i(s)},_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){return 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,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].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()+'"'},setColor:function(e){return this.set("fill",e),this},_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 +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'),t.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),""),this.backgroundColor&&this.backgroundColor.source&&t.push('"),this.backgroundImage&&t.push(''),this.overlayImage&&t.push('');var n=this.getActiveGroup();n&&this.discardActiveGroup();for(var r=0,i=this.getObjects(),s=i.length;r"),t.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"}',toGrayscale:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;a0&&(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].selectable&&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.overlayFill?e.fillStyle=this.overlayFill: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();n.width=this.getBoundingRectWidth(),n.height=this.getBoundingRectHeight(),t.util.wrapElement(n,"div");var r=new t.Canvas(n);e.format==="jpeg"&&(r.backgroundColor="#fff");var i={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set({active:!1,left:n.width/2,top:n.height/2}),r.add(this);var s=r.toDataURL(e);return this.set(i).setCoords(),r.dispose(),r=null,s},isType:function(e){return this.type===e},toGrayscale:function(){var e=this.get("fill");return e&&this.set("overlayFill",(new t.Color(e)).toGrayscale().toRgb()),this},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()})}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))},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(){return this.translateToCenterPoint(new fabric.Point(this.left,this.top),this.originX,this.originY)},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(){var t=e(this.angle),n=this.getWidth()/2,r=Math.cos(t)*n,i=Math.sin(t)*n,s=this.left,o=this.top;if(this.originX==="center"||this.originX==="right")s-=r;if(this.originY==="center"||this.originY==="bottom")o-=i;return{x:s,y:o}}})}(),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.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(){var e=this._createBaseSVGMarkup();return e.push("'),e.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(){var e=this._createBaseSVGMarkup(),t=this.width/2,n=this.height/2,r=[-t+" "+n,"0 "+ -n,t+" "+n].join(",");return e.push("'),e.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(){var e=this._createBaseSVGMarkup();return e.push("'),e.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 r(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}t.Rect=t.util.createClass(t.Object,{type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(e){e=e||{},this._initStateProperties(),this.callSuper("initialize",e),this._initRxRy(),this.x=e.x||0,this.y=e.y||0},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_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){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")})},toSVG:function(){var e=this._createBaseSVGMarkup();return e.push("'),e.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,i){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=r(s);var o=new t.Rect(n(i?t.util.object.clone(i):{},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(){var e=[],t=this._createBaseSVGMarkup();for(var r=0,i=this.points.length;r'),t.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'),t.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(){var e=[],t=this._createBaseSVGMarkup();for(var n=0,r=this.path.length;n',"",""),t.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 n=0,r=e.length;n"),t.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)},toGrayscale:function(){var e=this.paths.length;while(e--)this.paths[e].toGrayscale();return this},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._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'+e.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 t=this.fill;this.fill=null,e.push("'),this.fill=t}return e.push(""),e.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)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toObject:function(){return n(this.callSuper("toObject"),{color:this.color})}}),t.Image.filters.Tint.fromObject=function(e){return new t.Image.filters.Tint(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.object.clone,i=t.util.toFixed,s=t.StaticCanvas.supports("setLineDash");if(t.Text){t.warn("fabric.Text is already defined");return}var o=t.Object.prototype.stateProperties.concat();o.push("fontFamily","fontWeight","fontSize","path","text","textDecoration","textAlign","fontStyle","lineHeight","backgroundColor","textBackgroundColor","useNative"),t.Text=t.util.createClass(t.Object,{_dimensionAffectingProps:{fontSize:!0,fontWeight:!0,fontFamily:!0,textDecoration:!0,fontStyle:!0,lineHeight:!0,stroke:!0,strokeWidth:!0,text:!0},type:"text",fontSize:40,fontWeight:"normal",fontFamily:"Times New Roman",textDecoration:"",textAlign:"left",fontStyle:"",lineHeight:1.3,backgroundColor:"",textBackgroundColor:"",path:null,useNative:!0,stateProperties:o,stroke:null,shadow:null,initialize:function(e,t){t=t||{},this.text=e,this.__skipDimension=!0,this.setOptions(t),this.__skipDimension=!1,this._initDimensions(),this.setCoords()},_initDimensions:function(){if(this.__skipDimension)return;var e=t.util.createCanvasElement();this._render(e.getContext("2d"))},toString:function(){return"#'},_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){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-s),this.textDecoration.indexOf("overline")>-1&&i(s)},_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){return 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,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].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()+'"'},setColor:function(e){return this.set("fill",e),this},_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 40bf0310a74e7d8c08f7a1c187cba94c66db7591..67e46e76988f59c3b35e5f821f064f03381940c6 100644 GIT binary patch delta 47778 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 delta 47739 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 ?xPqsVc((Nj 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", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "repository": "git://github.com/kangax/fabric.js", diff --git a/src/canvas.class.js b/src/canvas.class.js index 01f26f74..cf8fa196 100644 --- a/src/canvas.class.js +++ b/src/canvas.class.js @@ -339,7 +339,7 @@ : 'scale'; } - var originX = "center", originY = "center"; + var originX = target.originX, originY = target.originY; if (corner === 'ml' || corner === 'tl' || corner === 'bl') { originX = "right"; @@ -355,10 +355,10 @@ originY = "top"; } - if (corner === 'mtr') { - originX = 'center'; - originY = 'center'; - } + // if (corner === 'mtr') { + // originX = 'center'; + // originY = 'center'; + // } // var center = target.getCenterPoint(); this._currentTransform = { diff --git a/src/mixins/canvas_events.mixin.js b/src/mixins/canvas_events.mixin.js index b0e046da..47ab3290 100644 --- a/src/mixins/canvas_events.mixin.js +++ b/src/mixins/canvas_events.mixin.js @@ -147,9 +147,21 @@ target.fire('modified'); } - if (this._previousOriginX) { - this._currentTransform.target.adjustPosition(this._previousOriginX); + if (this._previousOriginX && this._previousOriginY) { + + var originPoint = target.translateToOriginPoint( + target.getCenterPoint(), + this._previousOriginX, + this._previousOriginY); + + target.originX = this._previousOriginX; + target.originY = this._previousOriginY; + + target.left = originPoint.x; + target.top = originPoint.y; + this._previousOriginX = null; + this._previousOriginY = null; } } @@ -250,12 +262,21 @@ this.fire('mouse:down', { target: target, e: e }); target && target.fire('mousedown', { e: e }); - // center origin when rotating - if (corner === 'mtr') { + if (corner === 'mtr' && target.centerTransform) { + this._previousOriginX = this._currentTransform.target.originX; - this._currentTransform.target.adjustPosition('center'); - this._currentTransform.left = this._currentTransform.target.left; - this._currentTransform.top = this._currentTransform.target.top; + this._previousOriginY = this._currentTransform.target.originY; + + var center = target.getCenterPoint(); + + target.originX = 'center'; + target.originY = 'center'; + + target.left = center.x; + target.top = center.y; + + this._currentTransform.left = target.left; + this._currentTransform.top = target.top; } },