From ecc97413da26fa68c61afdd053eaf8f877186660 Mon Sep 17 00:00:00 2001 From: kangax Date: Sat, 16 Mar 2013 16:41:54 +0100 Subject: [PATCH] Version 1.1.1. Closes #447 --- HEADER.js | 2 +- dist/all.js | 109 +++++++++++++++++++++++++++++---------------- dist/all.min.js | 12 ++--- dist/all.min.js.gz | Bin 45867 -> 45942 bytes package.json | 2 +- 5 files changed, 78 insertions(+), 47 deletions(-) diff --git a/HEADER.js b/HEADER.js index 83e69dd9..b4c11a0a 100644 --- a/HEADER.js +++ b/HEADER.js @@ -1,6 +1,6 @@ /*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "1.1.0" }; +var fabric = fabric || { version: "1.1.1" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; diff --git a/dist/all.js b/dist/all.js index 9ad7628b..842eb325 100644 --- a/dist/all.js +++ b/dist/all.js @@ -1,7 +1,7 @@ /* build: `node build.js modules=ALL exclude=gestures` */ /*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "1.1.0" }; +var fabric = fabric || { version: "1.1.1" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; @@ -4576,10 +4576,10 @@ fabric.util.string = { this.type = options.type || 'linear'; coords = { - x1: options.coords ? options.coords.x1 : 0, - y1: options.coords ? options.coords.y1 : 0, - x2: options.coords ? options.coords.x2 : 0, - y2: options.coords ? options.coords.y2 : 0 + x1: options.coords.x1 || 0, + y1: options.coords.y1 || 0, + x2: options.coords.x2 || 0, + y2: options.coords.y2 || 0 }; if (this.type === 'radial') { @@ -6932,7 +6932,7 @@ fabric.Shadow = fabric.util.createClass(/** @scope fabric.Shadow.prototype */ { sendToBack: function (object) { removeFromArray(this._objects, object); this._objects.unshift(object); - return this.renderAll(); + return this.renderAll && this.renderAll(); }, /** @@ -6945,7 +6945,7 @@ fabric.Shadow = fabric.util.createClass(/** @scope fabric.Shadow.prototype */ { bringToFront: function (object) { removeFromArray(this._objects, object); this._objects.push(object); - return this.renderAll(); + return this.renderAll && this.renderAll(); }, /** @@ -6977,7 +6977,7 @@ fabric.Shadow = fabric.util.createClass(/** @scope fabric.Shadow.prototype */ { removeFromArray(this._objects, object); this._objects.splice(nextIntersectingIdx, 0, object); } - return this.renderAll(); + return this.renderAll && this.renderAll(); }, /** @@ -7011,7 +7011,7 @@ fabric.Shadow = fabric.util.createClass(/** @scope fabric.Shadow.prototype */ { removeFromArray(objects, object); objects.splice(nextIntersectingIdx, 0, object); } - this.renderAll(); + return this.renderAll && this.renderAll(); }, /** @@ -10422,7 +10422,12 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati * @chainable */ sendToBack: function() { - this.canvas.sendToBack(this); + if (this.group) { + fabric.StaticCanvas.prototype.sendToBack.call(this.group, this); + } + else { + this.canvas.sendToBack(this); + } return this; }, @@ -10433,7 +10438,12 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati * @chainable */ bringToFront: function() { - this.canvas.bringToFront(this); + if (this.group) { + fabric.StaticCanvas.prototype.bringToFront.call(this.group, this); + } + else { + this.canvas.bringToFront(this); + } return this; }, @@ -10444,7 +10454,12 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati * @chainable */ sendBackwards: function() { - this.canvas.sendBackwards(this); + if (this.group) { + fabric.StaticCanvas.prototype.sendBackwards.call(this.group, this); + } + else { + this.canvas.sendBackwards(this); + } return this; }, @@ -10455,7 +10470,12 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati * @chainable */ bringForward: function() { - this.canvas.bringForward(this); + if (this.group) { + fabric.StaticCanvas.prototype.bringForward.call(this.group, this); + } + else { + this.canvas.bringForward(this); + } return this; } }); @@ -12964,7 +12984,8 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati result[i] = [xc, yc, th2, th3, rx, ry, sin_th, cos_th]; } - return (arcToSegmentsCache[argsString] = result); + arcToSegmentsCache[argsString] = result; + return result; } function segmentToBezier(cx, cy, th0, th1, rx, ry, sin_th, cos_th) { @@ -12987,11 +13008,13 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati var x2 = x3 + t * Math.sin(th1); var y2 = y3 - t * Math.cos(th1); - return (segmentToBezierCache[argsString] = [ + segmentToBezierCache[argsString] = [ a00 * x1 + a01 * y1, a10 * x1 + a11 * y1, a00 * x2 + a01 * y2, a10 * x2 + a11 * y2, a00 * x3 + a01 * y3, a10 * x3 + a11 * y3 - ]); + ]; + + return segmentToBezierCache[argsString]; } "use strict"; @@ -13981,9 +14004,12 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati initialize: function(objects, options) { options = options || { }; - this.objects = objects || []; - this.originalState = { }; + this._objects = objects || []; + for (var i = this._objects.length; i--; ) { + this._objects[i].group = this; + } + this.originalState = { }; this.callSuper('initialize'); this._calcBounds(); @@ -14043,7 +14069,7 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati * @return {Array} group objects */ getObjects: function() { - return this.objects; + return this._objects; }, /** @@ -14055,7 +14081,8 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati */ addWithUpdate: function(object) { this._restoreObjectsState(); - this.objects.push(object); + this._objects.push(object); + object.group = this; this._calcBounds(); this._updateObjectsCoords(); return this; @@ -14070,7 +14097,8 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati */ removeWithUpdate: function(object) { this._restoreObjectsState(); - removeFromArray(this.objects, object); + removeFromArray(this._objects, object); + delete object.group; object.setActive(false); this._calcBounds(); this._updateObjectsCoords(); @@ -14085,7 +14113,8 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati * @chainable */ add: function(object) { - this.objects.push(object); + this._objects.push(object); + object.group = this; return this; }, @@ -14097,7 +14126,8 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati * @chainable */ remove: function(object) { - removeFromArray(this.objects, object); + removeFromArray(this._objects, object); + delete object.group; return this; }, @@ -14133,10 +14163,10 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati */ _set: function(key, value) { if (key in this.delegatedProperties) { - var i = this.objects.length; + var i = this._objects.length; this[key] = value; while (i--) { - this.objects[i].set(key, value); + this._objects[i].set(key, value); } } else { @@ -14151,7 +14181,7 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati * @return {Boolean} `true` if group contains an object */ contains: function(object) { - return this.objects.indexOf(object) > -1; + return this._objects.indexOf(object) > -1; }, /** @@ -14162,7 +14192,7 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati */ toObject: function(propertiesToInclude) { return extend(this.callSuper('toObject', propertiesToInclude), { - objects: invoke(this.objects, 'toObject', propertiesToInclude) + objects: invoke(this._objects, 'toObject', propertiesToInclude) }); }, @@ -14180,9 +14210,9 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati this.clipTo && fabric.util.clipContext(this, ctx); //The array is now sorted in order of highest first, so start from end. - for (var i = this.objects.length; i > 0; i--) { + for (var i = this._objects.length; i > 0; i--) { - var object = this.objects[i-1], + var object = this._objects[i-1], originalScaleFactor = object.borderScaleFactor, originalHasRotatingPoint = object.hasRotatingPoint; @@ -14234,7 +14264,7 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati * @chainable */ _restoreObjectsState: function() { - this.objects.forEach(this._restoreObjectState, this); + this._objects.forEach(this._restoreObjectState, this); return this; }, @@ -14266,6 +14296,7 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati delete object.__origHasControls; object.setActive(false); object.setCoords(); + delete object.group; return this; }, @@ -14371,10 +14402,10 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati aY = [], minX, minY, maxX, maxY, o, width, height, i = 0, - len = this.objects.length; + len = this._objects.length; for (; i < len; ++i) { - o = this.objects[i]; + o = this._objects[i]; o.setCoords(); for (var prop in o.oCoords) { aX.push(o.oCoords[prop].x); @@ -14423,9 +14454,9 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati * @chainable */ toGrayscale: function() { - var i = this.objects.length; + var i = this._objects.length; while (i--) { - this.objects[i].toGrayscale(); + this._objects[i].toGrayscale(); } return this; }, @@ -14437,8 +14468,8 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati */ toSVG: function() { var objectsMarkup = [ ]; - for (var i = this.objects.length; i--; ) { - objectsMarkup.push(this.objects[i].toSVG()); + for (var i = this._objects.length; i--; ) { + objectsMarkup.push(this._objects[i].toSVG()); } return ( @@ -14459,8 +14490,8 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati return this[prop]; } else { - for (var i = 0, len = this.objects.length; i < len; i++) { - if (this.objects[i][prop]) { + for (var i = 0, len = this._objects.length; i < len; i++) { + if (this._objects[i][prop]) { return true; } } @@ -14469,7 +14500,7 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati } else { if (prop in this.delegatedProperties) { - return this.objects[0] && this.objects[0].get(prop); + return this._objects[0] && this._objects[0].get(prop); } return this[prop]; } diff --git a/dist/all.min.js b/dist/all.min.js index 811cfcf8..dcf9dbf5 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.1.0"};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;_r?n:i-t;s(u(f,a,l,n));if(i>r||o()){e.onComplete&&e.onComplete();return}h(c)}()}function p(e,t,n){if(e){var r=new Image;r.onload=function(){t&&t.call(n,r),r=r.onload=null},r.src=e}else t&&t.call(n,e)}function d(e,t){function n(e){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(e))]}function r(){++s===o&&t&&t(i)}var i=[],s=0,o=e.length;e.forEach(function(e,t){if(!e.type)return;var s=n(e.type);s.async?s.fromObject(e,function(e,n){n||(i[t]=e),r()}):(i[t]=s.fromObject(e),r())})}function v(e,t,n){var r;if(e.length>1){var i=e.some(function(e){return e.type==="text"});i?(r=new fabric.Group([],t),e.reverse().forEach(function(e){e.cx&&(e.left=e.cx),e.cy&&(e.top=e.cy),r.addWithUpdate(e)})):r=new fabric.PathGroup(e,t)}else r=e[0];return typeof n!="undefined"&&r.setSourcePath(n),r}function m(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),n[d?"lineTo":"moveTo"](r,0),d=!d;n.restore()}function y(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function b(e){var t=e.prototype;for(var n=t.stateProperties.length;n--;){var r=t.stateProperties[n],i=r.charAt(0).toUpperCase()+r.slice(1),s="set"+i,o="get"+i;t[o]||(t[o]=function(e){return new Function('return this.get("'+e+'")')}(r)),t[s]||(t[s]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(r))}}function w(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}var e=Math.sqrt,t=Math.atan2;fabric.util={};var i=Math.PI/180,c=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)},h=function(){return c.apply(fabric.window,arguments)};fabric.util.removeFromArray=n,fabric.util.degreesToRadians=s,fabric.util.radiansToDegrees=o,fabric.util.rotatePoint=u,fabric.util.toFixed=a,fabric.util.getRandomInt=r,fabric.util.falseFunction=f,fabric.util.animate=l,fabric.util.requestAnimFrame=h,fabric.util.loadImage=p,fabric.util.enlivenObjects=d,fabric.util.groupSVGElements=v,fabric.util.populateWithProperties=m,fabric.util.drawDashedLine=g,fabric.util.createCanvasElement=y,fabric.util.createAccessors=b,fabric.util.clipContext=w}(),function(){function t(t,n){var r=e.call(arguments,2),i=[];for(var s=0,o=t.length;s=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=0,n=0;do t+=e.offsetTop||0,n+=e.offsetLeft||0,e=e.offsetParent;while(e);return{left:n,top:t}}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});var f;fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle?f=function(e){return fabric.document.defaultView.getComputedStyle(e,null).position}:f=function(e){var t=e.style.position;return!t&&e.currentStyle&&(t=e.currentStyle.position),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.type="text/javascript",r.setAttribute("runat","server"),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.getElementPosition=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){d.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),d.has(e,function(r){r?d.get(e,function(e){var t=m(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function m(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 g(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 y(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t}function b(e){var t="";return e.backgroundColor&&e.backgroundColor.source&&(t=['',''].join("")),t}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s={cx:"left",x:"left",cy:"top",y:"top",r:"radius","fill-opacity":"opacity","fill-rule":"fillRule","stroke-width":"strokeWidth",transform:"transformMatrix","text-decoration":"textDecoration","font-size":"fontSize","font-weight":"fontWeight","font-style":"fontStyle","font-family":"fontFamily"};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 t(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function n(e,t){e[2]=t[0]}function r(e,t){e[1]=t[0]}function i(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var s=[1,0,0,1,0,0],o="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",u="(?:\\s+,?\\s*|,\\s*)",a="(?:(skewX)\\s*\\(\\s*("+o+")\\s*\\))",f="(?:(skewY)\\s*\\(\\s*("+o+")\\s*\\))",l="(?:(rotate)\\s*\\(\\s*("+o+")(?:"+u+"("+o+")"+u+"("+o+"))?\\s*\\))",c="(?:(scale)\\s*\\(\\s*("+o+")(?:"+u+"("+o+"))?\\s*\\))",h="(?:(translate)\\s*\\(\\s*("+o+")(?:"+u+"("+o+"))?\\s*\\))",p="(?:(matrix)\\s*\\(\\s*("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+"\\s*\\))",d="(?:"+p+"|"+h+"|"+c+"|"+l+"|"+a+"|"+f+")",v="(?:"+d+"(?:"+u+d+")*"+")",m="^\\s*(?:"+v+"?)\\s*$",g=new RegExp(m),y=new RegExp(d);return function(o){var u=s.concat();return!o||o&&!g.test(o)?u:(o.replace(y,function(s){var o=(new RegExp(d)).exec(s).filter(function(e){return e!==""&&e!=null}),a=o[1],f=o.slice(2).map(parseFloat);switch(a){case"translate":i(u,f);break;case"rotate":e(u,f);break;case"scale":t(u,f);break;case"skewX":n(u,f);break;case"skewY":r(u,f);break;case"matrix":u=f}}),u)}}(),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,p=f.length;c']:this.type==="radial"&&(i=["']);for(var s=0;s');return i.push(this.type==="linear"?"":""),i.join("")}}),fabric.util.object.extend(fabric.Gradient,{fromElement:function(n,r){var i=n.getElementsByTagName("stop"),s=n.nodeName==="linearGradient"?"linear":"radial",o=n.getAttribute("gradientUnits")||"objectBoundingBox",u=[],a={};s==="linear"?a={x1:n.getAttribute("x1")||0,y1:n.getAttribute("y1")||0,x2:n.getAttribute("x2")||"100%",y2:n.getAttribute("y2")||0}:s==="radial"&&(a={x1:n.getAttribute("fx")||n.getAttribute("cx")||"50%",y1:n.getAttribute("fy")||n.getAttribute("cy")||"50%",r1:0,x2:n.getAttribute("cx")||"50%",y2:n.getAttribute("cy")||"50%",r2:n.getAttribute("r")||"50%"});for(var f=i.length;f--;)u.push(e(i[f]));return t(r,a),new fabric.Gradient({type:s,coords:a,gradientUnits:o,colorStops:u})},forObject:function(e,n){return n||(n={}),t(e,n),new fabric.Gradient(n)}}),fabric.getGradientDefs=r}(),fabric.Pattern=fabric.util.createClass({repeat:"repeat",initialize:function(e){e||(e={}),e.source&&(this.source=typeof e.source=="string"?new Function(e.source):e.source),e.repeat&&(this.repeat=e.repeat)},toObject:function(){var e;return typeof this.source=="function"?e=String(this.source).match(/function\s+\w*\s*\(.*\)\s+\{([\s\S]*)\}/)[1]:typeof this.source.src=="string"&&(e=this.source.src),{source:e,repeat:this.repeat}},toLive:function(e){var t=typeof this.source=="function"?this.source():this.source;return e.createPattern(t,this.repeat)}}),fabric.Shadow=fabric.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,initialize:function(e){for(var t in e)this[t]=e[t]},toObject:function(){return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY}},toSVG:function(){}}),function(e){"use strict";function n(e,t){arguments.length>0&&this.init(e,t)}var t=e.fabric||(e.fabric={});if(t.Point){t.warn("fabric.Point is already defined");return}t.Point=n,n.prototype={constructor:n,init:function(e,t){this.x=e,this.y=t},add:function(e){return new n(this.x+e.x,this.y+e.y)},addEquals:function(e){return this.x+=e.x,this.y+=e.y,this},scalarAdd:function(e){return new n(this.x+e,this.y+e)},scalarAddEquals:function(e){return this.x+=e,this.y+=e,this},subtract:function(e){return new n(this.x-e.x,this.y-e.y)},subtractEquals:function(e){return this.x-=e.x,this.y-=e.y,this},scalarSubtract:function(e){return new n(this.x-e,this.y-e)},scalarSubtractEquals:function(e){return this.x-=e,this.y-=e,this},multiply:function(e){return new n(this.x*e,this.y*e)},multiplyEquals:function(e){return this.x*=e,this.y*=e,this},divide:function(e){return new n(this.x/e,this.y/e)},divideEquals:function(e){return this.x/=e,this.y/=e,this},eq:function(e){return this.x===e.x&&this.y===e.y},lt:function(e){return this.xe.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){arguments.length>0&&this.init(e)}var t=e.fabric||(e.fabric={});if(t.Intersection){t.warn("fabric.Intersection is already defined");return}t.Intersection=n,t.Intersection.prototype={init:function(e){this.status=e,this.points=[]},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("No Intersection")}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("No Intersection"),s=r.length;for(var o=0;o0&&(i.status="Intersection"),i},t.Intersection.intersectPolygonPolygon=function(e,t){var r=new n("No Intersection"),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("No Intersection");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])}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&&this.setSource(t)},getSource:function(){return this._source},setSource:function(e){this._source=e},toRgb:function(){var e=this.getSource();return"rgb("+e[0]+","+e[1]+","+e[2]+")"},toRgba:function(){var e=this.getSource();return"rgba("+e[0]+","+e[1]+","+e[2]+","+e[3]+")"},toHex:function(){var e=this.getSource(),t=e[0].toString(16);t=t.length===1?"0"+t:t;var n=e[1].toString(16);n=n.length===1?"0"+n:n;var r=e[2].toString(16);return r=r.length===1?"0"+r:r,t.toUpperCase()+n.toUpperCase()+r.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var t=this.getSource();return t[3]=e,this.setSource(t),this},toGrayscale:function(){var e=this.getSource(),t=parseInt((e[0]*.3+e[1]*.59+e[2]*.11).toFixed(0),10),n=e[3];return this.setSource([t,t,t,n]),this},toBlackWhite:function(e){var t=this.getSource(),n=(t[0]*.3+t[1]*.59+t[2]*.11).toFixed(0),r=t[3];return e=e||127,n=Number(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('');for(var n=0,r=this.getObjects(),i=r.length;n"),t.join("")},isEmpty:function(){return this._objects.length===0},remove:function(e){this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared"));var t=this._objects,n=t.indexOf(e);return n!==-1&&(t.splice(n,1),this.fire("object:removed",{target:e})),this.renderAll(),e},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll()},sendBackwards:function(e){var t=this._objects.indexOf(e),r=t;if(t!==0){for(var i=t-1;i>=0;--i){var s=e.intersectsWithObject(this._objects[i])||e.isContainedWithinObject(this._objects[i])||this._objects[i].isContainedWithinObject(e);if(s){r=i;break}}n(this._objects,e),this._objects.splice(r,0,e)}return this.renderAll()},bringForward:function(e){var t=this.getObjects(),r=t.indexOf(e),i=r;if(r!==t.length-1){for(var s=r+1,o=this._objects.length;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;a0?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));for(var c=0,h=this._objects.length;c1&&(t=new fabric.Group(t),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.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.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"?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);if(this.stroke||this.strokeDashArray)e.lineWidth=this.strokeWidth,this.stroke&&this.stroke.toLive?e.strokeStyle=this.stroke.toLive(e):e.strokeStyle=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},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){if(t.Image){var n=new o;n.onload=function(){e&&e(new t.Image(n),r),n=n.onload=null};var r={angle:this.getAngle(),flipX:this.getFlipX(),flipY:this.getFlipY()};this.set({angle:0,flipX:!1,flipY:!1}),this.toDataURL(function(e){n.src=e})}return this},toDataURL:function(e){function i(t){t.left=n.width/2,t.top=n.height/2,t.setActive(!1),r.add(t);var i=r.toDataURL();r.dispose(),r=t=null,e&&e(i)}var n=t.util.createCanvasElement();n.width=this.getBoundingRectWidth(),n.height=this.getBoundingRectHeight(),t.util.wrapElement(n,"div");var r=new t.Canvas(n);r.backgroundColor="transparent",r.renderAll(),this.constructor.async?this.clone(i):i(this.clone())},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(){this.originalState={},this.saveState()},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){this.set("fill",new t.Pattern(e))},setShadow:function(e){this.set("shadow",new t.Shadow(e))},animate:function(){if(arguments[0]&&typeof arguments[0]=="object")for(var e in arguments[0])this._animate(e,arguments[0][e],arguments[1]);else this._animate.apply(this,arguments);return this},_animate:function(e,n,r){var i=this,s;n=n.toString(),r?r=t.util.object.clone(r):r={},~e.indexOf(".")&&(s=e.split("."));var o=s?this.get(s[0])[s[1]]:this.get(e);"from"in r||(r.from=o),~n.indexOf("=")?n=o+parseFloat(n.replace("=","")):n=parseFloat(n),t.util.animate({startValue:r.from,endValue:n,byValue:r.by,easing:r.easing,duration:r.duration,onChange:function(t){s?i[s[0]][s[1]]=t:i.set(e,t),r.onChange&&r.onChange()},onComplete:function(){i.setCoords(),r.onComplete&&r.onComplete()}})},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.centerH().centerV()},remove:function(){return this.canvas.remove(this)},sendToBack:function(){return this.canvas.sendToBack(this),this},bringToFront:function(){return this.canvas.bringToFront(this),this},sendBackwards:function(){return this.canvas.sendBackwards(this),this},bringForward:function(){return this.canvas.bringForward(this),this}}),t.util.createAccessors(t.Object),t.Object.prototype.rotate=t.Object.prototype.setAngle,n(t.Object.prototype,t.Observable),t.Object.NUM_FRACTION_DIGITS=2,t.Object.__uid=0}(typeof exports!="undefined"?exports:this),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{translateToCenterPoint:function(t,n,r){var i=t.x,s=t.y;return n==="left"?i=t.x+this.getWidth()/2:n==="right"&&(i=t.x-this.getWidth()/2),r==="top"?s=t.y+this.getHeight()/2:r==="bottom"&&(s=t.y-this.getHeight()/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},translateToOriginPoint:function(t,n,r){var i=t.x,s=t.y;return n==="left"?i=t.x-this.getWidth()/2:n==="right"&&(i=t.x+this.getWidth()/2),r==="top"?s=t.y-this.getHeight()/2:r==="bottom"&&(s=t.y+this.getHeight()/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},getCenterPoint:function(){return this.translateToCenterPoint(new fabric.Point(this.left,this.top),this.originX,this.originY)},toLocalPoint:function(t,n,r){var i=this.getCenterPoint(),s,o;return n!==undefined&&r!==undefined?(n==="left"?s=i.x-this.getWidth()/2:n==="right"?s=i.x+this.getWidth()/2:s=i.x,r==="top"?o=i.y-this.getHeight()/2:r==="bottom"?o=i.y+this.getHeight()/2:o=i.y):(s=this.left,o=this.top),fabric.util.rotatePoint(new fabric.Point(t.x,t.y),i,-e(this.angle)).subtractEquals(new fabric.Point(s,o))},setPositionByOrigin:function(e,t,n){var r=this.translateToCenterPoint(e,t,n),i=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",i.x),this.set("top",i.y)},adjustPosition:function(t){var n=e(this.angle),r=this.getWidth()/2,i=Math.cos(n)*r,s=Math.sin(n)*r,o=this.getWidth(),u=Math.cos(n)*o,a=Math.sin(n)*o;this.originX==="center"&&t==="left"||this.originX==="right"&&t==="center"?(this.left-=i,this.top-=s):this.originX==="left"&&t==="center"||this.originX==="center"&&t==="right"?(this.left+=i,this.top+=s):this.originX==="left"&&t==="right"?(this.left+=u,this.top+=a):this.originX==="right"&&t==="left"&&(this.left-=u,this.top-=a),this.setCoords(),this.originX=t}})}(),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{intersectsWithRect:function(e,t){var n=this.oCoords,r=new fabric.Point(n.tl.x,n.tl.y),i=new fabric.Point(n.tr.x,n.tr.y),s=new fabric.Point(n.bl.x,n.bl.y),o=new fabric.Point(n.br.x,n.br.y),u=fabric.Intersection.intersectPolygonRectangle([r,i,o,s],e,t);return u.status==="Intersection"},intersectsWithObject:function(e){function t(e){return{tl:new fabric.Point(e.tl.x,e.tl.y),tr:new fabric.Point(e.tr.x,e.tr.y),bl:new fabric.Point(e.bl.x,e.bl.y),br:new fabric.Point(e.br.x,e.br.y)}}var n=t(this.oCoords),r=t(e.oCoords),i=fabric.Intersection.intersectPolygonPolygon([n.tl,n.tr,n.br,n.bl],[r.tl,r.tr,r.br,r.bl]);return i.status==="Intersection"},isContainedWithinObject:function(e){return this.isContainedWithinRect(e.oCoords.tl,e.oCoords.br)},isContainedWithinRect:function(e,t){var n=this.oCoords,r=new fabric.Point(n.tl.x,n.tl.y),i=new fabric.Point(n.tr.x,n.tr.y),s=new fabric.Point(n.bl.x,n.bl.y);return r.x>e.x&&i.xe.y&&s.y1?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(this.currentHeight/this.currentWidth),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:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords(),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,a),o=this._findCrossPoints(i,s,u);if(o%2===1&&o!==0)return this.__corner=a,a}return!1},_findCrossPoints:function(e,t,n){var r,i,s,o,u,a,f=0,l;for(var c in n){l=n[c];if(l.o.y=t&&l.d.y>=t)continue;l.o.x===l.d.x&&l.o.x>=e?(u=l.o.x,a=t):(r=0,i=(l.d.y-l.o.y)/(l.d.x-l.o.x),s=t-r*e,o=l.o.y-i*l.o.x,u=-(s-o)/(r-i),a=s+r*u),u>=e&&(f+=1);if(f===2)break}return f},_getImageLines:function(e){return{topline:{o:e.tl,d:e.tr},rightline:{o:e.tr,d:e.br},bottomline:{o:e.br,d:e.bl},leftline:{o:e.bl,d:e.tl}}},_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;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;var t=this.cornerSize,n=t/2,r=this.strokeWidth/2,i=-(this.width/2),s=-(this.height/2),o,u,a=t/this.scaleX,f=t/this.scaleY,l=this.padding/this.scaleX,c=this.padding/this.scaleY,h=n/this.scaleY,p=n/this.scaleX,d=(n-t)/this.scaleX,v=(n-t)/this.scaleY,m=this.height,g=this.width,y=this.transparentCorners?"strokeRect":"fillRect",b=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,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,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,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,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,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,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};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",this.x2-this.x1||1),this.set("height",this.y2-this.y1||1),this.set("left","left"in e?e.left:this.x1+this.width/2),this.set("top","top"in e?e.top:this.y1+this.height/2)},_set:function(e,t){return this[e]=t,e in r&&this._setWidthHeight(),this},_render:function(e){e.beginPath(),this.group&&e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top),e.moveTo(this.width===1?0:-this.width/2,this.height===1?0:-this.height/2),e.lineTo(this.width===1?0:this.width/2,this.height===1?0:this.height/2),e.lineWidth=this.strokeWidth;var t=e.strokeStyle;e.strokeStyle=e.fillStyle,e.stroke(),e.strokeStyle=t},complexity:function(){return 1},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("")}}),t.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".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.fill&&e.fill(),this._removeShadow(e),this.stroke&&e.stroke()},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="cx cy r fill fill-opacity opacity stroke stroke-width transform".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.fill&&e.fill(),this.stroke&&e.stroke()},complexity:function(){return 1},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("")}}),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.stroke&&e.stroke(),this._removeShadow(e),this.fill&&e.fill(),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".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,initialize:function(e){e=e||{},this._initStateProperties(),this.callSuper("initialize",e),this._initRxRy(),this.x=0,this.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;e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&this.group&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y),e.moveTo(r+t,i),e.lineTo(r+s-t,i),e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this.fill&&e.fill(),this._removeShadow(e),this.strokeDashArray?this._renderDashedStroke(e):this.stroke&&e.stroke()},_renderDashedStroke:function(e){function u(u,a){var f=0,l=0,c=(a?i.height:i.width)+s*2;while(fc&&(l=f-c),u?n+=h*u-(l*u||0):r+=h*a-(l*a||0),e[1&t?"moveTo":"lineTo"](n,r),t>=o&&(t=0)}}1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray);var t=0,n=-this.width/2,r=-this.height/2,i=this,s=this.padding,o=this.strokeDashArray.length;e.save(),e.beginPath(),u(1,0),u(0,1),u(-1,0),u(0,-1),e.stroke(),e.closePath(),e.restore()},_normalizeLeftTopProperties:function(e){return e.left&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),e.top&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},complexity:function(){return 1},toObject:function(e){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0})},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("")}}),t.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".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;n1&&(g=Math.sqrt(g),n*=g,i*=g);var y=d/n,b=p/n,w=-p/i,E=d/i,S=y*l+b*c,x=w*l+E*c,T=y*e+b*t,N=w*e+E*t,C=(T-S)*(T-S)+(N-x)*(N-x),k=1/C-.25;k<0&&(k=0);var L=Math.sqrt(k);a===u&&(L=-L);var A=.5*(S+T)-L*(N-x),O=.5*(x+N)+L*(T-S),M=Math.atan2(x-O,S-A),_=Math.atan2(N-O,T-A),D=_-M;D<0&&a===1?D+=2*Math.PI:D>0&&a===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B"},toObject:function(e){var t=h(this.callSuper("toObject",e),{path:this.path});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;for(var s=0,o,u=this.path.length;sc)for(var h=1,p=o.length;h"];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,o=t.util.removeFromArray;if(t.Group)return;var u={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,{type:"group",initialize:function(e,t){t=t||{},this.objects=e||[],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),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),o(this.objects,e),e.setActive(!1),this._calcBounds(),this._updateObjectsCoords(),this},add:function(e){return this.objects.push(e),this},remove:function(e){return o(this.objects,e),this},size:function(){return this.getObjects().length},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},contains:function(e){return this.objects.indexOf(e)>-1},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this.objects,"toObject",e)})},render:function(e,n){e.save(),this.transform(e);var r=Math.max(this.scaleX,this.scaleY);this.clipTo&&t.util.clipContext(this,e);for(var i=this.objects.length;i>0;i--){var s=this.objects[i-1],o=s.borderScaleFactor,u=s.hasRotatingPoint;s.borderScaleFactor=r,s.hasRotatingPoint=!1,s.render(e),s.borderScaleFactor=o,s.hasRotatingPoint=u}this.clipTo&&e.restore(),!n&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore(),this.setCoords()},item:function(e){return this.getObjects()[e]},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=typeof t.complexity=="function"?t.complexity():0,e},0)},_restoreObjectsState:function(){return this.objects.forEach(this._restoreObjectState,this),this},_restoreObjectState:function(e){var t=this.get("left"),n=this.get("top"),r=this.getAngle()*(Math.PI/180),i=Math.cos(r)*e.get("top")+Math.sin(r)*e.get("left"),s=-Math.sin(r)*e.get("top")+Math.cos(r)*e.get("left");return e.setAngle(e.getAngle()+this.getAngle()),e.set("left",t+s*this.get("scaleX")),e.set("top",n+i*this.get("scaleY")),e.set("scaleX",e.get("scaleX")*this.get("scaleX")),e.set("scaleY",e.get("scaleY")*this.get("scaleY")),e.setCoords(),e.hasControls=e.__origHasControls,delete e.__origHasControls,e.setActive(!1),e.setCoords(),this},destroy:function(){return this._restoreObjectsState()},saveCoords:function(){return this._originalLeft=this.get("left"),this._originalTop=this.get("top"),this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){return this.forEachObject(function(e){e.setCoords()}),this},activateAllObjects:function(){return this.forEachObject(function(e){e.setActive()}),this},forEachObject:t.StaticCanvas.prototype.forEachObject,_setOpacityIfSame:function(){var e=this.getObjects(),t=e[0]?e[0].get("opacity"):1,n=e.every(function(e){return e.get("opacity")===t});n&&(this.opacity=t)},_calcBounds:function(){var e=[],t=[],n,s,o,u,a,f,l,c=0,h=this.objects.length;for(;ce.x&&i-ne.y},toGrayscale:function(){var e=this.objects.length;while(e--)this.objects[e].toGrayscale();return this},toSVG:function(){var e=[];for(var t=this.objects.length;t--;)e.push(this.objects[t].toSVG());return''+e.join("")+""},get:function(e){if(e in u){if(this[e])return this[e];for(var t=0,n=this.objects.length;t'+'"+""},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=typeof Buffer!="undefined"&&typeof window=="undefined",n=this._originalImage,r=fabric.util.createCanvasElement(),i=t?new(require("canvas").Image):fabric.document.createElement("img"),s=this;r.width=n.width,r.height=n.height,r.getContext("2d").drawImage(n,0,0,n.width,n.height),this.filters.forEach(function(e){e&&e.applyTo(r)}),i.onload=function(){s._element=i,e&&e(),i.onload=r=n=null},i.width=n.width,i.height=n.height;if(t){var o=r.toDataURL("image/png").substring(22);i.src=new Buffer(o,"base64"),s._element=i,e&&e()}else i.src=r.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){var r=fabric.document.createElement("img");r.onload=function(){t&&t(new fabric.Image(r,n)),r=r.onload=null},r.src=e},fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform 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.setActive(!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.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo: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;ao&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},fabric.Image.filters.Convolute=fabric.util.createClass({type:"Convolute",initialize:function(e){e||(e={}),this.opaque=e.opaque,this.matrix=e.matrix||[0,0,0,0,1,0,0,0,0];var t=fabric.util.createCanvasElement();this.tmpCtx=t.getContext("2d")},_createImageData:function(e,t){return this.tmpCtx.createImageData(e,t)},applyTo:function(e){var t=this.matrix,n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=Math.round(Math.sqrt(t.length)),s=Math.floor(i/2),o=r.data,u=r.width,a=r.height,f=u,l=a,c=this._createImageData(f,l),h=c.data,p=this.opaque?1:0;for(var d=0;d=0&&N=0&&C'},_render:function(e){typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_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,strokeStyle:this.strokeStyle,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()},_renderViaNative:function(e){this.transform(e),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)),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(),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){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(" ")},_initDummyElementForCufon:function(){var e=t.document.createElement("pre"),n=t.document.createElement("div");return n.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},render:function(e,t){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,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,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?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 s&&(this._initDimensions(),this.setCoords())}}),t.Text.ATTRIBUTE_NAMES="x y fill fill-opacity opacity stroke stroke-width transform font-family font-style font-weight font-size text-decoration".split(" "),t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},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.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),function(){function request(e,t,n){var r=URL.parse(e),i=HTTP.request({hostname:r.hostname,port:r.port,path:r.pathname,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)})});i.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+ -r.hostname+":"+r.port):fabric.log(e.message)})}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"),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.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(),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.1.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;_r?n:i-t;s(u(f,a,l,n));if(i>r||o()){e.onComplete&&e.onComplete();return}h(c)}()}function p(e,t,n){if(e){var r=new Image;r.onload=function(){t&&t.call(n,r),r=r.onload=null},r.src=e}else t&&t.call(n,e)}function d(e,t){function n(e){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(e))]}function r(){++s===o&&t&&t(i)}var i=[],s=0,o=e.length;e.forEach(function(e,t){if(!e.type)return;var s=n(e.type);s.async?s.fromObject(e,function(e,n){n||(i[t]=e),r()}):(i[t]=s.fromObject(e),r())})}function v(e,t,n){var r;if(e.length>1){var i=e.some(function(e){return e.type==="text"});i?(r=new fabric.Group([],t),e.reverse().forEach(function(e){e.cx&&(e.left=e.cx),e.cy&&(e.top=e.cy),r.addWithUpdate(e)})):r=new fabric.PathGroup(e,t)}else r=e[0];return typeof n!="undefined"&&r.setSourcePath(n),r}function m(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),n[d?"lineTo":"moveTo"](r,0),d=!d;n.restore()}function y(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function b(e){var t=e.prototype;for(var n=t.stateProperties.length;n--;){var r=t.stateProperties[n],i=r.charAt(0).toUpperCase()+r.slice(1),s="set"+i,o="get"+i;t[o]||(t[o]=function(e){return new Function('return this.get("'+e+'")')}(r)),t[s]||(t[s]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(r))}}function w(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}var e=Math.sqrt,t=Math.atan2;fabric.util={};var i=Math.PI/180,c=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)},h=function(){return c.apply(fabric.window,arguments)};fabric.util.removeFromArray=n,fabric.util.degreesToRadians=s,fabric.util.radiansToDegrees=o,fabric.util.rotatePoint=u,fabric.util.toFixed=a,fabric.util.getRandomInt=r,fabric.util.falseFunction=f,fabric.util.animate=l,fabric.util.requestAnimFrame=h,fabric.util.loadImage=p,fabric.util.enlivenObjects=d,fabric.util.groupSVGElements=v,fabric.util.populateWithProperties=m,fabric.util.drawDashedLine=g,fabric.util.createCanvasElement=y,fabric.util.createAccessors=b,fabric.util.clipContext=w}(),function(){function t(t,n){var r=e.call(arguments,2),i=[];for(var s=0,o=t.length;s=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=0,n=0;do t+=e.offsetTop||0,n+=e.offsetLeft||0,e=e.offsetParent;while(e);return{left:n,top:t}}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});var f;fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle?f=function(e){return fabric.document.defaultView.getComputedStyle(e,null).position}:f=function(e){var t=e.style.position;return!t&&e.currentStyle&&(t=e.currentStyle.position),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.type="text/javascript",r.setAttribute("runat","server"),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.getElementPosition=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){d.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),d.has(e,function(r){r?d.get(e,function(e){var t=m(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function m(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 g(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 y(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t}function b(e){var t="";return e.backgroundColor&&e.backgroundColor.source&&(t=['',''].join("")),t}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s={cx:"left",x:"left",cy:"top",y:"top",r:"radius","fill-opacity":"opacity","fill-rule":"fillRule","stroke-width":"strokeWidth",transform:"transformMatrix","text-decoration":"textDecoration","font-size":"fontSize","font-weight":"fontWeight","font-style":"fontStyle","font-family":"fontFamily"};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 t(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function n(e,t){e[2]=t[0]}function r(e,t){e[1]=t[0]}function i(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var s=[1,0,0,1,0,0],o="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",u="(?:\\s+,?\\s*|,\\s*)",a="(?:(skewX)\\s*\\(\\s*("+o+")\\s*\\))",f="(?:(skewY)\\s*\\(\\s*("+o+")\\s*\\))",l="(?:(rotate)\\s*\\(\\s*("+o+")(?:"+u+"("+o+")"+u+"("+o+"))?\\s*\\))",c="(?:(scale)\\s*\\(\\s*("+o+")(?:"+u+"("+o+"))?\\s*\\))",h="(?:(translate)\\s*\\(\\s*("+o+")(?:"+u+"("+o+"))?\\s*\\))",p="(?:(matrix)\\s*\\(\\s*("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+"\\s*\\))",d="(?:"+p+"|"+h+"|"+c+"|"+l+"|"+a+"|"+f+")",v="(?:"+d+"(?:"+u+d+")*"+")",m="^\\s*(?:"+v+"?)\\s*$",g=new RegExp(m),y=new RegExp(d);return function(o){var u=s.concat();return!o||o&&!g.test(o)?u:(o.replace(y,function(s){var o=(new RegExp(d)).exec(s).filter(function(e){return e!==""&&e!=null}),a=o[1],f=o.slice(2).map(parseFloat);switch(a){case"translate":i(u,f);break;case"rotate":e(u,f);break;case"scale":t(u,f);break;case"skewX":n(u,f);break;case"skewY":r(u,f);break;case"matrix":u=f}}),u)}}(),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,p=f.length;c']:this.type==="radial"&&(i=["']);for(var s=0;s');return i.push(this.type==="linear"?"":""),i.join("")}}),fabric.util.object.extend(fabric.Gradient,{fromElement:function(n,r){var i=n.getElementsByTagName("stop"),s=n.nodeName==="linearGradient"?"linear":"radial",o=n.getAttribute("gradientUnits")||"objectBoundingBox",u=[],a={};s==="linear"?a={x1:n.getAttribute("x1")||0,y1:n.getAttribute("y1")||0,x2:n.getAttribute("x2")||"100%",y2:n.getAttribute("y2")||0}:s==="radial"&&(a={x1:n.getAttribute("fx")||n.getAttribute("cx")||"50%",y1:n.getAttribute("fy")||n.getAttribute("cy")||"50%",r1:0,x2:n.getAttribute("cx")||"50%",y2:n.getAttribute("cy")||"50%",r2:n.getAttribute("r")||"50%"});for(var f=i.length;f--;)u.push(e(i[f]));return t(r,a),new fabric.Gradient({type:s,coords:a,gradientUnits:o,colorStops:u})},forObject:function(e,n){return n||(n={}),t(e,n),new fabric.Gradient(n)}}),fabric.getGradientDefs=r}(),fabric.Pattern=fabric.util.createClass({repeat:"repeat",initialize:function(e){e||(e={}),e.source&&(this.source=typeof e.source=="string"?new Function(e.source):e.source),e.repeat&&(this.repeat=e.repeat)},toObject:function(){var e;return typeof this.source=="function"?e=String(this.source).match(/function\s+\w*\s*\(.*\)\s+\{([\s\S]*)\}/)[1]:typeof this.source.src=="string"&&(e=this.source.src),{source:e,repeat:this.repeat}},toLive:function(e){var t=typeof this.source=="function"?this.source():this.source;return e.createPattern(t,this.repeat)}}),fabric.Shadow=fabric.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,initialize:function(e){for(var t in e)this[t]=e[t]},toObject:function(){return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY}},toSVG:function(){}}),function(e){"use strict";function n(e,t){arguments.length>0&&this.init(e,t)}var t=e.fabric||(e.fabric={});if(t.Point){t.warn("fabric.Point is already defined");return}t.Point=n,n.prototype={constructor:n,init:function(e,t){this.x=e,this.y=t},add:function(e){return new n(this.x+e.x,this.y+e.y)},addEquals:function(e){return this.x+=e.x,this.y+=e.y,this},scalarAdd:function(e){return new n(this.x+e,this.y+e)},scalarAddEquals:function(e){return this.x+=e,this.y+=e,this},subtract:function(e){return new n(this.x-e.x,this.y-e.y)},subtractEquals:function(e){return this.x-=e.x,this.y-=e.y,this},scalarSubtract:function(e){return new n(this.x-e,this.y-e)},scalarSubtractEquals:function(e){return this.x-=e,this.y-=e,this},multiply:function(e){return new n(this.x*e,this.y*e)},multiplyEquals:function(e){return this.x*=e,this.y*=e,this},divide:function(e){return new n(this.x/e,this.y/e)},divideEquals:function(e){return this.x/=e,this.y/=e,this},eq:function(e){return this.x===e.x&&this.y===e.y},lt:function(e){return this.xe.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){arguments.length>0&&this.init(e)}var t=e.fabric||(e.fabric={});if(t.Intersection){t.warn("fabric.Intersection is already defined");return}t.Intersection=n,t.Intersection.prototype={init:function(e){this.status=e,this.points=[]},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("No Intersection")}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("No Intersection"),s=r.length;for(var o=0;o0&&(i.status="Intersection"),i},t.Intersection.intersectPolygonPolygon=function(e,t){var r=new n("No Intersection"),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("No Intersection");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])}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&&this.setSource(t)},getSource:function(){return this._source},setSource:function(e){this._source=e},toRgb:function(){var e=this.getSource();return"rgb("+e[0]+","+e[1]+","+e[2]+")"},toRgba:function(){var e=this.getSource();return"rgba("+e[0]+","+e[1]+","+e[2]+","+e[3]+")"},toHex:function(){var e=this.getSource(),t=e[0].toString(16);t=t.length===1?"0"+t:t;var n=e[1].toString(16);n=n.length===1?"0"+n:n;var r=e[2].toString(16);return r=r.length===1?"0"+r:r,t.toUpperCase()+n.toUpperCase()+r.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var t=this.getSource();return t[3]=e,this.setSource(t),this},toGrayscale:function(){var e=this.getSource(),t=parseInt((e[0]*.3+e[1]*.59+e[2]*.11).toFixed(0),10),n=e[3];return this.setSource([t,t,t,n]),this},toBlackWhite:function(e){var t=this.getSource(),n=(t[0]*.3+t[1]*.59+t[2]*.11).toFixed(0),r=t[3];return e=e||127,n=Number(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('');for(var n=0,r=this.getObjects(),i=r.length;n"),t.join("")},isEmpty:function(){return this._objects.length===0},remove:function(e){this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared"));var t=this._objects,n=t.indexOf(e);return n!==-1&&(t.splice(n,1),this.fire("object:removed",{target:e})),this.renderAll(),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){var t=this._objects.indexOf(e),r=t;if(t!==0){for(var i=t-1;i>=0;--i){var s=e.intersectsWithObject(this._objects[i])||e.isContainedWithinObject(this._objects[i])||this._objects[i].isContainedWithinObject(e);if(s){r=i;break}}n(this._objects,e),this._objects.splice(r,0,e)}return this.renderAll&&this.renderAll()},bringForward:function(e){var t=this.getObjects(),r=t.indexOf(e),i=r;if(r!==t.length-1){for(var s=r+1,o=this._objects.length;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;a0?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));for(var c=0,h=this._objects.length;c1&&(t=new fabric.Group(t),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.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.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"?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);if(this.stroke||this.strokeDashArray)e.lineWidth=this.strokeWidth,this.stroke&&this.stroke.toLive?e.strokeStyle=this.stroke.toLive(e):e.strokeStyle=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},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){if(t.Image){var n=new o;n.onload=function(){e&&e(new t.Image(n),r),n=n.onload=null};var r={angle:this.getAngle(),flipX:this.getFlipX(),flipY:this.getFlipY()};this.set({angle:0,flipX:!1,flipY:!1}),this.toDataURL(function(e){n.src=e})}return this},toDataURL:function(e){function i(t){t.left=n.width/2,t.top=n.height/2,t.setActive(!1),r.add(t);var i=r.toDataURL();r.dispose(),r=t=null,e&&e(i)}var n=t.util.createCanvasElement();n.width=this.getBoundingRectWidth(),n.height=this.getBoundingRectHeight(),t.util.wrapElement(n,"div");var r=new t.Canvas(n);r.backgroundColor="transparent",r.renderAll(),this.constructor.async?this.clone(i):i(this.clone())},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(){this.originalState={},this.saveState()},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){this.set("fill",new t.Pattern(e))},setShadow:function(e){this.set("shadow",new t.Shadow(e))},animate:function(){if(arguments[0]&&typeof arguments[0]=="object")for(var e in arguments[0])this._animate(e,arguments[0][e],arguments[1]);else this._animate.apply(this,arguments);return this},_animate:function(e,n,r){var i=this,s;n=n.toString(),r?r=t.util.object.clone(r):r={},~e.indexOf(".")&&(s=e.split("."));var o=s?this.get(s[0])[s[1]]:this.get(e);"from"in r||(r.from=o),~n.indexOf("=")?n=o+parseFloat(n.replace("=","")):n=parseFloat(n),t.util.animate({startValue:r.from,endValue:n,byValue:r.by,easing:r.easing,duration:r.duration,onChange:function(t){s?i[s[0]][s[1]]=t:i.set(e,t),r.onChange&&r.onChange()},onComplete:function(){i.setCoords(),r.onComplete&&r.onComplete()}})},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.centerH().centerV()},remove:function(){return this.canvas.remove(this)},sendToBack:function(){return this.group?t.StaticCanvas.prototype.sendToBack.call(this.group,this):this.canvas.sendToBack(this),this},bringToFront:function(){return this.group?t.StaticCanvas.prototype.bringToFront.call(this.group,this):this.canvas.bringToFront(this),this},sendBackwards:function(){return this.group?t.StaticCanvas.prototype.sendBackwards.call(this.group,this):this.canvas.sendBackwards(this),this},bringForward:function(){return this.group?t.StaticCanvas.prototype.bringForward.call(this.group,this):this.canvas.bringForward(this),this}}),t.util.createAccessors(t.Object),t.Object.prototype.rotate=t.Object.prototype.setAngle,n(t.Object.prototype,t.Observable),t.Object.NUM_FRACTION_DIGITS=2,t.Object.__uid=0}(typeof exports!="undefined"?exports:this),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{translateToCenterPoint:function(t,n,r){var i=t.x,s=t.y;return n==="left"?i=t.x+this.getWidth()/2:n==="right"&&(i=t.x-this.getWidth()/2),r==="top"?s=t.y+this.getHeight()/2:r==="bottom"&&(s=t.y-this.getHeight()/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},translateToOriginPoint:function(t,n,r){var i=t.x,s=t.y;return n==="left"?i=t.x-this.getWidth()/2:n==="right"&&(i=t.x+this.getWidth()/2),r==="top"?s=t.y-this.getHeight()/2:r==="bottom"&&(s=t.y+this.getHeight()/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},getCenterPoint:function(){return this.translateToCenterPoint(new fabric.Point(this.left,this.top),this.originX,this.originY)},toLocalPoint:function(t,n,r){var i=this.getCenterPoint(),s,o;return n!==undefined&&r!==undefined?(n==="left"?s=i.x-this.getWidth()/2:n==="right"?s=i.x+this.getWidth()/2:s=i.x,r==="top"?o=i.y-this.getHeight()/2:r==="bottom"?o=i.y+this.getHeight()/2:o=i.y):(s=this.left,o=this.top),fabric.util.rotatePoint(new fabric.Point(t.x,t.y),i,-e(this.angle)).subtractEquals(new fabric.Point(s,o))},setPositionByOrigin:function(e,t,n){var r=this.translateToCenterPoint(e,t,n),i=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",i.x),this.set("top",i.y)},adjustPosition:function(t){var n=e(this.angle),r=this.getWidth()/2,i=Math.cos(n)*r,s=Math.sin(n)*r,o=this.getWidth(),u=Math.cos(n)*o,a=Math.sin(n)*o;this.originX==="center"&&t==="left"||this.originX==="right"&&t==="center"?(this.left-=i,this.top-=s):this.originX==="left"&&t==="center"||this.originX==="center"&&t==="right"?(this.left+=i,this.top+=s):this.originX==="left"&&t==="right"?(this.left+=u,this.top+=a):this.originX==="right"&&t==="left"&&(this.left-=u,this.top-=a),this.setCoords(),this.originX=t}})}(),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{intersectsWithRect:function(e,t){var n=this.oCoords,r=new fabric.Point(n.tl.x,n.tl.y),i=new fabric.Point(n.tr.x,n.tr.y),s=new fabric.Point(n.bl.x,n.bl.y),o=new fabric.Point(n.br.x,n.br.y),u=fabric.Intersection.intersectPolygonRectangle([r,i,o,s],e,t);return u.status==="Intersection"},intersectsWithObject:function(e){function t(e){return{tl:new fabric.Point(e.tl.x,e.tl.y),tr:new fabric.Point(e.tr.x,e.tr.y),bl:new fabric.Point(e.bl.x,e.bl.y),br:new fabric.Point(e.br.x,e.br.y)}}var n=t(this.oCoords),r=t(e.oCoords),i=fabric.Intersection.intersectPolygonPolygon([n.tl,n.tr,n.br,n.bl],[r.tl,r.tr,r.br,r.bl]);return i.status==="Intersection"},isContainedWithinObject:function(e){return this.isContainedWithinRect(e.oCoords.tl,e.oCoords.br)},isContainedWithinRect:function(e,t){var n=this.oCoords,r=new fabric.Point(n.tl.x,n.tl.y),i=new fabric.Point(n.tr.x,n.tr.y),s=new fabric.Point(n.bl.x,n.bl.y);return r.x>e.x&&i.xe.y&&s.y1?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(this.currentHeight/this.currentWidth),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:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords(),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,a),o=this._findCrossPoints(i,s,u);if(o%2===1&&o!==0)return this.__corner=a,a}return!1},_findCrossPoints:function(e,t,n){var r,i,s,o,u,a,f=0,l;for(var c in n){l=n[c];if(l.o.y=t&&l.d.y>=t)continue;l.o.x===l.d.x&&l.o.x>=e?(u=l.o.x,a=t):(r=0,i=(l.d.y-l.o.y)/(l.d.x-l.o.x),s=t-r*e,o=l.o.y-i*l.o.x,u=-(s-o)/(r-i),a=s+r*u),u>=e&&(f+=1);if(f===2)break}return f},_getImageLines:function(e){return{topline:{o:e.tl,d:e.tr},rightline:{o:e.tr,d:e.br},bottomline:{o:e.br,d:e.bl},leftline:{o:e.bl,d:e.tl}}},_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;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;var t=this.cornerSize,n=t/2,r=this.strokeWidth/2,i=-(this.width/2),s=-(this.height/2),o,u,a=t/this.scaleX,f=t/this.scaleY,l=this.padding/this.scaleX,c=this.padding/this.scaleY,h=n/this.scaleY,p=n/this.scaleX,d=(n-t)/this.scaleX,v=(n-t)/this.scaleY,m=this.height,g=this.width,y=this.transparentCorners?"strokeRect":"fillRect",b=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,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,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,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,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,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,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};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",this.x2-this.x1||1),this.set("height",this.y2-this.y1||1),this.set("left","left"in e?e.left:this.x1+this.width/2),this.set("top","top"in e?e.top:this.y1+this.height/2)},_set:function(e,t){return this[e]=t,e in r&&this._setWidthHeight(),this},_render:function(e){e.beginPath(),this.group&&e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top),e.moveTo(this.width===1?0:-this.width/2,this.height===1?0:-this.height/2),e.lineTo(this.width===1?0:this.width/2,this.height===1?0:this.height/2),e.lineWidth=this.strokeWidth;var t=e.strokeStyle;e.strokeStyle=e.fillStyle,e.stroke(),e.strokeStyle=t},complexity:function(){return 1},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("")}}),t.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".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.fill&&e.fill(),this._removeShadow(e),this.stroke&&e.stroke()},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="cx cy r fill fill-opacity opacity stroke stroke-width transform".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.fill&&e.fill(),this.stroke&&e.stroke()},complexity:function(){return 1},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("")}}),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.stroke&&e.stroke(),this._removeShadow(e),this.fill&&e.fill(),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".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,initialize:function(e){e=e||{},this._initStateProperties(),this.callSuper("initialize",e),this._initRxRy(),this.x=0,this.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;e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&this.group&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y),e.moveTo(r+t,i),e.lineTo(r+s-t,i),e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this.fill&&e.fill(),this._removeShadow(e),this.strokeDashArray?this._renderDashedStroke(e):this.stroke&&e.stroke()},_renderDashedStroke:function(e){function u(u,a){var f=0,l=0,c=(a?i.height:i.width)+s*2;while(fc&&(l=f-c),u?n+=h*u-(l*u||0):r+=h*a-(l*a||0),e[1&t?"moveTo":"lineTo"](n,r),t>=o&&(t=0)}}1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray);var t=0,n=-this.width/2,r=-this.height/2,i=this,s=this.padding,o=this.strokeDashArray.length;e.save(),e.beginPath(),u(1,0),u(0,1),u(-1,0),u(0,-1),e.stroke(),e.closePath(),e.restore()},_normalizeLeftTopProperties:function(e){return e.left&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),e.top&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},complexity:function(){return 1},toObject:function(e){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0})},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("")}}),t.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".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;n1&&(g=Math.sqrt(g),n*=g,i*=g);var y=d/n,b=p/n,w=-p/i,E=d/i,S=y*l+b*c,x=w*l+E*c,T=y*e+b*t,N=w*e+E*t,C=(T-S)*(T-S)+(N-x)*(N-x),k=1/C-.25;k<0&&(k=0);var L=Math.sqrt(k);a===u&&(L=-L);var A=.5*(S+T)-L*(N-x),O=.5*(x+N)+L*(T-S),M=Math.atan2(x-O,S-A),_=Math.atan2(N-O,T-A),D=_-M;D<0&&a===1?D+=2*Math.PI:D>0&&a===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B"},toObject:function(e){var t=h(this.callSuper("toObject",e),{path:this.path});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;for(var s=0,o,u=this.path.length;sc)for(var h=1,p=o.length;h"];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,o=t.util.removeFromArray;if(t.Group)return;var u={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,{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._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),o(this._objects,e),delete e.group,e.setActive(!1),this._calcBounds(),this._updateObjectsCoords(),this},add:function(e){return this._objects.push(e),e.group=this,this},remove:function(e){return o(this._objects,e),delete e.group,this},size:function(){return this.getObjects().length},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},contains:function(e){return this._objects.indexOf(e)>-1},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){e.save(),this.transform(e);var r=Math.max(this.scaleX,this.scaleY);this.clipTo&&t.util.clipContext(this,e);for(var i=this._objects.length;i>0;i--){var s=this._objects[i-1],o=s.borderScaleFactor,u=s.hasRotatingPoint;s.borderScaleFactor=r,s.hasRotatingPoint=!1,s.render(e),s.borderScaleFactor=o,s.hasRotatingPoint=u}this.clipTo&&e.restore(),!n&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore(),this.setCoords()},item:function(e){return this.getObjects()[e]},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=typeof t.complexity=="function"?t.complexity():0,e},0)},_restoreObjectsState:function(){return this._objects.forEach(this._restoreObjectState,this),this},_restoreObjectState:function(e){var t=this.get("left"),n=this.get("top"),r=this.getAngle()*(Math.PI/180),i=Math.cos(r)*e.get("top")+Math.sin(r)*e.get("left"),s=-Math.sin(r)*e.get("top")+Math.cos(r)*e.get("left");return e.setAngle(e.getAngle()+this.getAngle()),e.set("left",t+s*this.get("scaleX")),e.set("top",n+i*this.get("scaleY")),e.set("scaleX",e.get("scaleX")*this.get("scaleX")),e.set("scaleY",e.get("scaleY")*this.get("scaleY")),e.setCoords(),e.hasControls=e.__origHasControls,delete e.__origHasControls,e.setActive(!1),e.setCoords(),delete e.group,this},destroy:function(){return this._restoreObjectsState()},saveCoords:function(){return this._originalLeft=this.get("left"),this._originalTop=this.get("top"),this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){return this.forEachObject(function(e){e.setCoords()}),this},activateAllObjects:function(){return this.forEachObject(function(e){e.setActive()}),this},forEachObject:t.StaticCanvas.prototype.forEachObject,_setOpacityIfSame:function(){var e=this.getObjects(),t=e[0]?e[0].get("opacity"):1,n=e.every(function(e){return e.get("opacity")===t});n&&(this.opacity=t)},_calcBounds:function(){var e=[],t=[],n,s,o,u,a,f,l,c=0,h=this._objects.length;for(;ce.x&&i-ne.y},toGrayscale:function(){var e=this._objects.length;while(e--)this._objects[e].toGrayscale();return this},toSVG:function(){var e=[];for(var t=this._objects.length;t--;)e.push(this._objects[t].toSVG());return''+e.join("")+""},get:function(e){if(e in u){if(this[e])return this[e];for(var t=0,n=this._objects.length;t'+'"+""},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=typeof Buffer!="undefined"&&typeof window=="undefined",n=this._originalImage,r=fabric.util.createCanvasElement(),i=t?new(require("canvas").Image):fabric.document.createElement("img"),s=this;r.width=n.width,r.height=n.height,r.getContext("2d").drawImage(n,0,0,n.width,n.height),this.filters.forEach(function(e){e&&e.applyTo(r)}),i.onload=function(){s._element=i,e&&e(),i.onload=r=n=null},i.width=n.width,i.height=n.height;if(t){var o=r.toDataURL("image/png").substring(22);i.src=new Buffer(o,"base64"),s._element=i,e&&e()}else i.src=r.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){var r=fabric.document.createElement("img");r.onload=function(){t&&t(new fabric.Image(r,n)),r=r.onload=null},r.src=e},fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform 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.setActive(!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.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo: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;ao&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},fabric.Image.filters.Convolute=fabric.util.createClass({type:"Convolute",initialize:function(e){e||(e={}),this.opaque=e.opaque,this.matrix=e.matrix||[0,0,0,0,1,0,0,0,0];var t=fabric.util.createCanvasElement();this.tmpCtx=t.getContext("2d")},_createImageData:function(e,t){return this.tmpCtx.createImageData(e,t)},applyTo:function(e){var t=this.matrix,n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=Math.round(Math.sqrt(t.length)),s=Math.floor(i/2),o=r.data,u=r.width,a=r.height,f=u,l=a,c=this._createImageData(f,l),h=c.data,p=this.opaque?1:0;for(var d=0;d=0&&N=0&&C'},_render:function(e){typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_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,strokeStyle:this.strokeStyle,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()},_renderViaNative:function(e){this.transform(e),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)),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(),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){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(" ")},_initDummyElementForCufon:function(){var e=t.document.createElement("pre"),n=t.document.createElement("div");return n.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},render:function(e,t){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,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,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?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 s&&(this._initDimensions(),this.setCoords())}}),t.Text.ATTRIBUTE_NAMES="x y fill fill-opacity opacity stroke stroke-width transform font-family font-style font-weight font-size text-decoration".split(" "),t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},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.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),function(){function request(e,t,n){var r=URL.parse(e),i=HTTP.request({hostname:r.hostname,port:r.port,path:r.pathname,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)})});i.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)})}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"),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.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(),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 6b3be75c2b11b8a4f1a06d4af3b15768253e0bc8..e554cb69ca486ceee06e9681b5cfb73442893ff2 100644 GIT binary patch literal 45942 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", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "repository": "git://github.com/kangax/fabric.js",