From 5dc3bcff6d2a0e5dbd926949a868c861fad26118 Mon Sep 17 00:00:00 2001 From: kangax Date: Tue, 24 Sep 2013 13:25:26 +0200 Subject: [PATCH] Build distribution. Version 1.3.2 --- HEADER.js | 2 +- component.json | 2 +- dist/all.js | 12 +++++++----- dist/all.min.js | 12 ++++++------ dist/all.min.js.gz | Bin 50854 -> 50834 bytes dist/all.require.js | 12 +++++++----- package.json | 2 +- 7 files changed, 23 insertions(+), 19 deletions(-) diff --git a/HEADER.js b/HEADER.js index 46c7037d..12c30a41 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.1" }; +var fabric = fabric || { version: "1.3.2" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; } diff --git a/component.json b/component.json index 8343e438..48f16b22 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.1", + "version": "1.3.2", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "dependencies": {}, "development": {}, diff --git a/dist/all.js b/dist/all.js index acddcc8c..87f14ff3 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.1" }; +var fabric = fabric || { version: "1.3.2" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; } @@ -2022,7 +2022,7 @@ fabric.Collection = { }; -(function() { +(function(global) { var sqrt = Math.sqrt, atan2 = Math.atan2; @@ -2136,7 +2136,9 @@ fabric.Collection = { * @return {Object} klass "Class" */ function getKlass(type, namespace) { - return resolveNamespace(namespace)[fabric.util.string.camelize(fabric.util.string.capitalize(type))]; + // capitalize first letter only + type = fabric.util.string.camelize(type.charAt(0).toUpperCase() + type.slice(1)); + return resolveNamespace(namespace)[type]; } /** @@ -2150,7 +2152,7 @@ fabric.Collection = { var parts = namespace.split('.'), len = parts.length, - obj = fabric.window; + obj = global || fabric.window; for (var i = 0; i < len; ++i) { obj = obj[parts[i]]; @@ -2557,7 +2559,7 @@ fabric.Collection = { fabric.util.getFunctionBody = getFunctionBody; fabric.util.drawArc = drawArc; -})(); +})(typeof exports !== 'undefined' ? exports : this); (function() { diff --git a/dist/all.min.js b/dist/all.min.js index 7c52492f..67880dfc 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.1"};typeof exports!="undefined"&&(exports.fabric=fabric),typeof document!="undefined"&&typeof window!="undefined"?(fabric.document=document,fabric.window=window):(fabric.document=require("jsdom").jsdom(""),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined";var Cufon=function(){function r(e){var t=this.face=e.face;this.glyphs=e.glyphs,this.w=e.w,this.baseSize=parseInt(t["units-per-em"],10),this.family=t["font-family"].toLowerCase(),this.weight=t["font-weight"],this.style=t["font-style"]||"normal",this.viewBox=function(){var e=t.bbox.split(/\s+/),n={minX:parseInt(e[0],10),minY:parseInt(e[1],10),maxX:parseInt(e[2],10),maxY:parseInt(e[3],10)};return n.width=n.maxX-n.minX,n.height=n.maxY-n.minY,n.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")},n}(),this.ascent=-parseInt(t.ascent,10),this.descent=-parseInt(t.descent,10),this.height=-this.ascent+this.descent}function i(){var e={},t={oblique:"italic",italic:"oblique"};this.add=function(t){(e[t.style]||(e[t.style]={}))[t.weight]=t},this.get=function(n,r){var i=e[n]||e[t[n]]||e.normal||e.italic||e.oblique;if(!i)return null;r={normal:400,bold:700}[r]||parseInt(r,10);if(i[r])return i[r];var s={1:1,99:0}[r%100],o=[],u,a;s===undefined&&(s=r>400),r==500&&(r=400);for(var f in i){f=parseInt(f,10);if(!u||fa)a=f;o.push(f)}return ra&&(r=a),o.sort(function(e,t){return(s?e>r&&t>r?et:et:e=i.length+e?r():setTimeout(arguments.callee,10)}),function(t){e?t():n.push(t)}}(),supports:function(e,t){var n=fabric.document.createElement("span").style;return n[e]===undefined?!1:(n[e]=t,n[e]===t)},textAlign:function(e,t,n,r){return t.get("textAlign")=="right"?n>0&&(e=" "+e):nk&&(k=N),A.push(N),N=0;continue}var O=t.glyphs[T[b]]||t.missingGlyph;if(!O)continue;N+=C=Number(O.w||t.w)+h}A.push(N),N=Math.max(k,N);var M=[];for(var b=A.length;b--;)M[b]=N-A[b];if(C===null)return null;d+=l.width-C,m+=l.minX;var _,D;if(f)_=u,D=u.firstChild;else{_=fabric.document.createElement("span"),_.className="cufon cufon-canvas",_.alt=n,D=fabric.document.createElement("canvas"),_.appendChild(D);if(i.printable){var P=fabric.document.createElement("span");P.className="cufon-alt",P.appendChild(fabric.document.createTextNode(n)),_.appendChild(P)}}var H=_.style,B=D.style||{},j=c.convert(l.height-p+v),F=Math.ceil(j),I=F/j;D.width=Math.ceil(c.convert(N+d-m)*I),D.height=F,p+=l.minY,B.top=Math.round(c.convert(p-t.ascent))+"px",B.left=Math.round(c.convert(m))+"px";var q=Math.ceil(c.convert(N*I)),R=q+"px",U=c.convert(t.height),z=(i.lineHeight-1)*c.convert(-t.ascent/5)*(L-1);Cufon.textOptions.width=q,Cufon.textOptions.height=U*L+z,Cufon.textOptions.lines=L,Cufon.textOptions.totalLineHeight=z,e?(H.width=R,H.height=U+"px"):(H.paddingLeft=R,H.paddingBottom=U-1+"px");var W=Cufon.textOptions.context||D.getContext("2d"),X=F/l.height;Cufon.textOptions.fontAscent=t.ascent*X,Cufon.textOptions.boundaries=null;for(var V=Cufon.textOptions.shadowOffsets,b=y.length;b--;)V[b]=[y[b][0]*X,y[b][1]*X];W.save(),W.scale(X,X),W.translate(-m-1/X*D.width/2+(Cufon.fonts[t.family].offsetLeft||0),-p-Cufon.textOptions.height/X/2+(Cufon.fonts[t.family].offsetTop||0)),W.lineWidth=t.face["underline-thickness"],W.save();var J=Cufon.getTextDecoration(i),K=i.fontStyle==="italic";W.save(),Q();if(g)for(var b=0,w=g.length;b.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}'),function(e,t,i,s,o,u,a){var f=t===null;f&&(t=o.alt);var l=e.viewBox,c=i.computedFontSize||(i.computedFontSize=new Cufon.CSS.Size(n(u,i.get("fontSize"))+"px",e.baseSize)),h=i.computedLSpacing;h==undefined&&(h=i.get("letterSpacing"),i.computedLSpacing=h=h=="normal"?0:~~c.convertFrom(r(u,h)));var p,d;if(f)p=o,d=o.firstChild;else{p=fabric.document.createElement("span"),p.className="cufon cufon-vml",p.alt=t,d=fabric.document.createElement("span"),d.className="cufon-vml-canvas",p.appendChild(d);if(s.printable){var v=fabric.document.createElement("span");v.className="cufon-alt",v.appendChild(fabric.document.createTextNode(t)),p.appendChild(v)}a||p.appendChild(fabric.document.createElement("cvml:shape"))}var m=p.style,g=d.style,y=c.convert(l.height),b=Math.ceil(y),w=b/y,E=l.minX,S=l.minY;g.height=b,g.top=Math.round(c.convert(S-e.ascent)),g.left=Math.round(c.convert(E)),m.height=c.convert(e.height)+"px";var x=Cufon.getTextDecoration(s),T=i.get("color"),N=Cufon.CSS.textTransform(t,i).split(""),C=0,k=0,L=null,A,O,M=s.textShadow;for(var _=0,D=0,P=N.length;_-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)},toGrayscale:function(){return this.forEachObject(function(e){e.toGrayscale()})}},function(){function n(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e}function r(e,t){return Math.floor(Math.random()*(t-e+1))+e}function s(e){return e*i}function o(e){return e/i}function u(e,t,n){var r=Math.sin(n),i=Math.cos(n);e.subtractEquals(t);var s=e.x*i-e.y*r,o=e.x*r+e.y*i;return(new fabric.Point(s,o)).addEquals(t)}function a(e,t){return parseFloat(Number(e).toFixed(t))}function f(){return!1}function l(e,t){return c(t)[fabric.util.string.camelize(fabric.util.string.capitalize(e))]}function c(e){if(!e)return fabric;var t=e.split("."),n=t.length,r=fabric.window;for(var i=0;i1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r}function v(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),n[d?"lineTo":"moveTo"](r,0),d=!d;n.restore()}function g(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function y(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function b(e){var t=e.prototype;for(var n=t.stateProperties.length;n--;){var r=t.stateProperties[n],i=r.charAt(0).toUpperCase()+r.slice(1),s="set"+i,o="get"+i;t[o]||(t[o]=function(e){return new Function('return this.get("'+e+'")')}(r)),t[s]||(t[s]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(r))}}function w(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function E(e,t){var n=[[e[0],e[2],e[4]],[e[1],e[3],e[5]],[0,0,1]],r=[[t[0],t[2],t[4]],[t[1],t[3],t[5]],[0,0,1]],i=[];for(var s=0;s<3;s++){i[s]=[];for(var o=0;o<3;o++){var u=0;for(var a=0;a<3;a++)u+=n[s][a]*r[a][o];i[s][o]=u}}return[i[0][0],i[1][0],i[0][1],i[1][1],i[0][2],i[1][2]]}function S(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]}function x(e,t,n,r){var i=r[0],s=r[1],o=r[2],u=r[3],a=r[4],f=r[5],l=r[6],c=L(f,l,i,s,u,a,o,t,n);for(var h=0;h1&&(d=Math.sqrt(d),n*=d,r*=d);var v=c/n,m=l/n,g=-l/r,y=c/r,b=v*u+m*a,w=g*u+y*a,E=v*e+m*t,S=g*e+y*t,x=(E-b)*(E-b)+(S-w)*(S-w),N=1/x-.25;N<0&&(N=0);var L=Math.sqrt(N);s===i&&(L=-L);var A=.5*(b+E)-L*(S-w),O=.5*(w+S)+L*(E-b),M=Math.atan2(w-O,b-A),_=Math.atan2(S-O,E-A),D=_-M;D<0&&s===1?D+=2*Math.PI:D>0&&s===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B=r&&(r=e[n][t]);else while(n--)e[n]>=r&&(r=e[n]);return r}function r(e,t){if(!e||e.length===0)return undefined;var n=e.length-1,r=t?e[n][t]:e[n];if(t)while(n--)e[n][t]>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(t){var n=this.constructor.superclass.prototype[t];return arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this)}function o(){function u(){this.initialize.apply(this,arguments)}var n=null,o=e.call(arguments,0);typeof o[0]=="function"&&(n=o.shift()),u.superclass=n,u.subclasses=[],n&&(i.prototype=n.prototype,u.prototype=new i,n.subclasses.push(u));for(var a=0,f=o.length;a-1?e.prototype[i]=function(e){return function(){var n=this.constructor.superclass;this.constructor.superclass=r;var i=t[e].apply(this,arguments);this.constructor.superclass=n;if(e!=="initialize")return i}}(i):e.prototype[i]=t[i],n&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};fabric.util.createClass=o}(),function(){function e(e){var t=Array.prototype.slice.call(arguments,1),n,r,i=t.length;for(r=0;r-1?s(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if(r==="opacity")s(e,t[r]);else{var i=r==="float"||r==="cssFloat"?typeof n.styleFloat=="undefined"?"cssFloat":"styleFloat":r;n[i]=t[r]}return e}var t=fabric.document.createElement("div"),n=typeof t.style.opacity=="string",r=typeof t.style.filter=="string",i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(e){return e};n?s=function(e,t){return e.style.opacity=t,e}:r&&(s=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+t*100+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+t*100+")",e}),fabric.util.setStyle=e}(),function(){function t(e){return typeof e=="string"?fabric.document.getElementById(e):e}function s(e,t){var n=fabric.document.createElement(e);for(var r in t)r==="class"?n.className=t[r]:r==="for"?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function o(e,t){(" "+e.className+" ").indexOf(" "+t+" ")===-1&&(e.className+=(e.className?" ":"")+t)}function u(e,t,n){return typeof t=="string"&&(t=s(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t}function a(e){var t,n,r={left:0,top:0},i=e&&e.ownerDocument,s={left:0,top:0},o={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!i)return{left:0,top:0};for(var u in o)s[o[u]]+=parseInt(f(e,u),10)||0;return t=i.documentElement,typeof e.getBoundingClientRect!="undefined"&&(r=e.getBoundingClientRect()),i!=null&&i===i.window?n=i:n=i.nodeType===9&&(i.defaultView||i.parentWindow),{left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)+s.left,top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0)+s.top}}function f(e,t){e.style||(e.style={});if(fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle)return fabric.document.defaultView.getComputedStyle(e,null)[t];var n=e.style[t];return!n&&e.currentStyle&&(n=e.currentStyle[t]),n}var e=Array.prototype.slice,n=function(t){return e.call(t,0)},r;try{r=n(fabric.document.childNodes)instanceof Array}catch(i){}r||(n=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t}),function(){function n(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=fabric.util.falseFunction),t?e.style[t]="none":typeof e.unselectable=="string"&&(e.unselectable="on"),e}function r(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=null),t?e.style[t]="":typeof e.unselectable=="string"&&(e.unselectable=""),e}var e=fabric.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=n,fabric.util.makeElementSelectable=r}(),function(){function e(e,t){var n=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),i=!0;r.onload=r.onreadystatechange=function(e){if(i){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;i=!1,t(e||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=e,n.appendChild(r)}fabric.util.getScript=e}(),fabric.util.getById=t,fabric.util.toArray=n,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getElementOffset=a,fabric.util.getElementStyle=f}(),function(){function e(e,t){return e+(/\?/.test(e)?"&":"?")+t}function n(){}function r(r,i){i||(i={});var s=i.method?i.method.toUpperCase():"GET",o=i.onComplete||function(){},u=t(),a;return u.onreadystatechange=function(){u.readyState===4&&(o(u),u.onreadystatechange=n)},s==="GET"&&(a=null,typeof i.parameters=="string"&&(r=e(r,i.parameters))),u.open(s,r,!0),(s==="POST"||s==="PUT")&&u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),u.send(a),u}var t=function(){var e=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}];for(var t=e.length;t--;)try{var n=e[t]();if(n)return e[t]}catch(r){}}();fabric.util.request=r}(),function(){function e(e){e||(e={});var t=+(new Date),r=e.duration||500,i=t+r,s,o=e.onChange||function(){},u=e.abort||function(){return!1},a=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},f="startValue"in e?e.startValue:0,l="endValue"in e?e.endValue:100,c=e.byValue||l-f;e.onStart&&e.onStart(),function h(){s=+(new Date);var l=s>i?r:s-t;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.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 diff --git a/dist/all.min.js.gz b/dist/all.min.js.gz index 91fa28fc7f9d5e44c1e3c9bc6819e6c320cc9fb4..e36ddb948fa4d086e9dfe20cdc6123cb099fc5ba 100644 GIT binary patch delta 45777 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

s3x^_z#DtdZdMa#n-QLC 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 diff --git a/dist/all.require.js b/dist/all.require.js index f2d9df8b..da37c659 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.1" }; +var fabric = fabric || { version: "1.3.2" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; } @@ -2022,7 +2022,7 @@ fabric.Collection = { }; -(function() { +(function(global) { var sqrt = Math.sqrt, atan2 = Math.atan2; @@ -2136,7 +2136,9 @@ fabric.Collection = { * @return {Object} klass "Class" */ function getKlass(type, namespace) { - return resolveNamespace(namespace)[fabric.util.string.camelize(fabric.util.string.capitalize(type))]; + // capitalize first letter only + type = fabric.util.string.camelize(type.charAt(0).toUpperCase() + type.slice(1)); + return resolveNamespace(namespace)[type]; } /** @@ -2150,7 +2152,7 @@ fabric.Collection = { var parts = namespace.split('.'), len = parts.length, - obj = fabric.window; + obj = global || fabric.window; for (var i = 0; i < len; ++i) { obj = obj[parts[i]]; @@ -2557,7 +2559,7 @@ fabric.Collection = { fabric.util.getFunctionBody = getFunctionBody; fabric.util.drawArc = drawArc; -})(); +})(typeof exports !== 'undefined' ? exports : this); (function() { diff --git a/package.json b/package.json index a1a93c10..a2d9657e 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.1", + "version": "1.3.2", "author": "Juriy Zaytsev ", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "repository": "git://github.com/kangax/fabric.js",