From 9d36e26d717487728631f14964286f5f80667326 Mon Sep 17 00:00:00 2001 From: kangax Date: Fri, 22 Jun 2012 17:25:15 +0200 Subject: [PATCH] Fix "mouse:down", "mouse:move", "mouse:up" events not firing during free drawing mode. --- HEADER.js | 2 +- dist/all.js | 5 ++++- dist/all.min.js | 4 ++-- dist/all.min.js.gz | Bin 39678 -> 39692 bytes package.json | 2 +- src/canvas.class.js | 3 +++ 6 files changed, 11 insertions(+), 5 deletions(-) diff --git a/HEADER.js b/HEADER.js index 6a018e93..54f01890 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.8.21" }; +var fabric = fabric || { version: "0.8.22" }; if (typeof exports != 'undefined') { exports.fabric = fabric; diff --git a/dist/all.js b/dist/all.js index 657527e2..3f03ed5b 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.8.21" }; +var fabric = fabric || { version: "0.8.22" }; if (typeof exports != 'undefined') { exports.fabric = fabric; @@ -5898,6 +5898,7 @@ fabric.util.string = { if (this.isDrawingMode && this._isCurrentlyDrawing) { this._finalizeDrawingPath(); + this.fire('mouse:up', { e: e }); return; } @@ -5973,6 +5974,7 @@ fabric.util.string = { // capture coordinates immediately; this allows to draw dots (when movement never occurs) this._captureDrawingPath(e); + this.fire('mouse:down', { e: e }); return; } @@ -6040,6 +6042,7 @@ fabric.util.string = { if (this._isCurrentlyDrawing) { this._captureDrawingPath(e); } + this.fire('mouse:move', { e: e }); return; } diff --git a/dist/all.min.js b/dist/all.min.js index f5b21690..56a479a3 100644 --- a/dist/all.min.js +++ b/dist/all.min.js @@ -1,7 +1,7 @@ /* Fabric.js Copyright 2008-2012, Bitsonnet (Juriy Zaytsev, Maxim Chernyak) */ -var fabric=fabric||{version:"0.8.21"};if(typeof exports!="undefined"){exports.fabric=fabric}if(typeof document!="undefined"&&typeof window!="undefined"){fabric.document=document;fabric.window=window}else{fabric.document=require("jsdom").jsdom("");fabric.window=fabric.document.createWindow()}fabric.isTouchSupported="ontouchstart" in fabric.document.documentElement;if(!this.JSON){this.JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;i");fabric.window=fabric.document.createWindow()}fabric.isTouchSupported="ontouchstart" in fabric.document.documentElement;if(!this.JSON){this.JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;i=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;Su?n:(m-l);q(r(currentTime,k,byValue,n));if(m>u||o()){v.onComplete&&v.onComplete();return}i(p)})()}var e=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(l,k){fabric.window.setTimeout(l,1000/60)};var i=function(){return e.apply(fabric.window,arguments)};function a(l,n,m){if(l){var k=new Image();k.onload=function(){n&&n.call(m,k);k=k.onload=null};k.src=l}else{n&&n.call(m,l)}}fabric.util.removeFromArray=h;fabric.util.degreesToRadians=b;fabric.util.toFixed=d;fabric.util.getRandomInt=f;fabric.util.falseFunction=j;fabric.util.animate=c;fabric.util.requestAnimFrame=i;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]/g,">")}fabric.util.string={camelize:b,capitalize:c,escapeXml:a}}());(function(){var c=Array.prototype.slice,a=Function.prototype.apply,b=function(){};if(!Function.prototype.bind){Function.prototype.bind=function(d){var g=this,e=c.call(arguments,1),f;if(e.length){f=function(){return a.call(g,this instanceof b?this:d,e.concat(c.call(arguments)))}}else{f=function(){return a.call(g,this instanceof b?this:d,arguments)}}b.prototype=this.prototype;f.prototype=new b;return f}}})();(function(){var f=Array.prototype.slice,e=function(){};var c=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();var b=function(g,j,h){for(var i in j){if(i in g.prototype&&typeof g.prototype[i]=="function"){g.prototype[i]=(function(k){return function(){var m=this.constructor.superclass;this.constructor.superclass=h;var l=j[k].apply(this,arguments);this.constructor.superclass=m;if(k!=="initialize"){return l}}})(i)}else{g.prototype[i]=j[i]}if(c){if(j.toString!==Object.prototype.toString){g.prototype.toString=j.toString}if(j.valueOf!==Object.prototype.valueOf){g.prototype.valueOf=j.valueOf}}}};function a(){}function d(){var k=null,j=f.call(arguments,0);if(typeof j[0]==="function"){k=j.shift()}function g(){this.initialize.apply(this,arguments)}g.superclass=k;g.subclasses=[];if(k){a.prototype=k.prototype;g.prototype=new a;k.subclasses.push(g)}for(var h=0,l=j.length;h-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(){fabric.util.ease={};function d(F,E,H,G){return H*(F/=G)*F+E}function l(F,E,H,G){return -H*(F/=G)*(F-2)+E}function r(F,E,H,G){if((F/=G/2)<1){return H/2*F*F+E}return -H/2*((--F)*(F-2)-1)+E}function B(F,E,H,G){return H*(F/=G)*F*F+E}function q(F,E,H,G){return H*((F=F/G-1)*F*F+1)+E}function u(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F+E}return H/2*((F-=2)*F*F+2)+E}function t(F,E,H,G){return H*(F/=G)*F*F*F+E}function g(F,E,H,G){return -H*((F=F/G-1)*F*F*F-1)+E}function k(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F+E}return -H/2*((F-=2)*F*F*F-2)+E}function y(F,E,H,G){return H*(F/=G)*F*F*F*F+E}function j(F,E,H,G){return H*((F=F/G-1)*F*F*F*F+1)+E}function n(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F*F+E}return H/2*((F-=2)*F*F*F*F+2)+E}function f(F,E,H,G){return -H*Math.cos(F/G*(Math.PI/2))+H+E}function o(F,E,H,G){return H*Math.sin(F/G*(Math.PI/2))+E}function v(F,E,H,G){return -H/2*(Math.cos(Math.PI*F/G)-1)+E}function D(F,E,H,G){return(F==0)?E:H*Math.pow(2,10*(F/G-1))+E}function c(F,E,H,G){return(F==G)?E+H:H*(-Math.pow(2,-10*F/G)+1)+E}function i(F,E,H,G){if(F==0){return E}if(F==G){return E+H}if((F/=G/2)<1){return H/2*Math.pow(2,10*(F-1))+E}return H/2*(-Math.pow(2,-10*--F)+2)+E}function h(F,E,H,G){return -H*(Math.sqrt(1-(F/=G)*F)-1)+E}function p(F,E,H,G){return H*Math.sqrt(1-(F=F/G-1)*F)+E}function x(F,E,H,G){if((F/=G/2)<1){return -H/2*(Math.sqrt(1-F*F)-1)+E}return H/2*(Math.sqrt(1-(F-=2)*F)+1)+E}function s(G,E,K,J){var H=1.70158;var I=0;var F=K;if(G==0){return E}if((G/=J)==1){return E+K}if(!I){I=J*0.3}if(F-1;w=w.split(/\s+/);var u=[];if(y){for(var v=0,t=w.length;v/i,""))}if(!w.documentElement){return}h.parseSVGDocument(w.documentElement,function(z,y){k.set(t,{objects:h.util.array.invoke(z,"toObject"),options:y});v(z,y)})}}function b(v){var u=v.objects,t=v.options;u=u.map(function(w){return h[f(w.type)].fromObject(w)});return({objects:u,options:t})}function n(t,w){t=t.trim();var u;if(typeof DOMParser!=="undefined"){var v=new DOMParser();if(v&&v.parseFromString){u=v.parseFromString(t,"text/xml")}}else{if(h.window.ActiveXObject){var u=new ActiveXObject("Microsoft.XMLDOM");u.async="false";u.loadXML(t.replace(//i,""))}}h.parseSVGDocument(u.documentElement,function(y,x){w(y,x)})}function m(w){var u="";for(var v=0,t=w.length;v",'",""].join("")}return u}p(h,{parseAttributes:e,parseElements:g,parseStyleAttribute:i,parsePointsAttribute:s,getCSSRules:d,loadSVGFromURL:c,loadSVGFromString:n,createSVGFontFacesMarkup:m})})(typeof exports!="undefined"?exports:this);(function(){function c(h){var g=h.getAttribute("style");if(g){var k=g.split(/\s*;\s*/);if(k[k.length-1]===""){k.pop()}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())];if(this.backgroundImage){h.push('')}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.fire("before:selection:cleared",{target:g});this.discardActiveObject();this.fire("selection:cleared")}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)},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},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(b.backgroundImage){c.setBackgroundImage(b.backgroundImage,c.renderAll.bind(c));c.backgroundImageOpacity=b.backgroundImageOpacity;c.backgroundImageStretch=b.backgroundImageStretch}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(b){var a=JSON.stringify(this);this.cloneWithoutData(function(c){c.loadFromJSON(a,function(){if(b){b(c)}})})},cloneWithoutData:function(c){var a=fabric.document.createElement("canvas");a.width=this.getWidth();a.height=this.getHeight();var b=new fabric.Canvas(a);b.clipTo=this.clipTo;if(this.backgroundImage){b.setBackgroundImage(this.backgroundImage.src,function(){b.renderAll();if(c){c(b)}});b.backgroundImageOpacity=this.backgroundImageOpacity;b.backgroundImageStretch=this.backgroundImageStretch}else{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,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,hasRotatingPoint:false,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,hasControls:this.hasControls,hasBorders:this.hasBorders,hasRotatingPoint:this.hasRotatingPoint};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(",c(this.left,2)," ",c(this.top,2),")",i!==0?(" rotate("+c(i,2)+")"):"",(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 w=this.oCoords,r=b(45-this.getAngle()),i=Math.sqrt(2*Math.pow(this.cornersize,2))/2,x=i*Math.cos(r),q=i*Math.sin(r),v=Math.sin(this.theta),u=Math.cos(this.theta);w.tl.corner={tl:{x:w.tl.x-q,y:w.tl.y-x},tr:{x:w.tl.x+x,y:w.tl.y-q},bl:{x:w.tl.x-x,y:w.tl.y+q},br:{x:w.tl.x+q,y:w.tl.y+x}};w.tr.corner={tl:{x:w.tr.x-q,y:w.tr.y-x},tr:{x:w.tr.x+x,y:w.tr.y-q},br:{x:w.tr.x+q,y:w.tr.y+x},bl:{x:w.tr.x-x,y:w.tr.y+q}};w.bl.corner={tl:{x:w.bl.x-q,y:w.bl.y-x},bl:{x:w.bl.x-x,y:w.bl.y+q},br:{x:w.bl.x+q,y:w.bl.y+x},tr:{x:w.bl.x+x,y:w.bl.y-q}};w.br.corner={tr:{x:w.br.x+x,y:w.br.y-q},bl:{x:w.br.x-x,y:w.br.y+q},br:{x:w.br.x+q,y:w.br.y+x},tl:{x:w.br.x-q,y:w.br.y-x}};w.ml.corner={tl:{x:w.ml.x-q,y:w.ml.y-x},tr:{x:w.ml.x+x,y:w.ml.y-q},bl:{x:w.ml.x-x,y:w.ml.y+q},br:{x:w.ml.x+q,y:w.ml.y+x}};w.mt.corner={tl:{x:w.mt.x-q,y:w.mt.y-x},tr:{x:w.mt.x+x,y:w.mt.y-q},bl:{x:w.mt.x-x,y:w.mt.y+q},br:{x:w.mt.x+q,y:w.mt.y+x}};w.mr.corner={tl:{x:w.mr.x-q,y:w.mr.y-x},tr:{x:w.mr.x+x,y:w.mr.y-q},bl:{x:w.mr.x-x,y:w.mr.y+q},br:{x:w.mr.x+q,y:w.mr.y+x}};w.mb.corner={tl:{x:w.mb.x-q,y:w.mb.y-x},tr:{x:w.mb.x+x,y:w.mb.y-q},bl:{x:w.mb.x-x,y:w.mb.y+q},br:{x:w.mb.x+q,y:w.mb.y+x}};var t=40;w.mtr.corner={tl:{x:w.mtr.x-q+(v*t),y:w.mtr.y-x-(u*t)},tr:{x:w.mtr.x+x+(v*t),y:w.mtr.y-q-(u*t)},bl:{x:w.mtr.x-x+(v*t),y:w.mtr.y+q-(u*t)},br:{x:w.mtr.x+q+(v*t),y:w.mtr.y+x-(u*t)}};var s=(-t-this.currentHeight);w.mbr.corner={tl:{x:w.mbr.x-q+(v*s),y:w.mbr.y-x-(u*s)},tr:{x:w.mbr.x+x+(v*s),y:w.mbr.y-q-(u*s)},bl:{x:w.mbr.x-x+(v*s),y:w.mbr.y+q-(u*s)},br:{x:w.mbr.x+q+(v*s),y:w.mbr.y+x-(u*s)}}},toGrayscale:function(){var i=this.get("fill");if(i){this.set("overlayFill",new d.Color(i).toGrayscale().toRgb())}return this},complexity:function(){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;i||(i={});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,byValue:i.by,easing:i.easing,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.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")},setRadius:function(f){this.radius=f;this.set("width",f*2).set("height",f*2)},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},toObject:function(){return c.util.object.extend(this.callSuper("toObject"),{rx:this.get("rx")||0,ry:this.get("ry")||0})},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,{active:false,bordervisibility:false,cornervisibility:false,type:"image",initialize:function(d,c){c||(c={});this.callSuper("initialize",c);this._initElement(d);this._originalImage=this.getElement();this._initConfig(c);this.filters=[];if(c.filters){this.filters=c.filters;this.applyFilters()}},getElement:function(){return this._element},setElement:function(c){this._element=c;this._initConfig();return this},getOriginalSize:function(){var c=this.getElement();return{width:c.width,height:c.height}},setBorderVisibility:function(c){this._resetWidthHeight();this._adjustWidthHeightToBorders(showBorder);this.setCoords()},setCornersVisibility:function(c){this.cornervisibility=!!c},render:function(c,d){c.save();if(!d){this.transform(c)}this._render(c);if(this.active&&!d){this.drawBorders(c);this.hideCorners||this.drawCorners(c)}c.restore()},toObject:function(){return b(this.callSuper("toObject"),{src:this._originalImage.src||this._originalImage._src,filters:this.filters.concat()})},toSVG:function(){return''},getSrc:function(){return this.getElement().src||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(c){c.drawImage(this.getElement(),-this.width/2,-this.height/2,this.width,this.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.prototype.getSvgSrc=fabric.Image.prototype.getSrc;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.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var a=this.get("angle");if(a>-225&&a<=-135){return -180}else{if(a>-135&&a<=-45){return -90}else{if(a>-45&&a<=45){return 0}else{if(a>45&&a<=135){return 90}else{if(a>135&&a<=225){return 180}else{if(a>225&&a<=315){return 270}else{if(a>315){return 360}}}}}}}return 0},straighten:function(){var a=this._getAngleValueForStraighten();this.setAngle(a);return this},fxStraighten:function(b){b=b||{};var c=function(){},d=b.onComplete||c,a=b.onChange||c,e=this;fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(f){e.setAngle(f);a()},onComplete:function(){e.setCoords();d()},onStart:function(){e.setActive(false)}});return this}});fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(a){a.straighten();this.renderAll();return this},fxStraightenObject:function(a){a.fxStraighten({onChange:this.renderAll.bind(this)});return 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(f){var h=Cufon.textOptions||(Cufon.textOptions={});h.left=this.left;h.top=this.top;h.context=f;h.color=this.fill;var g=this._initDummyElement();this.transform(f);Cufon.replaceElement(g,{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=h.width;this.height=h.height;this._totalLineHeight=h.totalLineHeight;this._fontAscent=h.fontAscent;this._boundaries=h.boundaries;this._shadowOffsets=h.shadowOffsets;this._shadows=h.shadows||[];this.setCoords()},_initDummyElement:function(){var g=c.document.createElement("pre"),f=c.document.createElement("div");f.appendChild(g);if(typeof G_vmlCanvasManager=="undefined"){g.innerHTML=this.text}else{g.innerText=this.text.replace(/\r?\n/gi,"\r")}g.style.fontSize=this.fontSize+"px";g.style.letterSpacing="normal";return g},render:function(f,g){f.save();this._render(f);if(!g&&this.active){this.drawBorders(f);this.hideCorners||this.drawCorners(f)}f.restore()},toObject:function(){return e(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 i=this.text.split(/\r?\n/),j=-this._fontAscent-((this._fontAscent/5)*this.lineHeight),g=-(this.width/2),f=(this.height/2)-(i.length*this.fontSize)-this._totalLineHeight,h=this._getSVGTextAndBg(j,g,i),k=this._getSVGShadows(j,i);f+=((this._fontAscent/5)*this.lineHeight);return['',h.textBgRects.join(""),"',k.join(""),h.textSpans.join(""),"",""].join("")},_getSVGShadows:function(h,n){var o=[],k,l,p,g,f=1;for(k=0,p=this._shadows.length;k",c.util.string.escapeXml(n[l]),"");f=1}else{f++}}}return o},_getSVGTextAndBg:function(j,h,n){var g=[],k=[],l,m,o,f=1;for(l=0,o=n.length;l",c.util.string.escapeXml(n[l]),"");f=1}else{f++}if(!this.backgroundColor){continue}k.push("')}return{textSpans:g,textBgRects:k}},_getFillAttributes:function(f){var g=f?new c.Color(f):"";if(!g||!g.getSource()||g.getAlpha()===1){return'fill="'+f+'"'}return'opacity="'+g.getAlpha()+'" fill="'+g.setAlpha(1).toRgb()+'"'},setColor:function(f){this.set("fill",f);return this},setFontsize:function(f){this.set("fontSize",f);this.setCoords();return this},getText:function(){return this.text},setText:function(f){this.set("text",f);this.setCoords();return this},set:function(f,g){if(typeof f=="object"){for(var h in f){this.set(h,f[h])}}else{this[f]=g;if(f==="fontFamily"&&this.path){this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+g+"$3")}}return this}});c.Text.fromObject=function(f){return new c.Text(f.text,d(f))};c.Text.fromElement=function(f){}})(typeof exports!="undefined"?exports:this);(function(){if(typeof document!="undefined"&&typeof window!="undefined"){return}var DOMParser=new require("xmldom").DOMParser,URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;function request(url,encoding,callback){var oURL=URL.parse(url),client=HTTP.createClient(oURL.port,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");img._src=url;callback(img)})};fabric.loadSVGFromURL=function(url,callback){url=url.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();request(url,"",function(body){var doc=new DOMParser().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;Su?n:(m-l);q(r(currentTime,k,byValue,n));if(m>u||o()){v.onComplete&&v.onComplete();return}i(p)})()}var e=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(l,k){fabric.window.setTimeout(l,1000/60)};var i=function(){return e.apply(fabric.window,arguments)};function a(l,n,m){if(l){var k=new Image();k.onload=function(){n&&n.call(m,k);k=k.onload=null};k.src=l}else{n&&n.call(m,l)}}fabric.util.removeFromArray=h;fabric.util.degreesToRadians=b;fabric.util.toFixed=d;fabric.util.getRandomInt=f;fabric.util.falseFunction=j;fabric.util.animate=c;fabric.util.requestAnimFrame=i;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]/g,">")}fabric.util.string={camelize:b,capitalize:c,escapeXml:a}}());(function(){var c=Array.prototype.slice,a=Function.prototype.apply,b=function(){};if(!Function.prototype.bind){Function.prototype.bind=function(d){var g=this,e=c.call(arguments,1),f;if(e.length){f=function(){return a.call(g,this instanceof b?this:d,e.concat(c.call(arguments)))}}else{f=function(){return a.call(g,this instanceof b?this:d,arguments)}}b.prototype=this.prototype;f.prototype=new b;return f}}})();(function(){var f=Array.prototype.slice,e=function(){};var c=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();var b=function(g,j,h){for(var i in j){if(i in g.prototype&&typeof g.prototype[i]=="function"){g.prototype[i]=(function(k){return function(){var m=this.constructor.superclass;this.constructor.superclass=h;var l=j[k].apply(this,arguments);this.constructor.superclass=m;if(k!=="initialize"){return l}}})(i)}else{g.prototype[i]=j[i]}if(c){if(j.toString!==Object.prototype.toString){g.prototype.toString=j.toString}if(j.valueOf!==Object.prototype.valueOf){g.prototype.valueOf=j.valueOf}}}};function a(){}function d(){var k=null,j=f.call(arguments,0);if(typeof j[0]==="function"){k=j.shift()}function g(){this.initialize.apply(this,arguments)}g.superclass=k;g.subclasses=[];if(k){a.prototype=k.prototype;g.prototype=new a;k.subclasses.push(g)}for(var h=0,l=j.length;h-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(){fabric.util.ease={};function d(F,E,H,G){return H*(F/=G)*F+E}function l(F,E,H,G){return -H*(F/=G)*(F-2)+E}function r(F,E,H,G){if((F/=G/2)<1){return H/2*F*F+E}return -H/2*((--F)*(F-2)-1)+E}function B(F,E,H,G){return H*(F/=G)*F*F+E}function q(F,E,H,G){return H*((F=F/G-1)*F*F+1)+E}function u(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F+E}return H/2*((F-=2)*F*F+2)+E}function t(F,E,H,G){return H*(F/=G)*F*F*F+E}function g(F,E,H,G){return -H*((F=F/G-1)*F*F*F-1)+E}function k(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F+E}return -H/2*((F-=2)*F*F*F-2)+E}function y(F,E,H,G){return H*(F/=G)*F*F*F*F+E}function j(F,E,H,G){return H*((F=F/G-1)*F*F*F*F+1)+E}function n(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F*F+E}return H/2*((F-=2)*F*F*F*F+2)+E}function f(F,E,H,G){return -H*Math.cos(F/G*(Math.PI/2))+H+E}function o(F,E,H,G){return H*Math.sin(F/G*(Math.PI/2))+E}function v(F,E,H,G){return -H/2*(Math.cos(Math.PI*F/G)-1)+E}function D(F,E,H,G){return(F==0)?E:H*Math.pow(2,10*(F/G-1))+E}function c(F,E,H,G){return(F==G)?E+H:H*(-Math.pow(2,-10*F/G)+1)+E}function i(F,E,H,G){if(F==0){return E}if(F==G){return E+H}if((F/=G/2)<1){return H/2*Math.pow(2,10*(F-1))+E}return H/2*(-Math.pow(2,-10*--F)+2)+E}function h(F,E,H,G){return -H*(Math.sqrt(1-(F/=G)*F)-1)+E}function p(F,E,H,G){return H*Math.sqrt(1-(F=F/G-1)*F)+E}function x(F,E,H,G){if((F/=G/2)<1){return -H/2*(Math.sqrt(1-F*F)-1)+E}return H/2*(Math.sqrt(1-(F-=2)*F)+1)+E}function s(G,E,K,J){var H=1.70158;var I=0;var F=K;if(G==0){return E}if((G/=J)==1){return E+K}if(!I){I=J*0.3}if(F-1;w=w.split(/\s+/);var u=[];if(y){for(var v=0,t=w.length;v/i,""))}if(!w.documentElement){return}h.parseSVGDocument(w.documentElement,function(z,y){k.set(t,{objects:h.util.array.invoke(z,"toObject"),options:y});v(z,y)})}}function b(v){var u=v.objects,t=v.options;u=u.map(function(w){return h[f(w.type)].fromObject(w)});return({objects:u,options:t})}function n(t,w){t=t.trim();var u;if(typeof DOMParser!=="undefined"){var v=new DOMParser();if(v&&v.parseFromString){u=v.parseFromString(t,"text/xml")}}else{if(h.window.ActiveXObject){var u=new ActiveXObject("Microsoft.XMLDOM");u.async="false";u.loadXML(t.replace(//i,""))}}h.parseSVGDocument(u.documentElement,function(y,x){w(y,x)})}function m(w){var u="";for(var v=0,t=w.length;v",'",""].join("")}return u}p(h,{parseAttributes:e,parseElements:g,parseStyleAttribute:i,parsePointsAttribute:s,getCSSRules:d,loadSVGFromURL:c,loadSVGFromString:n,createSVGFontFacesMarkup:m})})(typeof exports!="undefined"?exports:this);(function(){function c(h){var g=h.getAttribute("style");if(g){var k=g.split(/\s*;\s*/);if(k[k.length-1]===""){k.pop()}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())];if(this.backgroundImage){h.push('')}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.fire("before:selection:cleared",{target:g});this.discardActiveObject();this.fire("selection:cleared")}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)},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},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(b.backgroundImage){c.setBackgroundImage(b.backgroundImage,c.renderAll.bind(c));c.backgroundImageOpacity=b.backgroundImageOpacity;c.backgroundImageStretch=b.backgroundImageStretch}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(b){var a=JSON.stringify(this);this.cloneWithoutData(function(c){c.loadFromJSON(a,function(){if(b){b(c)}})})},cloneWithoutData:function(c){var a=fabric.document.createElement("canvas");a.width=this.getWidth();a.height=this.getHeight();var b=new fabric.Canvas(a);b.clipTo=this.clipTo;if(this.backgroundImage){b.setBackgroundImage(this.backgroundImage.src,function(){b.renderAll();if(c){c(b)}});b.backgroundImageOpacity=this.backgroundImageOpacity;b.backgroundImageStretch=this.backgroundImageStretch}else{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,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,hasRotatingPoint:false,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,hasControls:this.hasControls,hasBorders:this.hasBorders,hasRotatingPoint:this.hasRotatingPoint};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(",c(this.left,2)," ",c(this.top,2),")",i!==0?(" rotate("+c(i,2)+")"):"",(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 w=this.oCoords,r=b(45-this.getAngle()),i=Math.sqrt(2*Math.pow(this.cornersize,2))/2,x=i*Math.cos(r),q=i*Math.sin(r),v=Math.sin(this.theta),u=Math.cos(this.theta);w.tl.corner={tl:{x:w.tl.x-q,y:w.tl.y-x},tr:{x:w.tl.x+x,y:w.tl.y-q},bl:{x:w.tl.x-x,y:w.tl.y+q},br:{x:w.tl.x+q,y:w.tl.y+x}};w.tr.corner={tl:{x:w.tr.x-q,y:w.tr.y-x},tr:{x:w.tr.x+x,y:w.tr.y-q},br:{x:w.tr.x+q,y:w.tr.y+x},bl:{x:w.tr.x-x,y:w.tr.y+q}};w.bl.corner={tl:{x:w.bl.x-q,y:w.bl.y-x},bl:{x:w.bl.x-x,y:w.bl.y+q},br:{x:w.bl.x+q,y:w.bl.y+x},tr:{x:w.bl.x+x,y:w.bl.y-q}};w.br.corner={tr:{x:w.br.x+x,y:w.br.y-q},bl:{x:w.br.x-x,y:w.br.y+q},br:{x:w.br.x+q,y:w.br.y+x},tl:{x:w.br.x-q,y:w.br.y-x}};w.ml.corner={tl:{x:w.ml.x-q,y:w.ml.y-x},tr:{x:w.ml.x+x,y:w.ml.y-q},bl:{x:w.ml.x-x,y:w.ml.y+q},br:{x:w.ml.x+q,y:w.ml.y+x}};w.mt.corner={tl:{x:w.mt.x-q,y:w.mt.y-x},tr:{x:w.mt.x+x,y:w.mt.y-q},bl:{x:w.mt.x-x,y:w.mt.y+q},br:{x:w.mt.x+q,y:w.mt.y+x}};w.mr.corner={tl:{x:w.mr.x-q,y:w.mr.y-x},tr:{x:w.mr.x+x,y:w.mr.y-q},bl:{x:w.mr.x-x,y:w.mr.y+q},br:{x:w.mr.x+q,y:w.mr.y+x}};w.mb.corner={tl:{x:w.mb.x-q,y:w.mb.y-x},tr:{x:w.mb.x+x,y:w.mb.y-q},bl:{x:w.mb.x-x,y:w.mb.y+q},br:{x:w.mb.x+q,y:w.mb.y+x}};var t=40;w.mtr.corner={tl:{x:w.mtr.x-q+(v*t),y:w.mtr.y-x-(u*t)},tr:{x:w.mtr.x+x+(v*t),y:w.mtr.y-q-(u*t)},bl:{x:w.mtr.x-x+(v*t),y:w.mtr.y+q-(u*t)},br:{x:w.mtr.x+q+(v*t),y:w.mtr.y+x-(u*t)}};var s=(-t-this.currentHeight);w.mbr.corner={tl:{x:w.mbr.x-q+(v*s),y:w.mbr.y-x-(u*s)},tr:{x:w.mbr.x+x+(v*s),y:w.mbr.y-q-(u*s)},bl:{x:w.mbr.x-x+(v*s),y:w.mbr.y+q-(u*s)},br:{x:w.mbr.x+q+(v*s),y:w.mbr.y+x-(u*s)}}},toGrayscale:function(){var i=this.get("fill");if(i){this.set("overlayFill",new d.Color(i).toGrayscale().toRgb())}return this},complexity:function(){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;i||(i={});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,byValue:i.by,easing:i.easing,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.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")},setRadius:function(f){this.radius=f;this.set("width",f*2).set("height",f*2)},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},toObject:function(){return c.util.object.extend(this.callSuper("toObject"),{rx:this.get("rx")||0,ry:this.get("ry")||0})},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,{active:false,bordervisibility:false,cornervisibility:false,type:"image",initialize:function(d,c){c||(c={});this.callSuper("initialize",c);this._initElement(d);this._originalImage=this.getElement();this._initConfig(c);this.filters=[];if(c.filters){this.filters=c.filters;this.applyFilters()}},getElement:function(){return this._element},setElement:function(c){this._element=c;this._initConfig();return this},getOriginalSize:function(){var c=this.getElement();return{width:c.width,height:c.height}},setBorderVisibility:function(c){this._resetWidthHeight();this._adjustWidthHeightToBorders(showBorder);this.setCoords()},setCornersVisibility:function(c){this.cornervisibility=!!c},render:function(c,d){c.save();if(!d){this.transform(c)}this._render(c);if(this.active&&!d){this.drawBorders(c);this.hideCorners||this.drawCorners(c)}c.restore()},toObject:function(){return b(this.callSuper("toObject"),{src:this._originalImage.src||this._originalImage._src,filters:this.filters.concat()})},toSVG:function(){return''},getSrc:function(){return this.getElement().src||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(c){c.drawImage(this.getElement(),-this.width/2,-this.height/2,this.width,this.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.prototype.getSvgSrc=fabric.Image.prototype.getSrc;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.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var a=this.get("angle");if(a>-225&&a<=-135){return -180}else{if(a>-135&&a<=-45){return -90}else{if(a>-45&&a<=45){return 0}else{if(a>45&&a<=135){return 90}else{if(a>135&&a<=225){return 180}else{if(a>225&&a<=315){return 270}else{if(a>315){return 360}}}}}}}return 0},straighten:function(){var a=this._getAngleValueForStraighten();this.setAngle(a);return this},fxStraighten:function(b){b=b||{};var c=function(){},d=b.onComplete||c,a=b.onChange||c,e=this;fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(f){e.setAngle(f);a()},onComplete:function(){e.setCoords();d()},onStart:function(){e.setActive(false)}});return this}});fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(a){a.straighten();this.renderAll();return this},fxStraightenObject:function(a){a.fxStraighten({onChange:this.renderAll.bind(this)});return 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(f){var h=Cufon.textOptions||(Cufon.textOptions={});h.left=this.left;h.top=this.top;h.context=f;h.color=this.fill;var g=this._initDummyElement();this.transform(f);Cufon.replaceElement(g,{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=h.width;this.height=h.height;this._totalLineHeight=h.totalLineHeight;this._fontAscent=h.fontAscent;this._boundaries=h.boundaries;this._shadowOffsets=h.shadowOffsets;this._shadows=h.shadows||[];this.setCoords()},_initDummyElement:function(){var g=c.document.createElement("pre"),f=c.document.createElement("div");f.appendChild(g);if(typeof G_vmlCanvasManager=="undefined"){g.innerHTML=this.text}else{g.innerText=this.text.replace(/\r?\n/gi,"\r")}g.style.fontSize=this.fontSize+"px";g.style.letterSpacing="normal";return g},render:function(f,g){f.save();this._render(f);if(!g&&this.active){this.drawBorders(f);this.hideCorners||this.drawCorners(f)}f.restore()},toObject:function(){return e(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 i=this.text.split(/\r?\n/),j=-this._fontAscent-((this._fontAscent/5)*this.lineHeight),g=-(this.width/2),f=(this.height/2)-(i.length*this.fontSize)-this._totalLineHeight,h=this._getSVGTextAndBg(j,g,i),k=this._getSVGShadows(j,i);f+=((this._fontAscent/5)*this.lineHeight);return['',h.textBgRects.join(""),"',k.join(""),h.textSpans.join(""),"",""].join("")},_getSVGShadows:function(h,n){var o=[],k,l,p,g,f=1;for(k=0,p=this._shadows.length;k",c.util.string.escapeXml(n[l]),"");f=1}else{f++}}}return o},_getSVGTextAndBg:function(j,h,n){var g=[],k=[],l,m,o,f=1;for(l=0,o=n.length;l",c.util.string.escapeXml(n[l]),"");f=1}else{f++}if(!this.backgroundColor){continue}k.push("')}return{textSpans:g,textBgRects:k}},_getFillAttributes:function(f){var g=f?new c.Color(f):"";if(!g||!g.getSource()||g.getAlpha()===1){return'fill="'+f+'"'}return'opacity="'+g.getAlpha()+'" fill="'+g.setAlpha(1).toRgb()+'"'},setColor:function(f){this.set("fill",f);return this},setFontsize:function(f){this.set("fontSize",f);this.setCoords();return this},getText:function(){return this.text},setText:function(f){this.set("text",f);this.setCoords();return this},set:function(f,g){if(typeof f=="object"){for(var h in f){this.set(h,f[h])}}else{this[f]=g;if(f==="fontFamily"&&this.path){this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+g+"$3")}}return this}});c.Text.fromObject=function(f){return new c.Text(f.text,d(f))};c.Text.fromElement=function(f){}})(typeof exports!="undefined"?exports:this);(function(){if(typeof document!="undefined"&&typeof window!="undefined"){return}var DOMParser=new require("xmldom").DOMParser,URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;function request(url,encoding,callback){var oURL=URL.parse(url),client=HTTP.createClient(oURL.port,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");img._src=url;callback(img)})};fabric.loadSVGFromURL=function(url,callback){url=url.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();request(url,"",function(body){var doc=new DOMParser().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 79e1ea4897a9bafebfb062bc87d6b84e85fd8a30..7fec9c032d5241b6ae540783a877af61ebfe461f 100644 GIT binary patch delta 18420 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 S4B6MH_5T4KxaM{+3IYJ=^-Zz> diff --git a/package.json b/package.json index 443bb7e0..b850037b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "fabric", "description": "Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.", - "version": "0.8.21", + "version": "0.8.22", "author": "Juriy Zaytsev ", "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 2e4624eb..46789799 100644 --- a/src/canvas.class.js +++ b/src/canvas.class.js @@ -206,6 +206,7 @@ if (this.isDrawingMode && this._isCurrentlyDrawing) { this._finalizeDrawingPath(); + this.fire('mouse:up', { e: e }); return; } @@ -281,6 +282,7 @@ // capture coordinates immediately; this allows to draw dots (when movement never occurs) this._captureDrawingPath(e); + this.fire('mouse:down', { e: e }); return; } @@ -348,6 +350,7 @@ if (this._isCurrentlyDrawing) { this._captureDrawingPath(e); } + this.fire('mouse:move', { e: e }); return; }