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