From bb389e47235c24528423ae99e3809e16222f6f5c Mon Sep 17 00:00:00 2001 From: kangax Date: Thu, 7 Jun 2012 12:47:15 +0200 Subject: [PATCH] Removing active object now fires "selection:cleared" events. Closes #121. --- dist/all.js | 12 ++++++++---- dist/all.min.js | 2 +- dist/all.min.js.gz | Bin 38930 -> 39048 bytes src/static_canvas.class.js | 4 ++++ 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/dist/all.js b/dist/all.js index 9f4f4b7c..d627ddc5 100644 --- a/dist/all.js +++ b/dist/all.js @@ -2004,7 +2004,7 @@ fabric.Observable = { } }; } - + if (!Array.prototype.map) { Array.prototype.map = function(fn, context) { var result = [ ]; @@ -5414,7 +5414,11 @@ fabric.util.string = { remove: function (object) { removeFromArray(this._objects, object); if (this.getActiveObject() === object) { + + // removing active object should fire "selection:cleared" events + this.fire('before:selection:cleared', { target: object }); this.discardActiveObject(); + this.fire('selection:cleared'); } this.renderAll(); return object; @@ -7753,7 +7757,7 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, { return this; }, - /** + /** * Returns width of an object's bounding rectangle * @method getBoundingRectWidth * @return {Number} width value @@ -7776,7 +7780,7 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, { var maxY = fabric.util.array.max(yCoords); return Math.abs(minY - maxY); }, - + /** * Draws borders of an object's bounding box. * Requires public properties: width, height @@ -7978,7 +7982,7 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, { if (!el.getContext && typeof G_vmlCanvasManager != 'undefined') { G_vmlCanvasManager.initElement(el); } - + el.width = this.getBoundingRectWidth(); el.height = this.getBoundingRectHeight(); diff --git a/dist/all.min.js b/dist/all.min.js index 40da4f9e..0f361cbc 100644 --- a/dist/all.min.js +++ b/dist/all.min.js @@ -4,4 +4,4 @@ var fabric=fabric||{version:"0.8.15"};if(typeof exports!="undefined"){exports.fa * Copyright (c) 2009 Simo Kinnunen. * Licensed under the MIT license. */ -var Cufon=(function(){var k=function(){return k.replace.apply(null,arguments)};var u=k.DOM={ready:(function(){var z=false,B={loaded:1,complete:1};var y=[],A=function(){if(z){return}z=true;for(var C;C=y.shift();C()){}};if(fabric.document.addEventListener){fabric.document.addEventListener("DOMContentLoaded",A,false);fabric.window.addEventListener("pageshow",A,false)}if(!fabric.window.opera&&fabric.document.readyState){(function(){B[fabric.document.readyState]?A():setTimeout(arguments.callee,10)})()}if(fabric.document.readyState&&fabric.document.createStyleSheet){(function(){try{fabric.document.body.doScroll("left");A()}catch(C){setTimeout(arguments.callee,1)}})()}o(fabric.window,"load",A);return function(C){if(!arguments.length){A()}else{z?C():y.push(C)}}})()};var l=k.CSS={Size:function(z,y){this.value=parseFloat(z);this.unit=String(z).match(/[a-z%]*$/)[0]||"px";this.convert=function(A){return A/y*this.value};this.convertFrom=function(A){return A/this.value*y};this.toString=function(){return this.value+this.unit}},getStyle:function(y){return new a(y.style)},quotedList:i(function(B){var A=[],z=/\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g,y;while(y=z.exec(B)){A.push(y[3]||y[1])}return A}),ready:(function(){var A=false;var z=[],B=function(){A=true;for(var D;D=z.shift();D()){}};var y=Object.prototype.propertyIsEnumerable?f("style"):{length:0};var C=f("link");u.ready(function(){var G=0,F;for(var E=0,D=C.length;F=C[E],E=y.length+G){B()}else{setTimeout(arguments.callee,10)}});return function(D){if(A){D()}else{z.push(D)}}})(),supports:function(A,z){var y=fabric.document.createElement("span").style;if(y[A]===undefined){return false}y[A]=z;return y[A]===z},textAlign:function(B,A,y,z){if(A.get("textAlign")=="right"){if(y>0){B=" "+B}}else{if(y400}if(F==500){F=400}for(var G in D){G=parseInt(G,10);if(!C||GA){A=G}H.push(G)}if(FA){F=A}H.sort(function(J,I){return(B?(J>F&&I>F)?JI:(JI:JV){V=Q}if(P>T){T=P}if(Qz){z=e}L.push(e);e=0;continue}var B=ab.glyphs[ag[aa]]||ab.missingGlyph;if(!B){continue}e+=D=Number(B.w||ab.w)+U}L.push(e);e=Math.max(z,e);var m=[];for(var aa=L.length;aa--;){m[aa]=e-L[aa]}if(D===null){return null}V+=(H.width-D);C+=H.minX;var v,p;if(n){v=J;p=J.firstChild}else{v=fabric.document.createElement("span");v.className="cufon cufon-canvas";v.alt=E;p=fabric.document.createElement("canvas");v.appendChild(p);if(A.printable){var Y=fabric.document.createElement("span");Y.className="cufon-alt";Y.appendChild(fabric.document.createTextNode(E));v.appendChild(Y)}}var ah=v.style;var O=p.style||{};var k=o.convert(H.height-I+T);var af=Math.ceil(k);var S=af/k;p.width=Math.ceil(o.convert(e+V-C)*S);p.height=af;I+=H.minY;O.top=Math.round(o.convert(I-ab.ascent))+"px";O.left=Math.round(o.convert(C))+"px";var j=Math.ceil(o.convert(e*S));var t=j+"px";var s=o.convert(ab.height);var F=(A.lineHeight-1)*o.convert(-ab.ascent/5)*(M-1);Cufon.textOptions.width=j;Cufon.textOptions.height=(s*M)+F;Cufon.textOptions.lines=M;Cufon.textOptions.totalLineHeight=F;if(a){ah.width=t;ah.height=s+"px"}else{ah.paddingLeft=t;ah.paddingBottom=(s-1)+"px"}var ad=Cufon.textOptions.context||p.getContext("2d"),K=af/H.height;Cufon.textOptions.fontAscent=ab.ascent*K;Cufon.textOptions.boundaries=null;for(var w=Cufon.textOptions.shadowOffsets,aa=R.length;aa--;){w[aa]=[R[aa][0]*K,R[aa][1]*K]}ad.save();ad.scale(K,K);ad.translate(-C-((1/K*p.width)/2)+(Cufon.fonts[ab.family].offsetLeft||0),-I-(Cufon.textOptions.height/K)/2);ad.lineWidth=ab.face["underline-thickness"];ad.save();function q(l,i){ad.strokeStyle=i;ad.beginPath();ad.moveTo(0,l);ad.lineTo(e,l);ad.stroke()}var r=Cufon.getTextDecoration(A),u=A.fontStyle==="italic";function ae(){ad.save();ad.fillStyle=A.backgroundColor;var aj=0,an=0,y=[{left:0}];if(A.textAlign==="right"){ad.translate(m[an],0);y[0].left=m[an]*K}else{if(A.textAlign==="center"){ad.translate(m[an]/2,0);y[0].left=m[an]/2*K}}for(var al=0,ak=ag.length;al.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}');function c(e,f){return a(e,/(?:em|ex|%)$/i.test(f)?"1em":f)}function a(h,i){if(/px$/i.test(i)){return parseFloat(i)}var g=h.style.left,f=h.runtimeStyle.left;h.runtimeStyle.left=h.currentStyle.left;h.style.left=i;var e=h.style.pixelLeft;h.style.left=g;h.runtimeStyle.left=f;return e}return function(T,z,O,w,D,U,M){var h=(z===null);if(h){z=D.alt}var B=T.viewBox;var j=O.computedFontSize||(O.computedFontSize=new Cufon.CSS.Size(c(U,O.get("fontSize"))+"px",T.baseSize));var L=O.computedLSpacing;if(L==undefined){L=O.get("letterSpacing");O.computedLSpacing=L=(L=="normal")?0:~~j.convertFrom(a(U,L))}var t,m;if(h){t=D;m=D.firstChild}else{t=fabric.document.createElement("span");t.className="cufon cufon-vml";t.alt=z;m=fabric.document.createElement("span");m.className="cufon-vml-canvas";t.appendChild(m);if(w.printable){var R=fabric.document.createElement("span");R.className="cufon-alt";R.appendChild(fabric.document.createTextNode(z));t.appendChild(R)}if(!M){t.appendChild(fabric.document.createElement("cvml:shape"))}}var Z=t.style;var G=m.style;var f=j.convert(B.height),W=Math.ceil(f);var K=W/f;var J=B.minX,I=B.minY;G.height=W;G.top=Math.round(j.convert(I-T.ascent));G.left=Math.round(j.convert(J));Z.height=j.convert(T.height)+"px";var p=Cufon.getTextDecoration(w);var y=O.get("color");var X=Cufon.CSS.textTransform(z,O).split("");var e=0,H=0,q=null;var x,r,A=w.textShadow;for(var S=0,Q=0,P=X.length;St?m:(l-k);p(q(currentTime,j,byValue,m));if(l>t||n()){u.onComplete&&u.onComplete();return}h(o)})()}var h=(function(){return fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(k,j){fabric.window.setTimeout(k,1000/60)}})();function a(k,m,l){if(k){var j=new Image();j.onload=function(){m&&m.call(l,j);j=j.onload=null};j.src=k}else{m&&m.call(l,k)}}fabric.util.removeFromArray=g;fabric.util.degreesToRadians=b;fabric.util.toFixed=d;fabric.util.getRandomInt=e;fabric.util.falseFunction=i;fabric.util.animate=c;fabric.util.requestAnimFrame=h;fabric.util.loadImage=a})();(function(){var d=Array.prototype.slice;if(!Array.prototype.indexOf){Array.prototype.indexOf=function(g){if(this===void 0||this===null){throw new TypeError()}var h=Object(this),e=h.length>>>0;if(e===0){return -1}var i=0;if(arguments.length>0){i=Number(arguments[1]);if(i!==i){i=0}else{if(i!==0&&i!==(1/0)&&i!==-(1/0)){i=(i>0||-1)*Math.floor(Math.abs(i))}}}if(i>=e){return -1}var f=i>=0?i:Math.max(e-Math.abs(i),0);for(;f>>0;f>>0;g>>0;f>>0;f>>0;g>>0,f=0,h;if(arguments.length>1){h=arguments[1]}else{do{if(f in this){h=this[f++];break}if(++f>=e){throw new TypeError()}}while(true)}for(;f=e){e=h[f][g]}}}else{while(f--){if(h[f]>=e){e=h[f]}}}return e}function c(h,g){if(!h||h.length===0){return undefined}var f=h.length-1,e=g?h[f][g]:h[f];if(g){while(f--){if(h[f][g]",">")}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;if(c){b=function(g,i){if(i.toString!==Object.prototype.toString){g.prototype.toString=i.toString}if(i.valueOf!==Object.prototype.valueOf){g.prototype.valueOf=i.valueOf}for(var h in i){g.prototype[h]=i[h]}}}else{b=function(g,i){for(var h in i){g.prototype[h]=i[h]}}}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;v=v.split(/\s+/);var t=[];if(x){for(var u=0,s=v.length;u/i,""))}if(!v.documentElement){return}g.parseSVGDocument(v.documentElement,function(y,x){j.set(s,{objects:g.util.array.invoke(y,"toObject"),options:x});u(y,x)})}}function a(u){var t=u.objects,s=u.options;t=t.map(function(v){return g[e(v.type)].fromObject(v)});return({objects:t,options:s})}function m(s,v){s=s.trim();var t;if(typeof DOMParser!=="undefined"){var u=new DOMParser();if(u&&u.parseFromString){t=u.parseFromString(s,"text/xml")}}else{if(g.window.ActiveXObject){var t=new ActiveXObject("Microsoft.XMLDOM");t.async="false";t.loadXML(s.replace(//i,""))}}g.parseSVGDocument(t.documentElement,function(x,w){v(x,w)})}function l(v){var t="";for(var u=0,s=v.length;u",'",""].join("")}return t}o(g,{parseAttributes:d,parseElements:f,parseStyleAttribute:h,parsePointsAttribute:r,getCSSRules:c,loadSVGFromURL:b,loadSVGFromString:m,createSVGFontFacesMarkup:l})})(typeof exports!="undefined"?exports:this);(function(){function c(h){var g=h.getAttribute("style");if(g){var k=g.split(/\s*;\s*/);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.discardActiveObject()}this.renderAll();return g},sendToBack:function(g){e(this._objects,g);this._objects.unshift(g);return this.renderAll()},bringToFront:function(g){e(this._objects,g);this._objects.push(g);return this.renderAll()},sendBackwards:function(j){var h=this._objects.indexOf(j),g=h;if(h!==0){for(var k=h-1;k>=0;--k){if(j.intersectsWithObject(this._objects[k])||j.isContainedWithinObject(this._objects[k])){g=k;break}}e(this._objects,j);this._objects.splice(g,0,j)}return this.renderAll()},bringForward:function(k){var n=this.getObjects(),h=n.indexOf(k),g=h;if(h!==n.length-1){for(var m=h+1,j=this._objects.length;m"};f(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(l){var k=l.getContext("2d"),g=k.getImageData(0,0,l.width,l.height),p=g.data,m=g.width,r=g.height,q,h,o,n;for(o=0;o0)?0:-v),r.ey-((u>0)?0:-u),t,s);this.contextTop.lineWidth=this.selectionLineWidth;this.contextTop.strokeStyle=this.selectionBorderColor;this.contextTop.strokeRect(r.ex+a-((v>0)?0:t),r.ey+a-((u>0)?0:s),t,s)},_findSelectedObjects:function(x){var y,t,D=[],s=this._groupSelector.ex,C=this._groupSelector.ey,r=s+this._groupSelector.left,A=C+this._groupSelector.top,z,w=new fabric.Point(f(s,r),f(C,A)),B=new fabric.Point(l(s,r),l(C,A));for(var u=0,v=this._objects.length;u1){var D=new fabric.Group(D);this.setActiveGroup(D);D.saveCoords();this.fire("selection:created",{target:D})}}this.renderAll()},findTarget:function(v,s){var u,w=this.getPointer(v);var t=this.getActiveGroup();if(t&&!s&&this.containsPoint(v,t)){u=t;return u}for(var r=this._objects.length;r--;){if(this._objects[r]&&this.containsPoint(v,this._objects[r])){u=this._objects[r];this.relatedTarget=u;break}}if(u&&u.selectable){return u}},getPointer:function(r){var s=q(r);return{x:s.x-this._offset.left,y:s.y-this._offset.top}},_createUpperCanvas:function(){this.upperCanvasEl=this._createCanvasElement();this.upperCanvasEl.className="upper-canvas";this.wrapperEl.appendChild(this.upperCanvasEl);this._applyCanvasStyle(this.upperCanvasEl);this.contextTop=this.upperCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=fabric.util.wrapElement(this.lowerCanvasEl,"div",{"class":this.CONTAINER_CLASS});fabric.util.setStyle(this.wrapperEl,{width:this.getWidth()+"px",height:this.getHeight()+"px",position:"relative"});fabric.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(s){var t=this.getWidth()||s.width,r=this.getHeight()||s.height;fabric.util.setStyle(s,{position:"absolute",width:t+"px",height:r+"px",left:0,top:0});s.width=t;s.height=r;fabric.util.makeElementUnselectable(s)},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=this.__clone||(this.__clone=new fabric.Canvas(a));b.clipTo=this.clipTo;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;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",filters:[],initialize:function(d,c){c||(c={});this.callSuper("initialize",c);this._initElement(d);this._originalImage=this.getElement();this._initConfig(c);if(c.filters){this.filters=c.filters;this.applyFilters()}},getElement:function(){return this._element},setElement:function(c){this._element=c;this._initConfig();return this},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(80,oURL.hostname),request=client.request("GET",oURL.pathname,{host:oURL.hostname});client.addListener("error",function(err){if(err.errno===process.ECONNREFUSED){fabric.log("ECONNREFUSED: connection refused to "+client.host+":"+client.port)}else{fabric.log(err.message)}});request.end();request.on("response",function(response){var body="";if(encoding){response.setEncoding(encoding)}response.on("end",function(){callback(body)});response.on("data",function(chunk){if(response.statusCode==200){body+=chunk}})})}fabric.util.loadImage=function(url,callback){request(url,"binary",function(body){var img=new Image();img.src=new Buffer(body,"binary");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;St?m:(l-k);p(q(currentTime,j,byValue,m));if(l>t||n()){u.onComplete&&u.onComplete();return}h(o)})()}var h=(function(){return fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(k,j){fabric.window.setTimeout(k,1000/60)}})();function a(k,m,l){if(k){var j=new Image();j.onload=function(){m&&m.call(l,j);j=j.onload=null};j.src=k}else{m&&m.call(l,k)}}fabric.util.removeFromArray=g;fabric.util.degreesToRadians=b;fabric.util.toFixed=d;fabric.util.getRandomInt=e;fabric.util.falseFunction=i;fabric.util.animate=c;fabric.util.requestAnimFrame=h;fabric.util.loadImage=a})();(function(){var d=Array.prototype.slice;if(!Array.prototype.indexOf){Array.prototype.indexOf=function(g){if(this===void 0||this===null){throw new TypeError()}var h=Object(this),e=h.length>>>0;if(e===0){return -1}var i=0;if(arguments.length>0){i=Number(arguments[1]);if(i!==i){i=0}else{if(i!==0&&i!==(1/0)&&i!==-(1/0)){i=(i>0||-1)*Math.floor(Math.abs(i))}}}if(i>=e){return -1}var f=i>=0?i:Math.max(e-Math.abs(i),0);for(;f>>0;f>>0;g>>0;f>>0;f>>0;g>>0,f=0,h;if(arguments.length>1){h=arguments[1]}else{do{if(f in this){h=this[f++];break}if(++f>=e){throw new TypeError()}}while(true)}for(;f=e){e=h[f][g]}}}else{while(f--){if(h[f]>=e){e=h[f]}}}return e}function c(h,g){if(!h||h.length===0){return undefined}var f=h.length-1,e=g?h[f][g]:h[f];if(g){while(f--){if(h[f][g]",">")}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;if(c){b=function(g,i){if(i.toString!==Object.prototype.toString){g.prototype.toString=i.toString}if(i.valueOf!==Object.prototype.valueOf){g.prototype.valueOf=i.valueOf}for(var h in i){g.prototype[h]=i[h]}}}else{b=function(g,i){for(var h in i){g.prototype[h]=i[h]}}}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;v=v.split(/\s+/);var t=[];if(x){for(var u=0,s=v.length;u/i,""))}if(!v.documentElement){return}g.parseSVGDocument(v.documentElement,function(y,x){j.set(s,{objects:g.util.array.invoke(y,"toObject"),options:x});u(y,x)})}}function a(u){var t=u.objects,s=u.options;t=t.map(function(v){return g[e(v.type)].fromObject(v)});return({objects:t,options:s})}function m(s,v){s=s.trim();var t;if(typeof DOMParser!=="undefined"){var u=new DOMParser();if(u&&u.parseFromString){t=u.parseFromString(s,"text/xml")}}else{if(g.window.ActiveXObject){var t=new ActiveXObject("Microsoft.XMLDOM");t.async="false";t.loadXML(s.replace(//i,""))}}g.parseSVGDocument(t.documentElement,function(x,w){v(x,w)})}function l(v){var t="";for(var u=0,s=v.length;u",'",""].join("")}return t}o(g,{parseAttributes:d,parseElements:f,parseStyleAttribute:h,parsePointsAttribute:r,getCSSRules:c,loadSVGFromURL:b,loadSVGFromString:m,createSVGFontFacesMarkup:l})})(typeof exports!="undefined"?exports:this);(function(){function c(h){var g=h.getAttribute("style");if(g){var k=g.split(/\s*;\s*/);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=this.__clone||(this.__clone=new fabric.Canvas(a));b.clipTo=this.clipTo;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;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",filters:[],initialize:function(d,c){c||(c={});this.callSuper("initialize",c);this._initElement(d);this._originalImage=this.getElement();this._initConfig(c);if(c.filters){this.filters=c.filters;this.applyFilters()}},getElement:function(){return this._element},setElement:function(c){this._element=c;this._initConfig();return this},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(80,oURL.hostname),request=client.request("GET",oURL.pathname,{host:oURL.hostname});client.addListener("error",function(err){if(err.errno===process.ECONNREFUSED){fabric.log("ECONNREFUSED: connection refused to "+client.host+":"+client.port)}else{fabric.log(err.message)}});request.end();request.on("response",function(response){var body="";if(encoding){response.setEncoding(encoding)}response.on("end",function(){callback(body)});response.on("data",function(chunk){if(response.statusCode==200){body+=chunk}})})}fabric.util.loadImage=function(url,callback){request(url,"binary",function(body){var img=new Image();img.src=new Buffer(body,"binary");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 8fd32df0156cef809154f2f3b61a6b2c4dc4c191..fa0f512c54c458c0447b679f3c42537deb245f24 100644 GIT binary patch delta 18455 zcmV(*K;FNSumXs&0tO$82nc|Nu?AO7f7CtC#9oIU_?nvFY!Y2;%PofL&9#>RNs;!7 zNFuH)Ur9OXFhr^5w0AZm=d_Ou$DNMllw-aRor~CRWFtDL7;rXwozA?Mkwj0A!~4iynd|(=uQ*+q+Wk|NL3F^k=~mj9ogS2XF>2q#!_^aKX~MHKF|#y9^W3RD z8&~-)4F`GApOlh*_V`iWDL5?Fe<~?I`F4?E$h8Vo@iUUfH#3h>C4!zw$)=$^7tY6G-hb6B;odPaV1e4h^ z>-R8Puo81j-(u1!Bt@+)We`JpW!^#(mhs}G!_Ac3S+F1I+kY!zD7rNOf2G)#GKo6$ z3EzVc4~dL-NPLaONGd*u_dC*-e2tFwh8uE2vrWT9E2_r14HNv^ky5Q@wV+ViUD^Ag z8br;?eMOPp6$#>OGhXUyP}w{WO0;Ce{j0Y>oqhUD{K@XUl-OlKvvPhRDuKCRAtks) z_0C|kTdadR)|MN&XFIxMe<6|P8(9nzE2>vp^$;78@9-XEi%C3`nJN5|bjMtb#7s=- zxnl;nb#^pq&G5FygefFUkJ8o@6XtO^+xs@!ORM1&{QbMXE|AP@+CS0Pkg0+^c6l~e?LIU!^5-0nsm?2 zt90=0FG@=)DcG>m&+SP1xwV%pXsQ!rJ^Jfhx8v-iR*N$HqKT1mc;#fA?TEY-i8`_J_aBtm;QmIdq)b6LPXL!(Pe~1eGbNJnNqSB~;69oqH z{sH zzKzwFJhXxM@c!)h?9Kak8V)^IWutbI0`U8HXUA{eVI@BvfBe{#_^{U1PjSLuy!^|g z3@xsm`g1(Qe*$s3onejWx1W^3Yd-IjpNGBqRjDMn+BJ;Ye>QZAqj&S_h8+7T@vWmU zXaV>#7*>F3<>(^o9Kb24f41|`5pXW@wzvsq zvluO-_wSFoj31(bQyA?pV2G^Q$}>d#wEe%teW6yT*_H;OvF}f23Nwjc-%_j`i6yfW z#^mF*f6P@F9;h&~D3HlgkwIEOs5*1^fQ>-&xndcob(VaQ3&;9r=xWEhiv4bcg+VmdZ@%gQ8H{*HGR$Mz>EnN0zP8O)RHl+B>5efEqBufZQgMyTQbg zy(5-pJ7yy^8#+OWkx_5B)v7Pxi(S-}JO*_F? z3AjOju6faZ?nLnQq0Yn&oQYfKOuTiTGHy#Q0+YPuE-2i?8*7IuMD6Sznm80be`9zb z8AD)>n?EC^g7{8(e3Gk7skIEa_!d6JUjx9}1wi+XkiWK3)ET)VRV(mp+qJZe^YONYa#+jc~ch&T*480SSlkm;5-X#`1|s5EMQdX91anr^JaM)>BdItpQVJ#*x&YO&*xJbr3+=WK1PF!?vRdgg zQBFPLpzYm}1kKZXqqp&+lf?n7{*`_CvabAA))x`1g8zg5d@AqH`cLc+e*@_tWZRcu zB8jsn?}q#>u(4GM`5Iu3Aa@NYEmzNv7-9z%&LvMiNCf$L3jHABU*+A1J3RbLI{ZsG z{EYPB=2oI-6j5Oy%^4G=NQ%gN{RBl%(yIb-Kx&#bAa2GSQom$0R;1PWxG z*U`=!;Fvtzgl99XS`?P$D9x5(j{jPdD=}7YG&y+vdQ({DqH_@l*g zjsas8WH4`W3ifSe9M3&$1vQnU(%4%$#NR`I7l|W?Yjf>i?2;e71>Z{%0 zPh(uVjt^R^I6GfsFu`LCDM{faRSiEvv6U=-C(CY5f8rCZ8;NN41h3Y&l?MF(NBTE# zBu+~kr_pMhM6D&+qOpu{DVMn9aH#Aj9SB6>ORU~9L%6Mmi`s3pe;8Q?1UJ<%t=*`^ zCs~VPpc(5PpwA_VNj#$6I!(eQ$;v2n6l2V~S14w|2b

