From 35d5cf220f1e803526b4c111295b76eaf154c3ab Mon Sep 17 00:00:00 2001 From: kangax Date: Wed, 1 May 2013 14:49:02 -0400 Subject: [PATCH] [BACK_INCOMPAT] Make `fabric.Object#toDataURL` synchronous. Fix `fabric.Object#cloneAsImage` to preserve angle. Closes #596 --- dist/all.js | 62 +++++++++++++++++--------------------------- dist/all.min.js | 6 ++--- dist/all.min.js.gz | Bin 47704 -> 47673 bytes src/object.class.js | 62 +++++++++++++++++--------------------------- test/unit/object.js | 12 +++------ 5 files changed, 55 insertions(+), 87 deletions(-) diff --git a/dist/all.js b/dist/all.js index b67f79c4..4e14c08a 100644 --- a/dist/all.js +++ b/dist/all.js @@ -10322,37 +10322,23 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.Stati * Creates an instance of fabric.Image out of an object * @param callback {Function} callback, invoked with an instance as a first argument * @return {fabric.Object} thisArg - * @chainable */ cloneAsImage: function(callback) { - if (fabric.Image) { - var orig = { - angle: this.getAngle(), - flipX: this.getFlipX(), - flipY: this.getFlipY() - }; - - // normalize angle - this.set({ angle: 0, flipX: false, flipY: false }); - this.toDataURL(function(dataUrl) { - fabric.util.loadImage(dataUrl, function(img) { - if (callback) { - callback(new fabric.Image(img), orig); - } - }); - }); - - } + var dataUrl = this.toDataURL(); + fabric.util.loadImage(dataUrl, function(img) { + if (callback) { + callback(new fabric.Image(img)); + } + }); return this; }, /** * Converts an object into a data-url-like string - * @param callback {Function} callback that recieves resulting data-url string + * @return {String} data url representing an image of this object */ - toDataURL: function(callback) { + toDataURL: function() { var el = fabric.util.createCanvasElement(); - el.width = this.getBoundingRectWidth(); el.height = this.getBoundingRectHeight(); @@ -10362,27 +10348,27 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.Stati canvas.backgroundColor = 'transparent'; canvas.renderAll(); - if (this.constructor.async) { - this.clone(proceed); - } - else { - proceed(this.clone()); - } + var origParams = { + active: this.get('active'), + left: this.getLeft(), + top: this.getTop() + }; - function proceed(clone) { - clone.left = el.width / 2; - clone.top = el.height / 2; + this.set({ + 'active': false, + left: el.width / 2, + top: el.height / 2 + }); - clone.set('active', false); + canvas.add(this); + var data = canvas.toDataURL(); - canvas.add(clone); - var data = canvas.toDataURL(); + this.set(origParams).setCoords(); - canvas.dispose(); - canvas = clone = null; + canvas.dispose(); + canvas = null; - callback && callback(data); - } + return data; }, /** diff --git a/dist/all.min.js b/dist/all.min.js index 34a7d2c3..4be06932 100644 --- a/dist/all.min.js +++ b/dist/all.min.js @@ -1,6 +1,6 @@ /* build: `node build.js modules=ALL exclude=gestures` *//*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"1.1.10"};typeof exports!="undefined"&&(exports.fabric=fabric),typeof document!="undefined"&&typeof window!="undefined"?(fabric.document=document,fabric.window=window):(fabric.document=require("jsdom").jsdom(""),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined";var Cufon=function(){function r(e){var t=this.face=e.face;this.glyphs=e.glyphs,this.w=e.w,this.baseSize=parseInt(t["units-per-em"],10),this.family=t["font-family"].toLowerCase(),this.weight=t["font-weight"],this.style=t["font-style"]||"normal",this.viewBox=function(){var e=t.bbox.split(/\s+/),n={minX:parseInt(e[0],10),minY:parseInt(e[1],10),maxX:parseInt(e[2],10),maxY:parseInt(e[3],10)};return n.width=n.maxX-n.minX,n.height=n.maxY-n.minY,n.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")},n}(),this.ascent=-parseInt(t.ascent,10),this.descent=-parseInt(t.descent,10),this.height=-this.ascent+this.descent}function i(){var e={},t={oblique:"italic",italic:"oblique"};this.add=function(t){(e[t.style]||(e[t.style]={}))[t.weight]=t},this.get=function(n,r){var i=e[n]||e[t[n]]||e.normal||e.italic||e.oblique;if(!i)return null;r={normal:400,bold:700}[r]||parseInt(r,10);if(i[r])return i[r];var s={1:1,99:0}[r%100],o=[],u,a;s===undefined&&(s=r>400),r==500&&(r=400);for(var f in i){f=parseInt(f,10);if(!u||fa)a=f;o.push(f)}return ra&&(r=a),o.sort(function(e,t){return(s?e>r&&t>r?et:et:e=i.length+e?r():setTimeout(arguments.callee,10)}),function(t){e?t():n.push(t)}}(),supports:function(e,t){var n=fabric.document.createElement("span").style;return n[e]===undefined?!1:(n[e]=t,n[e]===t)},textAlign:function(e,t,n,r){return t.get("textAlign")=="right"?n>0&&(e=" "+e):nk&&(k=N),A.push(N),N=0;continue}var O=t.glyphs[T[b]]||t.missingGlyph;if(!O)continue;N+=C=Number(O.w||t.w)+h}A.push(N),N=Math.max(k,N);var M=[];for(var b=A.length;b--;)M[b]=N-A[b];if(C===null)return null;d+=l.width-C,m+=l.minX;var _,D;if(f)_=u,D=u.firstChild;else{_=fabric.document.createElement("span"),_.className="cufon cufon-canvas",_.alt=n,D=fabric.document.createElement("canvas"),_.appendChild(D);if(i.printable){var P=fabric.document.createElement("span");P.className="cufon-alt",P.appendChild(fabric.document.createTextNode(n)),_.appendChild(P)}}var H=_.style,B=D.style||{},j=c.convert(l.height-p+v),F=Math.ceil(j),I=F/j;D.width=Math.ceil(c.convert(N+d-m)*I),D.height=F,p+=l.minY,B.top=Math.round(c.convert(p-t.ascent))+"px",B.left=Math.round(c.convert(m))+"px";var q=Math.ceil(c.convert(N*I)),R=q+"px",U=c.convert(t.height),z=(i.lineHeight-1)*c.convert(-t.ascent/5)*(L-1);Cufon.textOptions.width=q,Cufon.textOptions.height=U*L+z,Cufon.textOptions.lines=L,Cufon.textOptions.totalLineHeight=z,e?(H.width=R,H.height=U+"px"):(H.paddingLeft=R,H.paddingBottom=U-1+"px");var W=Cufon.textOptions.context||D.getContext("2d"),X=F/l.height;Cufon.textOptions.fontAscent=t.ascent*X,Cufon.textOptions.boundaries=null;for(var V=Cufon.textOptions.shadowOffsets,b=y.length;b--;)V[b]=[y[b][0]*X,y[b][1]*X];W.save(),W.scale(X,X),W.translate(-m-1/X*D.width/2+(Cufon.fonts[t.family].offsetLeft||0),-p-Cufon.textOptions.height/X/2+(Cufon.fonts[t.family].offsetTop||0)),W.lineWidth=t.face["underline-thickness"],W.save();var J=Cufon.getTextDecoration(i),K=i.fontStyle==="italic";W.save(),Q();if(g)for(var b=0,w=g.length;b.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}'),function(e,t,i,s,o,u,a){var f=t===null;f&&(t=o.alt);var l=e.viewBox,c=i.computedFontSize||(i.computedFontSize=new Cufon.CSS.Size(n(u,i.get("fontSize"))+"px",e.baseSize)),h=i.computedLSpacing;h==undefined&&(h=i.get("letterSpacing"),i.computedLSpacing=h=h=="normal"?0:~~c.convertFrom(r(u,h)));var p,d;if(f)p=o,d=o.firstChild;else{p=fabric.document.createElement("span"),p.className="cufon cufon-vml",p.alt=t,d=fabric.document.createElement("span"),d.className="cufon-vml-canvas",p.appendChild(d);if(s.printable){var v=fabric.document.createElement("span");v.className="cufon-alt",v.appendChild(fabric.document.createTextNode(t)),p.appendChild(v)}a||p.appendChild(fabric.document.createElement("cvml:shape"))}var m=p.style,g=d.style,y=c.convert(l.height),b=Math.ceil(y),w=b/y,E=l.minX,S=l.minY;g.height=b,g.top=Math.round(c.convert(S-e.ascent)),g.left=Math.round(c.convert(E)),m.height=c.convert(e.height)+"px";var x=Cufon.getTextDecoration(s),T=i.get("color"),N=Cufon.CSS.textTransform(t,i).split(""),C=0,k=0,L=null,A,O,M=s.textShadow;for(var _=0,D=0,P=N.length;_-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)},toGrayscale:function(){return this.forEachObject(function(e){e.toGrayscale()})}},function(){function n(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e}function r(e,t){return Math.floor(Math.random()*(t-e+1))+e}function s(e){return e*i}function o(e){return e/i}function u(e,t,n){var r=Math.sin(n),i=Math.cos(n);e.subtractEquals(t);var s=e.x*i-e.y*r,o=e.x*r+e.y*i;return(new fabric.Point(s,o)).addEquals(t)}function a(e,t){return parseFloat(Number(e).toFixed(t))}function f(){return!1}function l(e){e||(e={});var t=+(new Date),n=e.duration||500,r=t+n,i,s=e.onChange||function(){},o=e.abort||function(){return!1},u=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},a="startValue"in e?e.startValue:0,f="endValue"in e?e.endValue:100,l=e.byValue||f-a;e.onStart&&e.onStart(),function c(){i=+(new Date);var f=i>r?n:i-t;s(u(f,a,l,n));if(i>r||o()){e.onComplete&&e.onComplete();return}h(c)}()}function p(e,t,n){if(e){var r=fabric.util.createImage();r.onload=function(){t&&t.call(n,r),r=r.onload=null},r.src=e}else t&&t.call(n,e)}function d(e,t){function n(e){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(e))]}function r(){++s===o&&t&&t(i)}var i=[],s=0,o=e.length;e.forEach(function(e,t){if(!e.type)return;var s=n(e.type);s.async?s.fromObject(e,function(e,n){n||(i[t]=e),r()}):(i[t]=s.fromObject(e),r())})}function v(e,t,n){var r;return e.length>1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r}function m(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),n[d?"lineTo":"moveTo"](r,0),d=!d;n.restore()}function y(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function b(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function w(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 E(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function S(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]]}var e=Math.sqrt,t=Math.atan2;fabric.util={};var i=Math.PI/180,c=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)},h=function(){return c.apply(fabric.window,arguments)};fabric.util.removeFromArray=n,fabric.util.degreesToRadians=s,fabric.util.radiansToDegrees=o,fabric.util.rotatePoint=u,fabric.util.toFixed=a,fabric.util.getRandomInt=r,fabric.util.falseFunction=f,fabric.util.animate=l,fabric.util.requestAnimFrame=h,fabric.util.loadImage=p,fabric.util.enlivenObjects=d,fabric.util.groupSVGElements=v,fabric.util.populateWithProperties=m,fabric.util.drawDashedLine=g,fabric.util.createCanvasElement=y,fabric.util.createImage=b,fabric.util.createAccessors=w,fabric.util.clipContext=E,fabric.util.multiplyTransformMatrices=S}(),function(){function t(t,n){var r=e.call(arguments,2),i=[];for(var s=0,o=t.length;s=r&&(r=e[n][t]);else while(n--)e[n]>=r&&(r=e[n]);return r}function r(e,t){if(!e||e.length===0)return undefined;var n=e.length-1,r=t?e[n][t]:e[n];if(t)while(n--)e[n][t]>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(t){var n=this.constructor.superclass.prototype[t];return arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this)}function o(){function u(){this.initialize.apply(this,arguments)}var n=null,o=e.call(arguments,0);typeof o[0]=="function"&&(n=o.shift()),u.superclass=n,u.subclasses=[],n&&(i.prototype=n.prototype,u.prototype=new i,n.subclasses.push(u));for(var a=0,f=o.length;a-1?e.prototype[i]=function(e){return function(){var n=this.constructor.superclass;this.constructor.superclass=r;var i=t[e].apply(this,arguments);this.constructor.superclass=n;if(e!=="initialize")return i}}(i):e.prototype[i]=t[i],n&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};fabric.util.createClass=o}(),function(){function e(e){var t=Array.prototype.slice.call(arguments,1),n,r,i=t.length;for(r=0;r-1?s(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if(r==="opacity")s(e,t[r]);else{var i=r==="float"||r==="cssFloat"?typeof n.styleFloat=="undefined"?"cssFloat":"styleFloat":r;n[i]=t[r]}return e}var t=fabric.document.createElement("div"),n=typeof t.style.opacity=="string",r=typeof t.style.filter=="string",i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(e){return e};n?s=function(e,t){return e.style.opacity=t,e}:r&&(s=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+t*100+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+t*100+")",e}),fabric.util.setStyle=e}(),function(){function t(e){return typeof e=="string"?fabric.document.getElementById(e):e}function s(e,t){var n=fabric.document.createElement(e);for(var r in t)r==="class"?n.className=t[r]:r==="for"?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function o(e,t){(" "+e.className+" ").indexOf(" "+t+" ")===-1&&(e.className+=(e.className?" ":"")+t)}function u(e,t,n){return typeof t=="string"&&(t=s(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t}function a(e){var t=0,n=0;do t+=e.offsetTop||0,n+=e.offsetLeft||0,e=e.offsetParent;while(e);return{left:n,top:t}}var e=Array.prototype.slice,n=function(t){return e.call(t,0)},r;try{r=n(fabric.document.childNodes)instanceof Array}catch(i){}r||(n=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t});var f;fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle?f=function(e){return fabric.document.defaultView.getComputedStyle(e,null).position}:f=function(e){var t=e.style.position;return!t&&e.currentStyle&&(t=e.currentStyle.position),t},function(){function n(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=fabric.util.falseFunction),t?e.style[t]="none":typeof e.unselectable=="string"&&(e.unselectable="on"),e}function r(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=null),t?e.style[t]="":typeof e.unselectable=="string"&&(e.unselectable=""),e}var e=fabric.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=n,fabric.util.makeElementSelectable=r}(),function(){function e(e,t){var n=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),i=!0;r.type="text/javascript",r.setAttribute("runat","server"),r.onload=r.onreadystatechange=function(e){if(i){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;i=!1,t(e||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=e,n.appendChild(r)}fabric.util.getScript=e}(),fabric.util.getById=t,fabric.util.toArray=n,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getElementOffset=a,fabric.util.getElementPosition=f}(),function(){function e(e,t){return e+(/\?/.test(e)?"&":"?")+t}function n(){}function r(r,i){i||(i={});var s=i.method?i.method.toUpperCase():"GET",o=i.onComplete||function(){},u=t(),a;return u.onreadystatechange=function(){u.readyState===4&&(o(u),u.onreadystatechange=n)},s==="GET"&&(a=null,typeof i.parameters=="string"&&(r=e(r,i.parameters))),u.open(s,r,!0),(s==="POST"||s==="PUT")&&u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),u.send(a),u}var t=function(){var e=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}];for(var t=e.length;t--;)try{var n=e[t]();if(n)return e[t]}catch(r){}}();fabric.util.request=r}(),function(){function e(e,t,n,r){return n*(e/=r)*e+t}function t(e,t,n,r){return-n*(e/=r)*(e-2)+t}function n(e,t,n,r){return e/=r/2,e<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e,t,n,r){return n*(e/=r)*e*e+t}function i(e,t,n,r){return n*((e=e/r-1)*e*e+1)+t}function s(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e+t:n/2*((e-=2)*e*e+2)+t}function o(e,t,n,r){return n*(e/=r)*e*e*e+t}function u(e,t,n,r){return-n*((e=e/r-1)*e*e*e-1)+t}function a(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e+t:-n/2*((e-=2)*e*e*e-2)+t}function f(e,t,n,r){return n*(e/=r)*e*e*e*e+t}function l(e,t,n,r){return n*((e=e/r-1)*e*e*e*e+1)+t}function c(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e*e+t:n/2*((e-=2)*e*e*e*e+2)+t}function h(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t}function p(e,t,n,r){return n*Math.sin(e/r*(Math.PI/2))+t}function d(e,t,n,r){return-n/2*(Math.cos(Math.PI*e/r)-1)+t}function v(e,t,n,r){return e===0?t:n*Math.pow(2,10*(e/r-1))+t}function m(e,t,n,r){return e===r?t+n:n*(-Math.pow(2,-10*e/r)+1)+t}function g(e,t,n,r){return e===0?t:e===r?t+n:(e/=r/2,e<1?n/2*Math.pow(2,10*(e-1))+t:n/2*(-Math.pow(2,-10*--e)+2)+t)}function y(e,t,n,r){return-n*(Math.sqrt(1-(e/=r)*e)-1)+t}function b(e,t,n,r){return n*Math.sqrt(1-(e=e/r-1)*e)+t}function w(e,t,n,r){return e/=r/2,e<1?-n/2*(Math.sqrt(1-e*e)-1)+t:n/2*(Math.sqrt(1-(e-=2)*e)+1)+t}function E(e,t,n,r){var i=1.70158,s=0,o=n;return e===0?t:(e/=r,e===1?t+n:(s||(s=r*.3),o-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){m.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),m.has(e,function(r){r?m.get(e,function(e){var t=y(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function y(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 b(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 w(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t}function E(e){var t="";return e.backgroundColor&&e.backgroundColor.source&&(t=['',''].join("")),t}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s=t.util.multiplyTransformMatrices,o={cx:"left",x:"left",cy:"top",y:"top",r:"radius","fill-opacity":"opacity","fill-rule":"fillRule","stroke-width":"strokeWidth",transform:"transformMatrix","text-decoration":"textDecoration","font-size":"fontSize","font-weight":"fontWeight","font-style":"fontStyle","font-family":"fontFamily"};t.parseTransformAttribute=function(){function e(e,t){var n=t[0];e[0]=Math.cos(n),e[1]=Math.sin(n),e[2]=-Math.sin(n),e[3]=Math.cos(n)}function 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;c']:this.type==="radial"&&(i=["']);for(var s=0;s');return i.push(this.type==="linear"?"":""),i.join("")}}),fabric.util.object.extend(fabric.Gradient,{fromElement:function(n,r){var i=n.getElementsByTagName("stop"),s=n.nodeName==="linearGradient"?"linear":"radial",o=n.getAttribute("gradientUnits")||"objectBoundingBox",u=[],a={};s==="linear"?a={x1:n.getAttribute("x1")||0,y1:n.getAttribute("y1")||0,x2:n.getAttribute("x2")||"100%",y2:n.getAttribute("y2")||0}:s==="radial"&&(a={x1:n.getAttribute("fx")||n.getAttribute("cx")||"50%",y1:n.getAttribute("fy")||n.getAttribute("cy")||"50%",r1:0,x2:n.getAttribute("cx")||"50%",y2:n.getAttribute("cy")||"50%",r2:n.getAttribute("r")||"50%"});for(var f=i.length;f--;)u.push(e(i[f]));return t(r,a),new fabric.Gradient({type:s,coords:a,gradientUnits:o,colorStops:u})},forObject:function(e,n){return n||(n={}),t(e,n),new fabric.Gradient(n)}}),fabric.getGradientDefs=r}(),fabric.Pattern=fabric.util.createClass({repeat:"repeat",offsetX:0,offsetY:0,initialize:function(e){e||(e={}),e.source&&(this.source=typeof e.source=="string"?new Function(e.source):e.source),e.repeat&&(this.repeat=e.repeat),e.offsetX&&(this.offsetX=e.offsetX),e.offsetY&&(this.offsetY=e.offsetY)},toObject:function(){var e;return typeof this.source=="function"?e=String(this.source).match(/function\s+\w*\s*\(.*\)\s+\{([\s\S]*)\}/)[1]:typeof this.source.src=="string"&&(e=this.source.src),{source:e,repeat:this.repeat,offsetX:this.offsetX,offsetY:this.offsetY}},toLive:function(e){var t=typeof this.source=="function"?this.source():this.source;return e.createPattern(t,this.repeat)}}),fabric.Shadow=fabric.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,initialize:function(e){for(var t in e)this[t]=e[t]},toObject:function(){return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY}},toSVG:function(){}}),function(e){"use strict";function n(e,t){arguments.length>0&&this.init(e,t)}var t=e.fabric||(e.fabric={});if(t.Point){t.warn("fabric.Point is already defined");return}t.Point=n,n.prototype={constructor:n,init:function(e,t){this.x=e,this.y=t},add:function(e){return new n(this.x+e.x,this.y+e.y)},addEquals:function(e){return this.x+=e.x,this.y+=e.y,this},scalarAdd:function(e){return new n(this.x+e,this.y+e)},scalarAddEquals:function(e){return this.x+=e,this.y+=e,this},subtract:function(e){return new n(this.x-e.x,this.y-e.y)},subtractEquals:function(e){return this.x-=e.x,this.y-=e.y,this},scalarSubtract:function(e){return new n(this.x-e,this.y-e)},scalarSubtractEquals:function(e){return this.x-=e,this.y-=e,this},multiply:function(e){return new n(this.x*e,this.y*e)},multiplyEquals:function(e){return this.x*=e,this.y*=e,this},divide:function(e){return new n(this.x/e,this.y/e)},divideEquals:function(e){return this.x/=e,this.y/=e,this},eq:function(e){return this.x===e.x&&this.y===e.y},lt:function(e){return this.xe.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,t){return new n(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},distanceFrom:function(e){var t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)},midPointFrom:function(e){return new n(this.x+(e.x-this.x)/2,this.y+(e.y-this.y)/2)},min:function(e){return new n(Math.min(this.x,e.x),Math.min(this.y,e.y))},max:function(e){return new n(Math.max(this.x,e.x),Math.max(this.y,e.y))},toString:function(){return this.x+","+this.y},setXY:function(e,t){this.x=e,this.y=t},setFromPoint:function(e){this.x=e.x,this.y=e.y},swap:function(e){var t=this.x,n=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=n}}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){arguments.length>0&&this.init(e)}var t=e.fabric||(e.fabric={});if(t.Intersection){t.warn("fabric.Intersection is already defined");return}t.Intersection=n,t.Intersection.prototype={init:function(e){this.status=e,this.points=[]},appendPoint:function(e){this.points.push(e)},appendPoints:function(e){this.points=this.points.concat(e)}},t.Intersection.intersectLineLine=function(e,r,i,s){var o,u=(s.x-i.x)*(e.y-i.y)-(s.y-i.y)*(e.x-i.x),a=(r.x-e.x)*(e.y-i.y)-(r.y-e.y)*(e.x-i.x),f=(s.y-i.y)*(r.x-e.x)-(s.x-i.x)*(r.y-e.y);if(f!==0){var l=u/f,c=a/f;0<=l&&l<=1&&0<=c&&c<=1?(o=new n("Intersection"),o.points.push(new t.Point(e.x+l*(r.x-e.x),e.y+l*(r.y-e.y)))):o=new n("No Intersection")}else u===0||a===0?o=new n("Coincident"):o=new n("Parallel");return o},t.Intersection.intersectLinePolygon=function(e,t,r){var i=new n("No Intersection"),s=r.length;for(var o=0;o0&&(i.status="Intersection"),i},t.Intersection.intersectPolygonPolygon=function(e,t){var r=new n("No Intersection"),i=e.length;for(var s=0;s0&&(r.status="Intersection"),r},t.Intersection.intersectPolygonRectangle=function(e,r,i){var s=r.min(i),o=r.max(i),u=new t.Point(o.x,s.y),a=new t.Point(s.x,o.y),f=n.intersectLinePolygon(s,u,e),l=n.intersectLinePolygon(u,o,e),c=n.intersectLinePolygon(o,a,e),h=n.intersectLinePolygon(a,s,e),p=new n("No Intersection");return p.appendPoints(f.points),p.appendPoints(l.points),p.appendPoints(c.points),p.appendPoints(h.points),p.points.length>0&&(p.status="Intersection"),p}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){e?this._tryParsingColor(e):this.setSource([0,0,0,1])}var t=e.fabric||(e.fabric={});if(t.Color){t.warn("fabric.Color is already defined.");return}t.Color=n,t.Color.prototype={_tryParsingColor:function(e){var t;e in n.colorNameMap&&(e=n.colorNameMap[e]),t=n.sourceFromHex(e),t||(t=n.sourceFromRgb(e)),t&&this.setSource(t)},getSource:function(){return this._source},setSource:function(e){this._source=e},toRgb:function(){var e=this.getSource();return"rgb("+e[0]+","+e[1]+","+e[2]+")"},toRgba:function(){var e=this.getSource();return"rgba("+e[0]+","+e[1]+","+e[2]+","+e[3]+")"},toHex:function(){var e=this.getSource(),t=e[0].toString(16);t=t.length===1?"0"+t:t;var n=e[1].toString(16);n=n.length===1?"0"+n:n;var r=e[2].toString(16);return r=r.length===1?"0"+r:r,t.toUpperCase()+n.toUpperCase()+r.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var t=this.getSource();return t[3]=e,this.setSource(t),this},toGrayscale:function(){var e=this.getSource(),t=parseInt((e[0]*.3+e[1]*.59+e[2]*.11).toFixed(0),10),n=e[3];return this.setSource([t,t,t,n]),this},toBlackWhite:function(e){var t=this.getSource(),n=(t[0]*.3+t[1]*.59+t[2]*.11).toFixed(0),r=t[3];return e=e||127,n=Number(n)',''),t.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),""),this.backgroundColor&&this.backgroundColor.source&&t.push('"),this.backgroundImage&&t.push(''),this.overlayImage&&t.push('');for(var n=0,r=this.getObjects(),i=r.length;n"),t.join("")},remove:function(e){return this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared")),fabric.Collection.remove.call(this,e)},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e){var t=this._objects.indexOf(e),r=t;if(t!==0){for(var i=t-1;i>=0;--i){var s=e.intersectsWithObject(this._objects[i])||e.isContainedWithinObject(this._objects[i])||this._objects[i].isContainedWithinObject(e);if(s){r=i;break}}n(this._objects,e),this._objects.splice(r,0,e)}return this.renderAll&&this.renderAll()},bringForward:function(e){var t=this.getObjects(),r=t.indexOf(e),i=r;if(r!==t.length-1){for(var s=r+1,o=this._objects.length;s"},e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;a0&&(t>this.targetFindTolerance?t-=this.targetFindTolerance:t=0,n>this.targetFindTolerance?n-=this.targetFindTolerance:n=0);var o=!0,u=r.getImageData(t,n,this.targetFindTolerance*2||1,this.targetFindTolerance*2||1);for(var a=3,f=u.data.length;a0?0:-n),t.ey-(r>0?0:-r),i,o),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var u=t.ex+a-(n>0?0:i),f=t.ey+a-(r>0?0:o);e.beginPath(),fabric.util.drawDashedLine(e,u,f,u+i,f,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f+o-1,u+i,f+o-1,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f,u,f+o,this.selectionDashArray),fabric.util.drawDashedLine(e,u+i-1,f,u+i-1,f+o,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+a-(n>0?0:i),t.ey+a-(r>0?0:o),i,o)},_findSelectedObjects:function(e){var t=[],n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,s=r+this._groupSelector.top,a,f=new fabric.Point(o(n,i),o(r,s)),l=new fabric.Point(u(n,i),u(r,s));for(var c=0,h=this._objects.length;c1&&(t=new fabric.Group(t),this.setActiveGroup(t),t.saveCoords(),this.fire("selection:created",{target:t}),this.renderAll())},findTarget:function(e,t){var n,r=this.getPointer(e);if(this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(e,this._offset))return n=this.lastRenderedObjectWithControlsAboveOverlay,n;var i=this.getActiveGroup();if(i&&!t&&this.containsPoint(e,i))return n=i,n;var s=[];for(var o=this._objects.length;o--;)if(this._objects[o]&&this._objects[o].visible&&this.containsPoint(e,this._objects[o])){if(!this.perPixelTargetFind&&!this._objects[o].perPixelTargetFind){n=this._objects[o],this.relatedTarget=n;break}s[s.length]=this._objects[o]}for(var u=0,a=s.length;u"},get:function(e){return this[e]},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"?this._set(e,t(this.get(e))):this._set(e,t);return this},_set:function(e,t){var n=e==="scaleX"||e==="scaleY";n&&(t=this._constrainScale(t));if(e==="scaleX"&&t<0)this.flipX=!this.flipX,t*=-1;else if(e==="scaleY"&&t<0)this.flipY=!this.flipY,t*=-1;else if(e==="width"||e==="height")this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2);return this[e]=t,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save();var r=this.transformMatrix;r&&!this.group&&e.setTransform(r[0],r[1],r[2],r[3],r[4],r[5]),n||this.transform(e);if(this.stroke||this.strokeDashArray)e.lineWidth=this.strokeWidth,this.stroke&&this.stroke.toLive?e.strokeStyle=this.stroke.toLive(e):e.strokeStyle=this.stroke;this.overlayFill?e.fillStyle=this.overlayFill:this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill),r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_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()},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){if(t.Image){var n={angle:this.getAngle(),flipX:this.getFlipX(),flipY:this.getFlipY()};this.set({angle:0,flipX:!1,flipY:!1}),this.toDataURL(function(r){t.util.loadImage(r,function(r){e&&e(new t.Image(r),n)})})}return this},toDataURL:function(e){function i(t){t.left=n.width/2,t.top=n.height/2,t.set("active",!1),r.add(t);var i=r.toDataURL();r.dispose(),r=t=null,e&&e(i)}var n=t.util.createCanvasElement();n.width=this.getBoundingRectWidth(),n.height=this.getBoundingRectHeight(),t.util.wrapElement(n,"div");var r=new t.Canvas(n);r.backgroundColor="transparent",r.renderAll(),this.constructor.async?this.clone(i):i(this.clone())},isType:function(e){return this.type===e},toGrayscale:function(){var e=this.get("fill");return e&&this.set("overlayFill",(new t.Color(e)).toGrayscale().toRgb()),this},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){return this.set("fill",new t.Pattern(e))},setShadow:function(e){return this.set("shadow",new t.Shadow(e))},animate:function(){if(arguments[0]&&typeof arguments[0]=="object"){var e=[],t,n;for(t in arguments[0])e.push(t);for(var r=0,i=e.length;re.x&&i.xe.y&&s.y1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(this.currentHeight/this.currentWidth),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x: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}})}(),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this[e]!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner,a),o=this._findCrossPoints(i,s,u);if(o%2===1&&o!==0)return this.__corner=a,a}return!1},_findCrossPoints:function(e,t,n){var r,i,s,o,u,a,f=0,l;for(var c in n){l=n[c];if(l.o.y=t&&l.d.y>=t)continue;l.o.x===l.d.x&&l.o.x>=e?(u=l.o.x,a=t):(r=0,i=(l.d.y-l.o.y)/(l.d.x-l.o.x),s=t-r*e,o=l.o.y-i*l.o.x,u=-(s-o)/(r-i),a=s+r*u),u>=e&&(f+=1);if(f===2)break}return f},_getImageLines:function(e){return{topline:{o:e.tl,d:e.tr},rightline:{o:e.tr,d:e.br},bottomline:{o:e.br,d:e.bl},leftline:{o:e.bl,d:e.tl}}},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=this.strokeWidth>1?this.strokeWidth:0;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)+.5,~~(-(u/2)-t-r/2*this.scaleY)+.5,~~(o+n+r*this.scaleX),~~(u+n+r*this.scaleY));if(this.hasRotatingPoint&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;var t=this.cornerSize,n=t/2,r=this.strokeWidth/2,i=-(this.width/2),s=-(this.height/2),o,u,a=t/this.scaleX,f=t/this.scaleY,l=this.padding/this.scaleX,c=this.padding/this.scaleY,h=n/this.scaleY,p=n/this.scaleX,d=(n-t)/this.scaleX,v=(n-t)/this.scaleY,m=this.height,g=this.width,y=this.transparentCorners?"strokeRect":"fillRect",b=typeof G_vmlCanvasManager!="undefined";return e.save(),e.lineWidth=1/Math.max(this.scaleX,this.scaleY),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=e.fillStyle=this.cornerColor,o=i-p-r-l,u=s-h-r-c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m+v+r+c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),this.get("lockUniScaling")||(o=i+g/2-p,u=s-h-r-c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),this.hasRotatingPoint&&(o=i+g/2-p,u=this.flipY?s+m+this.rotatingPointOffset/this.scaleY-f/2+r+c:s-this.rotatingPointOffset/this.scaleY-f/2-r-c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),e.restore(),this}})}(),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r={x1:1,x2:1,y1:1,y2:1};if(t.Line){t.warn("fabric.Line is already defined");return}t.Line=t.util.createClass(t.Object,{type:"line",initialize:function(e,t){t=t||{},e||(e=[0,0,0,0]),this.callSuper("initialize",t),this.set("x1",e[0]),this.set("y1",e[1]),this.set("x2",e[2]),this.set("y2",e[3]),this._setWidthHeight(t)},_setWidthHeight:function(e){e||(e={}),this.set("width",this.x2-this.x1||1),this.set("height",this.y2-this.y1||1),this.set("left","left"in e?e.left:this.x1+this.width/2),this.set("top","top"in e?e.top:this.y1+this.height/2)},_set:function(e,t){return this[e]=t,e in r&&this._setWidthHeight(),this},_render:function(e){e.beginPath();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):e.translate(this.left,this.top),e.moveTo(this.width===1?0:-this.width/2,this.height===1?0:-this.height/2),e.lineTo(this.width===1?0:this.width/2,this.height===1?0:this.height/2),e.lineWidth=this.strokeWidth;var n=e.strokeStyle;e.strokeStyle=this.stroke||e.fillStyle,e.stroke(),e.strokeStyle=n},complexity:function(){return 1},toObject:function(e){return n(this.callSuper("toObject",e),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){var e=[];return this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!0)),e.push("'),e.join("")}}),t.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" "),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e);var t=this.get("radius")*2;this.set("width",t).set("height",t)},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this._removeShadow(e),this.stroke&&e.stroke()},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this.stroke&&e.stroke()},complexity:function(){return 1},toSVG:function(){var e=[],t=this.width/2,n=this.height/2,r=[-t+" "+n,"0 "+ -n,t+" "+n].join(",");return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!0)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!0)),e.push("'),e.join("")}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this.stroke&&e.stroke(),this._removeShadow(e),this._renderFill(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function r(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}t.Rect=t.util.createClass(t.Object,{type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(e){e=e||{},this._initStateProperties(),this.callSuper("initialize",e),this._initRxRy(),this.x=0,this.y=0},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height,u=this.group&&this.group.type!=="group";e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y),e.moveTo(r+t,i),e.lineTo(r+s-t,i),e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this._renderFill(e),this._removeShadow(e),this.strokeDashArray?this._renderDashedStroke(e):this.stroke&&e.stroke()},_renderDashedStroke:function(e){function u(u,a){var f=0,l=0,c=(a?i.height:i.width)+s*2;while(fc&&(l=f-c),u?n+=h*u-(l*u||0):r+=h*a-(l*a||0),e[1&t?"moveTo":"lineTo"](n,r),t>=o&&(t=0)}}1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray);var t=0,n=-this.width/2,r=-this.height/2,i=this,s=this.padding,o=this.strokeDashArray.length;e.save(),e.beginPath(),u(1,0),u(0,1),u(-1,0),u(0,-1),e.stroke(),e.closePath(),e.restore()},_normalizeLeftTopProperties:function(e){return"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},complexity:function(){return 1},toObject:function(e){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")}}),t.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Rect.fromElement=function(e,i){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=r(s);var o=new t.Rect(n(i?t.util.object.clone(i):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e -)},toSVG:function(){var e=[],t=[];for(var r=0,i=this.points.length;r'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n1&&(g=Math.sqrt(g),n*=g,i*=g);var y=d/n,b=p/n,w=-p/i,E=d/i,S=y*l+b*c,x=w*l+E*c,T=y*e+b*t,N=w*e+E*t,C=(T-S)*(T-S)+(N-x)*(N-x),k=1/C-.25;k<0&&(k=0);var L=Math.sqrt(k);a===u&&(L=-L);var A=.5*(S+T)-L*(N-x),O=.5*(x+N)+L*(T-S),M=Math.atan2(x-O,S-A),_=Math.atan2(N-O,T-A),D=_-M;D<0&&a===1?D+=2*Math.PI:D>0&&a===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B"},toObject:function(e){var t=h(this.callSuper("toObject",e),{path:this.path});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(){var e=[],t=[];for(var n=0,r=this.path.length;n',"",""),t.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n=[],r,i,s=/(-?\.\d+)|(-?\d+(\.\d+)?)/g,o,u;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var n=0,r=e.length;n"),t.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},toGrayscale:function(){var e=this.paths.length;while(e--)this.paths[e].toGrayscale();return this},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e){var n=u(e.paths);return new t.PathGroup(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){var e=this.left,t=this.top;this.forEachObject(function(n){var r=n.get("left"),i=n.get("top");n.set("originalLeft",r),n.set("originalTop",i),n.set("left",r-e),n.set("top",i-t),n.setCoords(),n.__origHasControls=n.hasControls,n.hasControls=!1},this)},toString:function(){return"#"},getObjects:function(){return this._objects},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textShadow:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e);var r=Math.max(this.scaleX,this.scaleY);this.clipTo&&t.util.clipContext(this,e);for(var i=0,s=this._objects.length;ie.x&&i-ne.y},toSVG:function(){var e=[];for(var t=this._objects.length;t--;)e.push(this._objects[t].toSVG());return''+e.join("")+""},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t'+'"+""},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this.setElement(this._originalImage),e&&e();return}var t=this._originalImage,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.width=t.width,r.height=t.height;if(fabric.isLikelyNode){var s=n.toDataURL("image/png").substring(22);r.src=new Buffer(s,"base64"),i._element=r,e&&e()}else r.src=n.toDataURL("image/png");return this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e){e.filters&&e.filters.length&&(this.filters=e.filters.map(function(e){return e&&fabric.Image.filters[e.type].fromObject(e)}))},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){var n=fabric.document.createElement("img"),r=e.src;e.width&&(n.width=e.width),e.height&&(n.height=e.height),n.onload=function(){fabric.Image.prototype._initFilters.call(e,e);var r=new fabric.Image(n,e);t&&t(r),n=n.onload=n.onerror=null},n.onerror=function(){fabric.log("Error loading "+n.src),t&&t(null,!0),n=n.onload=n.onerror=null},n.src=r},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))})},fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" "),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.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.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;ao&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},fabric.Image.filters.Convolute=fabric.util.createClass({type:"Convolute",initialize:function(e){e||(e={}),this.opaque=e.opaque,this.matrix=e.matrix||[0,0,0,0,1,0,0,0,0];var t=fabric.util.createCanvasElement();this.tmpCtx=t.getContext("2d")},_createImageData:function(e,t){return this.tmpCtx.createImageData(e,t)},applyTo:function(e){var t=this.matrix,n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=Math.round(Math.sqrt(t.length)),s=Math.floor(i/2),o=r.data,u=r.width,a=r.height,f=u,l=a,c=this._createImageData(f,l),h=c.data,p=this.opaque?1:0;for(var d=0;d=0&&N=0&&C'},_render:function(e){var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_renderViaNative:function(e){this.originX==="left"?e.translate(this.left,this.top):this.transform(e),this._setTextStyles(e);var n=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this._renderTextBackground(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),this._setTextShadow(e),this.clipTo&&t.util.clipContext(this,e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this.clipTo&&e.restore(),this.textShadow&&e.restore(),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this._setBoundaries(e,n),this._totalLineHeight=0,this.setCoords()},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_setTextShadow:function(e){if(this.textShadow){var t=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/,n=this.textShadow,r=t.exec(this.textShadow),i=n.replace(t,"");e.save(),e.shadowColor=i,e.shadowOffsetX=parseInt(r[1],10),e.shadowOffsetY=parseInt(r[2],10),e.shadowBlur=parseInt(r[3],10),this._shadows=[{blur:e.shadowBlur,color:e.shadowColor,offX:e.shadowOffsetX,offY:e.shadowOffsetY}],this._shadowOffsets=[[parseInt(e.shadowOffsetX,10),parseInt(e.shadowOffsetY,10)]]}},_drawTextLine:function(e,t,n,r,i){if(this.textAlign!=="justify" -){t[e](n,r,i);return}var s=t.measureText(n).width,o=this.width;if(o>s){var u=n.split(/\s+/),a=t.measureText(n.replace(/\s+/g,"")).width,f=o-a,l=u.length-1,c=f/l,h=0;for(var p=0,d=u.length;p-1&&i(this.fontSize),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(0)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},_initDummyElementForCufon:function(){var e=t.document.createElement("pre"),n=t.document.createElement("div");return n.appendChild(e),typeof G_vmlCanvasManager=="undefined"?e.innerHTML=this.text:e.innerText=this.text.replace(/\r?\n/gi,"\r"),e.style.fontSize=this.fontSize+"px",e.style.letterSpacing="normal",e},render:function(e,t){if(!this.visible)return;e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){return n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;this.backgroundColor&&this._boundaries&&o.push("');for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.textBackgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},setColor:function(e){return this.set("fill",e),this},getText:function(){return this.text},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in s&&(this._initDimensions(),this.setCoords())}}),t.Text.ATTRIBUTE_NAMES="x y fill fill-opacity opacity stroke stroke-width transform font-family font-style font-weight font-size text-decoration".split(" "),t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),function(){function request(e,t,n){var r=URL.parse(e);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.pathname,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs"),r=n.createReadStream(e),i="";r.on("data",function(e){i+=e}),r.on("end",function(){t(i)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&e.indexOf("data")===0?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e&&request(e,"binary",r)},fabric.loadSVGFromURL=function(e,t){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t)}):request(e,"",function(e){fabric.loadSVGFromString(e,t)})},fabric.loadSVGFromString=function(e,t){var n=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(n.documentElement,function(e,n){t(e,n)})},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e),t(r)})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file +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.StaticCanvas.prototype,{loadFromDatalessJSON:function(e,t){if(!e)return;var n=typeof e=="string"?JSON.parse(e):e;if(!n)return;n.objects||(n.objects=[]),this.clear();var r=this;this._enlivenDatalessObjects(n.objects,function(){r._setBgOverlayImages(n,t)})},_enlivenDatalessObjects:function(e,t){function s(e,s){n.insertAt(e,s,!0),e.setCoords(),++r===i&&t&&t()}function o(e,t){var n=e.paths?"paths":"path",r=e[n];delete e[n];if(typeof r!="string")if(e.type==="image"||e.type==="group")fabric[fabric.util.string.capitalize(e.type)].fromObject(e,function(e){s(e,t)});else{var i=fabric[fabric.util.string.camelize(fabric.util.string.capitalize(e.type))];if(!i||!i.fromObject)return;r&&(e[n]=r),s(i.fromObject(e),t)}else if(e.type==="image")fabric.util.loadImage(r,function(n){var i=new fabric.Image(n);i.setSourcePath(r),fabric.util.object.extend(i,e),i.setAngle(e.angle),s(i,t)});else if(e.type==="text")if(e.useNative)s(fabric.Text.fromObject(e),t);else{e.path=r;var o=fabric.Text.fromObject(e),u=function(){Object.prototype.toString.call(fabric.window.opera)==="[object Opera]"?setTimeout(function(){s(o,t)},500):s(o,t)};fabric.util.getScript(r,u)}else fabric.loadSVGFromURL(r,function(n){var i=fabric.util.groupSVGElements(n,e,r);i instanceof fabric.PathGroup||(fabric.util.object.extend(i,e),typeof e.angle!="undefined"&&i.setAngle(e.angle)),s(i,t)})}var n=this,r=0,i=e.length;i===0&&t&&t();try{e.forEach(o,this)}catch(u){fabric.log(u)}},loadFromJSON:function(e,t){if(!e)return;var n=typeof e=="string"?JSON.parse(e):e,r=this;return this._enlivenObjects(n.objects,function(){r._setBgOverlayImages(n,t)}),this},_setBgOverlayImages:function(e,t){var n=this,r,i,s,o=function(){t&&i&&s&&r&&t()};e.backgroundImage?this.setBackgroundImage(e.backgroundImage,function(){n.backgroundImageOpacity=e.backgroundImageOpacity,n.backgroundImageStretch=e.backgroundImageStretch,n.renderAll(),i=!0,o()}):i=!0,e.overlayImage?this.setOverlayImage(e.overlayImage,function(){n.overlayImageLeft=e.overlayImageLeft||0,n.overlayImageTop=e.overlayImageTop||0,n.renderAll(),s=!0,o()}):s=!0,e.background?this.setBackgroundColor(e.background,function(){n.renderAll(),r=!0,o()}):r=!0,!e.backgroundImage&&!e.overlayImage&&!e.background&&t&&t()},_enlivenObjects:function(e,t){var n=this;fabric.util.enlivenObjects(e,function(e){e.forEach(function(e,t){n.insertAt(e,t,!0)}),t&&t()})},_toDataURL:function(e,t){this.clone(function(n){t(n.toDataURL(e))})},_toDataURLWithMultiplier:function(e,t,n){this.clone(function(r){n(r.toDataURLWithMultiplier(e,t))})},clone:function(e){var t=JSON.stringify(this);this.cloneWithoutData(function(n){n.loadFromJSON(t,function(){e&&e(n)})})},cloneWithoutData:function(e){var t=fabric.document.createElement("canvas");t.width=this.getWidth(),t.height=this.getHeight();var n=new fabric.Canvas(t);n.clipTo=this.clipTo,this.backgroundImage?(n.setBackgroundImage(this.backgroundImage.src,function(){n.renderAll(),e&&e(n)}),n.backgroundImageOpacity=this.backgroundImageOpacity,n.backgroundImageStretch=this.backgroundImageStretch):e&&e(n)}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.toFixed,i=t.util.string.capitalize,s=t.util.degreesToRadians;if(t.Object)return;t.Object=t.util.createClass({type:"object",originX:"center",originY:"center",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,opacity:1,angle:0,cornerSize:12,transparentCorners:!0,padding:0,borderColor:"rgba(102,153,255,0.75)",cornerColor:"rgba(102,153,255,0.5)",fill:"rgb(0,0,0)",fillRule:"source-over",overlayFill:null,stroke:null,strokeWidth:1,strokeDashArray:null,shadow:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,transformMatrix:null,minScaleLimit:.01,selectable:!0,visible:!0,hasControls:!0,hasBorders:!0,hasRotatingPoint:!0,rotatingPointOffset:40,perPixelTargetFind:!1,includeDefaultValues:!0,clipTo:null,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockUniScaling:!1,stateProperties:"top left width height scaleX scaleY flipX flipY angle opacity cornerSize fill overlayFill originX originY stroke strokeWidth strokeDashArray fillRule borderScaleFactor transformMatrix selectable shadow visible".split(" "),initialize:function(e){e&&this.setOptions(e)},_initGradient:function(e){e.fill&&e.fill.colorStops&&!(e.fill instanceof t.Gradient)&&this.set("fill",new t.Gradient(e.fill))},_initPattern:function(e){e.fill&&e.fill.source&&!(e.fill instanceof t.Pattern)&&this.set("fill",new t.Pattern(e.fill)),e.stroke&&e.stroke.source&&!(e.stroke instanceof t.Pattern)&&this.set("stroke",new t.Pattern(e.stroke))},_initShadow:function(e){e.shadow&&!(e.shadow instanceof t.Shadow)&&this.setShadow(e.shadow)},setOptions:function(e){for(var t in e)this.set(t,e[t]);this._initGradient(e),this._initPattern(e),this._initShadow(e)},transform:function(e){e.globalAlpha=this.opacity;var t=this.getCenterPoint();e.translate(t.x,t.y),e.rotate(s(this.angle)),e.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(e){var n=t.Object.NUM_FRACTION_DIGITS,i={type:this.type,originX:this.originX,originY:this.originY,left:r(this.left,n),top:r(this.top,n),width:r(this.width,n),height:r(this.height,n),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,overlayFill:this.overlayFill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:this.strokeWidth,strokeDashArray:this.strokeDashArray,scaleX:r(this.scaleX,n),scaleY:r(this.scaleY,n),angle:r(this.getAngle(),n),flipX:this.flipX,flipY:this.flipY,opacity:r(this.opacity,n),selectable:this.selectable,hasControls:this.hasControls,hasBorders:this.hasBorders,hasRotatingPoint:this.hasRotatingPoint,transparentCorners:this.transparentCorners,perPixelTargetFind:this.perPixelTargetFind,shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible};return this.includeDefaultValues||(i=this._removeDefaultValues(i)),t.util.populateWithProperties(this,i,e),i},toDatalessObject:function(e){return this.toObject(e)},getSvgStyles:function(){return["stroke: ",this.stroke?this.stroke:"none","; ","stroke-width: ",this.strokeWidth?this.strokeWidth:"0","; ","stroke-dasharray: ",this.strokeDashArray?this.strokeDashArray.join(" "):"; ","fill: ",this.fill?this.fill&&this.fill.toLive?"url(#SVGID_"+this.fill.id+")":this.fill:"none","; ","opacity: ",typeof this.opacity!="undefined"?this.opacity:"1",";",this.visible?"":" visibility: hidden;"].join("")},getSvgTransform:function(){var e=this.getAngle(),n=this.getCenterPoint(),i=t.Object.NUM_FRACTION_DIGITS,s="translate("+r(n.x,i)+" "+r(n.y,i)+")",o=e!==0?" rotate("+r(e,i)+")":"",u=this.scaleX===1&&this.scaleY===1?"":" scale("+r(this.scaleX,i)+" "+r(this.scaleY,i)+")",a=this.flipX?"matrix(-1 0 0 1 0 0) ":"",f=this.flipY?"matrix(1 0 0 -1 0 0)":"";return[s,o,u,a,f].join("")},_removeDefaultValues:function(e){var n=t.Object.prototype.options;return n&&this.stateProperties.forEach(function(t){e[t]===n[t]&&delete e[t]}),e},toString:function(){return"#"},get:function(e){return this[e]},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"?this._set(e,t(this.get(e))):this._set(e,t);return this},_set:function(e,t){var n=e==="scaleX"||e==="scaleY";n&&(t=this._constrainScale(t));if(e==="scaleX"&&t<0)this.flipX=!this.flipX,t*=-1;else if(e==="scaleY"&&t<0)this.flipY=!this.flipY,t*=-1;else if(e==="width"||e==="height")this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2);return this[e]=t,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save();var r=this.transformMatrix;r&&!this.group&&e.setTransform(r[0],r[1],r[2],r[3],r[4],r[5]),n||this.transform(e);if(this.stroke||this.strokeDashArray)e.lineWidth=this.strokeWidth,this.stroke&&this.stroke.toLive?e.strokeStyle=this.stroke.toLive(e):e.strokeStyle=this.stroke;this.overlayFill?e.fillStyle=this.overlayFill:this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill),r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_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()},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(){var e=t.util.createCanvasElement();e.width=this.getBoundingRectWidth(),e.height=this.getBoundingRectHeight(),t.util.wrapElement(e,"div");var n=new t.Canvas(e);n.backgroundColor="transparent",n.renderAll();var r={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set({active:!1,left:e.width/2,top:e.height/2}),n.add(this);var i=n.toDataURL();return this.set(r).setCoords(),n.dispose(),n=null,i},isType:function(e){return this.type===e},toGrayscale:function(){var e=this.get("fill");return e&&this.set("overlayFill",(new t.Color(e)).toGrayscale().toRgb()),this},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){return this.set("fill",new t.Pattern(e))},setShadow:function(e){return this.set("shadow",new t.Shadow(e))},animate:function(){if(arguments[0]&&typeof arguments[0]=="object"){var e=[],t,n;for(t in arguments[0])e.push(t);for(var r=0,i=e.length;re.x&&i.xe.y&&s.y1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(this.currentHeight/this.currentWidth),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x: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}})}(),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this[e]!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner,a),o=this._findCrossPoints(i,s,u);if(o%2===1&&o!==0)return this.__corner=a,a}return!1},_findCrossPoints:function(e,t,n){var r,i,s,o,u,a,f=0,l;for(var c in n){l=n[c];if(l.o.y=t&&l.d.y>=t)continue;l.o.x===l.d.x&&l.o.x>=e?(u=l.o.x,a=t):(r=0,i=(l.d.y-l.o.y)/(l.d.x-l.o.x),s=t-r*e,o=l.o.y-i*l.o.x,u=-(s-o)/(r-i),a=s+r*u),u>=e&&(f+=1);if(f===2)break}return f},_getImageLines:function(e){return{topline:{o:e.tl,d:e.tr},rightline:{o:e.tr,d:e.br},bottomline:{o:e.br,d:e.bl},leftline:{o:e.bl,d:e.tl}}},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=this.strokeWidth>1?this.strokeWidth:0;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)+.5,~~(-(u/2)-t-r/2*this.scaleY)+.5,~~(o+n+r*this.scaleX),~~(u+n+r*this.scaleY));if(this.hasRotatingPoint&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;var t=this.cornerSize,n=t/2,r=this.strokeWidth/2,i=-(this.width/2),s=-(this.height/2),o,u,a=t/this.scaleX,f=t/this.scaleY,l=this.padding/this.scaleX,c=this.padding/this.scaleY,h=n/this.scaleY,p=n/this.scaleX,d=(n-t)/this.scaleX,v=(n-t)/this.scaleY,m=this.height,g=this.width,y=this.transparentCorners?"strokeRect":"fillRect",b=typeof G_vmlCanvasManager!="undefined";return e.save(),e.lineWidth=1/Math.max(this.scaleX,this.scaleY),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=e.fillStyle=this.cornerColor,o=i-p-r-l,u=s-h-r-c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m+v+r+c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),this.get("lockUniScaling")||(o=i+g/2-p,u=s-h-r-c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),this.hasRotatingPoint&&(o=i+g/2-p,u=this.flipY?s+m+this.rotatingPointOffset/this.scaleY-f/2+r+c:s-this.rotatingPointOffset/this.scaleY-f/2-r-c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),e.restore(),this}})}(),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r={x1:1,x2:1,y1:1,y2:1};if(t.Line){t.warn("fabric.Line is already defined");return}t.Line=t.util.createClass(t.Object,{type:"line",initialize:function(e,t){t=t||{},e||(e=[0,0,0,0]),this.callSuper("initialize",t),this.set("x1",e[0]),this.set("y1",e[1]),this.set("x2",e[2]),this.set("y2",e[3]),this._setWidthHeight(t)},_setWidthHeight:function(e){e||(e={}),this.set("width",this.x2-this.x1||1),this.set("height",this.y2-this.y1||1),this.set("left","left"in e?e.left:this.x1+this.width/2),this.set("top","top"in e?e.top:this.y1+this.height/2)},_set:function(e,t){return this[e]=t,e in r&&this._setWidthHeight(),this},_render:function(e){e.beginPath();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):e.translate(this.left,this.top),e.moveTo(this.width===1?0:-this.width/2,this.height===1?0:-this.height/2),e.lineTo(this.width===1?0:this.width/2,this.height===1?0:this.height/2),e.lineWidth=this.strokeWidth;var n=e.strokeStyle;e.strokeStyle=this.stroke||e.fillStyle,e.stroke(),e.strokeStyle=n},complexity:function(){return 1},toObject:function(e){return n(this.callSuper("toObject",e),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){var e=[];return this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!0)),e.push("'),e.join("")}}),t.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" "),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e);var t=this.get("radius")*2;this.set("width",t).set("height",t)},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this._removeShadow(e),this.stroke&&e.stroke()},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this.stroke&&e.stroke()},complexity:function(){return 1},toSVG:function(){var e=[],t=this.width/2,n=this.height/2,r=[-t+" "+n,"0 "+ -n,t+" "+n].join(",");return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!0)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!0)),e.push("'),e.join("")}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this.stroke&&e.stroke(),this._removeShadow(e),this._renderFill(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function r(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}t.Rect=t.util.createClass(t.Object,{type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(e){e=e||{},this._initStateProperties(),this.callSuper("initialize",e),this._initRxRy(),this.x=0,this.y=0},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height,u=this.group&&this.group.type!=="group";e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y),e.moveTo(r+t,i),e.lineTo(r+s-t,i),e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this._renderFill(e),this._removeShadow(e),this.strokeDashArray?this._renderDashedStroke(e):this.stroke&&e.stroke()},_renderDashedStroke:function(e){function u(u,a){var f=0,l=0,c=(a?i.height:i.width)+s*2;while(fc&&(l=f-c),u?n+=h*u-(l*u||0):r+=h*a-(l*a||0),e[1&t?"moveTo":"lineTo"](n,r),t>=o&&(t=0)}}1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray);var t=0,n=-this.width/2,r=-this.height/2,i=this,s=this.padding,o=this.strokeDashArray.length;e.save(),e.beginPath(),u(1,0),u(0,1),u(-1,0),u(0,-1),e.stroke(),e.closePath(),e.restore()},_normalizeLeftTopProperties:function(e){return"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},complexity:function(){return 1},toObject:function(e){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")}}),t.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Rect.fromElement=function(e,i){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=r(s);var o=new t.Rect(n(i?t.util.object.clone(i):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(){var e=[],t=[];for(var r=0,i=this.points.length;r'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n1&&(g=Math.sqrt(g),n*=g,i*=g);var y=d/n,b=p/n,w=-p/i,E=d/i,S=y*l+b*c,x=w*l+E*c,T=y*e+b*t,N=w*e+E*t,C=(T-S)*(T-S)+(N-x)*(N-x),k=1/C-.25;k<0&&(k=0);var L=Math.sqrt(k);a===u&&(L=-L);var A=.5*(S+T)-L*(N-x),O=.5*(x+N)+L*(T-S),M=Math.atan2(x-O,S-A),_=Math.atan2(N-O,T-A),D=_-M;D<0&&a===1?D+=2*Math.PI:D>0&&a===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B"},toObject:function(e){var t=h(this.callSuper("toObject",e),{path:this.path});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(){var e=[],t=[];for(var n=0,r=this.path.length;n',"",""),t.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n=[],r,i,s=/(-?\.\d+)|(-?\d+(\.\d+)?)/g,o,u;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var n=0,r=e.length;n"),t.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},toGrayscale:function(){var e=this.paths.length;while(e--)this.paths[e].toGrayscale();return this},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e){var n=u(e.paths);return new t.PathGroup(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){var e=this.left,t=this.top;this.forEachObject(function(n){var r=n.get("left"),i=n.get("top");n.set("originalLeft",r),n.set("originalTop",i),n.set("left",r-e),n.set("top",i-t),n.setCoords(),n.__origHasControls=n.hasControls,n.hasControls=!1},this)},toString:function(){return"#"},getObjects:function(){return this._objects},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textShadow:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e);var r=Math.max(this.scaleX,this.scaleY);this.clipTo&&t.util.clipContext(this,e);for(var i=0,s=this._objects.length;ie.x&&i-ne.y},toSVG:function(){var e=[];for(var t=this._objects.length;t--;)e.push(this._objects[t].toSVG());return''+e.join("")+""},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t'+'"+""},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this.setElement(this._originalImage),e&&e();return}var t=this._originalImage,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.width=t.width,r.height=t.height;if(fabric.isLikelyNode){var s=n.toDataURL("image/png").substring(22);r.src=new Buffer(s,"base64"),i._element=r,e&&e()}else r.src=n.toDataURL("image/png");return this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e){e.filters&&e.filters.length&&(this.filters=e.filters.map(function(e){return e&&fabric.Image.filters[e.type].fromObject(e)}))},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){var n=fabric.document.createElement("img"),r=e.src;e.width&&(n.width=e.width),e.height&&(n.height=e.height),n.onload=function(){fabric.Image.prototype._initFilters.call(e,e);var r=new fabric.Image(n,e);t&&t(r),n=n.onload=n.onerror=null},n.onerror=function(){fabric.log("Error loading "+n.src),t&&t(null,!0),n=n.onload=n.onerror=null},n.src=r},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))})},fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" "),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.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.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;ao&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},fabric.Image.filters.Convolute=fabric.util.createClass({type:"Convolute",initialize:function(e){e||(e={}),this.opaque=e.opaque,this.matrix=e.matrix||[0,0,0,0,1,0,0,0,0];var t=fabric.util.createCanvasElement();this.tmpCtx=t.getContext("2d")},_createImageData:function(e,t){return this.tmpCtx.createImageData(e,t)},applyTo:function(e){var t=this.matrix,n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=Math.round(Math.sqrt(t.length)),s=Math.floor(i/2),o=r.data,u=r.width,a=r.height,f=u,l=a,c=this._createImageData(f,l),h=c.data,p=this.opaque?1:0;for(var d=0;d=0&&N=0&&C'},_render:function(e){var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_renderViaNative:function(e){this.originX==="left"?e.translate(this.left,this.top):this.transform(e),this._setTextStyles(e);var n=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this._renderTextBackground(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),this._setTextShadow(e),this.clipTo&&t.util.clipContext(this,e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this.clipTo&&e.restore(),this.textShadow&&e.restore(),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this._setBoundaries(e,n),this._totalLineHeight=0,this.setCoords()},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_setTextShadow:function(e){if(this.textShadow){var t=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/,n=this.textShadow,r=t.exec(this.textShadow),i=n.replace(t,"");e.save(),e.shadowColor=i,e.shadowOffsetX=parseInt(r[1],10),e.shadowOffsetY=parseInt(r[2],10),e.shadowBlur=parseInt(r[3],10),this._shadows=[{blur:e.shadowBlur,color:e.shadowColor,offX:e.shadowOffsetX,offY:e.shadowOffsetY}],this._shadowOffsets=[[parseInt(e.shadowOffsetX,10),parseInt(e.shadowOffsetY,10)]]}},_drawTextLine:function(e,t,n,r,i){if(this.textAlign!=="justify"){t[e](n,r,i);return}var s=t.measureText(n).width,o=this.width;if(o>s){var u=n.split(/\s+/) +,a=t.measureText(n.replace(/\s+/g,"")).width,f=o-a,l=u.length-1,c=f/l,h=0;for(var p=0,d=u.length;p-1&&i(this.fontSize),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(0)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},_initDummyElementForCufon:function(){var e=t.document.createElement("pre"),n=t.document.createElement("div");return n.appendChild(e),typeof G_vmlCanvasManager=="undefined"?e.innerHTML=this.text:e.innerText=this.text.replace(/\r?\n/gi,"\r"),e.style.fontSize=this.fontSize+"px",e.style.letterSpacing="normal",e},render:function(e,t){if(!this.visible)return;e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){return n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;this.backgroundColor&&this._boundaries&&o.push("');for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.textBackgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},setColor:function(e){return this.set("fill",e),this},getText:function(){return this.text},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in s&&(this._initDimensions(),this.setCoords())}}),t.Text.ATTRIBUTE_NAMES="x y fill fill-opacity opacity stroke stroke-width transform font-family font-style font-weight font-size text-decoration".split(" "),t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),function(){function request(e,t,n){var r=URL.parse(e);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.pathname,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs"),r=n.createReadStream(e),i="";r.on("data",function(e){i+=e}),r.on("end",function(){t(i)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&e.indexOf("data")===0?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e&&request(e,"binary",r)},fabric.loadSVGFromURL=function(e,t){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t)}):request(e,"",function(e){fabric.loadSVGFromString(e,t)})},fabric.loadSVGFromString=function(e,t){var n=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(n.documentElement,function(e,n){t(e,n)})},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e),t(r)})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file diff --git a/dist/all.min.js.gz b/dist/all.min.js.gz index 269796228048ad99a071c45c354a07c83f833cc1..72ca1cf971fccd990d527ad3b3ceece579d77790 100644 GIT binary patch delta 29998 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