From 8f34f2ac34b692637a1adc6bad67a80c399ddf0a Mon Sep 17 00:00:00 2001 From: kangax Date: Sat, 6 Apr 2013 12:44:36 +0200 Subject: [PATCH] Build distribution --- dist/all.js | 19 ++++++++++++++----- dist/all.min.js | 8 ++++---- dist/all.min.js.gz | Bin 47248 -> 47251 bytes 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/dist/all.js b/dist/all.js index 52a77e26..0639cf27 100644 --- a/dist/all.js +++ b/dist/all.js @@ -4261,7 +4261,7 @@ fabric.util.string = { instances.splice(index, 0, obj); checkIfDone(); }; - })(index), options); + })(index, el), options); } else { var obj = klass.fromElement(el, options); @@ -10726,24 +10726,32 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati /** * Sets pattern fill of an object * @method setPatternFill - * @param {Object} options + * @param {Object} [options] Options object + * @return {fabric.Object} thisArg + * @chainable */ setPatternFill: function(options) { - this.set('fill', new fabric.Pattern(options)); + return this.set('fill', new fabric.Pattern(options)); }, /** * Sets shadow of an object * @method setShadow - * @param {Object} options + * @param {Object} [options] Options object + * @return {fabric.Object} thisArg + * @chainable */ setShadow: function(options) { - this.set('shadow', new fabric.Shadow(options)); + return this.set('shadow', new fabric.Shadow(options)); }, /** * Animates object's properties * @method animate + * @param {String|Object} property to animate (if string) or properties to animate (if object) + * @param {Number|Object} value to animate property to (if string was given first) or options object + * @return {fabric.Object} thisArg + * @chainable * * As object — multiple properties * @@ -10777,6 +10785,7 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati /** * @private * @method _animate + * @parm property */ _animate: function(property, to, options, skipCallbacks) { var obj = this, propPair; diff --git a/dist/all.min.js b/dist/all.min.js index 0e9c36a6..df8bff6b 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.6"};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=new Image;r.onload=function(){t&&t.call(n,r),r=r.onload=null},r.src=e}else t&&t.call(n,e)}function d(e,t){function n(e){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(e))]}function r(){++s===o&&t&&t(i)}var i=[],s=0,o=e.length;e.forEach(function(e,t){if(!e.type)return;var s=n(e.type);s.async?s.fromObject(e,function(e,n){n||(i[t]=e),r()}):(i[t]=s.fromObject(e),r())})}function v(e,t,n){var r;if(e.length>1){var i=e.some(function(e){return e.type==="text"});i?(r=new fabric.Group([],t),e.reverse().forEach(function(e){e.cx&&(e.left=e.cx),e.cy&&(e.top=e.cy),r.addWithUpdate(e)})):r=new fabric.PathGroup(e,t)}else r=e[0];return typeof n!="undefined"&&r.setSourcePath(n),r}function m(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),n[d?"lineTo":"moveTo"](r,0),d=!d;n.restore()}function y(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function b(e){var t=e.prototype;for(var n=t.stateProperties.length;n--;){var r=t.stateProperties[n],i=r.charAt(0).toUpperCase()+r.slice(1),s="set"+i,o="get"+i;t[o]||(t[o]=function(e){return new Function('return this.get("'+e+'")')}(r)),t[s]||(t[s]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(r))}}function w(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}var e=Math.sqrt,t=Math.atan2;fabric.util={};var i=Math.PI/180,c=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)},h=function(){return c.apply(fabric.window,arguments)};fabric.util.removeFromArray=n,fabric.util.degreesToRadians=s,fabric.util.radiansToDegrees=o,fabric.util.rotatePoint=u,fabric.util.toFixed=a,fabric.util.getRandomInt=r,fabric.util.falseFunction=f,fabric.util.animate=l,fabric.util.requestAnimFrame=h,fabric.util.loadImage=p,fabric.util.enlivenObjects=d,fabric.util.groupSVGElements=v,fabric.util.populateWithProperties=m,fabric.util.drawDashedLine=g,fabric.util.createCanvasElement=y,fabric.util.createAccessors=b,fabric.util.clipContext=w}(),function(){function t(t,n){var r=e.call(arguments,2),i=[];for(var s=0,o=t.length;s=r&&(r=e[n][t]);else while(n--)e[n]>=r&&(r=e[n]);return r}function r(e,t){if(!e||e.length===0)return undefined;var n=e.length-1,r=t?e[n][t]:e[n];if(t)while(n--)e[n][t]>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(t){var n=this.constructor.superclass.prototype[t];return arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this)}function o(){function u(){this.initialize.apply(this,arguments)}var n=null,o=e.call(arguments,0);typeof o[0]=="function"&&(n=o.shift()),u.superclass=n,u.subclasses=[],n&&(i.prototype=n.prototype,u.prototype=new i,n.subclasses.push(u));for(var a=0,f=o.length;a-1?e.prototype[i]=function(e){return function(){var n=this.constructor.superclass;this.constructor.superclass=r;var i=t[e].apply(this,arguments);this.constructor.superclass=n;if(e!=="initialize")return i}}(i):e.prototype[i]=t[i],n&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};fabric.util.createClass=o}(),function(){function e(e){var t=Array.prototype.slice.call(arguments,1),n,r,i=t.length;for(r=0;r-1?s(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if(r==="opacity")s(e,t[r]);else{var i=r==="float"||r==="cssFloat"?typeof n.styleFloat=="undefined"?"cssFloat":"styleFloat":r;n[i]=t[r]}return e}var t=fabric.document.createElement("div"),n=typeof t.style.opacity=="string",r=typeof t.style.filter=="string",i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(e){return e};n?s=function(e,t){return e.style.opacity=t,e}:r&&(s=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+t*100+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+t*100+")",e}),fabric.util.setStyle=e}(),function(){function t(e){return typeof e=="string"?fabric.document.getElementById(e):e}function s(e,t){var n=fabric.document.createElement(e);for(var r in t)r==="class"?n.className=t[r]:r==="for"?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function o(e,t){(" "+e.className+" ").indexOf(" "+t+" ")===-1&&(e.className+=(e.className?" ":"")+t)}function u(e,t,n){return typeof t=="string"&&(t=s(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t}function a(e){var t=0,n=0;do t+=e.offsetTop||0,n+=e.offsetLeft||0,e=e.offsetParent;while(e);return{left:n,top:t}}var e=Array.prototype.slice,n=function(t){return e.call(t,0)},r;try{r=n(fabric.document.childNodes)instanceof Array}catch(i){}r||(n=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t});var f;fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle?f=function(e){return fabric.document.defaultView.getComputedStyle(e,null).position}:f=function(e){var t=e.style.position;return!t&&e.currentStyle&&(t=e.currentStyle.position),t},function(){function n(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=fabric.util.falseFunction),t?e.style[t]="none":typeof e.unselectable=="string"&&(e.unselectable="on"),e}function r(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=null),t?e.style[t]="":typeof e.unselectable=="string"&&(e.unselectable=""),e}var e=fabric.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=n,fabric.util.makeElementSelectable=r}(),function(){function e(e,t){var n=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),i=!0;r.type="text/javascript",r.setAttribute("runat","server"),r.onload=r.onreadystatechange=function(e){if(i){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;i=!1,t(e||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=e,n.appendChild(r)}fabric.util.getScript=e}(),fabric.util.getById=t,fabric.util.toArray=n,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getElementOffset=a,fabric.util.getElementPosition=f}(),function(){function e(e,t){return e+(/\?/.test(e)?"&":"?")+t}function n(){}function r(r,i){i||(i={});var s=i.method?i.method.toUpperCase():"GET",o=i.onComplete||function(){},u=t(),a;return u.onreadystatechange=function(){u.readyState===4&&(o(u),u.onreadystatechange=n)},s==="GET"&&(a=null,typeof i.parameters=="string"&&(r=e(r,i.parameters))),u.open(s,r,!0),(s==="POST"||s==="PUT")&&u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),u.send(a),u}var t=function(){var e=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}];for(var t=e.length;t--;)try{var n=e[t]();if(n)return e[t]}catch(r){}}();fabric.util.request=r}(),function(){function e(e,t,n,r){return n*(e/=r)*e+t}function t(e,t,n,r){return-n*(e/=r)*(e-2)+t}function n(e,t,n,r){return e/=r/2,e<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e,t,n,r){return n*(e/=r)*e*e+t}function i(e,t,n,r){return n*((e=e/r-1)*e*e+1)+t}function s(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e+t:n/2*((e-=2)*e*e+2)+t}function o(e,t,n,r){return n*(e/=r)*e*e*e+t}function u(e,t,n,r){return-n*((e=e/r-1)*e*e*e-1)+t}function a(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e+t:-n/2*((e-=2)*e*e*e-2)+t}function f(e,t,n,r){return n*(e/=r)*e*e*e*e+t}function l(e,t,n,r){return n*((e=e/r-1)*e*e*e*e+1)+t}function c(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e*e+t:n/2*((e-=2)*e*e*e*e+2)+t}function h(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t}function p(e,t,n,r){return n*Math.sin(e/r*(Math.PI/2))+t}function d(e,t,n,r){return-n/2*(Math.cos(Math.PI*e/r)-1)+t}function v(e,t,n,r){return e===0?t:n*Math.pow(2,10*(e/r-1))+t}function m(e,t,n,r){return e===r?t+n:n*(-Math.pow(2,-10*e/r)+1)+t}function g(e,t,n,r){return e===0?t:e===r?t+n:(e/=r/2,e<1?n/2*Math.pow(2,10*(e-1))+t:n/2*(-Math.pow(2,-10*--e)+2)+t)}function y(e,t,n,r){return-n*(Math.sqrt(1-(e/=r)*e)-1)+t}function b(e,t,n,r){return n*Math.sqrt(1-(e=e/r-1)*e)+t}function w(e,t,n,r){return e/=r/2,e<1?-n/2*(Math.sqrt(1-e*e)-1)+t:n/2*(Math.sqrt(1-(e-=2)*e)+1)+t}function E(e,t,n,r){var i=1.70158,s=0,o=n;return e===0?t:(e/=r,e===1?t+n:(s||(s=r*.3),o-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){d.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),d.has(e,function(r){r?d.get(e,function(e){var t=m(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function m(e){var n=e.objects,i=e.options;return n=n.map(function(e){return t[r(e.type)].fromObject(e)}),{objects:n,options:i}}function g(e,n,r){e=e.trim();var i;if(typeof DOMParser!="undefined"){var s=new DOMParser;s&&s.parseFromString&&(i=s.parseFromString(e,"text/xml"))}else t.window.ActiveXObject&&(i=new ActiveXObject("Microsoft.XMLDOM"),i.async="false",i.loadXML(e.replace(//i,"")));t.parseSVGDocument(i.documentElement,function(e,t){n(e,t)},r)}function y(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t}function b(e){var t="";return e.backgroundColor&&e.backgroundColor.source&&(t=['',''].join("")),t}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s={cx:"left",x:"left",cy:"top",y:"top",r:"radius","fill-opacity":"opacity","fill-rule":"fillRule","stroke-width":"strokeWidth",transform:"transformMatrix","text-decoration":"textDecoration","font-size":"fontSize","font-weight":"fontWeight","font-style":"fontStyle","font-family":"fontFamily"};t.parseTransformAttribute=function(){function e(e,t){var n=t[0];e[0]=Math.cos(n),e[1]=Math.sin(n),e[2]=-Math.sin(n),e[3]=Math.cos(n)}function t(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function n(e,t){e[2]=t[0]}function r(e,t){e[1]=t[0]}function i(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var s=[1,0,0,1,0,0],o="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",u="(?:\\s+,?\\s*|,\\s*)",a="(?:(skewX)\\s*\\(\\s*("+o+")\\s*\\))",f="(?:(skewY)\\s*\\(\\s*("+o+")\\s*\\))",l="(?:(rotate)\\s*\\(\\s*("+o+")(?:"+u+"("+o+")"+u+"("+o+"))?\\s*\\))",c="(?:(scale)\\s*\\(\\s*("+o+")(?:"+u+"("+o+"))?\\s*\\))",h="(?:(translate)\\s*\\(\\s*("+o+")(?:"+u+"("+o+"))?\\s*\\))",p="(?:(matrix)\\s*\\(\\s*("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+"\\s*\\))",d="(?:"+p+"|"+h+"|"+c+"|"+l+"|"+a+"|"+f+")",v="(?:"+d+"(?:"+u+d+")*"+")",m="^\\s*(?:"+v+"?)\\s*$",g=new RegExp(m),y=new RegExp(d);return function(o){var u=s.concat();return!o||o&&!g.test(o)?u:(o.replace(y,function(s){var o=(new RegExp(d)).exec(s).filter(function(e){return e!==""&&e!=null}),a=o[1],f=o.slice(2).map(parseFloat);switch(a){case"translate":i(u,f);break;case"rotate":e(u,f);break;case"scale":t(u,f);break;case"skewX":n(u,f);break;case"skewY":r(u,f);break;case"matrix":u=f}}),u)}}(),t.parseSVGDocument=function(){function s(e,t){while(e&&(e=e.parentNode))if(t.test(e.nodeName))return!0;return!1}var e=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/,n="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",r=new RegExp("^\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*"+"$");return function(n,o,u){if(!n)return;var a=new Date,f=t.util.toArray(n.getElementsByTagName("*"));if(f.length===0){f=n.selectNodes("//*[name(.)!='svg']");var l=[];for(var c=0,p=f.length;c']:this.type==="radial"&&(i=["']);for(var s=0;s');return i.push(this.type==="linear"?"":""),i.join("")}}),fabric.util.object.extend(fabric.Gradient,{fromElement:function(n,r){var i=n.getElementsByTagName("stop"),s=n.nodeName==="linearGradient"?"linear":"radial",o=n.getAttribute("gradientUnits")||"objectBoundingBox",u=[],a={};s==="linear"?a={x1:n.getAttribute("x1")||0,y1:n.getAttribute("y1")||0,x2:n.getAttribute("x2")||"100%",y2:n.getAttribute("y2")||0}:s==="radial"&&(a={x1:n.getAttribute("fx")||n.getAttribute("cx")||"50%",y1:n.getAttribute("fy")||n.getAttribute("cy")||"50%",r1:0,x2:n.getAttribute("cx")||"50%",y2:n.getAttribute("cy")||"50%",r2:n.getAttribute("r")||"50%"});for(var f=i.length;f--;)u.push(e(i[f]));return t(r,a),new fabric.Gradient({type:s,coords:a,gradientUnits:o,colorStops:u})},forObject:function(e,n){return n||(n={}),t(e,n),new fabric.Gradient(n)}}),fabric.getGradientDefs=r}(),fabric.Pattern=fabric.util.createClass({repeat:"repeat",initialize:function(e){e||(e={}),e.source&&(this.source=typeof e.source=="string"?new Function(e.source):e.source),e.repeat&&(this.repeat=e.repeat)},toObject:function(){var e;return typeof this.source=="function"?e=String(this.source).match(/function\s+\w*\s*\(.*\)\s+\{([\s\S]*)\}/)[1]:typeof this.source.src=="string"&&(e=this.source.src),{source:e,repeat:this.repeat}},toLive:function(e){var t=typeof this.source=="function"?this.source():this.source;return e.createPattern(t,this.repeat)}}),fabric.Shadow=fabric.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,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)-1?s(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if(r==="opacity")s(e,t[r]);else{var i=r==="float"||r==="cssFloat"?typeof n.styleFloat=="undefined"?"cssFloat":"styleFloat":r;n[i]=t[r]}return e}var t=fabric.document.createElement("div"),n=typeof t.style.opacity=="string",r=typeof t.style.filter=="string",i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(e){return e};n?s=function(e,t){return e.style.opacity=t,e}:r&&(s=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+t*100+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+t*100+")",e}),fabric.util.setStyle=e}(),function(){function t(e){return typeof e=="string"?fabric.document.getElementById(e):e}function s(e,t){var n=fabric.document.createElement(e);for(var r in t)r==="class"?n.className=t[r]:r==="for"?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function o(e,t){(" "+e.className+" ").indexOf(" "+t+" ")===-1&&(e.className+=(e.className?" ":"")+t)}function u(e,t,n){return typeof t=="string"&&(t=s(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t}function a(e){var t=0,n=0;do t+=e.offsetTop||0,n+=e.offsetLeft||0,e=e.offsetParent;while(e);return{left:n,top:t}}var e=Array.prototype.slice,n=function(t){return e.call(t,0)},r;try{r=n(fabric.document.childNodes)instanceof Array}catch(i){}r||(n=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t});var f;fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle?f=function(e){return fabric.document.defaultView.getComputedStyle(e,null).position}:f=function(e){var t=e.style.position;return!t&&e.currentStyle&&(t=e.currentStyle.position),t},function(){function n(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=fabric.util.falseFunction),t?e.style[t]="none":typeof e.unselectable=="string"&&(e.unselectable="on"),e}function r(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=null),t?e.style[t]="":typeof e.unselectable=="string"&&(e.unselectable=""),e}var e=fabric.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=n,fabric.util.makeElementSelectable=r}(),function(){function e(e,t){var n=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),i=!0;r.type="text/javascript",r.setAttribute("runat","server"),r.onload=r.onreadystatechange=function(e){if(i){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;i=!1,t(e||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=e,n.appendChild(r)}fabric.util.getScript=e}(),fabric.util.getById=t,fabric.util.toArray=n,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getElementOffset=a,fabric.util.getElementPosition=f}(),function(){function e(e,t){return e+(/\?/.test(e)?"&":"?")+t}function n(){}function r(r,i){i||(i={});var s=i.method?i.method.toUpperCase():"GET",o=i.onComplete||function(){},u=t(),a;return u.onreadystatechange=function(){u.readyState===4&&(o(u),u.onreadystatechange=n)},s==="GET"&&(a=null,typeof i.parameters=="string"&&(r=e(r,i.parameters))),u.open(s,r,!0),(s==="POST"||s==="PUT")&&u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),u.send(a),u}var t=function(){var e=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}];for(var t=e.length;t--;)try{var n=e[t]();if(n)return e[t]}catch(r){}}();fabric.util.request=r}(),function(){function e(e,t,n,r){return n*(e/=r)*e+t}function t(e,t,n,r){return-n*(e/=r)*(e-2)+t}function n(e,t,n,r){return e/=r/2,e<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e,t,n,r){return n*(e/=r)*e*e+t}function i(e,t,n,r){return n*((e=e/r-1)*e*e+1)+t}function s(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e+t:n/2*((e-=2)*e*e+2)+t}function o(e,t,n,r){return n*(e/=r)*e*e*e+t}function u(e,t,n,r){return-n*((e=e/r-1)*e*e*e-1)+t}function a(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e+t:-n/2*((e-=2)*e*e*e-2)+t}function f(e,t,n,r){return n*(e/=r)*e*e*e*e+t}function l(e,t,n,r){return n*((e=e/r-1)*e*e*e*e+1)+t}function c(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e*e+t:n/2*((e-=2)*e*e*e*e+2)+t}function h(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t}function p(e,t,n,r){return n*Math.sin(e/r*(Math.PI/2))+t}function d(e,t,n,r){return-n/2*(Math.cos(Math.PI*e/r)-1)+t}function v(e,t,n,r){return e===0?t:n*Math.pow(2,10*(e/r-1))+t}function m(e,t,n,r){return e===r?t+n:n*(-Math.pow(2,-10*e/r)+1)+t}function g(e,t,n,r){return e===0?t:e===r?t+n:(e/=r/2,e<1?n/2*Math.pow(2,10*(e-1))+t:n/2*(-Math.pow(2,-10*--e)+2)+t)}function y(e,t,n,r){return-n*(Math.sqrt(1-(e/=r)*e)-1)+t}function b(e,t,n,r){return n*Math.sqrt(1-(e=e/r-1)*e)+t}function w(e,t,n,r){return e/=r/2,e<1?-n/2*(Math.sqrt(1-e*e)-1)+t:n/2*(Math.sqrt(1-(e-=2)*e)+1)+t}function E(e,t,n,r){var i=1.70158,s=0,o=n;return e===0?t:(e/=r,e===1?t+n:(s||(s=r*.3),o-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){d.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),d.has(e,function(r){r?d.get(e,function(e){var t=m(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function m(e){var n=e.objects,i=e.options;return n=n.map(function(e){return t[r(e.type)].fromObject(e)}),{objects:n,options:i}}function g(e,n,r){e=e.trim();var i;if(typeof DOMParser!="undefined"){var s=new DOMParser;s&&s.parseFromString&&(i=s.parseFromString(e,"text/xml"))}else t.window.ActiveXObject&&(i=new ActiveXObject("Microsoft.XMLDOM"),i.async="false",i.loadXML(e.replace(//i,"")));t.parseSVGDocument(i.documentElement,function(e,t){n(e,t)},r)}function y(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t}function b(e){var t="";return e.backgroundColor&&e.backgroundColor.source&&(t=['',''].join("")),t}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s={cx:"left",x:"left",cy:"top",y:"top",r:"radius","fill-opacity":"opacity","fill-rule":"fillRule","stroke-width":"strokeWidth",transform:"transformMatrix","text-decoration":"textDecoration","font-size":"fontSize","font-weight":"fontWeight","font-style":"fontStyle","font-family":"fontFamily"};t.parseTransformAttribute=function(){function e(e,t){var n=t[0];e[0]=Math.cos(n),e[1]=Math.sin(n),e[2]=-Math.sin(n),e[3]=Math.cos(n)}function t(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function n(e,t){e[2]=t[0]}function r(e,t){e[1]=t[0]}function i(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var s=[1,0,0,1,0,0],o="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",u="(?:\\s+,?\\s*|,\\s*)",a="(?:(skewX)\\s*\\(\\s*("+o+")\\s*\\))",f="(?:(skewY)\\s*\\(\\s*("+o+")\\s*\\))",l="(?:(rotate)\\s*\\(\\s*("+o+")(?:"+u+"("+o+")"+u+"("+o+"))?\\s*\\))",c="(?:(scale)\\s*\\(\\s*("+o+")(?:"+u+"("+o+"))?\\s*\\))",h="(?:(translate)\\s*\\(\\s*("+o+")(?:"+u+"("+o+"))?\\s*\\))",p="(?:(matrix)\\s*\\(\\s*("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+"\\s*\\))",d="(?:"+p+"|"+h+"|"+c+"|"+l+"|"+a+"|"+f+")",v="(?:"+d+"(?:"+u+d+")*"+")",m="^\\s*(?:"+v+"?)\\s*$",g=new RegExp(m),y=new RegExp(d);return function(o){var u=s.concat();return!o||o&&!g.test(o)?u:(o.replace(y,function(s){var o=(new RegExp(d)).exec(s).filter(function(e){return e!==""&&e!=null}),a=o[1],f=o.slice(2).map(parseFloat);switch(a){case"translate":i(u,f);break;case"rotate":e(u,f);break;case"scale":t(u,f);break;case"skewX":n(u,f);break;case"skewY":r(u,f);break;case"matrix":u=f}}),u)}}(),t.parseSVGDocument=function(){function s(e,t){while(e&&(e=e.parentNode))if(t.test(e.nodeName))return!0;return!1}var e=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/,n="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",r=new RegExp("^\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*"+"$");return function(n,o,u){if(!n)return;var a=new Date,f=t.util.toArray(n.getElementsByTagName("*"));if(f.length===0){f=n.selectNodes("//*[name(.)!='svg']");var l=[];for(var c=0,p=f.length;c']:this.type==="radial"&&(i=["']);for(var s=0;s');return i.push(this.type==="linear"?"":""),i.join("")}}),fabric.util.object.extend(fabric.Gradient,{fromElement:function(n,r){var i=n.getElementsByTagName("stop"),s=n.nodeName==="linearGradient"?"linear":"radial",o=n.getAttribute("gradientUnits")||"objectBoundingBox",u=[],a={};s==="linear"?a={x1:n.getAttribute("x1")||0,y1:n.getAttribute("y1")||0,x2:n.getAttribute("x2")||"100%",y2:n.getAttribute("y2")||0}:s==="radial"&&(a={x1:n.getAttribute("fx")||n.getAttribute("cx")||"50%",y1:n.getAttribute("fy")||n.getAttribute("cy")||"50%",r1:0,x2:n.getAttribute("cx")||"50%",y2:n.getAttribute("cy")||"50%",r2:n.getAttribute("r")||"50%"});for(var f=i.length;f--;)u.push(e(i[f]));return t(r,a),new fabric.Gradient({type:s,coords:a,gradientUnits:o,colorStops:u})},forObject:function(e,n){return n||(n={}),t(e,n),new fabric.Gradient(n)}}),fabric.getGradientDefs=r}(),fabric.Pattern=fabric.util.createClass({repeat:"repeat",initialize:function(e){e||(e={}),e.source&&(this.source=typeof e.source=="string"?new Function(e.source):e.source),e.repeat&&(this.repeat=e.repeat)},toObject:function(){var e;return typeof this.source=="function"?e=String(this.source).match(/function\s+\w*\s*\(.*\)\s+\{([\s\S]*)\}/)[1]:typeof this.source.src=="string"&&(e=this.source.src),{source:e,repeat:this.repeat}},toLive:function(e){var t=typeof this.source=="function"?this.source():this.source;return e.createPattern(t,this.repeat)}}),fabric.Shadow=fabric.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,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;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},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){if(t.Image){var n=new o;n.onload=function(){e&&e(new t.Image(n),r),n=n.onload=null};var r={angle:this.getAngle(),flipX:this.getFlipX(),flipY:this.getFlipY()};this.set({angle:0,flipX:!1,flipY:!1}),this.toDataURL(function(e){n.src=e})}return this},toDataURL:function(e){function i(t){t.left=n.width/2,t.top=n.height/2,t.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())},hasStateChanged:function(){return this.stateProperties.some(function(e){return this[e]!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){this.originalState={},this.saveState()},isType:function(e){return this.type===e},toGrayscale:function(){var e=this.get("fill");return e&&this.set("overlayFill",(new t.Color(e)).toGrayscale().toRgb()),this},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){this.set("fill",new t.Pattern(e))},setShadow:function(e){this.set("shadow",new t.Shadow(e))},animate:function(){if(arguments[0]&&typeof arguments[0]=="object"){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:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords(),this}})}(),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner,a),o=this._findCrossPoints(i,s,u);if(o%2===1&&o!==0)return this.__corner=a,a}return!1},_findCrossPoints:function(e,t,n){var r,i,s,o,u,a,f=0,l;for(var c in n){l=n[c];if(l.o.y=t&&l.d.y>=t)continue;l.o.x===l.d.x&&l.o.x>=e?(u=l.o.x,a=t):(r=0,i=(l.d.y-l.o.y)/(l.d.x-l.o.x),s=t-r*e,o=l.o.y-i*l.o.x,u=-(s-o)/(r-i),a=s+r*u),u>=e&&(f+=1);if(f===2)break}return f},_getImageLines:function(e){return{topline:{o:e.tl,d:e.tr},rightline:{o:e.tr,d:e.br},bottomline:{o:e.br,d:e.bl},leftline:{o:e.bl,d:e.tl}}},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return;var t=this.padding,n=t*2,r=this.strokeWidth>1?this.strokeWidth:0;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)+.5,~~(-(u/2)-t-r/2*this.scaleY)+.5,~~(o+n+r*this.scaleX),~~(u+n+r*this.scaleY));if(this.hasRotatingPoint&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return;var t=this.cornerSize,n=t/2,r=this.strokeWidth/2,i=-(this.width/2),s=-(this.height/2),o,u,a=t/this.scaleX,f=t/this.scaleY,l=this.padding/this.scaleX,c=this.padding/this.scaleY,h=n/this.scaleY,p=n/this.scaleX,d=(n-t)/this.scaleX,v=(n-t)/this.scaleY,m=this.height,g=this.width,y=this.transparentCorners?"strokeRect":"fillRect",b=typeof G_vmlCanvasManager!="undefined";return e.save(),e.lineWidth=1/Math.max(this.scaleX,this.scaleY),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=e.fillStyle=this.cornerColor,o=i-p-r-l,u=s-h-r-c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m+v+r+c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),this.get("lockUniScaling")||(o=i+g/2-p,u=s-h-r-c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),this.hasRotatingPoint&&(o=i+g/2-p,u=this.flipY?s+m+this.rotatingPointOffset/this.scaleY-f/2+r+c:s-this.rotatingPointOffset/this.scaleY-f/2-r-c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),e.restore(),this}})}(),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r={x1:1,x2:1,y1:1,y2:1};if(t.Line){t.warn("fabric.Line is already defined");return}t.Line=t.util.createClass(t.Object,{type:"line",initialize:function(e,t){t=t||{},e||(e=[0,0,0,0]),this.callSuper("initialize",t),this.set("x1",e[0]),this.set("y1",e[1]),this.set("x2",e[2]),this.set("y2",e[3]),this._setWidthHeight(t)},_setWidthHeight:function(e){e||(e={}),this.set("width",this.x2-this.x1||1),this.set("height",this.y2-this.y1||1),this.set("left","left"in e?e.left:this.x1+this.width/2),this.set("top","top"in e?e.top:this.y1+this.height/2)},_set:function(e,t){return this[e]=t,e in r&&this._setWidthHeight(),this},_render:function(e){e.beginPath();var t=this.group&&this.group.type!=="group";t&&e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top),e.moveTo(this.width===1?0:-this.width/2,this.height===1?0:-this.height/2),e.lineTo(this.width===1?0:this.width/2,this.height===1?0:this.height/2),e.lineWidth=this.strokeWidth;var n=e.strokeStyle;e.strokeStyle=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.fill&&e.fill(),this._removeShadow(e),this.stroke&&e.stroke()},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this.fill&&e.fill(),this.stroke&&e.stroke()},complexity:function(){return 1},toSVG:function(){var e=[],t=this.width/2,n=this.height/2,r=[-t+" "+n,"0 "+ -n,t+" "+n].join(",");return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!0)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!0)),e.push("'),e.join("")}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this.stroke&&e.stroke(),this._removeShadow(e),this.fill&&e.fill(),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function r(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}t.Rect=t.util.createClass(t.Object,{type:"rect",rx:0,ry:0,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.fill&&e.fill(),this._removeShadow(e),this.strokeDashArray?this._renderDashedStroke(e):this.stroke&&e.stroke()},_renderDashedStroke:function(e){function u(u,a){var f=0,l=0,c=(a?i.height:i.width)+s*2;while(fc&&(l=f-c),u?n+=h*u-(l*u||0):r+=h*a-(l*a||0),e[1&t?"moveTo":"lineTo"](n,r),t>=o&&(t=0)}}1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray);var t=0,n=-this.width/2,r=-this.height/2,i=this,s=this.padding,o=this.strokeDashArray.length;e.save(),e.beginPath(),u(1,0),u(0,1),u(-1,0),u(0,-1),e.stroke(),e.closePath(),e.restore()},_normalizeLeftTopProperties:function(e){return e.left&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),e.top&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},complexity:function(){return 1},toObject:function(e){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")}}),t.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Rect.fromElement=function(e,i){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=r(s);var o=new t.Rect(n(i?t.util.object.clone(i):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(){var e=[],t=[];for(var r=0,i=this.points.length;r'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n1&&(g=Math.sqrt(g),n*=g,i*=g);var y=d/n,b=p/n,w=-p/i,E=d/i,S=y*l+b*c,x=w*l+E*c,T=y*e+b*t,N=w*e+E*t,C=(T-S)*(T-S)+(N-x)*(N-x),k=1/C-.25;k<0&&(k=0);var L=Math.sqrt(k);a===u&&(L=-L);var A=.5*(S+T)-L*(N-x),O=.5*(x+N)+L*(T-S),M=Math.atan2(x-O,S-A),_=Math.atan2(N-O,T-A),D=_-M;D<0&&a===1?D+=2*Math.PI:D>0&&a===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B"},toObject:function(e){var t=h(this.callSuper("toObject",e),{path:this.path});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(){var e=[],t=[];for(var n=0,r=this.path.length;n',"",""),t.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n,r,i;for(var s=0,o,u=this.path.length;sc)for(var h=1,p=o.length;h"];for(var n=0,r=e.length;n"),t.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},toGrayscale:function(){var e=this.paths.length;while(e--)this.paths[e].toGrayscale();return this},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e){var n=u(e.paths);return new t.PathGroup(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;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=typeof Buffer!="undefined"&&typeof window=="undefined",n=this._originalImage,r=fabric.util.createCanvasElement(),i=t?new(require("canvas").Image):fabric.document.createElement("img"),s=this;r.width=n.width,r.height=n.height,r.getContext("2d").drawImage(n,0,0,n.width,n.height),this.filters.forEach(function(e){e&&e.applyTo(r)}),i.onload=function(){s._element=i,e&&e(),i.onload=r=n=null},i.width=n.width,i.height=n.height;if(t){var o=r.toDataURL("image/png").substring(22);i.src=new Buffer(o,"base64"),s._element=i,e&&e()}else i.src=r.toDataURL("image/png");return this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e){e.filters&&e.filters.length&&(this.filters=e.filters.map(function(e){return e&&fabric.Image.filters[e.type].fromObject(e)}))},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){var n=fabric.document.createElement("img"),r=e.src;e.width&&(n.width=e.width),e.height&&(n.height=e.height),n.onload=function(){fabric.Image.prototype._initFilters.call(e,e);var r=new fabric.Image(n,e);t&&t(r),n=n.onload=n.onerror=null},n.onerror=function(){fabric.log("Error loading "+n.src),t&&t(null,!0),n=n.onload=n.onerror=null},n.src=r},fabric.Image.fromURL=function(e,t,n){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){typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_renderViaNative:function(e){this.transform(e),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?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 +n.objects)return;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;e.backgroundImage?this.setBackgroundImage(e.backgroundImage,function(){n.backgroundImageOpacity=e.backgroundImageOpacity,n.backgroundImageStretch=e.backgroundImageStretch,n.renderAll(),i=!0,t&&s&&r&&t()}):i=!0,e.overlayImage?this.setOverlayImage(e.overlayImage,function(){n.overlayImageLeft=e.overlayImageLeft||0,n.overlayImageTop=e.overlayImageTop||0,n.renderAll(),s=!0,t&&i&&r&&t()}):s=!0,e.background?this.setBackgroundColor(e.background,function(){n.renderAll(),r=!0,t&&s&&i&&t()}):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;var o=e.Image;try{var u=typeof require!="undefined"&&require("canvas").Image;u&&(o=u)}catch(a){t.log(a)}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,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: ",this.opacity?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},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){if(t.Image){var n=new o;n.onload=function(){e&&e(new t.Image(n),r),n=n.onload=null};var r={angle:this.getAngle(),flipX:this.getFlipX(),flipY:this.getFlipY()};this.set({angle:0,flipX:!1,flipY:!1}),this.toDataURL(function(e){n.src=e})}return this},toDataURL:function(e){function i(t){t.left=n.width/2,t.top=n.height/2,t.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())},hasStateChanged:function(){return this.stateProperties.some(function(e){return this[e]!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){this.originalState={},this.saveState()},isType:function(e){return this.type===e},toGrayscale:function(){var e=this.get("fill");return e&&this.set("overlayFill",(new t.Color(e)).toGrayscale().toRgb()),this},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){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:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords(),this}})}(),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner,a),o=this._findCrossPoints(i,s,u);if(o%2===1&&o!==0)return this.__corner=a,a}return!1},_findCrossPoints:function(e,t,n){var r,i,s,o,u,a,f=0,l;for(var c in n){l=n[c];if(l.o.y=t&&l.d.y>=t)continue;l.o.x===l.d.x&&l.o.x>=e?(u=l.o.x,a=t):(r=0,i=(l.d.y-l.o.y)/(l.d.x-l.o.x),s=t-r*e,o=l.o.y-i*l.o.x,u=-(s-o)/(r-i),a=s+r*u),u>=e&&(f+=1);if(f===2)break}return f},_getImageLines:function(e){return{topline:{o:e.tl,d:e.tr},rightline:{o:e.tr,d:e.br},bottomline:{o:e.br,d:e.bl},leftline:{o:e.bl,d:e.tl}}},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return;var t=this.padding,n=t*2,r=this.strokeWidth>1?this.strokeWidth:0;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)+.5,~~(-(u/2)-t-r/2*this.scaleY)+.5,~~(o+n+r*this.scaleX),~~(u+n+r*this.scaleY));if(this.hasRotatingPoint&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return;var t=this.cornerSize,n=t/2,r=this.strokeWidth/2,i=-(this.width/2),s=-(this.height/2),o,u,a=t/this.scaleX,f=t/this.scaleY,l=this.padding/this.scaleX,c=this.padding/this.scaleY,h=n/this.scaleY,p=n/this.scaleX,d=(n-t)/this.scaleX,v=(n-t)/this.scaleY,m=this.height,g=this.width,y=this.transparentCorners?"strokeRect":"fillRect",b=typeof G_vmlCanvasManager!="undefined";return e.save(),e.lineWidth=1/Math.max(this.scaleX,this.scaleY),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=e.fillStyle=this.cornerColor,o=i-p-r-l,u=s-h-r-c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m+v+r+c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),this.get("lockUniScaling")||(o=i+g/2-p,u=s-h-r-c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),this.hasRotatingPoint&&(o=i+g/2-p,u=this.flipY?s+m+this.rotatingPointOffset/this.scaleY-f/2+r+c:s-this.rotatingPointOffset/this.scaleY-f/2-r-c,b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),e.restore(),this}})}(),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r={x1:1,x2:1,y1:1,y2:1};if(t.Line){t.warn("fabric.Line is already defined");return}t.Line=t.util.createClass(t.Object,{type:"line",initialize:function(e,t){t=t||{},e||(e=[0,0,0,0]),this.callSuper("initialize",t),this.set("x1",e[0]),this.set("y1",e[1]),this.set("x2",e[2]),this.set("y2",e[3]),this._setWidthHeight(t)},_setWidthHeight:function(e){e||(e={}),this.set("width",this.x2-this.x1||1),this.set("height",this.y2-this.y1||1),this.set("left","left"in e?e.left:this.x1+this.width/2),this.set("top","top"in e?e.top:this.y1+this.height/2)},_set:function(e,t){return this[e]=t,e in r&&this._setWidthHeight(),this},_render:function(e){e.beginPath();var t=this.group&&this.group.type!=="group";t&&e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top),e.moveTo(this.width===1?0:-this.width/2,this.height===1?0:-this.height/2),e.lineTo(this.width===1?0:this.width/2,this.height===1?0:this.height/2),e.lineWidth=this.strokeWidth;var n=e.strokeStyle;e.strokeStyle=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.fill&&e.fill(),this._removeShadow(e),this.stroke&&e.stroke()},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this.fill&&e.fill(),this.stroke&&e.stroke()},complexity:function(){return 1},toSVG:function(){var e=[],t=this.width/2,n=this.height/2,r=[-t+" "+n,"0 "+ -n,t+" "+n].join(",");return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!0)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!0)),e.push("'),e.join("")}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this.stroke&&e.stroke(),this._removeShadow(e),this.fill&&e.fill(),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function r(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}t.Rect=t.util.createClass(t.Object,{type:"rect",rx:0,ry:0,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.fill&&e.fill(),this._removeShadow(e),this.strokeDashArray?this._renderDashedStroke(e):this.stroke&&e.stroke()},_renderDashedStroke:function(e){function u(u,a){var f=0,l=0,c=(a?i.height:i.width)+s*2;while(fc&&(l=f-c),u?n+=h*u-(l*u||0):r+=h*a-(l*a||0),e[1&t?"moveTo":"lineTo"](n,r),t>=o&&(t=0)}}1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray);var t=0,n=-this.width/2,r=-this.height/2,i=this,s=this.padding,o=this.strokeDashArray.length;e.save(),e.beginPath(),u(1,0),u(0,1),u(-1,0),u(0,-1),e.stroke(),e.closePath(),e.restore()},_normalizeLeftTopProperties:function(e){return e.left&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),e.top&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},complexity:function(){return 1},toObject:function(e){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")}}),t.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Rect.fromElement=function(e,i){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=r(s);var o=new t.Rect(n(i?t.util.object.clone(i):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(){var e=[],t=[];for(var r=0,i=this.points.length;r'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n1&&(g=Math.sqrt(g),n*=g,i*=g);var y=d/n,b=p/n,w=-p/i,E=d/i,S=y*l+b*c,x=w*l+E*c,T=y*e+b*t,N=w*e+E*t,C=(T-S)*(T-S)+(N-x)*(N-x),k=1/C-.25;k<0&&(k=0);var L=Math.sqrt(k);a===u&&(L=-L);var A=.5*(S+T)-L*(N-x),O=.5*(x+N)+L*(T-S),M=Math.atan2(x-O,S-A),_=Math.atan2(N-O,T-A),D=_-M;D<0&&a===1?D+=2*Math.PI:D>0&&a===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B"},toObject:function(e){var t=h(this.callSuper("toObject",e),{path:this.path});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(){var e=[],t=[];for(var n=0,r=this.path.length;n',"",""),t.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n,r,i;for(var s=0,o,u=this.path.length;sc)for(var h=1,p=o.length;h"];for(var n=0,r=e.length;n"),t.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},toGrayscale:function(){var e=this.paths.length;while(e--)this.paths[e].toGrayscale();return this},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e){var n=u(e.paths);return new t.PathGroup(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;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=typeof Buffer!="undefined"&&typeof window=="undefined",n=this._originalImage,r=fabric.util.createCanvasElement(),i=t?new(require("canvas").Image):fabric.document.createElement("img"),s=this;r.width=n.width,r.height=n.height,r.getContext("2d").drawImage(n,0,0,n.width,n.height),this.filters.forEach(function(e){e&&e.applyTo(r)}),i.onload=function(){s._element=i,e&&e(),i.onload=r=n=null},i.width=n.width,i.height=n.height;if(t){var o=r.toDataURL("image/png").substring(22);i.src=new Buffer(o,"base64"),s._element=i,e&&e()}else i.src=r.toDataURL("image/png");return this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e){e.filters&&e.filters.length&&(this.filters=e.filters.map(function(e){return e&&fabric.Image.filters[e.type].fromObject(e)}))},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){var n=fabric.document.createElement("img"),r=e.src;e.width&&(n.width=e.width),e.height&&(n.height=e.height),n.onload=function(){fabric.Image.prototype._initFilters.call(e,e);var r=new fabric.Image(n,e);t&&t(r),n=n.onload=n.onerror=null},n.onerror=function(){fabric.log("Error loading "+n.src),t&&t(null,!0),n=n.onload=n.onerror=null},n.src=r},fabric.Image.fromURL=function(e,t,n){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){typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_renderViaNative:function(e){this.transform(e),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?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 2d1a1dffa20bf48c3cbc1c51fcccc23464b9be4b..b39efcc3030dc209640c543c02d88b5ab708b53c 100644 GIT binary patch delta 33487 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 TUw44*4aWZ;9FGO8f}jEb*rnfi delta 33484 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 Q_6Fns55sn)hH{_+00@Lt@&Et;