From b937793759ba3ebcb803f992b81c74b7d2741621 Mon Sep 17 00:00:00 2001 From: kangax Date: Sun, 28 Jul 2013 23:41:46 +0200 Subject: [PATCH] Build distribution. Version 1.2.8 --- HEADER.js | 2 +- dist/all.js | 58 +++++++++++++++++++++++++++++---------------- dist/all.min.js | 10 ++++---- dist/all.min.js.gz | Bin 49776 -> 49789 bytes package.json | 2 +- 5 files changed, 45 insertions(+), 27 deletions(-) diff --git a/HEADER.js b/HEADER.js index ebc4fda2..7a9c40b2 100644 --- a/HEADER.js +++ b/HEADER.js @@ -1,6 +1,6 @@ /*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "1.2.7" }; +var fabric = fabric || { version: "1.2.8" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; diff --git a/dist/all.js b/dist/all.js index 67d37af2..ccd4e27a 100644 --- a/dist/all.js +++ b/dist/all.js @@ -1,7 +1,7 @@ /* build: `node build.js modules=ALL exclude=gestures` */ /*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "1.2.7" }; +var fabric = fabric || { version: "1.2.8" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; @@ -7591,10 +7591,12 @@ fabric.BaseBrush = fabric.util.createClass(/** @lends fabric.BaseBrush.prototype * Sets brush shadow styles */ setShadowStyles: function() { + if (!this.shadowColor) return; + var ctx = this.canvas.contextTop; ctx.shadowBlur = this.shadowBlur; - ctx.shadowColor = this.shadowColor || this.color; + ctx.shadowColor = this.shadowColor; ctx.shadowOffsetX = this.shadowOffsetX; ctx.shadowOffsetY = this.shadowOffsetY; }, @@ -7824,13 +7826,17 @@ fabric.BaseBrush = fabric.util.createClass(/** @lends fabric.BaseBrush.prototype path.strokeWidth = this.width; path.strokeLineCap = this.strokeLineCap; path.strokeLineJoin = this.strokeLineJoin; - path.setShadow({ - color: this.shadowColor || this.color, - blur: this.shadowBlur, - offsetX: this.shadowOffsetX, - offsetY: this.shadowOffsetY, - affectStroke: true - }); + + if (this.shadowColor) { + path.setShadow({ + color: this.shadowColor, + blur: this.shadowBlur, + offsetX: this.shadowOffsetX, + offsetY: this.shadowOffsetY, + affectStroke: true + }); + } + return path; }, @@ -7886,6 +7892,7 @@ fabric.CircleBrush = fabric.util.createClass( fabric.BaseBrush, /** @lends fabri /** * Width of a brush * @type Number + * @default */ width: 10, @@ -7901,7 +7908,6 @@ fabric.CircleBrush = fabric.util.createClass( fabric.BaseBrush, /** @lends fabri /** * Invoked on mouse down - * @param {Object} pointer */ onMouseDown: function() { this.points.length = 0; @@ -7937,14 +7943,18 @@ fabric.CircleBrush = fabric.util.createClass( fabric.BaseBrush, /** @lends fabri radius: point.radius, left: point.x, top: point.y, - fill: point.fill, - shadow: { - color: this.shadowColor || this.color, + fill: point.fill + }); + + if (this.shadowColor) { + circle.setShadow({ + color: this.shadowColor, blur: this.shadowBlur, offsetX: this.shadowOffsetX, offsetY: this.shadowOffsetY - } - }); + }); + } + this.canvas.add(circle); this.canvas.fire('path:created', { path: circle }); } @@ -7988,30 +7998,35 @@ fabric.SprayBrush = fabric.util.createClass( fabric.BaseBrush, /** @lends fabric /** * Width of a spray * @type Number + * @default */ width: 10, /** * Density of a spray (number of dots per chunk) * @type Number + * @default */ density: 20, /** * Width of spray dots * @type Number + * @default */ dotWidth: 1, /** * Width variance of spray dots * @type Number + * @default */ dotWidthVariance: 1, /** * Whether opacity of a dot should be random * @type Boolean + * @default */ randomOpacity: false, @@ -8064,14 +8079,17 @@ fabric.SprayBrush = fabric.util.createClass( fabric.BaseBrush, /** @lends fabric height: sprayChunk[j].width, left: sprayChunk[j].x + 1, top: sprayChunk[j].y + 1, - fill: this.color, - shadow: { - color: this.shadowColor || this.color, + fill: this.color + }); + + if (this.shadowColor) { + rect.setShadow({ + color: this.shadowColor, blur: this.shadowBlur, offsetX: this.shadowOffsetX, offsetY: this.shadowOffsetY - } - }); + }); + } this.canvas.add(rect); this.canvas.fire('path:created', { path: rect }); diff --git a/dist/all.min.js b/dist/all.min.js index 476c25a2..869ffbcb 100644 --- a/dist/all.min.js +++ b/dist/all.min.js @@ -1,6 +1,6 @@ -/* build: `node build.js modules=ALL exclude=gestures` *//*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"1.2.7"};typeof exports!="undefined"&&(exports.fabric=fabric),typeof document!="undefined"&&typeof window!="undefined"?(fabric.document=document,fabric.window=window):(fabric.document=require("jsdom").jsdom(""),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined";var Cufon=function(){function r(e){var t=this.face=e.face;this.glyphs=e.glyphs,this.w=e.w,this.baseSize=parseInt(t["units-per-em"],10),this.family=t["font-family"].toLowerCase(),this.weight=t["font-weight"],this.style=t["font-style"]||"normal",this.viewBox=function(){var e=t.bbox.split(/\s+/),n={minX:parseInt(e[0],10),minY:parseInt(e[1],10),maxX:parseInt(e[2],10),maxY:parseInt(e[3],10)};return n.width=n.maxX-n.minX,n.height=n.maxY-n.minY,n.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")},n}(),this.ascent=-parseInt(t.ascent,10),this.descent=-parseInt(t.descent,10),this.height=-this.ascent+this.descent}function i(){var e={},t={oblique:"italic",italic:"oblique"};this.add=function(t){(e[t.style]||(e[t.style]={}))[t.weight]=t},this.get=function(n,r){var i=e[n]||e[t[n]]||e.normal||e.italic||e.oblique;if(!i)return null;r={normal:400,bold:700}[r]||parseInt(r,10);if(i[r])return i[r];var s={1:1,99:0}[r%100],o=[],u,a;s===undefined&&(s=r>400),r==500&&(r=400);for(var f in i){f=parseInt(f,10);if(!u||fa)a=f;o.push(f)}return ra&&(r=a),o.sort(function(e,t){return(s?e>r&&t>r?et:et:e=i.length+e?r():setTimeout(arguments.callee,10)}),function(t){e?t():n.push(t)}}(),supports:function(e,t){var n=fabric.document.createElement("span").style;return n[e]===undefined?!1:(n[e]=t,n[e]===t)},textAlign:function(e,t,n,r){return t.get("textAlign")=="right"?n>0&&(e=" "+e):nk&&(k=N),A.push(N),N=0;continue}var O=t.glyphs[T[b]]||t.missingGlyph;if(!O)continue;N+=C=Number(O.w||t.w)+h}A.push(N),N=Math.max(k,N);var M=[];for(var b=A.length;b--;)M[b]=N-A[b];if(C===null)return null;d+=l.width-C,m+=l.minX;var _,D;if(f)_=u,D=u.firstChild;else{_=fabric.document.createElement("span"),_.className="cufon cufon-canvas",_.alt=n,D=fabric.document.createElement("canvas"),_.appendChild(D);if(i.printable){var P=fabric.document.createElement("span");P.className="cufon-alt",P.appendChild(fabric.document.createTextNode(n)),_.appendChild(P)}}var H=_.style,B=D.style||{},j=c.convert(l.height-p+v),F=Math.ceil(j),I=F/j;D.width=Math.ceil(c.convert(N+d-m)*I),D.height=F,p+=l.minY,B.top=Math.round(c.convert(p-t.ascent))+"px",B.left=Math.round(c.convert(m))+"px";var q=Math.ceil(c.convert(N*I)),R=q+"px",U=c.convert(t.height),z=(i.lineHeight-1)*c.convert(-t.ascent/5)*(L-1);Cufon.textOptions.width=q,Cufon.textOptions.height=U*L+z,Cufon.textOptions.lines=L,Cufon.textOptions.totalLineHeight=z,e?(H.width=R,H.height=U+"px"):(H.paddingLeft=R,H.paddingBottom=U-1+"px");var W=Cufon.textOptions.context||D.getContext("2d"),X=F/l.height;Cufon.textOptions.fontAscent=t.ascent*X,Cufon.textOptions.boundaries=null;for(var V=Cufon.textOptions.shadowOffsets,b=y.length;b--;)V[b]=[y[b][0]*X,y[b][1]*X];W.save(),W.scale(X,X),W.translate(-m-1/X*D.width/2+(Cufon.fonts[t.family].offsetLeft||0),-p-Cufon.textOptions.height/X/2+(Cufon.fonts[t.family].offsetTop||0)),W.lineWidth=t.face["underline-thickness"],W.save();var J=Cufon.getTextDecoration(i),K=i.fontStyle==="italic";W.save(),Q();if(g)for(var b=0,w=g.length;b.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}'),function(e,t,i,s,o,u,a){var f=t===null;f&&(t=o.alt);var l=e.viewBox,c=i.computedFontSize||(i.computedFontSize=new Cufon.CSS.Size(n(u,i.get("fontSize"))+"px",e.baseSize)),h=i.computedLSpacing;h==undefined&&(h=i.get("letterSpacing"),i.computedLSpacing=h=h=="normal"?0:~~c.convertFrom(r(u,h)));var p,d;if(f)p=o,d=o.firstChild;else{p=fabric.document.createElement("span"),p.className="cufon cufon-vml",p.alt=t,d=fabric.document.createElement("span"),d.className="cufon-vml-canvas",p.appendChild(d);if(s.printable){var v=fabric.document.createElement("span");v.className="cufon-alt",v.appendChild(fabric.document.createTextNode(t)),p.appendChild(v)}a||p.appendChild(fabric.document.createElement("cvml:shape"))}var m=p.style,g=d.style,y=c.convert(l.height),b=Math.ceil(y),w=b/y,E=l.minX,S=l.minY;g.height=b,g.top=Math.round(c.convert(S-e.ascent)),g.left=Math.round(c.convert(E)),m.height=c.convert(e.height)+"px";var x=Cufon.getTextDecoration(s),T=i.get("color"),N=Cufon.CSS.textTransform(t,i).split(""),C=0,k=0,L=null,A,O,M=s.textShadow;for(var _=0,D=0,P=N.length;_-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)},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){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(e))]}function c(e,t,n){if(e){var r=fabric.util.createImage();r.onload=function(){t&&t.call(n,r),r=r.onload=null},r.src=e}else t&&t.call(n,e)}function h(e,t){function n(){++i===s&&t&&t(r)}var r=[],i=0,s=e.length;e.forEach(function(e,t){if(!e.type)return;var i=fabric.util.getKlass(e.type);i.async?i.fromObject(e,function(e,i){i||(r[t]=e),n()}):(r[t]=i.fromObject(e),n())})}function p(e,t,n){var r;return e.length>1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r}function d(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 m(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function g(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function y(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 b(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function w(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 E(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]}function S(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=k(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,T=(E-b)*(E-b)+(S-w)*(S-w),k=1/T-.25;k<0&&(k=0);var L=Math.sqrt(k);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){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(e))]}function c(e,t,n){if(e){var r=fabric.util.createImage();r.onload=function(){t&&t.call(n,r),r=r.onload=null},r.src=e}else t&&t.call(n,e)}function h(e,t){function n(){++i===s&&t&&t(r)}var r=[],i=0,s=e.length;e.forEach(function(e,t){if(!e.type)return;var i=fabric.util.getKlass(e.type);i.async?i.fromObject(e,function(e,i){i||(r[t]=e),n()}):(r[t]=i.fromObject(e),n())})}function p(e,t,n){var r;return e.length>1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r}function d(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 m(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function g(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function y(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 b(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function w(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 E(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]}function S(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=k(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,T=(E-b)*(E-b)+(S-w)*(S-w),k=1/T-.25;k<0&&(k=0);var L=Math.sqrt(k);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)}}),fabric.Shadow=fabric.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,initialize:function(e){for(var t in e)this[t]=e[t];this.id=fabric.Object.__uid++},toSVG:function(e){var t="SourceAlpha";if(e.fill===this.color||e.stroke===this.color)t="SourceGraphic";return''+''+''+""+""+''+""+""},toObject:function(){return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY}}}),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=function(e,t){t||(t={}),this._initStatic(e,t),fabric.StaticCanvas.activeInstance=this},e(fabric.StaticCanvas.prototype,fabric.Observable),e(fabric.StaticCanvas.prototype,fabric.Collection),e(fabric.StaticCanvas.prototype,fabric.DataURLExporter),e(fabric.StaticCanvas.prototype,{backgroundColor:"",backgroundImage:"",backgroundImageOpacity:1,backgroundImageStretch:!0,overlayImage:"",overlayImageLeft:0 -,overlayImageTop:0,includeDefaultValues:!0,stateful:!0,renderOnAddition:!0,clipTo:null,controlsAboveOverlay:!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,{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,s(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 n=this._currentTransform,s=this._offset;if(n.target.get("lockRotation"))return;var o=i(n.ey-n.top-s.top,n.ex-n.left-s.left),u=i(t-n.top-s.top,e-n.left-s.left),a=r(u-o+n.theta);a<0&&(a=360+a),n.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,i=s(n),o=s(r);e.fillStyle=this.selectionColor,e.fillRect(t.ex-(n>0?0:-n),t.ey-(r>0?0:-r),i,o),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var u=t.ex+a-(n>0?0:i),f=t.ey+a-(r>0?0:o);e.beginPath(),fabric.util.drawDashedLine(e,u,f,u+i,f,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f+o-1,u+i,f+o-1,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f,u,f+o,this.selectionDashArray),fabric.util.drawDashedLine(e,u+i-1,f,u+i-1,f+o,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+a-(n>0?0:i),t.ey+a-(r>0?0:o),i,o)},_findSelectedObjects:function(e){var t=[],n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,s=r+this._groupSelector.top,a,f=new fabric.Point(o(n,i),o(r,s)),l=new fabric.Point(u(n,i),u(r,s)),c=n===i&&r===s;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){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.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,t){var n=e==="scaleX"||e==="scaleY";n&&(t=this._constrainScale(t));if(e==="scaleX"&&t<0)this.flipX=!this.flipX,t*=-1;else if(e==="scaleY"&&t<0)this.flipY=!this.flipY,t*=-1;else if(e==="width"||e==="height")this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2);return this[e]=t,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,{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[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>1?this.strokeWidth:0;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),~~(u+n+r*this.scaleY));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>1?this.strokeWidth/2:0,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);var t=this.get("radius")*2;this.set("width",t).set("height",t)},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,textShadow:!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.setElement(this._originalImage),e&&e();return}var t=this._originalImage,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(),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){e.filters&&e.filters.length&&(this.filters=e.filters.map(function(e){return e&&fabric.Image.filters[e.type].fromObject(e)}))},_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;e.width&&(n.width=e.width),e.height&&(n.height=e.height),n.onload=function(){fabric.Image.prototype._initFilters.call(e,e);var r=new fabric.Image(n,e);t&&t(r),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}(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.Brightness=fabric.util.createClass({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&&Co&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},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","textShadow","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:"",textShadow:"",textAlign:"left",fontStyle:"",lineHeight:1.3,backgroundColor:"",textBackgroundColor:"",path:null,useNative:!0,stateProperties:o,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._setTextShadow(e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this.textShadow&&e.restore(),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,this.setCoords()},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_setTextShadow:function(e){if(!this.textShadow)return;var t=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/,n=this.textShadow,r=t.exec(this.textShadow),i=n.replace(t,"");e.save(),e.shadowColor=i,e.shadowOffsetX=parseInt(r[1],10),e.shadowOffsetY=parseInt(r[2],10),e.shadowBlur=parseInt(r[3],10),this._shadows=[{blur:e.shadowBlur,color:e.shadowColor,offX:e.shadowOffsetX,offY:e.shadowOffsetY}],this._shadowOffsets=[[parseInt(e.shadowOffsetX,10),parseInt(e.shadowOffsetY,10)]]},_drawTextLine:function(e,t,n,r,i){if(this.textAlign!=="justify"){t[e](n,r,i);return}var s=t.measureText(n).width,o=this.width;if(o>s){var u=n.split(/\s+/),a=t.measureText(n.replace(/\s+/g,"")).width,f=o-a,l=u.length-1,c=f/l,h=0;for(var p=0,d=u.length;p-1&&i(this.fontSize),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(0)},_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,textShadow:this.textShadow,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,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;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},getText:function(){return this.text},_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.textShadow,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,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],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"),r=n.createReadStream(e),i="";r.on("data",function(e){i+=e}),r.on("end",function(){t(i)})}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){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t)}):request(e,"",function(e){fabric.loadSVGFromString(e,t)})},fabric.loadSVGFromString=function(e,t){var n=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(n.documentElement,function(e,n){t(e,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),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 +,overlayImageTop:0,includeDefaultValues:!0,stateful:!0,renderOnAddition:!0,clipTo:null,controlsAboveOverlay:!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,{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,s(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 n=this._currentTransform,s=this._offset;if(n.target.get("lockRotation"))return;var o=i(n.ey-n.top-s.top,n.ex-n.left-s.left),u=i(t-n.top-s.top,e-n.left-s.left),a=r(u-o+n.theta);a<0&&(a=360+a),n.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,i=s(n),o=s(r);e.fillStyle=this.selectionColor,e.fillRect(t.ex-(n>0?0:-n),t.ey-(r>0?0:-r),i,o),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var u=t.ex+a-(n>0?0:i),f=t.ey+a-(r>0?0:o);e.beginPath(),fabric.util.drawDashedLine(e,u,f,u+i,f,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f+o-1,u+i,f+o-1,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f,u,f+o,this.selectionDashArray),fabric.util.drawDashedLine(e,u+i-1,f,u+i-1,f+o,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+a-(n>0?0:i),t.ey+a-(r>0?0:o),i,o)},_findSelectedObjects:function(e){var t=[],n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,s=r+this._groupSelector.top,a,f=new fabric.Point(o(n,i),o(r,s)),l=new fabric.Point(u(n,i),u(r,s)),c=n===i&&r===s;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){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.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,t){var n=e==="scaleX"||e==="scaleY";n&&(t=this._constrainScale(t));if(e==="scaleX"&&t<0)this.flipX=!this.flipX,t*=-1;else if(e==="scaleY"&&t<0)this.flipY=!this.flipY,t*=-1;else if(e==="width"||e==="height")this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2);return this[e]=t,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,{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[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>1?this.strokeWidth:0;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),~~(u+n+r*this.scaleY));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>1?this.strokeWidth/2:0,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);var t=this.get("radius")*2;this.set("width",t).set("height",t)},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,textShadow:!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.setElement(this._originalImage),e&&e();return}var t=this._originalImage,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(),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){e.filters&&e.filters.length&&(this.filters=e.filters.map(function(e){return e&&fabric.Image.filters[e.type].fromObject(e)}))},_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;e.width&&(n.width=e.width),e.height&&(n.height=e.height),n.onload=function(){fabric.Image.prototype._initFilters.call(e,e);var r=new fabric.Image(n,e);t&&t(r),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}(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.Brightness=fabric.util.createClass({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&&Co&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},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","textShadow","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:"",textShadow:"",textAlign:"left",fontStyle:"",lineHeight:1.3,backgroundColor:"",textBackgroundColor:"",path:null,useNative:!0,stateProperties:o,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._setTextShadow(e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this.textShadow&&e.restore(),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,this.setCoords()},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_setTextShadow:function(e){if(!this.textShadow)return;var t=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/,n=this.textShadow,r=t.exec(this.textShadow),i=n.replace(t,"");e.save(),e.shadowColor=i,e.shadowOffsetX=parseInt(r[1],10),e.shadowOffsetY=parseInt(r[2],10),e.shadowBlur=parseInt(r[3],10),this._shadows=[{blur:e.shadowBlur,color:e.shadowColor,offX:e.shadowOffsetX,offY:e.shadowOffsetY}],this._shadowOffsets=[[parseInt(e.shadowOffsetX,10),parseInt(e.shadowOffsetY,10)]]},_drawTextLine:function(e,t,n,r,i){if(this.textAlign!=="justify"){t[e](n,r,i);return}var s=t.measureText(n).width,o=this.width;if(o>s){var u=n.split(/\s+/),a=t.measureText(n.replace(/\s+/g,"")).width,f=o-a,l=u.length-1,c=f/l,h=0;for(var p=0,d=u.length;p-1&&i(this.fontSize),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(0)},_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,textShadow:this.textShadow,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,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;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},getText:function(){return this.text},_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.textShadow,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,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],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"),r=n.createReadStream(e),i="";r.on("data",function(e){i+=e}),r.on("end",function(){t(i)})}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){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t)}):request(e,"",function(e){fabric.loadSVGFromString(e,t)})},fabric.loadSVGFromString=function(e,t){var n=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(n.documentElement,function(e,n){t(e,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),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 d91f0f2bb6dc8e963724c87977746e05a524828d..5812f4b9cd20ec733de04110f95fc8c724106861 100644 GIT binary patch delta 36997 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 delta 37041 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 z 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", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "repository": "git://github.com/kangax/fabric.js",