9x{6bX|3!oXNn^7%74=3 z*;rzGfALR5%^B9l?*2<4*0&Bo??bK&h~LbT%HLAAJ~BV_8;0DnzCU?_$!VB`D3Pg= z#HMykq|RYfrPNi8B|VT#^vYp`ECv>NnTJpFz^z;JD4@g$&+broZ1?ct;g;u35}1II z_}AWY{|4)@yYB*j(!iexSd#&F6o4Y&znBwBSPwUN+uO1b zd*vTn_Zw&3Nj|5<9M}b>s?m|Qg9>K$3g6I**^7I_CPJ`_X5pO!m3km8-5T$6q=W+z z-qw~;HDkh9GAS(7%F{3fqB|uaOYM?c99F>jF3P2VQrNdBkh--Tj#JCU$_QYdxo6J` ze;C`Ho$y)u@L+RnHz;*}0uM|bT>2ffHA3`;TjHa~!~&h1FE324VX~H*$?~f8bV#JY zqbknL<;h@~P`EUf(9ioHUA#(N<+-b&d#mng7f8j2# z-L7+uz~8bczLOv1-0uF)XW&|=Or_mPTk=z5e{xV_B6^C!npfs3QAM5~@JgQM`Onj0 zR`V2_w>ifW`x2jRKHU^NNNt3{R+hejkOqWHahqdDo!Mb zP0J3mqNg#jZe|59VjJzx%2I>Nu~^P^r|5%nw^i=#NWr}^@>LvAhVnnfu*O>udr&_a zCF5R^t0KwJ6+5OX0yVg>=+4f&q$if~D_yxqRCW-V6J-YA_Yd>9>%}vW0pF!N-|l3y@p91*lnB%rddgp{VZiDJ z8zdX0s{@*_G^Q+``{BeV#>SGRAyb{xvuc z1JjTbWj@7uQYMK5S2CIv_)vPp16RIFWTfOv677<_idJ{uAN$$QqU8prc5_SPMNi#AGfegl@Bye`6gdik%g`6$i2kOz_K8F zlA&4aGAyYHgN7=yri&b0q4#PG;D}F?x>%q+S~JLb_oApPkW55Msj6Gq_zDWxe~)>8e*N3$)1N;OBij6~(GY{xNwFi7j_3kaA9o)f?l&?Fh22Gg z5k*XZ`iF;}XmbiFg5oy^ZE#(2PLl~Lncb6SFuAB`c5q)xDPJUD2%M~Ttm8OE^p@MylJ4!9GkKM@O%RNZ%>zWv|vwJW9$5U#42*5bW!})X;dwK(Nqr9%WkJ|A~$~k1)$4o z#5=_veAJh^D~`nWwR^xGKOPM%o{aW4&Af2X8qBduJ?Q%KO{{c!Fu6I86; zZC@t~dQMaYFDSHxa!FuZqF+b%!|)n94Lgt6b8XQo<1=q*W74MEy`jFIG^GZaw{t(#^vg$3P2P6>L+n<1V^&uOxaGstv@+>%DS4kI85{XB)l zeh?gEpZW~AtTyU}1n1oQ%6m+?z`ayxV=xS_u=4`Q1~~wkvT>#YIlXS0TrXg5FD0PN z$7x4*KQIvV182?sTwK!#=AJNa=0BV=MLUNHe>RT>vv_{qxY!gd5d}S(*+Gx|sv>t| z6s)5;aB>-aQ}%*|-fZ+r;{y{SifGg25H^vSjbYfWPXJe;A0q%$h}lQTy<&vypx!S+ zyd2M*ZcPWn<}s_a{N3%SI>9)4Ip<8>qSzEUIMMY3Q*@)K)h+WOmMgCuh~-Ks2V%Jr ze>#T30K?|=3MdtCPV9T6uOh-T<{uIS0e;>3hI@$-!Y}$8%A9dig8Yhb$2@xi zK~+{MSx@%rB~=h9MvYK0YX|cFYcmGmSxW}&MqT?xp5fcsVgxvx+>J#IsWn0=O5p^eRI}q)DJkG(@!bV6pI9k z6Z2R>zPmzeE*riu1FumukklO z=2k4dD1!O0gz_DF1SYGt*KK?*tt^zz#@jY5!m46~+CfAfvtXZAfG4yqfAXY6y`hBZ z4W-VCK-WH;g7eZ0ILKZN=P?l0Y;rg(o=f|;a+1NFlh^F8 zqyChQkznb+6}ia+*D5lG~MOyab^4i9+(zVrG zYY{^Cm-J4aAs{_7nPY=&lvMf81*SiUUd*ki6k^7tvxXBG{%_8SOx6h#Ezapsq75H) zT(E@0qvS#b%^m5jcb1g@{7l+ur)a006@ub}Dk>qNq;qbbzr#$-f6p^=w{BL(?Q7n7 z{Y-hQuWQXd`I1Mf^7xDV4JUQhp5jbaIzkSb96ECkSbvK@=)k6f6Er~N`;i6SJlbn8_PPG?k#%Hd?# zCy^)LB&bs<*BgI3e}~gbXE$yVNp%39^;wmw^!WTf>)@Y_Wyv=%18K`=5;e&=zG0&r3{k9uL2#0m@VoJ>6Zk}pV} z?#Wu60U4tC6JFRK&ES9v1Q(XuSsrtNZIwa=-bPfRRRe>y;M%k>!(l|4 z+!hMJ6u2c5banay$N-7Yf@&8SpF{LV7(^HX(>_qBU!?Fm9T`$MdJzOb`7m`untw&?$ma#zMXU`HpSObfy@|7E}kwNt;)JPv@?s-5>S+gS& z^>iD~Eo0h;hq-Oay0eoUQ9T|hD_s-FP32`;VFBlMe*_qgg^sJ zH;wjfVi~}q=f-5S@n&Z@wDn5n{`Q9yOH!3!OP$$l+;2~N**O#6P zgv=N>we^$LM84D*Z8wGnClv2-TUN;lBO~%#9 zzUg$NOZvUtR#e4bV)~x%vwW|e=fI>uJ!tBja*q^1+IsKcKN|bwT=J(kjAz{C4A9685?e&!6=F$3kw&+inS>Jfr43&S) ze=yhX{vqCzh56hZ0cdqd8lZO3Sp=SIL3voBQr($~Wkpq0EyiZg@4vW_BS@xCFC+Op zwp>0o6{L|^n=Yi>snhs=)zsum?N+RtigKyl@Qe8!f}GY@)%?`$t)WiHTNmXWM_m2{ z%cJ+0g1G`9sNl}8KxVFG4Vmmgc@4QPe|R-4x74tIxU~+*R<$JMGeJA68FZ#;kU{r6<{AJz4w-qgnmII`}?f{7joGWrMH%;^>EUANjq+*BPJy(I6mqxA4lG+uf-z#`TqOe^XLF zrISyAQWq^nM7yql@iJsdjGNP5VUFyua`+o2wKU50Jb%S;Q@O6Mb6sEOy6&eysf)r6 zCW!gv_RV!Y$#*@i%~AW&kO8K{Yb&6UVUV4-M~UC1@KON%wRhNBE0S!T7bYq1MNANu zNfQsS4xezc1{PU$4%88am z@u?)&Y>{_bSi@H2<_c@r2k4sZ4PdS8{~Jhku9Z1EeAT{fV1jLhu0{n^f8^Rwl%B$? zp*+pTeCcjXCDn0u=BbhZDeWfeFv8m)Vg_Dc1FBM;l%LI_WOtZUhdgu6u>B_b?S=m z)k!q2ZSk4aw<#|0F(Qp*CBZDz_F|jVTjm((&l)K%FEi!L6fGajE`72aQ4WPqXoQI3uHHLNVcaA~L}AHx~j2q28sJv<%A(g{gK$L2e@a=cB|@ zaz;;cI==0=e`$Am$#b!ka{>ICmz#1fO-9Er+u^c28y&xFhs)A*D8FX&&|Vm{qnd|_ z{**$5M*0rs@gJwoPbpz_n7rU$F^$Vlj6j zvADRR7D~47&9?1(!%KEkxP5PU#ct$^ExpVRmn_=8e>c2dH*))`C(8QjIV7X!#?{dR zepL^Kj)?J zv4#(N%NKKP?L|5e&X&8MD+dgYi%lB_9o{o(Ol~TacPY>5<`Pb-d~HF8oA?g+44)<# z`ZHG$e`jhYvyJav)2q<&siGdR?!+3K5pa;m<}lMEJI0YEr~;ClACtZZZ0;GX$xXDg z13!E8)Ah)}5YJ-+g1-x3R&k8kD~5yb=P~*+U&Zv%TE;hglitOR);i{@YE*f&PhTtg zTA>rZo7&ypZEH?N*R}N?SFr*{3#AYH;av^3f7=pB zZ>nttljp3SeT3$AC~xFIoAj3)Aw#w4C2z6Eisz zZ--6HLQK4cn3#o_cndKx3o%Je%bk479n*5hYq?`u?szSCOv@dw<&J5&BU@%Bf8^T+ zO?$!U`G8f!o4rLOXNzW`7B2Vj@zSgUO-2rIt^hkujXA)o0d#82HC8ffPbuEj6iRKhHNRNsc zdiR~!C;>XK1619rnJj!ie+)aw&${xVZIOE$*gMzGs9f(1x&zJi5?BsWQ8Waf zu=QPdAfi`Sz{omU0waOoP@Oc+wUs|IMfS*0ab&j@pj;|oY6n$R@zd6KK`LSYyjr{1 zuP^%90?3ciD=NOiZc|N^}9`5nqxJc-Mr{lFs-t~f0hrw<&sqO~RZnTNQ5$pJqKyMj; z48+<|W@Q~?hSIUkP|y^9BU|NI#<~&}|#I z<3K9dVPYl8D(x}Q-Mw{13k_9(B?eLbu#HMoAB40nL7F)z)QumC0keEV3}AjvRtlnV zAx#vOa(@_@vH_H^WV5S-Kn%|t7k1i{*l!VkqF*bCB~$fQQeHlW)sTo#sf4Z$`N~>h z=!FBjHI^JIxV3~^=it~ug{;JRDzKs0kuBFybswudJ;(tX5cZ6fg1`i_p+j`q*0DVN z!TX`aT_wE%+RNMTegpOHXL^i!urC_Tu;xCmS-o{3^a!vv`EHo6?a|7L>nc&tV`Mf% zu-}?n&KKnA2Q!^R;Yjp>iW&e}WcN#&?vqV%8X9ZJPN_9y zFO~|0dxvl(bqcN|HU>XQ(k{AelYwy_5?sp|G>X*eGJ`v%&c9%3Ohn_8v2hjxDbth5 zaW8+3Y69DTz8e+Y7u~n4HSBnh-*AJyLvPDr z%A>av8tuz-mdCB#73`Wy%67N-PfZ!+s=t3v$GEzca-0iiG#nsyk+`%|fPKq4%WvUb zAiZ&>(%Eh0RhnYpR3ghOfdBrP{aaT?vfu&(egwpZFMGWo+dvO!=oE{e^@rM*EgWv2A$0 z8|BYZmsc0)^G3rvR9(5IoL7MDy2_7$O|FW*tEkko%8_hjVuX-1X@f4%S)AN7E!~UPnYh5yL>xrNNe_%B7Taj`?FZJ%xH9zE5 zuIc>?ZROajZwux0YCKM^v;0Al>5tJ)66`7G zsL!Cq#|S;8#QjH)QQtmB=?W6+>Bx1<}rXr8^sQSKx)cQ(iwZDbf>stnP2P6ZMecG2DCGQmghBV>8 zp$P|hnh>G8!ok{Y zjglXesj@8e1F6TN4&e-L3kT(5)*}*81bK=?G$n64(n!0BNT`8$r%`|GL8Pa{3_|8d zSE3$n=U00=)EgvzSbbQB%9p=a&ttlO#r{ZOp1SQtcuu$;k=li-9@{GNO`fileL<63e$qzrRO$<`o(|3Tf77}T6Ws2UWzMA`q``YYci$Nzf1b*$ugCIeQ_n|-)f@% zx&m|}bkFV)Vz3I*JJqmuu;&Qnk?>wSIr>(>ETWRCZWkzh?WM0d zou&UOi)}O@SqlACI)DE8tOMip0)ca7?YcAj^R9U<1Za~(N>)YJd$2`YC{`Ou?W3N& zeTqqgzH%IDU8{d+HNiAOUcQZPIE%&|wT5v!95Qh+h*```DzAmxFzmhP=H24KsG7(E z4e4=a%Q41=l)mJqWsT1#7J3e`AbZsNmr)AjcHH*s$D{-5B#(=pQdPzy#DfBR3ITB~ zVN19*T<%`n^Q7I(V;e5*F`5DLyQc~4q>NmaMHDO7PAY#yM^ZK0j&b0Yay+JO#ccVi z6u4JMfv92-pI>Nwg?`*n!isAQfQSmyESqRhoteVKlKPB zaar=xST33=Zfu19(1 zHdL=K_@1R_l+;%yqw8d>H@ZF57yE7)7TgU0T6{HJqIz8tC+2F9i0X3dosfLhonSFz z+zN1Gedt1fg0TtzL_yd%?x@r&{t2lqL+{1onso0YslKb)guh|UwCf-E{VASoy;4S7 zDPw=`W79^4lEE#O0pjq+_BC?_$MCWUnO+@Twyy9%j*G6DtI})cs`Q${J?7jpYK;qTnMv8iOkiRrI5AhwEi<`*isUVG1(S1?zh%Z{x6Ih#EXQAV=QzE?%SNBP zf6ZNEsxQ21CcrAwRWos~nk&F?SNf_!tWbY=)l5pSnwctMT{RO?I#{!kV_M0nTE8)@ z-x$|#dOqfx=E}KgD0xlEWjBp(G@Oc2ID-+xt>Vs$f2p|InWln7qnSVYa5IkYC(T1K zhX2s%@eTafZT>}M&2PmV{#!tLyZKk^!S*VAjnU!7v2r?ieBQW_jxvtV4=$uW{_%hL z;f3_&bbS5||9k~MzrB!dr;g9RyO3@{j?e$1JiH`i4~E8}r{a}ZP#k(YT5oH4l9=%}h1n{p_NxJv>k%IB9Y_1&`@Q#3HN4xq zgWvD=-qAQ-VK|akmYLQo=+0jJs`U>3p)q}c+V|g6P5&AHDu12EVeQvw|DAtyvK6-5 z>f?v_!`|EKfA0M#H_It}oyf1(kaq@oA9)fwka-4~{P|yT_`3E(v`7C|!*-`OhY$Kg z`9H@8`~OvI)DOSIe*b*bi0*%m8ym~J8TJ2X8rDy7{P*boHm=tLc zwJZGxXUwbZPE@_+w&ix!Zq|Pe!+Gr=;)mKV$^hERftvmyUaPE6@v?S<&3`&-?CktR zfto*6<3r`9PRoNoJ?DHF!>5{+zhVDcyf^yEIMh4g)4tkQv;`XVM&lrgxY;-Mo&6h} zp5KmMwtiE`W)a_1f7|=C|5BQv+*HHgss|CJygC2vB0m2``~%~G)6ReYRkYg|5}nZ| zkKb6%1O{+!GdQs)Vom0or={oP+CCrG>U{hIR(wtU_~vLhEu; zdlgBaW8r`7e-jydz}Gkpx$k}Rt)}L-s!!UhsP@v7c%>FPt6FK*mwOgGL40r5aiY8h zS*2v!5ApX^tNs(^Z)<;Ev+6w2X4^O^@%caY-c*e-_N^{x zEAPlIpTo=vd_{NOg$%z<@wetLvL-MW7_kXW;OR%Wf8MU$9oPQr;{3nmkG*|XtAD0T z>c@2Q&tkvf@d$r0>IyZ7PDwCis^wwVyf0W$tQ>%id}#CPa-#C`IHhU@zSX7zcm=6O zLEqLmxqD1U>Q|X(^M?nV+#%Bt7L3gV5~vy>b8IR9-LMBAn|Dj)kHQzcQ)Tl066nlh z_-_vXy@LO40DIwU9@C8r8~4G;b=I-y!XGjDLY}J5@Z%%PL@;>WK<sGLvpn3e1>V5&Z zCxA_g#x5Tzi{Rhp$G!!+8#Hg?m(@EYb(irm`~X6CPANbVzoL|Hu@3hQ5%Ui&s6K3? zdLriV@d|(b-oW1_Hu5q??_Eo~u@mmvcic5c}I6FnN@}E52 z-|%#Q%hP?p(|uT2=e9XMqdCUuZMpkv9@pm8!@YkSsJHeCek{MV=62A$3Qtv*ILFFq zTmm~UuqQk{fr+A-`iq>Yzh2n&9)D52vR0~7R++2uPDXV5ub_GA zh&H4{jJ%c?x-3CcQR5bUUg{PdU1iwr&Cw@1Ugz-7A^!6X{_`#VqkN)gIiKihRP4+= z{X&0d<~ewFX6_4k(o&b|sUv*i%St*yPkkkWv`l_fT74_sW=Y1GC++K)fBhYp#@pt8Z33uS?M=J9a5thIlw0@mQKjisn((Li%M=75*0*Uj71SjtN( z-27HBi){f|?9-#|;7dAtUDQn#Lc>aH*-aP7lovLCni3I|qhr#ec`HShb-@y4L(HT~ zP+JKiCUvuTVUko-l-;9YDrdSp~tBrdUFZ% zCQ0OMdUJWvg8N+Cy2I8?V5;FLUys|6vLF85i)#Br5&ZkXzx~_4)pT6C{ok_(@c>Et z5!`_1cgBw1?3V=*&Nr(4#nEwVf$e{H8#m*M1kSBig^Xk(8gdj3Vj6 zrvGtvtL*cEDjy@UY(?j-9Xx+&1wM%n#44VfO}c_j8Uw%ySALFlUZ_`}*mS>Rg@KSB6O89czOa}yffzl<@y-R3lY`Qo@rEv_|x{o=TZ zDXkO8ysb{`%pZamw@plu5=)w$H`4`>9tRD3WnV!XcRZo5qKyT3QUG|P0hQB6-Uq_&As3BwrFcnVu}GIpZ=C(bussl zLq5rrXG8ztB^AY8j9U3|0R=Vz5!MfNS82!jkC?2B3c{3_pb~CkkDR zs5{hzHua(a8|hjuM5>XZak%axVHo9Xm8V%X6pN)W+ZIaINR2lTu-@H1lCJN8ioHz} z^vps?rbuQr7MCdMy|kX$p{gt%KRh_^#U@KX6_fuIla6n|)B}Rm+N4VUb!iM_j9-{R zc=?zt>C%%W`8>qbsBC{{i)9C+(Mx{9BmSqV0{|uc@rG01`l6K3Ri$mRb{cJ_7FkPo z!qnzwE=#$YOYEoV+a+={m&narA~$o1+{`6%Gnd58om`r4%THi`n7Ipnp)|2sbA^#Z=|B3WOB{1A)ASiUSPP2JW zYg3mjw!I!meA!OcJXJ#tSMS65S)1$fN^jXKyF8q<%gvMdiVO~NZ`rl{bfXo70=uk+ z;nmL0l{F#Jiz{b(nrLR+h_-r?`=WE~_>FTS!yruTYrT+2yi~P!LwUpts4FTS zUcue{wX~I`?x<<2o=sZ~<9_kuVc&mwY|9;JT(tm)q%W6KAbyhJRYxO|TY6SznEn0M7Jg}#QInNJN6}>IfhbMBwK(WcNu1x$ z_Fl+svX%=2`@-LJZvRGYj7(P^&B$p@#VWGelUT)W(1D^RIo5I+rM8V6BS&2}O7gm& zrwvQPGPyJeM`WgiJS|bullX=`0(5(mH-|w1(vx|It^yc{lPQQ}0+@!Aj)*)0r2Ui3 zh$(-|F1LG^%goL>n<>5`8_gt-QN%9jC`;M4hW%X@KYP~A^KD&plF(J08>!jnG~2pL z!X!DSuK%R9v!hGd+)?*Q+!55?b@jJOxz^5Bt~E=$&4Nvh!A5=Zi8DS!jy`DiHr{UV zs+_+JpXfy8`4OGz%4(cUubQK@Kk)ssq+NgZw(XNl|>e z7YF!>C49u&v;5?Cc~Oi)swGUq5s`=N9?@C4oURj!senG?iwT`~AagM&h`BtnS9zeInSG%$+Mq!QGir_13GQ<{PFqb zAXp5=CxeMBo_h1*a4-0L%yZ0 z5HdVrp_SqXmBEU0*jFyLI=?$RT@MSFk(>2N``USbR35YJkxAI|9=)kL52-!8>N(U6 zcfH7KqfgF1X-{t7Opk4)qWynqbItk1RPMSPQMK!^)CHi*eK*2B#mj5SK8fX(Qp2ml z1v1hYP3pv30Mf2oywI193Q5v^><;9c3tyoD_p#m_pSpW_{NkRm&+DmUcdrg$tdf8} z&0i2DqpGLA-63BkH>~*x4DNleccH+u@s~%Q$tJWIiR`6R(BcXo%q|r7pViv{h3b1fOM&oi zp^fli!K%J8_3JW97*;4R6R9z6oUb@X!@)PNC3<_|3u^_lAEj2;Z1nTNBCg@qw9W zjs*Mqx6h|Pe>gsS^Zs2yOh~#*xc>>yaPXU`J9FF4G z0da5E+?O}BQD&Lt7MQ8xV>Fj5U*N*JY=H1yPn}z9y^~0vwf=*LfAcEp=ia{=ch@lwJ3Yh-(EiS z?+OL+ffR9m9VLrLm(v0*)>y;Mh-MB(X1stKD;v$mXa=EwKRkRRpIUkeD=6YZ%AXGp zhmB2syC?^n@gTolknhZG7s)n@f!;1xu&Zdh$R``!ALW`;bpbZk;dkHF#^PH0JQ8g& z5i|3U6*qsxG`>==Dwjvo)@3#R7KR^RonKzGCin;TNNYwv4lnq|8|~~&@Shp}a~-y8 zljx|&zh?5+gnq%Egks-Z#6TAJ-L2LAvaKcbD4YJEi8iTc~Kw4Q7!f+7;7 z>;Hl$r$0SdhPIb-bJ@beEMXu5v%K=-BRzj>N>@p83IlgxWdg6O{GdfuRp5%jZ?l~6 zVJ)Wq`jy3Xfwz{#Ll-s~ zPs-e5kK&UhfK!cfF9BZ3r4jkS;s1>0cZ(wZ8SQUWXd~Pn59l|{nsH}ghYzK#b-J8P z)}Fk7)I31Ke&$X{A-Mt^ihIERu!c?bs3EdGaP+7s7)()D)y4+iY}j~1XYsd>CiFC$ zG#hW|Z2q=Th|Zx;3zg^w>C;9lJfZsAK{0Z3=>!MiSecZN!#^yUbQ2XF$ar8>x5VgD z2sTo$7`#}(J+;R_>h8t3>Q0J;!?7J_U6jOsjOyk?=60|H?G%y3sBS)#w3w#x{a^qn z2mzdL2gc-P#`GeOxa{5KGx!+zp-ftKo%SVFQU=jWZs=78$Q(FQC!=KC3)ur&>AP6$ zzKad($#mLJe>i*lW30Cei!Njq-G(~LJQV$&zW9B*KTJgMJ0PUZuujj%b%i2hv&Z0n zs~TLdf|h~-ejG@Pk0^MX4>PXvnT9Ol&oWZYU?!CPqq3|MVo_?S1B!IQKB1{etF zY1#nW;{@Yene!(!!QjlwHXQH>=J?Wc{4YW&t_PWaIkqS<{7kI9<7DD{G2;K@3k_FfLdOEDBl zr1bw}HqU)V-r`$>YW%crf0b*Q5zXDp;RjL%)IQ9EBTPmYFWwe>L3e#^Kp*k%!ETVd z?1SCkgG$iEYC>mjUhGm?w5W+~B7x8Z+Q|B4aPz1_j)scPEh@&xNS3>GRZL8OzF*Qk z5-)b~yVlbQu}$LA5~>;Neu@V%|=9vforFaC))K}&o<6np^+>RoDo`ktGFG~lSV)5 zwy*oYO~y1uym~ksH0g%1EXT!j2@NmvTr;iT{jI7^PQ#6IW?wuhOh& zm7cyr?Hr(5BbX*wreVP{O?dj`R0qHx1U(AA%8PKhH+b3 zUG|NgJw;awws**{M(nD6IjU}%CLyD<;r_kc8%LhX3Ik|o1;sPYVkrhS-V2IhrOcav zpC9ex$e!;iwVQj5RGLG7Vci4Gs|{~Gci=g;Z5R(;a3C3WZ83-d6*5uw@bHWx?Xb_2 zFnW04z&jYPF+_ue1FeCFON;1r0LXM#_H0)fC_uVh5b>>oAJQugrK1zC*@t0=0CuIK zs^gbnU|CzTO{Ez4mYy(P*b1(}r&~@70S0+lMNat_4{e$1BGKA^*rE&Mw8jF4M_Y32 zO^IAKOuzt*MkQsc-2;p`kiBhvIzYoy+Zc3k5tG~O0hyp0?p|VsYvb3(c-U&e`A zeeXpSp8xmn`xkpr_&eRazt=CbXdnHm1=V3S`1fyu$hA17@KQJ>g%Znw7iSIu!vT}o zJ;2sRQph}g|Mn+*`AK zFHqG&=P%PSAk81n&VDj!qs0P^0-48)b6S>yHS0^XFOBO61OT=tgeF9P+MV?PtqSCA z5W`7Y0s8{~vC;xUMxr}TaCWgvT2zWD;eWuTgRrAnwwShmC;dps7Gf?^R}BW=zd8#T z7Pk(X?~ayJwq7?)F4~J_b~5Yr0e*#61TS4Tx)T?a#; z>URuPxAdqX75muItJUrSarN5QYjQgYUs#L5Z2$fH^!IF!)M71}$cy^kzjGS9lWaMI zD;ySJ5*mU&^I^m%412`lT83`fIz!OoQ;C8?s6k7JB))U@(sI1WRGe#T_5GZUJu6C= z^J6!EO|BPDTDsim`Zw*d?7Awlv!k20TPs($<9o|$vT$ojusT^(XkB_(XGUCaCI!lG znBBrG$9jh=vNM$Zkjl{mKoENn68{l`eLYLx;rY;=v5k1-;~4?I8b4W;ehL*zG>?Pf zpP|&Z{7a)Dls+Z=#%^-;EOJ9-4V}V-rKwJTid}WSq$Vu@DT6iLR-NYjhlc`X7Y4X1V>z1@9NB`7;Yb{8X=soUrLc?vL{Gy+sB$C>HuvmKFa5?czbV^0`DV(%5-hcevIzzrYuizEq{zV zyk&Tw*reJQj5PbQ5!o{#h5e5flurOpgtM$w<*{^{+cq8Qae~|X`U&~6fg#-*wf;Y` K(Luga{s90Wz?X#p delta 18351 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 K%*_3D`~d)!5n)FF diff --git a/src/static_canvas.class.js b/src/static_canvas.class.js index efdf1df8..27b907cb 100644 --- a/src/static_canvas.class.js +++ b/src/static_canvas.class.js @@ -775,7 +775,11 @@ remove: function (object) { removeFromArray(this._objects, object); if (this.getActiveObject() === object) { + + // removing active object should fire "selection:cleared" events + this.fire('before:selection:cleared', { target: object }); this.discardActiveObject(); + this.fire('selection:cleared'); } this.renderAll(); return object;