From 8bd52f98fb26ec00da67ff7ba721317fc1b10812 Mon Sep 17 00:00:00 2001 From: kangax Date: Sat, 30 Mar 2013 01:36:38 +0100 Subject: [PATCH] Build distribution --- dist/all.js | 49 +++++++++++++-------------------------------- dist/all.min.js | 8 ++++---- dist/all.min.js.gz | Bin 47108 -> 47123 bytes 3 files changed, 18 insertions(+), 39 deletions(-) diff --git a/dist/all.js b/dist/all.js index 35b9c41c..1e37ff65 100644 --- a/dist/all.js +++ b/dist/all.js @@ -8289,6 +8289,8 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @scope fab * @method _setupCurrentTransform */ _setupCurrentTransform: function (e, target) { + if (!target) return; + var action = 'drag', corner, pointer = getPointer(e, target.canvas.upperCanvasEl); @@ -9315,25 +9317,6 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @scope fab // rotate object only if shift key is not pressed // and if it is not a group we are transforming - // TODO - /*if (!e.shiftKey) { - this._rotateObject(x, y); - - this.fire('object:rotating', { - target: this._currentTransform.target, - e: e - }); - this._currentTransform.target.fire('rotating'); - }*/ - - // if (!this._currentTransform.target.hasRotatingPoint) { - // this._scaleObject(x, y); - // this.fire('object:scaling', { - // target: this._currentTransform.target - // }); - // this._currentTransform.target.fire('scaling'); - // } - if (e.shiftKey || this.uniScaleTransform) { this._currentTransform.currentAction = 'scale'; this._scaleObject(x, y); @@ -9354,13 +9337,6 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @scope fab }); this._currentTransform.target.fire('scaling', { e: e }); } - // else if (this._currentTransform.action === 'scale') { - // this._scaleObject(x, y); - // this.fire('object:scaling', { - // target: this._currentTransform.target - // }); - // this._currentTransform.target.fire('scaling'); - // } else if (this._currentTransform.action === 'scaleX') { this._scaleObject(x, y, 'x'); @@ -9386,12 +9362,10 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @scope fab target: this._currentTransform.target, e: e }); - - this._setCursor(this.moveCursor); - this._currentTransform.target.fire('moving', { e: e }); + this._setCursor(this.moveCursor); } - // only commit here. when we are actually moving the pictures + this.renderAll(); } this.fire('mouse:move', { target: target, e: e }); @@ -14590,6 +14564,8 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati this._restoreObjectsState(); this._objects.push(object); object.group = this; + // since _restoreObjectsState set objects inactive + this.forEachObject(function(o){ o.set('active', true) }); this._calcBounds(); this._updateObjectsCoords(); return this; @@ -14604,8 +14580,10 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati */ removeWithUpdate: function(object) { this._restoreObjectsState(); + // since _restoreObjectsState set objects inactive + this.forEachObject(function(o){ o.set('active', true) }); + this.remove(object); - object.set('active', false); this._calcBounds(); this._updateObjectsCoords(); return this; @@ -14623,6 +14601,7 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati */ _onObjectRemoved: function(object) { delete object.group; + object.set('active', false); }, /** @@ -14690,9 +14669,9 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @scope fabric.Stati this.clipTo && fabric.util.clipContext(this, ctx); //The array is now sorted in order of highest first, so start from end. - for (var i = this._objects.length; i > 0; i--) { + for (var i = 0, len = this._objects.length; i < len; i++) { - var object = this._objects[i-1], + var object = this._objects[i], originalScaleFactor = object.borderScaleFactor, originalHasRotatingPoint = object.hasRotatingPoint; @@ -16211,8 +16190,8 @@ fabric.Image.filters.Pixelate = fabric.util.createClass(/** @scope fabric.Image. var context = canvasEl.getContext('2d'), imageData = context.getImageData(0, 0, canvasEl.width, canvasEl.height), data = imageData.data, - iLen = imageData.width, - jLen = imageData.height, + iLen = imageData.height, + jLen = imageData.width, index, i, j, r, g, b, a; for (i = 0; i < iLen; i += this.blocksize) { diff --git a/dist/all.min.js b/dist/all.min.js index 7a72a1ac..6a6a7736 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.5"};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)',''),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")for(var e in arguments[0])this._animate(e,arguments[0][e],arguments[1]);else this._animate.apply(this,arguments);return this},_animate:function(e,n,r){var i=this,s;n=n.toString(),r?r=t.util.object.clone(r):r={},~e.indexOf(".")&&(s=e.split("."));var o=s?this.get(s[0])[s[1]]:this.get(e);"from"in r||(r.from=o),~n.indexOf("=")?n=o+parseFloat(n.replace("=","")):n=parseFloat(n),t.util.animate({startValue:r.from,endValue:n,byValue:r.by,easing:r.easing,duration:r.duration,onChange:function(t){s?i[s[0]][s[1]]=t:i.set(e,t),r.onChange&&r.onChange()},onComplete:function(){i.setCoords(),r.onComplete&&r.onComplete()}})},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.centerH().centerV()},remove:function(){return this.canvas.remove(this)},sendToBack:function(){return this.group?t.StaticCanvas.prototype.sendToBack.call(this.group,this):this.canvas.sendToBack(this),this},bringToFront:function(){return this.group?t.StaticCanvas.prototype.bringToFront.call(this.group,this):this.canvas.bringToFront(this),this},sendBackwards:function(){return this.group?t.StaticCanvas.prototype.sendBackwards.call(this.group,this):this.canvas.sendBackwards(this),this},bringForward:function(){return this.group?t.StaticCanvas.prototype.bringForward.call(this.group,this):this.canvas.bringForward(this),this},moveTo:function(e){return this.group?t.StaticCanvas.prototype.moveTo.call(this.group,this,e):this.canvas.moveTo(this,e),this}}),t.util.createAccessors(t.Object),t.Object.prototype.rotate=t.Object.prototype.setAngle,n(t.Object.prototype,t.Observable),t.Object.NUM_FRACTION_DIGITS=2,t.Object.__uid=0}(typeof exports!="undefined"?exports:this),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{translateToCenterPoint:function(t,n,r){var i=t.x,s=t.y;return n==="left"?i=t.x+this.getWidth()/2:n==="right"&&(i=t.x-this.getWidth()/2),r==="top"?s=t.y+this.getHeight()/2:r==="bottom"&&(s=t.y-this.getHeight()/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},translateToOriginPoint:function(t,n,r){var i=t.x,s=t.y;return n==="left"?i=t.x-this.getWidth()/2:n==="right"&&(i=t.x+this.getWidth()/2),r==="top"?s=t.y-this.getHeight()/2:r==="bottom"&&(s=t.y+this.getHeight()/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},getCenterPoint:function(){return this.translateToCenterPoint(new fabric.Point(this.left,this.top),this.originX,this.originY)},toLocalPoint:function(t,n,r){var i=this.getCenterPoint(),s,o;return n!==undefined&&r!==undefined?(n==="left"?s=i.x-this.getWidth()/2:n==="right"?s=i.x+this.getWidth()/2:s=i.x,r==="top"?o=i.y-this.getHeight()/2:r==="bottom"?o=i.y+this.getHeight()/2:o=i.y):(s=this.left,o=this.top),fabric.util.rotatePoint(new fabric.Point(t.x,t.y),i,-e(this.angle)).subtractEquals(new fabric.Point(s,o))},setPositionByOrigin:function(e,t,n){var r=this.translateToCenterPoint(e,t,n),i=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",i.x),this.set("top",i.y)},adjustPosition:function(t){var n=e(this.angle),r=this.getWidth()/2,i=Math.cos(n)*r,s=Math.sin(n)*r,o=this.getWidth(),u=Math.cos(n)*o,a=Math.sin(n)*o;this.originX==="center"&&t==="left"||this.originX==="right"&&t==="center"?(this.left-=i,this.top-=s):this.originX==="left"&&t==="center"||this.originX==="center"&&t==="right"?(this.left+=i,this.top+=s):this.originX==="left"&&t==="right"?(this.left+=u,this.top+=a):this.originX==="right"&&t==="left"&&(this.left-=u,this.top-=a),this.setCoords(),this.originX=t}})}(),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{intersectsWithRect:function(e,t){var n=this.oCoords,r=new fabric.Point(n.tl.x,n.tl.y),i=new fabric.Point(n.tr.x,n.tr.y),s=new fabric.Point(n.bl.x,n.bl.y),o=new fabric.Point(n.br.x,n.br.y),u=fabric.Intersection.intersectPolygonRectangle([r,i,o,s],e,t);return u.status==="Intersection"},intersectsWithObject:function(e){function t(e){return{tl:new fabric.Point(e.tl.x,e.tl.y),tr:new fabric.Point(e.tr.x,e.tr.y),bl:new fabric.Point(e.bl.x,e.bl.y),br:new fabric.Point(e.br.x,e.br.y)}}var n=t(this.oCoords),r=t(e.oCoords),i=fabric.Intersection.intersectPolygonPolygon([n.tl,n.tr,n.br,n.bl],[r.tl,r.tr,r.br,r.bl]);return i.status==="Intersection"},isContainedWithinObject:function(e){return this.isContainedWithinRect(e.oCoords.tl,e.oCoords.br)},isContainedWithinRect:function(e,t){var n=this.oCoords,r=new fabric.Point(n.tl.x,n.tl.y),i=new fabric.Point(n.tr.x,n.tr.y),s=new fabric.Point(n.bl.x,n.bl.y);return r.x>e.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(),this.group&&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 t=e.strokeStyle;e.strokeStyle=e.fillStyle,e.stroke(),e.strokeStyle=t},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,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,pathOffset:this.pathOffset});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(){var e=[],t=[];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._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),this.remove(e),e.set("active",!1),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group},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=this._objects.length;i>0;i--){var s=this._objects[i-1],o=s.borderScaleFactor,u=s.hasRotatingPoint;if(!s.visible)continue;s.borderScaleFactor=r,s.hasRotatingPoint=!1,s.render(e),s.borderScaleFactor=o,s.hasRotatingPoint=u}this.clipTo&&e.restore(),!n&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore(),this.setCoords()},_restoreObjectsState:function(){return this._objects.forEach(this._restoreObjectState,this),this},_restoreObjectState:function(e){var t=this.get("left"),n=this.get("top"),r=this.getAngle()*(Math.PI/180),i=Math.cos(r)*e.get("top")+Math.sin(r)*e.get("left"),s=-Math.sin(r)*e.get("top")+Math.cos(r)*e.get("left");return e.setAngle(e.getAngle()+this.getAngle()),e.set("left",t+s*this.get("scaleX")),e.set("top",n+i*this.get("scaleY")),e.set("scaleX",e.get("scaleX")*this.get("scaleX")),e.set("scaleY",e.get("scaleY")*this.get("scaleY")),e.setCoords(),e.hasControls=e.__origHasControls,delete e.__origHasControls,e.set("active",!1),e.setCoords(),delete e.group,this},destroy:function(){return this._restoreObjectsState()},saveCoords:function(){return this._originalLeft=this.get("left"),this._originalTop=this.get("top"),this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){return this.forEachObject(function(e){e.setCoords()}),this},_setOpacityIfSame:function(){var e=this.getObjects(),t=e[0]?e[0].get("opacity"):1,n=e.every(function(e){return e.get("opacity")===t});n&&(this.opacity=t)},_calcBounds:function(){var e=[],t=[],n,s,o,u,a,f,l,c=0,h=this._objects.length;for(;ce.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,strokeStyle:this.strokeStyle,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,strokeStyle:this.strokeStyle,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),i=HTTP.request({hostname:r.hostname,port:r.port||80,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)})});i.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),i.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"),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 +("toDataURLWithQuality")?n.toDataURL("image/"+e,t):n.toDataURL("image/"+e);return this.contextTop&&this.clearContext(this.contextTop),this.renderAll(),r},__toDataURLWithMultiplier:function(e,t,n){var r=this.getWidth(),i=this.getHeight(),s=r*n,o=i*n,u=this.getActiveObject(),a=this.getActiveGroup(),f=this.contextTop||this.contextContainer;this.setWidth(s).setHeight(o),f.scale(n,n),a?this._tempRemoveBordersControlsFromGroup(a):u&&this.deactivateAll&&this.deactivateAll(),this.width=r,this.height=i,this.renderAll(!0);var l=this.__toDataURL(e,t);return f.scale(1/n,1/n),this.setWidth(r).setHeight(i),a?this._restoreBordersControlsOnGroup(a):u&&this.setActiveObject&&this.setActiveObject(u),this.contextTop&&this.clearContext(this.contextTop),this.renderAll(),l},toDataURLWithMultiplier:function(e,t,n){return this.toDataURL({format:e,multiplier:t,quality:n})},_tempRemoveBordersControlsFromGroup:function(e){e.origHasControls=e.hasControls,e.origBorderColor=e.borderColor,e.hasControls=!0,e.borderColor="rgba(0,0,0,0)",e.forEachObject(function(e){e.origBorderColor=e.borderColor,e.borderColor="rgba(0,0,0,0)"})},_restoreBordersControlsOnGroup:function(e){e.hideControls=e.origHideControls,e.borderColor=e.origBorderColor,e.forEachObject(function(e){e.borderColor=e.origBorderColor,delete e.origBorderColor})},getCenter:function(){return{top:this.getHeight()/2,left:this.getWidth()/2}},centerObjectH:function(e){return e.set("left",this.getCenter().left),this.renderAll(),this},centerObjectV:function(e){return e.set("top",this.getCenter().top),this.renderAll(),this},centerObject:function(e){return this.centerObjectH(e).centerObjectV(e)},toDatalessJSON:function(e){return this.toDatalessObject(e)},toObject:function(e){return this._toObjectMethod("toObject",e)},toDatalessObject:function(e){return this._toObjectMethod("toDatalessObject",e)},_toObjectMethod:function(e,t){var n={objects:this._objects.map(function(n){var r;this.includeDefaultValues||(r=n.includeDefaultValues,n.includeDefaultValues=!1);var i=n[e](t);return this.includeDefaultValues||(n.includeDefaultValues=r),i},this),background:this.backgroundColor&&this.backgroundColor.toObject?this.backgroundColor.toObject():this.backgroundColor};return this.backgroundImage&&(n.backgroundImage=this.backgroundImage.src,n.backgroundImageOpacity=this.backgroundImageOpacity,n.backgroundImageStretch=this.backgroundImageStretch),this.overlayImage&&(n.overlayImage=this.overlayImage.src,n.overlayImageLeft=this.overlayImageLeft,n.overlayImageTop=this.overlayImageTop),fabric.util.populateWithProperties(this,n,t),n},toSVG:function(e){e||(e={});var t=[];e.suppressPreamble||t.push('',''),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")for(var e in arguments[0])this._animate(e,arguments[0][e],arguments[1]);else this._animate.apply(this,arguments);return this},_animate:function(e,n,r){var i=this,s;n=n.toString(),r?r=t.util.object.clone(r):r={},~e.indexOf(".")&&(s=e.split("."));var o=s?this.get(s[0])[s[1]]:this.get(e);"from"in r||(r.from=o),~n.indexOf("=")?n=o+parseFloat(n.replace("=","")):n=parseFloat(n),t.util.animate({startValue:r.from,endValue:n,byValue:r.by,easing:r.easing,duration:r.duration,onChange:function(t){s?i[s[0]][s[1]]=t:i.set(e,t),r.onChange&&r.onChange()},onComplete:function(){i.setCoords(),r.onComplete&&r.onComplete()}})},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.centerH().centerV()},remove:function(){return this.canvas.remove(this)},sendToBack:function(){return this.group?t.StaticCanvas.prototype.sendToBack.call(this.group,this):this.canvas.sendToBack(this),this},bringToFront:function(){return this.group?t.StaticCanvas.prototype.bringToFront.call(this.group,this):this.canvas.bringToFront(this),this},sendBackwards:function(){return this.group?t.StaticCanvas.prototype.sendBackwards.call(this.group,this):this.canvas.sendBackwards(this),this},bringForward:function(){return this.group?t.StaticCanvas.prototype.bringForward.call(this.group,this):this.canvas.bringForward(this),this},moveTo:function(e){return this.group?t.StaticCanvas.prototype.moveTo.call(this.group,this,e):this.canvas.moveTo(this,e),this}}),t.util.createAccessors(t.Object),t.Object.prototype.rotate=t.Object.prototype.setAngle,n(t.Object.prototype,t.Observable),t.Object.NUM_FRACTION_DIGITS=2,t.Object.__uid=0}(typeof exports!="undefined"?exports:this),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{translateToCenterPoint:function(t,n,r){var i=t.x,s=t.y;return n==="left"?i=t.x+this.getWidth()/2:n==="right"&&(i=t.x-this.getWidth()/2),r==="top"?s=t.y+this.getHeight()/2:r==="bottom"&&(s=t.y-this.getHeight()/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},translateToOriginPoint:function(t,n,r){var i=t.x,s=t.y;return n==="left"?i=t.x-this.getWidth()/2:n==="right"&&(i=t.x+this.getWidth()/2),r==="top"?s=t.y-this.getHeight()/2:r==="bottom"&&(s=t.y+this.getHeight()/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},getCenterPoint:function(){return this.translateToCenterPoint(new fabric.Point(this.left,this.top),this.originX,this.originY)},toLocalPoint:function(t,n,r){var i=this.getCenterPoint(),s,o;return n!==undefined&&r!==undefined?(n==="left"?s=i.x-this.getWidth()/2:n==="right"?s=i.x+this.getWidth()/2:s=i.x,r==="top"?o=i.y-this.getHeight()/2:r==="bottom"?o=i.y+this.getHeight()/2:o=i.y):(s=this.left,o=this.top),fabric.util.rotatePoint(new fabric.Point(t.x,t.y),i,-e(this.angle)).subtractEquals(new fabric.Point(s,o))},setPositionByOrigin:function(e,t,n){var r=this.translateToCenterPoint(e,t,n),i=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",i.x),this.set("top",i.y)},adjustPosition:function(t){var n=e(this.angle),r=this.getWidth()/2,i=Math.cos(n)*r,s=Math.sin(n)*r,o=this.getWidth(),u=Math.cos(n)*o,a=Math.sin(n)*o;this.originX==="center"&&t==="left"||this.originX==="right"&&t==="center"?(this.left-=i,this.top-=s):this.originX==="left"&&t==="center"||this.originX==="center"&&t==="right"?(this.left+=i,this.top+=s):this.originX==="left"&&t==="right"?(this.left+=u,this.top+=a):this.originX==="right"&&t==="left"&&(this.left-=u,this.top-=a),this.setCoords(),this.originX=t}})}(),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{intersectsWithRect:function(e,t){var n=this.oCoords,r=new fabric.Point(n.tl.x,n.tl.y),i=new fabric.Point(n.tr.x,n.tr.y),s=new fabric.Point(n.bl.x,n.bl.y),o=new fabric.Point(n.br.x,n.br.y),u=fabric.Intersection.intersectPolygonRectangle([r,i,o,s],e,t);return u.status==="Intersection"},intersectsWithObject:function(e){function t(e){return{tl:new fabric.Point(e.tl.x,e.tl.y),tr:new fabric.Point(e.tr.x,e.tr.y),bl:new fabric.Point(e.bl.x,e.bl.y),br:new fabric.Point(e.br.x,e.br.y)}}var n=t(this.oCoords),r=t(e.oCoords),i=fabric.Intersection.intersectPolygonPolygon([n.tl,n.tr,n.br,n.bl],[r.tl,r.tr,r.br,r.bl]);return i.status==="Intersection"},isContainedWithinObject:function(e){return this.isContainedWithinRect(e.oCoords.tl,e.oCoords.br)},isContainedWithinRect:function(e,t){var n=this.oCoords,r=new fabric.Point(n.tl.x,n.tl.y),i=new fabric.Point(n.tr.x,n.tr.y),s=new fabric.Point(n.bl.x,n.bl.y);return r.x>e.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(),this.group&&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 t=e.strokeStyle;e.strokeStyle=e.fillStyle,e.stroke(),e.strokeStyle=t},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,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,pathOffset:this.pathOffset});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(){var e=[],t=[];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)}),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),this.forEachObject(function(e){e.set("active",!0)}),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,strokeStyle:this.strokeStyle,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,strokeStyle:this.strokeStyle,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),i=HTTP.request({hostname:r.hostname,port:r.port||80,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)})});i.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),i.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"),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 7296ec3f943e568416f410e717c0f59177f39d65..7bed189a2f0472ac19e91346674a6766a9c9772f 100644 GIT binary patch delta 35518 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 Sx`bcKCnT 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 W|8clqcYq&_CjTGbf?=map8^0l45UH; delta 35508 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 MKZQRkXw04h08vA?O#lD@