From 21f87bb63a258d37c8912b5f2bf2bd13adb8890d Mon Sep 17 00:00:00 2001 From: kangax Date: Sun, 7 Jul 2013 22:25:01 +0200 Subject: [PATCH] Fix polygon/polyline tests and minor cleanup --- dist/all.js | 56 +++++++++++++++++++++++++---------- dist/all.min.js | 12 ++++---- dist/all.min.js.gz | Bin 49764 -> 49843 bytes src/shapes/polygon.class.js | 10 +++---- src/shapes/polyline.class.js | 10 +++---- test/unit/polygon.js | 14 +++++---- test/unit/polyline.js | 17 +++++++++-- 7 files changed, 77 insertions(+), 42 deletions(-) diff --git a/dist/all.js b/dist/all.js index ad7ae369..20dd4e0b 100644 --- a/dist/all.js +++ b/dist/all.js @@ -2434,6 +2434,32 @@ fabric.Collection = { ]; } + /** + * Takes an array of points and returns a bounding rectangle around them + * @static + * @memberOf fabric.util + * @param {Array.} points An array of objects with x and y properties. + * @return {Object} An object with x1, y1, x2, and y2 properties + * corresponding to the points of the rect, and + * width and height properties. + */ + function getBoundingRect(points) { + var utilMin = fabric.util.array.min, + utilMax = fabric.util.array.max; + + var rect = { + x1: utilMin(points, 'x'), + y1: utilMin(points, 'y'), + x2: utilMax(points, 'x'), + y2: utilMax(points, 'y') + }; + + rect.width = rect.x2 - rect.x1; + rect.height = rect.y2 - rect.y1; + + return rect; + } + function getFunctionBody(fn) { return (String(fn).match(/function[^{]*\{([\s\S]*)\}/) || {})[1]; } @@ -2567,6 +2593,7 @@ fabric.Collection = { fabric.util.createAccessors = createAccessors; fabric.util.clipContext = clipContext; fabric.util.multiplyTransformMatrices = multiplyTransformMatrices; + fabric.util.getBoundingRect = getBoundingRect; fabric.util.getFunctionBody = getFunctionBody; fabric.util.drawArc = drawArc; @@ -13440,8 +13467,7 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot "use strict"; var fabric = global.fabric || (global.fabric = { }), - toFixed = fabric.util.toFixed, - min = fabric.util.array.min; + toFixed = fabric.util.toFixed; if (fabric.Polyline) { fabric.warn('fabric.Polyline is already defined'); @@ -13589,16 +13615,15 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot var points = fabric.parsePointsAttribute(element.getAttribute('points')), parsedAttributes = fabric.parseAttributes(element, fabric.Polyline.ATTRIBUTE_NAMES), - minX = min(points, 'x'), - minY = min(points, 'y'); + boundingRect = fabric.util.getBoundingRect(points); - minX = minX < 0 ? minX : 0; - minY = minX < 0 ? minY : 0; + options.top = boundingRect.y1 + boundingRect.height / 2; + options.left = boundingRect.x1 + boundingRect.width / 2; for (var i = 0, len = points.length; i < len; i++) { - // normalize coordinates, according to containing box (dimensions of which are passed via `options`) - points[i].x -= (options.width / 2 + minX) || 0; - points[i].y -= (options.height / 2 + minY) || 0; + // normalize coordinates, according to containing box (dimensions of which are calculated above) + points[i].x -= options.left; + points[i].y -= options.top; } return new fabric.Polyline(points, fabric.util.object.extend(parsedAttributes, options), true); @@ -13802,16 +13827,15 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot var points = fabric.parsePointsAttribute(element.getAttribute('points')), parsedAttributes = fabric.parseAttributes(element, fabric.Polygon.ATTRIBUTE_NAMES), - minX = min(points, 'x'), - minY = min(points, 'y'); + boundingRect = fabric.util.getBoundingRect(points); - minX = minX < 0 ? minX : 0; - minY = minX < 0 ? minY : 0; + options.top = boundingRect.y1 + boundingRect.height / 2; + options.left = boundingRect.x1 + boundingRect.width / 2; for (var i = 0, len = points.length; i < len; i++) { - // normalize coordinates, according to containing box (dimensions of which are passed via `options`) - points[i].x -= (options.width / 2 + minX) || 0; - points[i].y -= (options.height / 2 + minY) || 0; + // normalize coordinates, according to containing box (dimensions of which are calculated above) + points[i].x -= options.left; + points[i].y -= options.top; } return new fabric.Polygon(points, extend(parsedAttributes, options), true); diff --git a/dist/all.min.js b/dist/all.min.js index d7d14eaf..0d06980e 100644 --- a/dist/all.min.js +++ b/dist/all.min.js @@ -1,6 +1,6 @@ -/* build: `node build.js modules=ALL exclude=gestures` *//*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"1.2.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){e||(e={});var t=+(new Date),n=e.duration||500,r=t+n,i,s=e.onChange||function(){},o=e.abort||function(){return!1},u=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},a="startValue"in e?e.startValue:0,f="endValue"in e?e.endValue:100,l=e.byValue||f-a;e.onStart&&e.onStart(),function c(){i=+(new Date);var f=i>r?n:i-t;s(u(f,a,l,n));if(i>r||o()){e.onComplete&&e.onComplete();return}h(c)}()}function p(e){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(e))]}function d(e,t,n){if(e){var r=fabric.util.createImage();r.onload=function(){t&&t.call(n,r),r=r.onload=null},r.src=e}else t&&t.call(n,e)}function v(e,t){function n(){++i===s&&t&&t(r)}var r=[],i=0,s=e.length;e.forEach(function(e,t){if(!e.type)return;var i=fabric.util.getKlass(e.type);i.async?i.fromObject(e,function(e,i){i||(r[t]=e),n()}):(r[t]=i.fromObject(e),n())})}function m(e,t,n){var r;return e.length>1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r}function g(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 b(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function w(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function E(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 S(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function x(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 T(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]}function N(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=O(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 N=Math.sqrt(T);s===i&&(N=-N);var k=.5*(b+E)-N*(S-w),O=.5*(w+S)+N*(E-b),M=Math.atan2(w-O,b-k),_=Math.atan2(S-O,E-k),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,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',''),t.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),""),this.backgroundColor&&this.backgroundColor.source&&t.push('"),this.backgroundImage&&t.push(''),this.overlayImage&&t.push('');var n=this.getActiveGroup();n&&this.discardActiveGroup();for(var r=0,i=this.getObjects(),s=i.length;r"),t.join("")},remove:function(e){return this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared")),fabric.Collection.remove.call(this,e)},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e,t){var r=this._objects.indexOf(e);if(r!==0){var i;if(t){i=r;for(var s=r-1;s>=0;--s){var o=e.intersectsWithObject(this._objects[s])||e.isContainedWithinObject(this._objects[s])||this._objects[s].isContainedWithinObject(e);if(o){i=s;break}}}else i=r-1;n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},bringForward:function(e,t){var r=this._objects.indexOf(e);if(r!==this._objects.length-1){var i;if(t){i=r;for(var s=r+1;s"},e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;a0&&(t>this.targetFindTolerance?t-=this.targetFindTolerance:t=0,n>this.targetFindTolerance?n-=this.targetFindTolerance:n=0);var o=!0,u=r.getImageData(t,n,this.targetFindTolerance*2||1,this.targetFindTolerance*2||1);for(var a=3,f=u.data.length;ao.padding?l.x<0?l.x+=o.padding:l.x-=o.padding:l.x=0,s(l.y)>o.padding?l.y<0?l.y+=o.padding:l.y-=o.padding:l.y=0;var c=o.scaleX,h=o.scaleY;if(n==="equally"&&!u&&!a){var p=l.y+l.x,d=(o.height+o.strokeWidth)*r.original.scaleY+(o.width+o.strokeWidth)*r.original.scaleX;c=r.original.scaleX*p/d,h=r.original.scaleY*p/d,o.set("scaleX",c),o.set("scaleY",h)}else n?n==="x"&&!o.get("lockUniScaling")?(c=l.x/(o.width+o.strokeWidth),u||o.set("scaleX",c)):n==="y"&&!o.get("lockUniScaling")&&(h=l.y/(o.height+o.strokeWidth),a||o.set("scaleY",h)):(c=l.x/(o.width+o.strokeWidth),h=l.y/(o.height+o.strokeWidth),u||o.set("scaleX",c),a||o.set("scaleY",h));c<0&&(r.originX==="left"?r.originX="right":r.originX==="right"&&(r.originX="left")),h<0&&(r.originY==="top"?r.originY="bottom":r.originY==="bottom"&&(r.originY="top")),o.setPositionByOrigin(f,r.originX,r.originY)},_rotateObject:function(e,t){var n=this._currentTransform,s=this._offset;if(n.target.get("lockRotation"))return;var o=i(n.ey-n.top-s.top,n.ex-n.left-s.left),u=i(t-n.top-s.top,e-n.left-s.left),a=r(u-o+n.theta);a<0&&(a=360+a),n.target.angle=a},_setCursor:function(e){this.upperCanvasEl.style.cursor=e},_resetObjectTransform:function(e){e.scaleX=1,e.scaleY=1,e.setAngle(0)},_drawSelection:function(){var e=this.contextTop,t=this._groupSelector,n=t.left,r=t.top,i=s(n),o=s(r);e.fillStyle=this.selectionColor,e.fillRect(t.ex-(n>0?0:-n),t.ey-(r>0?0:-r),i,o),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var u=t.ex+a-(n>0?0:i),f=t.ey+a-(r>0?0:o);e.beginPath(),fabric.util.drawDashedLine(e,u,f,u+i,f,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f+o-1,u+i,f+o-1,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f,u,f+o,this.selectionDashArray),fabric.util.drawDashedLine(e,u+i-1,f,u+i-1,f+o,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+a-(n>0?0:i),t.ey+a-(r>0?0:o),i,o)},_findSelectedObjects:function(e){var t=[],n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,s=r+this._groupSelector.top,a,f=new fabric.Point(o(n,i),o(r,s)),l=new fabric.Point(u(n,i),u(r,s)),c=n===i&&r===s;for(var h=this._objects.length;h--;){a=this._objects[h];if(!a)continue;if(a.intersectsWithRect(f,l)||a.isContainedWithinRect(f,l)||a.containsPoint(f)||a.containsPoint(l))if(this.selection&&a.selectable){a.set("active",!0),t.push(a);if(c)break}}t.length===1?this.setActiveObject(t[0],e):t.length>1&&(t=new fabric.Group(t.reverse()),this.setActiveGroup(t),t.saveCoords(),this.fire("selection:created",{target:t}),this.renderAll())},findTarget:function(e,t){var n,r=this.getPointer(e);if(this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(e,this._offset))return n=this.lastRenderedObjectWithControlsAboveOverlay,n;var i=this.getActiveGroup();if(i&&!t&&this.containsPoint(e,i))return n=i,n;var s=[];for(var o=this._objects.length;o--;)if(this._objects[o]&&this._objects[o].visible&&this.containsPoint(e,this._objects[o])){if(!this.perPixelTargetFind&&!this._objects[o].perPixelTargetFind){n=this._objects[o],this.relatedTarget=n;break}s[s.length]=this._objects[o]}for(var u=0,a=s.length;u"},get:function(e){return this[e]},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"&&e!=="clipTo"?this._set(e,t(this.get(e))):this._set(e,t);return this},_set:function(e,t){var n=e==="scaleX"||e==="scaleY";n&&(t=this._constrainScale(t));if(e==="scaleX"&&t<0)this.flipX=!this.flipX,t*=-1;else if(e==="scaleY"&&t<0)this.flipY=!this.flipY,t*=-1;else if(e==="width"||e==="height")this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2);return this[e]=t,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save();var r=this.transformMatrix;r&&!this.group&&e.setTransform(r[0],r[1],r[2],r[3],r[4],r[5]),n||this.transform(e),this.stroke&&(e.lineWidth=this.strokeWidth,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,e.strokeStyle=this.stroke.toLive?this.stroke.toLive(e):this.stroke),this.overlayFill?e.fillStyle=this.overlayFill:this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill),r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_renderFill:function(e){if(!this.fill)return;this.fill.toLive&&(e.save(),e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0)),e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke)return;e.save(),this.strokeDashArray?(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),o?(e.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(e)):this._renderDashedStroke&&this._renderDashedStroke(e),e.stroke()):this._stroke?this._stroke(e):e.stroke(),this._removeShadow(e),e.restore()},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){var n=this.toDataURL();return t.util.loadImage(n,function(n){e&&e(new t.Image(n))}),this},toDataURL:function(e){e||(e={});var n=t.util.createCanvasElement();n.width=this.getBoundingRectWidth(),n.height=this.getBoundingRectHeight(),t.util.wrapElement(n,"div");var r=new t.Canvas(n);e.format==="jpeg"&&(r.backgroundColor="#fff");var i={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set({active:!1,left:n.width/2,top:n.height/2}),r.add(this);var s=r.toDataURL(e);return this.set(i).setCoords(),r.dispose(),r=null,s},isType:function(e){return this.type===e},toGrayscale:function(){var e=this.get("fill");return e&&this.set("overlayFill",(new t.Color(e)).toGrayscale().toRgb()),this},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){return this.set("fill",new t.Pattern(e))},setShadow:function(e){return this.set("shadow",new t.Shadow(e))},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;re.x&&n.left+n.widthe.y&&n.top+n.height=e.y&&f.d.y>=e.y)continue;f.o.x===f.d.x&&f.o.x>=e.x?(o=f.o.x,u=e.y):(n=0,r=(f.d.y-f.o.y)/(f.d.x-f.o.x),i=e.y-n*e.x,s=f.o.y-r*f.o.x,o=-(i-s)/(n-r),u=i+n*o),o>=e.x&&(a+=1);if(a===2)break}return a},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],t=fabric.util.array.min(e),n=fabric.util.array.max(e),r=Math.abs(t-n),i=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],s=fabric.util.array.min(i),o=fabric.util.array.max(i),u=Math.abs(s-o);return{left:t,top:s,width:r,height:u}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(e){return Math.abs(e)1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x:m.x,y:m.y};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords&&this._setCornerCoords(),this}})}(),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this[e]!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner),o=this._findCrossPoints({x:i,y:s},u);if(o!==0&&o%2===1)return this.__corner=a,a}return!1},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=this.strokeWidth>1?this.strokeWidth:0;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)+.5,~~(-(u/2)-t-r/2*this.scaleY)+.5,~~(o+n+r*this.scaleX),~~(u+n+r*this.scaleY));if(this.hasRotatingPoint&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;var t=this.cornerSize,n=t/2,r=this.strokeWidth>1?this.strokeWidth/2:0,i=-(this.width/2),s=-(this.height/2),o,u,a=t/this.scaleX,f=t/this.scaleY,l=this.padding/this.scaleX,c=this.padding/this.scaleY,h=n/this.scaleY,p=n/this.scaleX,d=(n-t)/this.scaleX,v=(n-t)/this.scaleY,m=this.height,g=this.width,y=this.transparentCorners?"strokeRect":"fillRect",b=this.transparentCorners,w=typeof G_vmlCanvasManager!="undefined";return e.save(),e.lineWidth=1/Math.max(this.scaleX,this.scaleY),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=e.fillStyle=this.cornerColor,o=i-p-r-l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),this.get("lockUniScaling")||(o=i+g/2-p,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),this.hasRotatingPoint&&(o=i+g/2-p,u=this.flipY?s+m+this.rotatingPointOffset/this.scaleY-f/2+r+c:s-this.rotatingPointOffset/this.scaleY-f/2-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),e.restore(),this}})}(),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r={x1:1,x2:1,y1:1,y2:1},i=t.StaticCanvas.supports("setLineDash");if(t.Line){t.warn("fabric.Line is already defined");return}t.Line=t.util.createClass(t.Object,{type:"line",initialize:function(e,t){t=t||{},e||(e=[0,0,0,0]),this.callSuper("initialize",t),this.set("x1",e[0]),this.set("y1",e[1]),this.set("x2",e[2]),this.set("y2",e[3]),this._setWidthHeight(t)},_setWidthHeight:function(e){e||(e={}),this.set("width",Math.abs(this.x2-this.x1)||1),this.set("height",Math.abs(this.y2-this.y1)||1),this.set("left","left"in e?e.left:Math.min(this.x1,this.x2)+this.width/2),this.set("top","top"in e?e.top:Math.min(this.y1,this.y2)+this.height/2)},_set:function(e,t){return this[e]=t,e in r&&this._setWidthHeight(),this},_render:function(e){e.beginPath();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);if(!this.strokeDashArray||this.strokeDashArray&&i){var n=this.x1<=this.x2?-1:1,r=this.y1<=this.y2?-1:1;e.moveTo(this.width===1?0:n*this.width/2,this.height===1?0:r*this.height/2),e.lineTo(this.width===1?0:n*-1*this.width/2,this.height===1?0:r*-1*this.height/2)}e.lineWidth=this.strokeWidth;var s=e.strokeStyle;e.strokeStyle=this.stroke||e.fillStyle,this._renderStroke(e),e.strokeStyle=s},_renderDashedStroke:function(e){var n=this.width===1?0:-this.width/2,r=this.height===1?0:-this.height/2;e.beginPath(),t.util.drawDashedLine(e,n,r,-n,-r,this.strokeDashArray),e.closePath()},toObject:function(e){return n(this.callSuper("toObject",e),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){var e=[];return this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!0)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function( -e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e);var t=this.get("radius")*2;this.set("width",t).set("height",t)},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),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=[],t=this.width/2,n=this.height/2,r=[-t+" "+n,"0 "+ -n,t+" "+n].join(",");return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!0)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!0)),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=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this._renderFill(e),this._renderStroke(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function r(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}t.Rect=t.util.createClass(t.Object,{type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(e){e=e||{},this._initStateProperties(),this.callSuper("initialize",e),this._initRxRy(),this.x=e.x||0,this.y=e.y||0},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height,u=this.group&&this.group.type!=="group";e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y);var a=t!==0||n!==0;e.moveTo(r+t,i),e.lineTo(r+s-t,i),a&&e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),a&&e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),a&&e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),a&&e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,i){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=r(s);var o=new t.Rect(n(i?t.util.object.clone(i):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed,r=t.util.array.min;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(){var e=[],t=[];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=[];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){var n=u(e.paths);return new t.PathGroup(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){var e=this.left,t=this.top;this.forEachObject(function(n){var r=n.get("left"),i=n.get("top");n.set("originalLeft",r),n.set("originalTop",i),n.set("left",r-e),n.set("top",i-t),n.setCoords(),n.__origHasControls=n.hasControls,n.hasControls=!1},this)},toString:function(){return"#"},getObjects:function(){return this._objects},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textShadow:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e);var r=Math.max(this.scaleX,this.scaleY);this.clipTo&&t.util.clipContext(this,e);for(var i=0,s=this._objects.length;i'+e.join("")+""},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','');if(this.stroke||this.strokeDashArray){var t=this.fill;this.fill=null,e.push("'),this.fill=t}return e.push(""),e.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this.setElement(this._originalImage),e&&e();return}var t=this._originalImage,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;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;if(fabric.isLikelyNode){var s=n.toDataURL("image/png").substring(22);r.src=new Buffer(s,"base64"),i._element=r,e&&e()}else r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png");return this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e){e.filters&&e.filters.length&&(this.filters=e.filters.map(function(e){return e&&fabric.Image.filters[e.type].fromObject(e)}))},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){var n=fabric.document.createElement("img"),r=e.src;e.width&&(n.width=e.width),e.height&&(n.height=e.height),n.onload=function(){fabric.Image.prototype._initFilters.call(e,e);var r=new fabric.Image(n,e);t&&t(r),n=n.onload=n.onerror=null},n.onerror=function(){fabric.log("Error loading "+n.src),t&&t(null,!0),n=n.onload=n.onerror=null},n.src=r},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))})},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.Brightness=fabric.util.createClass({type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;s=0&&N=0&&Co&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.object.clone,i=t.util.toFixed,s=t.StaticCanvas.supports("setLineDash");if(t.Text){t.warn("fabric.Text is already defined");return}var o=t.Object.prototype.stateProperties.concat();o.push("fontFamily","fontWeight","fontSize","path","text","textDecoration","textShadow","textAlign","fontStyle","lineHeight","backgroundColor","textBackgroundColor","useNative"),t.Text=t.util.createClass(t.Object,{_dimensionAffectingProps:{fontSize:!0,fontWeight:!0,fontFamily:!0,textDecoration:!0,fontStyle:!0,lineHeight:!0,stroke:!0,strokeWidth:!0,text:!0},type:"text",fontSize:40,fontWeight:"normal",fontFamily:"Times New Roman",textDecoration:"",textShadow:"",textAlign:"left",fontStyle:"",lineHeight:1.3,backgroundColor:"",textBackgroundColor:"",path:null,useNative:!0,stateProperties:o,initialize:function(e,t){t=t||{},this.text=e,this.__skipDimension=!0,this.setOptions(t),this.__skipDimension=!1,this._initDimensions(),this.setCoords()},_initDimensions:function(){if(this.__skipDimension)return;var e=t.util.createCanvasElement();this._render(e.getContext("2d"))},toString:function(){return"#'},_render:function(e){var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaNative:function(e){this.transform(e,t.isLikelyNode),this._setTextStyles(e);var n=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this._renderTextBackground(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),e.save(),this._setTextShadow(e),this.clipTo&&t.util.clipContext(this,e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this.clipTo&&e.restore(),this.textShadow&&e.restore(),e.restore(),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this._setBoundaries(e,n),this._totalLineHeight=0,this.setCoords()},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_setTextShadow:function(e){if(!this.textShadow)return;var t=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/,n=this.textShadow,r=t.exec(this.textShadow),i=n.replace(t,"");e.save(),e.shadowColor=i,e.shadowOffsetX=parseInt(r[1],10),e.shadowOffsetY=parseInt(r[2],10),e.shadowBlur=parseInt(r[3],10),this._shadows=[{blur:e.shadowBlur,color:e.shadowColor,offX:e.shadowOffsetX,offY:e.shadowOffsetY}],this._shadowOffsets=[[parseInt(e.shadowOffsetX,10),parseInt(e.shadowOffsetY,10)]]},_drawTextLine:function(e,t,n,r,i){if(this.textAlign!=="justify"){t[e](n,r,i);return}var s=t.measureText(n).width,o=this.width;if(o>s){var u=n.split(/\s+/),a=t.measureText(n.replace(/\s+/g,"")).width,f=o-a,l=u.length-1,c=f/l,h=0;for(var p=0,d=u.length;p-1&&i(this.fontSize),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(0)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(e,t){if(!this.visible)return;e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){return n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;this.backgroundColor&&this._boundaries&&o.push("');for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.textBackgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},setColor:function(e){return this.set("fill",e),this},getText:function(){return this.text},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Text.prototype,{_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_initDummyElementForCufon:function(){var e=fabric.document.createElement("pre"),t=fabric.document.createElement("div");return t.appendChild(e),typeof G_vmlCanvasManager=="undefined"?e.innerHTML=this.text:e.innerText=this.text.replace(/\r?\n/gi,"\r"),e.style.fontSize=this.fontSize+"px",e.style.letterSpacing="normal",e}}),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs"),r=n.createReadStream(e),i="";r.on("data",function(e){i+=e}),r.on("end",function(){t(i)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&(e instanceof Buffer||e.indexOf("data")===0)?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e&&request(e,"binary",r)},fabric.loadSVGFromURL=function(e,t){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t)}):request(e,"",function(e){fabric.loadSVGFromString(e,t)})},fabric.loadSVGFromString=function(e,t){var n=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(n.documentElement,function(e,n){t(e,n)})},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e),t(r)})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file +/* build: `node build.js modules=ALL exclude=gestures` *//*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"1.2.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){e||(e={});var t=+(new Date),n=e.duration||500,r=t+n,i,s=e.onChange||function(){},o=e.abort||function(){return!1},u=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},a="startValue"in e?e.startValue:0,f="endValue"in e?e.endValue:100,l=e.byValue||f-a;e.onStart&&e.onStart(),function c(){i=+(new Date);var f=i>r?n:i-t;s(u(f,a,l,n));if(i>r||o()){e.onComplete&&e.onComplete();return}h(c)}()}function p(e){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(e))]}function d(e,t,n){if(e){var r=fabric.util.createImage();r.onload=function(){t&&t.call(n,r),r=r.onload=null},r.src=e}else t&&t.call(n,e)}function v(e,t){function n(){++i===s&&t&&t(r)}var r=[],i=0,s=e.length;e.forEach(function(e,t){if(!e.type)return;var i=fabric.util.getKlass(e.type);i.async?i.fromObject(e,function(e,i){i||(r[t]=e),n()}):(r[t]=i.fromObject(e),n())})}function m(e,t,n){var r;return e.length>1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r}function g(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 b(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function w(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function E(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 S(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function x(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 T(e){var t=fabric.util.array.min,n=fabric.util.array.max,r={x1:t(e,"x"),y1:t(e,"y"),x2:n(e,"x"),y2:n(e,"y")};return r.width=r.x2-r.x1,r.height=r.y2-r.y1,r}function N(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]}function C(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=M(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 N=Math.sqrt(T);s===i&&(N=-N);var C=.5*(b+E)-N*(S-w),L=.5*(w+S)+N*(E-b),M=Math.atan2(w-L,b-C),_=Math.atan2(S-L,E-C),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,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',''),t.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),""),this.backgroundColor&&this.backgroundColor.source&&t.push('"),this.backgroundImage&&t.push(''),this.overlayImage&&t.push('');var n=this.getActiveGroup();n&&this.discardActiveGroup();for(var r=0,i=this.getObjects(),s=i.length;r"),t.join("")},remove:function(e){return this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared")),fabric.Collection.remove.call(this,e)},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e,t){var r=this._objects.indexOf(e);if(r!==0){var i;if(t){i=r;for(var s=r-1;s>=0;--s){var o=e.intersectsWithObject(this._objects[s])||e.isContainedWithinObject(this._objects[s])||this._objects[s].isContainedWithinObject(e);if(o){i=s;break}}}else i=r-1;n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},bringForward:function(e,t){var r=this._objects.indexOf(e);if(r!==this._objects.length-1){var i;if(t){i=r;for(var s=r+1;s"},e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;a0&&(t>this.targetFindTolerance?t-=this.targetFindTolerance:t=0,n>this.targetFindTolerance?n-=this.targetFindTolerance:n=0);var o=!0,u=r.getImageData(t,n,this.targetFindTolerance*2||1,this.targetFindTolerance*2||1);for(var a=3,f=u.data.length;ao.padding?l.x<0?l.x+=o.padding:l.x-=o.padding:l.x=0,s(l.y)>o.padding?l.y<0?l.y+=o.padding:l.y-=o.padding:l.y=0;var c=o.scaleX,h=o.scaleY;if(n==="equally"&&!u&&!a){var p=l.y+l.x,d=(o.height+o.strokeWidth)*r.original.scaleY+(o.width+o.strokeWidth)*r.original.scaleX;c=r.original.scaleX*p/d,h=r.original.scaleY*p/d,o.set("scaleX",c),o.set("scaleY",h)}else n?n==="x"&&!o.get("lockUniScaling")?(c=l.x/(o.width+o.strokeWidth),u||o.set("scaleX",c)):n==="y"&&!o.get("lockUniScaling")&&(h=l.y/(o.height+o.strokeWidth),a||o.set("scaleY",h)):(c=l.x/(o.width+o.strokeWidth),h=l.y/(o.height+o.strokeWidth),u||o.set("scaleX",c),a||o.set("scaleY",h));c<0&&(r.originX==="left"?r.originX="right":r.originX==="right"&&(r.originX="left")),h<0&&(r.originY==="top"?r.originY="bottom":r.originY==="bottom"&&(r.originY="top")),o.setPositionByOrigin(f,r.originX,r.originY)},_rotateObject:function(e,t){var n=this._currentTransform,s=this._offset;if(n.target.get("lockRotation"))return;var o=i(n.ey-n.top-s.top,n.ex-n.left-s.left),u=i(t-n.top-s.top,e-n.left-s.left),a=r(u-o+n.theta);a<0&&(a=360+a),n.target.angle=a},_setCursor:function(e){this.upperCanvasEl.style.cursor=e},_resetObjectTransform:function(e){e.scaleX=1,e.scaleY=1,e.setAngle(0)},_drawSelection:function(){var e=this.contextTop,t=this._groupSelector,n=t.left,r=t.top,i=s(n),o=s(r);e.fillStyle=this.selectionColor,e.fillRect(t.ex-(n>0?0:-n),t.ey-(r>0?0:-r),i,o),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var u=t.ex+a-(n>0?0:i),f=t.ey+a-(r>0?0:o);e.beginPath(),fabric.util.drawDashedLine(e,u,f,u+i,f,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f+o-1,u+i,f+o-1,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f,u,f+o,this.selectionDashArray),fabric.util.drawDashedLine(e,u+i-1,f,u+i-1,f+o,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+a-(n>0?0:i),t.ey+a-(r>0?0:o),i,o)},_findSelectedObjects:function(e){var t=[],n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,s=r+this._groupSelector.top,a,f=new fabric.Point(o(n,i),o(r,s)),l=new fabric.Point(u(n,i),u(r,s)),c=n===i&&r===s;for(var h=this._objects.length;h--;){a=this._objects[h];if(!a)continue;if(a.intersectsWithRect(f,l)||a.isContainedWithinRect(f,l)||a.containsPoint(f)||a.containsPoint(l))if(this.selection&&a.selectable){a.set("active",!0),t.push(a);if(c)break}}t.length===1?this.setActiveObject(t[0],e):t.length>1&&(t=new fabric.Group(t.reverse()),this.setActiveGroup(t),t.saveCoords(),this.fire("selection:created",{target:t}),this.renderAll())},findTarget:function(e,t){var n,r=this.getPointer(e);if(this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(e,this._offset))return n=this.lastRenderedObjectWithControlsAboveOverlay,n;var i=this.getActiveGroup();if(i&&!t&&this.containsPoint(e,i))return n=i,n;var s=[];for(var o=this._objects.length;o--;)if(this._objects[o]&&this._objects[o].visible&&this.containsPoint(e,this._objects[o])){if(!this.perPixelTargetFind&&!this._objects[o].perPixelTargetFind){n=this._objects[o],this.relatedTarget=n;break}s[s.length]=this._objects[o]}for(var u=0,a=s.length;u"},get:function(e){return this[e]},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"&&e!=="clipTo"?this._set(e,t(this.get(e))):this._set(e,t);return this},_set:function(e,t){var n=e==="scaleX"||e==="scaleY";n&&(t=this._constrainScale(t));if(e==="scaleX"&&t<0)this.flipX=!this.flipX,t*=-1;else if(e==="scaleY"&&t<0)this.flipY=!this.flipY,t*=-1;else if(e==="width"||e==="height")this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2);return this[e]=t,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save();var r=this.transformMatrix;r&&!this.group&&e.setTransform(r[0],r[1],r[2],r[3],r[4],r[5]),n||this.transform(e),this.stroke&&(e.lineWidth=this.strokeWidth,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,e.strokeStyle=this.stroke.toLive?this.stroke.toLive(e):this.stroke),this.overlayFill?e.fillStyle=this.overlayFill:this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill),r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_renderFill:function(e){if(!this.fill)return;this.fill.toLive&&(e.save(),e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0)),e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke)return;e.save(),this.strokeDashArray?(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),o?(e.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(e)):this._renderDashedStroke&&this._renderDashedStroke(e),e.stroke()):this._stroke?this._stroke(e):e.stroke(),this._removeShadow(e),e.restore()},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){var n=this.toDataURL();return t.util.loadImage(n,function(n){e&&e(new t.Image(n))}),this},toDataURL:function(e){e||(e={});var n=t.util.createCanvasElement();n.width=this.getBoundingRectWidth(),n.height=this.getBoundingRectHeight(),t.util.wrapElement(n,"div");var r=new t.Canvas(n);e.format==="jpeg"&&(r.backgroundColor="#fff");var i={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set({active:!1,left:n.width/2,top:n.height/2}),r.add(this);var s=r.toDataURL(e);return this.set(i).setCoords(),r.dispose(),r=null,s},isType:function(e){return this.type===e},toGrayscale:function(){var e=this.get("fill");return e&&this.set("overlayFill",(new t.Color(e)).toGrayscale().toRgb()),this},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){return this.set("fill",new t.Pattern(e))},setShadow:function(e){return this.set("shadow",new t.Shadow(e))},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;re.x&&n.left+n.widthe.y&&n.top+n.height=e.y&&f.d.y>=e.y)continue;f.o.x===f.d.x&&f.o.x>=e.x?(o=f.o.x,u=e.y):(n=0,r=(f.d.y-f.o.y)/(f.d.x-f.o.x),i=e.y-n*e.x,s=f.o.y-r*f.o.x,o=-(i-s)/(n-r),u=i+n*o),o>=e.x&&(a+=1);if(a===2)break}return a},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],t=fabric.util.array.min(e),n=fabric.util.array.max(e),r=Math.abs(t-n),i=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],s=fabric.util.array.min(i),o=fabric.util.array.max(i),u=Math.abs(s-o);return{left:t,top:s,width:r,height:u}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(e){return Math.abs(e)1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x:m.x,y:m.y};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords&&this._setCornerCoords(),this}})}(),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this[e]!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner),o=this._findCrossPoints({x:i,y:s},u);if(o!==0&&o%2===1)return this.__corner=a,a}return!1},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=this.strokeWidth>1?this.strokeWidth:0;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)+.5,~~(-(u/2)-t-r/2*this.scaleY)+.5,~~(o+n+r*this.scaleX),~~(u+n+r*this.scaleY));if(this.hasRotatingPoint&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;var t=this.cornerSize,n=t/2,r=this.strokeWidth>1?this.strokeWidth/2:0,i=-(this.width/2),s=-(this.height/2),o,u,a=t/this.scaleX,f=t/this.scaleY,l=this.padding/this.scaleX,c=this.padding/this.scaleY,h=n/this.scaleY,p=n/this.scaleX,d=(n-t)/this.scaleX,v=(n-t)/this.scaleY,m=this.height,g=this.width,y=this.transparentCorners?"strokeRect":"fillRect",b=this.transparentCorners,w=typeof G_vmlCanvasManager!="undefined";return e.save(),e.lineWidth=1/Math.max(this.scaleX,this.scaleY),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=e.fillStyle=this.cornerColor,o=i-p-r-l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),this.get("lockUniScaling")||(o=i+g/2-p,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),this.hasRotatingPoint&&(o=i+g/2-p,u=this.flipY?s+m+this.rotatingPointOffset/this.scaleY-f/2+r+c:s-this.rotatingPointOffset/this.scaleY-f/2-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),e.restore(),this}})}(),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r={x1:1,x2:1,y1:1,y2:1},i=t.StaticCanvas.supports("setLineDash");if(t.Line){t.warn("fabric.Line is already defined");return}t.Line=t.util.createClass(t.Object,{type:"line",initialize:function(e,t){t=t||{},e||(e=[0,0,0,0]),this.callSuper("initialize",t),this.set("x1",e[0]),this.set("y1",e[1]),this.set("x2",e[2]),this.set("y2",e[3]),this._setWidthHeight(t)},_setWidthHeight:function(e){e||(e={}),this.set("width",Math.abs(this.x2-this.x1)||1),this.set("height",Math.abs(this.y2-this.y1)||1),this.set("left","left"in e?e.left:Math.min(this.x1,this.x2)+this.width/2),this.set("top","top"in e?e.top:Math.min(this.y1,this.y2)+this.height/2)},_set:function(e,t){return this[e]=t,e in r&&this._setWidthHeight(),this},_render:function(e){e.beginPath();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);if(!this.strokeDashArray||this.strokeDashArray&&i){var n=this.x1<=this.x2?-1:1,r=this.y1<=this.y2?-1:1;e.moveTo(this.width===1?0:n*this.width/2,this.height===1?0:r*this.height/2),e.lineTo(this.width===1?0:n*-1*this.width/2,this.height===1?0:r*-1*this.height/2)}e.lineWidth=this.strokeWidth;var s=e.strokeStyle;e.strokeStyle=this.stroke||e.fillStyle,this._renderStroke(e),e.strokeStyle=s},_renderDashedStroke:function(e){var n=this.width===1?0:-this.width/2,r=this.height===1?0:-this.height/2;e.beginPath(),t.util.drawDashedLine(e,n,r,-n,-r,this.strokeDashArray),e.closePath()},toObject:function(e){return n(this.callSuper("toObject",e),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){var e=[];return this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!0)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e);var t=this.get("radius")*2;this.set("width",t).set("height",t)},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),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=[],t=this.width/2,n=this.height/2,r=[-t+" "+n,"0 "+ -n,t+" "+n].join(",");return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!0)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!0)),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=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this._renderFill(e),this._renderStroke(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function r(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}t.Rect=t.util.createClass(t.Object,{type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(e){e=e||{},this._initStateProperties(),this.callSuper("initialize",e),this._initRxRy(),this.x=e.x||0,this.y=e.y||0},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height,u=this.group&&this.group.type!=="group";e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y);var a=t!==0||n!==0;e.moveTo(r+t,i),e.lineTo(r+s-t,i),a&&e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),a&&e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),a&&e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),a&&e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,i){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=r(s);var o=new t.Rect(n(i?t.util.object.clone(i):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed;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=[];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=[];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){var n=u(e.paths);return new t.PathGroup(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){var e=this.left,t=this.top;this.forEachObject(function(n){var r=n.get("left"),i=n.get("top");n.set("originalLeft",r),n.set("originalTop",i),n.set("left",r-e),n.set("top",i-t),n.setCoords(),n.__origHasControls=n.hasControls,n.hasControls=!1},this)},toString:function(){return"#"},getObjects:function(){return this._objects},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textShadow:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e);var r=Math.max(this.scaleX,this.scaleY);this.clipTo&&t.util.clipContext(this,e);for(var i=0,s=this._objects.length;i'+e.join("")+""},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','');if(this.stroke||this.strokeDashArray){var t=this.fill;this.fill=null,e.push("'),this.fill=t}return e.push(""),e.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this.setElement(this._originalImage),e&&e();return}var t=this._originalImage,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;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;if(fabric.isLikelyNode){var s=n.toDataURL("image/png").substring(22);r.src=new Buffer(s,"base64"),i._element=r,e&&e()}else r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png");return this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e){e.filters&&e.filters.length&&(this.filters=e.filters.map(function(e){return e&&fabric.Image.filters[e.type].fromObject(e)}))},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){var n=fabric.document.createElement("img"),r=e.src;e.width&&(n.width=e.width),e.height&&(n.height=e.height),n.onload=function(){fabric.Image.prototype._initFilters.call(e,e);var r=new fabric.Image(n,e);t&&t(r),n=n.onload=n.onerror=null},n.onerror=function(){fabric.log("Error loading "+n.src),t&&t(null,!0),n=n.onload=n.onerror=null},n.src=r},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))})},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.Brightness=fabric.util.createClass({type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;s=0&&N=0&&Co&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.object.clone,i=t.util.toFixed,s=t.StaticCanvas.supports("setLineDash");if(t.Text){t.warn("fabric.Text is already defined");return}var o=t.Object.prototype.stateProperties.concat();o.push("fontFamily","fontWeight","fontSize","path","text","textDecoration","textShadow","textAlign","fontStyle","lineHeight","backgroundColor","textBackgroundColor","useNative"),t.Text=t.util.createClass(t.Object,{_dimensionAffectingProps:{fontSize:!0,fontWeight:!0,fontFamily:!0,textDecoration:!0,fontStyle:!0,lineHeight:!0,stroke:!0,strokeWidth:!0,text:!0},type:"text",fontSize:40,fontWeight:"normal",fontFamily:"Times New Roman",textDecoration:"",textShadow:"",textAlign:"left",fontStyle:"",lineHeight:1.3,backgroundColor:"",textBackgroundColor:"",path:null,useNative:!0,stateProperties:o,initialize:function(e,t){t=t||{},this.text=e,this.__skipDimension=!0,this.setOptions(t),this.__skipDimension=!1,this._initDimensions(),this.setCoords()},_initDimensions:function(){if(this.__skipDimension)return;var e=t.util.createCanvasElement();this._render(e.getContext("2d"))},toString:function(){return"#'},_render:function(e){var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaNative:function(e){this.transform(e,t.isLikelyNode),this._setTextStyles(e);var n=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this._renderTextBackground(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),e.save(),this._setTextShadow(e),this.clipTo&&t.util.clipContext(this,e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this.clipTo&&e.restore(),this.textShadow&&e.restore(),e.restore(),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this._setBoundaries(e,n),this._totalLineHeight=0,this.setCoords()},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_setTextShadow:function(e){if(!this.textShadow)return;var t=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/,n=this.textShadow,r=t.exec(this.textShadow),i=n.replace(t,"");e.save(),e.shadowColor=i,e.shadowOffsetX=parseInt(r[1],10),e.shadowOffsetY=parseInt(r[2],10),e.shadowBlur=parseInt(r[3],10),this._shadows=[{blur:e.shadowBlur,color:e.shadowColor,offX:e.shadowOffsetX,offY:e.shadowOffsetY}],this._shadowOffsets=[[parseInt(e.shadowOffsetX,10),parseInt(e.shadowOffsetY,10)]]},_drawTextLine:function(e,t,n,r,i){if(this.textAlign!=="justify"){t[e](n,r,i);return}var s=t.measureText(n).width,o=this.width;if(o>s){var u=n.split(/\s+/),a=t.measureText(n.replace(/\s+/g,"")).width,f=o-a,l=u.length-1,c=f/l,h=0;for(var p=0,d=u.length;p-1&&i(this.fontSize),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(0)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(e,t){if(!this.visible)return;e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){return n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;this.backgroundColor&&this._boundaries&&o.push("');for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.textBackgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},setColor:function(e){return this.set("fill",e),this},getText:function(){return this.text},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Text.prototype,{_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_initDummyElementForCufon:function(){var e=fabric.document.createElement("pre"),t=fabric.document.createElement("div");return t.appendChild(e),typeof G_vmlCanvasManager=="undefined"?e.innerHTML=this.text:e.innerText=this.text.replace(/\r?\n/gi,"\r"),e.style.fontSize=this.fontSize+"px",e.style.letterSpacing="normal",e}}),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs"),r=n.createReadStream(e),i="";r.on("data",function(e){i+=e}),r.on("end",function(){t(i)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&(e instanceof Buffer||e.indexOf("data")===0)?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e&&request(e,"binary",r)},fabric.loadSVGFromURL=function(e,t){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t)}):request(e,"",function(e){fabric.loadSVGFromString(e,t)})},fabric.loadSVGFromString=function(e,t){var n=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(n.documentElement,function(e,n){t(e,n)})},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e),t(r)})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file diff --git a/dist/all.min.js.gz b/dist/all.min.js.gz index 4ebe22c36412d1d767abe119df921b4d4d396d51..22a6d1e97790412015131e51e29c684f5c1b4d47 100644 GIT binary patch delta 42821 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Ξ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 delta 42740 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