From 8d84a5c551343a2175c9476b198fe22c30fee9c3 Mon Sep 17 00:00:00 2001 From: kangax Date: Sat, 1 Jun 2013 13:18:33 +0200 Subject: [PATCH] Build distribution. Version 1.1.17 --- HEADER.js | 2 +- dist/all.js | 21 ++++++++++++++------- dist/all.min.js | 12 ++++++------ dist/all.min.js.gz | Bin 49382 -> 49390 bytes package.json | 2 +- 5 files changed, 22 insertions(+), 15 deletions(-) diff --git a/HEADER.js b/HEADER.js index 62c82328..cf18260f 100644 --- a/HEADER.js +++ b/HEADER.js @@ -1,6 +1,6 @@ /*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "1.1.16" }; +var fabric = fabric || { version: "1.1.17" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; diff --git a/dist/all.js b/dist/all.js index 6c12a7b4..4e7d4230 100644 --- a/dist/all.js +++ b/dist/all.js @@ -1,7 +1,7 @@ /* build: `node build.js modules=ALL exclude=gestures` */ /*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "1.1.16" }; +var fabric = fabric || { version: "1.1.17" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; @@ -2164,6 +2164,16 @@ fabric.Collection = { return _requestAnimFrame.apply(fabric.window, arguments); }; + /** + * Returns klass "Class" object of given fabric.Object type + * @memberOf fabric.util + * @param {String} type Type of object (eg. 'circle') + * @return {Object} klass "Class" + */ + function getKlass(type) { + return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(type))]; + } + /** * Loads image element from given url and passes it to a callback * @memberOf fabric.util @@ -2195,10 +2205,6 @@ fabric.Collection = { */ function enlivenObjects(objects, callback) { - function getKlass(type) { - return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(type))]; - } - function onLoaded() { if (++numLoadedObjects === numTotalObjects) { if (callback) { @@ -2215,7 +2221,7 @@ fabric.Collection = { if (!o.type) { return; } - var klass = getKlass(o.type); + var klass = fabric.util.getKlass(o.type); if (klass.async) { klass.fromObject(o, function (o, error) { if (!error) { @@ -2451,6 +2457,7 @@ fabric.Collection = { fabric.util.falseFunction = falseFunction; fabric.util.animate = animate; fabric.util.requestAnimFrame = requestAnimFrame; + fabric.util.getKlass = getKlass; fabric.util.loadImage = loadImage; fabric.util.enlivenObjects = enlivenObjects; fabric.util.groupSVGElements = groupSVGElements; @@ -5306,7 +5313,7 @@ fabric.util.string = { if (this.type === 'linear') { gradient = ctx.createLinearGradient( - this.coords.x1, this.coords.y1, this.coords.x2 || ctx.canvas.width, this.coords.y2); + this.coords.x1, this.coords.y1, this.coords.x2, this.coords.y2); } else if (this.type === 'radial') { gradient = ctx.createRadialGradient( diff --git a/dist/all.min.js b/dist/all.min.js index 3e9cc12c..45793bc9 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.16"};typeof exports!="undefined"&&(exports.fabric=fabric),typeof document!="undefined"&&typeof window!="undefined"?(fabric.document=document,fabric.window=window):(fabric.document=require("jsdom").jsdom(""),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined";var Cufon=function(){function r(e){var t=this.face=e.face;this.glyphs=e.glyphs,this.w=e.w,this.baseSize=parseInt(t["units-per-em"],10),this.family=t["font-family"].toLowerCase(),this.weight=t["font-weight"],this.style=t["font-style"]||"normal",this.viewBox=function(){var e=t.bbox.split(/\s+/),n={minX:parseInt(e[0],10),minY:parseInt(e[1],10),maxX:parseInt(e[2],10),maxY:parseInt(e[3],10)};return n.width=n.maxX-n.minX,n.height=n.maxY-n.minY,n.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")},n}(),this.ascent=-parseInt(t.ascent,10),this.descent=-parseInt(t.descent,10),this.height=-this.ascent+this.descent}function i(){var e={},t={oblique:"italic",italic:"oblique"};this.add=function(t){(e[t.style]||(e[t.style]={}))[t.weight]=t},this.get=function(n,r){var i=e[n]||e[t[n]]||e.normal||e.italic||e.oblique;if(!i)return null;r={normal:400,bold:700}[r]||parseInt(r,10);if(i[r])return i[r];var s={1:1,99:0}[r%100],o=[],u,a;s===undefined&&(s=r>400),r==500&&(r=400);for(var f in i){f=parseInt(f,10);if(!u||fa)a=f;o.push(f)}return ra&&(r=a),o.sort(function(e,t){return(s?e>r&&t>r?et:et:e=i.length+e?r():setTimeout(arguments.callee,10)}),function(t){e?t():n.push(t)}}(),supports:function(e,t){var n=fabric.document.createElement("span").style;return n[e]===undefined?!1:(n[e]=t,n[e]===t)},textAlign:function(e,t,n,r){return t.get("textAlign")=="right"?n>0&&(e=" "+e):nk&&(k=N),A.push(N),N=0;continue}var O=t.glyphs[T[b]]||t.missingGlyph;if(!O)continue;N+=C=Number(O.w||t.w)+h}A.push(N),N=Math.max(k,N);var M=[];for(var b=A.length;b--;)M[b]=N-A[b];if(C===null)return null;d+=l.width-C,m+=l.minX;var _,D;if(f)_=u,D=u.firstChild;else{_=fabric.document.createElement("span"),_.className="cufon cufon-canvas",_.alt=n,D=fabric.document.createElement("canvas"),_.appendChild(D);if(i.printable){var P=fabric.document.createElement("span");P.className="cufon-alt",P.appendChild(fabric.document.createTextNode(n)),_.appendChild(P)}}var H=_.style,B=D.style||{},j=c.convert(l.height-p+v),F=Math.ceil(j),I=F/j;D.width=Math.ceil(c.convert(N+d-m)*I),D.height=F,p+=l.minY,B.top=Math.round(c.convert(p-t.ascent))+"px",B.left=Math.round(c.convert(m))+"px";var q=Math.ceil(c.convert(N*I)),R=q+"px",U=c.convert(t.height),z=(i.lineHeight-1)*c.convert(-t.ascent/5)*(L-1);Cufon.textOptions.width=q,Cufon.textOptions.height=U*L+z,Cufon.textOptions.lines=L,Cufon.textOptions.totalLineHeight=z,e?(H.width=R,H.height=U+"px"):(H.paddingLeft=R,H.paddingBottom=U-1+"px");var W=Cufon.textOptions.context||D.getContext("2d"),X=F/l.height;Cufon.textOptions.fontAscent=t.ascent*X,Cufon.textOptions.boundaries=null;for(var V=Cufon.textOptions.shadowOffsets,b=y.length;b--;)V[b]=[y[b][0]*X,y[b][1]*X];W.save(),W.scale(X,X),W.translate(-m-1/X*D.width/2+(Cufon.fonts[t.family].offsetLeft||0),-p-Cufon.textOptions.height/X/2+(Cufon.fonts[t.family].offsetTop||0)),W.lineWidth=t.face["underline-thickness"],W.save();var J=Cufon.getTextDecoration(i),K=i.fontStyle==="italic";W.save(),Q();if(g)for(var b=0,w=g.length;b.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}'),function(e,t,i,s,o,u,a){var f=t===null;f&&(t=o.alt);var l=e.viewBox,c=i.computedFontSize||(i.computedFontSize=new Cufon.CSS.Size(n(u,i.get("fontSize"))+"px",e.baseSize)),h=i.computedLSpacing;h==undefined&&(h=i.get("letterSpacing"),i.computedLSpacing=h=h=="normal"?0:~~c.convertFrom(r(u,h)));var p,d;if(f)p=o,d=o.firstChild;else{p=fabric.document.createElement("span"),p.className="cufon cufon-vml",p.alt=t,d=fabric.document.createElement("span"),d.className="cufon-vml-canvas",p.appendChild(d);if(s.printable){var v=fabric.document.createElement("span");v.className="cufon-alt",v.appendChild(fabric.document.createTextNode(t)),p.appendChild(v)}a||p.appendChild(fabric.document.createElement("cvml:shape"))}var m=p.style,g=d.style,y=c.convert(l.height),b=Math.ceil(y),w=b/y,E=l.minX,S=l.minY;g.height=b,g.top=Math.round(c.convert(S-e.ascent)),g.left=Math.round(c.convert(E)),m.height=c.convert(e.height)+"px";var x=Cufon.getTextDecoration(s),T=i.get("color"),N=Cufon.CSS.textTransform(t,i).split(""),C=0,k=0,L=null,A,O,M=s.textShadow;for(var _=0,D=0,P=N.length;_-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)},toGrayscale:function(){return this.forEachObject(function(e){e.toGrayscale()})}},function(){function n(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e}function r(e,t){return Math.floor(Math.random()*(t-e+1))+e}function s(e){return e*i}function o(e){return e/i}function u(e,t,n){var r=Math.sin(n),i=Math.cos(n);e.subtractEquals(t);var s=e.x*i-e.y*r,o=e.x*r+e.y*i;return(new fabric.Point(s,o)).addEquals(t)}function a(e,t){return parseFloat(Number(e).toFixed(t))}function f(){return!1}function l(e){e||(e={});var t=+(new Date),n=e.duration||500,r=t+n,i,s=e.onChange||function(){},o=e.abort||function(){return!1},u=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},a="startValue"in e?e.startValue:0,f="endValue"in e?e.endValue:100,l=e.byValue||f-a;e.onStart&&e.onStart(),function c(){i=+(new Date);var f=i>r?n:i-t;s(u(f,a,l,n));if(i>r||o()){e.onComplete&&e.onComplete();return}h(c)}()}function p(e,t,n){if(e){var r=fabric.util.createImage();r.onload=function(){t&&t.call(n,r),r=r.onload=null},r.src=e}else t&&t.call(n,e)}function d(e,t){function n(e){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(e))]}function r(){++s===o&&t&&t(i)}var i=[],s=0,o=e.length;e.forEach(function(e,t){if(!e.type)return;var s=n(e.type);s.async?s.fromObject(e,function(e,n){n||(i[t]=e),r()}):(i[t]=s.fromObject(e),r())})}function v(e,t,n){var r;return e.length>1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r}function m(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),n[d?"lineTo":"moveTo"](r,0),d=!d;n.restore()}function y(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function b(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function w(e){var t=e.prototype;for(var n=t.stateProperties.length;n--;){var r=t.stateProperties[n],i=r.charAt(0).toUpperCase()+r.slice(1),s="set"+i,o="get"+i;t[o]||(t[o]=function(e){return new Function('return this.get("'+e+'")')}(r)),t[s]||(t[s]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(r))}}function E(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function S(e,t){var n=[[e[0],e[2],e[4]],[e[1],e[3],e[5]],[0,0,1]],r=[[t[0],t[2],t[4]],[t[1],t[3],t[5]],[0,0,1]],i=[];for(var s=0;s<3;s++){i[s]=[];for(var o=0;o<3;o++){var u=0;for(var a=0;a<3;a++)u+=n[s][a]*r[a][o];i[s][o]=u}}return[i[0][0],i[1][0],i[0][1],i[1][1],i[0][2],i[1][2]]}var e=Math.sqrt,t=Math.atan2;fabric.util={};var i=Math.PI/180,c=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)},h=function(){return c.apply(fabric.window,arguments)};fabric.util.removeFromArray=n,fabric.util.degreesToRadians=s,fabric.util.radiansToDegrees=o,fabric.util.rotatePoint=u,fabric.util.toFixed=a,fabric.util.getRandomInt=r,fabric.util.falseFunction=f,fabric.util.animate=l,fabric.util.requestAnimFrame=h,fabric.util.loadImage=p,fabric.util.enlivenObjects=d,fabric.util.groupSVGElements=v,fabric.util.populateWithProperties=m,fabric.util.drawDashedLine=g,fabric.util.createCanvasElement=y,fabric.util.createImage=b,fabric.util.createAccessors=w,fabric.util.clipContext=E,fabric.util.multiplyTransformMatrices=S}(),function(){function t(t,n){var r=e.call(arguments,2),i=[];for(var s=0,o=t.length;s=r&&(r=e[n][t]);else while(n--)e[n]>=r&&(r=e[n]);return r}function r(e,t){if(!e||e.length===0)return undefined;var n=e.length-1,r=t?e[n][t]:e[n];if(t)while(n--)e[n][t]>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(t){var n=this.constructor.superclass.prototype[t];return arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this)}function o(){function u(){this.initialize.apply(this,arguments)}var n=null,o=e.call(arguments,0);typeof o[0]=="function"&&(n=o.shift()),u.superclass=n,u.subclasses=[],n&&(i.prototype=n.prototype,u.prototype=new i,n.subclasses.push(u));for(var a=0,f=o.length;a-1?e.prototype[i]=function(e){return function(){var n=this.constructor.superclass;this.constructor.superclass=r;var i=t[e].apply(this,arguments);this.constructor.superclass=n;if(e!=="initialize")return i}}(i):e.prototype[i]=t[i],n&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};fabric.util.createClass=o}(),function(){function e(e){var t=Array.prototype.slice.call(arguments,1),n,r,i=t.length;for(r=0;r-1?s(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if(r==="opacity")s(e,t[r]);else{var i=r==="float"||r==="cssFloat"?typeof n.styleFloat=="undefined"?"cssFloat":"styleFloat":r;n[i]=t[r]}return e}var t=fabric.document.createElement("div"),n=typeof t.style.opacity=="string",r=typeof t.style.filter=="string",i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(e){return e};n?s=function(e,t){return e.style.opacity=t,e}:r&&(s=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+t*100+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+t*100+")",e}),fabric.util.setStyle=e}(),function(){function t(e){return typeof e=="string"?fabric.document.getElementById(e):e}function s(e,t){var n=fabric.document.createElement(e);for(var r in t)r==="class"?n.className=t[r]:r==="for"?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function o(e,t){(" "+e.className+" ").indexOf(" "+t+" ")===-1&&(e.className+=(e.className?" ":"")+t)}function u(e,t,n){return typeof t=="string"&&(t=s(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t}function a(e){var t,n,r={left:0,top:0},i=e&&e.ownerDocument,s={left:0,top:0},o={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!i)return{left:0,top:0};for(var u in o)s[o[u]]+=parseInt(f(e,u),10)||0;return t=i.documentElement,typeof e.getBoundingClientRect!="undefined"&&(r=e.getBoundingClientRect()),i!=null&&i===i.window?n=i:n=i.nodeType===9&&(i.defaultView||i.parentWindow),{left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)+s.left,top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0)+s.top}}function f(e,t){e.style||(e.style={});if(fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle)return fabric.document.defaultView.getComputedStyle(e,null)[t];var n=e.style[t];return!n&&e.currentStyle&&(n=e.currentStyle[t]),n}var e=Array.prototype.slice,n=function(t){return e.call(t,0)},r;try{r=n(fabric.document.childNodes)instanceof Array}catch(i){}r||(n=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t}),function(){function n(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=fabric.util.falseFunction),t?e.style[t]="none":typeof e.unselectable=="string"&&(e.unselectable="on"),e}function r(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=null),t?e.style[t]="":typeof e.unselectable=="string"&&(e.unselectable=""),e}var e=fabric.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=n,fabric.util.makeElementSelectable=r}(),function(){function e(e,t){var n=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),i=!0;r.onload=r.onreadystatechange=function(e){if(i){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;i=!1,t(e||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=e,n.appendChild(r)}fabric.util.getScript=e}(),fabric.util.getById=t,fabric.util.toArray=n,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getElementOffset=a,fabric.util.getElementStyle=f}(),function(){function e(e,t){return e+(/\?/.test(e)?"&":"?")+t}function n(){}function r(r,i){i||(i={});var s=i.method?i.method.toUpperCase():"GET",o=i.onComplete||function(){},u=t(),a;return u.onreadystatechange=function(){u.readyState===4&&(o(u),u.onreadystatechange=n)},s==="GET"&&(a=null,typeof i.parameters=="string"&&(r=e(r,i.parameters))),u.open(s,r,!0),(s==="POST"||s==="PUT")&&u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),u.send(a),u}var t=function(){var e=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}];for(var t=e.length;t--;)try{var n=e[t]();if(n)return e[t]}catch(r){}}();fabric.util.request=r}(),function(){function e(e,t,n,r){return n*(e/=r)*e+t}function t(e,t,n,r){return-n*(e/=r)*(e-2)+t}function n(e,t,n,r){return e/=r/2,e<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e,t,n,r){return n*(e/=r)*e*e+t}function i(e,t,n,r){return n*((e=e/r-1)*e*e+1)+t}function s(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e+t:n/2*((e-=2)*e*e+2)+t}function o(e,t,n,r){return n*(e/=r)*e*e*e+t}function u(e,t,n,r){return-n*((e=e/r-1)*e*e*e-1)+t}function a(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e+t:-n/2*((e-=2)*e*e*e-2)+t}function f(e,t,n,r){return n*(e/=r)*e*e*e*e+t}function l(e,t,n,r){return n*((e=e/r-1)*e*e*e*e+1)+t}function c(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e*e+t:n/2*((e-=2)*e*e*e*e+2)+t}function h(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t}function p(e,t,n,r){return n*Math.sin(e/r*(Math.PI/2))+t}function d(e,t,n,r){return-n/2*(Math.cos(Math.PI*e/r)-1)+t}function v(e,t,n,r){return e===0?t:n*Math.pow(2,10*(e/r-1))+t}function m(e,t,n,r){return e===r?t+n:n*(-Math.pow(2,-10*e/r)+1)+t}function g(e,t,n,r){return e===0?t:e===r?t+n:(e/=r/2,e<1?n/2*Math.pow(2,10*(e-1))+t:n/2*(-Math.pow(2,-10*--e)+2)+t)}function y(e,t,n,r){return-n*(Math.sqrt(1-(e/=r)*e)-1)+t}function b(e,t,n,r){return n*Math.sqrt(1-(e=e/r-1)*e)+t}function w(e,t,n,r){return e/=r/2,e<1?-n/2*(Math.sqrt(1-e*e)-1)+t:n/2*(Math.sqrt(1-(e-=2)*e)+1)+t}function E(e,t,n,r){var i=1.70158,s=0,o=n;return e===0?t:(e/=r,e===1?t+n:(s||(s=r*.3),o-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){w.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),w.has(e,function(r){r?w.get(e,function(e){var t=S(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function S(e){var n=e.objects,i=e.options;return n=n.map(function(e){return t[r(e.type)].fromObject(e)}),{objects:n,options:i}}function x(e,n,r){e=e.trim();var i;if(typeof DOMParser!="undefined"){var s=new DOMParser;s&&s.parseFromString&&(i=s.parseFromString(e,"text/xml"))}else t.window.ActiveXObject&&(i=new ActiveXObject("Microsoft.XMLDOM"),i.async="false",i.loadXML(e.replace(//i,"")));t.parseSVGDocument(i.documentElement,function(e,t){n(e,t)},r)}function T(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t}function N(e){var t="";return e.backgroundColor&&e.backgroundColor.source&&(t=['',''].join("")),t}function C(e){var t=e.getElementsByTagName("linearGradient"),n=e.getElementsByTagName("radialGradient"),r,i,s={};i=t.length;for(;i--;)r=t[i],s[r.getAttribute("id")]=r;i=n.length;for(;i--;)r=n[i],s[r.getAttribute("id")]=r;return s}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s=t.util.toFixed,o=t.util.multiplyTransformMatrices;t.SHARED_ATTRIBUTES=["transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width"];var u={"fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight",cx:"left",x:"left",r:"radius","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration",cy:"top",y:"top",transform:"transformMatrix"},a={stroke:"strokeOpacity",fill:"fillOpacity"};t.parseTransformAttribute=function(){function e(e,t){var n=t[0];e[0]=Math.cos(n),e[1]=Math.sin(n),e[2]=-Math.sin(n),e[3]=Math.cos(n)}function n(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function r(e,t){e[2]=t[0]}function i(e,t){e[1]=t[0]}function s(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var o=[1,0,0,1,0,0],u="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",a="(?:\\s+,?\\s*|,\\s*)",f="(?:(skewX)\\s*\\(\\s*("+u+")\\s*\\))",l="(?:(skewY)\\s*\\(\\s*("+u+")\\s*\\))",c="(?:(rotate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+")"+a+"("+u+"))?\\s*\\))",h="(?:(scale)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",p="(?:(translate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",d="(?:(matrix)\\s*\\(\\s*("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+"\\s*\\))",v="(?:"+d+"|"+p+"|"+h+"|"+c+"|"+f+"|"+l+")",m="(?:"+v+"(?:"+a+v+")*"+")",g="^\\s*(?:"+m+"?)\\s*$",y=new RegExp(g),b=new RegExp(v,"g");return function(u){var a=o.concat(),f=[];if(!u||u&&!y.test(u))return a;u.replace(b,function(t){var u=(new RegExp(v)).exec(t).filter(function(e){return e!==""&&e!=null}),l=u[1],c=u.slice(2).map(parseFloat);switch(l){case"translate":s(a,c);break;case"rotate":e(a,c);break;case"scale":n(a,c);break;case"skewX":r(a,c);break;case"skewY":i(a,c);break;case"matrix":a=c}f.push(a.concat()),a=o.concat()});var l=f[0];while(f.length>1)f.shift(),l=t.util.multiplyTransformMatrices(l,f[0]);return l}}(),t.parseSVGDocument=function(){function s(e,t){while(e&&(e=e.parentNode))if(t.test(e.nodeName))return!0;return!1}var e=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/,n="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",r=new RegExp("^\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*"+"$");return function(n,o,u){if(!n)return;var a=new Date,f=t.util.toArray(n.getElementsByTagName("*"));if(f.length===0){f=n.selectNodes("//*[name(.)!='svg']");var l=[];for(var c=0,h=f.length;c0&&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(){function e(e){var t=e.getAttribute("style"),n=e.getAttribute("offset"),r,i;n=parseFloat(n)/(/%$/.test(n)?100:1);if(t){var s=t.split(/\s*;\s*/);s[s.length-1]===""&&s.pop();for(var o=s.length;o--;){var u=s[o].split(/\s*:\s*/),a=u[0].trim(),f=u[1].trim();a==="stop-color"?r=f:a==="stop-opacity"&&(i=f)}}return r||(r=e.getAttribute("stop-color")),i||(i=e.getAttribute("stop-opacity")),r=(new fabric.Color(r)).toRgb(),{offset:n,color:r,opacity:i}}function t(e,t){for(var n in t){if(typeof t[n]=="string"&&/^\d+%$/.test(t[n])){var r=parseFloat(t[n],10);if(n==="x1"||n==="x2"||n==="r2")t[n]=fabric.util.toFixed(e.width*r/100,2);else if(n==="y1"||n==="y2")t[n]=fabric.util.toFixed(e.height*r/100,2)}if(n==="x1"||n==="x2")t[n]-=fabric.util.toFixed(e.width/2,2);else if(n==="y1"||n==="y2")t[n]-=fabric.util.toFixed(e.height/2,2)}}function n(e,t){for(var n in t){if(n==="x1"||n==="x2")t[n]+=fabric.util.toFixed(e.width/2,2);else if(n==="y1"||n==="y2")t[n]+=fabric.util.toFixed(e.height/2,2);if(n==="x1"||n==="x2"||n==="r2")t[n]=fabric.util.toFixed(t[n]/e.width*100,2)+"%";else if(n==="y1"||n==="y2")t[n]=fabric.util.toFixed(t[n]/e.height*100,2)+"%"}}fabric.Gradient=fabric.util.createClass({initialize:function(e){e||(e={});var t={};this.id=fabric.Object.__uid++,this.type=e.type||"linear",t={x1:e.coords.x1||0,y1:e.coords.y1||0,x2:e.coords.x2||0,y2:e.coords.y2||0},this.type==="radial"&&(t.r1=e.coords.r1||0,t.r2=e.coords.r2||0),this.coords=t,this.gradientUnits=e.gradientUnits||"objectBoundingBox",this.colorStops=e.colorStops.slice()},addColorStop:function(e){for(var t in e){var n=new fabric.Color(e[t]);this.colorStops.push({offset:t,color:n.toRgb(),opacity:n.getAlpha()})}return this},toObject:function(){return{type:this.type,coords:this.coords,gradientUnits:this.gradientUnits,colorStops:this.colorStops}},toSVG:function(e,t){var r=fabric.util.object.clone(this.coords),i;this.colorStops.sort(function(e,t){return e.offset-t.offset}),t&&this.gradientUnits==="userSpaceOnUse"?(r.x1+=e.width/2,r.y1+=e.height/2,r.x2+=e.width/2,r.y2+=e.height/2):this.gradientUnits==="objectBoundingBox"&&n(e,r),this.type==="linear"?i=["']:this.type==="radial"&&(i=["']);for(var s=0;s');return i.push(this.type==="linear"?"":""),i.join("")},toLive:function(e){var t;if(!this.type)return;this.type==="linear"?t=e.createLinearGradient(this.coords.x1,this.coords.y1,this.coords.x2||e.canvas.width,this.coords.y2):this.type==="radial"&&(t=e.createRadialGradient(this.coords.x1,this.coords.y1,this.coords.r1,this.coords.x2,this.coords.y2,this.coords.r2));for(var n=0;n0&&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])}function r(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var t=e.fabric||(e.fabric={});if(t.Color){t.warn("fabric.Color is already defined.");return}t.Color=n,t.Color.prototype={_tryParsingColor:function(e){var t;e in n.colorNameMap&&(e=n.colorNameMap[e]),t=n.sourceFromHex(e),t||(t=n.sourceFromRgb(e)),t||(t=n.sourceFromHsl(e)),t&&this.setSource(t)},_rgbToHsl:function(e,n,r){e/=255,n/=255,r/=255;var i,s,o,u=t.util.array.max([e,n,r]),a=t.util.array.min([e,n,r]);o=(u+a)/2;if(u===a)i=s=0;else{var f=u-a;s=o>.5?f/(2-u-a):f/(u+a);switch(u){case e:i=(n-r)/f+(n',''),t.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),""),this.backgroundColor&&this.backgroundColor.source&&t.push('"),this.backgroundImage&&t.push(''),this.overlayImage&&t.push('');for(var n=0,r=this.getObjects(),i=r.length;n"),t.join("")},remove:function(e){return this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared")),fabric.Collection.remove.call(this,e)},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e){var t=this._objects.indexOf(e),r=t;if(t!==0){for(var i=t-1;i>=0;--i){var s=e.intersectsWithObject(this._objects[i])||e.isContainedWithinObject(this._objects[i])||this._objects[i].isContainedWithinObject(e);if(s){r=i;break}}n(this._objects,e),this._objects.splice(r,0,e)}return this.renderAll&&this.renderAll()},bringForward:function(e){var t=this.getObjects(),r=t.indexOf(e),i=r;if(r!==t.length-1){for(var s=r+1,o=this._objects.length;s"},e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;a0&&(t>this.targetFindTolerance?t-=this.targetFindTolerance:t=0,n>this.targetFindTolerance?n-=this.targetFindTolerance:n=0);var o=!0,u=r.getImageData(t,n,this.targetFindTolerance*2||1,this.targetFindTolerance*2||1);for(var a=3,f=u.data.length;a0?0:-n),t.ey-(r>0?0:-r),i,o),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var u=t.ex+a-(n>0?0:i),f=t.ey+a-(r>0?0:o);e.beginPath(),fabric.util.drawDashedLine(e,u,f,u+i,f,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f+o-1,u+i,f+o-1,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f,u,f+o,this.selectionDashArray),fabric.util.drawDashedLine(e,u+i-1,f,u+i-1,f+o,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+a-(n>0?0:i),t.ey+a-(r>0?0:o),i,o)},_findSelectedObjects:function(e){var t=[],n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,s=r+this._groupSelector.top,a,f=new fabric.Point(o(n,i),o(r,s)),l=new fabric.Point(u(n,i),u(r,s));for(var c=0,h=this._objects.length;c1&&(t=new fabric.Group(t),this.setActiveGroup(t),t.saveCoords(),this.fire("selection:created",{target:t}),this.renderAll())},findTarget:function(e,t){var n,r=this.getPointer(e);if(this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(e,this._offset))return n=this.lastRenderedObjectWithControlsAboveOverlay,n;var i=this.getActiveGroup();if(i&&!t&&this.containsPoint(e,i))return n=i,n;var s=[];for(var o=this._objects.length;o--;)if(this._objects[o]&&this._objects[o].visible&&this.containsPoint(e,this._objects[o])){if(!this.perPixelTargetFind&&!this._objects[o].perPixelTargetFind){n=this._objects[o],this.relatedTarget=n;break}s[s.length]=this._objects[o]}for(var u=0,a=s.length;u"},get:function(e){return this[e]},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"?this._set(e,t(this.get(e))):this._set(e,t);return this},_set:function(e,t){var n=e==="scaleX"||e==="scaleY";n&&(t=this._constrainScale(t));if(e==="scaleX"&&t<0)this.flipX=!this.flipX,t*=-1;else if(e==="scaleY"&&t<0)this.flipY=!this.flipY,t*=-1;else if(e==="width"||e==="height")this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2);return this[e]=t,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save();var r=this.transformMatrix;r&&!this.group&&e.setTransform(r[0],r[1],r[2],r[3],r[4],r[5]),n||this.transform(e),this.stroke&&(e.lineWidth=this.strokeWidth,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,e.strokeStyle=this.stroke.toLive?this.stroke.toLive(e):this.stroke),this.overlayFill?e.fillStyle=this.overlayFill:this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill),r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_renderFill:function(e){if(!this.fill)return;this.fill.toLive&&(e.save(),e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0)),e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke)return;e.save(),this.strokeDashArray?(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),o?(e.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(e)):this._renderDashedStroke&&this._renderDashedStroke(e),e.stroke()):this._stroke?this._stroke(e):e.stroke(),this._removeShadow(e),e.restore()},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){var n=this.toDataURL();return t.util.loadImage(n,function(n){e&&e(new t.Image(n))}),this},toDataURL:function(e){e||(e={});var n=t.util.createCanvasElement();n.width=this.getBoundingRectWidth(),n.height=this.getBoundingRectHeight(),t.util.wrapElement(n,"div");var r=new t.Canvas(n);e.format==="jpeg"&&(r.backgroundColor="#fff");var i={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set({active:!1,left:n.width/2,top:n.height/2}),r.add(this);var s=r.toDataURL(e);return this.set(i).setCoords(),r.dispose(),r=null,s},isType:function(e){return this.type===e},toGrayscale:function(){var e=this.get("fill");return e&&this.set("overlayFill",(new t.Color(e)).toGrayscale().toRgb()),this},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){return this.set("fill",new t.Pattern(e))},setShadow:function(e){return this.set("shadow",new t.Shadow(e))},animate:function(){if(arguments[0]&&typeof arguments[0]=="object"){var e=[],t,n;for(t in arguments[0])e.push(t);for(var r=0,i=e.length;re.x&&n.left+n.widthe.y&&n.top+n.height=e.y&&f.d.y>=e.y)continue;f.o.x===f.d.x&&f.o.x>=e.x?(o=f.o.x,u=e.y):(n=0,r=(f.d.y-f.o.y)/(f.d.x-f.o.x),i=e.y-n*e.x,s=f.o.y-r*f.o.x,o=-(i-s)/(n-r),u=i+n*o),o>=e.x&&(a+=1);if(a===2)break}return a},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],t=fabric.util.array.min(e),n=fabric.util.array.max(e),r=Math.abs(t-n),i=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],s=fabric.util.array.min(i),o=fabric.util.array.max(i),u=Math.abs(s-o);return{left:t,top:s,width:r,height:u}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(e){return Math.abs(e)1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x:m.x,y:m.y};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords&&this._setCornerCoords(),this}})}(),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this[e]!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner),o=this._findCrossPoints({x:i,y:s},u);if(o!==0&&o%2===1)return this.__corner=a,a}return!1},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=this.strokeWidth>1?this.strokeWidth:0;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)+.5,~~(-(u/2)-t-r/2*this.scaleY)+.5,~~(o+n+r*this.scaleX),~~(u+n+r*this.scaleY));if(this.hasRotatingPoint&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;var t=this.cornerSize,n=t/2,r=this.strokeWidth/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},i=t.StaticCanvas.supports("setLineDash");if(t.Line){t.warn("fabric.Line is already defined");return}t.Line=t.util.createClass(t.Object,{type:"line",initialize:function(e,t){t=t||{},e||(e=[0,0,0,0]),this.callSuper("initialize",t),this.set("x1",e[0]),this.set("y1",e[1]),this.set("x2",e[2]),this.set("y2",e[3]),this._setWidthHeight(t)},_setWidthHeight:function(e){e||(e={}),this.set("width",Math.abs(this.x2-this.x1)||1),this.set("height",Math.abs(this.y2-this.y1)||1),this.set("left","left"in e?e.left:Math.min(this.x1,this.x2)+this.width/2),this.set("top","top"in e?e.top:Math.min(this.y1,this.y2)+this.height/2)},_set:function(e,t){return this[e]=t,e in r&&this._setWidthHeight(),this},_render:function(e){e.beginPath();var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix&&e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top);if(!this.strokeDashArray||this.strokeDashArray&&i){var n=this.x1<=this.x2?-1:1,r=this.y1<=this.y2?-1:1;e.moveTo(this.width===1?0:n*this.width/2,this.height===1?0:r*this.height/2),e.lineTo(this.width===1?0:n*-1*this.width/2,this.height===1?0:r*-1*this.height/2)}e.lineWidth=this.strokeWidth;var s=e.strokeStyle;e.strokeStyle=this.stroke||e.fillStyle,this._renderStroke(e),e.strokeStyle=s},_renderDashedStroke:function(e){var n=this.width===1?0:-this.width/2,r=this.height===1?0:-this.height/2;e.beginPath(),t.util.drawDashedLine(e,n,r,-n,-r,this.strokeDashArray),e.closePath()},toObject:function(e){return n(this.callSuper("toObject",e),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){var e=[];return this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!0)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e);var t=this.get("radius")*2;this.set("width",t).set("height",t)},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(){var e=[],t=this.width/2,n=this.height/2,r=[-t+" "+n,"0 "+ -n,t+" "+n].join(",");return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!0)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!0)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this._renderFill(e),this._renderStroke(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function r(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}t.Rect=t.util.createClass(t.Object,{type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(e){e=e||{},this._initStateProperties(),this.callSuper("initialize",e),this._initRxRy(),this.x=0,this.y=0},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height,u=this.group&&this.group.type!=="group";e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y),e.moveTo(r+t,i),e.lineTo(r+s-t,i),e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,i){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=r(s);var o=new t.Rect(n(i?t.util.object.clone(i):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed,r=t.util.array.min;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(){var e=[],t=[];for(var r=0,i=this.points.length;r'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n1&&(g=Math.sqrt(g),n*=g,i*=g);var y=d/n,b=p/n,w=-p/i,E=d/i,S=y*l+b*c,x=w*l+E*c,T=y*e+b*t,N=w*e+E*t,C=(T-S)*(T-S)+(N-x)*(N-x),k=1/C-.25;k<0&&(k=0);var L=Math.sqrt(k);a===u&&(L=-L);var A=.5*(S+T)-L*(N-x),O=.5*(x+N)+L*(T-S),M=Math.atan2(x-O,S-A),_=Math.atan2(N-O,T-A),D=_-M;D<0&&a===1?D+=2*Math.PI:D>0&&a===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B"},toObject:function(e){var t=h(this.callSuper("toObject",e),{path:this.path});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(){var e=[],t=[];for(var n=0,r=this.path.length;n',"",""),t.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n=[],r,i,s=/(-?\.\d+)|(-?\d+(\.\d+)?)/g,o,u;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var n=0,r=e.length;n"),t.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},toGrayscale:function(){var e=this.paths.length;while(e--)this.paths[e].toGrayscale();return this},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e){var n=u(e.paths);return new t.PathGroup(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){var e=this.left,t=this.top;this.forEachObject(function(n){var r=n.get("left"),i=n.get("top");n.set("originalLeft",r),n.set("originalTop",i),n.set("left",r-e),n.set("top",i-t),n.setCoords(),n.__origHasControls=n.hasControls,n.hasControls=!1},this)},toString:function(){return"#"},getObjects:function(){return this._objects},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textShadow:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e);var r=Math.max(this.scaleX,this.scaleY);this.clipTo&&t.util.clipContext(this,e);for(var i=0,s=this._objects.length;i'+e.join("")+""},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','');if(this.stroke||this.strokeDashArray){var t=this.fill;this.fill=null,e.push("'),this.fill=t}return e.push(""),e.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this.setElement(this._originalImage),e&&e();return}var t=this._originalImage,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height;if(fabric.isLikelyNode){var s=n.toDataURL("image/png").substring(22);r.src=new Buffer(s,"base64"),i._element=r,e&&e()}else r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png");return this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e){e.filters&&e.filters.length&&(this.filters=e.filters.map(function(e){return e&&fabric.Image.filters[e.type].fromObject(e)}))},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){var n=fabric.document.createElement("img"),r=e.src;e.width&&(n.width=e.width),e.height&&(n.height=e.height),n.onload=function(){fabric.Image.prototype._initFilters.call(e,e);var r=new fabric.Image(n,e);t&&t(r),n=n.onload=n.onerror=null},n.onerror=function(){fabric.log("Error loading "+n.src),t&&t(null,!0),n=n.onload=n.onerror=null},n.src=r},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))})},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.Brightness=fabric.util.createClass({type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;s=0&&N=0&&Co&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.object.clone,i=t.util.toFixed,s=t.StaticCanvas.supports("setLineDash");if(t.Text){t.warn("fabric.Text is already defined");return}var o={fontSize:!0,fontWeight:!0,fontFamily:!0,textDecoration:!0,fontStyle:!0,lineHeight:!0,stroke:!0,strokeWidth:!0,text:!0},u=t.Object.prototype.stateProperties.concat();u.push("fontFamily","fontWeight","fontSize","path","text","textDecoration","textShadow","textAlign","fontStyle","lineHeight","backgroundColor","textBackgroundColor","useNative"),t.Text=t.util.createClass(t.Object,{type:"text",fontSize:40,fontWeight:"normal",fontFamily:"Times New Roman",textDecoration:"",textShadow:"",textAlign:"left",fontStyle:"",lineHeight:1.3,backgroundColor:"",textBackgroundColor:"",path:null,useNative:!0,stateProperties:u,initialize:function(e,t){t=t||{},this.text=e,this.__skipDimension=!0,this.setOptions(t),this.__skipDimension=!1,this._initDimensions(),this.setCoords()},_initDimensions:function(){if(this.__skipDimension)return;var e=t.util.createCanvasElement();this._render(e.getContext("2d"))},toString:function(){return"#'},_render:function(e){var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_renderViaNative:function(e){this.transform(e,t.isLikelyNode),this._setTextStyles(e);var n=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this._renderTextBackground(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),e.save(),this._setTextShadow(e),this.clipTo&&t.util.clipContext(this,e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this.clipTo&&e.restore(),this.textShadow&&e.restore(),e.restore(),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this._setBoundaries(e,n),this._totalLineHeight=0,this.setCoords()},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_setTextShadow:function(e){if(!this.textShadow)return;var t=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/,n=this.textShadow,r=t.exec(this.textShadow),i=n.replace(t,"");e.save(),e.shadowColor=i,e.shadowOffsetX=parseInt(r[1],10),e.shadowOffsetY=parseInt(r[2],10),e.shadowBlur=parseInt(r[3],10),this._shadows=[{blur:e.shadowBlur,color:e.shadowColor,offX:e.shadowOffsetX,offY:e.shadowOffsetY}],this._shadowOffsets=[[parseInt(e.shadowOffsetX,10),parseInt(e.shadowOffsetY,10)]]},_drawTextLine:function(e,t,n,r,i){if(this.textAlign!=="justify"){t[e](n,r,i);return}var s=t.measureText(n).width,o=this.width;if(o>s){var u=n.split(/\s+/),a=t.measureText(n.replace(/\s+/g,"")).width,f=o-a,l=u.length-1,c=f/l,h=0;for(var p=0,d=u.length;p-1&&i(this.fontSize*this.lineHeight),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize*this.lineHeight-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,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;this.backgroundColor&&this._boundaries&&o.push("');for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.textBackgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},setColor:function(e){return this.set("fill",e),this},getText:function(){return this.text},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in o&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs"),r=n.createReadStream(e),i="";r.on("data",function(e){i+=e}),r.on("end",function(){t(i)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&e.indexOf("data")===0?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e&&request(e,"binary",r)},fabric.loadSVGFromURL=function(e,t){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t)}):request(e,"",function(e){fabric.loadSVGFromString(e,t)})},fabric.loadSVGFromString=function(e,t){var n=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(n.documentElement,function(e,n){t(e,n)})},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e),t(r)})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file +/* build: `node build.js modules=ALL exclude=gestures` *//*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"1.1.17"};typeof exports!="undefined"&&(exports.fabric=fabric),typeof document!="undefined"&&typeof window!="undefined"?(fabric.document=document,fabric.window=window):(fabric.document=require("jsdom").jsdom(""),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined";var Cufon=function(){function r(e){var t=this.face=e.face;this.glyphs=e.glyphs,this.w=e.w,this.baseSize=parseInt(t["units-per-em"],10),this.family=t["font-family"].toLowerCase(),this.weight=t["font-weight"],this.style=t["font-style"]||"normal",this.viewBox=function(){var e=t.bbox.split(/\s+/),n={minX:parseInt(e[0],10),minY:parseInt(e[1],10),maxX:parseInt(e[2],10),maxY:parseInt(e[3],10)};return n.width=n.maxX-n.minX,n.height=n.maxY-n.minY,n.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")},n}(),this.ascent=-parseInt(t.ascent,10),this.descent=-parseInt(t.descent,10),this.height=-this.ascent+this.descent}function i(){var e={},t={oblique:"italic",italic:"oblique"};this.add=function(t){(e[t.style]||(e[t.style]={}))[t.weight]=t},this.get=function(n,r){var i=e[n]||e[t[n]]||e.normal||e.italic||e.oblique;if(!i)return null;r={normal:400,bold:700}[r]||parseInt(r,10);if(i[r])return i[r];var s={1:1,99:0}[r%100],o=[],u,a;s===undefined&&(s=r>400),r==500&&(r=400);for(var f in i){f=parseInt(f,10);if(!u||fa)a=f;o.push(f)}return ra&&(r=a),o.sort(function(e,t){return(s?e>r&&t>r?et:et:e=i.length+e?r():setTimeout(arguments.callee,10)}),function(t){e?t():n.push(t)}}(),supports:function(e,t){var n=fabric.document.createElement("span").style;return n[e]===undefined?!1:(n[e]=t,n[e]===t)},textAlign:function(e,t,n,r){return t.get("textAlign")=="right"?n>0&&(e=" "+e):nk&&(k=N),A.push(N),N=0;continue}var O=t.glyphs[T[b]]||t.missingGlyph;if(!O)continue;N+=C=Number(O.w||t.w)+h}A.push(N),N=Math.max(k,N);var M=[];for(var b=A.length;b--;)M[b]=N-A[b];if(C===null)return null;d+=l.width-C,m+=l.minX;var _,D;if(f)_=u,D=u.firstChild;else{_=fabric.document.createElement("span"),_.className="cufon cufon-canvas",_.alt=n,D=fabric.document.createElement("canvas"),_.appendChild(D);if(i.printable){var P=fabric.document.createElement("span");P.className="cufon-alt",P.appendChild(fabric.document.createTextNode(n)),_.appendChild(P)}}var H=_.style,B=D.style||{},j=c.convert(l.height-p+v),F=Math.ceil(j),I=F/j;D.width=Math.ceil(c.convert(N+d-m)*I),D.height=F,p+=l.minY,B.top=Math.round(c.convert(p-t.ascent))+"px",B.left=Math.round(c.convert(m))+"px";var q=Math.ceil(c.convert(N*I)),R=q+"px",U=c.convert(t.height),z=(i.lineHeight-1)*c.convert(-t.ascent/5)*(L-1);Cufon.textOptions.width=q,Cufon.textOptions.height=U*L+z,Cufon.textOptions.lines=L,Cufon.textOptions.totalLineHeight=z,e?(H.width=R,H.height=U+"px"):(H.paddingLeft=R,H.paddingBottom=U-1+"px");var W=Cufon.textOptions.context||D.getContext("2d"),X=F/l.height;Cufon.textOptions.fontAscent=t.ascent*X,Cufon.textOptions.boundaries=null;for(var V=Cufon.textOptions.shadowOffsets,b=y.length;b--;)V[b]=[y[b][0]*X,y[b][1]*X];W.save(),W.scale(X,X),W.translate(-m-1/X*D.width/2+(Cufon.fonts[t.family].offsetLeft||0),-p-Cufon.textOptions.height/X/2+(Cufon.fonts[t.family].offsetTop||0)),W.lineWidth=t.face["underline-thickness"],W.save();var J=Cufon.getTextDecoration(i),K=i.fontStyle==="italic";W.save(),Q();if(g)for(var b=0,w=g.length;b.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}'),function(e,t,i,s,o,u,a){var f=t===null;f&&(t=o.alt);var l=e.viewBox,c=i.computedFontSize||(i.computedFontSize=new Cufon.CSS.Size(n(u,i.get("fontSize"))+"px",e.baseSize)),h=i.computedLSpacing;h==undefined&&(h=i.get("letterSpacing"),i.computedLSpacing=h=h=="normal"?0:~~c.convertFrom(r(u,h)));var p,d;if(f)p=o,d=o.firstChild;else{p=fabric.document.createElement("span"),p.className="cufon cufon-vml",p.alt=t,d=fabric.document.createElement("span"),d.className="cufon-vml-canvas",p.appendChild(d);if(s.printable){var v=fabric.document.createElement("span");v.className="cufon-alt",v.appendChild(fabric.document.createTextNode(t)),p.appendChild(v)}a||p.appendChild(fabric.document.createElement("cvml:shape"))}var m=p.style,g=d.style,y=c.convert(l.height),b=Math.ceil(y),w=b/y,E=l.minX,S=l.minY;g.height=b,g.top=Math.round(c.convert(S-e.ascent)),g.left=Math.round(c.convert(E)),m.height=c.convert(e.height)+"px";var x=Cufon.getTextDecoration(s),T=i.get("color"),N=Cufon.CSS.textTransform(t,i).split(""),C=0,k=0,L=null,A,O,M=s.textShadow;for(var _=0,D=0,P=N.length;_-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)},toGrayscale:function(){return this.forEachObject(function(e){e.toGrayscale()})}},function(){function n(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e}function r(e,t){return Math.floor(Math.random()*(t-e+1))+e}function s(e){return e*i}function o(e){return e/i}function u(e,t,n){var r=Math.sin(n),i=Math.cos(n);e.subtractEquals(t);var s=e.x*i-e.y*r,o=e.x*r+e.y*i;return(new fabric.Point(s,o)).addEquals(t)}function a(e,t){return parseFloat(Number(e).toFixed(t))}function f(){return!1}function l(e){e||(e={});var t=+(new Date),n=e.duration||500,r=t+n,i,s=e.onChange||function(){},o=e.abort||function(){return!1},u=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},a="startValue"in e?e.startValue:0,f="endValue"in e?e.endValue:100,l=e.byValue||f-a;e.onStart&&e.onStart(),function c(){i=+(new Date);var f=i>r?n:i-t;s(u(f,a,l,n));if(i>r||o()){e.onComplete&&e.onComplete();return}h(c)}()}function p(e){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(e))]}function d(e,t,n){if(e){var r=fabric.util.createImage();r.onload=function(){t&&t.call(n,r),r=r.onload=null},r.src=e}else t&&t.call(n,e)}function v(e,t){function n(){++i===s&&t&&t(r)}var r=[],i=0,s=e.length;e.forEach(function(e,t){if(!e.type)return;var i=fabric.util.getKlass(e.type);i.async?i.fromObject(e,function(e,i){i||(r[t]=e),n()}):(r[t]=i.fromObject(e),n())})}function m(e,t,n){var r;return e.length>1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r}function g(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),n[d?"lineTo":"moveTo"](r,0),d=!d;n.restore()}function b(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function w(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function E(e){var t=e.prototype;for(var n=t.stateProperties.length;n--;){var r=t.stateProperties[n],i=r.charAt(0).toUpperCase()+r.slice(1),s="set"+i,o="get"+i;t[o]||(t[o]=function(e){return new Function('return this.get("'+e+'")')}(r)),t[s]||(t[s]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(r))}}function S(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function x(e,t){var n=[[e[0],e[2],e[4]],[e[1],e[3],e[5]],[0,0,1]],r=[[t[0],t[2],t[4]],[t[1],t[3],t[5]],[0,0,1]],i=[];for(var s=0;s<3;s++){i[s]=[];for(var o=0;o<3;o++){var u=0;for(var a=0;a<3;a++)u+=n[s][a]*r[a][o];i[s][o]=u}}return[i[0][0],i[1][0],i[0][1],i[1][1],i[0][2],i[1][2]]}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.getKlass=p,fabric.util.loadImage=d,fabric.util.enlivenObjects=v,fabric.util.groupSVGElements=m,fabric.util.populateWithProperties=g,fabric.util.drawDashedLine=y,fabric.util.createCanvasElement=b,fabric.util.createImage=w,fabric.util.createAccessors=E,fabric.util.clipContext=S,fabric.util.multiplyTransformMatrices=x}(),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,n,r={left:0,top:0},i=e&&e.ownerDocument,s={left:0,top:0},o={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!i)return{left:0,top:0};for(var u in o)s[o[u]]+=parseInt(f(e,u),10)||0;return t=i.documentElement,typeof e.getBoundingClientRect!="undefined"&&(r=e.getBoundingClientRect()),i!=null&&i===i.window?n=i:n=i.nodeType===9&&(i.defaultView||i.parentWindow),{left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)+s.left,top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0)+s.top}}function f(e,t){e.style||(e.style={});if(fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle)return fabric.document.defaultView.getComputedStyle(e,null)[t];var n=e.style[t];return!n&&e.currentStyle&&(n=e.currentStyle[t]),n}var e=Array.prototype.slice,n=function(t){return e.call(t,0)},r;try{r=n(fabric.document.childNodes)instanceof Array}catch(i){}r||(n=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t}),function(){function n(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=fabric.util.falseFunction),t?e.style[t]="none":typeof e.unselectable=="string"&&(e.unselectable="on"),e}function r(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=null),t?e.style[t]="":typeof e.unselectable=="string"&&(e.unselectable=""),e}var e=fabric.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=n,fabric.util.makeElementSelectable=r}(),function(){function e(e,t){var n=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),i=!0;r.onload=r.onreadystatechange=function(e){if(i){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;i=!1,t(e||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=e,n.appendChild(r)}fabric.util.getScript=e}(),fabric.util.getById=t,fabric.util.toArray=n,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getElementOffset=a,fabric.util.getElementStyle=f}(),function(){function e(e,t){return e+(/\?/.test(e)?"&":"?")+t}function n(){}function r(r,i){i||(i={});var s=i.method?i.method.toUpperCase():"GET",o=i.onComplete||function(){},u=t(),a;return u.onreadystatechange=function(){u.readyState===4&&(o(u),u.onreadystatechange=n)},s==="GET"&&(a=null,typeof i.parameters=="string"&&(r=e(r,i.parameters))),u.open(s,r,!0),(s==="POST"||s==="PUT")&&u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),u.send(a),u}var t=function(){var e=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}];for(var t=e.length;t--;)try{var n=e[t]();if(n)return e[t]}catch(r){}}();fabric.util.request=r}(),function(){function e(e,t,n,r){return n*(e/=r)*e+t}function t(e,t,n,r){return-n*(e/=r)*(e-2)+t}function n(e,t,n,r){return e/=r/2,e<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e,t,n,r){return n*(e/=r)*e*e+t}function i(e,t,n,r){return n*((e=e/r-1)*e*e+1)+t}function s(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e+t:n/2*((e-=2)*e*e+2)+t}function o(e,t,n,r){return n*(e/=r)*e*e*e+t}function u(e,t,n,r){return-n*((e=e/r-1)*e*e*e-1)+t}function a(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e+t:-n/2*((e-=2)*e*e*e-2)+t}function f(e,t,n,r){return n*(e/=r)*e*e*e*e+t}function l(e,t,n,r){return n*((e=e/r-1)*e*e*e*e+1)+t}function c(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e*e+t:n/2*((e-=2)*e*e*e*e+2)+t}function h(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t}function p(e,t,n,r){return n*Math.sin(e/r*(Math.PI/2))+t}function d(e,t,n,r){return-n/2*(Math.cos(Math.PI*e/r)-1)+t}function v(e,t,n,r){return e===0?t:n*Math.pow(2,10*(e/r-1))+t}function m(e,t,n,r){return e===r?t+n:n*(-Math.pow(2,-10*e/r)+1)+t}function g(e,t,n,r){return e===0?t:e===r?t+n:(e/=r/2,e<1?n/2*Math.pow(2,10*(e-1))+t:n/2*(-Math.pow(2,-10*--e)+2)+t)}function y(e,t,n,r){return-n*(Math.sqrt(1-(e/=r)*e)-1)+t}function b(e,t,n,r){return n*Math.sqrt(1-(e=e/r-1)*e)+t}function w(e,t,n,r){return e/=r/2,e<1?-n/2*(Math.sqrt(1-e*e)-1)+t:n/2*(Math.sqrt(1-(e-=2)*e)+1)+t}function E(e,t,n,r){var i=1.70158,s=0,o=n;return e===0?t:(e/=r,e===1?t+n:(s||(s=r*.3),o-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){w.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),w.has(e,function(r){r?w.get(e,function(e){var t=S(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function S(e){var n=e.objects,i=e.options;return n=n.map(function(e){return t[r(e.type)].fromObject(e)}),{objects:n,options:i}}function x(e,n,r){e=e.trim();var i;if(typeof DOMParser!="undefined"){var s=new DOMParser;s&&s.parseFromString&&(i=s.parseFromString(e,"text/xml"))}else t.window.ActiveXObject&&(i=new ActiveXObject("Microsoft.XMLDOM"),i.async="false",i.loadXML(e.replace(//i,"")));t.parseSVGDocument(i.documentElement,function(e,t){n(e,t)},r)}function T(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t}function N(e){var t="";return e.backgroundColor&&e.backgroundColor.source&&(t=['',''].join("")),t}function C(e){var t=e.getElementsByTagName("linearGradient"),n=e.getElementsByTagName("radialGradient"),r,i,s={};i=t.length;for(;i--;)r=t[i],s[r.getAttribute("id")]=r;i=n.length;for(;i--;)r=n[i],s[r.getAttribute("id")]=r;return s}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s=t.util.toFixed,o=t.util.multiplyTransformMatrices;t.SHARED_ATTRIBUTES=["transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width"];var u={"fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight",cx:"left",x:"left",r:"radius","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration",cy:"top",y:"top",transform:"transformMatrix"},a={stroke:"strokeOpacity",fill:"fillOpacity"};t.parseTransformAttribute=function(){function e(e,t){var n=t[0];e[0]=Math.cos(n),e[1]=Math.sin(n),e[2]=-Math.sin(n),e[3]=Math.cos(n)}function n(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function r(e,t){e[2]=t[0]}function i(e,t){e[1]=t[0]}function s(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var o=[1,0,0,1,0,0],u="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",a="(?:\\s+,?\\s*|,\\s*)",f="(?:(skewX)\\s*\\(\\s*("+u+")\\s*\\))",l="(?:(skewY)\\s*\\(\\s*("+u+")\\s*\\))",c="(?:(rotate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+")"+a+"("+u+"))?\\s*\\))",h="(?:(scale)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",p="(?:(translate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",d="(?:(matrix)\\s*\\(\\s*("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+"\\s*\\))",v="(?:"+d+"|"+p+"|"+h+"|"+c+"|"+f+"|"+l+")",m="(?:"+v+"(?:"+a+v+")*"+")",g="^\\s*(?:"+m+"?)\\s*$",y=new RegExp(g),b=new RegExp(v,"g");return function(u){var a=o.concat(),f=[];if(!u||u&&!y.test(u))return a;u.replace(b,function(t){var u=(new RegExp(v)).exec(t).filter(function(e){return e!==""&&e!=null}),l=u[1],c=u.slice(2).map(parseFloat);switch(l){case"translate":s(a,c);break;case"rotate":e(a,c);break;case"scale":n(a,c);break;case"skewX":r(a,c);break;case"skewY":i(a,c);break;case"matrix":a=c}f.push(a.concat()),a=o.concat()});var l=f[0];while(f.length>1)f.shift(),l=t.util.multiplyTransformMatrices(l,f[0]);return l}}(),t.parseSVGDocument=function(){function s(e,t){while(e&&(e=e.parentNode))if(t.test(e.nodeName))return!0;return!1}var e=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/,n="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",r=new RegExp("^\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*"+"$");return function(n,o,u){if(!n)return;var a=new Date,f=t.util.toArray(n.getElementsByTagName("*"));if(f.length===0){f=n.selectNodes("//*[name(.)!='svg']");var l=[];for(var c=0,h=f.length;c0&&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(){function e(e){var t=e.getAttribute("style"),n=e.getAttribute("offset"),r,i;n=parseFloat(n)/(/%$/.test(n)?100:1);if(t){var s=t.split(/\s*;\s*/);s[s.length-1]===""&&s.pop();for(var o=s.length;o--;){var u=s[o].split(/\s*:\s*/),a=u[0].trim(),f=u[1].trim();a==="stop-color"?r=f:a==="stop-opacity"&&(i=f)}}return r||(r=e.getAttribute("stop-color")),i||(i=e.getAttribute("stop-opacity")),r=(new fabric.Color(r)).toRgb(),{offset:n,color:r,opacity:i}}function t(e,t){for(var n in t){if(typeof t[n]=="string"&&/^\d+%$/.test(t[n])){var r=parseFloat(t[n],10);if(n==="x1"||n==="x2"||n==="r2")t[n]=fabric.util.toFixed(e.width*r/100,2);else if(n==="y1"||n==="y2")t[n]=fabric.util.toFixed(e.height*r/100,2)}if(n==="x1"||n==="x2")t[n]-=fabric.util.toFixed(e.width/2,2);else if(n==="y1"||n==="y2")t[n]-=fabric.util.toFixed(e.height/2,2)}}function n(e,t){for(var n in t){if(n==="x1"||n==="x2")t[n]+=fabric.util.toFixed(e.width/2,2);else if(n==="y1"||n==="y2")t[n]+=fabric.util.toFixed(e.height/2,2);if(n==="x1"||n==="x2"||n==="r2")t[n]=fabric.util.toFixed(t[n]/e.width*100,2)+"%";else if(n==="y1"||n==="y2")t[n]=fabric.util.toFixed(t[n]/e.height*100,2)+"%"}}fabric.Gradient=fabric.util.createClass({initialize:function(e){e||(e={});var t={};this.id=fabric.Object.__uid++,this.type=e.type||"linear",t={x1:e.coords.x1||0,y1:e.coords.y1||0,x2:e.coords.x2||0,y2:e.coords.y2||0},this.type==="radial"&&(t.r1=e.coords.r1||0,t.r2=e.coords.r2||0),this.coords=t,this.gradientUnits=e.gradientUnits||"objectBoundingBox",this.colorStops=e.colorStops.slice()},addColorStop:function(e){for(var t in e){var n=new fabric.Color(e[t]);this.colorStops.push({offset:t,color:n.toRgb(),opacity:n.getAlpha()})}return this},toObject:function(){return{type:this.type,coords:this.coords,gradientUnits:this.gradientUnits,colorStops:this.colorStops}},toSVG:function(e,t){var r=fabric.util.object.clone(this.coords),i;this.colorStops.sort(function(e,t){return e.offset-t.offset}),t&&this.gradientUnits==="userSpaceOnUse"?(r.x1+=e.width/2,r.y1+=e.height/2,r.x2+=e.width/2,r.y2+=e.height/2):this.gradientUnits==="objectBoundingBox"&&n(e,r),this.type==="linear"?i=["']:this.type==="radial"&&(i=["']);for(var s=0;s');return i.push(this.type==="linear"?"":""),i.join("")},toLive:function(e){var t;if(!this.type)return;this.type==="linear"?t=e.createLinearGradient(this.coords.x1,this.coords.y1,this.coords.x2,this.coords.y2):this.type==="radial"&&(t=e.createRadialGradient(this.coords.x1,this.coords.y1,this.coords.r1,this.coords.x2,this.coords.y2,this.coords.r2));for(var n=0;n0&&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])}function r(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var t=e.fabric||(e.fabric={});if(t.Color){t.warn("fabric.Color is already defined.");return}t.Color=n,t.Color.prototype={_tryParsingColor:function(e){var t;e in n.colorNameMap&&(e=n.colorNameMap[e]),t=n.sourceFromHex(e),t||(t=n.sourceFromRgb(e)),t||(t=n.sourceFromHsl(e)),t&&this.setSource(t)},_rgbToHsl:function(e,n,r){e/=255,n/=255,r/=255;var i,s,o,u=t.util.array.max([e,n,r]),a=t.util.array.min([e,n,r]);o=(u+a)/2;if(u===a)i=s=0;else{var f=u-a;s=o>.5?f/(2-u-a):f/(u+a);switch(u){case e:i=(n-r)/f+(n',''),t.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),""),this.backgroundColor&&this.backgroundColor.source&&t.push('"),this.backgroundImage&&t.push(''),this.overlayImage&&t.push('');for(var n=0,r=this.getObjects(),i=r.length;n"),t.join("")},remove:function(e){return this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared")),fabric.Collection.remove.call(this,e)},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e){var t=this._objects.indexOf(e),r=t;if(t!==0){for(var i=t-1;i>=0;--i){var s=e.intersectsWithObject(this._objects[i])||e.isContainedWithinObject(this._objects[i])||this._objects[i].isContainedWithinObject(e);if(s){r=i;break}}n(this._objects,e),this._objects.splice(r,0,e)}return this.renderAll&&this.renderAll()},bringForward:function(e){var t=this.getObjects(),r=t.indexOf(e),i=r;if(r!==t.length-1){for(var s=r+1,o=this._objects.length;s"},e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;a0&&(t>this.targetFindTolerance?t-=this.targetFindTolerance:t=0,n>this.targetFindTolerance?n-=this.targetFindTolerance:n=0);var o=!0,u=r.getImageData(t,n,this.targetFindTolerance*2||1,this.targetFindTolerance*2||1);for(var a=3,f=u.data.length;a0?0:-n),t.ey-(r>0?0:-r),i,o),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var u=t.ex+a-(n>0?0:i),f=t.ey+a-(r>0?0:o);e.beginPath(),fabric.util.drawDashedLine(e,u,f,u+i,f,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f+o-1,u+i,f+o-1,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f,u,f+o,this.selectionDashArray),fabric.util.drawDashedLine(e,u+i-1,f,u+i-1,f+o,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+a-(n>0?0:i),t.ey+a-(r>0?0:o),i,o)},_findSelectedObjects:function(e){var t=[],n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,s=r+this._groupSelector.top,a,f=new fabric.Point(o(n,i),o(r,s)),l=new fabric.Point(u(n,i),u(r,s));for(var c=0,h=this._objects.length;c1&&(t=new fabric.Group(t),this.setActiveGroup(t),t.saveCoords(),this.fire("selection:created",{target:t}),this.renderAll())},findTarget:function(e,t){var n,r=this.getPointer(e);if(this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(e,this._offset))return n=this.lastRenderedObjectWithControlsAboveOverlay,n;var i=this.getActiveGroup();if(i&&!t&&this.containsPoint(e,i))return n=i,n;var s=[];for(var o=this._objects.length;o--;)if(this._objects[o]&&this._objects[o].visible&&this.containsPoint(e,this._objects[o])){if(!this.perPixelTargetFind&&!this._objects[o].perPixelTargetFind){n=this._objects[o],this.relatedTarget=n;break}s[s.length]=this._objects[o]}for(var u=0,a=s.length;u"},get:function(e){return this[e]},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"?this._set(e,t(this.get(e))):this._set(e,t);return this},_set:function(e,t){var n=e==="scaleX"||e==="scaleY";n&&(t=this._constrainScale(t));if(e==="scaleX"&&t<0)this.flipX=!this.flipX,t*=-1;else if(e==="scaleY"&&t<0)this.flipY=!this.flipY,t*=-1;else if(e==="width"||e==="height")this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2);return this[e]=t,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save();var r=this.transformMatrix;r&&!this.group&&e.setTransform(r[0],r[1],r[2],r[3],r[4],r[5]),n||this.transform(e),this.stroke&&(e.lineWidth=this.strokeWidth,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,e.strokeStyle=this.stroke.toLive?this.stroke.toLive(e):this.stroke),this.overlayFill?e.fillStyle=this.overlayFill:this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill),r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_renderFill:function(e){if(!this.fill)return;this.fill.toLive&&(e.save(),e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0)),e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke)return;e.save(),this.strokeDashArray?(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),o?(e.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(e)):this._renderDashedStroke&&this._renderDashedStroke(e),e.stroke()):this._stroke?this._stroke(e):e.stroke(),this._removeShadow(e),e.restore()},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){var n=this.toDataURL();return t.util.loadImage(n,function(n){e&&e(new t.Image(n))}),this},toDataURL:function(e){e||(e={});var n=t.util.createCanvasElement();n.width=this.getBoundingRectWidth(),n.height=this.getBoundingRectHeight(),t.util.wrapElement(n,"div");var r=new t.Canvas(n);e.format==="jpeg"&&(r.backgroundColor="#fff");var i={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set({active:!1,left:n.width/2,top:n.height/2}),r.add(this);var s=r.toDataURL(e);return this.set(i).setCoords(),r.dispose(),r=null,s},isType:function(e){return this.type===e},toGrayscale:function(){var e=this.get("fill");return e&&this.set("overlayFill",(new t.Color(e)).toGrayscale().toRgb()),this},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){return this.set("fill",new t.Pattern(e))},setShadow:function(e){return this.set("shadow",new t.Shadow(e))},animate:function(){if(arguments[0]&&typeof arguments[0]=="object"){var e=[],t,n;for(t in arguments[0])e.push(t);for(var r=0,i=e.length;re.x&&n.left+n.widthe.y&&n.top+n.height=e.y&&f.d.y>=e.y)continue;f.o.x===f.d.x&&f.o.x>=e.x?(o=f.o.x,u=e.y):(n=0,r=(f.d.y-f.o.y)/(f.d.x-f.o.x),i=e.y-n*e.x,s=f.o.y-r*f.o.x,o=-(i-s)/(n-r),u=i+n*o),o>=e.x&&(a+=1);if(a===2)break}return a},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],t=fabric.util.array.min(e),n=fabric.util.array.max(e),r=Math.abs(t-n),i=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],s=fabric.util.array.min(i),o=fabric.util.array.max(i),u=Math.abs(s-o);return{left:t,top:s,width:r,height:u}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(e){return Math.abs(e)1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x:m.x,y:m.y};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords&&this._setCornerCoords(),this}})}(),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this[e]!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner),o=this._findCrossPoints({x:i,y:s},u);if(o!==0&&o%2===1)return this.__corner=a,a}return!1},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=this.strokeWidth>1?this.strokeWidth:0;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)+.5,~~(-(u/2)-t-r/2*this.scaleY)+.5,~~(o+n+r*this.scaleX),~~(u+n+r*this.scaleY));if(this.hasRotatingPoint&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;var t=this.cornerSize,n=t/2,r=this.strokeWidth/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},i=t.StaticCanvas.supports("setLineDash");if(t.Line){t.warn("fabric.Line is already defined");return}t.Line=t.util.createClass(t.Object,{type:"line",initialize:function(e,t){t=t||{},e||(e=[0,0,0,0]),this.callSuper("initialize",t),this.set("x1",e[0]),this.set("y1",e[1]),this.set("x2",e[2]),this.set("y2",e[3]),this._setWidthHeight(t)},_setWidthHeight:function(e){e||(e={}),this.set("width",Math.abs(this.x2-this.x1)||1),this.set("height",Math.abs(this.y2-this.y1)||1),this.set("left","left"in e?e.left:Math.min(this.x1,this.x2)+this.width/2),this.set("top","top"in e?e.top:Math.min(this.y1,this.y2)+this.height/2)},_set:function(e,t){return this[e]=t,e in r&&this._setWidthHeight(),this},_render:function(e){e.beginPath();var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix&&e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top);if(!this.strokeDashArray||this.strokeDashArray&&i){var n=this.x1<=this.x2?-1:1,r=this.y1<=this.y2?-1:1;e.moveTo(this.width===1?0:n*this.width/2,this.height===1?0:r*this.height/2),e.lineTo(this.width===1?0:n*-1*this.width/2,this.height===1?0:r*-1*this.height/2)}e.lineWidth=this.strokeWidth;var s=e.strokeStyle;e.strokeStyle=this.stroke||e.fillStyle,this._renderStroke(e),e.strokeStyle=s},_renderDashedStroke:function(e){var n=this.width===1?0:-this.width/2,r=this.height===1?0:-this.height/2;e.beginPath(),t.util.drawDashedLine(e,n,r,-n,-r,this.strokeDashArray),e.closePath()},toObject:function(e){return n(this.callSuper("toObject",e),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){var e=[];return this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!0)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e);var t=this.get("radius")*2;this.set("width",t).set("height",t)},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(){var e=[],t=this.width/2,n=this.height/2,r=[-t+" "+n,"0 "+ -n,t+" "+n].join(",");return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!0)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!0)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this._renderFill(e),this._renderStroke(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function r(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}t.Rect=t.util.createClass(t.Object,{type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(e){e=e||{},this._initStateProperties(),this.callSuper("initialize",e),this._initRxRy(),this.x=0,this.y=0},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height,u=this.group&&this.group.type!=="group";e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y),e.moveTo(r+t,i),e.lineTo(r+s-t,i),e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,i){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=r(s);var o=new t.Rect(n(i?t.util.object.clone(i):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed,r=t.util.array.min;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(){var e=[],t=[];for(var r=0,i=this.points.length;r'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n1&&(g=Math.sqrt(g),n*=g,i*=g);var y=d/n,b=p/n,w=-p/i,E=d/i,S=y*l+b*c,x=w*l+E*c,T=y*e+b*t,N=w*e+E*t,C=(T-S)*(T-S)+(N-x)*(N-x),k=1/C-.25;k<0&&(k=0);var L=Math.sqrt(k);a===u&&(L=-L);var A=.5*(S+T)-L*(N-x),O=.5*(x+N)+L*(T-S),M=Math.atan2(x-O,S-A),_=Math.atan2(N-O,T-A),D=_-M;D<0&&a===1?D+=2*Math.PI:D>0&&a===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B"},toObject:function(e){var t=h(this.callSuper("toObject",e),{path:this.path});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(){var e=[],t=[];for(var n=0,r=this.path.length;n',"",""),t.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n=[],r,i,s=/(-?\.\d+)|(-?\d+(\.\d+)?)/g,o,u;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var n=0,r=e.length;n"),t.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},toGrayscale:function(){var e=this.paths.length;while(e--)this.paths[e].toGrayscale();return this},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e){var n=u(e.paths);return new t.PathGroup(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){var e=this.left,t=this.top;this.forEachObject(function(n){var r=n.get("left"),i=n.get("top");n.set("originalLeft",r),n.set("originalTop",i),n.set("left",r-e),n.set("top",i-t),n.setCoords(),n.__origHasControls=n.hasControls,n.hasControls=!1},this)},toString:function(){return"#"},getObjects:function(){return this._objects},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textShadow:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e);var r=Math.max(this.scaleX,this.scaleY);this.clipTo&&t.util.clipContext(this,e);for(var i=0,s=this._objects.length;i'+e.join("")+""},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','');if(this.stroke||this.strokeDashArray){var t=this.fill;this.fill=null,e.push("'),this.fill=t}return e.push(""),e.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this.setElement(this._originalImage),e&&e();return}var t=this._originalImage,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height;if(fabric.isLikelyNode){var s=n.toDataURL("image/png").substring(22);r.src=new Buffer(s,"base64"),i._element=r,e&&e()}else r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png");return this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e){e.filters&&e.filters.length&&(this.filters=e.filters.map(function(e){return e&&fabric.Image.filters[e.type].fromObject(e)}))},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){var n=fabric.document.createElement("img"),r=e.src;e.width&&(n.width=e.width),e.height&&(n.height=e.height),n.onload=function(){fabric.Image.prototype._initFilters.call(e,e);var r=new fabric.Image(n,e);t&&t(r),n=n.onload=n.onerror=null},n.onerror=function(){fabric.log("Error loading "+n.src),t&&t(null,!0),n=n.onload=n.onerror=null},n.src=r},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))})},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.Brightness=fabric.util.createClass({type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;s=0&&N=0&&Co&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.object.clone,i=t.util.toFixed,s=t.StaticCanvas.supports("setLineDash");if(t.Text){t.warn("fabric.Text is already defined");return}var o={fontSize:!0,fontWeight:!0,fontFamily:!0,textDecoration:!0,fontStyle:!0,lineHeight:!0,stroke:!0,strokeWidth:!0,text:!0},u=t.Object.prototype.stateProperties.concat();u.push("fontFamily","fontWeight","fontSize","path","text","textDecoration","textShadow","textAlign","fontStyle","lineHeight","backgroundColor","textBackgroundColor","useNative"),t.Text=t.util.createClass(t.Object,{type:"text",fontSize:40,fontWeight:"normal",fontFamily:"Times New Roman",textDecoration:"",textShadow:"",textAlign:"left",fontStyle:"",lineHeight:1.3,backgroundColor:"",textBackgroundColor:"",path:null,useNative:!0,stateProperties:u,initialize:function(e,t){t=t||{},this.text=e,this.__skipDimension=!0,this.setOptions(t),this.__skipDimension=!1,this._initDimensions(),this.setCoords()},_initDimensions:function(){if(this.__skipDimension)return;var e=t.util.createCanvasElement();this._render(e.getContext("2d"))},toString:function(){return"#'},_render:function(e){var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_renderViaNative:function(e){this.transform(e,t.isLikelyNode),this._setTextStyles(e);var n=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this._renderTextBackground(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),e.save(),this._setTextShadow(e),this.clipTo&&t.util.clipContext(this,e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this.clipTo&&e.restore(),this.textShadow&&e.restore(),e.restore(),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this._setBoundaries(e,n),this._totalLineHeight=0,this.setCoords()},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_setTextShadow:function(e){if(!this.textShadow)return;var t=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/,n=this.textShadow,r=t.exec(this.textShadow),i=n.replace(t,"");e.save(),e.shadowColor=i,e.shadowOffsetX=parseInt(r[1],10),e.shadowOffsetY=parseInt(r[2],10),e.shadowBlur=parseInt(r[3],10),this._shadows=[{blur:e.shadowBlur,color:e.shadowColor,offX:e.shadowOffsetX,offY:e.shadowOffsetY}],this._shadowOffsets=[[parseInt(e.shadowOffsetX,10),parseInt(e.shadowOffsetY,10)]]},_drawTextLine:function(e,t,n,r,i){if(this.textAlign!=="justify"){t[e](n,r,i);return}var s=t.measureText(n).width,o=this.width;if(o>s){var u=n.split(/\s+/),a=t.measureText(n.replace(/\s+/g,"")).width,f=o-a,l=u.length-1,c=f/l,h=0;for(var p=0,d=u.length;p-1&&i(this.fontSize*this.lineHeight),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize*this.lineHeight-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,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;this.backgroundColor&&this._boundaries&&o.push("');for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.textBackgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},setColor:function(e){return this.set("fill",e),this},getText:function(){return this.text},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in o&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs"),r=n.createReadStream(e),i="";r.on("data",function(e){i+=e}),r.on("end",function(){t(i)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&e.indexOf("data")===0?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e&&request(e,"binary",r)},fabric.loadSVGFromURL=function(e,t){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t)}):request(e,"",function(e){fabric.loadSVGFromString(e,t)})},fabric.loadSVGFromString=function(e,t){var n=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(n.documentElement,function(e,n){t(e,n)})},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e),t(r)})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file diff --git a/dist/all.min.js.gz b/dist/all.min.js.gz index 83720bc06142802a79d9948faf5d67a473823769..a1f17c5659d0d9d974dfe68c43301abc9c012a2b 100644 GIT binary patch delta 36800 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%0D|XQ~>@uGbU22thS1b1pe68F&pfZc@ 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 E0P`xVh5!Hn delta 36815 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

8bP!Q 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 Tzq9qV@CpeR`gOAG2f_jXTO0No diff --git a/package.json b/package.json index 0adab8e8..2adb8653 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "fabric", "description": "Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.", - "version": "1.1.16", + "version": "1.1.17", "author": "Juriy Zaytsev ", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "repository": "git://github.com/kangax/fabric.js",