From 299aec6cdc914b5a69d3511f48b9e0655be46540 Mon Sep 17 00:00:00 2001 From: kangax Date: Wed, 5 Jun 2013 13:53:15 +0200 Subject: [PATCH] Build distribution. Version 1.1.20 --- HEADER.js | 2 +- dist/all.js | 64 +++++++++++++++++++++++++++++---------------- dist/all.min.js | 10 +++---- dist/all.min.js.gz | Bin 49578 -> 49642 bytes package.json | 2 +- 5 files changed, 48 insertions(+), 30 deletions(-) diff --git a/HEADER.js b/HEADER.js index df2d95e8..d5a9c8ef 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.19" }; +var fabric = fabric || { version: "1.1.20" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; diff --git a/dist/all.js b/dist/all.js index 5a62f7a5..095a746e 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.19" }; +var fabric = fabric || { version: "1.1.20" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; @@ -9171,15 +9171,25 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab (function(){ - var cursorMap = { - 'tr': 'ne-resize', - 'br': 'se-resize', - 'bl': 'sw-resize', - 'tl': 'nw-resize', - 'ml': 'w-resize', - 'mt': 'n-resize', - 'mr': 'e-resize', - 'mb': 's-resize' + var cursorMap = [ + 'n-resize', + 'ne-resize', + 'e-resize', + 'se-resize', + 's-resize', + 'sw-resize', + 'w-resize', + 'nw-resize' + ], + cursorOffset = { + 'mt': 0, // n + 'tr': 1, // ne + 'mr': 2, // e + 'br': 3, // se + 'mb': 4, // s + 'bl': 5, // sw + 'ml': 6, // w + 'tl': 7 // nw }, addListener = fabric.util.addListener, removeListener = fabric.util.removeListener, @@ -9571,8 +9581,15 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab s.cursor = this.hoverCursor; } else { - if (corner in cursorMap) { - s.cursor = cursorMap[corner]; + if (corner in cursorOffset) { + var n = Math.round((target.getAngle() % 360) / 45); + if (n<0) { + n += 8; // full circle ahead + } + n += cursorOffset[corner]; + // normalize n to be from 0 to 7 + n %= 8; + s.cursor = cursorMap[n]; } else if (corner === 'mtr' && target.hasRotatingPoint) { s.cursor = this.rotationCursor; @@ -12191,7 +12208,7 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot var size = this.cornerSize, size2 = size / 2, - strokeWidth2 = this.strokeWidth / 2, + strokeWidth2 = this.strokeWidth > 1 ? (this.strokeWidth / 2) : 0, left = -(this.width / 2), top = -(this.height / 2), _left, @@ -12207,6 +12224,7 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot height = this.height, width = this.width, methodName = this.transparentCorners ? 'strokeRect' : 'fillRect', + transparent = this.transparentCorners, isVML = typeof G_vmlCanvasManager !== 'undefined'; ctx.save(); @@ -12220,28 +12238,28 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot _left = left - scaleOffsetX - strokeWidth2 - paddingX; _top = top - scaleOffsetY - strokeWidth2 - paddingY; - isVML || ctx.clearRect(_left, _top, sizeX, sizeY); + isVML || transparent || ctx.clearRect(_left, _top, sizeX, sizeY); ctx[methodName](_left, _top, sizeX, sizeY); // top-right _left = left + width - scaleOffsetX + strokeWidth2 + paddingX; _top = top - scaleOffsetY - strokeWidth2 - paddingY; - isVML || ctx.clearRect(_left, _top, sizeX, sizeY); + isVML || transparent || ctx.clearRect(_left, _top, sizeX, sizeY); ctx[methodName](_left, _top, sizeX, sizeY); // bottom-left _left = left - scaleOffsetX - strokeWidth2 - paddingX; _top = top + height + scaleOffsetSizeY + strokeWidth2 + paddingY; - isVML || ctx.clearRect(_left, _top, sizeX, sizeY); + isVML || transparent || ctx.clearRect(_left, _top, sizeX, sizeY); ctx[methodName](_left, _top, sizeX, sizeY); // bottom-right _left = left + width + scaleOffsetSizeX + strokeWidth2 + paddingX; _top = top + height + scaleOffsetSizeY + strokeWidth2 + paddingY; - isVML || ctx.clearRect(_left, _top, sizeX, sizeY); + isVML || transparent || ctx.clearRect(_left, _top, sizeX, sizeY); ctx[methodName](_left, _top, sizeX, sizeY); if (!this.get('lockUniScaling')) { @@ -12249,28 +12267,28 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot _left = left + width/2 - scaleOffsetX; _top = top - scaleOffsetY - strokeWidth2 - paddingY; - isVML || ctx.clearRect(_left, _top, sizeX, sizeY); + isVML || transparent || ctx.clearRect(_left, _top, sizeX, sizeY); ctx[methodName](_left, _top, sizeX, sizeY); // middle-bottom _left = left + width/2 - scaleOffsetX; _top = top + height + scaleOffsetSizeY + strokeWidth2 + paddingY; - isVML || ctx.clearRect(_left, _top, sizeX, sizeY); + isVML || transparent || ctx.clearRect(_left, _top, sizeX, sizeY); ctx[methodName](_left, _top, sizeX, sizeY); // middle-right _left = left + width + scaleOffsetSizeX + strokeWidth2 + paddingX; _top = top + height/2 - scaleOffsetY; - isVML || ctx.clearRect(_left, _top, sizeX, sizeY); + isVML || transparent || ctx.clearRect(_left, _top, sizeX, sizeY); ctx[methodName](_left, _top, sizeX, sizeY); // middle-left _left = left - scaleOffsetX - strokeWidth2 - paddingX; _top = top + height/2 - scaleOffsetY; - isVML || ctx.clearRect(_left, _top, sizeX, sizeY); + isVML || transparent || ctx.clearRect(_left, _top, sizeX, sizeY); ctx[methodName](_left, _top, sizeX, sizeY); } @@ -12282,7 +12300,7 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot (top + height + (this.rotatingPointOffset / this.scaleY) - sizeY/2 + strokeWidth2 + paddingY) : (top - (this.rotatingPointOffset / this.scaleY) - sizeY/2 - strokeWidth2 - paddingY); - isVML || ctx.clearRect(_left, _top, sizeX, sizeY); + isVML || transparent || ctx.clearRect(_left, _top, sizeX, sizeY); ctx[methodName](_left, _top, sizeX, sizeY); } @@ -17088,7 +17106,7 @@ fabric.Image.filters.Tint.fromObject = function(object) { */ _getTopOffset: function() { if (fabric.isLikelyNode) { - if (this.originY === 'center' || this.originY === 'top') { + if (this.originY === 'center') { return -this.height / 2; } else if (this.originY === 'bottom') { diff --git a/dist/all.min.js b/dist/all.min.js index cdb63b75..4bf014b3 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.19"};typeof exports!="undefined"&&(exports.fabric=fabric),typeof document!="undefined"&&typeof window!="undefined"?(fabric.document=document,fabric.window=window):(fabric.document=require("jsdom").jsdom(""),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined";var Cufon=function(){function r(e){var t=this.face=e.face;this.glyphs=e.glyphs,this.w=e.w,this.baseSize=parseInt(t["units-per-em"],10),this.family=t["font-family"].toLowerCase(),this.weight=t["font-weight"],this.style=t["font-style"]||"normal",this.viewBox=function(){var e=t.bbox.split(/\s+/),n={minX:parseInt(e[0],10),minY:parseInt(e[1],10),maxX:parseInt(e[2],10),maxY:parseInt(e[3],10)};return n.width=n.maxX-n.minX,n.height=n.maxY-n.minY,n.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")},n}(),this.ascent=-parseInt(t.ascent,10),this.descent=-parseInt(t.descent,10),this.height=-this.ascent+this.descent}function i(){var e={},t={oblique:"italic",italic:"oblique"};this.add=function(t){(e[t.style]||(e[t.style]={}))[t.weight]=t},this.get=function(n,r){var i=e[n]||e[t[n]]||e.normal||e.italic||e.oblique;if(!i)return null;r={normal:400,bold:700}[r]||parseInt(r,10);if(i[r])return i[r];var s={1:1,99:0}[r%100],o=[],u,a;s===undefined&&(s=r>400),r==500&&(r=400);for(var f in i){f=parseInt(f,10);if(!u||fa)a=f;o.push(f)}return ra&&(r=a),o.sort(function(e,t){return(s?e>r&&t>r?et:et:e=i.length+e?r():setTimeout(arguments.callee,10)}),function(t){e?t():n.push(t)}}(),supports:function(e,t){var n=fabric.document.createElement("span").style;return n[e]===undefined?!1:(n[e]=t,n[e]===t)},textAlign:function(e,t,n,r){return t.get("textAlign")=="right"?n>0&&(e=" "+e):nk&&(k=N),A.push(N),N=0;continue}var O=t.glyphs[T[b]]||t.missingGlyph;if(!O)continue;N+=C=Number(O.w||t.w)+h}A.push(N),N=Math.max(k,N);var M=[];for(var b=A.length;b--;)M[b]=N-A[b];if(C===null)return null;d+=l.width-C,m+=l.minX;var _,D;if(f)_=u,D=u.firstChild;else{_=fabric.document.createElement("span"),_.className="cufon cufon-canvas",_.alt=n,D=fabric.document.createElement("canvas"),_.appendChild(D);if(i.printable){var P=fabric.document.createElement("span");P.className="cufon-alt",P.appendChild(fabric.document.createTextNode(n)),_.appendChild(P)}}var H=_.style,B=D.style||{},j=c.convert(l.height-p+v),F=Math.ceil(j),I=F/j;D.width=Math.ceil(c.convert(N+d-m)*I),D.height=F,p+=l.minY,B.top=Math.round(c.convert(p-t.ascent))+"px",B.left=Math.round(c.convert(m))+"px";var q=Math.ceil(c.convert(N*I)),R=q+"px",U=c.convert(t.height),z=(i.lineHeight-1)*c.convert(-t.ascent/5)*(L-1);Cufon.textOptions.width=q,Cufon.textOptions.height=U*L+z,Cufon.textOptions.lines=L,Cufon.textOptions.totalLineHeight=z,e?(H.width=R,H.height=U+"px"):(H.paddingLeft=R,H.paddingBottom=U-1+"px");var W=Cufon.textOptions.context||D.getContext("2d"),X=F/l.height;Cufon.textOptions.fontAscent=t.ascent*X,Cufon.textOptions.boundaries=null;for(var V=Cufon.textOptions.shadowOffsets,b=y.length;b--;)V[b]=[y[b][0]*X,y[b][1]*X];W.save(),W.scale(X,X),W.translate(-m-1/X*D.width/2+(Cufon.fonts[t.family].offsetLeft||0),-p-Cufon.textOptions.height/X/2+(Cufon.fonts[t.family].offsetTop||0)),W.lineWidth=t.face["underline-thickness"],W.save();var J=Cufon.getTextDecoration(i),K=i.fontStyle==="italic";W.save(),Q();if(g)for(var b=0,w=g.length;b.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}'),function(e,t,i,s,o,u,a){var f=t===null;f&&(t=o.alt);var l=e.viewBox,c=i.computedFontSize||(i.computedFontSize=new Cufon.CSS.Size(n(u,i.get("fontSize"))+"px",e.baseSize)),h=i.computedLSpacing;h==undefined&&(h=i.get("letterSpacing"),i.computedLSpacing=h=h=="normal"?0:~~c.convertFrom(r(u,h)));var p,d;if(f)p=o,d=o.firstChild;else{p=fabric.document.createElement("span"),p.className="cufon cufon-vml",p.alt=t,d=fabric.document.createElement("span"),d.className="cufon-vml-canvas",p.appendChild(d);if(s.printable){var v=fabric.document.createElement("span");v.className="cufon-alt",v.appendChild(fabric.document.createTextNode(t)),p.appendChild(v)}a||p.appendChild(fabric.document.createElement("cvml:shape"))}var m=p.style,g=d.style,y=c.convert(l.height),b=Math.ceil(y),w=b/y,E=l.minX,S=l.minY;g.height=b,g.top=Math.round(c.convert(S-e.ascent)),g.left=Math.round(c.convert(E)),m.height=c.convert(e.height)+"px";var x=Cufon.getTextDecoration(s),T=i.get("color"),N=Cufon.CSS.textTransform(t,i).split(""),C=0,k=0,L=null,A,O,M=s.textShadow;for(var _=0,D=0,P=N.length;_-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)},toGrayscale:function(){return this.forEachObject(function(e){e.toGrayscale()})}},function(){function n(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e}function r(e,t){return Math.floor(Math.random()*(t-e+1))+e}function s(e){return e*i}function o(e){return e/i}function u(e,t,n){var r=Math.sin(n),i=Math.cos(n);e.subtractEquals(t);var s=e.x*i-e.y*r,o=e.x*r+e.y*i;return(new fabric.Point(s,o)).addEquals(t)}function a(e,t){return parseFloat(Number(e).toFixed(t))}function f(){return!1}function l(e){e||(e={});var t=+(new Date),n=e.duration||500,r=t+n,i,s=e.onChange||function(){},o=e.abort||function(){return!1},u=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},a="startValue"in e?e.startValue:0,f="endValue"in e?e.endValue:100,l=e.byValue||f-a;e.onStart&&e.onStart(),function c(){i=+(new Date);var f=i>r?n:i-t;s(u(f,a,l,n));if(i>r||o()){e.onComplete&&e.onComplete();return}h(c)}()}function p(e){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(e))]}function d(e,t,n){if(e){var r=fabric.util.createImage();r.onload=function(){t&&t.call(n,r),r=r.onload=null},r.src=e}else t&&t.call(n,e)}function v(e,t){function n(){++i===s&&t&&t(r)}var r=[],i=0,s=e.length;e.forEach(function(e,t){if(!e.type)return;var i=fabric.util.getKlass(e.type);i.async?i.fromObject(e,function(e,i){i||(r[t]=e),n()}):(r[t]=i.fromObject(e),n())})}function m(e,t,n){var r;return e.length>1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r}function g(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),n[d?"lineTo":"moveTo"](r,0),d=!d;n.restore()}function b(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function w(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function E(e){var t=e.prototype;for(var n=t.stateProperties.length;n--;){var r=t.stateProperties[n],i=r.charAt(0).toUpperCase()+r.slice(1),s="set"+i,o="get"+i;t[o]||(t[o]=function(e){return new Function('return this.get("'+e+'")')}(r)),t[s]||(t[s]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(r))}}function S(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function x(e,t){var n=[[e[0],e[2],e[4]],[e[1],e[3],e[5]],[0,0,1]],r=[[t[0],t[2],t[4]],[t[1],t[3],t[5]],[0,0,1]],i=[];for(var s=0;s<3;s++){i[s]=[];for(var o=0;o<3;o++){var u=0;for(var a=0;a<3;a++)u+=n[s][a]*r[a][o];i[s][o]=u}}return[i[0][0],i[1][0],i[0][1],i[1][1],i[0][2],i[1][2]]}function T(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]}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.getKlass=p,fabric.util.loadImage=d,fabric.util.enlivenObjects=v,fabric.util.groupSVGElements=m,fabric.util.populateWithProperties=g,fabric.util.drawDashedLine=y,fabric.util.createCanvasElement=b,fabric.util.createImage=w,fabric.util.createAccessors=E,fabric.util.clipContext=S,fabric.util.multiplyTransformMatrices=x,fabric.util.getFunctionBody=T}(),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"),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined";var Cufon=function(){function r(e){var t=this.face=e.face;this.glyphs=e.glyphs,this.w=e.w,this.baseSize=parseInt(t["units-per-em"],10),this.family=t["font-family"].toLowerCase(),this.weight=t["font-weight"],this.style=t["font-style"]||"normal",this.viewBox=function(){var e=t.bbox.split(/\s+/),n={minX:parseInt(e[0],10),minY:parseInt(e[1],10),maxX:parseInt(e[2],10),maxY:parseInt(e[3],10)};return n.width=n.maxX-n.minX,n.height=n.maxY-n.minY,n.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")},n}(),this.ascent=-parseInt(t.ascent,10),this.descent=-parseInt(t.descent,10),this.height=-this.ascent+this.descent}function i(){var e={},t={oblique:"italic",italic:"oblique"};this.add=function(t){(e[t.style]||(e[t.style]={}))[t.weight]=t},this.get=function(n,r){var i=e[n]||e[t[n]]||e.normal||e.italic||e.oblique;if(!i)return null;r={normal:400,bold:700}[r]||parseInt(r,10);if(i[r])return i[r];var s={1:1,99:0}[r%100],o=[],u,a;s===undefined&&(s=r>400),r==500&&(r=400);for(var f in i){f=parseInt(f,10);if(!u||fa)a=f;o.push(f)}return ra&&(r=a),o.sort(function(e,t){return(s?e>r&&t>r?et:et:e=i.length+e?r():setTimeout(arguments.callee,10)}),function(t){e?t():n.push(t)}}(),supports:function(e,t){var n=fabric.document.createElement("span").style;return n[e]===undefined?!1:(n[e]=t,n[e]===t)},textAlign:function(e,t,n,r){return t.get("textAlign")=="right"?n>0&&(e=" "+e):nk&&(k=N),A.push(N),N=0;continue}var O=t.glyphs[T[b]]||t.missingGlyph;if(!O)continue;N+=C=Number(O.w||t.w)+h}A.push(N),N=Math.max(k,N);var M=[];for(var b=A.length;b--;)M[b]=N-A[b];if(C===null)return null;d+=l.width-C,m+=l.minX;var _,D;if(f)_=u,D=u.firstChild;else{_=fabric.document.createElement("span"),_.className="cufon cufon-canvas",_.alt=n,D=fabric.document.createElement("canvas"),_.appendChild(D);if(i.printable){var P=fabric.document.createElement("span");P.className="cufon-alt",P.appendChild(fabric.document.createTextNode(n)),_.appendChild(P)}}var H=_.style,B=D.style||{},j=c.convert(l.height-p+v),F=Math.ceil(j),I=F/j;D.width=Math.ceil(c.convert(N+d-m)*I),D.height=F,p+=l.minY,B.top=Math.round(c.convert(p-t.ascent))+"px",B.left=Math.round(c.convert(m))+"px";var q=Math.ceil(c.convert(N*I)),R=q+"px",U=c.convert(t.height),z=(i.lineHeight-1)*c.convert(-t.ascent/5)*(L-1);Cufon.textOptions.width=q,Cufon.textOptions.height=U*L+z,Cufon.textOptions.lines=L,Cufon.textOptions.totalLineHeight=z,e?(H.width=R,H.height=U+"px"):(H.paddingLeft=R,H.paddingBottom=U-1+"px");var W=Cufon.textOptions.context||D.getContext("2d"),X=F/l.height;Cufon.textOptions.fontAscent=t.ascent*X,Cufon.textOptions.boundaries=null;for(var V=Cufon.textOptions.shadowOffsets,b=y.length;b--;)V[b]=[y[b][0]*X,y[b][1]*X];W.save(),W.scale(X,X),W.translate(-m-1/X*D.width/2+(Cufon.fonts[t.family].offsetLeft||0),-p-Cufon.textOptions.height/X/2+(Cufon.fonts[t.family].offsetTop||0)),W.lineWidth=t.face["underline-thickness"],W.save();var J=Cufon.getTextDecoration(i),K=i.fontStyle==="italic";W.save(),Q();if(g)for(var b=0,w=g.length;b.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}'),function(e,t,i,s,o,u,a){var f=t===null;f&&(t=o.alt);var l=e.viewBox,c=i.computedFontSize||(i.computedFontSize=new Cufon.CSS.Size(n(u,i.get("fontSize"))+"px",e.baseSize)),h=i.computedLSpacing;h==undefined&&(h=i.get("letterSpacing"),i.computedLSpacing=h=h=="normal"?0:~~c.convertFrom(r(u,h)));var p,d;if(f)p=o,d=o.firstChild;else{p=fabric.document.createElement("span"),p.className="cufon cufon-vml",p.alt=t,d=fabric.document.createElement("span"),d.className="cufon-vml-canvas",p.appendChild(d);if(s.printable){var v=fabric.document.createElement("span");v.className="cufon-alt",v.appendChild(fabric.document.createTextNode(t)),p.appendChild(v)}a||p.appendChild(fabric.document.createElement("cvml:shape"))}var m=p.style,g=d.style,y=c.convert(l.height),b=Math.ceil(y),w=b/y,E=l.minX,S=l.minY;g.height=b,g.top=Math.round(c.convert(S-e.ascent)),g.left=Math.round(c.convert(E)),m.height=c.convert(e.height)+"px";var x=Cufon.getTextDecoration(s),T=i.get("color"),N=Cufon.CSS.textTransform(t,i).split(""),C=0,k=0,L=null,A,O,M=s.textShadow;for(var _=0,D=0,P=N.length;_-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)},toGrayscale:function(){return this.forEachObject(function(e){e.toGrayscale()})}},function(){function n(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e}function r(e,t){return Math.floor(Math.random()*(t-e+1))+e}function s(e){return e*i}function o(e){return e/i}function u(e,t,n){var r=Math.sin(n),i=Math.cos(n);e.subtractEquals(t);var s=e.x*i-e.y*r,o=e.x*r+e.y*i;return(new fabric.Point(s,o)).addEquals(t)}function a(e,t){return parseFloat(Number(e).toFixed(t))}function f(){return!1}function l(e){e||(e={});var t=+(new Date),n=e.duration||500,r=t+n,i,s=e.onChange||function(){},o=e.abort||function(){return!1},u=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},a="startValue"in e?e.startValue:0,f="endValue"in e?e.endValue:100,l=e.byValue||f-a;e.onStart&&e.onStart(),function c(){i=+(new Date);var f=i>r?n:i-t;s(u(f,a,l,n));if(i>r||o()){e.onComplete&&e.onComplete();return}h(c)}()}function p(e){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(e))]}function d(e,t,n){if(e){var r=fabric.util.createImage();r.onload=function(){t&&t.call(n,r),r=r.onload=null},r.src=e}else t&&t.call(n,e)}function v(e,t){function n(){++i===s&&t&&t(r)}var r=[],i=0,s=e.length;e.forEach(function(e,t){if(!e.type)return;var i=fabric.util.getKlass(e.type);i.async?i.fromObject(e,function(e,i){i||(r[t]=e),n()}):(r[t]=i.fromObject(e),n())})}function m(e,t,n){var r;return e.length>1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r}function g(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),n[d?"lineTo":"moveTo"](r,0),d=!d;n.restore()}function b(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function w(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function E(e){var t=e.prototype;for(var n=t.stateProperties.length;n--;){var r=t.stateProperties[n],i=r.charAt(0).toUpperCase()+r.slice(1),s="set"+i,o="get"+i;t[o]||(t[o]=function(e){return new Function('return this.get("'+e+'")')}(r)),t[s]||(t[s]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(r))}}function S(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function x(e,t){var n=[[e[0],e[2],e[4]],[e[1],e[3],e[5]],[0,0,1]],r=[[t[0],t[2],t[4]],[t[1],t[3],t[5]],[0,0,1]],i=[];for(var s=0;s<3;s++){i[s]=[];for(var o=0;o<3;o++){var u=0;for(var a=0;a<3;a++)u+=n[s][a]*r[a][o];i[s][o]=u}}return[i[0][0],i[1][0],i[0][1],i[1][1],i[0][2],i[1][2]]}function T(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]}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.getKlass=p,fabric.util.loadImage=d,fabric.util.enlivenObjects=v,fabric.util.groupSVGElements=m,fabric.util.populateWithProperties=g,fabric.util.drawDashedLine=y,fabric.util.createCanvasElement=b,fabric.util.createImage=w,fabric.util.createAccessors=E,fabric.util.clipContext=S,fabric.util.multiplyTransformMatrices=x,fabric.util.getFunctionBody=T}(),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,n,r={left:0,top:0},i=e&&e.ownerDocument,s={left:0,top:0},o={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!i)return{left:0,top:0};for(var u in o)s[o[u]]+=parseInt(f(e,u),10)||0;return t=i.documentElement,typeof e.getBoundingClientRect!="undefined"&&(r=e.getBoundingClientRect()),i!=null&&i===i.window?n=i:n=i.nodeType===9&&(i.defaultView||i.parentWindow),{left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)+s.left,top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0)+s.top}}function f(e,t){e.style||(e.style={});if(fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle)return fabric.document.defaultView.getComputedStyle(e,null)[t];var n=e.style[t];return!n&&e.currentStyle&&(n=e.currentStyle[t]),n}var e=Array.prototype.slice,n=function(t){return e.call(t,0)},r;try{r=n(fabric.document.childNodes)instanceof Array}catch(i){}r||(n=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t}),function(){function n(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=fabric.util.falseFunction),t?e.style[t]="none":typeof e.unselectable=="string"&&(e.unselectable="on"),e}function r(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=null),t?e.style[t]="":typeof e.unselectable=="string"&&(e.unselectable=""),e}var e=fabric.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=n,fabric.util.makeElementSelectable=r}(),function(){function e(e,t){var n=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),i=!0;r.onload=r.onreadystatechange=function(e){if(i){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;i=!1,t(e||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=e,n.appendChild(r)}fabric.util.getScript=e}(),fabric.util.getById=t,fabric.util.toArray=n,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getElementOffset=a,fabric.util.getElementStyle=f}(),function(){function e(e,t){return e+(/\?/.test(e)?"&":"?")+t}function n(){}function r(r,i){i||(i={});var s=i.method?i.method.toUpperCase():"GET",o=i.onComplete||function(){},u=t(),a;return u.onreadystatechange=function(){u.readyState===4&&(o(u),u.onreadystatechange=n)},s==="GET"&&(a=null,typeof i.parameters=="string"&&(r=e(r,i.parameters))),u.open(s,r,!0),(s==="POST"||s==="PUT")&&u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),u.send(a),u}var t=function(){var e=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}];for(var t=e.length;t--;)try{var n=e[t]();if(n)return e[t]}catch(r){}}();fabric.util.request=r}(),function(){function e(e,t,n,r){return n*(e/=r)*e+t}function t(e,t,n,r){return-n*(e/=r)*(e-2)+t}function n(e,t,n,r){return e/=r/2,e<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e,t,n,r){return n*(e/=r)*e*e+t}function i(e,t,n,r){return n*((e=e/r-1)*e*e+1)+t}function s(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e+t:n/2*((e-=2)*e*e+2)+t}function o(e,t,n,r){return n*(e/=r)*e*e*e+t}function u(e,t,n,r){return-n*((e=e/r-1)*e*e*e-1)+t}function a(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e+t:-n/2*((e-=2)*e*e*e-2)+t}function f(e,t,n,r){return n*(e/=r)*e*e*e*e+t}function l(e,t,n,r){return n*((e=e/r-1)*e*e*e*e+1)+t}function c(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e*e+t:n/2*((e-=2)*e*e*e*e+2)+t}function h(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t}function p(e,t,n,r){return n*Math.sin(e/r*(Math.PI/2))+t}function d(e,t,n,r){return-n/2*(Math.cos(Math.PI*e/r)-1)+t}function v(e,t,n,r){return e===0?t:n*Math.pow(2,10*(e/r-1))+t}function m(e,t,n,r){return e===r?t+n:n*(-Math.pow(2,-10*e/r)+1)+t}function g(e,t,n,r){return e===0?t:e===r?t+n:(e/=r/2,e<1?n/2*Math.pow(2,10*(e-1))+t:n/2*(-Math.pow(2,-10*--e)+2)+t)}function y(e,t,n,r){return-n*(Math.sqrt(1-(e/=r)*e)-1)+t}function b(e,t,n,r){return n*Math.sqrt(1-(e=e/r-1)*e)+t}function w(e,t,n,r){return e/=r/2,e<1?-n/2*(Math.sqrt(1-e*e)-1)+t:n/2*(Math.sqrt(1-(e-=2)*e)+1)+t}function E(e,t,n,r){var i=1.70158,s=0,o=n;return e===0?t:(e/=r,e===1?t+n:(s||(s=r*.3),o-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){w.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),w.has(e,function(r){r?w.get(e,function(e){var t=S(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function S(e){var n=e.objects,i=e.options;return n=n.map(function(e){return t[r(e.type)].fromObject(e)}),{objects:n,options:i}}function x(e,n,r){e=e.trim();var i;if(typeof DOMParser!="undefined"){var s=new DOMParser;s&&s.parseFromString&&(i=s.parseFromString(e,"text/xml"))}else t.window.ActiveXObject&&(i=new ActiveXObject("Microsoft.XMLDOM"),i.async="false",i.loadXML(e.replace(//i,"")));t.parseSVGDocument(i.documentElement,function(e,t){n(e,t)},r)}function T(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t}function N(e){var t="";return e.backgroundColor&&e.backgroundColor.source&&(t=['',''].join("")),t}function C(e){var t=e.getElementsByTagName("linearGradient"),n=e.getElementsByTagName("radialGradient"),r,i,s={};i=t.length;for(;i--;)r=t[i],s[r.getAttribute("id")]=r;i=n.length;for(;i--;)r=n[i],s[r.getAttribute("id")]=r;return s}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s=t.util.toFixed,o=t.util.multiplyTransformMatrices;t.SHARED_ATTRIBUTES=["transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width"];var u={"fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight",cx:"left",x:"left",r:"radius","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration",cy:"top",y:"top",transform:"transformMatrix"},a={stroke:"strokeOpacity",fill:"fillOpacity"};t.parseTransformAttribute=function(){function e(e,t){var n=t[0];e[0]=Math.cos(n),e[1]=Math.sin(n),e[2]=-Math.sin(n),e[3]=Math.cos(n)}function n(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function r(e,t){e[2]=t[0]}function i(e,t){e[1]=t[0]}function s(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var o=[1,0,0,1,0,0],u="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",a="(?:\\s+,?\\s*|,\\s*)",f="(?:(skewX)\\s*\\(\\s*("+u+")\\s*\\))",l="(?:(skewY)\\s*\\(\\s*("+u+")\\s*\\))",c="(?:(rotate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+")"+a+"("+u+"))?\\s*\\))",h="(?:(scale)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",p="(?:(translate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",d="(?:(matrix)\\s*\\(\\s*("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+"\\s*\\))",v="(?:"+d+"|"+p+"|"+h+"|"+c+"|"+f+"|"+l+")",m="(?:"+v+"(?:"+a+v+")*"+")",g="^\\s*(?:"+m+"?)\\s*$",y=new RegExp(g),b=new RegExp(v,"g");return function(u){var a=o.concat(),f=[];if(!u||u&&!y.test(u))return a;u.replace(b,function(t){var u=(new RegExp(v)).exec(t).filter(function(e){return e!==""&&e!=null}),l=u[1],c=u.slice(2).map(parseFloat);switch(l){case"translate":s(a,c);break;case"rotate":e(a,c);break;case"scale":n(a,c);break;case"skewX":r(a,c);break;case"skewY":i(a,c);break;case"matrix":a=c}f.push(a.concat()),a=o.concat()});var l=f[0];while(f.length>1)f.shift(),l=t.util.multiplyTransformMatrices(l,f[0]);return l}}(),t.parseSVGDocument=function(){function s(e,t){while(e&&(e=e.parentNode))if(t.test(e.nodeName))return!0;return!1}var e=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/,n="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",r=new RegExp("^\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*"+"$");return function(n,o,u){if(!n)return;var a=new Date,f=t.util.toArray(n.getElementsByTagName("*"));if(f.length===0){f=n.selectNodes("//*[name(.)!='svg']");var l=[];for(var c=0,h=f.length;c0&&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(){function e(e){var t=e.getAttribute("style"),n=e.getAttribute("offset"),r,i;n=parseFloat(n)/(/%$/.test(n)?100:1);if(t){var s=t.split(/\s*;\s*/);s[s.length-1]===""&&s.pop();for(var o=s.length;o--;){var u=s[o].split(/\s*:\s*/),a=u[0].trim(),f=u[1].trim();a==="stop-color"?r=f:a==="stop-opacity"&&(i=f)}}return r||(r=e.getAttribute("stop-color")),i||(i=e.getAttribute("stop-opacity")),r=(new fabric.Color(r)).toRgb(),{offset:n,color:r,opacity:i}}function t(e,t){for(var n in t){if(typeof t[n]=="string"&&/^\d+%$/.test(t[n])){var r=parseFloat(t[n],10);if(n==="x1"||n==="x2"||n==="r2")t[n]=fabric.util.toFixed(e.width*r/100,2);else if(n==="y1"||n==="y2")t[n]=fabric.util.toFixed(e.height*r/100,2)}if(n==="x1"||n==="x2")t[n]-=fabric.util.toFixed(e.width/2,2);else if(n==="y1"||n==="y2")t[n]-=fabric.util.toFixed(e.height/2,2)}}function n(e,t){for(var n in t){if(n==="x1"||n==="x2")t[n]+=fabric.util.toFixed(e.width/2,2);else if(n==="y1"||n==="y2")t[n]+=fabric.util.toFixed(e.height/2,2);if(n==="x1"||n==="x2"||n==="r2")t[n]=fabric.util.toFixed(t[n]/e.width*100,2)+"%";else if(n==="y1"||n==="y2")t[n]=fabric.util.toFixed(t[n]/e.height*100,2)+"%"}}fabric.Gradient=fabric.util.createClass({initialize:function(e){e||(e={});var t={};this.id=fabric.Object.__uid++,this.type=e.type||"linear",t={x1:e.coords.x1||0,y1:e.coords.y1||0,x2:e.coords.x2||0,y2:e.coords.y2||0},this.type==="radial"&&(t.r1=e.coords.r1||0,t.r2=e.coords.r2||0),this.coords=t,this.gradientUnits=e.gradientUnits||"objectBoundingBox",this.colorStops=e.colorStops.slice()},addColorStop:function(e){for(var t in e){var n=new fabric.Color(e[t]);this.colorStops.push({offset:t,color:n.toRgb(),opacity:n.getAlpha()})}return this},toObject:function(){return{type:this.type,coords:this.coords,gradientUnits:this.gradientUnits,colorStops:this.colorStops}},toSVG:function(e,t){var r=fabric.util.object.clone(this.coords),i;this.colorStops.sort(function(e,t){return e.offset-t.offset}),t&&this.gradientUnits==="userSpaceOnUse"?(r.x1+=e.width/2,r.y1+=e.height/2,r.x2+=e.width/2,r.y2+=e.height/2):this.gradientUnits==="objectBoundingBox"&&n(e,r),this.type==="linear"?i=["']:this.type==="radial"&&(i=["']);for(var s=0;s');return i.push(this.type==="linear"?"":""),i.join("")},toLive:function(e){var t;if(!this.type)return;this.type==="linear"?t=e.createLinearGradient(this.coords.x1,this.coords.y1,this.coords.x2,this.coords.y2):this.type==="radial"&&(t=e.createRadialGradient(this.coords.x1,this.coords.y1,this.coords.r1,this.coords.x2,this.coords.y2,this.coords.r2));for(var n=0;n0&&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])}function r(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var t=e.fabric||(e.fabric={});if(t.Color){t.warn("fabric.Color is already defined.");return}t.Color=n,t.Color.prototype={_tryParsingColor:function(e){var t;e in n.colorNameMap&&(e=n.colorNameMap[e]),t=n.sourceFromHex(e),t||(t=n.sourceFromRgb(e)),t||(t=n.sourceFromHsl(e)),t&&this.setSource(t)},_rgbToHsl:function(e,n,r){e/=255,n/=255,r/=255;var i,s,o,u=t.util.array.max([e,n,r]),a=t.util.array.min([e,n,r]);o=(u+a)/2;if(u===a)i=s=0;else{var f=u-a;s=o>.5?f/(2-u-a):f/(u+a);switch(u){case e:i=(n-r)/f+(n',''),t.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),""),this.backgroundColor&&this.backgroundColor.source&&t.push('"),this.backgroundImage&&t.push(''),this.overlayImage&&t.push('');var n=this.getActiveGroup();n&&this.discardActiveGroup();for(var r=0,i=this.getObjects(),s=i.length;r"),t.join("")},remove:function(e){return this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared")),fabric.Collection.remove.call(this,e)},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e){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,f=u.data.length;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.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(e,this._offset))return n=this.lastRenderedObjectWithControlsAboveOverlay,n;var i=this.getActiveGroup();if(i&&!t&&this.containsPoint(e,i))return n=i,n;var s=[];for(var o=this._objects.length;o--;)if(this._objects[o]&&this._objects[o].visible&&this.containsPoint(e,this._objects[o])){if(!this.perPixelTargetFind&&!this._objects[o].perPixelTargetFind){n=this._objects[o],this.relatedTarget=n;break}s[s.length]=this._objects[o]}for(var u=0,a=s.length;u"},get:function(e){return this[e]},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"&&e!=="clipTo"?this._set(e,t(this.get(e))):this._set(e,t);return this},_set:function(e,t){var n=e==="scaleX"||e==="scaleY";n&&(t=this._constrainScale(t));if(e==="scaleX"&&t<0)this.flipX=!this.flipX,t*=-1;else if(e==="scaleY"&&t<0)this.flipY=!this.flipY,t*=-1;else if(e==="width"||e==="height")this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2);return this[e]=t,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save();var r=this.transformMatrix;r&&!this.group&&e.setTransform(r[0],r[1],r[2],r[3],r[4],r[5]),n||this.transform(e),this.stroke&&(e.lineWidth=this.strokeWidth,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,e.strokeStyle=this.stroke.toLive?this.stroke.toLive(e):this.stroke),this.overlayFill?e.fillStyle=this.overlayFill:this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill),r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_renderFill:function(e){if(!this.fill)return;this.fill.toLive&&(e.save(),e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0)),e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke)return;e.save(),this.strokeDashArray?(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),o?(e.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(e)):this._renderDashedStroke&&this._renderDashedStroke(e),e.stroke()):this._stroke?this._stroke(e):e.stroke(),this._removeShadow(e),e.restore()},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){var n=this.toDataURL();return t.util.loadImage(n,function(n){e&&e(new t.Image(n))}),this},toDataURL:function(e){e||(e={});var n=t.util.createCanvasElement();n.width=this.getBoundingRectWidth(),n.height=this.getBoundingRectHeight(),t.util.wrapElement(n,"div");var r=new t.Canvas(n);e.format==="jpeg"&&(r.backgroundColor="#fff");var i={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set({active:!1,left:n.width/2,top:n.height/2}),r.add(this);var s=r.toDataURL(e);return this.set(i).setCoords(),r.dispose(),r=null,s},isType:function(e){return this.type===e},toGrayscale:function(){var e=this.get("fill");return e&&this.set("overlayFill",(new t.Color(e)).toGrayscale().toRgb()),this},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){return this.set("fill",new t.Pattern(e))},setShadow:function(e){return this.set("shadow",new t.Shadow(e))},animate:function(){if(arguments[0]&&typeof arguments[0]=="object"){var e=[],t,n;for(t in arguments[0])e.push(t);for(var r=0,i=e.length;re.x&&n.left+n.widthe.y&&n.top+n.height=e.y&&f.d.y>=e.y)continue;f.o.x===f.d.x&&f.o.x>=e.x?(o=f.o.x,u=e.y):(n=0,r=(f.d.y-f.o.y)/(f.d.x-f.o.x),i=e.y-n*e.x,s=f.o.y-r*f.o.x,o=-(i-s)/(n-r),u=i+n*o),o>=e.x&&(a+=1);if(a===2)break}return a},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],t=fabric.util.array.min(e),n=fabric.util.array.max(e),r=Math.abs(t-n),i=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],s=fabric.util.array.min(i),o=fabric.util.array.max(i),u=Math.abs(s-o);return{left:t,top:s,width:r,height:u}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(e){return Math.abs(e)1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x:m.x,y:m.y};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords&&this._setCornerCoords(),this}})}(),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this[e]!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner),o=this._findCrossPoints({x:i,y:s},u);if(o!==0&&o%2===1)return this.__corner=a,a}return!1},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=this.strokeWidth>1?this.strokeWidth:0;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)+.5,~~(-(u/2)-t-r/2*this.scaleY)+.5,~~(o+n+r*this.scaleX),~~(u+n+r*this.scaleY));if(this.hasRotatingPoint&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;var t=this.cornerSize,n=t/2,r=this.strokeWidth/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},i=t.StaticCanvas.supports("setLineDash");if(t.Line){t.warn("fabric.Line is already defined");return}t.Line=t.util.createClass(t.Object,{type:"line",initialize:function(e,t){t=t||{},e||(e=[0,0,0,0]),this.callSuper("initialize",t),this.set("x1",e[0]),this.set("y1",e[1]),this.set("x2",e[2]),this.set("y2",e[3]),this._setWidthHeight(t)},_setWidthHeight:function(e){e||(e={}),this.set("width",Math.abs(this.x2-this.x1)||1),this.set("height",Math.abs(this.y2-this.y1)||1),this.set("left","left"in e?e.left:Math.min(this.x1,this.x2)+this.width/2),this.set("top","top"in e?e.top:Math.min(this.y1,this.y2)+this.height/2)},_set:function(e,t){return this[e]=t,e in r&&this._setWidthHeight(),this},_render:function(e){e.beginPath();var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix&&e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top);if(!this.strokeDashArray||this.strokeDashArray&&i){var n=this.x1<=this.x2?-1:1,r=this.y1<=this.y2?-1:1;e.moveTo(this.width===1?0:n*this.width/2,this.height===1?0:r*this.height/2),e.lineTo(this.width===1?0:n*-1*this.width/2,this.height===1?0:r*-1*this.height/2)}e.lineWidth=this.strokeWidth;var s=e.strokeStyle;e.strokeStyle=this.stroke||e.fillStyle,this._renderStroke(e),e.strokeStyle=s},_renderDashedStroke:function(e){var n=this.width===1?0:-this.width/2,r=this.height===1?0:-this.height/2;e.beginPath(),t.util.drawDashedLine(e,n,r,-n,-r,this.strokeDashArray),e.closePath()},toObject:function(e){return n(this.callSuper("toObject",e),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){var e=[];return this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!0)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e);var t=this.get("radius")*2;this.set("width",t).set("height",t)},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e|| -{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(){var e=[],t=this.width/2,n=this.height/2,r=[-t+" "+n,"0 "+ -n,t+" "+n].join(",");return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!0)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!0)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this._renderFill(e),this._renderStroke(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function r(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}t.Rect=t.util.createClass(t.Object,{type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(e){e=e||{},this._initStateProperties(),this.callSuper("initialize",e),this._initRxRy(),this.x=e.x||0,this.y=e.y||0},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height,u=this.group&&this.group.type!=="group";e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y),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._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,i){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=r(s);var o=new t.Rect(n(i?t.util.object.clone(i):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed,r=t.util.array.min;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(){var e=[],t=[];for(var r=0,i=this.points.length;r'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;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,s=/(-?\.\d+)|(-?\d+(\.\d+)?)/g,o,u;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var n=0,r=e.length;n"),t.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},toGrayscale:function(){var e=this.paths.length;while(e--)this.paths[e].toGrayscale();return this},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e){var n=u(e.paths);return new t.PathGroup(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){var e=this.left,t=this.top;this.forEachObject(function(n){var r=n.get("left"),i=n.get("top");n.set("originalLeft",r),n.set("originalTop",i),n.set("left",r-e),n.set("top",i-t),n.setCoords(),n.__origHasControls=n.hasControls,n.hasControls=!1},this)},toString:function(){return"#"},getObjects:function(){return this._objects},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textShadow:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e);var r=Math.max(this.scaleX,this.scaleY);this.clipTo&&t.util.clipContext(this,e);for(var i=0,s=this._objects.length;i'+e.join("")+""},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','');if(this.stroke||this.strokeDashArray){var t=this.fill;this.fill=null,e.push("'),this.fill=t}return e.push(""),e.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this.setElement(this._originalImage),e&&e();return}var t=this._originalImage,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height;if(fabric.isLikelyNode){var s=n.toDataURL("image/png").substring(22);r.src=new Buffer(s,"base64"),i._element=r,e&&e()}else r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png");return this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e){e.filters&&e.filters.length&&(this.filters=e.filters.map(function(e){return e&&fabric.Image.filters[e.type].fromObject(e)}))},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){var n=fabric.document.createElement("img"),r=e.src;e.width&&(n.width=e.width),e.height&&(n.height=e.height),n.onload=function(){fabric.Image.prototype._initFilters.call(e,e);var r=new fabric.Image(n,e);t&&t(r),n=n.onload=n.onerror=null},n.onerror=function(){fabric.log("Error loading "+n.src),t&&t(null,!0),n=n.onload=n.onerror=null},n.src=r},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))})},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.Brightness=fabric.util.createClass({type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;s=0&&N=0&&Co&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.object.clone,i=t.util.toFixed,s=t.StaticCanvas.supports("setLineDash");if(t.Text){t.warn("fabric.Text is already defined");return}var o={fontSize:!0,fontWeight:!0,fontFamily:!0,textDecoration:!0,fontStyle:!0,lineHeight:!0,stroke:!0,strokeWidth:!0,text:!0},u=t.Object.prototype.stateProperties.concat();u.push("fontFamily","fontWeight","fontSize","path","text","textDecoration","textShadow","textAlign","fontStyle","lineHeight","backgroundColor","textBackgroundColor","useNative"),t.Text=t.util.createClass(t.Object,{type:"text",fontSize:40,fontWeight:"normal",fontFamily:"Times New Roman",textDecoration:"",textShadow:"",textAlign:"left",fontStyle:"",lineHeight:1.3,backgroundColor:"",textBackgroundColor:"",path:null,useNative:!0,stateProperties:u,initialize:function(e,t){t=t||{},this.text=e,this.__skipDimension=!0,this.setOptions(t),this.__skipDimension=!1,this._initDimensions(),this.setCoords()},_initDimensions:function(){if(this.__skipDimension)return;var e=t.util.createCanvasElement();this._render(e.getContext("2d"))},toString:function(){return"#'},_render:function(e){var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_renderViaNative:function(e){this.transform(e,t.isLikelyNode),this._setTextStyles(e);var n=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this._renderTextBackground(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),e.save(),this._setTextShadow(e),this.clipTo&&t.util.clipContext(this,e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this.clipTo&&e.restore(),this.textShadow&&e.restore(),e.restore(),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this._setBoundaries(e,n),this._totalLineHeight=0,this.setCoords()},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_setTextShadow:function(e){if(!this.textShadow)return;var t=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/,n=this.textShadow,r=t.exec(this.textShadow),i=n.replace(t,"");e.save(),e.shadowColor=i,e.shadowOffsetX=parseInt(r[1],10),e.shadowOffsetY=parseInt(r[2],10),e.shadowBlur=parseInt(r[3],10),this._shadows=[{blur:e.shadowBlur,color:e.shadowColor,offX:e.shadowOffsetX,offY:e.shadowOffsetY}],this._shadowOffsets=[[parseInt(e.shadowOffsetX,10),parseInt(e.shadowOffsetY,10)]]},_drawTextLine:function(e,t,n,r,i){if(this.textAlign!=="justify"){t[e](n,r,i);return}var s=t.measureText(n).width,o=this.width;if(o>s){var u=n.split(/\s+/),a=t.measureText(n.replace(/\s+/g,"")).width,f=o-a,l=u.length-1,c=f/l,h=0;for(var p=0,d=u.length;p-1&&i(this.fontSize*this.lineHeight),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize*this.lineHeight-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){if(!this.visible)return;e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){return n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;this.backgroundColor&&this._boundaries&&o.push("');for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.textBackgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},setColor:function(e){return this.set("fill",e),this},getText:function(){return this.text},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in o&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs"),r=n.createReadStream(e),i="";r.on("data",function(e){i+=e}),r.on("end",function(){t(i)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&e.indexOf("data")===0?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e&&request(e,"binary",r)},fabric.loadSVGFromURL=function(e,t){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t)}):request(e,"",function(e){fabric.loadSVGFromString(e,t)})},fabric.loadSVGFromString=function(e,t){var n=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(n.documentElement,function(e,n){t(e,n)})},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e),t(r)})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file +this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(e){return this._setDimension("width",e)},setHeight:function(e){return this._setDimension("height",e)},setDimensions:function(e){for(var t in e)this._setDimension(t,e[t]);return this},_setDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.lowerCanvasEl.style[e]=t+"px",this.upperCanvasEl&&(this.upperCanvasEl[e]=t,this.upperCanvasEl.style[e]=t+"px"),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t+"px"),this[e]=t,this.calcOffset(),this.renderAll(),this},getElement:function(){return this.lowerCanvasEl},getActiveObject:function(){return null},getActiveGroup:function(){return null},_draw:function(e,t){if(!t)return;if(this.controlsAboveOverlay){var n=t.hasBorders,r=t.hasControls;t.hasBorders=t.hasControls=!1,t.render(e),t.hasBorders=n,t.hasControls=r}else t.render(e)},_onObjectAdded:function(e){this.stateful&&e.setupState(),e.setCoords(),e.canvas=this,this.fire("object:added",{target:e}),e.fire("added")},_onObjectRemoved:function(e){this.fire("object:removed",{target:e}),e.fire("removed")},getObjects:function(){return this._objects},clearContext:function(e){return e.clearRect(0,0,this.width,this.height),this},getContext:function(){return this.contextContainer},clear:function(){return this._objects.length=0,this.discardActiveGroup&&this.discardActiveGroup(),this.discardActiveObject&&this.discardActiveObject(),this.clearContext(this.contextContainer),this.contextTop&&this.clearContext(this.contextTop),this.fire("canvas:cleared"),this.renderAll(),this},renderAll:function(e){var t=this[e===!0&&this.interactive?"contextTop":"contextContainer"];this.contextTop&&this.selection&&!this._groupSelector&&this.clearContext(this.contextTop),e||this.clearContext(t),this.fire("before:render"),this.clipTo&&fabric.util.clipContext(this,t),this.backgroundColor&&(t.fillStyle=this.backgroundColor.toLive?this.backgroundColor.toLive(t):this.backgroundColor,t.fillRect(this.backgroundColor.offsetX||0,this.backgroundColor.offsetY||0,this.width,this.height)),typeof this.backgroundImage=="object"&&this._drawBackroundImage(t);var n=this.getActiveGroup();for(var r=0,i=this._objects.length;r',''),t.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),""),this.backgroundColor&&this.backgroundColor.source&&t.push('"),this.backgroundImage&&t.push(''),this.overlayImage&&t.push('');var n=this.getActiveGroup();n&&this.discardActiveGroup();for(var r=0,i=this.getObjects(),s=i.length;r"),t.join("")},remove:function(e){return this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared")),fabric.Collection.remove.call(this,e)},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e){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,f=u.data.length;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.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(e,this._offset))return n=this.lastRenderedObjectWithControlsAboveOverlay,n;var i=this.getActiveGroup();if(i&&!t&&this.containsPoint(e,i))return n=i,n;var s=[];for(var o=this._objects.length;o--;)if(this._objects[o]&&this._objects[o].visible&&this.containsPoint(e,this._objects[o])){if(!this.perPixelTargetFind&&!this._objects[o].perPixelTargetFind){n=this._objects[o],this.relatedTarget=n;break}s[s.length]=this._objects[o]}for(var u=0,a=s.length;u"},get:function(e){return this[e]},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"&&e!=="clipTo"?this._set(e,t(this.get(e))):this._set(e,t);return this},_set:function(e,t){var n=e==="scaleX"||e==="scaleY";n&&(t=this._constrainScale(t));if(e==="scaleX"&&t<0)this.flipX=!this.flipX,t*=-1;else if(e==="scaleY"&&t<0)this.flipY=!this.flipY,t*=-1;else if(e==="width"||e==="height")this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2);return this[e]=t,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save();var r=this.transformMatrix;r&&!this.group&&e.setTransform(r[0],r[1],r[2],r[3],r[4],r[5]),n||this.transform(e),this.stroke&&(e.lineWidth=this.strokeWidth,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,e.strokeStyle=this.stroke.toLive?this.stroke.toLive(e):this.stroke),this.overlayFill?e.fillStyle=this.overlayFill:this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill),r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_renderFill:function(e){if(!this.fill)return;this.fill.toLive&&(e.save(),e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0)),e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke)return;e.save(),this.strokeDashArray?(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),o?(e.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(e)):this._renderDashedStroke&&this._renderDashedStroke(e),e.stroke()):this._stroke?this._stroke(e):e.stroke(),this._removeShadow(e),e.restore()},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){var n=this.toDataURL();return t.util.loadImage(n,function(n){e&&e(new t.Image(n))}),this},toDataURL:function(e){e||(e={});var n=t.util.createCanvasElement();n.width=this.getBoundingRectWidth(),n.height=this.getBoundingRectHeight(),t.util.wrapElement(n,"div");var r=new t.Canvas(n);e.format==="jpeg"&&(r.backgroundColor="#fff");var i={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set({active:!1,left:n.width/2,top:n.height/2}),r.add(this);var s=r.toDataURL(e);return this.set(i).setCoords(),r.dispose(),r=null,s},isType:function(e){return this.type===e},toGrayscale:function(){var e=this.get("fill");return e&&this.set("overlayFill",(new t.Color(e)).toGrayscale().toRgb()),this},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){return this.set("fill",new t.Pattern(e))},setShadow:function(e){return this.set("shadow",new t.Shadow(e))},animate:function(){if(arguments[0]&&typeof arguments[0]=="object"){var e=[],t,n;for(t in arguments[0])e.push(t);for(var r=0,i=e.length;re.x&&n.left+n.widthe.y&&n.top+n.height=e.y&&f.d.y>=e.y)continue;f.o.x===f.d.x&&f.o.x>=e.x?(o=f.o.x,u=e.y):(n=0,r=(f.d.y-f.o.y)/(f.d.x-f.o.x),i=e.y-n*e.x,s=f.o.y-r*f.o.x,o=-(i-s)/(n-r),u=i+n*o),o>=e.x&&(a+=1);if(a===2)break}return a},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],t=fabric.util.array.min(e),n=fabric.util.array.max(e),r=Math.abs(t-n),i=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],s=fabric.util.array.min(i),o=fabric.util.array.max(i),u=Math.abs(s-o);return{left:t,top:s,width:r,height:u}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(e){return Math.abs(e)1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x:m.x,y:m.y};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords&&this._setCornerCoords(),this}})}(),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this[e]!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner),o=this._findCrossPoints({x:i,y:s},u);if(o!==0&&o%2===1)return this.__corner=a,a}return!1},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=this.strokeWidth>1?this.strokeWidth:0;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)+.5,~~(-(u/2)-t-r/2*this.scaleY)+.5,~~(o+n+r*this.scaleX),~~(u+n+r*this.scaleY));if(this.hasRotatingPoint&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;var t=this.cornerSize,n=t/2,r=this.strokeWidth>1?this.strokeWidth/2:0,i=-(this.width/2),s=-(this.height/2),o,u,a=t/this.scaleX,f=t/this.scaleY,l=this.padding/this.scaleX,c=this.padding/this.scaleY,h=n/this.scaleY,p=n/this.scaleX,d=(n-t)/this.scaleX,v=(n-t)/this.scaleY,m=this.height,g=this.width,y=this.transparentCorners?"strokeRect":"fillRect",b=this.transparentCorners,w=typeof G_vmlCanvasManager!="undefined";return e.save(),e.lineWidth=1/Math.max(this.scaleX,this.scaleY),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=e.fillStyle=this.cornerColor,o=i-p-r-l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),this.get("lockUniScaling")||(o=i+g/2-p,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),this.hasRotatingPoint&&(o=i+g/2-p,u=this.flipY?s+m+this.rotatingPointOffset/this.scaleY-f/2+r+c:s-this.rotatingPointOffset/this.scaleY-f/2-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),e.restore(),this}})}(),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r={x1:1,x2:1,y1:1,y2:1},i=t.StaticCanvas.supports("setLineDash");if(t.Line){t.warn("fabric.Line is already defined");return}t.Line=t.util.createClass(t.Object,{type:"line",initialize:function(e,t){t=t||{},e||(e=[0,0,0,0]),this.callSuper("initialize",t),this.set("x1",e[0]),this.set("y1",e[1]),this.set("x2",e[2]),this.set("y2",e[3]),this._setWidthHeight(t)},_setWidthHeight:function(e){e||(e={}),this.set("width",Math.abs(this.x2-this.x1)||1),this.set("height",Math.abs(this.y2-this.y1)||1),this.set("left","left"in e?e.left:Math.min(this.x1,this.x2)+this.width/2),this.set("top","top"in e?e.top:Math.min(this.y1,this.y2)+this.height/2)},_set:function(e,t){return this[e]=t,e in r&&this._setWidthHeight(),this},_render:function(e){e.beginPath();var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix&&e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top);if(!this.strokeDashArray||this.strokeDashArray&&i){var n=this.x1<=this.x2?-1:1,r=this.y1<=this.y2?-1:1;e.moveTo(this.width===1?0:n*this.width/2,this.height===1?0:r*this.height/2),e.lineTo(this.width===1?0:n*-1*this.width/2,this.height===1?0:r*-1*this.height/2)}e.lineWidth=this.strokeWidth;var s=e.strokeStyle;e.strokeStyle=this.stroke||e.fillStyle,this._renderStroke(e),e.strokeStyle=s},_renderDashedStroke:function(e){var n=this.width===1?0:-this.width/2,r=this.height===1?0:-this.height/2;e.beginPath(),t.util.drawDashedLine(e,n,r,-n,-r,this.strokeDashArray),e.closePath()},toObject:function(e){return n(this.callSuper("toObject",e),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){var e=[];return this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!0)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e);var t=this.get("radius")*2;this.set("width",t).set("height",t)},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e +.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(){var e=[],t=this.width/2,n=this.height/2,r=[-t+" "+n,"0 "+ -n,t+" "+n].join(",");return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!0)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!0)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this._renderFill(e),this._renderStroke(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function r(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}t.Rect=t.util.createClass(t.Object,{type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(e){e=e||{},this._initStateProperties(),this.callSuper("initialize",e),this._initRxRy(),this.x=e.x||0,this.y=e.y||0},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height,u=this.group&&this.group.type!=="group";e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y),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._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,i){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=r(s);var o=new t.Rect(n(i?t.util.object.clone(i):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed,r=t.util.array.min;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(){var e=[],t=[];for(var r=0,i=this.points.length;r'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;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,s=/(-?\.\d+)|(-?\d+(\.\d+)?)/g,o,u;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var n=0,r=e.length;n"),t.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},toGrayscale:function(){var e=this.paths.length;while(e--)this.paths[e].toGrayscale();return this},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e){var n=u(e.paths);return new t.PathGroup(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){var e=this.left,t=this.top;this.forEachObject(function(n){var r=n.get("left"),i=n.get("top");n.set("originalLeft",r),n.set("originalTop",i),n.set("left",r-e),n.set("top",i-t),n.setCoords(),n.__origHasControls=n.hasControls,n.hasControls=!1},this)},toString:function(){return"#"},getObjects:function(){return this._objects},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textShadow:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e);var r=Math.max(this.scaleX,this.scaleY);this.clipTo&&t.util.clipContext(this,e);for(var i=0,s=this._objects.length;i'+e.join("")+""},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','');if(this.stroke||this.strokeDashArray){var t=this.fill;this.fill=null,e.push("'),this.fill=t}return e.push(""),e.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this.setElement(this._originalImage),e&&e();return}var t=this._originalImage,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height;if(fabric.isLikelyNode){var s=n.toDataURL("image/png").substring(22);r.src=new Buffer(s,"base64"),i._element=r,e&&e()}else r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png");return this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e){e.filters&&e.filters.length&&(this.filters=e.filters.map(function(e){return e&&fabric.Image.filters[e.type].fromObject(e)}))},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){var n=fabric.document.createElement("img"),r=e.src;e.width&&(n.width=e.width),e.height&&(n.height=e.height),n.onload=function(){fabric.Image.prototype._initFilters.call(e,e);var r=new fabric.Image(n,e);t&&t(r),n=n.onload=n.onerror=null},n.onerror=function(){fabric.log("Error loading "+n.src),t&&t(null,!0),n=n.onload=n.onerror=null},n.src=r},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))})},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.Brightness=fabric.util.createClass({type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;s=0&&N=0&&Co&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.object.clone,i=t.util.toFixed,s=t.StaticCanvas.supports("setLineDash");if(t.Text){t.warn("fabric.Text is already defined");return}var o={fontSize:!0,fontWeight:!0,fontFamily:!0,textDecoration:!0,fontStyle:!0,lineHeight:!0,stroke:!0,strokeWidth:!0,text:!0},u=t.Object.prototype.stateProperties.concat();u.push("fontFamily","fontWeight","fontSize","path","text","textDecoration","textShadow","textAlign","fontStyle","lineHeight","backgroundColor","textBackgroundColor","useNative"),t.Text=t.util.createClass(t.Object,{type:"text",fontSize:40,fontWeight:"normal",fontFamily:"Times New Roman",textDecoration:"",textShadow:"",textAlign:"left",fontStyle:"",lineHeight:1.3,backgroundColor:"",textBackgroundColor:"",path:null,useNative:!0,stateProperties:u,initialize:function(e,t){t=t||{},this.text=e,this.__skipDimension=!0,this.setOptions(t),this.__skipDimension=!1,this._initDimensions(),this.setCoords()},_initDimensions:function(){if(this.__skipDimension)return;var e=t.util.createCanvasElement();this._render(e.getContext("2d"))},toString:function(){return"#'},_render:function(e){var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_renderViaNative:function(e){this.transform(e,t.isLikelyNode),this._setTextStyles(e);var n=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this._renderTextBackground(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),e.save(),this._setTextShadow(e),this.clipTo&&t.util.clipContext(this,e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this.clipTo&&e.restore(),this.textShadow&&e.restore(),e.restore(),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this._setBoundaries(e,n),this._totalLineHeight=0,this.setCoords()},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_setTextShadow:function(e){if(!this.textShadow)return;var t=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/,n=this.textShadow,r=t.exec(this.textShadow),i=n.replace(t,"");e.save(),e.shadowColor=i,e.shadowOffsetX=parseInt(r[1],10),e.shadowOffsetY=parseInt(r[2],10),e.shadowBlur=parseInt(r[3],10),this._shadows=[{blur:e.shadowBlur,color:e.shadowColor,offX:e.shadowOffsetX,offY:e.shadowOffsetY}],this._shadowOffsets=[[parseInt(e.shadowOffsetX,10),parseInt(e.shadowOffsetY,10)]]},_drawTextLine:function(e,t,n,r,i){if(this.textAlign!=="justify"){t[e](n,r,i);return}var s=t.measureText(n).width,o=this.width;if(o>s){var u=n.split(/\s+/),a=t.measureText(n.replace(/\s+/g,"")).width,f=o-a,l=u.length-1,c=f/l,h=0;for(var p=0,d=u.length;p-1&&i(this.fontSize*this.lineHeight),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize*this.lineHeight-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){if(!this.visible)return;e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){return n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;this.backgroundColor&&this._boundaries&&o.push("');for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.textBackgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},setColor:function(e){return this.set("fill",e),this},getText:function(){return this.text},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in o&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs"),r=n.createReadStream(e),i="";r.on("data",function(e){i+=e}),r.on("end",function(){t(i)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&e.indexOf("data")===0?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e&&request(e,"binary",r)},fabric.loadSVGFromURL=function(e,t){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t)}):request(e,"",function(e){fabric.loadSVGFromString(e,t)})},fabric.loadSVGFromString=function(e,t){var n=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(n.documentElement,function(e,n){t(e,n)})},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e),t(r)})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file diff --git a/dist/all.min.js.gz b/dist/all.min.js.gz index 0a2d5ec91cffe8d9a3261656627a10e9bc8447c4..0b7d962e3aa25200284ad9e2f00d3aaac2eb0062 100644 GIT binary patch delta 47461 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�r7Wp zF%7w^d6QKXD8MZ6y-M}D@Us}slXjAt3#S@>YE%?vAu?Iy%aeZ+!-Oy{51;6#4d@3I z9MjRXGuWxF9Cy2Ryw#uU=?IJC`=^KZpb;1``!<$1rs0fHHEOz_!}!v+BEF<}+I-O9 zPsb+769&TNxMH1#QSVVS+Pm2!WO=mrNV#+AJ&N}jomQ!&Ko{(7o&_CZ6vogm?~@Rl zK>K~vXDB^hke)hmSk|!aTaYopZy2 z`@Br%h>l^H(+}w7y++VFgZF>%xUZ%cn`vqs~^EQ&@~J z1yRmP)q8Jdej7}x5vB#)o=Mg%w66+Tmg-R?G>q3oMWR}wllPP*^ zQ}}<=VC^Y>UBaIRSqF1KX0MXVeu|Mg(6B85($3Xm@ju zSkT{RG;R;H7|de$7n=LrR$?m>wpkBX=01N|6f7ZwXDTo1CM~Aexr#n6#d396QW>(` z!Fve5;hyJb#&%Ev<4%4KouRyV58$2DhCFO#!T41gL^UB@fahFg$gd=Mt(~#V8)9V& zB_mklUYAORrQfV7(a?1?WSdg$nLYiB~V&$UOeaw#R>J-HXKSdtc@=3O3E^{ z^wP5d(X)sU>;;;d4dOk*3}l)~%Npl$hebscinN>Q#M?V)mK$Vn3)ULLGyH$Rn)Ttn zWSgA{g&MBoY&A8*WEl=-vtEdI%~+2~V=c}Ib#X`^r~C#UJSS$OHD%A0%?nogg-k5P*7*pvEV-rIb&yvA%c>(s=SWunjBXbH6*|Z!*1*&E@Y$m*w2{JN+{1$(H(tmZnRe9}79a1)9(e+jx=4JqQWWjNzC7vNrjNMR+ zcf49Ib|L6bnX4W_g+&vDjEgy>|PgIbM;^|No3$A}z0cm}qtX(NU zJbxo!FB%tYw7~p%9M107=~cc^Uw>!E z_u>oVx~SiXSrMd#H|JYb3~7L`vT0c8YPoal1Y; zAj^T4Y5D4{eD#0QO(&iCp!h7}s}@^;bdFlE=`N_QII14#MhzIC$?c&XGuCwyEgsdv zNTPRDie^xSpPT_kj<$7f25H{UjH;$8smu`F)JflyY1Fct<61^6BRQDN7+233XCz@E zzwu44_V^N3h3MHYdb!6}uqq=e#hKm4wq`{eR+YD2kHmkXih3h53!BK=*hj1&e>+HnL|QVFN2`A3D3tiPSPQ4k3>Z7UX;T{oB%wjHPUJ zBoz*go~%;T7kP&6L}4xA;&voL-F9^)UBr4f{sw9_PclW5i}yN+M#C6wRvjAL^kQb0 z2Qs|bL}P!Y=_xXjM(SBI>atDHQ^%z?(;#V=_f^1$gT!CG-ZZ*Noo8Ws7N_R=sCQ+sW&SqKlP*&X2_J%!X zI}yd;vXTjrDwTIhKy%Dce(-6GUpX#o&EdEhH!SIJr=S~rAg!i=5RxZy8x}XQn>sv` zv4eDq2pm2VLuJOw7N!cB8Z&;A6$^lbg}hhUKw@L6bY-B@GP6M9m>Dq4e5n90VnbNb zZ(4t^i)jLg>*r(0bcP)tcd%;6(pY>CD42G1Bfcyd3}tP1k875+24Wcqn95z^0(J*ms;;IZ&vQC}beBHjjCYU|i?>lJSL4TSoSBKh8c=>k zqy}dqi7usO-4vl(ioW}WJ8L~T&z*zT;bm9o+{U6O&4Tbmc(8N|{j1U9%2S4Fhmm+h z#=-#?Ai;b*q~|S25a)tqZ4%oFj%Gnb5RKbu*j2xL64iTXt%28p5h5_OiYF!da)QA+ zBdOexkRmM4C$C@Szh{f}59NPMyr3wOV;z;BU%v{OC^=YSEbT$PI%lo5@aPB@77rS^ z=lpU7h#0vNIZx~Cizg^q)Yy3?c7i1X)u1dEWjafY^XDlXt8(y?(k%vzn>*|novm2l z4~uIow@E<6AA_kdf4C#MaW{1#kFFcC$rp$uGx{>9xpuTQ<0_cv6gq$Ya{b+m5K=Qe zoy~;MzD56;5Mc1)&6{^Gp8xR6^EYw?OkLd(#aU|enc8n==;BPa=DYTpCN4AQ?z`ls z&c8~RUiO_LHh4aw_-RHYm8~ZV7w3*})ds`MFfX5o{TsCbt_a0-XmQ6(Tl9(CU{7Tk ztm|+WXTKf0mIPCRWBq^p>LRcUX_Zxl3?y3$Ao^mhq?cEub&t91teld20s%1P6n9g+=N?%Sc&^c?b)bD`au{9yFqsyMWXt_ z9~nAe5CBPkw@0ujFT#MlHSA$s0Gb$Y3nxqpBTYz{3ChN|c7T5nuiCU1AE2ML^2nz% zuQ)cxlgTV*SrfKqi#$HUKdnw$dg+|G-Fvj@H`+ivZ5Pt5x%k|4YVS*;xJQ|N%W$Ky zZ^gp=G%!Ym?0DGXiHBRrex)n&E1gH~+I$qpvWq2Y^8)pmjc?vbLEJAGGxF;a`4=fJ zZB}%@G(vLs=f{6vD3@E=v%?8V1W8XI472_)I{4dRwEwrmk&&K>v<-$j@$_RUp~{XJ zz;_Q+y8VC^y!H)W2TPHxTixM?gfnIFg5Y0+*gpXcNV!al3;Gtwml&J%$Q6Jb0HJbI zH)++-$P6F%9DWfXOffUEwoW9Tt%OPjmHqnHcVGSd`uTs!cR&6R%MsZKtRZ6sXop0n zp3BHWe=H>_F8BsV-6~~krAV>ZW{2a2qQ-p6c&&NJ^j>$p;_I{OUPCQr`w| zYs)Mb-l(OsTOFL|1)DQP?O9r{dE!eXZ9-qh;7hXbDYClmWX=nAye_$0n9g(Ea%Ox` zyiGypoRohahE>)g3rKMk5^3a!>xM`hNLI9d08yQ92HBF2r8`w3D0aG1NwHIXT#oBr z@+7KG>$6^x$MCl|RKJe!*BHfvM&AVm3`5HC-{1WBLmMLSaxrm-M@o-k|#r`y#>NAKf_6ZEqPxq;IX;ups0eoos)8z{&RnoAsnM0!r?6&A!p*p?d|Dd%>NsT zzlUcY;g*+LWg4ToTE1wm`5;-R3q{qMfW<9#Xm}IQb1MU<0&9A0In&0R2#B{%xX?ts z>x2u<7=EC%1|E016=CLvq!-?$_~)~Kd`>)~;^b77k{C>&5kMQ>! z{{0w!Z#I{w>$BuMhCfg+`9MF8&XSk(2-BC)U`$Ml|%gO_<^EP2dl zXk?tHZXlxW;m5)d)xhThA>UvabhwkmoCORvE2itapoy=}Zh)l$thT-^7c&gACx3tc z3!fj=C+d!viY%wXy>)SvnSsez2_adjUZ-=cr) zDe|@T84na2((G`GxM1){Z@nPe_a%W2z=n_xp)6b<=TVu2gl`CBgE5Wh;4$JHXGtlL z5b@&(e;|(XiKk%eX7k#3cX+1_=K6o1WlO&+-e;BfRX6vOOa0-SDeq^@7$j^Ypp3aj z850Eb_(SfQ_=cZy^JL1=*&nunyci$3dt7-F|F6%mcR!SQedkrALc2lmg4)aY@4pao zQ-5)NC$O%QaPXAXjsdvM$}1r6_mOlcfpDntFA)>`3yFzO2IVxeksf6Cp`d?d{#ckz zl|L7d{wcrCP)2&!!I0&4Brnk(uZAK>UCQ6Lw@?1?6Cwe7TuWGQs<6iV#IFEStN>E1 zdWk(+!evv)O^@qw+RD8tlhyu{{koUJyMbQSOZKXc2Z{Wu<2fSF>WC(2J=X-?KCgOq zYvbkdY`nA(@-)6mQnwg8cloZKLQX;jWK`@MM;=9}viuKW}f3{tw`_)@aaeBD{9! z;8D6(=WF5kGpcNVMgT~GAVno^Jn&OI=?nS+Cp~?J8gls00{>ZsX@7qn9oPJ8A%4xp zuMjK2*&IfH6viCOsgA6Pcb{2f<3IM;8clqzllvxH=ILE$mJ0m~F)TolTR2vk3?A}RV zfBk~WeDPN-b9DGvZakJb`pXfPdHVPXm3cgj4vq%HKaPsxCH|E2aP(OY#0gp;-f?{6s>6CaL`|pzW+;)koJA1M}tn#RJ?+4_yzhpQ^kVA>!5$P5}G;C+ffu_iFsFv zBUxh6RpN;#(Q%gHy@^WME=Eet@IbTLdeR4KssnU84c63`p_js$*WjsGx4;MdskAis5yev9fCn`nV&hQ*NS{yaf z?#3}$n(TjMheUpAx{Z*Uav6=J^S73x<~w@uwhQNg)pA~}U@;O?DM#oD`rJ%*^<&Ro&$CbwJ@0l!ciFYjzFvjER4nmQ}$-Pv+ogq(9=r$Y*YOqVCH*oQ$?6 z%E1eKOCYT$RbHoGQGIjoFs{7s0{T3d%He59Vh$hHf##0egf31D7lIGQ9#7t71^JOdgo5P5uqoi{3@UC|r+HGIKgU8Lf) z;z6?@&=z$py}#mYxf`w9;@8Zloe#^ErS+=HP6!a7Lw*JdhY z_3LK^`J}Iv_uaxcXZ*H1HeL@Lh+%)C-%WDxTixTp1yMK|Ew7`AH^KVcKZuPz5EumB zMv6q>c1Hp(fdygA`XDmxfcc%HS3AkoH($wLH3x-40}l@)r^H*c#F1U%%f+fPvmbM| z{m`D?oI|mZSx0b3tf9r_eE#dm8676RbrRoh&b-h4>8Tot+X@b&S6r15Imr;X1&Z)9ftdq9*eKF%9#m6_J!b8b;j6At|2;4|XfqOovWRjB`l4YyZtPZAloWR<`gCg+Rx;pp_Xi$-GJGaeCUnV zMh+4wUPkK}8T=xe7>VLFL))`Ya;T0MAyhtgWuv`<%vkuimfp zj#b8X^^15Fqk)!n*7bZ$Bv;_7#(RlA6lJvK7H^`7loOk=r{#Y^4y$+l<2)p$XN5xw zqG$c#!-sje{e;C^Tf>5V3`4%UxZJJ5zLiT{*=-$AG!S#NhvJ+&{x;E|W{{>WvH8WH!TRKmll_1JZGT2U{nOh}x&O3d>2 z+Al(Z&pq6&7ngtef*&Yml7I8={ndgc8{elzdXZI$ZN>_FRAkk+C*Qx)5O^d~Sp=q- zaT>QKcHBiC2ftMTyMsif~6ty$j-|FQJmT zH3yig!kL~Ko~rEg>oO*uuf{nGKa*3r-KY?Spv>Sxkjr43`_$aziziMMoIvE4G6gX7w~(X1`u7Xr1}E;HscgGuUwEe$9J51!vT$ zQ9#N%H_{sjxt}fZA7Ot0hsXDbv^VeJ!_sjAw{?~-p&dVx8*00X;w4*~S;}t|=PA!| zxdHe^o^~H6GKJKaa-SU^;7HL4o-nXLb#Z@rlvl^|@ruIop04;HPr`JUL%cehh|cU( zRy{b10C?A)lbrI=Sb0xtum(^&TL+ydb>(mfv;Dy~>E&w=^XBgey(&uv&s)guje+Z8# zdPjuUFC&WTk#x5YDP~!G2xUnMIK}B0m%4m?aZUvukwIg})Kj@Y~?O>gXU2 z{%r`jPA~Yk$AJv6?u~32vyXb&)7^@4cZC)lvZHuhik4@n<_@P&2C}xNaj886LE2MT z*`9;?*q)=r0J?leF)^s56{wXWJbX1C_fh`YL}R~RZ&*w`dc9#m9-=B%OUZu|KJCQO zVu3JeTNLP>OFnh%#^;8RhI}BnN^nH!H?yXY!-J72De0tKhEbn>3LX$-!)D|gb2+x_ zKU+hJ@gkD@eM7VH`E;7qby?L?+4!TJ@f)1ED*NXONM-4ojJM(E*ROaZD5mKE+qk_A z`3F30q$UhFg=Pv}HqEjgQQUux!^x8;k4Jw!luIpYB?%-?zCAhl>CFiL#R%mC+4;?7 zSvLhn38@D1XN=WGT$}0Biiy*!thp>_qu`sDCxNXL&Vvs~50bQ4^ za6$re9WWNcMrNX>zmeOJ^Y12YR`rW=hJfPeko4($7)J#DH?Fx&bOe7FSR=^>kXRrp z2Wy2pHhB5s#~*%p{qpOd-@N=vIx=I|b4JE!5AI`;$(@&X2%Dtec*QEzfc#oGQ z8W{~CpSG^iq3Q-{0lW&)#@*(3^V(D}z|_1#kyjrz=4l(kC8gU2Zkq(spizr%h?)s=6$;0pQ_5khw@k0 z_BYw-QMALW<$zqO%aS_2Y0H-#{;V|Ht?_Ro9!x z#qEXJ?d=zbhZsZy{!q|WV&9;XahZ^yy zr5ZWnBq>0_3Yu*hu%VlUStj8We4_Xz5jINrJFe9#`CST%MfmB5Zy3~j%mNAf)cv?M z!f3ZH{{5$ytv<3lI?;7dkDr4lSNX*ofqNy}`<32-$Ga8t4a@A!jxX;HSop$~-WAO~ z2W-Lm_VzEm(-0$b34|)_oi(}K-HRaG>s$pcuzeY%+u!@I!~LcMC~q|W{{f37J$o?5 F0svc)-h}`F delta 47377 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 ZodMr}9qu", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "repository": "git://github.com/kangax/fabric.js",