From cdc2d4156fd6f07c2b895a0a05d93b7e30e2a2c5 Mon Sep 17 00:00:00 2001 From: kangax Date: Fri, 14 Jun 2013 11:14:01 +0200 Subject: [PATCH] Build distribution. Version 1.2.0 --- HEADER.js | 2 +- dist/all.js | 43 ++++++++++++++++++++++++++++++------------- dist/all.min.js | 12 ++++++------ dist/all.min.js.gz | Bin 49697 -> 49680 bytes package.json | 2 +- 5 files changed, 38 insertions(+), 21 deletions(-) diff --git a/HEADER.js b/HEADER.js index 2cf7a78c..0438eab4 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.21" }; +var fabric = fabric || { version: "1.2.0" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; diff --git a/dist/all.js b/dist/all.js index 5f559338..0d149750 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.21" }; +var fabric = fabric || { version: "1.2.0" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; @@ -8612,17 +8612,34 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab } } + // adjust the mouse coordinates when dealing with padding + if (abs(localMouse.x) > target.padding) { + if (localMouse.x < 0 ) { + localMouse.x += target.padding; + } else { + localMouse.x -= target.padding; + } + } else { // mouse is within the padding, set to 0 + localMouse.x = 0; + } + + if (abs(localMouse.y) > target.padding) { + if (localMouse.y < 0 ) { + localMouse.y += target.padding; + } else { + localMouse.y -= target.padding; + } + } else { + localMouse.y = 0; + } + // Actually scale the object var newScaleX = target.scaleX, newScaleY = target.scaleY; if (by === 'equally' && !lockScalingX && !lockScalingY) { - var dist = Math.sqrt(Math.pow(localMouse.y,2) + Math.pow(localMouse.x,2)); - var lastDist = Math.sqrt(Math.pow((target.height + (target.padding/2) + (target.strokeWidth/2)) * t.original.scaleY,2) + - Math.pow((target.width + (target.padding/2) + (target.strokeWidth/2)) * t.original.scaleX,2)); - - if (localMouse.y < 0 || localMouse.x < 0) { - dist *= -1; - } - + var dist = localMouse.y + localMouse.x; + var lastDist = (target.height + (target.strokeWidth)) * t.original.scaleY + + (target.width + (target.strokeWidth)) * t.original.scaleX; + // We use t.scaleX/Y instead of target.scaleX/Y because the object may have a min scale and we'll loose the proportions newScaleX = t.original.scaleX * dist/lastDist; newScaleY = t.original.scaleY * dist/lastDist; @@ -8631,18 +8648,18 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab target.set('scaleY', newScaleY); } else if (!by) { - newScaleX = localMouse.x/(target.width+(target.padding/2)+(target.strokeWidth/2)); - newScaleY = localMouse.y/(target.height+(target.padding/2)+(target.strokeWidth/2)); + newScaleX = localMouse.x/(target.width+target.strokeWidth); + newScaleY = localMouse.y/(target.height+target.strokeWidth); lockScalingX || target.set('scaleX', newScaleX); lockScalingY || target.set('scaleY', newScaleY); } else if (by === 'x' && !target.get('lockUniScaling')) { - newScaleX = localMouse.x/(target.width+(target.padding/2)+(target.strokeWidth/2)); + newScaleX = localMouse.x/(target.width + target.strokeWidth); lockScalingX || target.set('scaleX', newScaleX); } else if (by === 'y' && !target.get('lockUniScaling')) { - newScaleY = localMouse.y/(target.height+(target.padding/2)+(target.strokeWidth/2)); + newScaleY = localMouse.y/(target.height + target.strokeWidth); lockScalingY || target.set('scaleY', newScaleY); } diff --git a/dist/all.min.js b/dist/all.min.js index 3bf4a25b..0bad8d2f 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.21"};typeof exports!="undefined"&&(exports.fabric=fabric),typeof document!="undefined"&&typeof window!="undefined"?(fabric.document=document,fabric.window=window):(fabric.document=require("jsdom").jsdom(""),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined";var Cufon=function(){function r(e){var t=this.face=e.face;this.glyphs=e.glyphs,this.w=e.w,this.baseSize=parseInt(t["units-per-em"],10),this.family=t["font-family"].toLowerCase(),this.weight=t["font-weight"],this.style=t["font-style"]||"normal",this.viewBox=function(){var e=t.bbox.split(/\s+/),n={minX:parseInt(e[0],10),minY:parseInt(e[1],10),maxX:parseInt(e[2],10),maxY:parseInt(e[3],10)};return n.width=n.maxX-n.minX,n.height=n.maxY-n.minY,n.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")},n}(),this.ascent=-parseInt(t.ascent,10),this.descent=-parseInt(t.descent,10),this.height=-this.ascent+this.descent}function i(){var e={},t={oblique:"italic",italic:"oblique"};this.add=function(t){(e[t.style]||(e[t.style]={}))[t.weight]=t},this.get=function(n,r){var i=e[n]||e[t[n]]||e.normal||e.italic||e.oblique;if(!i)return null;r={normal:400,bold:700}[r]||parseInt(r,10);if(i[r])return i[r];var s={1:1,99:0}[r%100],o=[],u,a;s===undefined&&(s=r>400),r==500&&(r=400);for(var f in i){f=parseInt(f,10);if(!u||fa)a=f;o.push(f)}return ra&&(r=a),o.sort(function(e,t){return(s?e>r&&t>r?et:et:e=i.length+e?r():setTimeout(arguments.callee,10)}),function(t){e?t():n.push(t)}}(),supports:function(e,t){var n=fabric.document.createElement("span").style;return n[e]===undefined?!1:(n[e]=t,n[e]===t)},textAlign:function(e,t,n,r){return t.get("textAlign")=="right"?n>0&&(e=" "+e):nk&&(k=N),A.push(N),N=0;continue}var O=t.glyphs[T[b]]||t.missingGlyph;if(!O)continue;N+=C=Number(O.w||t.w)+h}A.push(N),N=Math.max(k,N);var M=[];for(var b=A.length;b--;)M[b]=N-A[b];if(C===null)return null;d+=l.width-C,m+=l.minX;var _,D;if(f)_=u,D=u.firstChild;else{_=fabric.document.createElement("span"),_.className="cufon cufon-canvas",_.alt=n,D=fabric.document.createElement("canvas"),_.appendChild(D);if(i.printable){var P=fabric.document.createElement("span");P.className="cufon-alt",P.appendChild(fabric.document.createTextNode(n)),_.appendChild(P)}}var H=_.style,B=D.style||{},j=c.convert(l.height-p+v),F=Math.ceil(j),I=F/j;D.width=Math.ceil(c.convert(N+d-m)*I),D.height=F,p+=l.minY,B.top=Math.round(c.convert(p-t.ascent))+"px",B.left=Math.round(c.convert(m))+"px";var q=Math.ceil(c.convert(N*I)),R=q+"px",U=c.convert(t.height),z=(i.lineHeight-1)*c.convert(-t.ascent/5)*(L-1);Cufon.textOptions.width=q,Cufon.textOptions.height=U*L+z,Cufon.textOptions.lines=L,Cufon.textOptions.totalLineHeight=z,e?(H.width=R,H.height=U+"px"):(H.paddingLeft=R,H.paddingBottom=U-1+"px");var W=Cufon.textOptions.context||D.getContext("2d"),X=F/l.height;Cufon.textOptions.fontAscent=t.ascent*X,Cufon.textOptions.boundaries=null;for(var V=Cufon.textOptions.shadowOffsets,b=y.length;b--;)V[b]=[y[b][0]*X,y[b][1]*X];W.save(),W.scale(X,X),W.translate(-m-1/X*D.width/2+(Cufon.fonts[t.family].offsetLeft||0),-p-Cufon.textOptions.height/X/2+(Cufon.fonts[t.family].offsetTop||0)),W.lineWidth=t.face["underline-thickness"],W.save();var J=Cufon.getTextDecoration(i),K=i.fontStyle==="italic";W.save(),Q();if(g)for(var b=0,w=g.length;b.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}'),function(e,t,i,s,o,u,a){var f=t===null;f&&(t=o.alt);var l=e.viewBox,c=i.computedFontSize||(i.computedFontSize=new Cufon.CSS.Size(n(u,i.get("fontSize"))+"px",e.baseSize)),h=i.computedLSpacing;h==undefined&&(h=i.get("letterSpacing"),i.computedLSpacing=h=h=="normal"?0:~~c.convertFrom(r(u,h)));var p,d;if(f)p=o,d=o.firstChild;else{p=fabric.document.createElement("span"),p.className="cufon cufon-vml",p.alt=t,d=fabric.document.createElement("span"),d.className="cufon-vml-canvas",p.appendChild(d);if(s.printable){var v=fabric.document.createElement("span");v.className="cufon-alt",v.appendChild(fabric.document.createTextNode(t)),p.appendChild(v)}a||p.appendChild(fabric.document.createElement("cvml:shape"))}var m=p.style,g=d.style,y=c.convert(l.height),b=Math.ceil(y),w=b/y,E=l.minX,S=l.minY;g.height=b,g.top=Math.round(c.convert(S-e.ascent)),g.left=Math.round(c.convert(E)),m.height=c.convert(e.height)+"px";var x=Cufon.getTextDecoration(s),T=i.get("color"),N=Cufon.CSS.textTransform(t,i).split(""),C=0,k=0,L=null,A,O,M=s.textShadow;for(var _=0,D=0,P=N.length;_-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)},toGrayscale:function(){return this.forEachObject(function(e){e.toGrayscale()})}},function(){function n(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e}function r(e,t){return Math.floor(Math.random()*(t-e+1))+e}function s(e){return e*i}function o(e){return e/i}function u(e,t,n){var r=Math.sin(n),i=Math.cos(n);e.subtractEquals(t);var s=e.x*i-e.y*r,o=e.x*r+e.y*i;return(new fabric.Point(s,o)).addEquals(t)}function a(e,t){return parseFloat(Number(e).toFixed(t))}function f(){return!1}function l(e){e||(e={});var t=+(new Date),n=e.duration||500,r=t+n,i,s=e.onChange||function(){},o=e.abort||function(){return!1},u=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},a="startValue"in e?e.startValue:0,f="endValue"in e?e.endValue:100,l=e.byValue||f-a;e.onStart&&e.onStart(),function c(){i=+(new Date);var f=i>r?n:i-t;s(u(f,a,l,n));if(i>r||o()){e.onComplete&&e.onComplete();return}h(c)}()}function p(e){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(e))]}function d(e,t,n){if(e){var r=fabric.util.createImage();r.onload=function(){t&&t.call(n,r),r=r.onload=null},r.src=e}else t&&t.call(n,e)}function v(e,t){function n(){++i===s&&t&&t(r)}var r=[],i=0,s=e.length;e.forEach(function(e,t){if(!e.type)return;var i=fabric.util.getKlass(e.type);i.async?i.fromObject(e,function(e,i){i||(r[t]=e),n()}):(r[t]=i.fromObject(e),n())})}function m(e,t,n){var r;return e.length>1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r}function g(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),n[d?"lineTo":"moveTo"](r,0),d=!d;n.restore()}function b(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function w(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function E(e){var t=e.prototype;for(var n=t.stateProperties.length;n--;){var r=t.stateProperties[n],i=r.charAt(0).toUpperCase()+r.slice(1),s="set"+i,o="get"+i;t[o]||(t[o]=function(e){return new Function('return this.get("'+e+'")')}(r)),t[s]||(t[s]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(r))}}function S(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function x(e,t){var n=[[e[0],e[2],e[4]],[e[1],e[3],e[5]],[0,0,1]],r=[[t[0],t[2],t[4]],[t[1],t[3],t[5]],[0,0,1]],i=[];for(var s=0;s<3;s++){i[s]=[];for(var o=0;o<3;o++){var u=0;for(var a=0;a<3;a++)u+=n[s][a]*r[a][o];i[s][o]=u}}return[i[0][0],i[1][0],i[0][1],i[1][1],i[0][2],i[1][2]]}function T(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]}function N(e,t,n,r){var i=r[0],s=r[1],o=r[2],u=r[3],a=r[4],f=r[5],l=r[6],c=O(f,l,i,s,u,a,o,t,n);for(var h=0;h1&&(d=Math.sqrt(d),n*=d,r*=d);var v=c/n,m=l/n,g=-l/r,y=c/r,b=v*u+m*a,w=g*u+y*a,E=v*e+m*t,S=g*e+y*t,x=(E-b)*(E-b)+(S-w)*(S-w),T=1/x-.25;T<0&&(T=0);var N=Math.sqrt(T);s===i&&(N=-N);var k=.5*(b+E)-N*(S-w),O=.5*(w+S)+N*(E-b),M=Math.atan2(w-O,b-k),_=Math.atan2(S-O,E-k),D=_-M;D<0&&s===1?D+=2*Math.PI:D>0&&s===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B=r&&(r=e[n][t]);else while(n--)e[n]>=r&&(r=e[n]);return r}function r(e,t){if(!e||e.length===0)return undefined;var n=e.length-1,r=t?e[n][t]:e[n];if(t)while(n--)e[n][t]>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(t){var n=this.constructor.superclass.prototype[t];return arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this)}function o(){function u(){this.initialize.apply(this,arguments)}var n=null,o=e.call(arguments,0);typeof o[0]=="function"&&(n=o.shift()),u.superclass=n,u.subclasses=[],n&&(i.prototype=n.prototype,u.prototype=new i,n.subclasses.push(u));for(var a=0,f=o.length;a-1?e.prototype[i]=function(e){return function(){var n=this.constructor.superclass;this.constructor.superclass=r;var i=t[e].apply(this,arguments);this.constructor.superclass=n;if(e!=="initialize")return i}}(i):e.prototype[i]=t[i],n&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};fabric.util.createClass=o}(),function(){function e(e){var t=Array.prototype.slice.call(arguments,1),n,r,i=t.length;for(r=0;r-1?s(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if(r==="opacity")s(e,t[r]);else{var i=r==="float"||r==="cssFloat"?typeof n.styleFloat=="undefined"?"cssFloat":"styleFloat":r;n[i]=t[r]}return e}var t=fabric.document.createElement("div"),n=typeof t.style.opacity=="string",r=typeof t.style.filter=="string",i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(e){return e};n?s=function(e,t){return e.style.opacity=t,e}:r&&(s=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+t*100+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+t*100+")",e}),fabric.util.setStyle=e}(),function(){function t(e){return typeof e=="string"?fabric.document.getElementById(e):e}function s(e,t){var n=fabric.document.createElement(e);for(var r in t)r==="class"?n.className=t[r]:r==="for"?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function o(e,t){(" "+e.className+" ").indexOf(" "+t+" ")===-1&&(e.className+=(e.className?" ":"")+t)}function u(e,t,n){return typeof t=="string"&&(t=s(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t}function a(e){var t,n,r={left:0,top:0},i=e&&e.ownerDocument,s={left:0,top:0},o={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!i)return{left:0,top:0};for(var u in o)s[o[u]]+=parseInt(f(e,u),10)||0;return t=i.documentElement,typeof e.getBoundingClientRect!="undefined"&&(r=e.getBoundingClientRect()),i!=null&&i===i.window?n=i:n=i.nodeType===9&&(i.defaultView||i.parentWindow),{left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)+s.left,top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0)+s.top}}function f(e,t){e.style||(e.style={});if(fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle)return fabric.document.defaultView.getComputedStyle(e,null)[t];var n=e.style[t];return!n&&e.currentStyle&&(n=e.currentStyle[t]),n}var e=Array.prototype.slice,n=function(t){return e.call(t,0)},r;try{r=n(fabric.document.childNodes)instanceof Array}catch(i){}r||(n=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t}),function(){function n(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=fabric.util.falseFunction),t?e.style[t]="none":typeof e.unselectable=="string"&&(e.unselectable="on"),e}function r(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=null),t?e.style[t]="":typeof e.unselectable=="string"&&(e.unselectable=""),e}var e=fabric.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=n,fabric.util.makeElementSelectable=r}(),function(){function e(e,t){var n=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),i=!0;r.onload=r.onreadystatechange=function(e){if(i){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;i=!1,t(e||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=e,n.appendChild(r)}fabric.util.getScript=e}(),fabric.util.getById=t,fabric.util.toArray=n,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getElementOffset=a,fabric.util.getElementStyle=f}(),function(){function e(e,t){return e+(/\?/.test(e)?"&":"?")+t}function n(){}function r(r,i){i||(i={});var s=i.method?i.method.toUpperCase():"GET",o=i.onComplete||function(){},u=t(),a;return u.onreadystatechange=function(){u.readyState===4&&(o(u),u.onreadystatechange=n)},s==="GET"&&(a=null,typeof i.parameters=="string"&&(r=e(r,i.parameters))),u.open(s,r,!0),(s==="POST"||s==="PUT")&&u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),u.send(a),u}var t=function(){var e=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}];for(var t=e.length;t--;)try{var n=e[t]();if(n)return e[t]}catch(r){}}();fabric.util.request=r}(),function(){function e(e,t,n,r){return n*(e/=r)*e+t}function t(e,t,n,r){return-n*(e/=r)*(e-2)+t}function n(e,t,n,r){return e/=r/2,e<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e,t,n,r){return n*(e/=r)*e*e+t}function i(e,t,n,r){return n*((e=e/r-1)*e*e+1)+t}function s(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e+t:n/2*((e-=2)*e*e+2)+t}function o(e,t,n,r){return n*(e/=r)*e*e*e+t}function u(e,t,n,r){return-n*((e=e/r-1)*e*e*e-1)+t}function a(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e+t:-n/2*((e-=2)*e*e*e-2)+t}function f(e,t,n,r){return n*(e/=r)*e*e*e*e+t}function l(e,t,n,r){return n*((e=e/r-1)*e*e*e*e+1)+t}function c(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e*e+t:n/2*((e-=2)*e*e*e*e+2)+t}function h(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t}function p(e,t,n,r){return n*Math.sin(e/r*(Math.PI/2))+t}function d(e,t,n,r){return-n/2*(Math.cos(Math.PI*e/r)-1)+t}function v(e,t,n,r){return e===0?t:n*Math.pow(2,10*(e/r-1))+t}function m(e,t,n,r){return e===r?t+n:n*(-Math.pow(2,-10*e/r)+1)+t}function g(e,t,n,r){return e===0?t:e===r?t+n:(e/=r/2,e<1?n/2*Math.pow(2,10*(e-1))+t:n/2*(-Math.pow(2,-10*--e)+2)+t)}function y(e,t,n,r){return-n*(Math.sqrt(1-(e/=r)*e)-1)+t}function b(e,t,n,r){return n*Math.sqrt(1-(e=e/r-1)*e)+t}function w(e,t,n,r){return e/=r/2,e<1?-n/2*(Math.sqrt(1-e*e)-1)+t:n/2*(Math.sqrt(1-(e-=2)*e)+1)+t}function E(e,t,n,r){var i=1.70158,s=0,o=n;return e===0?t:(e/=r,e===1?t+n:(s||(s=r*.3),o-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){w.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),w.has(e,function(r){r?w.get(e,function(e){var t=S(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function S(e){var n=e.objects,i=e.options;return n=n.map(function(e){return t[r(e.type)].fromObject(e)}),{objects:n,options:i}}function x(e,n,r){e=e.trim();var i;if(typeof DOMParser!="undefined"){var s=new DOMParser;s&&s.parseFromString&&(i=s.parseFromString(e,"text/xml"))}else t.window.ActiveXObject&&(i=new ActiveXObject("Microsoft.XMLDOM"),i.async="false",i.loadXML(e.replace(//i,"")));t.parseSVGDocument(i.documentElement,function(e,t){n(e,t)},r)}function T(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t}function N(e){var t="";return e.backgroundColor&&e.backgroundColor.source&&(t=['',''].join("")),t}function C(e){var t=e.getElementsByTagName("linearGradient"),n=e.getElementsByTagName("radialGradient"),r,i,s={};i=t.length;for(;i--;)r=t[i],s[r.getAttribute("id")]=r;i=n.length;for(;i--;)r=n[i],s[r.getAttribute("id")]=r;return s}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s=t.util.toFixed,o=t.util.multiplyTransformMatrices;t.SHARED_ATTRIBUTES=["transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width"];var u={"fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight",cx:"left",x:"left",r:"radius","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration",cy:"top",y:"top",transform:"transformMatrix"},a={stroke:"strokeOpacity",fill:"fillOpacity"};t.parseTransformAttribute=function(){function e(e,t){var n=t[0];e[0]=Math.cos(n),e[1]=Math.sin(n),e[2]=-Math.sin(n),e[3]=Math.cos(n)}function n(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function r(e,t){e[2]=t[0]}function i(e,t){e[1]=t[0]}function s(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var o=[1,0,0,1,0,0],u="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",a="(?:\\s+,?\\s*|,\\s*)",f="(?:(skewX)\\s*\\(\\s*("+u+")\\s*\\))",l="(?:(skewY)\\s*\\(\\s*("+u+")\\s*\\))",c="(?:(rotate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+")"+a+"("+u+"))?\\s*\\))",h="(?:(scale)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",p="(?:(translate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",d="(?:(matrix)\\s*\\(\\s*("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+"\\s*\\))",v="(?:"+d+"|"+p+"|"+h+"|"+c+"|"+f+"|"+l+")",m="(?:"+v+"(?:"+a+v+")*"+")",g="^\\s*(?:"+m+"?)\\s*$",y=new RegExp(g),b=new RegExp(v,"g");return function(u){var a=o.concat(),f=[];if(!u||u&&!y.test(u))return a;u.replace(b,function(t){var u=(new RegExp(v)).exec(t).filter(function(e){return e!==""&&e!=null}),l=u[1],c=u.slice(2).map(parseFloat);switch(l){case"translate":s(a,c);break;case"rotate":e(a,c);break;case"scale":n(a,c);break;case"skewX":r(a,c);break;case"skewY":i(a,c);break;case"matrix":a=c}f.push(a.concat()),a=o.concat()});var l=f[0];while(f.length>1)f.shift(),l=t.util.multiplyTransformMatrices(l,f[0]);return l}}(),t.parseSVGDocument=function(){function s(e,t){while(e&&(e=e.parentNode))if(t.test(e.nodeName))return!0;return!1}var e=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/,n="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",r=new RegExp("^\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*"+"$");return function(n,o,u){if(!n)return;var a=new Date,f=t.util.toArray(n.getElementsByTagName("*"));if(f.length===0){f=n.selectNodes("//*[name(.)!='svg']");var l=[];for(var c=0,h=f.length;ce.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,t){return new n(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},distanceFrom:function(e){var t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)},midPointFrom:function(e){return new n(this.x+(e.x-this.x)/2,this.y+(e.y-this.y)/2)},min:function(e){return new n(Math.min(this.x,e.x),Math.min(this.y,e.y))},max:function(e){return new n(Math.max(this.x,e.x),Math.max(this.y,e.y))},toString:function(){return this.x+","+this.y},setXY:function(e,t){this.x=e,this.y=t},setFromPoint:function(e){this.x=e.x,this.y=e.y},swap:function(e){var t=this.x,n=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=n}}}(typeof exports!="undefined"?exports:this),function(){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,r=this.colorStops.length;n0&&(i.status="Intersection"),i},t.Intersection.intersectPolygonPolygon=function(e,t){var r=new n,i=e.length;for(var s=0;s0&&(r.status="Intersection"),r},t.Intersection.intersectPolygonRectangle=function(e,r,i){var s=r.min(i),o=r.max(i),u=new t.Point(o.x,s.y),a=new t.Point(s.x,o.y),f=n.intersectLinePolygon(s,u,e),l=n.intersectLinePolygon(u,o,e),c=n.intersectLinePolygon(o,a,e),h=n.intersectLinePolygon(a,s,e),p=new n;return p.appendPoints(f.points),p.appendPoints(l.points),p.appendPoints(c.points),p.appendPoints(h.points),p.points.length>0&&(p.status="Intersection"),p}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){e?this._tryParsingColor(e):this.setSource([0,0,0,1])}function r(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var t=e.fabric||(e.fabric={});if(t.Color){t.warn("fabric.Color is already defined.");return}t.Color=n,t.Color.prototype={_tryParsingColor:function(e){var t;e in n.colorNameMap&&(e=n.colorNameMap[e]),t=n.sourceFromHex(e),t||(t=n.sourceFromRgb(e)),t||(t=n.sourceFromHsl(e)),t&&this.setSource(t)},_rgbToHsl:function(e,n,r){e/=255,n/=255,r/=255;var i,s,o,u=t.util.array.max([e,n,r]),a=t.util.array.min([e,n,r]);o=(u+a)/2;if(u===a)i=s=0;else{var f=u-a;s=o>.5?f/(2-u-a):f/(u+a);switch(u){case e:i=(n-r)/f+(n',''),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);var a=t!==0||n!==0;e.moveTo(r+t,i),e.lineTo(r+s-t,i),a&&e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),a&&e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),a&&e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),a&&e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,i){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=r(s);var o=new t.Rect(n(i?t.util.object.clone(i):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed,r=t.util.array.min;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(){var e=[],t=[];for(var r=0,i=this.points.length;r'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n"},toObject:function(e){var t=s(this.callSuper("toObject",e),{path:this.path});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(){var e=[],t=[];for(var n=0,r=this.path.length;n',"",""),t.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n=[],r,i,s=/(-?\.\d+)|(-?\d+(\.\d+)?)/g,o,u;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var n=0,r=e.length;n"),t.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},toGrayscale:function(){var e=this.paths.length;while(e--)this.paths[e].toGrayscale();return this},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e){var n=u(e.paths);return new t.PathGroup(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){var e=this.left,t=this.top;this.forEachObject(function(n){var r=n.get("left"),i=n.get("top");n.set("originalLeft",r),n.set("originalTop",i),n.set("left",r-e),n.set("top",i-t),n.setCoords(),n.__origHasControls=n.hasControls,n.hasControls=!1},this)},toString:function(){return"#"},getObjects:function(){return this._objects},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textShadow:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e);var r=Math.max(this.scaleX,this.scaleY);this.clipTo&&t.util.clipContext(this,e);for(var i=0,s=this._objects.length;i'+e.join("")+""},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','');if(this.stroke||this.strokeDashArray){var t=this.fill;this.fill=null,e.push("'),this.fill=t}return e.push(""),e.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this.setElement(this._originalImage),e&&e();return}var t=this._originalImage,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height;if(fabric.isLikelyNode){var s=n.toDataURL("image/png").substring(22);r.src=new Buffer(s,"base64"),i._element=r,e&&e()}else r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png");return this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e){e.filters&&e.filters.length&&(this.filters=e.filters.map(function(e){return e&&fabric.Image.filters[e.type].fromObject(e)}))},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){var n=fabric.document.createElement("img"),r=e.src;e.width&&(n.width=e.width),e.height&&(n.height=e.height),n.onload=function(){fabric.Image.prototype._initFilters.call(e,e);var r=new fabric.Image(n,e);t&&t(r),n=n.onload=n.onerror=null},n.onerror=function(){fabric.log("Error loading "+n.src),t&&t(null,!0),n=n.onload=n.onerror=null},n.src=r},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))})},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.Brightness=fabric.util.createClass({type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;s=0&&N=0&&Co&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.object.clone,i=t.util.toFixed,s=t.StaticCanvas.supports("setLineDash");if(t.Text){t.warn("fabric.Text is already defined");return}var o=t.Object.prototype.stateProperties.concat();o.push("fontFamily","fontWeight","fontSize","path","text","textDecoration","textShadow","textAlign","fontStyle","lineHeight","backgroundColor","textBackgroundColor","useNative"),t.Text=t.util.createClass(t.Object,{_dimensionAffectingProps:{fontSize:!0,fontWeight:!0,fontFamily:!0,textDecoration:!0,fontStyle:!0,lineHeight:!0,stroke:!0,strokeWidth:!0,text:!0},type:"text",fontSize:40,fontWeight:"normal",fontFamily:"Times New Roman",textDecoration:"",textShadow:"",textAlign:"left",fontStyle:"",lineHeight:1.3,backgroundColor:"",textBackgroundColor:"",path:null,useNative:!0,stateProperties:o,initialize:function(e,t){t=t||{},this.text=e,this.__skipDimension=!0,this.setOptions(t),this.__skipDimension=!1,this._initDimensions(),this.setCoords()},_initDimensions:function(){if(this.__skipDimension)return;var e=t.util.createCanvasElement();this._render(e.getContext("2d"))},toString:function(){return"#'},_render:function(e){var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaNative:function(e){this.transform(e,t.isLikelyNode),this._setTextStyles(e);var n=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this._renderTextBackground(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),e.save(),this._setTextShadow(e),this.clipTo&&t.util.clipContext(this,e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this.clipTo&&e.restore(),this.textShadow&&e.restore(),e.restore(),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this._setBoundaries(e,n),this._totalLineHeight=0,this.setCoords()},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_setTextShadow:function(e){if(!this.textShadow)return;var t=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/,n=this.textShadow,r=t.exec(this.textShadow),i=n.replace(t,"");e.save(),e.shadowColor=i,e.shadowOffsetX=parseInt(r[1],10),e.shadowOffsetY=parseInt(r[2],10),e.shadowBlur=parseInt(r[3],10),this._shadows=[{blur:e.shadowBlur,color:e.shadowColor,offX:e.shadowOffsetX,offY:e.shadowOffsetY}],this._shadowOffsets=[[parseInt(e.shadowOffsetX,10),parseInt(e.shadowOffsetY,10)]]},_drawTextLine:function(e,t,n,r,i){if(this.textAlign!=="justify"){t[e](n,r,i);return}var s=t.measureText(n).width,o=this.width;if(o>s){var u=n.split(/\s+/),a=t.measureText(n.replace(/\s+/g,"")).width,f=o-a,l=u.length-1,c=f/l,h=0;for(var p=0,d=u.length;p-1&&i(this.fontSize),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(0)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(e,t){if(!this.visible)return;e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){return n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;this.backgroundColor&&this._boundaries&&o.push("');for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.textBackgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},setColor:function(e){return this.set("fill",e),this},getText:function(){return this.text},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Text.prototype,{_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_initDummyElementForCufon:function(){var e=fabric.document.createElement("pre"),t=fabric.document.createElement("div");return t.appendChild(e),typeof G_vmlCanvasManager=="undefined"?e.innerHTML=this.text:e.innerText=this.text.replace(/\r?\n/gi,"\r"),e.style.fontSize=this.fontSize+"px",e.style.letterSpacing="normal",e}}),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs"),r=n.createReadStream(e),i="";r.on("data",function(e){i+=e}),r.on("end",function(){t(i)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&e.indexOf("data")===0?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e&&request(e,"binary",r)},fabric.loadSVGFromURL=function(e,t){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t)}):request(e,"",function(e){fabric.loadSVGFromString(e,t)})},fabric.loadSVGFromString=function(e,t){var n=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(n.documentElement,function(e,n){t(e,n)})},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e),t(r)})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file +/* build: `node build.js modules=ALL exclude=gestures` *//*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"1.2.0"};typeof exports!="undefined"&&(exports.fabric=fabric),typeof document!="undefined"&&typeof window!="undefined"?(fabric.document=document,fabric.window=window):(fabric.document=require("jsdom").jsdom(""),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined";var Cufon=function(){function r(e){var t=this.face=e.face;this.glyphs=e.glyphs,this.w=e.w,this.baseSize=parseInt(t["units-per-em"],10),this.family=t["font-family"].toLowerCase(),this.weight=t["font-weight"],this.style=t["font-style"]||"normal",this.viewBox=function(){var e=t.bbox.split(/\s+/),n={minX:parseInt(e[0],10),minY:parseInt(e[1],10),maxX:parseInt(e[2],10),maxY:parseInt(e[3],10)};return n.width=n.maxX-n.minX,n.height=n.maxY-n.minY,n.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")},n}(),this.ascent=-parseInt(t.ascent,10),this.descent=-parseInt(t.descent,10),this.height=-this.ascent+this.descent}function i(){var e={},t={oblique:"italic",italic:"oblique"};this.add=function(t){(e[t.style]||(e[t.style]={}))[t.weight]=t},this.get=function(n,r){var i=e[n]||e[t[n]]||e.normal||e.italic||e.oblique;if(!i)return null;r={normal:400,bold:700}[r]||parseInt(r,10);if(i[r])return i[r];var s={1:1,99:0}[r%100],o=[],u,a;s===undefined&&(s=r>400),r==500&&(r=400);for(var f in i){f=parseInt(f,10);if(!u||fa)a=f;o.push(f)}return ra&&(r=a),o.sort(function(e,t){return(s?e>r&&t>r?et:et:e=i.length+e?r():setTimeout(arguments.callee,10)}),function(t){e?t():n.push(t)}}(),supports:function(e,t){var n=fabric.document.createElement("span").style;return n[e]===undefined?!1:(n[e]=t,n[e]===t)},textAlign:function(e,t,n,r){return t.get("textAlign")=="right"?n>0&&(e=" "+e):nk&&(k=N),A.push(N),N=0;continue}var O=t.glyphs[T[b]]||t.missingGlyph;if(!O)continue;N+=C=Number(O.w||t.w)+h}A.push(N),N=Math.max(k,N);var M=[];for(var b=A.length;b--;)M[b]=N-A[b];if(C===null)return null;d+=l.width-C,m+=l.minX;var _,D;if(f)_=u,D=u.firstChild;else{_=fabric.document.createElement("span"),_.className="cufon cufon-canvas",_.alt=n,D=fabric.document.createElement("canvas"),_.appendChild(D);if(i.printable){var P=fabric.document.createElement("span");P.className="cufon-alt",P.appendChild(fabric.document.createTextNode(n)),_.appendChild(P)}}var H=_.style,B=D.style||{},j=c.convert(l.height-p+v),F=Math.ceil(j),I=F/j;D.width=Math.ceil(c.convert(N+d-m)*I),D.height=F,p+=l.minY,B.top=Math.round(c.convert(p-t.ascent))+"px",B.left=Math.round(c.convert(m))+"px";var q=Math.ceil(c.convert(N*I)),R=q+"px",U=c.convert(t.height),z=(i.lineHeight-1)*c.convert(-t.ascent/5)*(L-1);Cufon.textOptions.width=q,Cufon.textOptions.height=U*L+z,Cufon.textOptions.lines=L,Cufon.textOptions.totalLineHeight=z,e?(H.width=R,H.height=U+"px"):(H.paddingLeft=R,H.paddingBottom=U-1+"px");var W=Cufon.textOptions.context||D.getContext("2d"),X=F/l.height;Cufon.textOptions.fontAscent=t.ascent*X,Cufon.textOptions.boundaries=null;for(var V=Cufon.textOptions.shadowOffsets,b=y.length;b--;)V[b]=[y[b][0]*X,y[b][1]*X];W.save(),W.scale(X,X),W.translate(-m-1/X*D.width/2+(Cufon.fonts[t.family].offsetLeft||0),-p-Cufon.textOptions.height/X/2+(Cufon.fonts[t.family].offsetTop||0)),W.lineWidth=t.face["underline-thickness"],W.save();var J=Cufon.getTextDecoration(i),K=i.fontStyle==="italic";W.save(),Q();if(g)for(var b=0,w=g.length;b.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}'),function(e,t,i,s,o,u,a){var f=t===null;f&&(t=o.alt);var l=e.viewBox,c=i.computedFontSize||(i.computedFontSize=new Cufon.CSS.Size(n(u,i.get("fontSize"))+"px",e.baseSize)),h=i.computedLSpacing;h==undefined&&(h=i.get("letterSpacing"),i.computedLSpacing=h=h=="normal"?0:~~c.convertFrom(r(u,h)));var p,d;if(f)p=o,d=o.firstChild;else{p=fabric.document.createElement("span"),p.className="cufon cufon-vml",p.alt=t,d=fabric.document.createElement("span"),d.className="cufon-vml-canvas",p.appendChild(d);if(s.printable){var v=fabric.document.createElement("span");v.className="cufon-alt",v.appendChild(fabric.document.createTextNode(t)),p.appendChild(v)}a||p.appendChild(fabric.document.createElement("cvml:shape"))}var m=p.style,g=d.style,y=c.convert(l.height),b=Math.ceil(y),w=b/y,E=l.minX,S=l.minY;g.height=b,g.top=Math.round(c.convert(S-e.ascent)),g.left=Math.round(c.convert(E)),m.height=c.convert(e.height)+"px";var x=Cufon.getTextDecoration(s),T=i.get("color"),N=Cufon.CSS.textTransform(t,i).split(""),C=0,k=0,L=null,A,O,M=s.textShadow;for(var _=0,D=0,P=N.length;_-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)},toGrayscale:function(){return this.forEachObject(function(e){e.toGrayscale()})}},function(){function n(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e}function r(e,t){return Math.floor(Math.random()*(t-e+1))+e}function s(e){return e*i}function o(e){return e/i}function u(e,t,n){var r=Math.sin(n),i=Math.cos(n);e.subtractEquals(t);var s=e.x*i-e.y*r,o=e.x*r+e.y*i;return(new fabric.Point(s,o)).addEquals(t)}function a(e,t){return parseFloat(Number(e).toFixed(t))}function f(){return!1}function l(e){e||(e={});var t=+(new Date),n=e.duration||500,r=t+n,i,s=e.onChange||function(){},o=e.abort||function(){return!1},u=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},a="startValue"in e?e.startValue:0,f="endValue"in e?e.endValue:100,l=e.byValue||f-a;e.onStart&&e.onStart(),function c(){i=+(new Date);var f=i>r?n:i-t;s(u(f,a,l,n));if(i>r||o()){e.onComplete&&e.onComplete();return}h(c)}()}function p(e){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(e))]}function d(e,t,n){if(e){var r=fabric.util.createImage();r.onload=function(){t&&t.call(n,r),r=r.onload=null},r.src=e}else t&&t.call(n,e)}function v(e,t){function n(){++i===s&&t&&t(r)}var r=[],i=0,s=e.length;e.forEach(function(e,t){if(!e.type)return;var i=fabric.util.getKlass(e.type);i.async?i.fromObject(e,function(e,i){i||(r[t]=e),n()}):(r[t]=i.fromObject(e),n())})}function m(e,t,n){var r;return e.length>1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r}function g(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),n[d?"lineTo":"moveTo"](r,0),d=!d;n.restore()}function b(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function w(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function E(e){var t=e.prototype;for(var n=t.stateProperties.length;n--;){var r=t.stateProperties[n],i=r.charAt(0).toUpperCase()+r.slice(1),s="set"+i,o="get"+i;t[o]||(t[o]=function(e){return new Function('return this.get("'+e+'")')}(r)),t[s]||(t[s]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(r))}}function S(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function x(e,t){var n=[[e[0],e[2],e[4]],[e[1],e[3],e[5]],[0,0,1]],r=[[t[0],t[2],t[4]],[t[1],t[3],t[5]],[0,0,1]],i=[];for(var s=0;s<3;s++){i[s]=[];for(var o=0;o<3;o++){var u=0;for(var a=0;a<3;a++)u+=n[s][a]*r[a][o];i[s][o]=u}}return[i[0][0],i[1][0],i[0][1],i[1][1],i[0][2],i[1][2]]}function T(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]}function N(e,t,n,r){var i=r[0],s=r[1],o=r[2],u=r[3],a=r[4],f=r[5],l=r[6],c=O(f,l,i,s,u,a,o,t,n);for(var h=0;h1&&(d=Math.sqrt(d),n*=d,r*=d);var v=c/n,m=l/n,g=-l/r,y=c/r,b=v*u+m*a,w=g*u+y*a,E=v*e+m*t,S=g*e+y*t,x=(E-b)*(E-b)+(S-w)*(S-w),T=1/x-.25;T<0&&(T=0);var N=Math.sqrt(T);s===i&&(N=-N);var k=.5*(b+E)-N*(S-w),O=.5*(w+S)+N*(E-b),M=Math.atan2(w-O,b-k),_=Math.atan2(S-O,E-k),D=_-M;D<0&&s===1?D+=2*Math.PI:D>0&&s===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B=r&&(r=e[n][t]);else while(n--)e[n]>=r&&(r=e[n]);return r}function r(e,t){if(!e||e.length===0)return undefined;var n=e.length-1,r=t?e[n][t]:e[n];if(t)while(n--)e[n][t]>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(t){var n=this.constructor.superclass.prototype[t];return arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this)}function o(){function u(){this.initialize.apply(this,arguments)}var n=null,o=e.call(arguments,0);typeof o[0]=="function"&&(n=o.shift()),u.superclass=n,u.subclasses=[],n&&(i.prototype=n.prototype,u.prototype=new i,n.subclasses.push(u));for(var a=0,f=o.length;a-1?e.prototype[i]=function(e){return function(){var n=this.constructor.superclass;this.constructor.superclass=r;var i=t[e].apply(this,arguments);this.constructor.superclass=n;if(e!=="initialize")return i}}(i):e.prototype[i]=t[i],n&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};fabric.util.createClass=o}(),function(){function e(e){var t=Array.prototype.slice.call(arguments,1),n,r,i=t.length;for(r=0;r-1?s(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if(r==="opacity")s(e,t[r]);else{var i=r==="float"||r==="cssFloat"?typeof n.styleFloat=="undefined"?"cssFloat":"styleFloat":r;n[i]=t[r]}return e}var t=fabric.document.createElement("div"),n=typeof t.style.opacity=="string",r=typeof t.style.filter=="string",i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(e){return e};n?s=function(e,t){return e.style.opacity=t,e}:r&&(s=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+t*100+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+t*100+")",e}),fabric.util.setStyle=e}(),function(){function t(e){return typeof e=="string"?fabric.document.getElementById(e):e}function s(e,t){var n=fabric.document.createElement(e);for(var r in t)r==="class"?n.className=t[r]:r==="for"?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function o(e,t){(" "+e.className+" ").indexOf(" "+t+" ")===-1&&(e.className+=(e.className?" ":"")+t)}function u(e,t,n){return typeof t=="string"&&(t=s(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t}function a(e){var t,n,r={left:0,top:0},i=e&&e.ownerDocument,s={left:0,top:0},o={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!i)return{left:0,top:0};for(var u in o)s[o[u]]+=parseInt(f(e,u),10)||0;return t=i.documentElement,typeof e.getBoundingClientRect!="undefined"&&(r=e.getBoundingClientRect()),i!=null&&i===i.window?n=i:n=i.nodeType===9&&(i.defaultView||i.parentWindow),{left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)+s.left,top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0)+s.top}}function f(e,t){e.style||(e.style={});if(fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle)return fabric.document.defaultView.getComputedStyle(e,null)[t];var n=e.style[t];return!n&&e.currentStyle&&(n=e.currentStyle[t]),n}var e=Array.prototype.slice,n=function(t){return e.call(t,0)},r;try{r=n(fabric.document.childNodes)instanceof Array}catch(i){}r||(n=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t}),function(){function n(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=fabric.util.falseFunction),t?e.style[t]="none":typeof e.unselectable=="string"&&(e.unselectable="on"),e}function r(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=null),t?e.style[t]="":typeof e.unselectable=="string"&&(e.unselectable=""),e}var e=fabric.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=n,fabric.util.makeElementSelectable=r}(),function(){function e(e,t){var n=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),i=!0;r.onload=r.onreadystatechange=function(e){if(i){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;i=!1,t(e||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=e,n.appendChild(r)}fabric.util.getScript=e}(),fabric.util.getById=t,fabric.util.toArray=n,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getElementOffset=a,fabric.util.getElementStyle=f}(),function(){function e(e,t){return e+(/\?/.test(e)?"&":"?")+t}function n(){}function r(r,i){i||(i={});var s=i.method?i.method.toUpperCase():"GET",o=i.onComplete||function(){},u=t(),a;return u.onreadystatechange=function(){u.readyState===4&&(o(u),u.onreadystatechange=n)},s==="GET"&&(a=null,typeof i.parameters=="string"&&(r=e(r,i.parameters))),u.open(s,r,!0),(s==="POST"||s==="PUT")&&u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),u.send(a),u}var t=function(){var e=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}];for(var t=e.length;t--;)try{var n=e[t]();if(n)return e[t]}catch(r){}}();fabric.util.request=r}(),function(){function e(e,t,n,r){return n*(e/=r)*e+t}function t(e,t,n,r){return-n*(e/=r)*(e-2)+t}function n(e,t,n,r){return e/=r/2,e<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e,t,n,r){return n*(e/=r)*e*e+t}function i(e,t,n,r){return n*((e=e/r-1)*e*e+1)+t}function s(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e+t:n/2*((e-=2)*e*e+2)+t}function o(e,t,n,r){return n*(e/=r)*e*e*e+t}function u(e,t,n,r){return-n*((e=e/r-1)*e*e*e-1)+t}function a(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e+t:-n/2*((e-=2)*e*e*e-2)+t}function f(e,t,n,r){return n*(e/=r)*e*e*e*e+t}function l(e,t,n,r){return n*((e=e/r-1)*e*e*e*e+1)+t}function c(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e*e+t:n/2*((e-=2)*e*e*e*e+2)+t}function h(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t}function p(e,t,n,r){return n*Math.sin(e/r*(Math.PI/2))+t}function d(e,t,n,r){return-n/2*(Math.cos(Math.PI*e/r)-1)+t}function v(e,t,n,r){return e===0?t:n*Math.pow(2,10*(e/r-1))+t}function m(e,t,n,r){return e===r?t+n:n*(-Math.pow(2,-10*e/r)+1)+t}function g(e,t,n,r){return e===0?t:e===r?t+n:(e/=r/2,e<1?n/2*Math.pow(2,10*(e-1))+t:n/2*(-Math.pow(2,-10*--e)+2)+t)}function y(e,t,n,r){return-n*(Math.sqrt(1-(e/=r)*e)-1)+t}function b(e,t,n,r){return n*Math.sqrt(1-(e=e/r-1)*e)+t}function w(e,t,n,r){return e/=r/2,e<1?-n/2*(Math.sqrt(1-e*e)-1)+t:n/2*(Math.sqrt(1-(e-=2)*e)+1)+t}function E(e,t,n,r){var i=1.70158,s=0,o=n;return e===0?t:(e/=r,e===1?t+n:(s||(s=r*.3),o-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){w.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),w.has(e,function(r){r?w.get(e,function(e){var t=S(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function S(e){var n=e.objects,i=e.options;return n=n.map(function(e){return t[r(e.type)].fromObject(e)}),{objects:n,options:i}}function x(e,n,r){e=e.trim();var i;if(typeof DOMParser!="undefined"){var s=new DOMParser;s&&s.parseFromString&&(i=s.parseFromString(e,"text/xml"))}else t.window.ActiveXObject&&(i=new ActiveXObject("Microsoft.XMLDOM"),i.async="false",i.loadXML(e.replace(//i,"")));t.parseSVGDocument(i.documentElement,function(e,t){n(e,t)},r)}function T(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t}function N(e){var t="";return e.backgroundColor&&e.backgroundColor.source&&(t=['',''].join("")),t}function C(e){var t=e.getElementsByTagName("linearGradient"),n=e.getElementsByTagName("radialGradient"),r,i,s={};i=t.length;for(;i--;)r=t[i],s[r.getAttribute("id")]=r;i=n.length;for(;i--;)r=n[i],s[r.getAttribute("id")]=r;return s}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s=t.util.toFixed,o=t.util.multiplyTransformMatrices;t.SHARED_ATTRIBUTES=["transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width"];var u={"fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight",cx:"left",x:"left",r:"radius","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration",cy:"top",y:"top",transform:"transformMatrix"},a={stroke:"strokeOpacity",fill:"fillOpacity"};t.parseTransformAttribute=function(){function e(e,t){var n=t[0];e[0]=Math.cos(n),e[1]=Math.sin(n),e[2]=-Math.sin(n),e[3]=Math.cos(n)}function n(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function r(e,t){e[2]=t[0]}function i(e,t){e[1]=t[0]}function s(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var o=[1,0,0,1,0,0],u="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",a="(?:\\s+,?\\s*|,\\s*)",f="(?:(skewX)\\s*\\(\\s*("+u+")\\s*\\))",l="(?:(skewY)\\s*\\(\\s*("+u+")\\s*\\))",c="(?:(rotate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+")"+a+"("+u+"))?\\s*\\))",h="(?:(scale)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",p="(?:(translate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",d="(?:(matrix)\\s*\\(\\s*("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+"\\s*\\))",v="(?:"+d+"|"+p+"|"+h+"|"+c+"|"+f+"|"+l+")",m="(?:"+v+"(?:"+a+v+")*"+")",g="^\\s*(?:"+m+"?)\\s*$",y=new RegExp(g),b=new RegExp(v,"g");return function(u){var a=o.concat(),f=[];if(!u||u&&!y.test(u))return a;u.replace(b,function(t){var u=(new RegExp(v)).exec(t).filter(function(e){return e!==""&&e!=null}),l=u[1],c=u.slice(2).map(parseFloat);switch(l){case"translate":s(a,c);break;case"rotate":e(a,c);break;case"scale":n(a,c);break;case"skewX":r(a,c);break;case"skewY":i(a,c);break;case"matrix":a=c}f.push(a.concat()),a=o.concat()});var l=f[0];while(f.length>1)f.shift(),l=t.util.multiplyTransformMatrices(l,f[0]);return l}}(),t.parseSVGDocument=function(){function s(e,t){while(e&&(e=e.parentNode))if(t.test(e.nodeName))return!0;return!1}var e=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/,n="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",r=new RegExp("^\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*"+"$");return function(n,o,u){if(!n)return;var a=new Date,f=t.util.toArray(n.getElementsByTagName("*"));if(f.length===0){f=n.selectNodes("//*[name(.)!='svg']");var l=[];for(var c=0,h=f.length;ce.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,t){return new n(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},distanceFrom:function(e){var t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)},midPointFrom:function(e){return new n(this.x+(e.x-this.x)/2,this.y+(e.y-this.y)/2)},min:function(e){return new n(Math.min(this.x,e.x),Math.min(this.y,e.y))},max:function(e){return new n(Math.max(this.x,e.x),Math.max(this.y,e.y))},toString:function(){return this.x+","+this.y},setXY:function(e,t){this.x=e,this.y=t},setFromPoint:function(e){this.x=e.x,this.y=e.y},swap:function(e){var t=this.x,n=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=n}}}(typeof exports!="undefined"?exports:this),function(){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,r=this.colorStops.length;n0&&(i.status="Intersection"),i},t.Intersection.intersectPolygonPolygon=function(e,t){var r=new n,i=e.length;for(var s=0;s0&&(r.status="Intersection"),r},t.Intersection.intersectPolygonRectangle=function(e,r,i){var s=r.min(i),o=r.max(i),u=new t.Point(o.x,s.y),a=new t.Point(s.x,o.y),f=n.intersectLinePolygon(s,u,e),l=n.intersectLinePolygon(u,o,e),c=n.intersectLinePolygon(o,a,e),h=n.intersectLinePolygon(a,s,e),p=new n;return p.appendPoints(f.points),p.appendPoints(l.points),p.appendPoints(c.points),p.appendPoints(h.points),p.points.length>0&&(p.status="Intersection"),p}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){e?this._tryParsingColor(e):this.setSource([0,0,0,1])}function r(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var t=e.fabric||(e.fabric={});if(t.Color){t.warn("fabric.Color is already defined.");return}t.Color=n,t.Color.prototype={_tryParsingColor:function(e){var t;e in n.colorNameMap&&(e=n.colorNameMap[e]),t=n.sourceFromHex(e),t||(t=n.sourceFromRgb(e)),t||(t=n.sourceFromHsl(e)),t&&this.setSource(t)},_rgbToHsl:function(e,n,r){e/=255,n/=255,r/=255;var i,s,o,u=t.util.array.max([e,n,r]),a=t.util.array.min([e,n,r]);o=(u+a)/2;if(u===a)i=s=0;else{var f=u-a;s=o>.5?f/(2-u-a):f/(u+a);switch(u){case e:i=(n-r)/f+(n',''),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;ao.padding?l.x<0?l.x+=o.padding:l.x-=o.padding:l.x=0,s(l.y)>o.padding?l.y<0?l.y+=o.padding:l.y-=o.padding:l.y=0;var c=o.scaleX,h=o.scaleY;if(n==="equally"&&!u&&!a){var p=l.y+l.x,d=(o.height+o.strokeWidth)*r.original.scaleY+(o.width+o.strokeWidth)*r.original.scaleX;c=r.original.scaleX*p/d,h=r.original.scaleY*p/d,o.set("scaleX",c),o.set("scaleY",h)}else n?n==="x"&&!o.get("lockUniScaling")?(c=l.x/(o.width+o.strokeWidth),u||o.set("scaleX",c)):n==="y"&&!o.get("lockUniScaling")&&(h=l.y/(o.height+o.strokeWidth),a||o.set("scaleY",h)):(c=l.x/(o.width+o.strokeWidth),h=l.y/(o.height+o.strokeWidth),u||o.set("scaleX",c),a||o.set("scaleY",h));c<0&&(r.originX==="left"?r.originX="right":r.originX==="right"&&(r.originX="left")),h<0&&(r.originY==="top"?r.originY="bottom":r.originY==="bottom"&&(r.originY="top")),o.setPositionByOrigin(f,r.originX,r.originY)},_rotateObject:function(e,t){var n=this._currentTransform,s=this._offset;if(n.target.get("lockRotation"))return;var o=i(n.ey-n.top-s.top,n.ex-n.left-s.left),u=i(t-n.top-s.top,e-n.left-s.left);n.target.angle=r(u-o+n.theta)},_setCursor:function(e){this.upperCanvasEl.style.cursor=e},_resetObjectTransform:function(e){e.scaleX=1,e.scaleY=1,e.setAngle(0)},_drawSelection:function(){var e=this.contextTop,t=this._groupSelector,n=t.left,r=t.top,i=s(n),o=s(r);e.fillStyle=this.selectionColor,e.fillRect(t.ex-(n>0?0:-n),t.ey-(r>0?0:-r),i,o),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var u=t.ex+a-(n>0?0:i),f=t.ey+a-(r>0?0:o);e.beginPath(),fabric.util.drawDashedLine(e,u,f,u+i,f,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f+o-1,u+i,f+o-1,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f,u,f+o,this.selectionDashArray),fabric.util.drawDashedLine(e,u+i-1,f,u+i-1,f+o,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+a-(n>0?0:i),t.ey+a-(r>0?0:o),i,o)},_findSelectedObjects:function(e){var t=[],n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,s=r+this._groupSelector.top,a,f=new fabric.Point(o(n,i),o(r,s)),l=new fabric.Point(u(n,i),u(r,s));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);var a=t!==0||n!==0;e.moveTo(r+t,i),e.lineTo(r+s-t,i),a&&e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),a&&e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),a&&e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),a&&e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,i){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=r(s);var o=new t.Rect(n(i?t.util.object.clone(i):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed,r=t.util.array.min;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(){var e=[],t=[];for(var r=0,i=this.points.length;r'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n"},toObject:function(e){var t=s(this.callSuper("toObject",e),{path:this.path});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(){var e=[],t=[];for(var n=0,r=this.path.length;n',"",""),t.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n=[],r,i,s=/(-?\.\d+)|(-?\d+(\.\d+)?)/g,o,u;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var n=0,r=e.length;n"),t.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},toGrayscale:function(){var e=this.paths.length;while(e--)this.paths[e].toGrayscale();return this},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e){var n=u(e.paths);return new t.PathGroup(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){var e=this.left,t=this.top;this.forEachObject(function(n){var r=n.get("left"),i=n.get("top");n.set("originalLeft",r),n.set("originalTop",i),n.set("left",r-e),n.set("top",i-t),n.setCoords(),n.__origHasControls=n.hasControls,n.hasControls=!1},this)},toString:function(){return"#"},getObjects:function(){return this._objects},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textShadow:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e);var r=Math.max(this.scaleX,this.scaleY);this.clipTo&&t.util.clipContext(this,e);for(var i=0,s=this._objects.length;i'+e.join("")+""},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','');if(this.stroke||this.strokeDashArray){var t=this.fill;this.fill=null,e.push("'),this.fill=t}return e.push(""),e.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this.setElement(this._originalImage),e&&e();return}var t=this._originalImage,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height;if(fabric.isLikelyNode){var s=n.toDataURL("image/png").substring(22);r.src=new Buffer(s,"base64"),i._element=r,e&&e()}else r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png");return this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e){e.filters&&e.filters.length&&(this.filters=e.filters.map(function(e){return e&&fabric.Image.filters[e.type].fromObject(e)}))},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){var n=fabric.document.createElement("img"),r=e.src;e.width&&(n.width=e.width),e.height&&(n.height=e.height),n.onload=function(){fabric.Image.prototype._initFilters.call(e,e);var r=new fabric.Image(n,e);t&&t(r),n=n.onload=n.onerror=null},n.onerror=function(){fabric.log("Error loading "+n.src),t&&t(null,!0),n=n.onload=n.onerror=null},n.src=r},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))})},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.Brightness=fabric.util.createClass({type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;s=0&&N=0&&Co&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.object.clone,i=t.util.toFixed,s=t.StaticCanvas.supports("setLineDash");if(t.Text){t.warn("fabric.Text is already defined");return}var o=t.Object.prototype.stateProperties.concat();o.push("fontFamily","fontWeight","fontSize","path","text","textDecoration","textShadow","textAlign","fontStyle","lineHeight","backgroundColor","textBackgroundColor","useNative"),t.Text=t.util.createClass(t.Object,{_dimensionAffectingProps:{fontSize:!0,fontWeight:!0,fontFamily:!0,textDecoration:!0,fontStyle:!0,lineHeight:!0,stroke:!0,strokeWidth:!0,text:!0},type:"text",fontSize:40,fontWeight:"normal",fontFamily:"Times New Roman",textDecoration:"",textShadow:"",textAlign:"left",fontStyle:"",lineHeight:1.3,backgroundColor:"",textBackgroundColor:"",path:null,useNative:!0,stateProperties:o,initialize:function(e,t){t=t||{},this.text=e,this.__skipDimension=!0,this.setOptions(t),this.__skipDimension=!1,this._initDimensions(),this.setCoords()},_initDimensions:function(){if(this.__skipDimension)return;var e=t.util.createCanvasElement();this._render(e.getContext("2d"))},toString:function(){return"#'},_render:function(e){var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaNative:function(e){this.transform(e,t.isLikelyNode),this._setTextStyles(e);var n=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this._renderTextBackground(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),e.save(),this._setTextShadow(e),this.clipTo&&t.util.clipContext(this,e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this.clipTo&&e.restore(),this.textShadow&&e.restore(),e.restore(),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this._setBoundaries(e,n),this._totalLineHeight=0,this.setCoords()},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_setTextShadow:function(e){if(!this.textShadow)return;var t=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/,n=this.textShadow,r=t.exec(this.textShadow),i=n.replace(t,"");e.save(),e.shadowColor=i,e.shadowOffsetX=parseInt(r[1],10),e.shadowOffsetY=parseInt(r[2],10),e.shadowBlur=parseInt(r[3],10),this._shadows=[{blur:e.shadowBlur,color:e.shadowColor,offX:e.shadowOffsetX,offY:e.shadowOffsetY}],this._shadowOffsets=[[parseInt(e.shadowOffsetX,10),parseInt(e.shadowOffsetY,10)]]},_drawTextLine:function(e,t,n,r,i){if(this.textAlign!=="justify"){t[e](n,r,i);return}var s=t.measureText(n).width,o=this.width;if(o>s){var u=n.split(/\s+/),a=t.measureText(n.replace(/\s+/g,"")).width,f=o-a,l=u.length-1,c=f/l,h=0;for(var p=0,d=u.length;p-1&&i(this.fontSize),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(0)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(e,t){if(!this.visible)return;e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){return n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;this.backgroundColor&&this._boundaries&&o.push("');for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.textBackgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},setColor:function(e){return this.set("fill",e),this},getText:function(){return this.text},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Text.prototype,{_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_initDummyElementForCufon:function(){var e=fabric.document.createElement("pre"),t=fabric.document.createElement("div");return t.appendChild(e),typeof G_vmlCanvasManager=="undefined"?e.innerHTML=this.text:e.innerText=this.text.replace(/\r?\n/gi,"\r"),e.style.fontSize=this.fontSize+"px",e.style.letterSpacing="normal",e}}),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs"),r=n.createReadStream(e),i="";r.on("data",function(e){i+=e}),r.on("end",function(){t(i)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&e.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 fd2540af3d6fbec41b00563ac0515a7f5c9f9fcf..6a4234fe58df8326a9ee4c39fe66adfb4ec3d700 100644 GIT binary patch delta 38120 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 Y82-bkD6tWFMp08&V9kpKVy delta 38142 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

wD>aM~$!wLz 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 diff --git a/package.json b/package.json index 9a476b35..8f2fa970 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "fabric", "description": "Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.", - "version": "1.1.21", + "version": "1.2.0", "author": "Juriy Zaytsev ", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "repository": "git://github.com/kangax/fabric.js",