From 3d6ae8442f572d13737dc607bc819f5896272d86 Mon Sep 17 00:00:00 2001 From: kangax Date: Thu, 26 Jan 2012 19:39:30 -0500 Subject: [PATCH] Fix object controls not working in IE8. Closes #92. --- HEADER.js | 2 +- dist/all.js | 1589 ++++++++++++++++++++++--------------------- dist/all.min.js | 4 +- dist/all.min.js.gz | Bin 37064 -> 37208 bytes package.json | 2 +- src/canvas.class.js | 3 +- src/text.class.js | 11 +- 7 files changed, 820 insertions(+), 791 deletions(-) diff --git a/HEADER.js b/HEADER.js index 1b899a0d..0ad22331 100644 --- a/HEADER.js +++ b/HEADER.js @@ -1,6 +1,6 @@ /*! Fabric.js Copyright 2008-2012, Bitsonnet (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "0.7.13" }; +var fabric = fabric || { version: "0.7.14" }; if (typeof exports != 'undefined') { exports.fabric = fabric; diff --git a/dist/all.js b/dist/all.js index 9c7d7b59..14797374 100644 --- a/dist/all.js +++ b/dist/all.js @@ -1,6 +1,6 @@ /*! Fabric.js Copyright 2008-2012, Bitsonnet (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "0.7.13" }; +var fabric = fabric || { version: "0.7.14" }; if (typeof exports != 'undefined') { exports.fabric = fabric; @@ -510,38 +510,38 @@ replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { */ var Cufon = (function() { - - var api = function() { + + var api = function() { return api.replace.apply(null, arguments); }; - + var DOM = api.DOM = { - + ready: (function() { - + var complete = false, readyStatus = { loaded: 1, complete: 1 }; - + var queue = [], perform = function() { if (complete) return; complete = true; for (var fn; fn = queue.shift(); fn()); }; - + // Gecko, Opera, WebKit r26101+ - + if (fabric.document.addEventListener) { fabric.document.addEventListener('DOMContentLoaded', perform, false); fabric.window.addEventListener('pageshow', perform, false); // For cached Gecko pages } - + // Old WebKit, Internet Explorer - + if (!fabric.window.opera && fabric.document.readyState) (function() { readyStatus[fabric.document.readyState] ? perform() : setTimeout(arguments.callee, 10); })(); - + // Internet Explorer - + if (fabric.document.readyState && fabric.document.createStyleSheet) (function() { try { fabric.document.body.doScroll('left'); @@ -551,39 +551,39 @@ var Cufon = (function() { setTimeout(arguments.callee, 1); } })(); - + addEvent(fabric.window, 'load', perform); // Fallback - + return function(listener) { if (!arguments.length) perform(); else complete ? listener() : queue.push(listener); }; - + })() - + }; var CSS = api.CSS = { - + Size: function(value, base) { - + this.value = parseFloat(value); this.unit = String(value).match(/[a-z%]*$/)[0] || 'px'; - + this.convert = function(value) { return value / base * this.value; }; - + this.convertFrom = function(value) { return value / this.value * base; }; - + this.toString = function() { return this.value + this.unit; }; }, - + getStyle: function(el) { return new Style(el.style); /* @@ -593,7 +593,7 @@ var Cufon = (function() { return new Style(el.style); */ }, - + quotedList: cached(function(value) { // doesn't work properly with empty quoted strings (""), but // it's not worth the extra code. @@ -601,22 +601,22 @@ var Cufon = (function() { while (match = re.exec(value)) list.push(match[3] || match[1]); return list; }), - + ready: (function() { - + var complete = false; - + var queue = [], perform = function() { complete = true; for (var fn; fn = queue.shift(); fn()); }; - + // Safari 2 does not include ');function c(e,f){return a(e,/(?:em|ex|%)$/i.test(f)?"1em":f)}function a(h,i){if(/px$/i.test(i)){return parseFloat(i)}var g=h.style.left,f=h.runtimeStyle.left;h.runtimeStyle.left=h.currentStyle.left;h.style.left=i;var e=h.style.pixelLeft;h.style.left=g;h.runtimeStyle.left=f;return e}return function(T,z,O,w,D,U,M){var h=(z===null);if(h){z=D.alt}var B=T.viewBox;var j=O.computedFontSize||(O.computedFontSize=new Cufon.CSS.Size(c(U,O.get("fontSize"))+"px",T.baseSize));var L=O.computedLSpacing;if(L==undefined){L=O.get("letterSpacing");O.computedLSpacing=L=(L=="normal")?0:~~j.convertFrom(a(U,L))}var t,m;if(h){t=D;m=D.firstChild}else{t=fabric.document.createElement("span");t.className="cufon cufon-vml";t.alt=z;m=fabric.document.createElement("span");m.className="cufon-vml-canvas";t.appendChild(m);if(w.printable){var R=fabric.document.createElement("span");R.className="cufon-alt";R.appendChild(fabric.document.createTextNode(z));t.appendChild(R)}if(!M){t.appendChild(fabric.document.createElement("cvml:shape"))}}var Z=t.style;var G=m.style;var f=j.convert(B.height),W=Math.ceil(f);var K=W/f;var J=B.minX,I=B.minY;G.height=W;G.top=Math.round(j.convert(I-T.ascent));G.left=Math.round(j.convert(J));Z.height=j.convert(T.height)+"px";var p=Cufon.getTextDecoration(w);var y=O.get("color");var X=Cufon.CSS.textTransform(z,O).split("");var e=0,H=0,q=null;var x,r,A=w.textShadow;for(var S=0,Q=0,P=X.length;St?1:(l-k)/m;p(j+(r-j)*q(s));if(l>t||n()){u.onComplete&&u.onComplete();return}h(o)})()}var h=(function(){return fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(k,j){fabric.window.setTimeout(k,1000/60)}})();function a(k,m,l){if(k){var j=new Image();j.onload=function(){m&&m.call(l,j);j=j.onload=null};j.src=k}else{m&&m.call(l,k)}}fabric.util.removeFromArray=g;fabric.util.degreesToRadians=b;fabric.util.toFixed=d;fabric.util.getRandomInt=e;fabric.util.falseFunction=i;fabric.util.animate=c;fabric.util.requestAnimFrame=h;fabric.util.loadImage=a})();(function(){var d=Array.prototype.slice;if(!Array.prototype.indexOf){Array.prototype.indexOf=function(g){if(this===void 0||this===null){throw new TypeError()}var h=Object(this),e=h.length>>>0;if(e===0){return -1}var i=0;if(arguments.length>0){i=Number(arguments[1]);if(i!==i){i=0}else{if(i!==0&&i!==(1/0)&&i!==-(1/0)){i=(i>0||-1)*Math.floor(Math.abs(i))}}}if(i>=e){return -1}var f=i>=0?i:Math.max(e-Math.abs(i),0);for(;f>>0;f>>0;g>>0;f>>0;f>>0;g>>0,f=0,h;if(arguments.length>1){h=arguments[1]}else{do{if(f in this){h=this[f++];break}if(++f>=e){throw new TypeError()}}while(true)}for(;f=e){e=h[f][g]}}}else{while(f--){if(h[f]>=e){e=h[f]}}}return e}function c(h,g){if(!h||h.length===0){return undefined}var f=h.length-1,e=g?h[f][g]:h[f];if(g){while(f--){if(h[f][g]-1?c(j,l.match(/opacity:\s*(\d?\.?\d*)/)[1]):j}for(var m in l){if(m==="opacity"){c(j,l[m])}else{var k=(m==="float"||m==="cssFloat")?(typeof n.styleFloat==="undefined"?"cssFloat":"styleFloat"):m;n[k]=l[m]}}return j}var h=fabric.document.createElement("div"),g=typeof h.style.opacity==="string",b=typeof h.style.filter==="string",a=fabric.document.defaultView,f=a&&typeof a.getComputedStyle!=="undefined",d=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,c=function(i){return i};if(g){c=function(i,j){i.style.opacity=j;return i}}else{if(b){c=function(i,j){var k=i.style;if(i.currentStyle&&!i.currentStyle.hasLayout){k.zoom=1}if(d.test(k.filter)){j=j>=0.9999?"":("alpha(opacity="+(j*100)+")");k.filter=k.filter.replace(d,j)}else{k.filter+=" alpha(opacity="+(j*100)+")"}return i}}}fabric.util.setStyle=e})();(function(){var h=Array.prototype.slice;function g(j){return typeof j==="string"?fabric.document.getElementById(j):j}function b(j){return h.call(j,0)}try{var i=b(fabric.document.childNodes) instanceof Array}catch(a){}if(!i){b=function(k){var j=new Array(k.length),l=k.length;while(l--){j[l]=k[l]}return j}}function c(k,j){var l=fabric.document.createElement(k);for(var m in j){if(m==="class"){l.className=j[m]}else{if(m==="for"){l.htmlFor=j[m]}else{l.setAttribute(m,j[m])}}}return l}function f(j,k){if((" "+j.className+" ").indexOf(" "+k+" ")===-1){j.className+=(j.className?" ":"")+k}}function e(k,l,j){if(typeof l==="string"){l=c(l,j)}if(k.parentNode){k.parentNode.replaceChild(l,k)}l.appendChild(k);return l}function d(k){var j=0,l=0;do{j+=k.offsetTop||0;l+=k.offsetLeft||0;k=k.offsetParent}while(k);return({left:l,top:j})}(function(){var k=fabric.document.documentElement.style;var l="userSelect" in k?"userSelect":"MozUserSelect" in k?"MozUserSelect":"WebkitUserSelect" in k?"WebkitUserSelect":"KhtmlUserSelect" in k?"KhtmlUserSelect":"";function m(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=fabric.util.falseFunction}if(l){n.style[l]="none"}else{if(typeof n.unselectable=="string"){n.unselectable="on"}}return n}function j(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=null}if(l){n.style[l]=""}else{if(typeof n.unselectable=="string"){n.unselectable=""}}return n}fabric.util.makeElementUnselectable=m;fabric.util.makeElementSelectable=j})();(function(){function j(k,o){var m=fabric.document.getElementsByTagName("head")[0],l=fabric.document.createElement("script"),n=true;l.type="text/javascript";l.setAttribute("runat","server");l.onload=l.onreadystatechange=function(p){if(n){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete"){return}n=false;o(p||fabric.window.event);l=l.onload=l.onreadystatechange=null}};l.src=k;m.appendChild(l)}fabric.util.getScript=j})();fabric.util.getById=g;fabric.util.toArray=b;fabric.util.makeElement=c;fabric.util.addClass=f;fabric.util.wrapElement=e;fabric.util.getElementOffset=d})();(function(){function d(e,f){return e+(/\?/.test(e)?"&":"?")+f}var c=(function(){var h=[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 e=h.length;e--;){try{var g=h[e]();if(g){return h[e]}}catch(f){}}})();function a(){}function b(g,f){f||(f={});var j=f.method?f.method.toUpperCase():"GET",i=f.onComplete||function(){},h=c(),e;h.onreadystatechange=function(){if(h.readyState===4){i(h);h.onreadystatechange=a}};if(j==="GET"){e=null;if(typeof f.parameters=="string"){g=d(g,f.parameters)}}h.open(j,g,true);if(j==="POST"||j==="PUT"){h.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}h.send(e);return h}fabric.util.request=b})();(function(i){var g=i.fabric||(i.fabric={}),o=g.util.object.extend,e=g.util.string.capitalize,p=g.util.object.clone;var k={cx:"left",x:"left",cy:"top",y:"top",r:"radius","fill-opacity":"opacity","fill-rule":"fillRule","stroke-width":"strokeWidth",transform:"transformMatrix"};function d(v,u){if(!v){return}var x,t,s={};if(v.parentNode&&/^g$/i.test(v.parentNode.nodeName)){s=g.parseAttributes(v.parentNode,u)}var w=u.reduce(function(z,y){x=v.getAttribute(y);t=parseFloat(x);if(x){if((y==="fill"||y==="stroke")&&x==="none"){x=""}if(y==="fill-rule"){x=(x==="evenodd")?"destination-over":x}if(y==="transform"){x=g.parseTransformAttribute(x)}if(y in k){y=k[y]}z[y]=isNaN(t)?x:t}return z},{});w=o(w,o(n(v),g.parseStyleAttribute(v)));return o(s,w)}g.parseTransformAttribute=(function(){function s(L,M){var N=M[0];L[0]=Math.cos(N);L[1]=Math.sin(N);L[2]=-Math.sin(N);L[3]=Math.cos(N)}function x(N,O){var M=O[0],L=(O.length===2)?O[1]:O[0];N[0]=M;N[3]=L}function I(L,M){L[2]=M[0]}function u(L,M){L[1]=M[0]}function F(L,M){L[4]=M[0];if(M.length===2){L[5]=M[1]}}var z=[1,0,0,1,0,0],t="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",J="(?:\\s+,?\\s*|,\\s*)",A="(?:(skewX)\\s*\\(\\s*("+t+")\\s*\\))",y="(?:(skewY)\\s*\\(\\s*("+t+")\\s*\\))",H="(?:(rotate)\\s*\\(\\s*("+t+")(?:"+J+"("+t+")"+J+"("+t+"))?\\s*\\))",K="(?:(scale)\\s*\\(\\s*("+t+")(?:"+J+"("+t+"))?\\s*\\))",D="(?:(translate)\\s*\\(\\s*("+t+")(?:"+J+"("+t+"))?\\s*\\))",G="(?:(matrix)\\s*\\(\\s*("+t+")"+J+"("+t+")"+J+"("+t+")"+J+"("+t+")"+J+"("+t+")"+J+"("+t+")\\s*\\))",E="(?:"+G+"|"+D+"|"+K+"|"+H+"|"+A+"|"+y+")",B="(?:"+E+"(?:"+J+E+")*)",v="^\\s*(?:"+B+"?)\\s*$",C=new RegExp(v),w=new RegExp(E);return function(M){var L=z.concat();if(!M||(M&&!C.test(M))){return L}M.replace(w,function(Q){var N=new RegExp(E).exec(Q).filter(function(R){return(R!==""&&R!=null)}),O=N[1],P=N.slice(2).map(parseFloat);switch(O){case"translate":F(L,P);break;case"rotate":s(L,P);break;case"scale":x(L,P);break;case"skewX":I(L,P);break;case"skewY":u(L,P);break;case"matrix":L=P;break}});return L}})();function r(v){if(!v){return null}v=v.trim();var x=v.indexOf(",")>-1;v=v.split(/\s+/);var t=[];if(x){for(var u=0,s=v.length;u",'",""].join("")}return t}o(g,{parseAttributes:d,parseElements:f,parseStyleAttribute:h,parsePointsAttribute:r,getCSSRules:c,loadSVGFromURL:b,loadSVGFromString:m,createSVGFontFacesMarkup:l})})(typeof exports!="undefined"?exports:this);(function(){function c(h){var g=h.getAttribute("style");if(g){var k=g.split(/\s*;\s*/);for(var f=k.length;f--;){var e=k[f].split(/\s*:\s*/),d=e[0].trim(),j=e[1].trim();if(d==="stop-color"){return j}}}}fabric.Gradient={create:function(l,m){m||(m={});var f=m.x1||0,k=m.y1||0,e=m.x2||l.canvas.width,i=m.y2||0,g=m.colorStops;var j=l.createLinearGradient(f,k,e,i);for(var h in g){var d=g[h];j.addColorStop(parseFloat(h),d)}return j},fromElement:function(d,m,l){var j=d.getElementsByTagName("stop"),d,f,e={},g,k={x1:d.getAttribute("x1")||0,y1:d.getAttribute("y1")||0,x2:d.getAttribute("x2")||"100%",y2:d.getAttribute("y2")||0};for(var h=j.length;h--;){d=j[h];f=d.getAttribute("offset");f=parseFloat(f)/(/%$/.test(f)?100:1);e[f]=c(d)||d.getAttribute("stop-color")}a(l,k);return fabric.Gradient.create(m,{x1:k.x1,y1:k.y1,x2:k.x2,y2:k.y2,colorStops:e})},forObject:function(g,d,e){e||(e={});a(g,e);var f=fabric.Gradient.create(d,{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,colorStops:e.colorStops});return f}};function a(f,e){for(var g in e){if(typeof e[g]==="string"&&/^\d+%$/.test(e[g])){var d=parseFloat(e[g],10);if(g==="x1"||g==="x2"){e[g]=f.width*d/100}else{if(g==="y1"||g==="y2"){e[g]=f.height*d/100}}}if(g==="x1"||g==="x2"){e[g]-=f.width/2}else{if(g==="y1"||g==="y2"){e[g]-=f.height/2}}}}function b(j){var f=j.getElementsByTagName("linearGradient"),d=j.getElementsByTagName("radialGradient"),g,h={};for(var e=f.length;e--;){g=f[e];h[g.id]=g}for(var e=d.length;e--;){g=d[e];h[g.id]=g}return h}fabric.getGradientDefs=b})();(function(b){var c=b.fabric||(b.fabric={});if(c.Point){c.warn("fabric.Point is already defined");return}c.Point=a;function a(d,e){if(arguments.length>0){this.init(d,e)}}a.prototype={constructor:a,init:function(d,e){this.x=d;this.y=e},add:function(d){return new a(this.x+d.x,this.y+d.y)},addEquals:function(d){this.x+=d.x;this.y+=d.y;return this},scalarAdd:function(d){return new a(this.x+d,this.y+d)},scalarAddEquals:function(d){this.x+=d;this.y+=d;return this},subtract:function(d){return new a(this.x-d.x,this.y-d.y)},subtractEquals:function(d){this.x-=d.x;this.y-=d.y;return this},scalarSubtract:function(d){return new a(this.x-d,this.y-d)},scalarSubtractEquals:function(d){this.x-=d;this.y-=d;return this},multiply:function(d){return new a(this.x*d,this.y*d)},multiplyEquals:function(d){this.x*=d;this.y*=d;return this},divide:function(d){return new a(this.x/d,this.y/d)},divideEquals:function(d){this.x/=d;this.y/=d;return this},eq:function(d){return(this.x==d.x&&this.y==d.y)},lt:function(d){return(this.xd.x&&this.y>d.y)},gte:function(d){return(this.x>=d.x&&this.y>=d.y)},lerp:function(e,d){return new a(this.x+(e.x-this.x)*d,this.y+(e.y-this.y)*d)},distanceFrom:function(f){var e=this.x-f.x,d=this.y-f.y;return Math.sqrt(e*e+d*d)},min:function(d){return new a(Math.min(this.x,d.x),Math.min(this.y,d.y))},max:function(d){return new a(Math.max(this.x,d.x),Math.max(this.y,d.y))},toString:function(){return this.x+","+this.y},setXY:function(d,e){this.x=d;this.y=e},setFromPoint:function(d){this.x=d.x;this.y=d.y},swap:function(e){var d=this.x,f=this.y;this.x=e.x;this.y=e.y;e.x=d;e.y=f}}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Intersection){b.warn("fabric.Intersection is already defined");return}function c(d){if(arguments.length>0){this.init(d)}}b.Intersection=c;b.Intersection.prototype={init:function(d){this.status=d;this.points=[]},appendPoint:function(d){this.points.push(d)},appendPoints:function(d){this.points=this.points.concat(d)}};b.Intersection.intersectLineLine=function(h,f,l,k){var m,i=(k.x-l.x)*(h.y-l.y)-(k.y-l.y)*(h.x-l.x),j=(f.x-h.x)*(h.y-l.y)-(f.y-h.y)*(h.x-l.x),g=(k.y-l.y)*(f.x-h.x)-(k.x-l.x)*(f.y-h.y);if(g!=0){var e=i/g,d=j/g;if(0<=e&&e<=1&&0<=d&&d<=1){m=new c("Intersection");m.points.push(new b.Point(h.x+e*(f.x-h.x),h.y+e*(f.y-h.y)))}else{m=new c("No Intersection")}}else{if(i==0||j==0){m=new c("Coincident")}else{m=new c("Parallel")}}return m};b.Intersection.intersectLinePolygon=function(e,d,l){var m=new c("No Intersection"),f=l.length;for(var h=0;h0){m.status="Intersection"}return m};b.Intersection.intersectPolygonPolygon=function(j,h){var f=new c("No Intersection"),l=j.length;for(var k=0;k0){f.status="Intersection"}return f};b.Intersection.intersectPolygonRectangle=function(n,e,d){var g=e.min(d),m=e.max(d),f=new b.Point(m.x,g.y),l=new b.Point(g.x,m.y),k=c.intersectLinePolygon(g,f,n),j=c.intersectLinePolygon(f,m,n),i=c.intersectLinePolygon(m,l,n),h=c.intersectLinePolygon(l,g,n),o=new c("No Intersection");o.appendPoints(k.points);o.appendPoints(j.points);o.appendPoints(i.points);o.appendPoints(h.points);if(o.points.length>0){o.status="Intersection"}return o}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Color){b.warn("fabric.Color is already defined.");return}function c(d){if(!d){this.setSource([0,0,0,1])}else{this._tryParsingColor(d)}}b.Color=c;b.Color.prototype={_tryParsingColor:function(d){var e=c.sourceFromHex(d);if(!e){e=c.sourceFromRgb(d)}if(e){this.setSource(e)}},getSource:function(){return this._source},setSource:function(d){this._source=d},toRgb:function(){var d=this.getSource();return"rgb("+d[0]+","+d[1]+","+d[2]+")"},toRgba:function(){var d=this.getSource();return"rgba("+d[0]+","+d[1]+","+d[2]+","+d[3]+")"},toHex:function(){var h=this.getSource();var f=h[0].toString(16);f=(f.length==1)?("0"+f):f;var e=h[1].toString(16);e=(e.length==1)?("0"+e):e;var d=h[2].toString(16);d=(d.length==1)?("0"+d):d;return f.toUpperCase()+e.toUpperCase()+d.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var d=this.getSource();d[3]=e;this.setSource(d);return this},toGrayscale:function(){var f=this.getSource(),e=parseInt((f[0]*0.3+f[1]*0.59+f[2]*0.11).toFixed(0),10),d=f[3];this.setSource([e,e,e,d]);return this},toBlackWhite:function(d){var g=this.getSource(),f=(g[0]*0.3+g[1]*0.59+g[2]*0.11).toFixed(0),e=g[3],d=d||127;f=(Number(f)','',"',"Created with Fabric.js ",fabric.version,"",fabric.createSVGFontFacesMarkup(this.getObjects()),];for(var j=0,k=this.getObjects(),g=k.length;j");return h.join("")},isEmpty:function(){return this._objects.length===0},remove:function(g){e(this._objects,g);if(this.getActiveObject()===g){this.discardActiveObject()}this.renderAll();return g},sendToBack:function(g){e(this._objects,g);this._objects.unshift(g);return this.renderAll()},bringToFront:function(g){e(this._objects,g);this._objects.push(g);return this.renderAll()},sendBackwards:function(j){var h=this._objects.indexOf(j),g=h;if(h!==0){for(var k=h-1;k>=0;--k){if(j.intersectsWithObject(this._objects[k])||j.isContainedWithinObject(this._objects[k])){g=k;break}}e(this._objects,j);this._objects.splice(g,0,j)}return this.renderAll()},bringForward:function(k){var n=this.getObjects(),h=n.indexOf(k),g=h;if(h!==n.length-1){for(var m=h+1,j=this._objects.length;m"};f(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(l){var k=l.getContext("2d"),g=k.getImageData(0,0,l.width,l.height),p=g.data,m=g.width,r=g.height,q,h,o,n;for(o=0;o0)?0:-v),r.ey-((u>0)?0:-u),t,s);this.contextTop.lineWidth=this.selectionLineWidth;this.contextTop.strokeStyle=this.selectionBorderColor;this.contextTop.strokeRect(r.ex+a-((v>0)?0:t),r.ey+a-((u>0)?0:s),t,s)},_findSelectedObjects:function(x){var y,t,D=[],s=this._groupSelector.ex,C=this._groupSelector.ey,r=s+this._groupSelector.left,A=C+this._groupSelector.top,z,w=new fabric.Point(f(s,r),f(C,A)),B=new fabric.Point(l(s,r),l(C,A));for(var u=0,v=this._objects.length;u1){var D=new fabric.Group(D);this.setActiveGroup(D);D.saveCoords();this.fire("selection:created",{target:D})}}this.renderAll()},findTarget:function(v,s){var u,w=this.getPointer(v);var t=this.getActiveGroup();if(t&&!s&&this.containsPoint(v,t)){u=t;return u}for(var r=this._objects.length;r--;){if(this._objects[r]&&this.containsPoint(v,this._objects[r])){u=this._objects[r];this.relatedTarget=u;break}}if(u&&u.selectable){return u}},getPointer:function(r){var s=q(r);return{x:s.x-this._offset.left,y:s.y-this._offset.top}},_createUpperCanvas:function(){this.upperCanvasEl=this._createCanvasElement();this.upperCanvasEl.className="upper-canvas";this.wrapperEl.appendChild(this.upperCanvasEl);this._applyCanvasStyle(this.upperCanvasEl);this.contextTop=this.upperCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=fabric.util.wrapElement(this.lowerCanvasEl,"div",{"class":this.CONTAINER_CLASS});fabric.util.setStyle(this.wrapperEl,{width:this.getWidth()+"px",height:this.getHeight()+"px",position:"relative"});fabric.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(s){var t=this.getWidth()||s.width,r=this.getHeight()||s.height;fabric.util.setStyle(s,{position:"absolute",width:t+"px",height:r+"px",left:0,top:0});s.width=t;s.height=r;fabric.util.makeElementUnselectable(s)},getContext:function(){return this.contextTop},setActiveObject:function(r,s){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=r;r.setActive(true);this.renderAll();this.fire("object:selected",{target:r,e:s});return this},getActiveObject:function(){return this._activeObject},discardActiveObject:function(){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=null;return this},setActiveGroup:function(r){this._activeGroup=r;return this},getActiveGroup:function(){return this._activeGroup},discardActiveGroup:function(){var r=this.getActiveGroup();if(r){r.destroy()}return this.setActiveGroup(null)},deactivateAll:function(){var s=this.getObjects(),t=0,r=s.length;for(;t1){var o=new fabric.PathGroup(q,n)}else{var o=q[0]}o.setSourcePath(m);if(!(o instanceof fabric.PathGroup)){fabric.util.object.extend(o,n);if(typeof n.angle!=="undefined"){o.setAngle(n.angle)}}g(o,l)})}}}},this)}catch(c){fabric.log(c.message)}},loadFromJSON:function(a,d){if(!a){return}var b=JSON.parse(a);if(!b||(b&&!b.objects)){return}this.clear();var c=this;this._enlivenObjects(b.objects,function(){c.backgroundColor=b.background;if(d){d()}});return this},_enlivenObjects:function(b,e){var c=0,a=b.filter(function(f){return f.type==="image"}).length;var d=this;b.forEach(function(h,g){if(!h.type){return}switch(h.type){case"image":case"font":fabric[fabric.util.string.capitalize(h.type)].fromObject(h,function(i){d.insertAt(i,g,true);if(++c===a){if(e){e()}}});break;default:var f=fabric[fabric.util.string.camelize(fabric.util.string.capitalize(h.type))];if(f&&f.fromObject){d.insertAt(f.fromObject(h),g,true)}break}});if(a===0&&e){e()}},_toDataURL:function(a,b){this.clone(function(c){b(c.toDataURL(a))})},_toDataURLWithMultiplier:function(a,c,b){this.clone(function(d){b(d.toDataURLWithMultiplier(a,c))})},clone:function(c){var a=fabric.document.createElement("canvas");a.width=this.getWidth();a.height=this.getHeight();var b=this.__clone||(this.__clone=new fabric.Canvas(a));b.clipTo=this.clipTo;return b.loadFromJSON(JSON.stringify(this.toJSON()),function(){if(c){c(b)}})}});(function(a){var d=a.fabric||(a.fabric={}),l=d.util.object.extend,m=d.util.object.clone,c=d.util.toFixed,k=d.util.string.capitalize,p=d.util.getPointer,b=d.util.degreesToRadians,o=Array.prototype.slice;if(d.Object){return}d.Object=d.util.createClass({type:"object",includeDefaultValues:true,NUM_FRACTION_DIGITS:2,FX_DURATION:500,MIN_SCALE_LIMIT:0.1,stateProperties:("top left width height scaleX scaleY flipX flipY theta angle opacity cornersize fill overlayFill stroke strokeWidth fillRule borderScaleFactor transformMatrix selectable").split(" "),top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:false,flipY:false,theta:0,opacity:1,angle:0,cornersize:12,padding:0,borderColor:"rgba(102,153,255,0.75)",cornerColor:"rgba(102,153,255,0.5)",fill:"rgb(0,0,0)",fillRule:"source-over",overlayFill:null,stroke:null,strokeWidth:1,borderOpacityWhenMoving:0.4,borderScaleFactor:1,transformMatrix:null,selectable:true,hasControls:true,hasBorders:true,callSuper:function(i){var q=this.constructor.superclass.prototype[i];return(arguments.length>1)?q.apply(this,o.call(arguments,1)):q.call(this)},initialize:function(i){i&&this.setOptions(i)},setOptions:function(q){var r=this.stateProperties.length,s;while(r--){s=this.stateProperties[r];if(s in q){this.set(s,q[s])}}},transform:function(i){i.globalAlpha=this.opacity;i.translate(this.left,this.top);i.rotate(this.theta);i.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(){var i={type:this.type,left:c(this.left,this.NUM_FRACTION_DIGITS),top:c(this.top,this.NUM_FRACTION_DIGITS),width:c(this.width,this.NUM_FRACTION_DIGITS),height:c(this.height,this.NUM_FRACTION_DIGITS),fill:this.fill,overlayFill:this.overlayFill,stroke:this.stroke,strokeWidth:this.strokeWidth,scaleX:c(this.scaleX,this.NUM_FRACTION_DIGITS),scaleY:c(this.scaleY,this.NUM_FRACTION_DIGITS),angle:c(this.getAngle(),this.NUM_FRACTION_DIGITS),flipX:this.flipX,flipY:this.flipY,opacity:c(this.opacity,this.NUM_FRACTION_DIGITS),selectable:this.selectable};if(!this.includeDefaultValues){i=this._removeDefaultValues(i)}return i},toDatalessObject:function(){return this.toObject()},getSvgStyles:function(){return["stroke: ",(this.stroke?this.stroke:"none"),"; ","stroke-width: ",(this.strokeWidth?this.strokeWidth:"0"),"; ","fill: ",(this.fill?this.fill:"none"),"; ","opacity: ",(this.opacity?this.opacity:"1"),";",].join("")},getSvgTransform:function(){var i=this.getAngle();return["translate(",this.left," ",this.top,")",i!==0?(" rotate("+i+")"):"",(this.scaleX===1&&this.scaleY===1)?"":(" scale("+c(this.scaleX,"2")+" "+c(this.scaleY,"2")+")")].join("")},_removeDefaultValues:function(q){var i=d.Object.prototype.options;if(i){this.stateProperties.forEach(function(r){if(q[r]===i[r]){delete q[r]}})}return q},isActive:function(){return !!this.active},setActive:function(i){this.active=!!i;return this},toString:function(){return"#"},set:function(q,i){var s=(q==="scaleX"||q==="scaleY")&&ir.x&&s.xr.y&&u.y=v)&&(s.d.y>=v)){continue}if((s.o.x==s.d.x)&&(s.o.x>=w)){x=s.o.x;u=v}else{z=0;y=(s.d.y-s.o.y)/(s.d.x-s.o.x);r=v-z*w;q=s.o.y-y*s.o.x;x=-(r-q)/(z-y);u=r+z*x}if(x>=w){t+=1}if(t==2){break}}return t},_getImageLines:function(r,q){return{topline:{o:r.tl,d:r.tr},rightline:{o:r.tr,d:r.br},bottomline:{o:r.br,d:r.bl},leftline:{o:r.bl,d:r.tl}}},_setCornerCoords:function(){var t=this.oCoords,q=b(45-this.getAngle()),s=Math.sqrt(2*Math.pow(this.cornersize,2))/2,i=s*Math.cos(q),r=s*Math.sin(q);t.tl.corner={tl:{x:t.tl.x-r,y:t.tl.y-i},tr:{x:t.tl.x+i,y:t.tl.y-r},bl:{x:t.tl.x-i,y:t.tl.y+r},br:{x:t.tl.x+r,y:t.tl.y+i}};t.tr.corner={tl:{x:t.tr.x-r,y:t.tr.y-i},tr:{x:t.tr.x+i,y:t.tr.y-r},br:{x:t.tr.x+r,y:t.tr.y+i},bl:{x:t.tr.x-i,y:t.tr.y+r}};t.bl.corner={tl:{x:t.bl.x-r,y:t.bl.y-i},bl:{x:t.bl.x-i,y:t.bl.y+r},br:{x:t.bl.x+r,y:t.bl.y+i},tr:{x:t.bl.x+i,y:t.bl.y-r}};t.br.corner={tr:{x:t.br.x+i,y:t.br.y-r},bl:{x:t.br.x-i,y:t.br.y+r},br:{x:t.br.x+r,y:t.br.y+i},tl:{x:t.br.x-r,y:t.br.y-i}};t.ml.corner={tl:{x:t.ml.x-r,y:t.ml.y-i},tr:{x:t.ml.x+i,y:t.ml.y-r},bl:{x:t.ml.x-i,y:t.ml.y+r},br:{x:t.ml.x+r,y:t.ml.y+i}};t.mt.corner={tl:{x:t.mt.x-r,y:t.mt.y-i},tr:{x:t.mt.x+i,y:t.mt.y-r},bl:{x:t.mt.x-i,y:t.mt.y+r},br:{x:t.mt.x+r,y:t.mt.y+i}};t.mr.corner={tl:{x:t.mr.x-r,y:t.mr.y-i},tr:{x:t.mr.x+i,y:t.mr.y-r},bl:{x:t.mr.x-i,y:t.mr.y+r},br:{x:t.mr.x+r,y:t.mr.y+i}};t.mb.corner={tl:{x:t.mb.x-r,y:t.mb.y-i},tr:{x:t.mb.x+i,y:t.mb.y-r},bl:{x:t.mb.x-i,y:t.mb.y+r},br:{x:t.mb.x+r,y:t.mb.y+i}}},toGrayscale:function(){var i=this.get("fill");if(i){this.set("overlayFill",new d.Color(i).toGrayscale().toRgb())}return this},complexity:function(){return 0},straighten:function(){var i=this._getAngleValueForStraighten();this.setAngle(i);return this},fxStraighten:function(q){q=q||{};var r=function(){},s=q.onComplete||r,i=q.onChange||r,t=this;d.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(u){t.setAngle(u);i()},onComplete:function(){t.setCoords();s()},onStart:function(){t.setActive(false)}});return this},fxRemove:function(q){q||(q={});var r=function(){},s=q.onComplete||r,i=q.onChange||r,t=this;d.util.animate({startValue:this.get("opacity"),endValue:0,duration:this.FX_DURATION,onChange:function(u){t.set("opacity",u);i()},onComplete:s,onStart:function(){t.setActive(false)}});return this},_getAngleValueForStraighten:function(){var i=this.get("angle");if(i>-225&&i<=-135){return -180}else{if(i>-135&&i<=-45){return -90}else{if(i>-45&&i<=45){return 0}else{if(i>45&&i<=135){return 90}else{if(i>135&&i<=225){return 180}else{if(i>225&&i<=315){return 270}else{if(i>315){return 360}}}}}}}return 0},toJSON:function(){return this.toObject()},setGradientFill:function(i,q){this.set("fill",d.Gradient.forObject(this,i,q))},animate:function(q,s,i){var r=this;if(!("from" in i)){i.from=this.get(q)}if(/[+-]/.test(s.charAt(0))){s=this.get(q)+parseFloat(s)}d.util.animate({startValue:i.from,endValue:s,duration:i.duration,onChange:function(t){r.set(q,t);i.onChange&&i.onChange()},onComplete:function(){r.setCoords();i.onComplete&&i.onComplete()}})}});d.Object.prototype.rotate=d.Object.prototype.setAngle;var j=d.Object.prototype;for(var g=j.stateProperties.length;g--;){var h=j.stateProperties[g],e=h.charAt(0).toUpperCase()+h.slice(1),f="set"+e,n="get"+e;if(!j[n]){j[n]=(function(i){return new Function('return this.get("'+i+'")')})(h)}if(!j[f]){j[f]=(function(i){return new Function("value",'return this.set("'+i+'", value)')})(h)}}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),e=c.util.object.extend,d=c.Object.prototype.set,a={x1:1,x2:1,y1:1,y2:1};if(c.Line){c.warn("fabric.Line is already defined");return}c.Line=c.util.createClass(c.Object,{type:"line",initialize:function(g,f){if(!g){g=[0,0,0,0]}this.callSuper("initialize",f);this.set("x1",g[0]);this.set("y1",g[1]);this.set("x2",g[2]);this.set("y2",g[3]);this._setWidthHeight()},_setWidthHeight:function(){this.set("width",(this.x2-this.x1)||1);this.set("height",(this.y2-this.y1)||1);this.set("left",this.x1+this.width/2);this.set("top",this.y1+this.height/2)},set:function(f,g){d.call(this,f,g);if(f in a){this._setWidthHeight()}return this},_render:function(f){f.beginPath();f.moveTo(this.width===1?0:(-this.width/2),this.height===1?0:(-this.height/2));f.lineTo(this.width===1?0:(this.width/2),this.height===1?0:(this.height/2));f.lineWidth=this.strokeWidth;var g=f.strokeStyle;f.strokeStyle=f.fillStyle;f.stroke();f.strokeStyle=g},complexity:function(){return 1},toObject:function(){return e(this.callSuper("toObject"),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){return[""].join("")}});c.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" ");c.Line.fromElement=function(g,f){var i=c.parseAttributes(g,c.Line.ATTRIBUTE_NAMES);var h=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new c.Line(h,e(i,f))};c.Line.fromObject=function(f){var g=[f.x1,f.y1,f.x2,f.y2];return new c.Line(g,f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),d=Math.PI*2,e=b.util.object.extend;if(b.Circle){b.warn("fabric.Circle is already defined.");return}b.Circle=b.util.createClass(b.Object,{type:"circle",initialize:function(f){f=f||{};this.set("radius",f.radius||0);this.callSuper("initialize",f);var g=this.get("radius")*2*this.get("scaleX");this.set("width",g).set("height",g)},toObject:function(){return e(this.callSuper("toObject"),{radius:this.get("radius")})},toSVG:function(){return('')},_render:function(f,g){f.beginPath();f.globalAlpha*=this.opacity;f.arc(g?this.left:0,g?this.top:0,this.radius,0,d,false);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},complexity:function(){return 1}});b.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Circle.fromElement=function(g,f){f||(f={});var h=b.parseAttributes(g,b.Circle.ATTRIBUTE_NAMES);if(!c(h)){throw Error("value of `r` attribute is required and can not be negative")}if("left" in h){h.left-=(f.width/2)||0}if("top" in h){h.top-=(f.height/2)||0}return new b.Circle(e(h,f))};function c(f){return(("radius" in f)&&(f.radius>0))}b.Circle.fromObject=function(f){return new b.Circle(f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Triangle){b.warn("fabric.Triangle is already defined");return}b.Triangle=b.util.createClass(b.Object,{type:"triangle",initialize:function(c){c=c||{};this.callSuper("initialize",c);this.set("width",c.width||100).set("height",c.height||100)},_render:function(c){var d=this.width/2,e=this.height/2;c.beginPath();c.moveTo(-d,e);c.lineTo(0,-e);c.lineTo(d,e);c.closePath();if(this.fill){c.fill()}if(this.stroke){c.stroke()}},complexity:function(){return 1},toSVG:function(){var c=this.width/2,d=this.height/2;var e=[-c+" "+d,"0 "+-d,c+" "+d].join(",");return''}});b.Triangle.fromObject=function(c){return new b.Triangle(c)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),c=Math.PI*2,d=b.util.object.extend;if(b.Ellipse){b.warn("fabric.Ellipse is already defined.");return}b.Ellipse=b.util.createClass(b.Object,{type:"ellipse",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(){return d(this.callSuper("toObject"),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){return[""].join("")},render:function(e,f){if(this.rx===0||this.ry===0){return}return this.callSuper("render",e,f)},_render:function(e,f){e.beginPath();e.save();e.globalAlpha*=this.opacity;e.transform(1,0,0,this.ry/this.rx,0,0);e.arc(f?this.left:0,f?this.top:0,this.rx,0,c,false);if(this.stroke){e.stroke()}if(this.fill){e.fill()}e.restore()},complexity:function(){return 1}});b.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Ellipse.fromElement=function(f,e){e||(e={});var g=b.parseAttributes(f,b.Ellipse.ATTRIBUTE_NAMES);if("left" in g){g.left-=(e.width/2)||0}if("top" in g){g.top-=(e.height/2)||0}return new b.Ellipse(d(g,e))};b.Ellipse.fromObject=function(e){return new b.Ellipse(e)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={});if(c.Rect){console.warn("fabric.Rect is already defined");return}c.Rect=c.util.createClass(c.Object,{type:"rect",options:{rx:0,ry:0},initialize:function(d){this._initStateProperties();this.callSuper("initialize",d);this._initRxRy()},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){if(this.rx&&!this.ry){this.ry=this.rx}else{if(this.ry&&!this.rx){this.rx=this.ry}}},_render:function(f){var j=this.rx||0,i=this.ry||0,d=-this.width/2,k=-this.height/2,e=this.width,g=this.height;f.beginPath();f.globalAlpha*=this.opacity;if(this.group){f.translate(this.x||0,this.y||0)}f.moveTo(d+j,k);f.lineTo(d+e-j,k);f.bezierCurveTo(d+e,k,d+e,k+i,d+e,k+i);f.lineTo(d+e,k+g-i);f.bezierCurveTo(d+e,k+g,d+e-j,k+g,d+e-j,k+g);f.lineTo(d+j,k+g);f.bezierCurveTo(d,k+g,d,k+g-i,d,k+g-i);f.lineTo(d,k+i);f.bezierCurveTo(d,k,d+j,k,d+j,k);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},_normalizeLeftTopProperties:function(d){if(d.left){this.set("left",d.left+this.getWidth()/2)}this.set("x",d.left||0);if(d.top){this.set("top",d.top+this.getHeight()/2)}this.set("y",d.top||0);return this},complexity:function(){return 1},toSVG:function(){return''}});c.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");function a(d){d.left=d.left||0;d.top=d.top||0;return d}c.Rect.fromElement=function(e,d){if(!e){return null}var g=c.parseAttributes(e,c.Rect.ATTRIBUTE_NAMES);g=a(g);var f=new c.Rect(c.util.object.extend((d?c.util.object.clone(d):{}),g));f._normalizeLeftTopProperties(g);return f};c.Rect.fromObject=function(d){return new c.Rect(d)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),a=c.util.toFixed;if(c.Polyline){c.warn("fabric.Polyline is already defined");return}c.Polyline=c.util.createClass(c.Object,{type:"polyline",initialize:function(e,d){d=d||{};this.set("points",e);this.callSuper("initialize",d);this._calcDimensions()},_calcDimensions:function(){return c.Polygon.prototype._calcDimensions.call(this)},toObject:function(){return c.Polygon.prototype.toObject.call(this)},toSVG:function(){var f=[];for(var e=0,d=this.points.length;e"].join("")},_render:function(f){var e;f.beginPath();for(var g=0,d=this.points.length;g"].join("")},_render:function(l){var k;l.beginPath();for(var m=0,j=this.points.length;m1){E=Math.sqrt(E);O*=E;N*=E}var R=aa/O;var Q=W/O;var D=(-W)/N;var C=(aa)/N;var H=R*M+Q*L;var q=D*M+C*L;var F=R*T+Q*S;var ab=D*T+C*S;var Z=(F-H)*(F-H)+(ab-q)*(ab-q);var U=1/Z-0.25;if(U<0){U=0}var w=Math.sqrt(U);if(P==J){w=-w}var V=0.5*(H+F)-w*(ab-q);var K=0.5*(q+ab)+w*(F-H);var v=Math.atan2(q-K,H-V);var u=Math.atan2(ab-K,F-V);var Y=u-v;if(Y<0&&P==1){Y+=2*Math.PI}else{if(Y>0&&P==0){Y-=2*Math.PI}}var B=Math.ceil(Math.abs(Y/(Math.PI*0.5+0.001)));var I=[];for(var X=0;X"},toObject:function(){var q=g(this.callSuper("toObject"),{path:this.path});if(this.sourcePath){q.sourcePath=this.sourcePath}if(this.transformMatrix){q.transformMatrix=this.transformMatrix}return q},toDatalessObject:function(){var q=this.toObject();if(this.sourcePath){q.path=this.sourcePath}delete q.sourcePath;return q},toSVG:function(){var t=[];for(var r=0,q=this.path.length;r',"',""].join("")},complexity:function(){return this.path.length},_parsePath:function(){var C=[],z,v,y;for(var u=0,t,q,w=this.path.length;uB){for(var r=1,x=q.length;r"];for(var l=0,j=m.length;l");return k.join("")},toString:function(){return"#"},isSameColor:function(){var j=this.getObjects()[0].get("fill");return this.getObjects().every(function(k){return k.get("fill")===j})},complexity:function(){return this.paths.reduce(function(j,k){return j+((k&&k.complexity)?k.complexity():0)},0)},toGrayscale:function(){var j=this.paths.length;while(j--){this.paths[j].toGrayscale()}return this},getObjects:function(){return this.paths}});function c(m){for(var l=0,j=m.length;l"},getObjects:function(){return this.objects},add:function(h){this._restoreObjectsState();this.objects.push(h);h.setActive(true);this._calcBounds();this._updateObjectsCoords();return this},remove:function(h){this._restoreObjectsState();f(this.objects,h);h.setActive(false);this._calcBounds();this._updateObjectsCoords();return this},size:function(){return this.getObjects().length},set:function(h,k){if(typeof k=="function"){this.set(h,k(this[h]))}else{if(h==="fill"||h==="opacity"){var j=this.objects.length;this[h]=k;while(j--){this.objects[j].set(h,k)}}else{this[h]=k}}return this},contains:function(h){return this.objects.indexOf(h)>-1},toObject:function(){return g(this.callSuper("toObject"),{objects:b(this.objects,"clone")})},render:function(j){j.save();this.transform(j);var n=Math.max(this.scaleX,this.scaleY);for(var l=0,h=this.objects.length,k;k=this.objects[l];l++){var m=k.borderScaleFactor;k.borderScaleFactor=n;k.render(j);k.borderScaleFactor=m}this.hideBorders||this.drawBorders(j);this.hideCorners||this.drawCorners(j);j.restore();this.setCoords()},item:function(h){return this.getObjects()[h]},complexity:function(){return this.getObjects().reduce(function(i,h){i+=(typeof h.complexity=="function")?h.complexity():0;return i},0)},_restoreObjectsState:function(){this.objects.forEach(this._restoreObjectState,this);return this},_restoreObjectState:function(j){var l=this.get("left"),m=this.get("top"),h=this.getAngle()*(Math.PI/180),k=j.get("originalLeft"),n=j.get("originalTop"),i=Math.cos(h)*j.get("top")+Math.sin(h)*j.get("left"),o=-Math.sin(h)*j.get("top")+Math.cos(h)*j.get("left");j.setAngle(j.getAngle()+this.getAngle());j.set("left",l+o*this.get("scaleX"));j.set("top",m+i*this.get("scaleY"));j.set("scaleX",j.get("scaleX")*this.get("scaleX"));j.set("scaleY",j.get("scaleY")*this.get("scaleY"));j.setCoords();j.hideCorners=false;j.setActive(false);j.setCoords();return this},destroy:function(){return this._restoreObjectsState()},saveCoords:function(){this._originalLeft=this.get("left");this._originalTop=this.get("top");return this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){this.forEachObject(function(h){h.setCoords()});return this},activateAllObjects:function(){return this.setActive(true)},setActive:function(h){this.forEachObject(function(i){i.setActive(h)});return this},forEachObject:e.StaticCanvas.prototype.forEachObject,_setOpacityIfSame:function(){var j=this.getObjects(),i=j[0]?j[0].get("opacity"):1;var h=j.every(function(k){return k.get("opacity")===i});if(h){this.opacity=i}},_calcBounds:function(){var s=[],q=[],p,n,k,h,m,l,u,r=0,t=this.objects.length;for(;ri.x&&j-hi.y},toGrayscale:function(){var h=this.objects.length;while(h--){this.objects[h].toGrayscale()}}});e.Group.fromObject=function(h){return new e.Group(h.objects,h)}})(typeof exports!="undefined"?exports:this);(function(a){var b=fabric.util.object.extend;if(!a.fabric){a.fabric={}}if(a.fabric.Image){fabric.warn("fabric.Image is already defined.");return}if(!fabric.Object){fabric.warn("fabric.Object is required for fabric.Image initialization");return}fabric.Image=fabric.util.createClass(fabric.Object,{maxwidth:null,maxheight:null,active:false,bordervisibility:false,cornervisibility:false,type:"image",filters:[],initialize:function(d,c){c||(c={});this.callSuper("initialize",c);this._initElement(d);this._originalImage=this.getElement();this._initConfig(c);if(c.filters){this.filters=c.filters;this.applyFilters()}},getElement:function(){return this._element},setElement:function(c){this._element=c;this._initConfig();return this},getNormalizedSize:function(d,c,e){if(e&&c&&(d.width>d.height&&(d.width/d.height)<(c/e))){normalizedWidth=~~((d.width*e)/d.height);normalizedHeight=e}else{if(e&&((d.height==d.width)||(d.height>d.width)||(d.height>e))){normalizedWidth=~~((d.width*e)/d.height);normalizedHeight=e}else{if(c&&(c'},getSrc:function(){return this.getElement().src},toString:function(){return'#'},clone:function(c){this.constructor.fromObject(this.toObject(),c)},applyFilters:function(i){if(this.filters.length===0){this.setElement(this._originalImage);i&&i();return}var c=typeof Buffer!=="undefined"&&typeof window==="undefined",g=this._originalImage,e=fabric.document.createElement("canvas"),f=c?new (require("canvas").Image):fabric.document.createElement("img"),h=this;e.width=g.width;e.height=g.height;e.getContext("2d").drawImage(g,0,0);this.filters.forEach(function(j){j&&j.applyTo(e)});f.onload=function(){h.setElement(f);i&&i();f.onload=e=g=null};f.width=g.width;f.height=g.height;if(c){var d=e.toDataURL("image/png").replace(/data:image\/png;base64,/,"");f.src=new Buffer(d,"base64");h.setElement(f);i&&i()}else{f.src=e.toDataURL("image/png")}return this},_render:function(d){var c=this.getOriginalSize();d.drawImage(this.getElement(),-c.width/2,-c.height/2,c.width,c.height)},_adjustWidthHeightToBorders:function(c){if(c){this.currentBorder=this.borderwidth;this.width+=(2*this.currentBorder);this.height+=(2*this.currentBorder)}else{this.currentBorder=0}},_resetWidthHeight:function(){var c=this.getElement();this.set("width",c.width);this.set("height",c.height)},_initElement:function(c){this.setElement(fabric.util.getById(c));fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(c){this.setOptions(c||{});this._setBorder();this._setWidthHeight()},_initFilters:function(c){if(c.filters&&c.filters.length){this.filters=c.filters.map(function(d){return fabric.Image.filters[d.type].fromObject(d)})}},_setBorder:function(){if(this.bordervisibility){this.currentBorder=this.borderwidth}else{this.currentBorder=0}},_setWidthHeight:function(){var c=2*this.currentBorder;this.width=(this.getElement().width||0)+c;this.height=(this.getElement().height||0)+c},complexity:function(){return 1}});fabric.Image.CSS_CANVAS="canvas-img";fabric.Image.fromObject=function(d,f){var c=fabric.document.createElement("img"),e=d.src;if(d.width){c.width=d.width}if(d.height){c.height=d.height}c.onload=function(){fabric.Image.prototype._initFilters.call(d,d);var g=new fabric.Image(c,d);f&&f(g);c=c.onload=null};c.src=e};fabric.Image.fromURL=function(d,f,e){var c=fabric.document.createElement("img");c.onload=function(){if(f){f(new fabric.Image(c,e))}c=c.onload=null};c.src=d};fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" ");fabric.Image.fromElement=function(d,f,c){c||(c={});var e=fabric.parseAttributes(d,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(e["xlink:href"],f,b(e,c))};fabric.Image.async=true})(typeof exports!="undefined"?exports:this);fabric.Image.filters={};fabric.Image.filters.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo:function(d){var c=d.getContext("2d"),a=c.getImageData(0,0,d.width,d.height),h=a.data,e=a.width,l=a.height,k,b,g,f;for(g=0;gh&&m>h&&o>h&&p(a-m)'},_render:function(e){var g=Cufon.textOptions||(Cufon.textOptions={});g.left=this.left;g.top=this.top;g.context=e;g.color=this.fill;var f=this._initDummyElement();this.transform(e);Cufon.replaceElement(f,{separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor});this.width=g.width;this.height=g.height;this._totalLineHeight=g.totalLineHeight;this._fontAscent=g.fontAscent;this._boundaries=g.boundaries;this._shadowOffsets=g.shadowOffsets;this._shadows=g.shadows||[];this.setCoords()},_initDummyElement:function(){var f=b.document.createElement("div"),e=b.document.createElement("div");e.appendChild(f);f.innerHTML=this.text;f.style.fontSize=this.fontSize+"px";f.style.letterSpacing="normal";return f},render:function(e,f){e.save();this._render(e);if(!f&&this.active){this.drawBorders(e);this.hideCorners||this.drawCorners(e)}e.restore()},toObject:function(){return d(this.callSuper("toObject"),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor})},toSVG:function(){var h=this.text.split("\n"),i=-this._fontAscent-((this._fontAscent/5)*this.lineHeight),f=-(this.width/2),e=(this.height/2)-(h.length*this.fontSize)-this._totalLineHeight,g=this._getSVGTextAndBg(i,f,h),j=this._getSVGShadows(i,h);return['',g.textBgRects.join(""),"',j.join(""),g.textSpans.join(""),"",""].join("")},_getSVGShadows:function(l,k){var n=[];for(var f=0,e=this._shadows.length;f',k[h],"")}}return n},_getSVGTextAndBg:function(k,f,h){var m=[],j=[];for(var g=0,e=h.length;g',h[g],"");if(!this.backgroundColor){continue}j.push('')}return{textSpans:m,textBgRects:j}},setColor:function(e){this.set("fill",e);return this},setFontsize:function(e){this.set("fontSize",e);this.setCoords();return this},getText:function(){return this.text},setText:function(e){this.set("text",e);this.setCoords();return this},set:function(e,f){if(typeof e=="object"){for(var g in e){this.set(g,e[g])}}else{this[e]=f;if(e==="fontFamily"&&this.path){this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+f+"$3")}}return this}});b.Text.fromObject=function(e){return new b.Text(e.text,c(e))};b.Text.fromElement=function(e){}})(typeof exports!="undefined"?exports:this);(function(){if(typeof document!="undefined"&&typeof window!="undefined"){return}var XML=require("o3-xml"),URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;function request(url,encoding,callback){var oURL=URL.parse(url),client=HTTP.createClient(80,oURL.hostname),request=client.request("GET",oURL.pathname,{host:oURL.hostname});client.addListener("error",function(err){if(err.errno===process.ECONNREFUSED){fabric.log("ECONNREFUSED: connection refused to "+client.host+":"+client.port)}else{fabric.log(err.message)}});request.end();request.on("response",function(response){var body="";if(encoding){response.setEncoding(encoding)}response.on("end",function(){callback(body)});response.on("data",function(chunk){if(response.statusCode==200){body+=chunk}})})}fabric.util.loadImage=function(url,callback){request(url,"binary",function(body){var img=new Image();img.src=new Buffer(body,"binary");callback(img)})};fabric.loadSVGFromURL=function(url,callback){url=url.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();request(url,"",function(body){var doc=XML.parseFromString(body);fabric.parseSVGDocument(doc.documentElement,function(results,options){callback(results,options)})})};fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body);callback&&callback()})};fabric.Image.fromObject=function(object,callback){fabric.util.loadImage(object.src,function(img){var oImg=new fabric.Image(img);oImg._initConfig(object);oImg._initFilters(object);callback(oImg)})};fabric.createCanvasForNode=function(width,height){var canvasEl=fabric.document.createElement("canvas"),nodeCanvas=new Canvas(width||600,height||600);canvasEl.style={};canvasEl.width=nodeCanvas.width;canvasEl.height=nodeCanvas.height;var canvas=fabric.Canvas||fabric.StaticCanvas;var fabricCanvas=new canvas(canvasEl);fabricCanvas.contextContainer=nodeCanvas.getContext("2d");fabricCanvas.nodeCanvas=nodeCanvas;return fabricCanvas};fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()};if(fabric.Canvas){fabric.Canvas.prototype.createPNGStream}var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(width){origSetWidth.call(this);this.nodeCanvas.width=width;return this};if(fabric.Canvas){fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth}var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(height){origSetHeight.call(this);this.nodeCanvas.height=height;return this};if(fabric.Canvas){fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight}})(); \ No newline at end of file +var Cufon=(function(){var k=function(){return k.replace.apply(null,arguments)};var u=k.DOM={ready:(function(){var z=false,B={loaded:1,complete:1};var y=[],A=function(){if(z){return}z=true;for(var C;C=y.shift();C()){}};if(fabric.document.addEventListener){fabric.document.addEventListener("DOMContentLoaded",A,false);fabric.window.addEventListener("pageshow",A,false)}if(!fabric.window.opera&&fabric.document.readyState){(function(){B[fabric.document.readyState]?A():setTimeout(arguments.callee,10)})()}if(fabric.document.readyState&&fabric.document.createStyleSheet){(function(){try{fabric.document.body.doScroll("left");A()}catch(C){setTimeout(arguments.callee,1)}})()}o(fabric.window,"load",A);return function(C){if(!arguments.length){A()}else{z?C():y.push(C)}}})()};var l=k.CSS={Size:function(z,y){this.value=parseFloat(z);this.unit=String(z).match(/[a-z%]*$/)[0]||"px";this.convert=function(A){return A/y*this.value};this.convertFrom=function(A){return A/this.value*y};this.toString=function(){return this.value+this.unit}},getStyle:function(y){return new a(y.style)},quotedList:i(function(B){var A=[],z=/\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g,y;while(y=z.exec(B)){A.push(y[3]||y[1])}return A}),ready:(function(){var A=false;var z=[],B=function(){A=true;for(var D;D=z.shift();D()){}};var y=Object.prototype.propertyIsEnumerable?f("style"):{length:0};var C=f("link");u.ready(function(){var G=0,F;for(var E=0,D=C.length;F=C[E],E=y.length+G){B()}else{setTimeout(arguments.callee,10)}});return function(D){if(A){D()}else{z.push(D)}}})(),supports:function(A,z){var y=fabric.document.createElement("span").style;if(y[A]===undefined){return false}y[A]=z;return y[A]===z},textAlign:function(B,A,y,z){if(A.get("textAlign")=="right"){if(y>0){B=" "+B}}else{if(y400}if(F==500){F=400}for(var G in D){G=parseInt(G,10);if(!C||GA){A=G}H.push(G)}if(FA){F=A}H.sort(function(J,I){return(B?(J>F&&I>F)?JI:(JI:JV){V=Q}if(P>T){T=P}if(Qz){z=e}L.push(e);e=0;continue}var B=ab.glyphs[ag[aa]]||ab.missingGlyph;if(!B){continue}e+=D=Number(B.w||ab.w)+U}L.push(e);e=Math.max(z,e);var m=[];for(var aa=L.length;aa--;){m[aa]=e-L[aa]}if(D===null){return null}V+=(H.width-D);C+=H.minX;var v,p;if(n){v=J;p=J.firstChild}else{v=fabric.document.createElement("span");v.className="cufon cufon-canvas";v.alt=E;p=fabric.document.createElement("canvas");v.appendChild(p);if(A.printable){var Y=fabric.document.createElement("span");Y.className="cufon-alt";Y.appendChild(fabric.document.createTextNode(E));v.appendChild(Y)}}var ah=v.style;var O=p.style||{};var k=o.convert(H.height-I+T);var af=Math.ceil(k);var S=af/k;p.width=Math.ceil(o.convert(e+V-C)*S);p.height=af;I+=H.minY;O.top=Math.round(o.convert(I-ab.ascent))+"px";O.left=Math.round(o.convert(C))+"px";var j=Math.ceil(o.convert(e*S));var t=j+"px";var s=o.convert(ab.height);var F=(A.lineHeight-1)*o.convert(-ab.ascent/5)*(M-1);Cufon.textOptions.width=j;Cufon.textOptions.height=(s*M)+F;Cufon.textOptions.lines=M;Cufon.textOptions.totalLineHeight=F;if(a){ah.width=t;ah.height=s+"px"}else{ah.paddingLeft=t;ah.paddingBottom=(s-1)+"px"}var ad=Cufon.textOptions.context||p.getContext("2d"),K=af/H.height;Cufon.textOptions.fontAscent=ab.ascent*K;Cufon.textOptions.boundaries=null;for(var w=Cufon.textOptions.shadowOffsets,aa=R.length;aa--;){w[aa]=[R[aa][0]*K,R[aa][1]*K]}ad.save();ad.scale(K,K);ad.translate(-C-((1/K*p.width)/2)+(Cufon.fonts[ab.family].offsetLeft||0),-I-(Cufon.textOptions.height/K)/2);ad.lineWidth=ab.face["underline-thickness"];ad.save();function q(l,i){ad.strokeStyle=i;ad.beginPath();ad.moveTo(0,l);ad.lineTo(e,l);ad.stroke()}var r=Cufon.getTextDecoration(A),u=A.fontStyle==="italic";function ae(){ad.save();ad.fillStyle=A.backgroundColor;var aj=0,an=0,y=[{left:0}];if(A.textAlign==="right"){ad.translate(m[an],0);y[0].left=m[an]*K}else{if(A.textAlign==="center"){ad.translate(m[an]/2,0);y[0].left=m[an]/2*K}}for(var al=0,ak=ag.length;al.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 c(e,f){return a(e,/(?:em|ex|%)$/i.test(f)?"1em":f)}function a(h,i){if(/px$/i.test(i)){return parseFloat(i)}var g=h.style.left,f=h.runtimeStyle.left;h.runtimeStyle.left=h.currentStyle.left;h.style.left=i;var e=h.style.pixelLeft;h.style.left=g;h.runtimeStyle.left=f;return e}return function(T,z,O,w,D,U,M){var h=(z===null);if(h){z=D.alt}var B=T.viewBox;var j=O.computedFontSize||(O.computedFontSize=new Cufon.CSS.Size(c(U,O.get("fontSize"))+"px",T.baseSize));var L=O.computedLSpacing;if(L==undefined){L=O.get("letterSpacing");O.computedLSpacing=L=(L=="normal")?0:~~j.convertFrom(a(U,L))}var t,m;if(h){t=D;m=D.firstChild}else{t=fabric.document.createElement("span");t.className="cufon cufon-vml";t.alt=z;m=fabric.document.createElement("span");m.className="cufon-vml-canvas";t.appendChild(m);if(w.printable){var R=fabric.document.createElement("span");R.className="cufon-alt";R.appendChild(fabric.document.createTextNode(z));t.appendChild(R)}if(!M){t.appendChild(fabric.document.createElement("cvml:shape"))}}var Z=t.style;var G=m.style;var f=j.convert(B.height),W=Math.ceil(f);var K=W/f;var J=B.minX,I=B.minY;G.height=W;G.top=Math.round(j.convert(I-T.ascent));G.left=Math.round(j.convert(J));Z.height=j.convert(T.height)+"px";var p=Cufon.getTextDecoration(w);var y=O.get("color");var X=Cufon.CSS.textTransform(z,O).split("");var e=0,H=0,q=null;var x,r,A=w.textShadow;for(var S=0,Q=0,P=X.length;St?1:(l-k)/m;p(j+(r-j)*q(s));if(l>t||n()){u.onComplete&&u.onComplete();return}h(o)})()}var h=(function(){return fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(k,j){fabric.window.setTimeout(k,1000/60)}})();function a(k,m,l){if(k){var j=new Image();j.onload=function(){m&&m.call(l,j);j=j.onload=null};j.src=k}else{m&&m.call(l,k)}}fabric.util.removeFromArray=g;fabric.util.degreesToRadians=b;fabric.util.toFixed=d;fabric.util.getRandomInt=e;fabric.util.falseFunction=i;fabric.util.animate=c;fabric.util.requestAnimFrame=h;fabric.util.loadImage=a})();(function(){var d=Array.prototype.slice;if(!Array.prototype.indexOf){Array.prototype.indexOf=function(g){if(this===void 0||this===null){throw new TypeError()}var h=Object(this),e=h.length>>>0;if(e===0){return -1}var i=0;if(arguments.length>0){i=Number(arguments[1]);if(i!==i){i=0}else{if(i!==0&&i!==(1/0)&&i!==-(1/0)){i=(i>0||-1)*Math.floor(Math.abs(i))}}}if(i>=e){return -1}var f=i>=0?i:Math.max(e-Math.abs(i),0);for(;f>>0;f>>0;g>>0;f>>0;f>>0;g>>0,f=0,h;if(arguments.length>1){h=arguments[1]}else{do{if(f in this){h=this[f++];break}if(++f>=e){throw new TypeError()}}while(true)}for(;f=e){e=h[f][g]}}}else{while(f--){if(h[f]>=e){e=h[f]}}}return e}function c(h,g){if(!h||h.length===0){return undefined}var f=h.length-1,e=g?h[f][g]:h[f];if(g){while(f--){if(h[f][g]-1?c(j,l.match(/opacity:\s*(\d?\.?\d*)/)[1]):j}for(var m in l){if(m==="opacity"){c(j,l[m])}else{var k=(m==="float"||m==="cssFloat")?(typeof n.styleFloat==="undefined"?"cssFloat":"styleFloat"):m;n[k]=l[m]}}return j}var h=fabric.document.createElement("div"),g=typeof h.style.opacity==="string",b=typeof h.style.filter==="string",a=fabric.document.defaultView,f=a&&typeof a.getComputedStyle!=="undefined",d=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,c=function(i){return i};if(g){c=function(i,j){i.style.opacity=j;return i}}else{if(b){c=function(i,j){var k=i.style;if(i.currentStyle&&!i.currentStyle.hasLayout){k.zoom=1}if(d.test(k.filter)){j=j>=0.9999?"":("alpha(opacity="+(j*100)+")");k.filter=k.filter.replace(d,j)}else{k.filter+=" alpha(opacity="+(j*100)+")"}return i}}}fabric.util.setStyle=e})();(function(){var h=Array.prototype.slice;function g(j){return typeof j==="string"?fabric.document.getElementById(j):j}function b(j){return h.call(j,0)}try{var i=b(fabric.document.childNodes) instanceof Array}catch(a){}if(!i){b=function(k){var j=new Array(k.length),l=k.length;while(l--){j[l]=k[l]}return j}}function c(k,j){var l=fabric.document.createElement(k);for(var m in j){if(m==="class"){l.className=j[m]}else{if(m==="for"){l.htmlFor=j[m]}else{l.setAttribute(m,j[m])}}}return l}function f(j,k){if((" "+j.className+" ").indexOf(" "+k+" ")===-1){j.className+=(j.className?" ":"")+k}}function e(k,l,j){if(typeof l==="string"){l=c(l,j)}if(k.parentNode){k.parentNode.replaceChild(l,k)}l.appendChild(k);return l}function d(k){var j=0,l=0;do{j+=k.offsetTop||0;l+=k.offsetLeft||0;k=k.offsetParent}while(k);return({left:l,top:j})}(function(){var k=fabric.document.documentElement.style;var l="userSelect" in k?"userSelect":"MozUserSelect" in k?"MozUserSelect":"WebkitUserSelect" in k?"WebkitUserSelect":"KhtmlUserSelect" in k?"KhtmlUserSelect":"";function m(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=fabric.util.falseFunction}if(l){n.style[l]="none"}else{if(typeof n.unselectable=="string"){n.unselectable="on"}}return n}function j(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=null}if(l){n.style[l]=""}else{if(typeof n.unselectable=="string"){n.unselectable=""}}return n}fabric.util.makeElementUnselectable=m;fabric.util.makeElementSelectable=j})();(function(){function j(k,o){var m=fabric.document.getElementsByTagName("head")[0],l=fabric.document.createElement("script"),n=true;l.type="text/javascript";l.setAttribute("runat","server");l.onload=l.onreadystatechange=function(p){if(n){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete"){return}n=false;o(p||fabric.window.event);l=l.onload=l.onreadystatechange=null}};l.src=k;m.appendChild(l)}fabric.util.getScript=j})();fabric.util.getById=g;fabric.util.toArray=b;fabric.util.makeElement=c;fabric.util.addClass=f;fabric.util.wrapElement=e;fabric.util.getElementOffset=d})();(function(){function d(e,f){return e+(/\?/.test(e)?"&":"?")+f}var c=(function(){var h=[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 e=h.length;e--;){try{var g=h[e]();if(g){return h[e]}}catch(f){}}})();function a(){}function b(g,f){f||(f={});var j=f.method?f.method.toUpperCase():"GET",i=f.onComplete||function(){},h=c(),e;h.onreadystatechange=function(){if(h.readyState===4){i(h);h.onreadystatechange=a}};if(j==="GET"){e=null;if(typeof f.parameters=="string"){g=d(g,f.parameters)}}h.open(j,g,true);if(j==="POST"||j==="PUT"){h.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}h.send(e);return h}fabric.util.request=b})();(function(i){var g=i.fabric||(i.fabric={}),o=g.util.object.extend,e=g.util.string.capitalize,p=g.util.object.clone;var k={cx:"left",x:"left",cy:"top",y:"top",r:"radius","fill-opacity":"opacity","fill-rule":"fillRule","stroke-width":"strokeWidth",transform:"transformMatrix"};function d(v,u){if(!v){return}var x,t,s={};if(v.parentNode&&/^g$/i.test(v.parentNode.nodeName)){s=g.parseAttributes(v.parentNode,u)}var w=u.reduce(function(z,y){x=v.getAttribute(y);t=parseFloat(x);if(x){if((y==="fill"||y==="stroke")&&x==="none"){x=""}if(y==="fill-rule"){x=(x==="evenodd")?"destination-over":x}if(y==="transform"){x=g.parseTransformAttribute(x)}if(y in k){y=k[y]}z[y]=isNaN(t)?x:t}return z},{});w=o(w,o(n(v),g.parseStyleAttribute(v)));return o(s,w)}g.parseTransformAttribute=(function(){function s(L,M){var N=M[0];L[0]=Math.cos(N);L[1]=Math.sin(N);L[2]=-Math.sin(N);L[3]=Math.cos(N)}function x(N,O){var M=O[0],L=(O.length===2)?O[1]:O[0];N[0]=M;N[3]=L}function I(L,M){L[2]=M[0]}function u(L,M){L[1]=M[0]}function F(L,M){L[4]=M[0];if(M.length===2){L[5]=M[1]}}var z=[1,0,0,1,0,0],t="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",J="(?:\\s+,?\\s*|,\\s*)",A="(?:(skewX)\\s*\\(\\s*("+t+")\\s*\\))",y="(?:(skewY)\\s*\\(\\s*("+t+")\\s*\\))",H="(?:(rotate)\\s*\\(\\s*("+t+")(?:"+J+"("+t+")"+J+"("+t+"))?\\s*\\))",K="(?:(scale)\\s*\\(\\s*("+t+")(?:"+J+"("+t+"))?\\s*\\))",D="(?:(translate)\\s*\\(\\s*("+t+")(?:"+J+"("+t+"))?\\s*\\))",G="(?:(matrix)\\s*\\(\\s*("+t+")"+J+"("+t+")"+J+"("+t+")"+J+"("+t+")"+J+"("+t+")"+J+"("+t+")\\s*\\))",E="(?:"+G+"|"+D+"|"+K+"|"+H+"|"+A+"|"+y+")",B="(?:"+E+"(?:"+J+E+")*)",v="^\\s*(?:"+B+"?)\\s*$",C=new RegExp(v),w=new RegExp(E);return function(M){var L=z.concat();if(!M||(M&&!C.test(M))){return L}M.replace(w,function(Q){var N=new RegExp(E).exec(Q).filter(function(R){return(R!==""&&R!=null)}),O=N[1],P=N.slice(2).map(parseFloat);switch(O){case"translate":F(L,P);break;case"rotate":s(L,P);break;case"scale":x(L,P);break;case"skewX":I(L,P);break;case"skewY":u(L,P);break;case"matrix":L=P;break}});return L}})();function r(v){if(!v){return null}v=v.trim();var x=v.indexOf(",")>-1;v=v.split(/\s+/);var t=[];if(x){for(var u=0,s=v.length;u/i,""))}if(!v.documentElement){return}g.parseSVGDocument(v.documentElement,function(y,x){j.set(s,{objects:g.util.array.invoke(y,"toObject"),options:x});u(y,x)})}}function a(u){var t=u.objects,s=u.options;t=t.map(function(v){return g[e(v.type)].fromObject(v)});return({objects:t,options:s})}function m(s,v){s=s.trim();var t;if(typeof DOMParser!=="undefined"){var u=new DOMParser();if(u&&u.parseFromString){t=u.parseFromString(s,"text/xml")}}else{if(g.window.ActiveXObject){var t=new ActiveXObject("Microsoft.XMLDOM");t.async="false";t.loadXML(s.replace(//i,""))}}g.parseSVGDocument(t.documentElement,function(x,w){v(x,w)})}function l(v){var t="";for(var u=0,s=v.length;u",'",""].join("")}return t}o(g,{parseAttributes:d,parseElements:f,parseStyleAttribute:h,parsePointsAttribute:r,getCSSRules:c,loadSVGFromURL:b,loadSVGFromString:m,createSVGFontFacesMarkup:l})})(typeof exports!="undefined"?exports:this);(function(){function c(h){var g=h.getAttribute("style");if(g){var k=g.split(/\s*;\s*/);for(var f=k.length;f--;){var e=k[f].split(/\s*:\s*/),d=e[0].trim(),j=e[1].trim();if(d==="stop-color"){return j}}}}fabric.Gradient={create:function(l,m){m||(m={});var f=m.x1||0,k=m.y1||0,e=m.x2||l.canvas.width,i=m.y2||0,g=m.colorStops;var j=l.createLinearGradient(f,k,e,i);for(var h in g){var d=g[h];j.addColorStop(parseFloat(h),d)}return j},fromElement:function(d,m,l){var j=d.getElementsByTagName("stop"),d,f,e={},g,k={x1:d.getAttribute("x1")||0,y1:d.getAttribute("y1")||0,x2:d.getAttribute("x2")||"100%",y2:d.getAttribute("y2")||0};for(var h=j.length;h--;){d=j[h];f=d.getAttribute("offset");f=parseFloat(f)/(/%$/.test(f)?100:1);e[f]=c(d)||d.getAttribute("stop-color")}a(l,k);return fabric.Gradient.create(m,{x1:k.x1,y1:k.y1,x2:k.x2,y2:k.y2,colorStops:e})},forObject:function(g,d,e){e||(e={});a(g,e);var f=fabric.Gradient.create(d,{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,colorStops:e.colorStops});return f}};function a(f,e){for(var g in e){if(typeof e[g]==="string"&&/^\d+%$/.test(e[g])){var d=parseFloat(e[g],10);if(g==="x1"||g==="x2"){e[g]=f.width*d/100}else{if(g==="y1"||g==="y2"){e[g]=f.height*d/100}}}if(g==="x1"||g==="x2"){e[g]-=f.width/2}else{if(g==="y1"||g==="y2"){e[g]-=f.height/2}}}}function b(j){var f=j.getElementsByTagName("linearGradient"),d=j.getElementsByTagName("radialGradient"),g,h={};for(var e=f.length;e--;){g=f[e];h[g.id]=g}for(var e=d.length;e--;){g=d[e];h[g.id]=g}return h}fabric.getGradientDefs=b})();(function(b){var c=b.fabric||(b.fabric={});if(c.Point){c.warn("fabric.Point is already defined");return}c.Point=a;function a(d,e){if(arguments.length>0){this.init(d,e)}}a.prototype={constructor:a,init:function(d,e){this.x=d;this.y=e},add:function(d){return new a(this.x+d.x,this.y+d.y)},addEquals:function(d){this.x+=d.x;this.y+=d.y;return this},scalarAdd:function(d){return new a(this.x+d,this.y+d)},scalarAddEquals:function(d){this.x+=d;this.y+=d;return this},subtract:function(d){return new a(this.x-d.x,this.y-d.y)},subtractEquals:function(d){this.x-=d.x;this.y-=d.y;return this},scalarSubtract:function(d){return new a(this.x-d,this.y-d)},scalarSubtractEquals:function(d){this.x-=d;this.y-=d;return this},multiply:function(d){return new a(this.x*d,this.y*d)},multiplyEquals:function(d){this.x*=d;this.y*=d;return this},divide:function(d){return new a(this.x/d,this.y/d)},divideEquals:function(d){this.x/=d;this.y/=d;return this},eq:function(d){return(this.x==d.x&&this.y==d.y)},lt:function(d){return(this.xd.x&&this.y>d.y)},gte:function(d){return(this.x>=d.x&&this.y>=d.y)},lerp:function(e,d){return new a(this.x+(e.x-this.x)*d,this.y+(e.y-this.y)*d)},distanceFrom:function(f){var e=this.x-f.x,d=this.y-f.y;return Math.sqrt(e*e+d*d)},min:function(d){return new a(Math.min(this.x,d.x),Math.min(this.y,d.y))},max:function(d){return new a(Math.max(this.x,d.x),Math.max(this.y,d.y))},toString:function(){return this.x+","+this.y},setXY:function(d,e){this.x=d;this.y=e},setFromPoint:function(d){this.x=d.x;this.y=d.y},swap:function(e){var d=this.x,f=this.y;this.x=e.x;this.y=e.y;e.x=d;e.y=f}}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Intersection){b.warn("fabric.Intersection is already defined");return}function c(d){if(arguments.length>0){this.init(d)}}b.Intersection=c;b.Intersection.prototype={init:function(d){this.status=d;this.points=[]},appendPoint:function(d){this.points.push(d)},appendPoints:function(d){this.points=this.points.concat(d)}};b.Intersection.intersectLineLine=function(h,f,l,k){var m,i=(k.x-l.x)*(h.y-l.y)-(k.y-l.y)*(h.x-l.x),j=(f.x-h.x)*(h.y-l.y)-(f.y-h.y)*(h.x-l.x),g=(k.y-l.y)*(f.x-h.x)-(k.x-l.x)*(f.y-h.y);if(g!=0){var e=i/g,d=j/g;if(0<=e&&e<=1&&0<=d&&d<=1){m=new c("Intersection");m.points.push(new b.Point(h.x+e*(f.x-h.x),h.y+e*(f.y-h.y)))}else{m=new c("No Intersection")}}else{if(i==0||j==0){m=new c("Coincident")}else{m=new c("Parallel")}}return m};b.Intersection.intersectLinePolygon=function(e,d,l){var m=new c("No Intersection"),f=l.length;for(var h=0;h0){m.status="Intersection"}return m};b.Intersection.intersectPolygonPolygon=function(j,h){var f=new c("No Intersection"),l=j.length;for(var k=0;k0){f.status="Intersection"}return f};b.Intersection.intersectPolygonRectangle=function(n,e,d){var g=e.min(d),m=e.max(d),f=new b.Point(m.x,g.y),l=new b.Point(g.x,m.y),k=c.intersectLinePolygon(g,f,n),j=c.intersectLinePolygon(f,m,n),i=c.intersectLinePolygon(m,l,n),h=c.intersectLinePolygon(l,g,n),o=new c("No Intersection");o.appendPoints(k.points);o.appendPoints(j.points);o.appendPoints(i.points);o.appendPoints(h.points);if(o.points.length>0){o.status="Intersection"}return o}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Color){b.warn("fabric.Color is already defined.");return}function c(d){if(!d){this.setSource([0,0,0,1])}else{this._tryParsingColor(d)}}b.Color=c;b.Color.prototype={_tryParsingColor:function(d){var e=c.sourceFromHex(d);if(!e){e=c.sourceFromRgb(d)}if(e){this.setSource(e)}},getSource:function(){return this._source},setSource:function(d){this._source=d},toRgb:function(){var d=this.getSource();return"rgb("+d[0]+","+d[1]+","+d[2]+")"},toRgba:function(){var d=this.getSource();return"rgba("+d[0]+","+d[1]+","+d[2]+","+d[3]+")"},toHex:function(){var h=this.getSource();var f=h[0].toString(16);f=(f.length==1)?("0"+f):f;var e=h[1].toString(16);e=(e.length==1)?("0"+e):e;var d=h[2].toString(16);d=(d.length==1)?("0"+d):d;return f.toUpperCase()+e.toUpperCase()+d.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var d=this.getSource();d[3]=e;this.setSource(d);return this},toGrayscale:function(){var f=this.getSource(),e=parseInt((f[0]*0.3+f[1]*0.59+f[2]*0.11).toFixed(0),10),d=f[3];this.setSource([e,e,e,d]);return this},toBlackWhite:function(d){var g=this.getSource(),f=(g[0]*0.3+g[1]*0.59+g[2]*0.11).toFixed(0),e=g[3],d=d||127;f=(Number(f)','',"',"Created with Fabric.js ",fabric.version,"",fabric.createSVGFontFacesMarkup(this.getObjects()),];for(var j=0,k=this.getObjects(),g=k.length;j");return h.join("")},isEmpty:function(){return this._objects.length===0},remove:function(g){e(this._objects,g);if(this.getActiveObject()===g){this.discardActiveObject()}this.renderAll();return g},sendToBack:function(g){e(this._objects,g);this._objects.unshift(g);return this.renderAll()},bringToFront:function(g){e(this._objects,g);this._objects.push(g);return this.renderAll()},sendBackwards:function(j){var h=this._objects.indexOf(j),g=h;if(h!==0){for(var k=h-1;k>=0;--k){if(j.intersectsWithObject(this._objects[k])||j.isContainedWithinObject(this._objects[k])){g=k;break}}e(this._objects,j);this._objects.splice(g,0,j)}return this.renderAll()},bringForward:function(k){var n=this.getObjects(),h=n.indexOf(k),g=h;if(h!==n.length-1){for(var m=h+1,j=this._objects.length;m"};f(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(l){var k=l.getContext("2d"),g=k.getImageData(0,0,l.width,l.height),p=g.data,m=g.width,r=g.height,q,h,o,n;for(o=0;o0)?0:-v),r.ey-((u>0)?0:-u),t,s);this.contextTop.lineWidth=this.selectionLineWidth;this.contextTop.strokeStyle=this.selectionBorderColor;this.contextTop.strokeRect(r.ex+a-((v>0)?0:t),r.ey+a-((u>0)?0:s),t,s)},_findSelectedObjects:function(x){var y,t,D=[],s=this._groupSelector.ex,C=this._groupSelector.ey,r=s+this._groupSelector.left,A=C+this._groupSelector.top,z,w=new fabric.Point(f(s,r),f(C,A)),B=new fabric.Point(l(s,r),l(C,A));for(var u=0,v=this._objects.length;u1){var D=new fabric.Group(D);this.setActiveGroup(D);D.saveCoords();this.fire("selection:created",{target:D})}}this.renderAll()},findTarget:function(v,s){var u,w=this.getPointer(v);var t=this.getActiveGroup();if(t&&!s&&this.containsPoint(v,t)){u=t;return u}for(var r=this._objects.length;r--;){if(this._objects[r]&&this.containsPoint(v,this._objects[r])){u=this._objects[r];this.relatedTarget=u;break}}if(u&&u.selectable){return u}},getPointer:function(r){var s=q(r);return{x:s.x-this._offset.left,y:s.y-this._offset.top}},_createUpperCanvas:function(){this.upperCanvasEl=this._createCanvasElement();this.upperCanvasEl.className="upper-canvas";this.wrapperEl.appendChild(this.upperCanvasEl);this._applyCanvasStyle(this.upperCanvasEl);this.contextTop=this.upperCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=fabric.util.wrapElement(this.lowerCanvasEl,"div",{"class":this.CONTAINER_CLASS});fabric.util.setStyle(this.wrapperEl,{width:this.getWidth()+"px",height:this.getHeight()+"px",position:"relative"});fabric.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(s){var t=this.getWidth()||s.width,r=this.getHeight()||s.height;fabric.util.setStyle(s,{position:"absolute",width:t+"px",height:r+"px",left:0,top:0});s.width=t;s.height=r;fabric.util.makeElementUnselectable(s)},getContext:function(){return this.contextTop},setActiveObject:function(r,s){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=r;r.setActive(true);this.renderAll();this.fire("object:selected",{target:r,e:s});return this},getActiveObject:function(){return this._activeObject},discardActiveObject:function(){if(this._activeObject){this._activeObject.setActive(false)}this._activeObject=null;return this},setActiveGroup:function(r){this._activeGroup=r;return this},getActiveGroup:function(){return this._activeGroup},discardActiveGroup:function(){var r=this.getActiveGroup();if(r){r.destroy()}return this.setActiveGroup(null)},deactivateAll:function(){var s=this.getObjects(),t=0,r=s.length;for(;t1){var o=new fabric.PathGroup(q,n)}else{var o=q[0]}o.setSourcePath(m);if(!(o instanceof fabric.PathGroup)){fabric.util.object.extend(o,n);if(typeof n.angle!=="undefined"){o.setAngle(n.angle)}}g(o,l)})}}}},this)}catch(c){fabric.log(c.message)}},loadFromJSON:function(a,d){if(!a){return}var b=JSON.parse(a);if(!b||(b&&!b.objects)){return}this.clear();var c=this;this._enlivenObjects(b.objects,function(){c.backgroundColor=b.background;if(d){d()}});return this},_enlivenObjects:function(b,e){var c=0,a=b.filter(function(f){return f.type==="image"}).length;var d=this;b.forEach(function(h,g){if(!h.type){return}switch(h.type){case"image":case"font":fabric[fabric.util.string.capitalize(h.type)].fromObject(h,function(i){d.insertAt(i,g,true);if(++c===a){if(e){e()}}});break;default:var f=fabric[fabric.util.string.camelize(fabric.util.string.capitalize(h.type))];if(f&&f.fromObject){d.insertAt(f.fromObject(h),g,true)}break}});if(a===0&&e){e()}},_toDataURL:function(a,b){this.clone(function(c){b(c.toDataURL(a))})},_toDataURLWithMultiplier:function(a,c,b){this.clone(function(d){b(d.toDataURLWithMultiplier(a,c))})},clone:function(c){var a=fabric.document.createElement("canvas");a.width=this.getWidth();a.height=this.getHeight();var b=this.__clone||(this.__clone=new fabric.Canvas(a));b.clipTo=this.clipTo;return b.loadFromJSON(JSON.stringify(this.toJSON()),function(){if(c){c(b)}})}});(function(a){var d=a.fabric||(a.fabric={}),l=d.util.object.extend,m=d.util.object.clone,c=d.util.toFixed,k=d.util.string.capitalize,p=d.util.getPointer,b=d.util.degreesToRadians,o=Array.prototype.slice;if(d.Object){return}d.Object=d.util.createClass({type:"object",includeDefaultValues:true,NUM_FRACTION_DIGITS:2,FX_DURATION:500,MIN_SCALE_LIMIT:0.1,stateProperties:("top left width height scaleX scaleY flipX flipY theta angle opacity cornersize fill overlayFill stroke strokeWidth fillRule borderScaleFactor transformMatrix selectable").split(" "),top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:false,flipY:false,theta:0,opacity:1,angle:0,cornersize:12,padding:0,borderColor:"rgba(102,153,255,0.75)",cornerColor:"rgba(102,153,255,0.5)",fill:"rgb(0,0,0)",fillRule:"source-over",overlayFill:null,stroke:null,strokeWidth:1,borderOpacityWhenMoving:0.4,borderScaleFactor:1,transformMatrix:null,selectable:true,hasControls:true,hasBorders:true,callSuper:function(i){var q=this.constructor.superclass.prototype[i];return(arguments.length>1)?q.apply(this,o.call(arguments,1)):q.call(this)},initialize:function(i){i&&this.setOptions(i)},setOptions:function(q){var r=this.stateProperties.length,s;while(r--){s=this.stateProperties[r];if(s in q){this.set(s,q[s])}}},transform:function(i){i.globalAlpha=this.opacity;i.translate(this.left,this.top);i.rotate(this.theta);i.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(){var i={type:this.type,left:c(this.left,this.NUM_FRACTION_DIGITS),top:c(this.top,this.NUM_FRACTION_DIGITS),width:c(this.width,this.NUM_FRACTION_DIGITS),height:c(this.height,this.NUM_FRACTION_DIGITS),fill:this.fill,overlayFill:this.overlayFill,stroke:this.stroke,strokeWidth:this.strokeWidth,scaleX:c(this.scaleX,this.NUM_FRACTION_DIGITS),scaleY:c(this.scaleY,this.NUM_FRACTION_DIGITS),angle:c(this.getAngle(),this.NUM_FRACTION_DIGITS),flipX:this.flipX,flipY:this.flipY,opacity:c(this.opacity,this.NUM_FRACTION_DIGITS),selectable:this.selectable};if(!this.includeDefaultValues){i=this._removeDefaultValues(i)}return i},toDatalessObject:function(){return this.toObject()},getSvgStyles:function(){return["stroke: ",(this.stroke?this.stroke:"none"),"; ","stroke-width: ",(this.strokeWidth?this.strokeWidth:"0"),"; ","fill: ",(this.fill?this.fill:"none"),"; ","opacity: ",(this.opacity?this.opacity:"1"),";",].join("")},getSvgTransform:function(){var i=this.getAngle();return["translate(",this.left," ",this.top,")",i!==0?(" rotate("+i+")"):"",(this.scaleX===1&&this.scaleY===1)?"":(" scale("+c(this.scaleX,"2")+" "+c(this.scaleY,"2")+")")].join("")},_removeDefaultValues:function(q){var i=d.Object.prototype.options;if(i){this.stateProperties.forEach(function(r){if(q[r]===i[r]){delete q[r]}})}return q},isActive:function(){return !!this.active},setActive:function(i){this.active=!!i;return this},toString:function(){return"#"},set:function(q,i){var s=(q==="scaleX"||q==="scaleY")&&ir.x&&s.xr.y&&u.y=v)&&(s.d.y>=v)){continue}if((s.o.x==s.d.x)&&(s.o.x>=w)){x=s.o.x;u=v}else{z=0;y=(s.d.y-s.o.y)/(s.d.x-s.o.x);r=v-z*w;q=s.o.y-y*s.o.x;x=-(r-q)/(z-y);u=r+z*x}if(x>=w){t+=1}if(t==2){break}}return t},_getImageLines:function(r,q){return{topline:{o:r.tl,d:r.tr},rightline:{o:r.tr,d:r.br},bottomline:{o:r.br,d:r.bl},leftline:{o:r.bl,d:r.tl}}},_setCornerCoords:function(){var t=this.oCoords,q=b(45-this.getAngle()),s=Math.sqrt(2*Math.pow(this.cornersize,2))/2,i=s*Math.cos(q),r=s*Math.sin(q);t.tl.corner={tl:{x:t.tl.x-r,y:t.tl.y-i},tr:{x:t.tl.x+i,y:t.tl.y-r},bl:{x:t.tl.x-i,y:t.tl.y+r},br:{x:t.tl.x+r,y:t.tl.y+i}};t.tr.corner={tl:{x:t.tr.x-r,y:t.tr.y-i},tr:{x:t.tr.x+i,y:t.tr.y-r},br:{x:t.tr.x+r,y:t.tr.y+i},bl:{x:t.tr.x-i,y:t.tr.y+r}};t.bl.corner={tl:{x:t.bl.x-r,y:t.bl.y-i},bl:{x:t.bl.x-i,y:t.bl.y+r},br:{x:t.bl.x+r,y:t.bl.y+i},tr:{x:t.bl.x+i,y:t.bl.y-r}};t.br.corner={tr:{x:t.br.x+i,y:t.br.y-r},bl:{x:t.br.x-i,y:t.br.y+r},br:{x:t.br.x+r,y:t.br.y+i},tl:{x:t.br.x-r,y:t.br.y-i}};t.ml.corner={tl:{x:t.ml.x-r,y:t.ml.y-i},tr:{x:t.ml.x+i,y:t.ml.y-r},bl:{x:t.ml.x-i,y:t.ml.y+r},br:{x:t.ml.x+r,y:t.ml.y+i}};t.mt.corner={tl:{x:t.mt.x-r,y:t.mt.y-i},tr:{x:t.mt.x+i,y:t.mt.y-r},bl:{x:t.mt.x-i,y:t.mt.y+r},br:{x:t.mt.x+r,y:t.mt.y+i}};t.mr.corner={tl:{x:t.mr.x-r,y:t.mr.y-i},tr:{x:t.mr.x+i,y:t.mr.y-r},bl:{x:t.mr.x-i,y:t.mr.y+r},br:{x:t.mr.x+r,y:t.mr.y+i}};t.mb.corner={tl:{x:t.mb.x-r,y:t.mb.y-i},tr:{x:t.mb.x+i,y:t.mb.y-r},bl:{x:t.mb.x-i,y:t.mb.y+r},br:{x:t.mb.x+r,y:t.mb.y+i}}},toGrayscale:function(){var i=this.get("fill");if(i){this.set("overlayFill",new d.Color(i).toGrayscale().toRgb())}return this},complexity:function(){return 0},straighten:function(){var i=this._getAngleValueForStraighten();this.setAngle(i);return this},fxStraighten:function(q){q=q||{};var r=function(){},s=q.onComplete||r,i=q.onChange||r,t=this;d.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(u){t.setAngle(u);i()},onComplete:function(){t.setCoords();s()},onStart:function(){t.setActive(false)}});return this},fxRemove:function(q){q||(q={});var r=function(){},s=q.onComplete||r,i=q.onChange||r,t=this;d.util.animate({startValue:this.get("opacity"),endValue:0,duration:this.FX_DURATION,onChange:function(u){t.set("opacity",u);i()},onComplete:s,onStart:function(){t.setActive(false)}});return this},_getAngleValueForStraighten:function(){var i=this.get("angle");if(i>-225&&i<=-135){return -180}else{if(i>-135&&i<=-45){return -90}else{if(i>-45&&i<=45){return 0}else{if(i>45&&i<=135){return 90}else{if(i>135&&i<=225){return 180}else{if(i>225&&i<=315){return 270}else{if(i>315){return 360}}}}}}}return 0},toJSON:function(){return this.toObject()},setGradientFill:function(i,q){this.set("fill",d.Gradient.forObject(this,i,q))},animate:function(q,s,i){var r=this;if(!("from" in i)){i.from=this.get(q)}if(/[+-]/.test(s.charAt(0))){s=this.get(q)+parseFloat(s)}d.util.animate({startValue:i.from,endValue:s,duration:i.duration,onChange:function(t){r.set(q,t);i.onChange&&i.onChange()},onComplete:function(){r.setCoords();i.onComplete&&i.onComplete()}})}});d.Object.prototype.rotate=d.Object.prototype.setAngle;var j=d.Object.prototype;for(var g=j.stateProperties.length;g--;){var h=j.stateProperties[g],e=h.charAt(0).toUpperCase()+h.slice(1),f="set"+e,n="get"+e;if(!j[n]){j[n]=(function(i){return new Function('return this.get("'+i+'")')})(h)}if(!j[f]){j[f]=(function(i){return new Function("value",'return this.set("'+i+'", value)')})(h)}}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),e=c.util.object.extend,d=c.Object.prototype.set,a={x1:1,x2:1,y1:1,y2:1};if(c.Line){c.warn("fabric.Line is already defined");return}c.Line=c.util.createClass(c.Object,{type:"line",initialize:function(g,f){if(!g){g=[0,0,0,0]}this.callSuper("initialize",f);this.set("x1",g[0]);this.set("y1",g[1]);this.set("x2",g[2]);this.set("y2",g[3]);this._setWidthHeight()},_setWidthHeight:function(){this.set("width",(this.x2-this.x1)||1);this.set("height",(this.y2-this.y1)||1);this.set("left",this.x1+this.width/2);this.set("top",this.y1+this.height/2)},set:function(f,g){d.call(this,f,g);if(f in a){this._setWidthHeight()}return this},_render:function(f){f.beginPath();f.moveTo(this.width===1?0:(-this.width/2),this.height===1?0:(-this.height/2));f.lineTo(this.width===1?0:(this.width/2),this.height===1?0:(this.height/2));f.lineWidth=this.strokeWidth;var g=f.strokeStyle;f.strokeStyle=f.fillStyle;f.stroke();f.strokeStyle=g},complexity:function(){return 1},toObject:function(){return e(this.callSuper("toObject"),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){return[""].join("")}});c.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" ");c.Line.fromElement=function(g,f){var i=c.parseAttributes(g,c.Line.ATTRIBUTE_NAMES);var h=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new c.Line(h,e(i,f))};c.Line.fromObject=function(f){var g=[f.x1,f.y1,f.x2,f.y2];return new c.Line(g,f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),d=Math.PI*2,e=b.util.object.extend;if(b.Circle){b.warn("fabric.Circle is already defined.");return}b.Circle=b.util.createClass(b.Object,{type:"circle",initialize:function(f){f=f||{};this.set("radius",f.radius||0);this.callSuper("initialize",f);var g=this.get("radius")*2*this.get("scaleX");this.set("width",g).set("height",g)},toObject:function(){return e(this.callSuper("toObject"),{radius:this.get("radius")})},toSVG:function(){return('')},_render:function(f,g){f.beginPath();f.globalAlpha*=this.opacity;f.arc(g?this.left:0,g?this.top:0,this.radius,0,d,false);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},complexity:function(){return 1}});b.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Circle.fromElement=function(g,f){f||(f={});var h=b.parseAttributes(g,b.Circle.ATTRIBUTE_NAMES);if(!c(h)){throw Error("value of `r` attribute is required and can not be negative")}if("left" in h){h.left-=(f.width/2)||0}if("top" in h){h.top-=(f.height/2)||0}return new b.Circle(e(h,f))};function c(f){return(("radius" in f)&&(f.radius>0))}b.Circle.fromObject=function(f){return new b.Circle(f)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Triangle){b.warn("fabric.Triangle is already defined");return}b.Triangle=b.util.createClass(b.Object,{type:"triangle",initialize:function(c){c=c||{};this.callSuper("initialize",c);this.set("width",c.width||100).set("height",c.height||100)},_render:function(c){var d=this.width/2,e=this.height/2;c.beginPath();c.moveTo(-d,e);c.lineTo(0,-e);c.lineTo(d,e);c.closePath();if(this.fill){c.fill()}if(this.stroke){c.stroke()}},complexity:function(){return 1},toSVG:function(){var c=this.width/2,d=this.height/2;var e=[-c+" "+d,"0 "+-d,c+" "+d].join(",");return''}});b.Triangle.fromObject=function(c){return new b.Triangle(c)}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={}),c=Math.PI*2,d=b.util.object.extend;if(b.Ellipse){b.warn("fabric.Ellipse is already defined.");return}b.Ellipse=b.util.createClass(b.Object,{type:"ellipse",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(){return d(this.callSuper("toObject"),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){return[""].join("")},render:function(e,f){if(this.rx===0||this.ry===0){return}return this.callSuper("render",e,f)},_render:function(e,f){e.beginPath();e.save();e.globalAlpha*=this.opacity;e.transform(1,0,0,this.ry/this.rx,0,0);e.arc(f?this.left:0,f?this.top:0,this.rx,0,c,false);if(this.stroke){e.stroke()}if(this.fill){e.fill()}e.restore()},complexity:function(){return 1}});b.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");b.Ellipse.fromElement=function(f,e){e||(e={});var g=b.parseAttributes(f,b.Ellipse.ATTRIBUTE_NAMES);if("left" in g){g.left-=(e.width/2)||0}if("top" in g){g.top-=(e.height/2)||0}return new b.Ellipse(d(g,e))};b.Ellipse.fromObject=function(e){return new b.Ellipse(e)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={});if(c.Rect){console.warn("fabric.Rect is already defined");return}c.Rect=c.util.createClass(c.Object,{type:"rect",options:{rx:0,ry:0},initialize:function(d){this._initStateProperties();this.callSuper("initialize",d);this._initRxRy()},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){if(this.rx&&!this.ry){this.ry=this.rx}else{if(this.ry&&!this.rx){this.rx=this.ry}}},_render:function(f){var j=this.rx||0,i=this.ry||0,d=-this.width/2,k=-this.height/2,e=this.width,g=this.height;f.beginPath();f.globalAlpha*=this.opacity;if(this.group){f.translate(this.x||0,this.y||0)}f.moveTo(d+j,k);f.lineTo(d+e-j,k);f.bezierCurveTo(d+e,k,d+e,k+i,d+e,k+i);f.lineTo(d+e,k+g-i);f.bezierCurveTo(d+e,k+g,d+e-j,k+g,d+e-j,k+g);f.lineTo(d+j,k+g);f.bezierCurveTo(d,k+g,d,k+g-i,d,k+g-i);f.lineTo(d,k+i);f.bezierCurveTo(d,k,d+j,k,d+j,k);f.closePath();if(this.fill){f.fill()}if(this.stroke){f.stroke()}},_normalizeLeftTopProperties:function(d){if(d.left){this.set("left",d.left+this.getWidth()/2)}this.set("x",d.left||0);if(d.top){this.set("top",d.top+this.getHeight()/2)}this.set("y",d.top||0);return this},complexity:function(){return 1},toSVG:function(){return''}});c.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" ");function a(d){d.left=d.left||0;d.top=d.top||0;return d}c.Rect.fromElement=function(e,d){if(!e){return null}var g=c.parseAttributes(e,c.Rect.ATTRIBUTE_NAMES);g=a(g);var f=new c.Rect(c.util.object.extend((d?c.util.object.clone(d):{}),g));f._normalizeLeftTopProperties(g);return f};c.Rect.fromObject=function(d){return new c.Rect(d)}})(typeof exports!="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),a=c.util.toFixed;if(c.Polyline){c.warn("fabric.Polyline is already defined");return}c.Polyline=c.util.createClass(c.Object,{type:"polyline",initialize:function(e,d){d=d||{};this.set("points",e);this.callSuper("initialize",d);this._calcDimensions()},_calcDimensions:function(){return c.Polygon.prototype._calcDimensions.call(this)},toObject:function(){return c.Polygon.prototype.toObject.call(this)},toSVG:function(){var f=[];for(var e=0,d=this.points.length;e"].join("")},_render:function(f){var e;f.beginPath();for(var g=0,d=this.points.length;g"].join("")},_render:function(l){var k;l.beginPath();for(var m=0,j=this.points.length;m1){E=Math.sqrt(E);O*=E;N*=E}var R=aa/O;var Q=W/O;var D=(-W)/N;var C=(aa)/N;var H=R*M+Q*L;var q=D*M+C*L;var F=R*T+Q*S;var ab=D*T+C*S;var Z=(F-H)*(F-H)+(ab-q)*(ab-q);var U=1/Z-0.25;if(U<0){U=0}var w=Math.sqrt(U);if(P==J){w=-w}var V=0.5*(H+F)-w*(ab-q);var K=0.5*(q+ab)+w*(F-H);var v=Math.atan2(q-K,H-V);var u=Math.atan2(ab-K,F-V);var Y=u-v;if(Y<0&&P==1){Y+=2*Math.PI}else{if(Y>0&&P==0){Y-=2*Math.PI}}var B=Math.ceil(Math.abs(Y/(Math.PI*0.5+0.001)));var I=[];for(var X=0;X"},toObject:function(){var q=g(this.callSuper("toObject"),{path:this.path});if(this.sourcePath){q.sourcePath=this.sourcePath}if(this.transformMatrix){q.transformMatrix=this.transformMatrix}return q},toDatalessObject:function(){var q=this.toObject();if(this.sourcePath){q.path=this.sourcePath}delete q.sourcePath;return q},toSVG:function(){var t=[];for(var r=0,q=this.path.length;r',"',""].join("")},complexity:function(){return this.path.length},_parsePath:function(){var C=[],z,v,y;for(var u=0,t,q,w=this.path.length;uB){for(var r=1,x=q.length;r"];for(var l=0,j=m.length;l");return k.join("")},toString:function(){return"#"},isSameColor:function(){var j=this.getObjects()[0].get("fill");return this.getObjects().every(function(k){return k.get("fill")===j})},complexity:function(){return this.paths.reduce(function(j,k){return j+((k&&k.complexity)?k.complexity():0)},0)},toGrayscale:function(){var j=this.paths.length;while(j--){this.paths[j].toGrayscale()}return this},getObjects:function(){return this.paths}});function c(m){for(var l=0,j=m.length;l"},getObjects:function(){return this.objects},add:function(h){this._restoreObjectsState();this.objects.push(h);h.setActive(true);this._calcBounds();this._updateObjectsCoords();return this},remove:function(h){this._restoreObjectsState();f(this.objects,h);h.setActive(false);this._calcBounds();this._updateObjectsCoords();return this},size:function(){return this.getObjects().length},set:function(h,k){if(typeof k=="function"){this.set(h,k(this[h]))}else{if(h==="fill"||h==="opacity"){var j=this.objects.length;this[h]=k;while(j--){this.objects[j].set(h,k)}}else{this[h]=k}}return this},contains:function(h){return this.objects.indexOf(h)>-1},toObject:function(){return g(this.callSuper("toObject"),{objects:b(this.objects,"clone")})},render:function(j){j.save();this.transform(j);var n=Math.max(this.scaleX,this.scaleY);for(var l=0,h=this.objects.length,k;k=this.objects[l];l++){var m=k.borderScaleFactor;k.borderScaleFactor=n;k.render(j);k.borderScaleFactor=m}this.hideBorders||this.drawBorders(j);this.hideCorners||this.drawCorners(j);j.restore();this.setCoords()},item:function(h){return this.getObjects()[h]},complexity:function(){return this.getObjects().reduce(function(i,h){i+=(typeof h.complexity=="function")?h.complexity():0;return i},0)},_restoreObjectsState:function(){this.objects.forEach(this._restoreObjectState,this);return this},_restoreObjectState:function(j){var l=this.get("left"),m=this.get("top"),h=this.getAngle()*(Math.PI/180),k=j.get("originalLeft"),n=j.get("originalTop"),i=Math.cos(h)*j.get("top")+Math.sin(h)*j.get("left"),o=-Math.sin(h)*j.get("top")+Math.cos(h)*j.get("left");j.setAngle(j.getAngle()+this.getAngle());j.set("left",l+o*this.get("scaleX"));j.set("top",m+i*this.get("scaleY"));j.set("scaleX",j.get("scaleX")*this.get("scaleX"));j.set("scaleY",j.get("scaleY")*this.get("scaleY"));j.setCoords();j.hideCorners=false;j.setActive(false);j.setCoords();return this},destroy:function(){return this._restoreObjectsState()},saveCoords:function(){this._originalLeft=this.get("left");this._originalTop=this.get("top");return this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){this.forEachObject(function(h){h.setCoords()});return this},activateAllObjects:function(){return this.setActive(true)},setActive:function(h){this.forEachObject(function(i){i.setActive(h)});return this},forEachObject:e.StaticCanvas.prototype.forEachObject,_setOpacityIfSame:function(){var j=this.getObjects(),i=j[0]?j[0].get("opacity"):1;var h=j.every(function(k){return k.get("opacity")===i});if(h){this.opacity=i}},_calcBounds:function(){var s=[],q=[],p,n,k,h,m,l,u,r=0,t=this.objects.length;for(;ri.x&&j-hi.y},toGrayscale:function(){var h=this.objects.length;while(h--){this.objects[h].toGrayscale()}}});e.Group.fromObject=function(h){return new e.Group(h.objects,h)}})(typeof exports!="undefined"?exports:this);(function(a){var b=fabric.util.object.extend;if(!a.fabric){a.fabric={}}if(a.fabric.Image){fabric.warn("fabric.Image is already defined.");return}if(!fabric.Object){fabric.warn("fabric.Object is required for fabric.Image initialization");return}fabric.Image=fabric.util.createClass(fabric.Object,{maxwidth:null,maxheight:null,active:false,bordervisibility:false,cornervisibility:false,type:"image",filters:[],initialize:function(d,c){c||(c={});this.callSuper("initialize",c);this._initElement(d);this._originalImage=this.getElement();this._initConfig(c);if(c.filters){this.filters=c.filters;this.applyFilters()}},getElement:function(){return this._element},setElement:function(c){this._element=c;this._initConfig();return this},getNormalizedSize:function(d,c,e){if(e&&c&&(d.width>d.height&&(d.width/d.height)<(c/e))){normalizedWidth=~~((d.width*e)/d.height);normalizedHeight=e}else{if(e&&((d.height==d.width)||(d.height>d.width)||(d.height>e))){normalizedWidth=~~((d.width*e)/d.height);normalizedHeight=e}else{if(c&&(c'},getSrc:function(){return this.getElement().src},toString:function(){return'#'},clone:function(c){this.constructor.fromObject(this.toObject(),c)},applyFilters:function(i){if(this.filters.length===0){this.setElement(this._originalImage);i&&i();return}var c=typeof Buffer!=="undefined"&&typeof window==="undefined",g=this._originalImage,e=fabric.document.createElement("canvas"),f=c?new (require("canvas").Image):fabric.document.createElement("img"),h=this;if(!e.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(e)}e.width=g.width;e.height=g.height;e.getContext("2d").drawImage(g,0,0);this.filters.forEach(function(j){j&&j.applyTo(e)});f.onload=function(){h.setElement(f);i&&i();f.onload=e=g=null};f.width=g.width;f.height=g.height;if(c){var d=e.toDataURL("image/png").replace(/data:image\/png;base64,/,"");f.src=new Buffer(d,"base64");h.setElement(f);i&&i()}else{f.src=e.toDataURL("image/png")}return this},_render:function(d){var c=this.getOriginalSize();d.drawImage(this.getElement(),-c.width/2,-c.height/2,c.width,c.height)},_adjustWidthHeightToBorders:function(c){if(c){this.currentBorder=this.borderwidth;this.width+=(2*this.currentBorder);this.height+=(2*this.currentBorder)}else{this.currentBorder=0}},_resetWidthHeight:function(){var c=this.getElement();this.set("width",c.width);this.set("height",c.height)},_initElement:function(c){this.setElement(fabric.util.getById(c));fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(c){this.setOptions(c||{});this._setBorder();this._setWidthHeight()},_initFilters:function(c){if(c.filters&&c.filters.length){this.filters=c.filters.map(function(d){return fabric.Image.filters[d.type].fromObject(d)})}},_setBorder:function(){if(this.bordervisibility){this.currentBorder=this.borderwidth}else{this.currentBorder=0}},_setWidthHeight:function(){var c=2*this.currentBorder;this.width=(this.getElement().width||0)+c;this.height=(this.getElement().height||0)+c},complexity:function(){return 1}});fabric.Image.CSS_CANVAS="canvas-img";fabric.Image.fromObject=function(d,f){var c=fabric.document.createElement("img"),e=d.src;if(d.width){c.width=d.width}if(d.height){c.height=d.height}c.onload=function(){fabric.Image.prototype._initFilters.call(d,d);var g=new fabric.Image(c,d);f&&f(g);c=c.onload=null};c.src=e};fabric.Image.fromURL=function(d,f,e){var c=fabric.document.createElement("img");c.onload=function(){if(f){f(new fabric.Image(c,e))}c=c.onload=null};c.src=d};fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" ");fabric.Image.fromElement=function(d,f,c){c||(c={});var e=fabric.parseAttributes(d,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(e["xlink:href"],f,b(e,c))};fabric.Image.async=true})(typeof exports!="undefined"?exports:this);fabric.Image.filters={};fabric.Image.filters.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo:function(d){var c=d.getContext("2d"),a=c.getImageData(0,0,d.width,d.height),h=a.data,e=a.width,l=a.height,k,b,g,f;for(g=0;gh&&m>h&&o>h&&p(a-m)'},_render:function(e){var g=Cufon.textOptions||(Cufon.textOptions={});g.left=this.left;g.top=this.top;g.context=e;g.color=this.fill;var f=this._initDummyElement();this.transform(e);Cufon.replaceElement(f,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor});this.width=g.width;this.height=g.height;this._totalLineHeight=g.totalLineHeight;this._fontAscent=g.fontAscent;this._boundaries=g.boundaries;this._shadowOffsets=g.shadowOffsets;this._shadows=g.shadows||[];this.setCoords()},_initDummyElement:function(){var f=b.document.createElement("pre"),e=b.document.createElement("div");e.appendChild(f);if(typeof G_vmlCanvasManager=="undefined"){f.innerHTML=this.text}else{f.innerText=this.text.replace(/\r?\n/gi,"\r")}f.style.fontSize=this.fontSize+"px";f.style.letterSpacing="normal";return f},render:function(e,f){e.save();this._render(e);if(!f&&this.active){this.drawBorders(e);this.hideCorners||this.drawCorners(e)}e.restore()},toObject:function(){return d(this.callSuper("toObject"),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor})},toSVG:function(){var h=this.text.split("\n"),i=-this._fontAscent-((this._fontAscent/5)*this.lineHeight),f=-(this.width/2),e=(this.height/2)-(h.length*this.fontSize)-this._totalLineHeight,g=this._getSVGTextAndBg(i,f,h),j=this._getSVGShadows(i,h);return['',g.textBgRects.join(""),"',j.join(""),g.textSpans.join(""),"",""].join("")},_getSVGShadows:function(l,k){var n=[];for(var f=0,e=this._shadows.length;f',k[h],"")}}return n},_getSVGTextAndBg:function(k,f,h){var m=[],j=[];for(var g=0,e=h.length;g',h[g],"");if(!this.backgroundColor){continue}j.push('')}return{textSpans:m,textBgRects:j}},setColor:function(e){this.set("fill",e);return this},setFontsize:function(e){this.set("fontSize",e);this.setCoords();return this},getText:function(){return this.text},setText:function(e){this.set("text",e);this.setCoords();return this},set:function(e,f){if(typeof e=="object"){for(var g in e){this.set(g,e[g])}}else{this[e]=f;if(e==="fontFamily"&&this.path){this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+f+"$3")}}return this}});b.Text.fromObject=function(e){return new b.Text(e.text,c(e))};b.Text.fromElement=function(e){}})(typeof exports!="undefined"?exports:this);(function(){if(typeof document!="undefined"&&typeof window!="undefined"){return}var XML=require("o3-xml"),URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;function request(url,encoding,callback){var oURL=URL.parse(url),client=HTTP.createClient(80,oURL.hostname),request=client.request("GET",oURL.pathname,{host:oURL.hostname});client.addListener("error",function(err){if(err.errno===process.ECONNREFUSED){fabric.log("ECONNREFUSED: connection refused to "+client.host+":"+client.port)}else{fabric.log(err.message)}});request.end();request.on("response",function(response){var body="";if(encoding){response.setEncoding(encoding)}response.on("end",function(){callback(body)});response.on("data",function(chunk){if(response.statusCode==200){body+=chunk}})})}fabric.util.loadImage=function(url,callback){request(url,"binary",function(body){var img=new Image();img.src=new Buffer(body,"binary");callback(img)})};fabric.loadSVGFromURL=function(url,callback){url=url.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();request(url,"",function(body){var doc=XML.parseFromString(body);fabric.parseSVGDocument(doc.documentElement,function(results,options){callback(results,options)})})};fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body);callback&&callback()})};fabric.Image.fromObject=function(object,callback){fabric.util.loadImage(object.src,function(img){var oImg=new fabric.Image(img);oImg._initConfig(object);oImg._initFilters(object);callback(oImg)})};fabric.createCanvasForNode=function(width,height){var canvasEl=fabric.document.createElement("canvas"),nodeCanvas=new Canvas(width||600,height||600);canvasEl.style={};canvasEl.width=nodeCanvas.width;canvasEl.height=nodeCanvas.height;var canvas=fabric.Canvas||fabric.StaticCanvas;var fabricCanvas=new canvas(canvasEl);fabricCanvas.contextContainer=nodeCanvas.getContext("2d");fabricCanvas.nodeCanvas=nodeCanvas;return fabricCanvas};fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()};if(fabric.Canvas){fabric.Canvas.prototype.createPNGStream}var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(width){origSetWidth.call(this);this.nodeCanvas.width=width;return this};if(fabric.Canvas){fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth}var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(height){origSetHeight.call(this);this.nodeCanvas.height=height;return this};if(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 c5b1340909f176b2b014963b1b6006c9e4adba81..c85d1d75c8cad69c50a65a2d2e0105641a62fc2b 100644 GIT binary patch delta 36953 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≪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", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "repository": "git://github.com/kangax/fabric.js", diff --git a/src/canvas.class.js b/src/canvas.class.js index dcd08b88..1a98ee70 100644 --- a/src/canvas.class.js +++ b/src/canvas.class.js @@ -266,7 +266,8 @@ __onMouseDown: function (e) { // accept only left clicks - if (e.which !== 1 && !fabric.isTouchSupported) return; + var isLeftClick = 'which' in e ? e.which == 1 : e.button == 1; + if (!isLeftClick && !fabric.isTouchSupported) return; if (this.isDrawingMode) { this._prepareForDrawing(e); diff --git a/src/text.class.js b/src/text.class.js index c522b65b..56491726 100644 --- a/src/text.class.js +++ b/src/text.class.js @@ -224,14 +224,13 @@ // Cufon doesn't play nice with textDecoration=underline if element doesn't have a parent container.appendChild(el); - //IE 7 & 8 drop newLines and white space on text nodes, due to a bug as disccused here - //and here http://web.student.tuwien.ac.at/~e0226430/innerHtmlQuirk.html - //http://www.w3schools.com/dom/dom_mozilla_vs_ie.asp - if (typeof G_vmlCanvasManager == 'undefined') { el.innerHTML = this.text; - } else { - //for some reason, the carriage return is not stripped by IE but "\n" is, so let's keep \r as a new line marker... + } + else { + // IE 7 & 8 drop newlines and white space on text nodes + // see: http://web.student.tuwien.ac.at/~e0226430/innerHtmlQuirk.html + // see: http://www.w3schools.com/dom/dom_mozilla_vs_ie.asp el.innerText = this.text.replace(/\r?\n/gi, '\r'); }