From f5f29a39254b91798b765c9f5b3751edead0b0fc Mon Sep 17 00:00:00 2001 From: kangax Date: Sat, 14 Sep 2013 13:59:10 +0200 Subject: [PATCH] Create group of circles in CircleBrush for better performance. Closes #530 --- dist/all.js | 9 +++++++-- dist/all.min.js | 8 ++++---- dist/all.min.js.gz | Bin 50620 -> 50627 bytes dist/all.require.js | 9 +++++++-- src/brushes/circle_brush.class.js | 9 +++++++-- 5 files changed, 25 insertions(+), 10 deletions(-) diff --git a/dist/all.js b/dist/all.js index b88122b6..d4cbd68c 100644 --- a/dist/all.js +++ b/dist/all.js @@ -8098,6 +8098,8 @@ fabric.CircleBrush = fabric.util.createClass(fabric.BaseBrush, /** @lends fabric var originalRenderOnAddRemove = this.canvas.renderOnAddRemove; this.canvas.renderOnAddRemove = false; + var circles = [ ]; + for (var i = 0, len = this.points.length; i < len; i++) { var point = this.points[i]; var circle = new fabric.Circle({ @@ -8109,9 +8111,12 @@ fabric.CircleBrush = fabric.util.createClass(fabric.BaseBrush, /** @lends fabric this.shadow && circle.setShadow(this.shadow); - this.canvas.add(circle); - this.canvas.fire('path:created', { path: circle }); + circles.push(circle); } + var group = new fabric.Group(circles); + + this.canvas.add(group); + this.canvas.fire('path:created', { path: group }); this.canvas.clearContext(this.canvas.contextTop); this._resetShadow(); diff --git a/dist/all.min.js b/dist/all.min.js index c8596a97..3ad004ef 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 exports=exports||{},fabric=fabric||{version:"1.2.14"};exports.fabric=fabric,typeof document!="undefined"&&typeof window!="undefined"?(fabric.document=document,fabric.window=window):(fabric.document=require("jsdom").jsdom(""),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined";var Cufon=function(){function r(e){var t=this.face=e.face;this.glyphs=e.glyphs,this.w=e.w,this.baseSize=parseInt(t["units-per-em"],10),this.family=t["font-family"].toLowerCase(),this.weight=t["font-weight"],this.style=t["font-style"]||"normal",this.viewBox=function(){var e=t.bbox.split(/\s+/),n={minX:parseInt(e[0],10),minY:parseInt(e[1],10),maxX:parseInt(e[2],10),maxY:parseInt(e[3],10)};return n.width=n.maxX-n.minX,n.height=n.maxY-n.minY,n.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")},n}(),this.ascent=-parseInt(t.ascent,10),this.descent=-parseInt(t.descent,10),this.height=-this.ascent+this.descent}function i(){var e={},t={oblique:"italic",italic:"oblique"};this.add=function(t){(e[t.style]||(e[t.style]={}))[t.weight]=t},this.get=function(n,r){var i=e[n]||e[t[n]]||e.normal||e.italic||e.oblique;if(!i)return null;r={normal:400,bold:700}[r]||parseInt(r,10);if(i[r])return i[r];var s={1:1,99:0}[r%100],o=[],u,a;s===undefined&&(s=r>400),r==500&&(r=400);for(var f in i){f=parseInt(f,10);if(!u||fa)a=f;o.push(f)}return ra&&(r=a),o.sort(function(e,t){return(s?e>r&&t>r?et:et:e=i.length+e?r():setTimeout(arguments.callee,10)}),function(t){e?t():n.push(t)}}(),supports:function(e,t){var n=fabric.document.createElement("span").style;return n[e]===undefined?!1:(n[e]=t,n[e]===t)},textAlign:function(e,t,n,r){return t.get("textAlign")=="right"?n>0&&(e=" "+e):nk&&(k=N),A.push(N),N=0;continue}var O=t.glyphs[T[b]]||t.missingGlyph;if(!O)continue;N+=C=Number(O.w||t.w)+h}A.push(N),N=Math.max(k,N);var M=[];for(var b=A.length;b--;)M[b]=N-A[b];if(C===null)return null;d+=l.width-C,m+=l.minX;var _,D;if(f)_=u,D=u.firstChild;else{_=fabric.document.createElement("span"),_.className="cufon cufon-canvas",_.alt=n,D=fabric.document.createElement("canvas"),_.appendChild(D);if(i.printable){var P=fabric.document.createElement("span");P.className="cufon-alt",P.appendChild(fabric.document.createTextNode(n)),_.appendChild(P)}}var H=_.style,B=D.style||{},j=c.convert(l.height-p+v),F=Math.ceil(j),I=F/j;D.width=Math.ceil(c.convert(N+d-m)*I),D.height=F,p+=l.minY,B.top=Math.round(c.convert(p-t.ascent))+"px",B.left=Math.round(c.convert(m))+"px";var q=Math.ceil(c.convert(N*I)),R=q+"px",U=c.convert(t.height),z=(i.lineHeight-1)*c.convert(-t.ascent/5)*(L-1);Cufon.textOptions.width=q,Cufon.textOptions.height=U*L+z,Cufon.textOptions.lines=L,Cufon.textOptions.totalLineHeight=z,e?(H.width=R,H.height=U+"px"):(H.paddingLeft=R,H.paddingBottom=U-1+"px");var W=Cufon.textOptions.context||D.getContext("2d"),X=F/l.height;Cufon.textOptions.fontAscent=t.ascent*X,Cufon.textOptions.boundaries=null;for(var V=Cufon.textOptions.shadowOffsets,b=y.length;b--;)V[b]=[y[b][0]*X,y[b][1]*X];W.save(),W.scale(X,X),W.translate(-m-1/X*D.width/2+(Cufon.fonts[t.family].offsetLeft||0),-p-Cufon.textOptions.height/X/2+(Cufon.fonts[t.family].offsetTop||0)),W.lineWidth=t.face["underline-thickness"],W.save();var J=Cufon.getTextDecoration(i),K=i.fontStyle==="italic";W.save(),Q();if(g)for(var b=0,w=g.length;b.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}'),function(e,t,i,s,o,u,a){var f=t===null;f&&(t=o.alt);var l=e.viewBox,c=i.computedFontSize||(i.computedFontSize=new Cufon.CSS.Size(n(u,i.get("fontSize"))+"px",e.baseSize)),h=i.computedLSpacing;h==undefined&&(h=i.get("letterSpacing"),i.computedLSpacing=h=h=="normal"?0:~~c.convertFrom(r(u,h)));var p,d;if(f)p=o,d=o.firstChild;else{p=fabric.document.createElement("span"),p.className="cufon cufon-vml",p.alt=t,d=fabric.document.createElement("span"),d.className="cufon-vml-canvas",p.appendChild(d);if(s.printable){var v=fabric.document.createElement("span");v.className="cufon-alt",v.appendChild(fabric.document.createTextNode(t)),p.appendChild(v)}a||p.appendChild(fabric.document.createElement("cvml:shape"))}var m=p.style,g=d.style,y=c.convert(l.height),b=Math.ceil(y),w=b/y,E=l.minX,S=l.minY;g.height=b,g.top=Math.round(c.convert(S-e.ascent)),g.left=Math.round(c.convert(E)),m.height=c.convert(e.height)+"px";var x=Cufon.getTextDecoration(s),T=i.get("color"),N=Cufon.CSS.textTransform(t,i).split(""),C=0,k=0,L=null,A,O,M=s.textShadow;for(var _=0,D=0,P=N.length;_-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)},toGrayscale:function(){return this.forEachObject(function(e){e.toGrayscale()})}},function(){function n(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e}function r(e,t){return Math.floor(Math.random()*(t-e+1))+e}function s(e){return e*i}function o(e){return e/i}function u(e,t,n){var r=Math.sin(n),i=Math.cos(n);e.subtractEquals(t);var s=e.x*i-e.y*r,o=e.x*r+e.y*i;return(new fabric.Point(s,o)).addEquals(t)}function a(e,t){return parseFloat(Number(e).toFixed(t))}function f(){return!1}function l(e,t){return c(t)[fabric.util.string.camelize(fabric.util.string.capitalize(e))]}function c(e){if(!e)return fabric;var t=e.split("."),n=t.length,r=fabric.window;for(var i=0;i1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r}function v(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),n[d?"lineTo":"moveTo"](r,0),d=!d;n.restore()}function g(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function y(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function b(e){var t=e.prototype;for(var n=t.stateProperties.length;n--;){var r=t.stateProperties[n],i=r.charAt(0).toUpperCase()+r.slice(1),s="set"+i,o="get"+i;t[o]||(t[o]=function(e){return new Function('return this.get("'+e+'")')}(r)),t[s]||(t[s]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(r))}}function w(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function E(e,t){var n=[[e[0],e[2],e[4]],[e[1],e[3],e[5]],[0,0,1]],r=[[t[0],t[2],t[4]],[t[1],t[3],t[5]],[0,0,1]],i=[];for(var s=0;s<3;s++){i[s]=[];for(var o=0;o<3;o++){var u=0;for(var a=0;a<3;a++)u+=n[s][a]*r[a][o];i[s][o]=u}}return[i[0][0],i[1][0],i[0][1],i[1][1],i[0][2],i[1][2]]}function S(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]}function x(e,t,n,r){var i=r[0],s=r[1],o=r[2],u=r[3],a=r[4],f=r[5],l=r[6],c=L(f,l,i,s,u,a,o,t,n);for(var h=0;h1&&(d=Math.sqrt(d),n*=d,r*=d);var v=c/n,m=l/n,g=-l/r,y=c/r,b=v*u+m*a,w=g*u+y*a,E=v*e+m*t,S=g*e+y*t,x=(E-b)*(E-b)+(S-w)*(S-w),N=1/x-.25;N<0&&(N=0);var L=Math.sqrt(N);s===i&&(L=-L);var A=.5*(b+E)-L*(S-w),O=.5*(w+S)+L*(E-b),M=Math.atan2(w-O,b-A),_=Math.atan2(S-O,E-A),D=_-M;D<0&&s===1?D+=2*Math.PI:D>0&&s===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B=r&&(r=e[n][t]);else while(n--)e[n]>=r&&(r=e[n]);return r}function r(e,t){if(!e||e.length===0)return undefined;var n=e.length-1,r=t?e[n][t]:e[n];if(t)while(n--)e[n][t]>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(t){var n=this.constructor.superclass.prototype[t];return arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this)}function o(){function u(){this.initialize.apply(this,arguments)}var n=null,o=e.call(arguments,0);typeof o[0]=="function"&&(n=o.shift()),u.superclass=n,u.subclasses=[],n&&(i.prototype=n.prototype,u.prototype=new i,n.subclasses.push(u));for(var a=0,f=o.length;a-1?e.prototype[i]=function(e){return function(){var n=this.constructor.superclass;this.constructor.superclass=r;var i=t[e].apply(this,arguments);this.constructor.superclass=n;if(e!=="initialize")return i}}(i):e.prototype[i]=t[i],n&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};fabric.util.createClass=o}(),function(){function e(e){var t=Array.prototype.slice.call(arguments,1),n,r,i=t.length;for(r=0;r-1?s(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if(r==="opacity")s(e,t[r]);else{var i=r==="float"||r==="cssFloat"?typeof n.styleFloat=="undefined"?"cssFloat":"styleFloat":r;n[i]=t[r]}return e}var t=fabric.document.createElement("div"),n=typeof t.style.opacity=="string",r=typeof t.style.filter=="string",i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(e){return e};n?s=function(e,t){return e.style.opacity=t,e}:r&&(s=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+t*100+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+t*100+")",e}),fabric.util.setStyle=e}(),function(){function t(e){return typeof e=="string"?fabric.document.getElementById(e):e}function s(e,t){var n=fabric.document.createElement(e);for(var r in t)r==="class"?n.className=t[r]:r==="for"?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function o(e,t){(" "+e.className+" ").indexOf(" "+t+" ")===-1&&(e.className+=(e.className?" ":"")+t)}function u(e,t,n){return typeof t=="string"&&(t=s(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t}function a(e){var t,n,r={left:0,top:0},i=e&&e.ownerDocument,s={left:0,top:0},o={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!i)return{left:0,top:0};for(var u in o)s[o[u]]+=parseInt(f(e,u),10)||0;return t=i.documentElement,typeof e.getBoundingClientRect!="undefined"&&(r=e.getBoundingClientRect()),i!=null&&i===i.window?n=i:n=i.nodeType===9&&(i.defaultView||i.parentWindow),{left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)+s.left,top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0)+s.top}}function f(e,t){e.style||(e.style={});if(fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle)return fabric.document.defaultView.getComputedStyle(e,null)[t];var n=e.style[t];return!n&&e.currentStyle&&(n=e.currentStyle[t]),n}var e=Array.prototype.slice,n=function(t){return e.call(t,0)},r;try{r=n(fabric.document.childNodes)instanceof Array}catch(i){}r||(n=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t}),function(){function n(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=fabric.util.falseFunction),t?e.style[t]="none":typeof e.unselectable=="string"&&(e.unselectable="on"),e}function r(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=null),t?e.style[t]="":typeof e.unselectable=="string"&&(e.unselectable=""),e}var e=fabric.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=n,fabric.util.makeElementSelectable=r}(),function(){function e(e,t){var n=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),i=!0;r.onload=r.onreadystatechange=function(e){if(i){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;i=!1,t(e||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=e,n.appendChild(r)}fabric.util.getScript=e}(),fabric.util.getById=t,fabric.util.toArray=n,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getElementOffset=a,fabric.util.getElementStyle=f}(),function(){function e(e,t){return e+(/\?/.test(e)?"&":"?")+t}function n(){}function r(r,i){i||(i={});var s=i.method?i.method.toUpperCase():"GET",o=i.onComplete||function(){},u=t(),a;return u.onreadystatechange=function(){u.readyState===4&&(o(u),u.onreadystatechange=n)},s==="GET"&&(a=null,typeof i.parameters=="string"&&(r=e(r,i.parameters))),u.open(s,r,!0),(s==="POST"||s==="PUT")&&u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),u.send(a),u}var t=function(){var e=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}];for(var t=e.length;t--;)try{var n=e[t]();if(n)return e[t]}catch(r){}}();fabric.util.request=r}(),function(){function e(e){e||(e={});var t=+(new Date),r=e.duration||500,i=t+r,s,o=e.onChange||function(){},u=e.abort||function(){return!1},a=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},f="startValue"in e?e.startValue:0,l="endValue"in e?e.endValue:100,c=e.byValue||l-f;e.onStart&&e.onStart(),function h(){s=+(new Date);var l=s>i?r:s-t;o(a(l,f,c,r));if(s>i||u()){e.onComplete&&e.onComplete();return}n(h)}()}var t=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)},n=function(){return t.apply(fabric.window,arguments)};fabric.util.animate=e,fabric.util.requestAnimFrame=n}(),function(){function e(e,t,n,r){return n*(e/=r)*e+t}function t(e,t,n,r){return-n*(e/=r)*(e-2)+t}function n(e,t,n,r){return e/=r/2,e<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e,t,n,r){return n*(e/=r)*e*e+t}function i(e,t,n,r){return n*((e=e/r-1)*e*e+1)+t}function s(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e+t:n/2*((e-=2)*e*e+2)+t}function o(e,t,n,r){return n*(e/=r)*e*e*e+t}function u(e,t,n,r){return-n*((e=e/r-1)*e*e*e-1)+t}function a(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e+t:-n/2*((e-=2)*e*e*e-2)+t}function f(e,t,n,r){return n*(e/=r)*e*e*e*e+t}function l(e,t,n,r){return n*((e=e/r-1)*e*e*e*e+1)+t}function c(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e*e+t:n/2*((e-=2)*e*e*e*e+2)+t}function h(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t}function p(e,t,n,r){return n*Math.sin(e/r*(Math.PI/2))+t}function d(e,t,n,r){return-n/2*(Math.cos(Math.PI*e/r)-1)+t}function v(e,t,n,r){return e===0?t:n*Math.pow(2,10*(e/r-1))+t}function m(e,t,n,r){return e===r?t+n:n*(-Math.pow(2,-10*e/r)+1)+t}function g(e,t,n,r){return e===0?t:e===r?t+n:(e/=r/2,e<1?n/2*Math.pow(2,10*(e-1))+t:n/2*(-Math.pow(2,-10*--e)+2)+t)}function y(e,t,n,r){return-n*(Math.sqrt(1-(e/=r)*e)-1)+t}function b(e,t,n,r){return n*Math.sqrt(1-(e=e/r-1)*e)+t}function w(e,t,n,r){return e/=r/2,e<1?-n/2*(Math.sqrt(1-e*e)-1)+t:n/2*(Math.sqrt(1-(e-=2)*e)+1)+t}function E(e,t,n,r){var i=1.70158,s=0,o=n;return e===0?t:(e/=r,e===1?t+n:(s||(s=r*.3),o-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){w.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),w.has(e,function(r){r?w.get(e,function(e){var t=S(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function S(e){var n=e.objects,i=e.options;return n=n.map(function(e){return t[r(e.type)].fromObject(e)}),{objects:n,options:i}}function x(e,n,r){e=e.trim();var i;if(typeof DOMParser!="undefined"){var s=new DOMParser;s&&s.parseFromString&&(i=s.parseFromString(e,"text/xml"))}else t.window.ActiveXObject&&(i=new ActiveXObject("Microsoft.XMLDOM"),i.async="false",i.loadXML(e.replace(//i,"")));t.parseSVGDocument(i.documentElement,function(e,t){n(e,t)},r)}function T(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t}function N(e){var t="";return e.backgroundColor&&e.backgroundColor.source&&(t=['',''].join("")),t}function C(e){var t=e.getElementsByTagName("linearGradient"),n=e.getElementsByTagName("radialGradient"),r,i,s={};i=t.length;for(;i--;)r=t[i],s[r.getAttribute("id")]=r;i=n.length;for(;i--;)r=n[i],s[r.getAttribute("id")]=r;return s}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s=t.util.toFixed,o=t.util.multiplyTransformMatrices;t.SHARED_ATTRIBUTES=["transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width"];var u={"fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight",cx:"left",x:"left",r:"radius","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration",cy:"top",y:"top",transform:"transformMatrix"},a={stroke:"strokeOpacity",fill:"fillOpacity"};t.parseTransformAttribute=function(){function e(e,t){var n=t[0];e[0]=Math.cos(n),e[1]=Math.sin(n),e[2]=-Math.sin(n),e[3]=Math.cos(n)}function n(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function r(e,t){e[2]=t[0]}function i(e,t){e[1]=t[0]}function s(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var o=[1,0,0,1,0,0],u="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",a="(?:\\s+,?\\s*|,\\s*)",f="(?:(skewX)\\s*\\(\\s*("+u+")\\s*\\))",l="(?:(skewY)\\s*\\(\\s*("+u+")\\s*\\))",c="(?:(rotate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+")"+a+"("+u+"))?\\s*\\))",h="(?:(scale)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",p="(?:(translate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",d="(?:(matrix)\\s*\\(\\s*("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+"\\s*\\))",v="(?:"+d+"|"+p+"|"+h+"|"+c+"|"+f+"|"+l+")",m="(?:"+v+"(?:"+a+v+")*"+")",g="^\\s*(?:"+m+"?)\\s*$",y=new RegExp(g),b=new RegExp(v,"g");return function(u){var a=o.concat(),f=[];if(!u||u&&!y.test(u))return a;u.replace(b,function(t){var u=(new RegExp(v)).exec(t).filter(function(e){return e!==""&&e!=null}),l=u[1],c=u.slice(2).map(parseFloat);switch(l){case"translate":s(a,c);break;case"rotate":e(a,c);break;case"scale":n(a,c);break;case"skewX":r(a,c);break;case"skewY":i(a,c);break;case"matrix":a=c}f.push(a.concat()),a=o.concat()});var l=f[0];while(f.length>1)f.shift(),l=t.util.multiplyTransformMatrices(l,f[0]);return l}}(),t.parseSVGDocument=function(){function s(e,t){while(e&&(e=e.parentNode))if(t.test(e.nodeName))return!0;return!1}var e=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/,n="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",r=new RegExp("^\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*"+"$");return function(n,o,u){if(!n)return;var a=new Date,f=t.util.toArray(n.getElementsByTagName("*"));if(f.length===0){f=n.selectNodes("//*[name(.)!='svg']");var l=[];for(var c=0,h=f.length;ce.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,t){return new n(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},distanceFrom:function(e){var t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)},midPointFrom:function(e){return new n(this.x+(e.x-this.x)/2,this.y+(e.y-this.y)/2)},min:function(e){return new n(Math.min(this.x,e.x),Math.min(this.y,e.y))},max:function(e){return new n(Math.max(this.x,e.x),Math.max(this.y,e.y))},toString:function(){return this.x+","+this.y},setXY:function(e,t){this.x=e,this.y=t},setFromPoint:function(e){this.x=e.x,this.y=e.y},swap:function(e){var t=this.x,n=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=n}}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){this.status=e,this.points=[]}var t=e.fabric||(e.fabric={});if(t.Intersection){t.warn("fabric.Intersection is already defined");return}t.Intersection=n,t.Intersection.prototype={appendPoint:function(e){this.points.push(e)},appendPoints:function(e){this.points=this.points.concat(e)}},t.Intersection.intersectLineLine=function(e,r,i,s){var o,u=(s.x-i.x)*(e.y-i.y)-(s.y-i.y)*(e.x-i.x),a=(r.x-e.x)*(e.y-i.y)-(r.y-e.y)*(e.x-i.x),f=(s.y-i.y)*(r.x-e.x)-(s.x-i.x)*(r.y-e.y);if(f!==0){var l=u/f,c=a/f;0<=l&&l<=1&&0<=c&&c<=1?(o=new n("Intersection"),o.points.push(new t.Point(e.x+l*(r.x-e.x),e.y+l*(r.y-e.y)))):o=new n}else u===0||a===0?o=new n("Coincident"):o=new n("Parallel");return o},t.Intersection.intersectLinePolygon=function(e,t,r){var i=new n,s=r.length;for(var o=0;o0&&(i.status="Intersection"),i},t.Intersection.intersectPolygonPolygon=function(e,t){var r=new n,i=e.length;for(var s=0;s0&&(r.status="Intersection"),r},t.Intersection.intersectPolygonRectangle=function(e,r,i){var s=r.min(i),o=r.max(i),u=new t.Point(o.x,s.y),a=new t.Point(s.x,o.y),f=n.intersectLinePolygon(s,u,e),l=n.intersectLinePolygon(u,o,e),c=n.intersectLinePolygon(o,a,e),h=n.intersectLinePolygon(a,s,e),p=new n;return p.appendPoints(f.points),p.appendPoints(l.points),p.appendPoints(c.points),p.appendPoints(h.points),p.points.length>0&&(p.status="Intersection"),p}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){e?this._tryParsingColor(e):this.setSource([0,0,0,1])}function r(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var t=e.fabric||(e.fabric={});if(t.Color){t.warn("fabric.Color is already defined.");return}t.Color=n,t.Color.prototype={_tryParsingColor:function(e){var t;e in n.colorNameMap&&(e=n.colorNameMap[e]),t=n.sourceFromHex(e),t||(t=n.sourceFromRgb(e)),t||(t=n.sourceFromHsl(e)),t&&this.setSource(t)},_rgbToHsl:function(e,n,r){e/=255,n/=255,r/=255;var i,s,o,u=t.util.array.max([e,n,r]),a=t.util.array.min([e,n,r]);o=(u+a)/2;if(u===a)i=s=0;else{var f=u-a;s=o>.5?f/(2-u-a):f/(u+a);switch(u){case e:i=(n-r)/f+(n']:this.type==="radial"&&(i=["']);for(var s=0;s');return i.push(this.type==="linear"?"":""),i.join("")},toLive:function(e){var t;if(!this.type)return;this.type==="linear"?t=e.createLinearGradient(this.coords.x1,this.coords.y1,this.coords.x2,this.coords.y2):this.type==="radial"&&(t=e.createRadialGradient(this.coords.x1,this.coords.y1,this.coords.r1,this.coords.x2,this.coords.y2,this.coords.r2));for(var n=0,r=this.colorStops.length;n'+''+""},toLive:function(e){var t=typeof this.source=="function"?this.source():this.source;return e.createPattern(t,this.repeat)}}),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Shadow){t.warn("fabric.Shadow is already defined.");return}t.Shadow=t.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,initialize:function(e){typeof e=="string"&&(e=this._parseShadow(e));for(var n in e)this[n]=e[n];this.id=t.Object.__uid++},_parseShadow:function(e){var n=e.trim(),r=t.Shadow.reOffsetsAndBlur.exec(n)||[],i=n.replace(t.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)";return{color:i.trim(),offsetX:parseInt(r[1],10)||0,offsetY:parseInt(r[2],10)||0,blur:parseInt(r[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(e){var t="SourceAlpha";return e&&(e.fill===this.color||e.stroke===this.color)&&(t="SourceGraphic"),''+''+''+""+""+''+""+"" -},toObject:function(){return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY}}}),t.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/}(typeof exports!="undefined"?exports:this),function(){"use strict";if(fabric.StaticCanvas){fabric.warn("fabric.StaticCanvas is already defined.");return}var e=fabric.util.object.extend,t=fabric.util.getElementOffset,n=fabric.util.removeFromArray,r=fabric.util.removeListener,i=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass({initialize:function(e,t){t||(t={}),this._initStatic(e,t),fabric.StaticCanvas.activeInstance=this},backgroundColor:"",backgroundImage:"",backgroundImageOpacity:1,backgroundImageStretch:!0,overlayImage:"",overlayImageLeft:0,overlayImageTop:0,includeDefaultValues:!0,stateful:!0,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!1,onBeforeScaleRotate:function(){},_initStatic:function(e,t){this._objects=[],this._createLowerCanvas(e),this._initOptions(t),t.overlayImage&&this.setOverlayImage(t.overlayImage,this.renderAll.bind(this)),t.backgroundImage&&this.setBackgroundImage(t.backgroundImage,this.renderAll.bind(this)),t.backgroundColor&&this.setBackgroundColor(t.backgroundColor,this.renderAll.bind(this)),this.calcOffset()},calcOffset:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(e,t,n){return fabric.util.loadImage(e,function(e){this.overlayImage=e,n&&"overlayImageLeft"in n&&(this.overlayImageLeft=n.overlayImageLeft),n&&"overlayImageTop"in n&&(this.overlayImageTop=n.overlayImageTop),t&&t()},this),this},setBackgroundImage:function(e,t,n){return fabric.util.loadImage(e,function(e){this.backgroundImage=e,n&&"backgroundImageOpacity"in n&&(this.backgroundImageOpacity=n.backgroundImageOpacity),n&&"backgroundImageStretch"in n&&(this.backgroundImageStretch=n.backgroundImageStretch),t&&t()},this),this},setBackgroundColor:function(e,t){if(e.source){var n=this;fabric.util.loadImage(e.source,function(r){n.backgroundColor=new fabric.Pattern({source:r,repeat:e.repeat}),t&&t()})}else this.backgroundColor=e,t&&t();return this},_createCanvasElement:function(){var e=fabric.document.createElement("canvas");e.style||(e.style={});if(!e)throw i;return this._initCanvasElement(e),e},_initCanvasElement:function(e){fabric.util.createCanvasElement(e);if(typeof e.getContext=="undefined")throw i},_initOptions:function(e){for(var t in e)this[t]=e[t];this.width=parseInt(this.lowerCanvasEl.width,10)||0,this.height=parseInt(this.lowerCanvasEl.height,10)||0;if(!this.lowerCanvasEl.style)return;this.lowerCanvasEl.style.width=this.width+"px",this.lowerCanvasEl.style.height=this.height+"px"},_createLowerCanvas:function(e){this.lowerCanvasEl=fabric.util.getById(e)||this._createCanvasElement(),this._initCanvasElement(this.lowerCanvasEl),fabric.util.addClass(this.lowerCanvasEl,"lower-canvas"),this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(e){return this._setDimension("width",e)},setHeight:function(e){return this._setDimension("height",e)},setDimensions:function(e){for(var t in e)this._setDimension(t,e[t]);return this},_setDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.lowerCanvasEl.style[e]=t+"px",this.upperCanvasEl&&(this.upperCanvasEl[e]=t,this.upperCanvasEl.style[e]=t+"px"),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t+"px"),this[e]=t,this.calcOffset(),this.renderAll(),this},getElement:function(){return this.lowerCanvasEl},getActiveObject:function(){return null},getActiveGroup:function(){return null},_draw:function(e,t){if(!t)return;if(this.controlsAboveOverlay){var n=t.hasBorders,r=t.hasControls;t.hasBorders=t.hasControls=!1,t.render(e),t.hasBorders=n,t.hasControls=r}else t.render(e)},_onObjectAdded:function(e){this.stateful&&e.setupState(),e.setCoords(),e.canvas=this,this.fire("object:added",{target:e}),e.fire("added")},_onObjectRemoved:function(e){this.fire("object:removed",{target:e}),e.fire("removed")},getObjects:function(){return this._objects},clearContext:function(e){return e.clearRect(0,0,this.width,this.height),this},getContext:function(){return this.contextContainer},clear:function(){return this._objects.length=0,this.discardActiveGroup&&this.discardActiveGroup(),this.discardActiveObject&&this.discardActiveObject(),this.clearContext(this.contextContainer),this.contextTop&&this.clearContext(this.contextTop),this.fire("canvas:cleared"),this.renderAll(),this},renderAll:function(e){var t=this[e===!0&&this.interactive?"contextTop":"contextContainer"];this.contextTop&&this.selection&&!this._groupSelector&&this.clearContext(this.contextTop),e||this.clearContext(t),this.fire("before:render"),this.clipTo&&fabric.util.clipContext(this,t),this.backgroundColor&&(t.fillStyle=this.backgroundColor.toLive?this.backgroundColor.toLive(t):this.backgroundColor,t.fillRect(this.backgroundColor.offsetX||0,this.backgroundColor.offsetY||0,this.width,this.height)),typeof this.backgroundImage=="object"&&this._drawBackroundImage(t);var n=this.getActiveGroup();for(var r=0,i=this._objects.length;r','\n'),t.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),""),this.backgroundColor&&this.backgroundColor.source&&t.push('"),this.backgroundImage&&t.push(''),this.overlayImage&&t.push('');var n=this.getActiveGroup();n&&this.discardActiveGroup();for(var r=0,i=this.getObjects(),s=i.length;r"),t.join("")},remove:function(e){return this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared")),fabric.Collection.remove.call(this,e)},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e,t){var r=this._objects.indexOf(e);if(r!==0){var i;if(t){i=r;for(var s=r-1;s>=0;--s){var o=e.intersectsWithObject(this._objects[s])||e.isContainedWithinObject(this._objects[s])||this._objects[s].isContainedWithinObject(e);if(o){i=s;break}}}else i=r-1;n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},bringForward:function(e,t){var r=this._objects.indexOf(e);if(r!==this._objects.length-1){var i;if(t){i=r;for(var s=r+1;s"}}),e(fabric.StaticCanvas.prototype,fabric.Observable),e(fabric.StaticCanvas.prototype,fabric.Collection),e(fabric.StaticCanvas.prototype,fabric.DataURLExporter),e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;a0&&(t>this.targetFindTolerance?t-=this.targetFindTolerance:t=0,n>this.targetFindTolerance?n-=this.targetFindTolerance:n=0);var o=!0,u=r.getImageData(t,n,this.targetFindTolerance*2||1,this.targetFindTolerance*2||1);for(var a=3,f=u.data.length;ao.padding?l.x<0?l.x+=o.padding:l.x-=o.padding:l.x=0,i(l.y)>o.padding?l.y<0?l.y+=o.padding:l.y-=o.padding:l.y=0;var c=o.scaleX,h=o.scaleY;if(n==="equally"&&!u&&!a){var p=l.y+l.x,d=(o.height+o.strokeWidth)*r.original.scaleY+(o.width+o.strokeWidth)*r.original.scaleX;c=r.original.scaleX*p/d,h=r.original.scaleY*p/d,o.set("scaleX",c),o.set("scaleY",h)}else n?n==="x"&&!o.get("lockUniScaling")?(c=l.x/(o.width+o.strokeWidth),u||o.set("scaleX",c)):n==="y"&&!o.get("lockUniScaling")&&(h=l.y/(o.height+o.strokeWidth),a||o.set("scaleY",h)):(c=l.x/(o.width+o.strokeWidth),h=l.y/(o.height+o.strokeWidth),u||o.set("scaleX",c),a||o.set("scaleY",h));c<0&&(r.originX==="left"?r.originX="right":r.originX==="right"&&(r.originX="left")),h<0&&(r.originY==="top"?r.originY="bottom":r.originY==="bottom"&&(r.originY="top")),o.setPositionByOrigin(f,r.originX,r.originY)},_rotateObject:function(e,t){var i=this._currentTransform,s=this._offset;if(i.target.get("lockRotation"))return;var o=r(i.ey-i.top-s.top,i.ex-i.left-s.left),u=r(t-i.top-s.top,e-i.left-s.left),a=n(u-o+i.theta);a<0&&(a=360+a),i.target.angle=a},_setCursor:function(e){this.upperCanvasEl.style.cursor=e},_resetObjectTransform:function(e){e.scaleX=1,e.scaleY=1,e.setAngle(0)},_drawSelection:function(){var e=this.contextTop,t=this._groupSelector,n=t.left,r=t.top,s=i(n),o=i(r);e.fillStyle=this.selectionColor,e.fillRect(t.ex-(n>0?0:-n),t.ey-(r>0?0:-r),s,o),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var a=t.ex+u-(n>0?0:s),f=t.ey+u-(r>0?0:o);e.beginPath(),fabric.util.drawDashedLine(e,a,f,a+s,f,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f+o-1,a+s,f+o-1,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f,a,f+o,this.selectionDashArray),fabric.util.drawDashedLine(e,a+s-1,f,a+s-1,f+o,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+u-(n>0?0:s),t.ey+u-(r>0?0:o),s,o)},_findSelectedObjects:function(e){var t=[],n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,u=r+this._groupSelector.top,a,f=new fabric.Point(s(n,i),s(r,u)),l=new fabric.Point(o(n,i),o(r,u)),c=n===i&&r===u;for(var h=this._objects.length;h--;){a=this._objects[h];if(!a)continue;if(a.intersectsWithRect(f,l)||a.isContainedWithinRect(f,l)||a.containsPoint(f)||a.containsPoint(l))if(this.selection&&a.selectable){a.set("active",!0),t.push(a);if(c)break}}t.length===1?this.setActiveObject(t[0],e):t.length>1&&(t=new fabric.Group(t.reverse()),this.setActiveGroup(t),t.saveCoords(),this.fire("selection:created",{target:t}),this.renderAll())},findTarget:function(e,t){if(this.skipTargetFind)return;var n,r=this.getPointer(e);if(this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(e,this._offset))return n=this.lastRenderedObjectWithControlsAboveOverlay,n;var i=this.getActiveGroup();if(i&&!t&&this.containsPoint(e,i))return n=i,n;var s=[];for(var o=this._objects.length;o--;)if(this._objects[o]&&this._objects[o].visible&&this._objects[o].selectable&&this.containsPoint(e,this._objects[o])){if(!this.perPixelTargetFind&&!this._objects[o].perPixelTargetFind){n=this._objects[o],this.relatedTarget=n;break}s[s.length]=this._objects[o]}for(var u=0,a=s.length;u"},get:function(e){return this[e]},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"&&e!=="clipTo"?this._set(e,t(this.get(e))):this._set(e,t);return this},_set:function(e,n){var i=e==="scaleX"||e==="scaleY";return i&&(n=this._constrainScale(n)),e==="scaleX"&&n<0?(this.flipX=!this.flipX,n*=-1):e==="scaleY"&&n<0?(this.flipY=!this.flipY,n*=-1):e==="width"||e==="height"?this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2):e==="shadow"&&n&&!(n instanceof t.Shadow)&&(n=new t.Shadow(n)),this[e]=n,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save();var r=this.transformMatrix;r&&!this.group&&e.setTransform(r[0],r[1],r[2],r[3],r[4],r[5]),n||this.transform(e),this.stroke&&(e.lineWidth=this.strokeWidth,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,e.strokeStyle=this.stroke.toLive?this.stroke.toLive(e):this.stroke),this.overlayFill?e.fillStyle=this.overlayFill:this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill),r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_renderFill:function(e){if(!this.fill)return;this.fill.toLive&&(e.save(),e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0)),e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke)return;e.save(),this.strokeDashArray?(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),o?(e.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(e)):this._renderDashedStroke&&this._renderDashedStroke(e),e.stroke()):this._stroke?this._stroke(e):e.stroke(),this._removeShadow(e),e.restore()},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){var n=this.toDataURL();return t.util.loadImage(n,function(n){e&&e(new t.Image(n))}),this},toDataURL:function(e){e||(e={});var n=t.util.createCanvasElement();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))},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.centerH().centerV()},remove:function(){return this.canvas.remove(this)},sendToBack:function(){return this.group?t.StaticCanvas.prototype.sendToBack.call(this.group,this):this.canvas.sendToBack(this),this},bringToFront:function(){return this.group?t.StaticCanvas.prototype.bringToFront.call(this.group,this):this.canvas.bringToFront(this),this},sendBackwards:function(e){return this.group?t.StaticCanvas.prototype.sendBackwards.call(this.group,this,e):this.canvas.sendBackwards(this,e),this},bringForward:function(e){return this.group?t.StaticCanvas.prototype.bringForward.call(this.group,this,e):this.canvas.bringForward(this,e),this},moveTo:function(e){return this.group?t.StaticCanvas.prototype.moveTo.call(this.group,this,e):this.canvas.moveTo(this,e),this}}),t.util.createAccessors(t.Object),t.Object.prototype.rotate=t.Object.prototype.setAngle,n(t.Object.prototype,t.Observable),t.Object.NUM_FRACTION_DIGITS=2,t.Object.__uid=0}(typeof exports!="undefined"?exports:this),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{translateToCenterPoint:function(t,n,r){var i=t.x,s=t.y;return n==="left"?i=t.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"&&(i=t.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2),r==="top"?s=t.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"&&(s=t.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},translateToOriginPoint:function(t,n,r){var i=t.x,s=t.y;return n==="left"?i=t.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"&&(i=t.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2),r==="top"?s=t.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"&&(s=t.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},getCenterPoint:function(){return this.translateToCenterPoint(new fabric.Point(this.left,this.top),this.originX,this.originY)},toLocalPoint:function(t,n,r){var i=this.getCenterPoint(),s,o;return n!==undefined&&r!==undefined?(n==="left"?s=i.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"?s=i.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2:s=i.x,r==="top"?o=i.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"?o=i.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2:o=i.y):(s=this.left,o=this.top),fabric.util.rotatePoint(new fabric.Point(t.x,t.y),i,-e(this.angle)).subtractEquals(new fabric.Point(s,o))},setPositionByOrigin:function(e,t,n){var r=this.translateToCenterPoint(e,t,n),i=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",i.x),this.set("top",i.y)},adjustPosition:function(t){var n=e(this.angle),r=this.getWidth()/2,i=Math.cos(n)*r,s=Math.sin(n)*r,o=this.getWidth(),u=Math.cos(n)*o,a=Math.sin(n)*o;this.originX==="center"&&t==="left"||this.originX==="right"&&t==="center"?(this.left-=i,this.top-=s):this.originX==="left"&&t==="center"||this.originX==="center"&&t==="right"?(this.left+=i,this.top+=s):this.originX==="left"&&t==="right"?(this.left+=u,this.top+=a):this.originX==="right"&&t==="left"&&(this.left-=u,this.top-=a),this.setCoords(),this.originX=t},_getLeftTopCoords:function(){var t=e(this.angle),n=this.getWidth()/2,r=Math.cos(t)*n,i=Math.sin(t)*n,s=this.left,o=this.top;if(this.originX==="center"||this.originX==="right")s-=r;if(this.originY==="center"||this.originY==="bottom")o-=i;return{x:s,y:o}}})}(),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{oCoords:null,intersectsWithRect:function(e,t){var n=this.oCoords,r=new fabric.Point(n.tl.x,n.tl.y),i=new fabric.Point(n.tr.x,n.tr.y),s=new fabric.Point(n.bl.x,n.bl.y),o=new fabric.Point(n.br.x,n.br.y),u=fabric.Intersection.intersectPolygonRectangle([r,i,o,s],e,t);return u.status==="Intersection"},intersectsWithObject:function(e){function t(e){return{tl:new fabric.Point(e.tl.x,e.tl.y),tr:new fabric.Point(e.tr.x,e.tr.y),bl:new fabric.Point(e.bl.x,e.bl.y),br:new fabric.Point(e.br.x,e.br.y)}}var n=t(this.oCoords),r=t(e.oCoords),i=fabric.Intersection.intersectPolygonPolygon([n.tl,n.tr,n.br,n.bl],[r.tl,r.tr,r.br,r.bl]);return i.status==="Intersection"},isContainedWithinObject:function(e){var t=e.getBoundingRect(),n=new fabric.Point(t.left,t.top),r=new fabric.Point(t.left+t.width,t.top+t.height);return this.isContainedWithinRect(n,r)},isContainedWithinRect:function(e,t){var n=this.getBoundingRect();return n.left>e.x&&n.left+n.widthe.y&&n.top+n.height=e.y&&f.d.y>=e.y)continue;f.o.x===f.d.x&&f.o.x>=e.x?(o=f.o.x,u=e.y):(n=0,r=(f.d.y-f.o.y)/(f.d.x-f.o.x),i=e.y-n*e.x,s=f.o.y-r*f.o.x,o=-(i-s)/(n-r),u=i+n*o),o>=e.x&&(a+=1);if(a===2)break}return a},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],t=fabric.util.array.min(e),n=fabric.util.array.max(e),r=Math.abs(t-n),i=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],s=fabric.util.array.min(i),o=fabric.util.array.max(i),u=Math.abs(s-o);return{left:t,top:s,width:r,height:u}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(e){return Math.abs(e)1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x:m.x,y:m.y};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords&&this._setCornerCoords(),this}})}(),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this.get(e)!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner),o=this._findCrossPoints({x:i,y:s},u);if(o!==0&&o%2===1)return this.__corner=a,a}return!1},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=~~(this.strokeWidth/2)*2;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)-.5,~~(-(u/2)-t-r/2*this.scaleY)-.5,~~(o+n+r*this.scaleX)+1,~~(u+n+r*this.scaleY)+1);if(this.hasRotatingPoint&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;var t=this.cornerSize,n=t/2,r=~~(this.strokeWidth/2),i=-(this.width/2),s=-(this.height/2),o,u,a=t/this.scaleX,f=t/this.scaleY,l=this.padding/this.scaleX,c=this.padding/this.scaleY,h=n/this.scaleY,p=n/this.scaleX,d=(n-t)/this.scaleX,v=(n-t)/this.scaleY,m=this.height,g=this.width,y=this.transparentCorners?"strokeRect":"fillRect",b=this.transparentCorners,w=typeof G_vmlCanvasManager!="undefined";return e.save(),e.lineWidth=1/Math.max(this.scaleX,this.scaleY),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=e.fillStyle=this.cornerColor,o=i-p-r-l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),this.get("lockUniScaling")||(o=i+g/2-p,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),this.hasRotatingPoint&&(o=i+g/2-p,u=this.flipY?s+m+this.rotatingPointOffset/this.scaleY-f/2+r+c:s-this.rotatingPointOffset/this.scaleY-f/2-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),e.restore(),this}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("left"),endValue:this.getCenter().left,duration:this.FX_DURATION,onChange:function(t){e.set("left",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxCenterObjectV:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("top"),endValue:this.getCenter().top,duration:this.FX_DURATION,onChange:function(t){e.set("top",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxRemove:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("opacity"),endValue:0,duration:this.FX_DURATION,onStart:function(){e.set("active",!1)},onChange:function(t){e.set("opacity",t),s.renderAll(),i()},onComplete:function(){s.remove(e),r()}}),this}}),fabric.util.object.extend(fabric.Object.prototype,{animate:function(){if(arguments[0]&&typeof arguments[0]=="object"){var e=[],t,n;for(t in arguments[0])e.push(t);for(var r=0,i=e.length;r'),e.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e)},_set:function(e,t){return this.callSuper("_set",e,t),e==="radius"&&this.setRadius(t),this},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(){var e=this._createBaseSVGMarkup();return e.push("'),e.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(){var e=this._createBaseSVGMarkup(),t=this.width/2,n=this.height/2,r=[-t+" "+n,"0 "+ -n,t+" "+n].join(",");return e.push("'),e.join("")},complexity:function(){return 1}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){var e=this._createBaseSVGMarkup();return e.push("'),e.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this._renderFill(e),this._renderStroke(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}var r=t.Object.prototype.stateProperties.concat();r.push("rx","ry"),t.Rect=t.util.createClass(t.Object,{stateProperties:r,type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(e){e=e||{},this.callSuper("initialize",e),this._initRxRy(),this.x=e.x||0,this.y=e.y||0},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height,u=this.group&&this.group.type!=="group";e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y);var a=t!==0||n!==0;e.moveTo(r+t,i),e.lineTo(r+s-t,i),a&&e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),a&&e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),a&&e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),a&&e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")})},toSVG:function(){var e=this._createBaseSVGMarkup();return e.push("'),e.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,r){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=i(s);var o=new t.Rect(n(r?t.util.object.clone(r):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed,r=t.util.array.min;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(){var e=[],t=this._createBaseSVGMarkup();for(var r=0,i=this.points.length;r'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n"},toObject:function(e){var t=s(this.callSuper("toObject",e),{path:this.path,pathOffset:this.pathOffset});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(){var e=[],t=this._createBaseSVGMarkup();for(var n=0,r=this.path.length;n',"",""),t.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n=[],r,i,s=/(-?\.\d+)|(-?\d+(\.\d+)?)/g,o,u;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var n=0,r=e.length;n"),t.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},toGrayscale:function(){var e=this.paths.length;while(e--)this.paths[e].toGrayscale();return this},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e,n){typeof e.paths=="string"?t.loadSVGFromURL(e.paths,function(r){var i=e.paths;delete e.paths;var s=t.util.groupSVGElements(r,e,i);n(s)}):t.util.enlivenObjects(e.paths,function(r){delete e.paths,n(new t.PathGroup(r,e))})},t.PathGroup.async=!0}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){var e=this.left,t=this.top;this.forEachObject(function(n){var r=n.get("left"),i=n.get("top");n.set("originalLeft",r),n.set("originalTop",i),n.set("left",r-e),n.set("top",i-t),n.setCoords(),n.__origHasControls=n.hasControls,n.hasControls=!1},this)},toString:function(){return"#"},getObjects:function(){return this._objects},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e);var r=Math.max(this.scaleX,this.scaleY);this.clipTo&&t.util.clipContext(this,e);for(var i=0,s=this._objects.length;i'+e.join("")+""},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','');if(this.stroke||this.strokeDashArray){var t=this.fill;this.fill=null,e.push("'),this.fill=t}return e.push(""),e.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this._element=this._originalElement,e&&e();return}var t=this._originalElement,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;return n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height,fabric.isLikelyNode?(r.src=n.toBuffer(undefined,fabric.Image.pngCompression),i._element=r,e&&e()):(r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png")),this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e,t){e.filters&&e.filters.length?fabric.util.enlivenObjects(e.filters,function(e){t&&t(e)},"fabric.Image.filters"):t&&t()},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){var n=fabric.document.createElement("img"),r=e.src;n.onload=function(){fabric.Image.prototype._initFilters.call(e,e,function(r){e.filters=r||[];var i=new fabric.Image(n,e);t&&t(i),n=n.onload=n.onerror=null})},n.onerror=function(){fabric.log("Error loading "+n.src),t&&t(null,!0),n=n.onload=n.onerror=null},n.src=r},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))})},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0,fabric.Image.pngCompression=1}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.BaseFilter=fabric.util.createClass({type:"BaseFilter",toObject:function(){return{type:this.type}},toJSON:function(){return this.toObject()}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend;t.Image.filters.Brightness=t.util.createClass(t.Image.filters.BaseFilter,{type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;s=0&&N=0&&C-1?e.channel:0},applyTo:function(e){if(!this.mask)return;var n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=r.data,s=this.mask.getElement(),o=t.util.createCanvasElement(),u=this.channel,a,f=r.width*r.height*4;o.width=s.width,o.height=s.height,o.getContext("2d").drawImage(s,0,0,s.width,s.height);var l=o.getContext("2d").getImageData(0,0,s.width,s.height),c=l.data;for(a=0;ao&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toObject:function(){return n(this.callSuper("toObject"),{color:this.color})}}),t.Image.filters.Tint.fromObject=function(e){return new t.Image.filters.Tint(e)}}(typeof exports!="undefined"?exports:this),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","text","textDecoration","textAlign","fontStyle","lineHeight","backgroundColor","textBackgroundColor","useNative","path"),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:"",textAlign:"left",fontStyle:"",lineHeight:1.3,backgroundColor:"",textBackgroundColor:"",path:null,useNative:!0,stateProperties:o,stroke:null,shadow:null,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.clipTo&&t.util.clipContext(this,e),this._renderTextBackground(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),e.save(),this._setShadow(e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this._removeShadow(e),e.restore(),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this.clipTo&&e.restore(),this._setBoundaries(e,n),this._totalLineHeight=0},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_drawChars:function(e,t,n,r,i){t[e](n,r,i)},_drawTextLine:function(e,t,n,r,i,s){if(this.textAlign!=="justify"){this._drawChars(e,t,n,r,i,s);return}var o=t.measureText(n).width,u=this.width;if(u>o){var a=n.split(/\s+/),f=t.measureText(n.replace(/\s+/g,"")).width,l=u-f,c=a.length-1,h=l/c,p=0;for(var d=0,v=a.length;d-1&&i(this.fontSize*this.lineHeight),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize*this.lineHeight-s),this.textDecoration.indexOf("overline")>-1&&i(s)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(e,t){if(!this.visible)return;e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){return n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textAlign:this.textAlign,path:this.path,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u=1;if(!this.shadow||!this._boundaries)return r;for(s=0,o=n.length;s",t.util.string.escapeXml(n[s]),""),u=1}else u++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;this.backgroundColor&&this._boundaries&&o.push("');for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.textBackgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},setColor:function(e){return this.set("fill",e),this},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Text.prototype,{_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.shadow&&this.shadow.toString(),textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,n=null,this.setCoords()},_initDummyElementForCufon:function(){var e=fabric.document.createElement("pre"),t=fabric.document.createElement("div");return t.appendChild(e),typeof G_vmlCanvasManager=="undefined"?e.innerHTML=this.text:e.innerText=this.text.replace(/\r?\n/gi,"\r"),e.style.fontSize=this.fontSize+"px",e.style.letterSpacing="normal",e}}),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs");n.readFile(e,function(e,n){if(e)throw fabric.log(e),e;t(n)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&(e instanceof Buffer||e.indexOf("data")===0)?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e&&request(e,"binary",r)},fabric.loadSVGFromURL=function(e,t,n){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t,n)}):request(e,"",function(e){fabric.loadSVGFromString(e,t,n)})},fabric.loadSVGFromString=function(e,t,n){var r=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(r.documentElement,function(e,n){t&&t(e,n)},n)},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e,function(e){r.filters=e||[],t&&t(r)})})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file +},toObject:function(){return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY}}}),t.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/}(typeof exports!="undefined"?exports:this),function(){"use strict";if(fabric.StaticCanvas){fabric.warn("fabric.StaticCanvas is already defined.");return}var e=fabric.util.object.extend,t=fabric.util.getElementOffset,n=fabric.util.removeFromArray,r=fabric.util.removeListener,i=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass({initialize:function(e,t){t||(t={}),this._initStatic(e,t),fabric.StaticCanvas.activeInstance=this},backgroundColor:"",backgroundImage:"",backgroundImageOpacity:1,backgroundImageStretch:!0,overlayImage:"",overlayImageLeft:0,overlayImageTop:0,includeDefaultValues:!0,stateful:!0,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!1,onBeforeScaleRotate:function(){},_initStatic:function(e,t){this._objects=[],this._createLowerCanvas(e),this._initOptions(t),t.overlayImage&&this.setOverlayImage(t.overlayImage,this.renderAll.bind(this)),t.backgroundImage&&this.setBackgroundImage(t.backgroundImage,this.renderAll.bind(this)),t.backgroundColor&&this.setBackgroundColor(t.backgroundColor,this.renderAll.bind(this)),this.calcOffset()},calcOffset:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(e,t,n){return fabric.util.loadImage(e,function(e){this.overlayImage=e,n&&"overlayImageLeft"in n&&(this.overlayImageLeft=n.overlayImageLeft),n&&"overlayImageTop"in n&&(this.overlayImageTop=n.overlayImageTop),t&&t()},this),this},setBackgroundImage:function(e,t,n){return fabric.util.loadImage(e,function(e){this.backgroundImage=e,n&&"backgroundImageOpacity"in n&&(this.backgroundImageOpacity=n.backgroundImageOpacity),n&&"backgroundImageStretch"in n&&(this.backgroundImageStretch=n.backgroundImageStretch),t&&t()},this),this},setBackgroundColor:function(e,t){if(e.source){var n=this;fabric.util.loadImage(e.source,function(r){n.backgroundColor=new fabric.Pattern({source:r,repeat:e.repeat}),t&&t()})}else this.backgroundColor=e,t&&t();return this},_createCanvasElement:function(){var e=fabric.document.createElement("canvas");e.style||(e.style={});if(!e)throw i;return this._initCanvasElement(e),e},_initCanvasElement:function(e){fabric.util.createCanvasElement(e);if(typeof e.getContext=="undefined")throw i},_initOptions:function(e){for(var t in e)this[t]=e[t];this.width=parseInt(this.lowerCanvasEl.width,10)||0,this.height=parseInt(this.lowerCanvasEl.height,10)||0;if(!this.lowerCanvasEl.style)return;this.lowerCanvasEl.style.width=this.width+"px",this.lowerCanvasEl.style.height=this.height+"px"},_createLowerCanvas:function(e){this.lowerCanvasEl=fabric.util.getById(e)||this._createCanvasElement(),this._initCanvasElement(this.lowerCanvasEl),fabric.util.addClass(this.lowerCanvasEl,"lower-canvas"),this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(e){return this._setDimension("width",e)},setHeight:function(e){return this._setDimension("height",e)},setDimensions:function(e){for(var t in e)this._setDimension(t,e[t]);return this},_setDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.lowerCanvasEl.style[e]=t+"px",this.upperCanvasEl&&(this.upperCanvasEl[e]=t,this.upperCanvasEl.style[e]=t+"px"),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t+"px"),this[e]=t,this.calcOffset(),this.renderAll(),this},getElement:function(){return this.lowerCanvasEl},getActiveObject:function(){return null},getActiveGroup:function(){return null},_draw:function(e,t){if(!t)return;if(this.controlsAboveOverlay){var n=t.hasBorders,r=t.hasControls;t.hasBorders=t.hasControls=!1,t.render(e),t.hasBorders=n,t.hasControls=r}else t.render(e)},_onObjectAdded:function(e){this.stateful&&e.setupState(),e.setCoords(),e.canvas=this,this.fire("object:added",{target:e}),e.fire("added")},_onObjectRemoved:function(e){this.fire("object:removed",{target:e}),e.fire("removed")},getObjects:function(){return this._objects},clearContext:function(e){return e.clearRect(0,0,this.width,this.height),this},getContext:function(){return this.contextContainer},clear:function(){return this._objects.length=0,this.discardActiveGroup&&this.discardActiveGroup(),this.discardActiveObject&&this.discardActiveObject(),this.clearContext(this.contextContainer),this.contextTop&&this.clearContext(this.contextTop),this.fire("canvas:cleared"),this.renderAll(),this},renderAll:function(e){var t=this[e===!0&&this.interactive?"contextTop":"contextContainer"];this.contextTop&&this.selection&&!this._groupSelector&&this.clearContext(this.contextTop),e||this.clearContext(t),this.fire("before:render"),this.clipTo&&fabric.util.clipContext(this,t),this.backgroundColor&&(t.fillStyle=this.backgroundColor.toLive?this.backgroundColor.toLive(t):this.backgroundColor,t.fillRect(this.backgroundColor.offsetX||0,this.backgroundColor.offsetY||0,this.width,this.height)),typeof this.backgroundImage=="object"&&this._drawBackroundImage(t);var n=this.getActiveGroup();for(var r=0,i=this._objects.length;r','\n'),t.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),""),this.backgroundColor&&this.backgroundColor.source&&t.push('"),this.backgroundImage&&t.push(''),this.overlayImage&&t.push('');var n=this.getActiveGroup();n&&this.discardActiveGroup();for(var r=0,i=this.getObjects(),s=i.length;r"),t.join("")},remove:function(e){return this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared")),fabric.Collection.remove.call(this,e)},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e,t){var r=this._objects.indexOf(e);if(r!==0){var i;if(t){i=r;for(var s=r-1;s>=0;--s){var o=e.intersectsWithObject(this._objects[s])||e.isContainedWithinObject(this._objects[s])||this._objects[s].isContainedWithinObject(e);if(o){i=s;break}}}else i=r-1;n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},bringForward:function(e,t){var r=this._objects.indexOf(e);if(r!==this._objects.length-1){var i;if(t){i=r;for(var s=r+1;s"}}),e(fabric.StaticCanvas.prototype,fabric.Observable),e(fabric.StaticCanvas.prototype,fabric.Collection),e(fabric.StaticCanvas.prototype,fabric.DataURLExporter),e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;a0&&(t>this.targetFindTolerance?t-=this.targetFindTolerance:t=0,n>this.targetFindTolerance?n-=this.targetFindTolerance:n=0);var o=!0,u=r.getImageData(t,n,this.targetFindTolerance*2||1,this.targetFindTolerance*2||1);for(var a=3,f=u.data.length;ao.padding?l.x<0?l.x+=o.padding:l.x-=o.padding:l.x=0,i(l.y)>o.padding?l.y<0?l.y+=o.padding:l.y-=o.padding:l.y=0;var c=o.scaleX,h=o.scaleY;if(n==="equally"&&!u&&!a){var p=l.y+l.x,d=(o.height+o.strokeWidth)*r.original.scaleY+(o.width+o.strokeWidth)*r.original.scaleX;c=r.original.scaleX*p/d,h=r.original.scaleY*p/d,o.set("scaleX",c),o.set("scaleY",h)}else n?n==="x"&&!o.get("lockUniScaling")?(c=l.x/(o.width+o.strokeWidth),u||o.set("scaleX",c)):n==="y"&&!o.get("lockUniScaling")&&(h=l.y/(o.height+o.strokeWidth),a||o.set("scaleY",h)):(c=l.x/(o.width+o.strokeWidth),h=l.y/(o.height+o.strokeWidth),u||o.set("scaleX",c),a||o.set("scaleY",h));c<0&&(r.originX==="left"?r.originX="right":r.originX==="right"&&(r.originX="left")),h<0&&(r.originY==="top"?r.originY="bottom":r.originY==="bottom"&&(r.originY="top")),o.setPositionByOrigin(f,r.originX,r.originY)},_rotateObject:function(e,t){var i=this._currentTransform,s=this._offset;if(i.target.get("lockRotation"))return;var o=r(i.ey-i.top-s.top,i.ex-i.left-s.left),u=r(t-i.top-s.top,e-i.left-s.left),a=n(u-o+i.theta);a<0&&(a=360+a),i.target.angle=a},_setCursor:function(e){this.upperCanvasEl.style.cursor=e},_resetObjectTransform:function(e){e.scaleX=1,e.scaleY=1,e.setAngle(0)},_drawSelection:function(){var e=this.contextTop,t=this._groupSelector,n=t.left,r=t.top,s=i(n),o=i(r);e.fillStyle=this.selectionColor,e.fillRect(t.ex-(n>0?0:-n),t.ey-(r>0?0:-r),s,o),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var a=t.ex+u-(n>0?0:s),f=t.ey+u-(r>0?0:o);e.beginPath(),fabric.util.drawDashedLine(e,a,f,a+s,f,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f+o-1,a+s,f+o-1,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f,a,f+o,this.selectionDashArray),fabric.util.drawDashedLine(e,a+s-1,f,a+s-1,f+o,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+u-(n>0?0:s),t.ey+u-(r>0?0:o),s,o)},_findSelectedObjects:function(e){var t=[],n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,u=r+this._groupSelector.top,a,f=new fabric.Point(s(n,i),s(r,u)),l=new fabric.Point(o(n,i),o(r,u)),c=n===i&&r===u;for(var h=this._objects.length;h--;){a=this._objects[h];if(!a)continue;if(a.intersectsWithRect(f,l)||a.isContainedWithinRect(f,l)||a.containsPoint(f)||a.containsPoint(l))if(this.selection&&a.selectable){a.set("active",!0),t.push(a);if(c)break}}t.length===1?this.setActiveObject(t[0],e):t.length>1&&(t=new fabric.Group(t.reverse()),this.setActiveGroup(t),t.saveCoords(),this.fire("selection:created",{target:t}),this.renderAll())},findTarget:function(e,t){if(this.skipTargetFind)return;var n,r=this.getPointer(e);if(this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(e,this._offset))return n=this.lastRenderedObjectWithControlsAboveOverlay,n;var i=this.getActiveGroup();if(i&&!t&&this.containsPoint(e,i))return n=i,n;var s=[];for(var o=this._objects.length;o--;)if(this._objects[o]&&this._objects[o].visible&&this._objects[o].selectable&&this.containsPoint(e,this._objects[o])){if(!this.perPixelTargetFind&&!this._objects[o].perPixelTargetFind){n=this._objects[o],this.relatedTarget=n;break}s[s.length]=this._objects[o]}for(var u=0,a=s.length;u"},get:function(e){return this[e]},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"&&e!=="clipTo"?this._set(e,t(this.get(e))):this._set(e,t);return this},_set:function(e,n){var i=e==="scaleX"||e==="scaleY";return i&&(n=this._constrainScale(n)),e==="scaleX"&&n<0?(this.flipX=!this.flipX,n*=-1):e==="scaleY"&&n<0?(this.flipY=!this.flipY,n*=-1):e==="width"||e==="height"?this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2):e==="shadow"&&n&&!(n instanceof t.Shadow)&&(n=new t.Shadow(n)),this[e]=n,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save();var r=this.transformMatrix;r&&!this.group&&e.setTransform(r[0],r[1],r[2],r[3],r[4],r[5]),n||this.transform(e),this.stroke&&(e.lineWidth=this.strokeWidth,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,e.strokeStyle=this.stroke.toLive?this.stroke.toLive(e):this.stroke),this.overlayFill?e.fillStyle=this.overlayFill:this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill),r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_renderFill:function(e){if(!this.fill)return;this.fill.toLive&&(e.save(),e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0)),e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke)return;e.save(),this.strokeDashArray?(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),o?(e.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(e)):this._renderDashedStroke&&this._renderDashedStroke(e),e.stroke()):this._stroke?this._stroke(e):e.stroke(),this._removeShadow(e),e.restore()},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){var n=this.toDataURL();return t.util.loadImage(n,function(n){e&&e(new t.Image(n))}),this},toDataURL:function(e){e||(e={});var n=t.util.createCanvasElement();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))},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.centerH().centerV()},remove:function(){return this.canvas.remove(this)},sendToBack:function(){return this.group?t.StaticCanvas.prototype.sendToBack.call(this.group,this):this.canvas.sendToBack(this),this},bringToFront:function(){return this.group?t.StaticCanvas.prototype.bringToFront.call(this.group,this):this.canvas.bringToFront(this),this},sendBackwards:function(e){return this.group?t.StaticCanvas.prototype.sendBackwards.call(this.group,this,e):this.canvas.sendBackwards(this,e),this},bringForward:function(e){return this.group?t.StaticCanvas.prototype.bringForward.call(this.group,this,e):this.canvas.bringForward(this,e),this},moveTo:function(e){return this.group?t.StaticCanvas.prototype.moveTo.call(this.group,this,e):this.canvas.moveTo(this,e),this}}),t.util.createAccessors(t.Object),t.Object.prototype.rotate=t.Object.prototype.setAngle,n(t.Object.prototype,t.Observable),t.Object.NUM_FRACTION_DIGITS=2,t.Object.__uid=0}(typeof exports!="undefined"?exports:this),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{translateToCenterPoint:function(t,n,r){var i=t.x,s=t.y;return n==="left"?i=t.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"&&(i=t.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2),r==="top"?s=t.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"&&(s=t.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},translateToOriginPoint:function(t,n,r){var i=t.x,s=t.y;return n==="left"?i=t.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"&&(i=t.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2),r==="top"?s=t.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"&&(s=t.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},getCenterPoint:function(){return this.translateToCenterPoint(new fabric.Point(this.left,this.top),this.originX,this.originY)},toLocalPoint:function(t,n,r){var i=this.getCenterPoint(),s,o;return n!==undefined&&r!==undefined?(n==="left"?s=i.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"?s=i.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2:s=i.x,r==="top"?o=i.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"?o=i.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2:o=i.y):(s=this.left,o=this.top),fabric.util.rotatePoint(new fabric.Point(t.x,t.y),i,-e(this.angle)).subtractEquals(new fabric.Point(s,o))},setPositionByOrigin:function(e,t,n){var r=this.translateToCenterPoint(e,t,n),i=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",i.x),this.set("top",i.y)},adjustPosition:function(t){var n=e(this.angle),r=this.getWidth()/2,i=Math.cos(n)*r,s=Math.sin(n)*r,o=this.getWidth(),u=Math.cos(n)*o,a=Math.sin(n)*o;this.originX==="center"&&t==="left"||this.originX==="right"&&t==="center"?(this.left-=i,this.top-=s):this.originX==="left"&&t==="center"||this.originX==="center"&&t==="right"?(this.left+=i,this.top+=s):this.originX==="left"&&t==="right"?(this.left+=u,this.top+=a):this.originX==="right"&&t==="left"&&(this.left-=u,this.top-=a),this.setCoords(),this.originX=t},_getLeftTopCoords:function(){var t=e(this.angle),n=this.getWidth()/2,r=Math.cos(t)*n,i=Math.sin(t)*n,s=this.left,o=this.top;if(this.originX==="center"||this.originX==="right")s-=r;if(this.originY==="center"||this.originY==="bottom")o-=i;return{x:s,y:o}}})}(),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{oCoords:null,intersectsWithRect:function(e,t){var n=this.oCoords,r=new fabric.Point(n.tl.x,n.tl.y),i=new fabric.Point(n.tr.x,n.tr.y),s=new fabric.Point(n.bl.x,n.bl.y),o=new fabric.Point(n.br.x,n.br.y),u=fabric.Intersection.intersectPolygonRectangle([r,i,o,s],e,t);return u.status==="Intersection"},intersectsWithObject:function(e){function t(e){return{tl:new fabric.Point(e.tl.x,e.tl.y),tr:new fabric.Point(e.tr.x,e.tr.y),bl:new fabric.Point(e.bl.x,e.bl.y),br:new fabric.Point(e.br.x,e.br.y)}}var n=t(this.oCoords),r=t(e.oCoords),i=fabric.Intersection.intersectPolygonPolygon([n.tl,n.tr,n.br,n.bl],[r.tl,r.tr,r.br,r.bl]);return i.status==="Intersection"},isContainedWithinObject:function(e){var t=e.getBoundingRect(),n=new fabric.Point(t.left,t.top),r=new fabric.Point(t.left+t.width,t.top+t.height);return this.isContainedWithinRect(n,r)},isContainedWithinRect:function(e,t){var n=this.getBoundingRect();return n.left>e.x&&n.left+n.widthe.y&&n.top+n.height=e.y&&f.d.y>=e.y)continue;f.o.x===f.d.x&&f.o.x>=e.x?(o=f.o.x,u=e.y):(n=0,r=(f.d.y-f.o.y)/(f.d.x-f.o.x),i=e.y-n*e.x,s=f.o.y-r*f.o.x,o=-(i-s)/(n-r),u=i+n*o),o>=e.x&&(a+=1);if(a===2)break}return a},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],t=fabric.util.array.min(e),n=fabric.util.array.max(e),r=Math.abs(t-n),i=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],s=fabric.util.array.min(i),o=fabric.util.array.max(i),u=Math.abs(s-o);return{left:t,top:s,width:r,height:u}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(e){return Math.abs(e)1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x:m.x,y:m.y};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords&&this._setCornerCoords(),this}})}(),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this.get(e)!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner),o=this._findCrossPoints({x:i,y:s},u);if(o!==0&&o%2===1)return this.__corner=a,a}return!1},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=~~(this.strokeWidth/2)*2;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)-.5,~~(-(u/2)-t-r/2*this.scaleY)-.5,~~(o+n+r*this.scaleX)+1,~~(u+n+r*this.scaleY)+1);if(this.hasRotatingPoint&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;var t=this.cornerSize,n=t/2,r=~~(this.strokeWidth/2),i=-(this.width/2),s=-(this.height/2),o,u,a=t/this.scaleX,f=t/this.scaleY,l=this.padding/this.scaleX,c=this.padding/this.scaleY,h=n/this.scaleY,p=n/this.scaleX,d=(n-t)/this.scaleX,v=(n-t)/this.scaleY,m=this.height,g=this.width,y=this.transparentCorners?"strokeRect":"fillRect",b=this.transparentCorners,w=typeof G_vmlCanvasManager!="undefined";return e.save(),e.lineWidth=1/Math.max(this.scaleX,this.scaleY),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=e.fillStyle=this.cornerColor,o=i-p-r-l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),this.get("lockUniScaling")||(o=i+g/2-p,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),this.hasRotatingPoint&&(o=i+g/2-p,u=this.flipY?s+m+this.rotatingPointOffset/this.scaleY-f/2+r+c:s-this.rotatingPointOffset/this.scaleY-f/2-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),e.restore(),this}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("left"),endValue:this.getCenter().left,duration:this.FX_DURATION,onChange:function(t){e.set("left",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxCenterObjectV:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("top"),endValue:this.getCenter().top,duration:this.FX_DURATION,onChange:function(t){e.set("top",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxRemove:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("opacity"),endValue:0,duration:this.FX_DURATION,onStart:function(){e.set("active",!1)},onChange:function(t){e.set("opacity",t),s.renderAll(),i()},onComplete:function(){s.remove(e),r()}}),this}}),fabric.util.object.extend(fabric.Object.prototype,{animate:function(){if(arguments[0]&&typeof arguments[0]=="object"){var e=[],t,n;for(t in arguments[0])e.push(t);for(var r=0,i=e.length;r'),e.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e)},_set:function(e,t){return this.callSuper("_set",e,t),e==="radius"&&this.setRadius(t),this},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(){var e=this._createBaseSVGMarkup();return e.push("'),e.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(){var e=this._createBaseSVGMarkup(),t=this.width/2,n=this.height/2,r=[-t+" "+n,"0 "+ -n,t+" "+n].join(",");return e.push("'),e.join("")},complexity:function(){return 1}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){var e=this._createBaseSVGMarkup();return e.push("'),e.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this._renderFill(e),this._renderStroke(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}var r=t.Object.prototype.stateProperties.concat();r.push("rx","ry"),t.Rect=t.util.createClass(t.Object,{stateProperties:r,type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(e){e=e||{},this.callSuper("initialize",e),this._initRxRy(),this.x=e.x||0,this.y=e.y||0},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height,u=this.group&&this.group.type!=="group";e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y);var a=t!==0||n!==0;e.moveTo(r+t,i),e.lineTo(r+s-t,i),a&&e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),a&&e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),a&&e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),a&&e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")})},toSVG:function(){var e=this._createBaseSVGMarkup();return e.push("'),e.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,r){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=i(s);var o=new t.Rect(n(r?t.util.object.clone(r):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed,r=t.util.array.min;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(){var e=[],t=this._createBaseSVGMarkup();for(var r=0,i=this.points.length;r'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n"},toObject:function(e){var t=s(this.callSuper("toObject",e),{path:this.path,pathOffset:this.pathOffset});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(){var e=[],t=this._createBaseSVGMarkup();for(var n=0,r=this.path.length;n',"",""),t.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n=[],r,i,s=/(-?\.\d+)|(-?\d+(\.\d+)?)/g,o,u;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var n=0,r=e.length;n"),t.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},toGrayscale:function(){var e=this.paths.length;while(e--)this.paths[e].toGrayscale();return this},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e,n){typeof e.paths=="string"?t.loadSVGFromURL(e.paths,function(r){var i=e.paths;delete e.paths;var s=t.util.groupSVGElements(r,e,i);n(s)}):t.util.enlivenObjects(e.paths,function(r){delete e.paths,n(new t.PathGroup(r,e))})},t.PathGroup.async=!0}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){var e=this.left,t=this.top;this.forEachObject(function(n){var r=n.get("left"),i=n.get("top");n.set("originalLeft",r),n.set("originalTop",i),n.set("left",r-e),n.set("top",i-t),n.setCoords(),n.__origHasControls=n.hasControls,n.hasControls=!1},this)},toString:function(){return"#"},getObjects:function(){return this._objects},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e);var r=Math.max(this.scaleX,this.scaleY);this.clipTo&&t.util.clipContext(this,e);for(var i=0,s=this._objects.length;i'+e.join("")+""},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','');if(this.stroke||this.strokeDashArray){var t=this.fill;this.fill=null,e.push("'),this.fill=t}return e.push(""),e.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this._element=this._originalElement,e&&e();return}var t=this._originalElement,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;return n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height,fabric.isLikelyNode?(r.src=n.toBuffer(undefined,fabric.Image.pngCompression),i._element=r,e&&e()):(r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png")),this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e,t){e.filters&&e.filters.length?fabric.util.enlivenObjects(e.filters,function(e){t&&t(e)},"fabric.Image.filters"):t&&t()},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){var n=fabric.document.createElement("img"),r=e.src;n.onload=function(){fabric.Image.prototype._initFilters.call(e,e,function(r){e.filters=r||[];var i=new fabric.Image(n,e);t&&t(i),n=n.onload=n.onerror=null})},n.onerror=function(){fabric.log("Error loading "+n.src),t&&t(null,!0),n=n.onload=n.onerror=null},n.src=r},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))})},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0,fabric.Image.pngCompression=1}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.BaseFilter=fabric.util.createClass({type:"BaseFilter",toObject:function(){return{type:this.type}},toJSON:function(){return this.toObject()}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend;t.Image.filters.Brightness=t.util.createClass(t.Image.filters.BaseFilter,{type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;s=0&&N=0&&C-1?e.channel:0},applyTo:function(e){if(!this.mask)return;var n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=r.data,s=this.mask.getElement(),o=t.util.createCanvasElement(),u=this.channel,a,f=r.width*r.height*4;o.width=s.width,o.height=s.height,o.getContext("2d").drawImage(s,0,0,s.width,s.height);var l=o.getContext("2d").getImageData(0,0,s.width,s.height),c=l.data;for(a=0;ao&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toObject:function(){return n(this.callSuper("toObject"),{color:this.color})}}),t.Image.filters.Tint.fromObject=function(e){return new t.Image.filters.Tint(e)}}(typeof exports!="undefined"?exports:this),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","text","textDecoration","textAlign","fontStyle","lineHeight","backgroundColor","textBackgroundColor","useNative","path"),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:"",textAlign:"left",fontStyle:"",lineHeight:1.3,backgroundColor:"",textBackgroundColor:"",path:null,useNative:!0,stateProperties:o,stroke:null,shadow:null,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.clipTo&&t.util.clipContext(this,e),this._renderTextBackground(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),e.save(),this._setShadow(e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this._removeShadow(e),e.restore(),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this.clipTo&&e.restore(),this._setBoundaries(e,n),this._totalLineHeight=0},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_drawChars:function(e,t,n,r,i){t[e](n,r,i)},_drawTextLine:function(e,t,n,r,i,s){if(this.textAlign!=="justify"){this._drawChars(e,t,n,r,i,s);return}var o=t.measureText(n).width,u=this.width;if(u>o){var a=n.split(/\s+/),f=t.measureText(n.replace(/\s+/g,"")).width,l=u-f,c=a.length-1,h=l/c,p=0;for(var d=0,v=a.length;d-1&&i(this.fontSize*this.lineHeight),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize*this.lineHeight-s),this.textDecoration.indexOf("overline")>-1&&i(s)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(e,t){if(!this.visible)return;e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){return n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textAlign:this.textAlign,path:this.path,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u=1;if(!this.shadow||!this._boundaries)return r;for(s=0,o=n.length;s",t.util.string.escapeXml(n[s]),""),u=1}else u++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;this.backgroundColor&&this._boundaries&&o.push("');for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.textBackgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},setColor:function(e){return this.set("fill",e),this},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Text.prototype,{_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.shadow&&this.shadow.toString(),textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,n=null,this.setCoords()},_initDummyElementForCufon:function(){var e=fabric.document.createElement("pre"),t=fabric.document.createElement("div");return t.appendChild(e),typeof G_vmlCanvasManager=="undefined"?e.innerHTML=this.text:e.innerText=this.text.replace(/\r?\n/gi,"\r"),e.style.fontSize=this.fontSize+"px",e.style.letterSpacing="normal",e}}),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs");n.readFile(e,function(e,n){if(e)throw fabric.log(e),e;t(n)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&(e instanceof Buffer||e.indexOf("data")===0)?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e&&request(e,"binary",r)},fabric.loadSVGFromURL=function(e,t,n){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t,n)}):request(e,"",function(e){fabric.loadSVGFromString(e,t,n)})},fabric.loadSVGFromString=function(e,t,n){var r=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(r.documentElement,function(e,n){t&&t(e,n)},n)},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e,function(e){r.filters=e||[],t&&t(r)})})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file diff --git a/dist/all.min.js.gz b/dist/all.min.js.gz index 8cd6860bb01ab3f2f3015510d876fd220009c064..12864766d382ece4eb3ada2c310a0ddf0b511089 100644 GIT binary patch delta 34088 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 delta 34106 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