Add alternative minified version of fabric (via google closure compiler) and corresponding gzipped versions (for comparison). Do not set angle of circles in benchmark.

This commit is contained in:
kangax 2010-07-26 01:43:25 -04:00
parent 34777a0fae
commit 8388559b42
4 changed files with 165 additions and 1 deletions

165
dist/all.min-via-goog-cc.js vendored Normal file
View file

@ -0,0 +1,165 @@
if(typeof console=="undefined")var console={log:function(){},warn:function(){}};if(!this.JSON)this.JSON={};
(function(){function e(k){return k<10?"0"+k:k}function f(k){g.lastIndex=0;return g.test(k)?'"'+k.replace(g,function(m){var n=b[m];return typeof n==="string"?n:"\\u"+("0000"+m.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+k+'"'}function a(k,m){var n,o,s,r,u=h,q,p=m[k];if(p&&typeof p==="object"&&typeof p.toJSON==="function")p=p.toJSON(k);if(typeof d==="function")p=d.call(m,k,p);switch(typeof p){case "string":return f(p);case "number":return isFinite(p)?String(p):"null";case "boolean":case "null":return String(p);
case "object":if(!p)return"null";h+=l;q=[];if(Object.prototype.toString.apply(p)==="[object Array]"){r=p.length;for(n=0;n<r;n+=1)q[n]=a(n,p)||"null";s=q.length===0?"[]":h?"[\n"+h+q.join(",\n"+h)+"\n"+u+"]":"["+q.join(",")+"]";h=u;return s}if(d&&typeof d==="object"){r=d.length;for(n=0;n<r;n+=1){o=d[n];if(typeof o==="string")if(s=a(o,p))q.push(f(o)+(h?": ":":")+s)}}else for(o in p)if(Object.hasOwnProperty.call(p,o))if(s=a(o,p))q.push(f(o)+(h?": ":":")+s);s=q.length===0?"{}":h?"{\n"+h+q.join(",\n"+h)+
"\n"+u+"}":"{"+q.join(",")+"}";h=u;return s}}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+e(this.getUTCMonth()+1)+"-"+e(this.getUTCDate())+"T"+e(this.getUTCHours())+":"+e(this.getUTCMinutes())+":"+e(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()}}var c=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
g=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,h,l,b={"\u0008":"\\b","\t":"\\t","\n":"\\n","\u000c":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},d;if(typeof JSON.stringify!=="function")JSON.stringify=function(k,m,n){var o;l=h="";if(typeof n==="number")for(o=0;o<n;o+=1)l+=" ";else if(typeof n==="string")l=n;if((d=m)&&typeof m!=="function"&&(typeof m!=="object"||typeof m.length!=="number"))throw Error("JSON.stringify");return a("",
{"":k})};if(typeof JSON.parse!=="function")JSON.parse=function(k,m){function n(s,r){var u,q,p=s[r];if(p&&typeof p==="object")for(u in p)if(Object.hasOwnProperty.call(p,u)){q=n(p,u);if(q!==undefined)p[u]=q;else delete p[u]}return m.call(s,r,p)}var o;k=String(k);c.lastIndex=0;if(c.test(k))k=k.replace(c,function(s){return"\\u"+("0000"+s.charCodeAt(0).toString(16)).slice(-4)});if(/^[\],:{}\s]*$/.test(k.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){o=eval("("+k+")");return typeof m==="function"?n({"":o},""):o}throw new SyntaxError("JSON.parse");}})();
(function(){function e(h,l){for(var b in l)h[b]=l[b];return h}function f(h,l){var b=document.createElement(h);for(var d in l)if(d==="class")b.className=l[d];else if(d==="for")b.htmlFor=l[d];else b.setAttribute(d,l[d]);return b}function a(){return false}var c=this.fabric||(this.fabric={}),g=Array.prototype.slice;c.util={};if(!Array.prototype.indexOf)Array.prototype.indexOf=function(h,l){var b=this.length>>>0;l=Number(l)||0;l=Math[l<0?"ceil":"floor"](l);if(l<0)l+=b;for(;l<b;l++)if(l in this&&this[l]===
h)return l;return-1};if(!Array.prototype.forEach)Array.prototype.forEach=function(h,l){for(var b=0,d=this.length>>>0;b<d;b++)b in this&&h.call(l,this[b],b,this)};if(!Array.prototype.map)Array.prototype.map=function(h,l){for(var b=[],d=0,k=this.length>>>0;d<k;d++)if(d in this)b[d]=h.call(l,this[d],d,this);return b};if(!Array.prototype.every)Array.prototype.every=function(h,l){for(var b=0,d=this.length>>>0;b<d;b++)if(b in this&&!h.call(l,this[b],b,this))return false;return true};if(!Array.prototype.some)Array.prototype.some=
function(h,l){for(var b=0,d=this.length>>>0;b<d;b++)if(b in this&&h.call(l,this[b],b,this))return true;return false};if(!Array.prototype.filter)Array.prototype.filter=function(h,l){for(var b=[],d,k=0,m=this.length>>>0;k<m;k++)if(k in this){d=this[k];h.call(l,d,k,this)&&b.push(d)}return res};if(!Array.prototype.reduce)Array.prototype.reduce=function(h){var l=this.length>>>0,b=0,d;if(arguments.length>1)d=arguments[1];else{do{if(b in this){d=this[b++];break}if(++b>=l)throw new TypeError;}while(1)}for(;b<
l;b++)if(b in this)d=h.call(null,d,this[b],b,this);return d};c.util.array={invoke:function(h,l){for(var b=g.call(arguments,2),d=[],k=0,m=h.length;k<m;k++)d[k]=b.length?h[k][l].apply(h[k],b):h[k][l].call(h[k]);return d},min:function(h,l){var b=h.length-1,d=l?h[b][l]:h[b];if(l)for(;b--;){if(h[b][l]<d)d=h[b][l]}else for(;b--;)if(h[b]<d)d=h[b];return d},max:function(h,l){var b=h.length-1,d=l?h[b][l]:h[b];if(l)for(;b--;){if(h[b][l]>=d)d=h[b][l]}else for(;b--;)if(h[b]>=d)d=h[b];return d}};c.util.object=
{extend:e,clone:function(h){return e({},h)}};if(!String.prototype.trim)String.prototype.trim=function(){return this.replace(/^\s+/,"").replace(/\s+$/,"")};c.util.string={camelize:function(h){return h.replace(/-+(.)?/g,function(l,b){return b?b.toUpperCase():""})},capitalize:function(h){return h.charAt(0).toUpperCase()+h.slice(1).toLowerCase()}};if(!Function.prototype.bind)Function.prototype.bind=function(h){var l=this,b=Array.prototype.slice.call(arguments,1);return function(){return l.apply(h,b.concat(Array.prototype.slice.call(arguments)))}};
(function(){function h(){}var l;l=function(){for(var b in{toString:1})if(b==="toString")return false;return true}()?function(b,d){if(d.toString!==Object.prototype.toString)b.prototype.toString=d.toString;if(d.valueOf!==Object.prototype.valueOf)b.prototype.valueOf=d.valueOf;for(var k in d)b.prototype[k]=d[k]}:function(b,d){for(var k in d)b.prototype[k]=d[k]};c.util.createClass=function(){function b(){this.initialize.apply(this,arguments)}var d=null,k=g.call(arguments,0);if(typeof k[0]==="function")d=
k.shift();b.superclass=d;b.subclasses=[];if(d){h.prototype=d.prototype;b.prototype=new h;d.subclasses.push(b)}d=0;for(var m=k.length;d<m;d++)l(b,k[d]);if(!b.prototype.initialize)b.prototype.initialize=emptyFunction;return b.prototype.constructor=b}})();(function(){function h(q){var p=Array.prototype.slice.call(arguments,1),v,t,w=p.length;for(t=0;t<w;t++){v=typeof q[p[t]];if(!/^(?:function|object|unknown)$/.test(v))return false}return true}function l(q,p){return function(v){p.call(k(q),v||window.event)}}
function b(q,p){return function(v){if(r[q]&&r[q][p])for(var t=r[q][p],w=0,x=t.length;w<x;w++)t[w].call(this,v||window.event)}}var d=function(){if(typeof document.documentElement.uniqueID!=="undefined")return function(p){return p.uniqueID};var q=0;return function(p){return p.__uniqueID||(p.__uniqueID="uniqueID__"+q++)}}(),k,m;(function(){var q={};k=function(p){return q[p]};m=function(p,v){q[p]=v}})();var n=h(document.documentElement,"addEventListener","removeEventListener")&&h(window,"addEventListener",
"removeEventListener"),o=h(document.documentElement,"attachEvent","detachEvent")&&h(window,"attachEvent","detachEvent"),s={},r={};if(n){addListener=function(q,p,v){q.addEventListener(p,v,false)};removeListener=function(q,p,v){q.removeEventListener(p,v,false)}}else if(o){addListener=function(q,p,v){var t=d(q);m(t,q);s[t]||(s[t]={});s[t][p]||(s[t][p]=[]);v={handler:v,wrappedHandler:l(t,v)};s[t][p].push(v);q.attachEvent("on"+p,v.wrappedHandler)};removeListener=function(q,p,v){var t=d(q),w;if(s[t]&&s[t][p])for(var x=
0,y=s[t][p].length;x<y;x++)if((w=s[t][p][x])&&w.handler===v){q.detachEvent("on"+p,w.wrappedHandler);s[t][p][x]=null}}}else{addListener=function(q,p,v){var t=d(q);r[t]||(r[t]={});if(!r[t][p]){r[t][p]=[];var w=q["on"+p];w&&r[t][p].push(w);q["on"+p]=b(t,p)}r[t][p].push(v)};removeListener=function(q,p,v){q=d(q);if(r[q]&&r[q][p]){p=r[q][p];q=0;for(var t=p.length;q<t;q++)p[q]===v&&p.splice(q,1)}}}c.util.addListener=addListener;c.util.removeListener=removeListener;var u={};c.util.observeEvent=function(q,
p){u[q]||(u[q]=[]);u[q].push(p)};c.util.fireEvent=function(q,p){if(u[q])for(var v=0,t=u[q].length;v<t;v++)try{u[q][v]({memo:p})}catch(w){setTimeout(function(){throw w;},0)}};c.util.getPointer=function(q){var p=document.documentElement,v=document.body||{scrollLeft:0},t=document.documentElement,w=document.body||{scrollTop:0};return{x:q.pageX||q.clientX+(p.scrollLeft||v.scrollLeft)-(p.clientLeft||0),y:q.pageY||q.clientY+(t.scrollTop||w.scrollTop)-(t.clientTop||0)}}})(this);(function(){var h=document.createElement("div"),
l=typeof h.style.filter==="string",b=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,d=function(k){return k};if(typeof h.style.opacity==="string")d=function(k,m){k.style.opacity=m;return k};else if(l)d=function(k,m){var n=k.style;if(k.currentStyle&&!k.currentStyle.hasLayout)n.zoom=1;if(b.test(n.filter)){m=m>=0.9999?"":"alpha(opacity="+m*100+")";n.filter=n.filter.replace(b,m)}else n.filter+=" alpha(opacity="+m*100+")";return k};c.util.setStyle=function(k,m){var n=k.style;if(typeof m==="string"){k.style.cssText+=
";"+m;return m.indexOf("opacity")>-1?d(k,m.match(/opacity:\s*(\d?\.?\d*)/)[1]):k}for(var o in m)if(o==="opacity")d(k,m[o]);else n[o==="float"||o==="cssFloat"?typeof n.styleFloat==="undefined"?"cssFloat":"styleFloat":o]=m[o];return k}})();(function(){var h=document.documentElement.style,l="userSelect"in h?"userSelect":"MozUserSelect"in h?"MozUserSelect":"WebkitUserSelect"in h?"WebkitUserSelect":"KhtmlUserSelect"in h?"KhtmlUserSelect":"";c.util.makeElementUnselectable=function(b){if(typeof b.onselectstart!==
"undefined")b.onselectstart=a;if(l)b.style[l]="none";else if(typeof b.unselectable=="string")b.unselectable="on";return b}})();(function(){function h(b,d){l.load(b);d()}c.util.getScript=function(b,d){var k=document.getElementsByTagName("head")[0],m=document.createElement("script"),n=true;m.type="text/javascript";m.setAttribute("runat","server");m.onload=m.onreadystatechange=function(o){if(n)if(!(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")){n=false;d(o||
window.event);m=m.onload=m.onreadystatechange=null}};m.src=b;k.appendChild(m)};var l=this.Jaxer;if(l&&l.load)c.util.getScript=h})();c.util.getById=function(h){return typeof h==="string"?document.getElementById(h):h};c.util.toArray=function(h){for(var l=[],b=h.length;b--;)l[b]=h[b];return l};c.util.makeElement=f;c.util.addClass=function(h,l){if((" "+h.className+" ").indexOf(" "+l+" ")===-1)h.className+=(h.className?" ":"")+l};c.util.wrapElement=function(h,l,b){if(typeof l==="string")l=f(l,b);h.parentNode&&
h.parentNode.replaceChild(l,h);l.appendChild(h);return l};c.util.getElementOffset=function(h){var l=0,b=0;do{l+=h.offsetTop||0;b+=h.offsetLeft||0;h=h.offsetParent}while(h);return{left:b,top:l}};c.util.animate=function(h){h||(h={});var l=+new Date,b=h.duration||500,d=l+b,k,m,n=h.onChange||function(){},o=h.easing||function(p){return-Math.cos(p*Math.PI)/2+0.5},s="startValue"in h?h.startValue:0,r="endValue"in h?h.endValue:100,u=s>r;h.onStart&&h.onStart();var q=setInterval(function(){k=+new Date;m=k>d?
1:(k-l)/b;n(u?s-(s-r)*o(m):s+(r-s)*o(m));if(k>d){clearInterval(q);h.onComplete&&h.onComplete()}},10)};(function(){function h(){}var l=function(){for(var b=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}],d=b.length;d--;)try{if(b[d]())return b[d]}catch(k){}}();c.util.request=function(b,d){d||(d={});var k=d.method?d.method.toUpperCase():"GET",
m=d.onComplete||function(){},n=l(),o;n.onreadystatechange=function(){if(n.readyState===4){m(n);n.onreadystatechange=h}};if(k==="GET"){o=null;if(typeof d.parameters=="string")b=b+(/\?/.test(b)?"&":"?")+d.parameters}n.open(k,b,true);if(k==="POST"||k==="PUT")n.setRequestHeader("Content-Type","application/x-www-form-urlencoded");n.send(o);return n}})();(function(){var h=Math.PI/180;c.util.removeFromArray=function(l,b){var d=l.indexOf(b);d!==-1&&l.splice(d,1);return l};c.util.degreesToRadians=function(l){return l*
h};c.util.toFixed=function(l,b){return parseFloat(Number(l).toFixed(b))};c.util.getRandomInt=function(l,b){return Math.floor(Math.random()*(b-l+1))+l}})()})(this);
(function(){var e=this.fabric||(this.fabric={}),f={cx:"left",x:"left",cy:"top",y:"top",r:"radius","fill-opacity":"opacity","fill-rule":"fillRule","stroke-width":"strokeWidth",transform:"transformMatrix"};e.parseTransformAttribute=function(){function a(d,k){var m=k[0];d[0]=Math.cos(m);d[1]=Math.sin(m);d[2]=-Math.sin(m);d[3]=Math.cos(m)}function c(d,k){var m=k.length===2?k[1]:k[0];d[0]=k[0];d[3]=m}function g(d,k){d[4]=k[0];if(k.length===2)d[5]=k[1]}var h=[1,0,0,1,0,0],l=RegExp("^\\s*(?:(?:(?:(?:(matrix)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\))|(?:(translate)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(scale)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(rotate)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(skewX)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\))|(?:(skewY)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\)))(?:(?:\\s+,?\\s*|,\\s*)(?:(?:(matrix)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\))|(?:(translate)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(scale)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(rotate)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(skewX)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\))|(?:(skewY)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\))))*)?)\\s*$"),
b=RegExp("(?:(?:(matrix)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\))|(?:(translate)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(scale)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(rotate)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(skewX)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\))|(?:(skewY)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\)))");
return function(d){var k=h.concat();if(!d||d&&!l.test(d))return k;d.replace(b,function(m){var n=RegExp("(?:(?:(matrix)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\))|(?:(translate)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(scale)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(rotate)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))(?:\\s+,?\\s*|,\\s*)((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)))?\\s*\\))|(?:(skewX)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\))|(?:(skewY)\\s*\\(\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?))\\s*\\)))").exec(m).filter(function(o){return o!==
""&&o!=null});m=n[1];n=n.slice(2).map(parseFloat);switch(m){case "translate":g(k,n);break;case "rotate":a(k,n);break;case "scale":c(k,n);break;case "skewX":k[2]=n[0];break;case "skewY":k[1]=n[0];break;case "matrix":k=n;break}});return k}}();e.parseSVGDocument=function(){var a=/^(path|circle|polygon|polyline|ellipse|rect|line)$/,c=RegExp("^\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)+)\\s*,?\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)+)\\s*,?\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)+)\\s*,?\\s*((?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)+)\\s*$");
return function(g,h){if(g){var l=e.util.toArray(g.getElementsByTagName("*")).filter(function(o){var s;if(s=a.test(o.tagName)){a:{for(o=o;o&&(o=o.parentNode);)if(o.nodeName==="pattern"){o=true;break a}o=false}s=!o}return s});if(!(!l||l&&!l.length)){var b=g.getAttribute("viewBox"),d=g.getAttribute("width"),k=g.getAttribute("height"),m=null,n=null;if(b&&(b=b.match(c))){parseInt(b[1],10);parseInt(b[2],10);m=parseInt(b[3],10);n=parseInt(b[4],10)}m=d?parseFloat(d):m;n=k?parseFloat(k):n;b={width:m,height:n};
l=e.parseElements(l,e.util.object.clone(b));!l||l&&!l.length||h&&h(l,b)}}}}();e.util.object.extend(e,{parseAttributes:function(a,c){if(a){var g,h,l={};if(a.parentNode&&/^g$/i.test(a.parentNode.nodeName))l=e.parseAttributes(a.parentNode,c);var b=c.reduce(function(d,k){g=a.getAttribute(k);h=parseFloat(g);if(g){if((k==="fill"||k==="stroke")&&g==="none")g="";if(k==="fill-rule")g=g==="evenodd"?"destination-over":g;if(k==="transform")g=e.parseTransformAttribute(g);if(k in f)k=f[k];d[k]=isNaN(h)?g:h}return d},
{});b=e.util.object.extend(e.parseStyleAttribute(a),b);return e.util.object.extend(l,b)}},parseElements:function(a,c){var g=a.map(function(h){var l=e[e.util.string.capitalize(h.tagName)];if(l&&l.fromElement)try{return l.fromElement(h,c)}catch(b){console.log(b.message||b)}});return g=g.filter(function(h){return h!=null})},parseStyleAttribute:function(a){var c={};if(a=a.getAttribute("style"))if(typeof a=="string"){a=a.split(";");a.pop();c=a.reduce(function(h,l){var b=l.split(":"),d=b[0].trim();b=b[1].trim();
h[d]=b;return h},{})}else for(var g in a)if(typeof a[g]!=="undefined")c[g]=a[g];return c},parsePointsAttribute:function(a){if(!a)return null;a=a.trim().split(/\s+/);a=a.reduce(function(c,g){g=g.split(",");c.push({x:parseFloat(g[0]),y:parseFloat(g[1])});return c},[]);if(a.length%2!==0)return null;return a}})})();
(function(){function e(a,c){arguments.length>0&&this.init(a,c)}var f=this.fabric||(this.fabric={});if(f.Point)console.warn("fabric.Point is already defined");else{e.prototype={constructor:e,init:function(a,c){this.x=a;this.y=c},add:function(a){return new e(this.x+a.x,this.y+a.y)},addEquals:function(a){this.x+=a.x;this.y+=a.y;return this},scalarAdd:function(a){return new e(this.x+a,this.y+a)},scalarAddEquals:function(a){this.x+=a;this.y+=a;return this},subtract:function(a){return new e(this.x-a.x,
this.y-a.y)},subtractEquals:function(a){this.x-=a.x;this.y-=a.y;return this},scalarSubtract:function(a){return new e(this.x-a,this.y-a)},scalarSubtractEquals:function(a){this.x-=a;this.y-=a;return this},multiply:function(a){return new e(this.x*a,this.y*a)},multiplyEquals:function(a){this.x*=a;this.y*=a;return this},divide:function(a){return new e(this.x/a,this.y/a)},divideEquals:function(a){this.x/=a;this.y/=a;return this},eq:function(a){return this.x==a.x&&this.y==a.y},lt:function(a){return this.x<
a.x&&this.y<a.y},lte:function(a){return this.x<=a.x&&this.y<=a.y},gt:function(a){return this.x>a.x&&this.y>a.y},gte:function(a){return this.x>=a.x&&this.y>=a.y},lerp:function(a,c){return new e(this.x+(a.x-this.x)*c,this.y+(a.y-this.y)*c)},distanceFrom:function(a){var c=this.x-a.x;a=this.y-a.y;return Math.sqrt(c*c+a*a)},min:function(a){return new e(Math.min(this.x,a.x),Math.min(this.y,a.y))},max:function(a){return new e(Math.max(this.x,a.x),Math.max(this.y,a.y))},toString:function(){return this.x+
","+this.y},setXY:function(a,c){this.x=a;this.y=c},setFromPoint:function(a){this.x=a.x;this.y=a.y},swap:function(a){var c=this.x,g=this.y;this.x=a.x;this.y=a.y;a.x=c;a.y=g}};f.Point=e}})();
(function(){function e(a){arguments.length>0&&this.init(a)}var f=this.fabric||(this.fabric={});if(f.Intersection)console.warn("fabric.Intersection is already defined");else{e.prototype.init=function(a){this.status=a;this.points=[]};e.prototype.appendPoint=function(a){this.points.push(a)};e.prototype.appendPoints=function(a){this.points=this.points.concat(a)};e.intersectLineLine=function(a,c,g,h){var l,b=(h.x-g.x)*(a.y-g.y)-(h.y-g.y)*(a.x-g.x);l=(c.x-a.x)*(a.y-g.y)-(c.y-a.y)*(a.x-g.x);g=(h.y-g.y)*
(c.x-a.x)-(h.x-g.x)*(c.y-a.y);if(g!=0){b=b/g;l=l/g;if(0<=b&&b<=1&&0<=l&&l<=1){l=new e("Intersection");l.points.push(new f.Point(a.x+b*(c.x-a.x),a.y+b*(c.y-a.y)))}else l=new e("No Intersection")}else l=b==0||l==0?new e("Coincident"):new e("Parallel");return l};e.intersectLinePolygon=function(a,c,g){for(var h=new e("No Intersection"),l=g.length,b=0;b<l;b++){var d=e.intersectLineLine(a,c,g[b],g[(b+1)%l]);h.appendPoints(d.points)}if(h.points.length>0)h.status="Intersection";return h};e.intersectPolygonPolygon=
function(a,c){for(var g=new e("No Intersection"),h=a.length,l=0;l<h;l++){var b=e.intersectLinePolygon(a[l],a[(l+1)%h],c);g.appendPoints(b.points)}if(g.points.length>0)g.status="Intersection";return g};e.intersectPolygonRectangle=function(a,c,g){var h=c.min(g),l=c.max(g);g=new f.Point(l.x,h.y);var b=new f.Point(h.x,l.y);c=e.intersectLinePolygon(h,g,a);g=e.intersectLinePolygon(g,l,a);l=e.intersectLinePolygon(l,b,a);a=e.intersectLinePolygon(b,h,a);h=new e("No Intersection");h.appendPoints(c.points);
h.appendPoints(g.points);h.appendPoints(l.points);h.appendPoints(a.points);if(h.points.length>0)h.status="Intersection";return h};f.Intersection=e}})();
(function(){function e(a){a?this._tryParsingColor(a):this.setSource([0,0,0,1])}var f=this.fabric||(this.fabric={});if(f.Color)console.warn("fabric.Color is already defined.");else{f.Color=e;e.prototype._tryParsingColor=function(a){var c=e.sourceFromHex(a);c||(c=e.sourceFromRgb(a));c&&this.setSource(c)};e.prototype.getSource=function(){return this._source};e.prototype.setSource=function(a){this._source=a};e.prototype.toRgb=function(){var a=this.getSource();return"rgb("+a[0]+","+a[1]+","+a[2]+")"};
e.prototype.toRgba=function(){var a=this.getSource();return"rgba("+a[0]+","+a[1]+","+a[2]+","+a[3]+")"};e.prototype.toHex=function(){var a=this.getSource(),c=a[0].toString(16);c=c.length==1?"0"+c:c;var g=a[1].toString(16);g=g.length==1?"0"+g:g;a=a[2].toString(16);a=a.length==1?"0"+a:a;return c.toUpperCase()+g.toUpperCase()+a.toUpperCase()};e.prototype.getAlpha=function(){return this.getSource()[3]};e.prototype.setAlpha=function(a){var c=this.getSource();c[3]=a;this.setSource(c);return this};e.prototype.toGrayscale=
function(){var a=this.getSource(),c=parseInt((a[0]*0.3+a[1]*0.59+a[2]*0.11).toFixed(0),10);this.setSource([c,c,c,a[3]]);return this};e.prototype.toBlackWhite=function(a){var c=this.getSource(),g=(c[0]*0.3+c[1]*0.59+c[2]*0.11).toFixed(0);c=c[3];a=a||127;g=Number(g)<Number(a)?0:255;this.setSource([g,g,g,c]);return this};e.prototype.overlayWith=function(a){a=new e(a);var c=[],g=this.getAlpha(),h=this.getSource();a=a.getSource();for(var l=0;l<3;l++)c.push(Math.round(h[l]*0.5+a[l]*0.5));c[4]=g;this.setSource(c);
return this};e.reRGBa=/^rgba?\((\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})(?:\s*,\s*(\d+(?:\.\d+)?))?\)$/;e.reHex=/^#?([0-9a-f]{6}|[0-9a-f]{3})$/i;e.fromRgb=function(a){return e.fromSource(e.sourceFromRgb(a))};e.sourceFromRgb=function(a){if(a=a.match(e.reRGBa))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10),a[4]?parseFloat(a[4]):1]};e.fromRgba=e.fromRgb;e.fromHex=function(a){return e.fromSource(e.sourceFromHex(a))};e.sourceFromHex=function(a){if(a.match(e.reHex)){var c=a.slice(a.indexOf("#")+
1),g=c.length===3;a=g?c.charAt(0)+c.charAt(0):c.substring(0,2);var h=g?c.charAt(1)+c.charAt(1):c.substring(2,4);c=g?c.charAt(2)+c.charAt(2):c.substring(4,6);return[parseInt(a,16),parseInt(h,16),parseInt(c,16),1]}};e.fromSource=function(a){var c=new e;c.setSource(a);return c}}})();
(function(){var e=this.window,f=e.document,a=this.Canvas||(this.Canvas={});if(fabric.Element)console.warn("fabric.Element is already defined.");else{var c=Error("Could not initialize `canvas` element"),g=fabric.util.getPointer,h={tr:"ne-resize",br:"se-resize",bl:"sw-resize",tl:"nw-resize",ml:"w-resize",mt:"n-resize",mr:"e-resize",mb:"s-resize"};(function(){var b=f.createElement("canvas"),d,k,m;b.width=b.height=300;if(b.getContext)if(k=b.getContext("2d")){d=new Date;for(m=200;m--;)k.clearRect(0,0,
300,300);k=new Date-d;d=new Date;for(m=200;m--;)b.width=b.height;if(new Date-d<k)return"width"}})();var l=function(){var b=f.createElement("canvas");if(b&&b.getContext)if(b=b.getContext("2d")){try{b.fillStyle="transparent";return true}catch(d){}return false}}();fabric.Element=function(b,d){this._groupSelector=null;this._aObjects=[];this._activeGroup=this._currentTransform=this._oElement=this._oContext=null;this._oConfig={width:300,height:150};d=d||{};this._initElement(b);this._initConfig(d);d.overlayImage&&
this.setOverlayImage(d.overlayImage);if(d.afterRender)this.afterRender=d.afterRender;this._createCanvasBackground();this._createCanvasContainer();this._initEvents();this.calcOffset()};fabric.util.object.extend(fabric.Element.prototype,{selectionColor:"rgba(100,100,255,0.3)",selectionBorderColor:"rgba(255,255,255,0.3)",selectionLineWidth:1,backgroundColor:"rgba(255,255,255,1)",includeDefaultValues:true,shouldCacheImages:false,CANVAS_WIDTH:600,CANVAS_HEIGHT:600,onBeforeScaleRotate:function(){},calcOffset:function(){this._offset=
fabric.util.getElementOffset(this.getElement());return this},setOverlayImage:function(b,d){if(b){var k=this,m=new Image;m.onload=function(){k.overlayImage=m;d&&d();m=m.onload=null};m.src=b}return this},_initElement:function(b){this._oElement=fabric.util.getById(b)||f.createElement("canvas");typeof this._oElement.getContext==="undefined"&&G_vmlCanvasManager.initElement(this._oElement);if(typeof this._oElement.getContext==="undefined")throw c;if(!(this._oContextTop=this._oElement.getContext("2d")))throw c;
b=this._oElement.width||0;var d=this._oElement.height||0;this._initWrapperElement(b,d);this._setElementStyle(b,d)},_initWrapperElement:function(b,d){var k=fabric.util.wrapElement(this.getElement(),"div",{"class":"canvas_container"});fabric.util.setStyle(k,{width:b+"px",height:d+"px"});fabric.util.makeElementUnselectable(k);this.wrapper=k},_setElementStyle:function(b,d){fabric.util.setStyle(this.getElement(),{position:"absolute",width:b+"px",height:d+"px",left:0,top:0})},_initConfig:function(b){fabric.util.object.extend(this._oConfig,
b||{});this._oConfig.width=parseInt(this._oElement.width,10)||0;this._oConfig.height=parseInt(this._oElement.height,10)||0;this._oElement.style.width=this._oConfig.width+"px";this._oElement.style.height=this._oConfig.height+"px"},_initEvents:function(){var b=this;this._onMouseDown=function(d){b.__onMouseDown(d)};this._onMouseUp=function(d){b.__onMouseUp(d)};this._onMouseMove=function(d){b.__onMouseMove(d)};this._onResize=function(){b.calcOffset()};fabric.util.addListener(this._oElement,"mousedown",
this._onMouseDown);fabric.util.addListener(f,"mousemove",this._onMouseMove);fabric.util.addListener(f,"mouseup",this._onMouseUp);fabric.util.addListener(e,"resize",this._onResize)},_createCanvasElement:function(b){var d=f.createElement("canvas");if(d){d.className=b;b=this._oElement.parentNode.insertBefore(d,this._oElement);b.width=this.getWidth();b.height=this.getHeight();b.style.width=this.getWidth()+"px";b.style.height=this.getHeight()+"px";b.style.position="absolute";b.style.left=0;b.style.top=
0;typeof d.getContext==="undefined"&&G_vmlCanvasManager.initElement(d);if(typeof d.getContext==="undefined")throw c;fabric.util.makeElementUnselectable(b);return b}},_createCanvasContainer:function(){var b=this._createCanvasElement("canvas-container");this._oContextContainerEl=b;this._oContextContainer=b.getContext("2d")},_createCanvasBackground:function(){var b=this._createCanvasElement("canvas-container");this._oContextBackgroundEl=b;this._oContextBackground=b.getContext("2d")},getWidth:function(){return this._oConfig.width},
getHeight:function(){return this._oConfig.height},setWidth:function(b){return this._setDimension("width",b)},setHeight:function(b){return this._setDimension("height",b)},setDimensions:function(b){for(var d in b)this._setDimension(d,b[d]);return this},_setDimension:function(b,d){this._oContextContainerEl[b]=d;this._oContextContainerEl.style[b]=d+"px";this._oContextBackgroundEl[b]=d;this._oContextBackgroundEl.style[b]=d+"px";this._oElement[b]=d;this._oElement.style[b]=d+"px";this._oElement.parentNode.style[b]=
d+"px";this._oConfig[b]=d;this.calcOffset();this.renderAll();return this},__onMouseUp:function(b){if(this._currentTransform){var d=this._currentTransform.target;if(d.__scaling){fabric.util.fireEvent("object:scaled",{target:d});d.__scaling=false}for(var k=0,m=this._aObjects.length;k<m;++k)this._aObjects[k].setCoords();if(d.hasStateChanged()){d.isMoving=false;fabric.util.fireEvent("object:modified",{target:d})}}this._currentTransform=null;this._groupSelector&&this._findSelectedObjects(b);if(k=this.getActiveGroup()){k.hasStateChanged()&&
k.containsPoint(this.getPointer(b))&&fabric.util.fireEvent("group:modified",{target:k});k.setObjectsCoords();k.set("isMoving",false);this._setCursor("default")}this._groupSelector=null;this.renderAll();this._setCursorFromEvent(b,d);this._setCursor("");var n=this;setTimeout(function(){n._setCursorFromEvent(b,d)},50)},shouldClearSelection:function(b){var d=this.findTarget(b),k=this.getActiveGroup();return!d||d&&k&&!k.contains(d)&&k!==d&&!b.shiftKey},__onMouseDown:function(b){if(!this._currentTransform){var d=
this.findTarget(b),k=this.getPointer(b),m=this.getActiveGroup();if(this.shouldClearSelection(b)){this._groupSelector={ex:k.x,ey:k.y,top:0,left:0};this.deactivateAllWithDispatch()}else{d.saveState();d._findTargetCorner(b,this._offset)&&this.onBeforeScaleRotate(d);this._setupCurrentTransform(b,d);if(b.shiftKey&&(m||this.getActiveObject()))this._handleGroupLogic(b,d);else{d!==this.getActiveGroup()&&this.deactivateAll();this.setActiveObject(d)}}this.renderAll()}},getElement:function(){return this._oElement},
deactivateAllWithDispatch:function(){var b=this.getActiveGroup();b&&fabric.util.fireEvent("before:group:destroyed",{target:b});this.deactivateAll();b&&fabric.util.fireEvent("after:group:destroyed");fabric.util.fireEvent("selection:cleared");return this},_setupCurrentTransform:function(b,d){var k="drag",m,n=g(b);if(m=d._findTargetCorner(b,this._offset))k=/ml|mr/.test(m)?"scaleX":/mt|mb/.test(m)?"scaleY":"rotate";this._currentTransform={target:d,action:k,scaleX:d.scaleX,scaleY:d.scaleY,offsetX:n.x-
d.left,offsetY:n.y-d.top,ex:n.x,ey:n.y,left:d.left,top:d.top,theta:d.theta,width:d.width*d.scaleX};this._currentTransform.original={left:d.left,top:d.top}},_handleGroupLogic:function(b,d){if(d.isType("group")){d=this.findTarget(b,true);if(!d||d.isType("group"))return}var k=this.getActiveGroup();if(k){if(k.contains(d)){k.remove(d);d.setActive(false);k.size()===1&&this.removeActiveGroup()}else k.add(d);fabric.util.fireEvent("group:selected",{target:k});k.setActive(true)}else{if(this._activeObject)if(d!==
this._activeObject){this.setActiveGroup(new fabric.Group([this._activeObject,d]));k=this.getActiveGroup()}d.setActive(true)}k&&k.saveCoords()},__onMouseMove:function(b){if(this._groupSelector!==null){var d=g(b);this._groupSelector.left=d.x-this._offset.left-this._groupSelector.ex;this._groupSelector.top=d.y-this._offset.top-this._groupSelector.ey;this.renderTop()}else if(this._currentTransform){d=g(b);var k=d.x;d=d.y;this._currentTransform.target.isMoving=true;if(this._currentTransform.action==="rotate"){b.shiftKey||
this._rotateObject(k,d);this._scaleObject(k,d)}else if(this._currentTransform.action==="scaleX")this._scaleObject(k,d,"x");else this._currentTransform.action==="scaleY"?this._scaleObject(k,d,"y"):this._translateObject(k,d);this.renderAll()}else{k=this._oElement.style;if(d=this.findTarget(b)){this._setCursorFromEvent(b,d);d.isActive()&&d.setCornersVisibility&&d.setCornersVisibility(true)}else{for(b=this._aObjects.length;b--;)this._aObjects[b].active||this._aObjects[b].setActive(false);k.cursor="default"}}},
_translateObject:function(b,d){var k=this._currentTransform.target;k.set("left",b-this._currentTransform.offsetX);k.set("top",d-this._currentTransform.offsetY)},_scaleObject:function(b,d,k){var m=Math.sqrt(Math.pow(this._currentTransform.ey-this._currentTransform.top-this._offset.top,2)+Math.pow(this._currentTransform.ex-this._currentTransform.left-this._offset.left,2));b=Math.sqrt(Math.pow(d-this._currentTransform.top-this._offset.top,2)+Math.pow(b-this._currentTransform.left-this._offset.left,2));
d=this._currentTransform.target;d.__scaling=true;if(k)if(k==="x")d.set("scaleX",this._currentTransform.scaleX*b/m);else k==="y"&&d.set("scaleY",this._currentTransform.scaleY*b/m);else{d.set("scaleX",this._currentTransform.scaleX*b/m);d.set("scaleY",this._currentTransform.scaleY*b/m)}},_rotateObject:function(b,d){var k=Math.atan2(this._currentTransform.ey-this._currentTransform.top-this._offset.top,this._currentTransform.ex-this._currentTransform.left-this._offset.left);this._currentTransform.target.set("theta",
Math.atan2(d-this._currentTransform.top-this._offset.top,b-this._currentTransform.left-this._offset.left)-k+this._currentTransform.theta)},_setCursor:function(b){this._oElement.style.cursor=b},_setCursorFromEvent:function(b,d){var k=this._oElement.style;if(d){var m=this.getActiveGroup();if(m=!!d._findTargetCorner&&(!m||!m.contains(d))&&d._findTargetCorner(b,this._offset))if(m in h)k.cursor=h[m];else{k.cursor="default";return false}else k.cursor="move"}else{k.cursor="default";return false}return true},
_draw:function(b,d){d&&d.render(b)},_drawSelection:function(){var b=this._groupSelector.left,d=this._groupSelector.top,k=Math.abs(b),m=Math.abs(d);this._oContextTop.fillStyle=this.selectionColor;this._oContextTop.fillRect(this._groupSelector.ex-(b>0?0:-b),this._groupSelector.ey-(d>0?0:-d),k,m);this._oContextTop.lineWidth=this.selectionLineWidth;this._oContextTop.strokeStyle=this.selectionBorderColor;this._oContextTop.strokeRect(this._groupSelector.ex+0.5-(b>0?0:k),this._groupSelector.ey+0.5-(d>0?
0:m),k,m)},_findSelectedObjects:function(){var b=[],d=this._groupSelector.ex,k=this._groupSelector.ey,m=d+this._groupSelector.left,n=k+this._groupSelector.top,o=new fabric.Point(Math.min(d,m),Math.min(k,n));k=new fabric.Point(Math.max(d,m),Math.max(k,n));m=0;for(n=this._aObjects.length;m<n;++m){d=this._aObjects[m];if(d.intersectsWithRect(o,k)||d.isContainedWithinRect(o,k)){d.setActive(true);b.push(d)}}if(b.length===1){this.setActiveObject(b[0]);fabric.util.fireEvent("object:selected",{target:b[0]})}else if(b.length>
1){b=new fabric.Group(b);this.setActiveGroup(b);b.saveCoords();fabric.util.fireEvent("group:selected",{target:b})}this.renderAll()},add:function(){this._aObjects.push.apply(this._aObjects,arguments);this.renderAll();return this},insertAt:function(b,d){this._aObjects.splice(d,0,b);this.renderAll();return this},getObjects:function(){return this._aObjects},getContext:function(){return this._oContextTop},clearContext:function(b){b.clearRect(0,0,this._oConfig.width,this._oConfig.height);return this},clear:function(){this._aObjects.length=
0;this.clearContext(this._oContextTop);this.clearContext(this._oContextContainer);this.renderAll();return this},renderAll:function(b){var d=this._oConfig.width,k=this._oConfig.height,m=b?this._oContextTop:this._oContextContainer;this.clearContext(this._oContextTop);m!==this._oContextTop&&this.clearContext(m);if(b){if(!l&&this.backgroundColor==="transparent")var n=true;if(!n)m.fillStyle=this.backgroundColor;m.fillRect(0,0,d,k)}b=this._aObjects.length;d=this.getActiveGroup();if(b)for(k=0;k<b;++k)if(!d||
d&&!d.contains(this._aObjects[k]))this._draw(m,this._aObjects[k]);d&&this._draw(this._oContextTop,d);this.overlayImage&&this._oContextTop.drawImage(this.overlayImage,0,0);this.afterRender&&this.afterRender();return this},renderTop:function(){this.clearContext(this._oContextTop);this.overlayImage&&this._oContextTop.drawImage(this.overlayImage,0,0);this._groupSelector&&this._drawSelection();var b=this.getActiveGroup();b&&b.render(this._oContextTop);this.afterRender&&this.afterRender();return this},
containsPoint:function(b,d){var k=this.getPointer(b),m=this._normalizePointer(d,k);k=m.x;m=m.y;var n=d._getImageLines(d.oCoords);if((k=d._findCrossPoints(k,m,n))&&k%2===1||d._findTargetCorner(b,this._offset))return true;return false},_normalizePointer:function(b,d){var k=this.getActiveGroup(),m=d.x,n=d.y;if(k&&b.type!=="group"&&k.contains(b)){m-=k.left;n-=k.top}return{x:m,y:n}},findTarget:function(b,d){var k;this.getPointer(b);var m=this.getActiveGroup();if(m&&!d&&this.containsPoint(b,m))return k=
m;for(m=this._aObjects.length;m--;)if(this.containsPoint(b,this._aObjects[m])){this.relatedTarget=k=this._aObjects[m];break}return k},toDataURL:function(b){var d;b||(b="png");if(b==="jpeg"||b==="png"){this.renderAll(true);d=this.getElement().toDataURL("image/"+b)}return d},toDataURLWithMultiplier:function(b,d){var k=this.getWidth(),m=this.getHeight(),n=k*d,o=m*d,s=this.getActiveObject();this.setWidth(n).setHeight(o);this._oContextTop.scale(d,d);s&&this.deactivateAll().renderAll();n=this.toDataURL(b);
this._oContextTop.scale(1/d,1/d);this.setWidth(k).setHeight(m);s&&this.setActiveObject(s);this.renderAll();return n},getPointer:function(b){b=g(b);return{x:b.x-this._offset.left,y:b.y-this._offset.top}},getCenter:function(){return{top:this.getHeight()/2,left:this.getWidth()/2}},centerObjectH:function(b){b.set("left",this.getCenter().left);this.renderAll();return this},fxCenterObjectH:function(b){var d=this,k=new APE.anim.Animation,m=b.get("left"),n=d.getCenter().left-m;k.run=function(o){b.set("left",
m+n*o);d.renderAll()};k.onend=function(){b.setCoords()};k.duration=500;k.transition=APE.anim.Transitions.decel;k.start();return this},centerObjectV:function(b){b.set("top",this.getCenter().top);this.renderAll();return this},fxCenterObjectV:function(b){var d=this,k=new APE.anim.Animation,m=b.get("top"),n=d.getCenter().top-m;k.run=function(o){b.set("top",m+n*o).setCoords();d.renderAll()};k.onend=function(){b.setCoords()};k.duration=500;k.transition=APE.anim.Transitions.decel;k.start()},straightenObject:function(b){b.straighten();
this.renderAll();return this},fxStraightenObject:function(b){b.fxStraighten({onChange:this.renderAll.bind(this)});return this},toJSON:function(){return JSON.stringify(this.toObject())},toDatalessJSON:function(){return JSON.stringify(this.toDatalessObject())},toObject:function(){return this._toObjectMethod("toObject")},toDatalessObject:function(){return this._toObjectMethod("toDatalessObject")},_toObjectMethod:function(b){return{objects:this._aObjects.map(function(d){if(!this.includeDefaultValues){var k=
d.includeDefaultValues;d.includeDefaultValues=false}var m=d[b]();if(!this.includeDefaultValues)d.includeDefaultValues=k;return m},this),background:this.backgroundColor}},isEmpty:function(){return this._aObjects.length===0},loadFromJSON:function(b,d){if(b){var k=JSON.parse(b);if(!(!k||k&&!k.objects)){this.clear();var m=this;this._enlivenObjects(k.objects,function(){m.backgroundColor=k.background;d&&d()});return this}}},_enlivenObjects:function(b,d){var k=0,m=b.filter(function(o){return o.type==="image"}).length,
n=this;b.forEach(function(o){if(o.type)switch(o.type){case "image":case "font":fabric[fabric.util.string.capitalize(o.type)].fromObject(o,function(r){n.add(r);++k===m&&d&&d()});break;default:var s=fabric[fabric.util.string.camelize(fabric.util.string.capitalize(o.type))];s&&s.fromObject&&n.add(s.fromObject(o));break}});m===0&&d&&d()},loadFromDatalessJSON:function(b,d){if(b){var k=typeof b==="string"?b.evalJSON():b;if(!(!k||k&&!k.objects)){this.clear();this._enlivenDatalessObjects(k.objects,d)}}},
_enlivenDatalessObjects:function(b,d){function k(r,u){m.insertAt(r,u);r.setCoords();++n===o&&d&&d()}var m=this,n=0,o=b.length;try{b.forEach(function(r,u){var q=r.paths?"paths":"path",p=r[q];delete r[q];if(typeof p!=="string")switch(r.type){case "image":case "text":a[r.type.capitalize()].fromObject(r,function(t){k(t,u)});break;default:(q=a[r.type.capitalize().camelize()])&&q.fromObject&&k(q.fromObject(r),u);break}else if(r.type==="image")m.loadImageFromURL(p,function(t){t.setSourcePath(p);fabric.util.object.extend(t,
r);t.setAngle(r.angle);k(t,u)});else if(r.type==="text"){r.path=p;var v=fabric.Text.fromObject(r);e.__context=m;fabric.util.getScript(p,function(){Prototype.Browser.Opera?setTimeout(function(){k(v,u)},500):k(v,u)})}else m.loadSVGFromURL(p,function(t){t=t.length>1?new fabric.PathGroup(t,r):t[0];t.setSourcePath(p);if(!(t instanceof fabric.PathGroup)){fabric.util.object.extend(t,r);typeof r.angle!=="undefined"&&t.setAngle(r.angle)}k(t,u)})},this)}catch(s){console.log(s.message)}},loadImageFromURL:function(){var b=
{};return function(d,k){function m(){var s=f.getElementById(b[d]);s.width&&s.height?k(new fabric.Image(s)):setTimeout(m,50)}var n=this;if(b[d])m();else{var o=new Image;o.onload=function(){o.onload=null;n._resizeImageToFit(o);var s=new fabric.Image(o);k(s)};o.className="canvas-img-clone";o.src=d;if(this.shouldCacheImages)b[d]=Element.identify(o);f.body.appendChild(o)}}}(),loadSVGFromURL:function(b,d){function k(o){if(o=o.responseXML)(o=o.documentElement)&&fabric.parseSVGDocument(o,function(s,r){n.cache.set(b,
{objects:s.invoke("toObject"),options:r});d(s,r)})}function m(){console.log("ERROR!")}var n=this;b=b.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();this.cache.has(b,function(o){if(o)n.cache.get(b,function(s){s=n._enlivenCachedObject(s);d(s.objects,s.options)});else new Ajax.Request(b,{method:"get",onComplete:k,onFailure:m})})},_enlivenCachedObject:function(b){var d=b.objects;b=b.options;d=d.map(function(k){return a[k.type.capitalize()].fromObject(k)});return{objects:d,options:b}},remove:function(b){fabric.util.removeFromArray(this._aObjects,
b);this.renderAll();return b},fxRemove:function(b,d){var k=this;b.fxRemove({onChange:this.renderAll.bind(this),onComplete:function(){k.remove(b);typeof d==="function"&&d()}});return this},sendToBack:function(b){fabric.util.removeFromArray(this._aObjects,b);this._aObjects.unshift(b);return this.renderAll()},bringToFront:function(b){fabric.util.removeFromArray(this._aObjects,b);this._aObjects.push(b);return this.renderAll()},sendBackwards:function(b){var d=this._aObjects.indexOf(b),k=d;if(d!==0){for(d=
d-1;d>=0;--d)if(b.intersectsWithObject(this._aObjects[d])){k=d;break}fabric.util.removeFromArray(this._aObjects,b);this._aObjects.splice(k,0,b)}return this.renderAll()},bringForward:function(b){var d=this.getObjects(),k=d.indexOf(b),m=k;if(k!==d.length-1){k=k+1;for(var n=this._aObjects.length;k<n;++k)if(b.intersectsWithObject(d[k])){m=k;break}fabric.util.removeFromArray(d,b);d.splice(m,0,b)}this.renderAll()},setActiveObject:function(b){this._activeObject&&this._activeObject.setActive(false);this._activeObject=
b;b.setActive(true);this.renderAll();fabric.util.fireEvent("object:selected",{target:b});return this},getActiveObject:function(){return this._activeObject},removeActiveObject:function(){this._activeObject&&this._activeObject.setActive(false);this._activeObject=null;return this},setActiveGroup:function(b){this._activeGroup=b;return this},getActiveGroup:function(){return this._activeGroup},removeActiveGroup:function(){var b=this.getActiveGroup();b&&b.destroy();return this.setActiveGroup(null)},item:function(b){return this.getObjects()[b]},
deactivateAll:function(){for(var b=this.getObjects(),d=0,k=b.length;d<k;d++)b[d].setActive(false);this.removeActiveGroup();this.removeActiveObject();return this},complexity:function(){return this.getObjects().reduce(function(b,d){b+=d.complexity?d.complexity():0;return b},0)},dispose:function(){this.clear();fabric.util.removeListener(this.getElement(),"mousedown",this._onMouseDown);fabric.util.removeListener(f,"mouseup",this._onMouseUp);fabric.util.removeListener(f,"mousemove",this._onMouseMove);
fabric.util.removeListener(e,"resize",this._onResize);return this},clone:function(b){var d=f.createElement("canvas");d.width=this.getWidth();d.height=this.getHeight();var k=this.__clone||(this.__clone=new fabric.Element(d));return k.loadFromJSON(this.toJSON(),function(){b&&b(k)})},_toDataURL:function(b,d){this.clone(function(k){d(k.toDataURL(b))})},_toDataURLWithMultiplier:function(b,d,k){this.clone(function(m){k(m.toDataURLWithMultiplier(b,d))})},_resizeImageToFit:function(b){var d=b.width||b.offsetWidth,
k=b.height||b.offsetHeight,m=this.getWidth()/d,n=this.getHeight()/k;if(d&&k){b.width=d*m;b.height=k*n}},cache:{has:function(b,d){d(false)},get:function(){},set:function(){}}});fabric.Element.prototype.toString=function(){return"#<fabric.Element ("+this.complexity()+"): { objects: "+this.getObjects().length+" }>"};fabric.util.object.extend(fabric.Element,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(b){var d=b.getContext("2d");b=d.getImageData(0,0,b.width,b.height);var k=
b.data,m=b.width,n=b.height,o,s;for(i=0;i<m;i++)for(j=0;j<n;j++){o=i*4*n+j*4;s=(k[o]+k[o+1]+k[o+2])/3;k[o]=s;k[o+1]=s;k[o+2]=s}d.putImageData(b,0,0)},supports:function(b){var d=f.createElement("canvas");if(!d||!d.getContext)return null;var k=d.getContext("2d");if(!k)return null;switch(b){case "getImageData":return typeof k.getImageData!=="undefined";case "toDataURL":return typeof d.toDataURL!=="undefined";default:return null}}})}})();
(function(){var e=this.fabric||(this.fabric={});if(!e.Object){var f=Array.prototype.slice;e.Object=e.util.createClass({type:"object",includeDefaultValues:true,NUM_FRACTION_DIGITS:2,FX_DURATION:500,FX_TRANSITION:"decel",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".split(" "),options:{top:0,left:0,width:100,height:100,scaleX:1,scaleY:1,flipX:false,flipY:false,
theta:0,opacity:1,angle:0,cornersize:10,padding:0,borderColor:"rgba(102,153,255,0.75)",cornerColor:"rgba(102,153,255,0.5)",fill:"rgb(0,0,0)",overlayFill:null,stroke:null,strokeWidth:1,fillRule:"source-over",borderOpacityWhenMoving:0.4,borderScaleFactor:1,transformMatrix:null},callSuper:function(a){var c=this.constructor.superclass.prototype[a];return arguments.length>1?c.apply(this,f.call(arguments,1)):c.call(this)},initialize:function(a){this.setOptions(a);this._importProperties();this.originalState=
{};this.setCoords();this.saveState()},setOptions:function(a){this.options=e.util.object.extend(this._getOptions(),a)},_getOptions:function(){return e.util.object.extend(e.util.object.clone(this._getSuperOptions()),this.options)},_getSuperOptions:function(){var a=this.constructor;if(a)if(a=a.superclass)if((a=a.prototype)&&typeof a._getOptions=="function")return a._getOptions();return{}},_importProperties:function(){this.stateProperties.forEach(function(a){a==="angle"?this.setAngle(this.options[a]):
this[a]=this.options[a]},this)},transform:function(a){a.globalAlpha=this.opacity;a.translate(this.left,this.top);a.rotate(this.theta);a.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toJSON:function(){return JSON.stringify(this.toObject())},toObject:function(){var a=e.util.toFixed;a={type:this.type,left:a(this.left,this.NUM_FRACTION_DIGITS),top:a(this.top,this.NUM_FRACTION_DIGITS),width:a(this.width,this.NUM_FRACTION_DIGITS),height:a(this.height,this.NUM_FRACTION_DIGITS),fill:this.fill,
overlayFill:this.overlayFill,stroke:this.stroke,strokeWidth:this.strokeWidth,scaleX:a(this.scaleX,this.NUM_FRACTION_DIGITS),scaleY:a(this.scaleY,this.NUM_FRACTION_DIGITS),angle:a(this.getAngle(),this.NUM_FRACTION_DIGITS),flipX:this.flipX,flipY:this.flipY,opacity:a(this.opacity,this.NUM_FRACTION_DIGITS)};this.includeDefaultValues||(a=this._removeDefaultValues(a));return a},toDatalessObject:function(){return this.toObject()},_removeDefaultValues:function(a){var c=e.Object.prototype.options;this.stateProperties.forEach(function(g){a[g]===
c[g]&&delete a[g]});return a},isActive:function(){return!!this.active},setActive:function(a){this.active=!!a;return this},toString:function(){return"#<fabric."+e.util.string.capitalize(this.type)+">"},set:function(a,c){if((a==="scaleX"||a==="scaleY")&&c<this.MIN_SCALE_LIMIT)c=this.MIN_SCALE_LIMIT;if(a==="angle")this.setAngle(c);else this[a]=c;return this},toggle:function(a){var c=this.get(a);typeof c==="boolean"&&this.set(a,!c);return this},setSourcePath:function(a){this.sourcePath=a;return this},
get:function(a){return a==="angle"?this.getAngle():this[a]},render:function(a,c){if(!(this.width===0||this.height===0)){a.save();var g=this.transformMatrix;g&&a.setTransform(g[0],g[1],g[2],g[3],g[4],g[5]);c||this.transform(a);if(this.stroke){a.lineWidth=this.strokeWidth;a.strokeStyle=this.stroke}if(this.overlayFill)a.fillStyle=this.overlayFill;else if(this.fill)a.fillStyle=this.fill;this._render(a);if(this.active&&!c){this.drawBorders(a);this.drawCorners(a)}a.restore()}},getWidth:function(){return this.width*
this.scaleX},getHeight:function(){return this.height*this.scaleY},scale:function(a){this.scaleY=this.scaleX=a;return this},scaleToWidth:function(a){return this.scale(a/this.width)},scaleToHeight:function(a){return this.scale(a/this.height)},setOpacity:function(a){this.set("opacity",a);return this},getAngle:function(){return this.theta*180/Math.PI},setAngle:function(a){this.theta=a/180*Math.PI;this.angle=a;return this},setCoords:function(){this.currentWidth=this.width*this.scaleX;this.currentHeight=
this.height*this.scaleY;this._hypotenuse=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2));this._angle=Math.atan(this.currentHeight/this.currentWidth);var a=Math.cos(this._angle+this.theta)*this._hypotenuse,c=Math.sin(this._angle+this.theta)*this._hypotenuse,g=this.theta,h=Math.sin(g);g=Math.cos(g);a={x:this.left-a,y:this.top-c};c={x:a.x+this.currentWidth*g,y:a.y+this.currentWidth*h};var l={x:a.x-this.currentHeight*h,y:a.y+this.currentHeight*g};this.oCoords={tl:a,tr:c,br:{x:c.x-
this.currentHeight*h,y:c.y+this.currentHeight*g},bl:l,ml:{x:a.x-this.currentHeight/2*h,y:a.y+this.currentHeight/2*g},mt:{x:a.x+this.currentWidth/2*g,y:a.y+this.currentWidth/2*h},mr:{x:c.x-this.currentHeight/2*h,y:c.y+this.currentHeight/2*g},mb:{x:l.x+this.currentWidth/2*g,y:l.y+this.currentWidth/2*h}};this._setCornerCoords();return this},drawBorders:function(a){var c=this.options,g=c.padding,h=g*2;a.save();a.globalAlpha=this.isMoving?c.borderOpacityWhenMoving:1;a.strokeStyle=c.borderColor;c=1/(this.scaleX<
this.MIN_SCALE_LIMIT?this.MIN_SCALE_LIMIT:this.scaleX);var l=1/(this.scaleY<this.MIN_SCALE_LIMIT?this.MIN_SCALE_LIMIT:this.scaleY);a.lineWidth=1/this.borderScaleFactor;a.scale(c,l);c=this.getWidth();l=this.getHeight();a.strokeRect(Math.floor(-(c/2)-g)+0.5,Math.floor(-(l/2)-g)+0.5,Math.floor(c+h),Math.floor(l+h));a.restore();return this},drawCorners:function(a){var c=this.options.cornersize,g=c/2,h=this.options.padding,l=-(this.width/2),b=-(this.height/2),d=c/this.scaleX,k=c/this.scaleY,m=(h+g)/this.scaleY,
n=(h+g)/this.scaleX,o=(h+g-c)/this.scaleX;h=(h+g-c)/this.scaleY;a.save();a.globalAlpha=this.isMoving?this.options.borderOpacityWhenMoving:1;a.fillStyle=this.options.cornerColor;c=l-n;g=b-m;a.fillRect(c,g,d,k);c=l+this.width-n;g=b-m;a.fillRect(c,g,d,k);c=l-n;g=b+this.height+h;a.fillRect(c,g,d,k);c=l+this.width+o;g=b+this.height+h;a.fillRect(c,g,d,k);c=l+this.width/2-n;g=b-m;a.fillRect(c,g,d,k);c=l+this.width/2-n;g=b+this.height+h;a.fillRect(c,g,d,k);c=l+this.width+o;g=b+this.height/2-m;a.fillRect(c,
g,d,k);c=l-n;g=b+this.height/2-m;a.fillRect(c,g,d,k);a.restore();return this},clone:function(a){if(this.constructor.fromObject)return this.constructor.fromObject(this.toObject(),a);return new e.Object(this.toObject())},cloneAsImage:function(a){if(e.Image){var c=new Image;c.onload=function(){a&&a(new e.Image(c),g);c=c.onload=null};var g={angle:this.get("angle"),flipX:this.get("flipX"),flipY:this.get("flipY")};this.set("angle",0).set("flipX",false).set("flipY",false);c.src=this.toDataURL()}return this},
toDataURL:function(){var a=document.createElement("canvas");a.width=this.getWidth();a.height=this.getHeight();e.util.wrapElement(a,"div");var c=new e.Element(a);c.backgroundColor="transparent";c.renderAll();var g=this.clone();g.left=a.width/2;g.top=a.height/2;g.setActive(false);c.add(g);a=c.toDataURL("png");c.dispose();return a},hasStateChanged:function(){return this.stateProperties.some(function(a){return this[a]!==this.originalState[a]},this)},saveState:function(){this.stateProperties.forEach(function(a){this.originalState[a]=
this.get(a)},this);return this},intersectsWithRect:function(a,c){var g=this.oCoords,h=new e.Point(g.tl.x,g.tl.y),l=new e.Point(g.tr.x,g.tr.y),b=new e.Point(g.bl.x,g.bl.y);g=new e.Point(g.br.x,g.br.y);return e.Intersection.intersectPolygonRectangle([h,l,g,b],a,c).status==="Intersection"},intersectsWithObject:function(a){function c(h){return{tl:new e.Point(h.tl.x,h.tl.y),tr:new e.Point(h.tr.x,h.tr.y),bl:new e.Point(h.bl.x,h.bl.y),br:new e.Point(h.br.x,h.br.y)}}var g=c(this.oCoords);a=c(a.oCoords);return e.Intersection.intersectPolygonPolygon([g.tl,
g.tr,g.br,g.bl],[a.tl,a.tr,a.br,a.bl]).status==="Intersection"},isContainedWithinRect:function(a,c){var g=this.oCoords,h=new e.Point(g.tl.x,g.tl.y),l=new e.Point(g.tr.x,g.tr.y),b=new e.Point(g.bl.x,g.bl.y);new e.Point(g.br.x,g.br.y);return h.x>a.x&&l.x<c.x&&h.y>a.y&&b.y<c.y},isType:function(a){return this.type===a},_findTargetCorner:function(a,c){var g=e.util.getPointer(a),h=g.x-c.left;g=g.y-c.top;var l;for(var b in this.oCoords){l=this._getImageLines(this.oCoords[b].corner,b);l=this._findCrossPoints(h,
g,l);if(l%2==1&&l!=0)return this.__corner=b}return false},_findCrossPoints:function(a,c,g){var h,l,b,d=0;for(var k in g){b=g[k];if(!(b.o.y<c&&b.d.y<c))if(!(b.o.y>=c&&b.d.y>=c)){if(b.o.x==b.d.x&&b.o.x>=a)h=b.o.x;else{h=(b.d.y-b.o.y)/(b.d.x-b.o.x);l=c-0*a;b=b.o.y-h*b.o.x;h=-(l-b)/(0-h)}if(h>=a)d+=1;if(d==2)break}}return d},_getImageLines:function(a){return{topline:{o:a.tl,d:a.tr},rightline:{o:a.tr,d:a.br},bottomline:{o:a.br,d:a.bl},leftline:{o:a.bl,d:a.tl}}},_setCornerCoords:function(){var a=this.oCoords,
c=this.theta,g=this.cornersize*Math.cos(c),h=this.cornersize*Math.sin(c);c=this.cornersize/2;var l=c-h;a.tl.x-=l;a.tl.y-=c;a.tl.corner={tl:{x:a.tl.x,y:a.tl.y},tr:{x:a.tl.x+g,y:a.tl.y+h},bl:{x:a.tl.x-h,y:a.tl.y+g}};a.tl.corner.br={x:a.tl.corner.tr.x-h,y:a.tl.corner.tr.y+g};a.tl.x+=l;a.tl.y+=c;a.tr.x+=c;a.tr.y-=c;a.tr.corner={tl:{x:a.tr.x-g,y:a.tr.y-h},tr:{x:a.tr.x,y:a.tr.y},br:{x:a.tr.x-h,y:a.tr.y+g}};a.tr.corner.bl={x:a.tr.corner.tl.x-h,y:a.tr.corner.tl.y+g};a.tr.x-=c;a.tr.y+=c;a.bl.x-=c;a.bl.y+=
c;a.bl.corner={tl:{x:a.bl.x+h,y:a.bl.y-g},bl:{x:a.bl.x,y:a.bl.y},br:{x:a.bl.x+g,y:a.bl.y+h}};a.bl.corner.tr={x:a.bl.corner.br.x+h,y:a.bl.corner.br.y-g};a.bl.x+=c;a.bl.y-=c;a.br.x+=c;a.br.y+=c;a.br.corner={tr:{x:a.br.x+h,y:a.br.y-g},bl:{x:a.br.x-g,y:a.br.y-h},br:{x:a.br.x,y:a.br.y}};a.br.corner.tl={x:a.br.corner.bl.x+h,y:a.br.corner.bl.y-g};a.br.x-=c;a.br.y-=c;a.ml.x-=c;a.ml.y-=c;a.ml.corner={tl:{x:a.ml.x,y:a.ml.y},tr:{x:a.ml.x+g,y:a.ml.y+h},bl:{x:a.ml.x-h,y:a.ml.y+g}};a.ml.corner.br={x:a.ml.corner.tr.x-
h,y:a.ml.corner.tr.y+g};a.ml.x+=c;a.ml.y+=c;a.mt.x-=c;a.mt.y-=c;a.mt.corner={tl:{x:a.mt.x,y:a.mt.y},tr:{x:a.mt.x+g,y:a.mt.y+h},bl:{x:a.mt.x-h,y:a.mt.y+g}};a.mt.corner.br={x:a.mt.corner.tr.x-h,y:a.mt.corner.tr.y+g};a.mt.x+=c;a.mt.y+=c;a.mr.x-=c;a.mr.y-=c;a.mr.corner={tl:{x:a.mr.x,y:a.mr.y},tr:{x:a.mr.x+g,y:a.mr.y+h},bl:{x:a.mr.x-h,y:a.mr.y+g}};a.mr.corner.br={x:a.mr.corner.tr.x-h,y:a.mr.corner.tr.y+g};a.mr.x+=c;a.mr.y+=c;a.mb.x-=c;a.mb.y-=c;a.mb.corner={tl:{x:a.mb.x,y:a.mb.y},tr:{x:a.mb.x+g,y:a.mb.y+
h},bl:{x:a.mb.x-h,y:a.mb.y+g}};a.mb.corner.br={x:a.mb.corner.tr.x-h,y:a.mb.corner.tr.y+g};a.mb.x+=c;a.mb.y+=c;a=a.mb.corner;a.tl.x-=c;a.tl.y-=c;a.tr.x-=c;a.tr.y-=c;a.br.x-=c;a.br.y-=c;a.bl.x-=c;a.bl.y-=c},toGrayscale:function(){var a=this.get("fill");a&&this.set("overlayFill",(new e.Color(a)).toGrayscale().toRgb());return this},complexity:function(){return 0},getCenter:function(){return{x:this.get("left")+this.width/2,y:this.get("top")+this.height/2}},straighten:function(){this.setAngle(this._getAngleValueForStraighten());
return this},fxStraighten:function(a){a=a||{};var c=function(){},g=a.onComplete||c,h=a.onChange||c,l=this;e.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(b){l.setAngle(b);h()},onComplete:function(){l.setCoords();g()},onStart:function(){l.setActive(false)}});return this},fxRemove:function(a){a||(a={});var c=function(){},g=a.onComplete||c,h=a.onChange||c,l=this;e.util.animate({startValue:this.get("opacity"),endValue:0,
duration:this.FX_DURATION,onChange:function(b){l.set("opacity",b);h()},onComplete:g,onStart:function(){l.setActive(false)}});return this},_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}});e.Object.prototype.rotate=e.Object.prototype.setAngle}})();
(function(){var e=this.fabric||(this.fabric={});if(!e.Line){e.Line=e.util.createClass(e.Object,{type:"line",initialize:function(f,a){f||(f=[0,0,0,0]);this.callSuper("initialize",a);this.set("x1",f[0]);this.set("y1",f[1]);this.set("x2",f[2]);this.set("y2",f[3]);this.set("width",this.x2-this.x1);this.set("height",this.y2-this.y1);this.set("left",this.x1+this.width/2);this.set("top",this.y1+this.height/2)},_render:function(f){f.beginPath();f.moveTo(-this.width/2,-this.height/2);f.lineTo(this.width/2,
this.height/2);var a=f.strokeStyle;f.strokeStyle=f.fillStyle;f.stroke();f.strokeStyle=a},complexity:function(){return 1},toObject:function(){return e.util.object.extend(this.callSuper("toObject"),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})}});e.Element.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" ");e.Line.fromElement=function(f,a){var c=e.parseAttributes(f,e.Element.ATTRIBUTE_NAMES);return new e.Line([c.x1||0,c.y1||0,c.x2||0,c.y2||0],e.util.object.extend(c,
a))};e.Line.fromObject=function(f){return new e.Line([f.x1,f.y1,f.x2,f.y2],f)}}})();
(function(){var e=this.fabric||(this.fabric={}),f=Math.PI*2;if(e.Circle)console.warn("fabric.Circle is already defined.");else{e.Circle=e.util.createClass(e.Object,{type:"circle",initialize:function(a){a=a||{};this.set("radius",a.radius||0);this.callSuper("initialize",a);a=this.get("radius")*2*this.get("scaleX");this.set("width",a).set("height",a)},toObject:function(){return e.util.object.extend(this.callSuper("toObject"),{radius:this.get("radius")})},_render:function(a){a.beginPath();a.arc(0,0,this.radius,
0,f,false);this.fill&&a.fill();this.stroke&&a.stroke()},complexity:function(){return 1}});e.Circle.ATTRIBUTE_NAMES="cx cy r fill fill-opacity stroke stroke-width transform".split(" ");e.Circle.fromElement=function(a,c){var g=e.parseAttributes(a,e.Circle.ATTRIBUTE_NAMES);if(!("radius"in g&&g.radius>0))throw Error("value of `r` attribute is required and can not be negative");return new e.Circle(e.util.object.extend(g,c))};e.Circle.fromObject=function(a){return new e.Circle(a)}}})();
(function(){var e=this.fabric||(this.fabric={});if(!e.Triangle){e.Triangle=e.util.createClass(e.Object,{type:"triangle",initialize:function(f){f=f||{};this.callSuper("initialize",f);this.set("width",f.width||100).set("height",f.height||100)},_render:function(f){f.beginPath();f.moveTo(-this.width/2,this.height/2);f.lineTo(0,-this.height/2);f.lineTo(this.width/2,this.height/2);this.fill&&f.fill();this.stroke&&f.stroke()},complexity:function(){return 1}});e.Triangle.fromObject=function(f){return new e.Triangle(f)}}})();
(function(){var e=this.fabric||(this.fabric={});if(e.Ellipse)console.warn("fabric.Ellipse is already defined.");else{e.Ellipse=e.util.createClass(e.Object,{type:"ellipse",initialize:function(f){f=f||{};this.callSuper("initialize",f);this.set("rx",f.rx||0);this.set("ry",f.ry||0);this.set("width",this.get("rx")*2);this.set("height",this.get("ry")*2)},toObject:function(){return e.util.object.extend(this.callSuper("toObject"),{rx:this.get("rx"),ry:this.get("ry")})},render:function(f,a){if(!(this.rx===
0||this.ry===0))return this.callSuper("render",f,a)},_render:function(f){f.beginPath();f.save();f.transform(1,0,0,this.ry/this.rx,0,0);f.arc(0,0,this.rx,0,Math.PI*2,false);f.restore();this.stroke&&f.stroke();this.fill&&f.fill()},complexity:function(){return 1}});e.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity stroke stroke-width transform".split(" ");e.Ellipse.fromElement=function(f,a){var c=e.parseAttributes(f,e.Ellipse.ATTRIBUTE_NAMES);return new e.Ellipse(e.util.object.extend(c,a))};e.Ellipse.fromObject=
function(f){return new e.Ellipse(f)}}})();
(function(){var e=this.fabric||(this.fabric={});if(!e.Rect){e.Rect=e.util.createClass(e.Object,{type:"rect",options:{rx:0,ry:0},initialize:function(f){this.callSuper("initialize",f);this._initRxRy()},_initRxRy:function(){if(this.options.rx&&!this.options.ry)this.options.ry=this.options.rx;else if(this.options.ry&&!this.options.rx)this.options.rx=this.options.ry},_render:function(f){var a=this.options.rx||0,c=this.options.ry||0,g=-this.width/2,h=-this.height/2,l=this.width,b=this.height;f.beginPath();
f.moveTo(g+a,h);f.lineTo(g+l-a,h);f.bezierCurveTo(g+l,h,g+l,h+c,g+l,h+c);f.lineTo(g+l,h+b-c);f.bezierCurveTo(g+l,h+b,g+l-a,h+b,g+l-a,h+b);f.lineTo(g+a,h+b);f.bezierCurveTo(g,h+b,g,h+b-c,g,h+b-c);f.lineTo(g,h+c);f.bezierCurveTo(g,h,g+a,h,g+a,h);f.closePath();this.fill&&f.fill();this.stroke&&f.stroke()},_normalizeLeftTopProperties:function(f){f.left&&this.set("left",f.left+this.getWidth()/2);f.top&&this.set("top",f.top+this.getHeight()/2);return this},complexity:function(){return 1}});e.Rect.ATTRIBUTE_NAMES=
"x y width height rx ry fill fill-opacity stroke stroke-width transform".split(" ");e.Rect.fromElement=function(f,a){if(!f)return null;var c=e.parseAttributes(f,e.Rect.ATTRIBUTE_NAMES);c=c;c.left=c.left||0;c.top=c.top||0;c=c;var g=new e.Rect(e.util.object.extend(a||{},c));g._normalizeLeftTopProperties(c);return g};e.Rect.fromObject=function(f){return new e.Rect(f)}}})();
(function(){var e=this.fabric||(this.fabric={});if(e.Polyline)console.warn("fabric.Polyline is already defined");else{e.Polyline=e.util.createClass(e.Object,{type:"polyline",initialize:function(a,c){c=c||{};this.set("points",a);this.callSuper("initialize",c);this._calcDimensions()},_calcDimensions:function(){return e.Polygon.prototype._calcDimensions.call(this)},_toOrigin:function(){return e.Polygon.prototype._toOrigin.call(this)},toObject:function(){return e.Polygon.prototype.toObject.call(this)},
_render:function(a){var c;a.beginPath();for(var g=0,h=this.points.length;g<h;g++){c=this.points[g];a.lineTo(c.x,c.y)}this.fill&&a.fill();this.stroke&&a.stroke()},complexity:function(){return this.get("points").length}});var f="fill fill-opacity stroke stroke-width transform".split(" ");e.Polyline.fromElement=function(a,c){if(!a)return null;var g=e.parsePointsAttribute(a.getAttribute("points")),h=e.parseAttributes(a,f);return new e.Polyline(g,e.util.object.extend(h,c))};e.Polyline.fromObject=function(a){return new e.Polyline(a.points,
a)}}})();
(function(){var e=this.fabric||(this.fabric={});if(e.Polygon)console.warn("fabric.Polygon is already defined");else{e.Polygon=e.util.createClass(e.Object,{type:"polygon",initialize:function(f,a){a=a||{};this.points=f;this.callSuper("initialize",a);this._calcDimensions()},_calcDimensions:function(){var f=this.points,a=e.util.array.min(f,"x"),c=e.util.array.min(f,"y"),g=e.util.array.max(f,"x");f=e.util.array.max(f,"y");this.width=g-a;this.height=f-c;this.minX=a;this.minY=c},_toOrigin:function(){this.points=this.points.map(function(f){return{x:f.x-
this.minX,y:f.y-this.minY}},this)},toObject:function(){return e.util.object.extend(this.callSuper("toObject"),{points:this.points.concat()})},_render:function(f){var a;f.beginPath();for(var c=0,g=this.points.length;c<g;c++){a=this.points[c];f.lineTo(a.x,a.y)}this.fill&&f.fill();if(this.stroke){f.closePath();f.stroke()}},complexity:function(){return this.points.length}});e.Polygon.ATTRIBUTE_NAMES="fill fill-opacity stroke stroke-width transform".split(" ");e.Polygon.fromElement=function(f,a){if(!f)return null;
var c=e.parsePointsAttribute(f.getAttribute("points")),g=e.parseAttributes(f,e.Polygon.ATTRIBUTE_NAMES);return new e.Polygon(c,e.util.object.extend(g,a))};e.Polygon.fromObject=function(f){return new e.Polygon(f.points,f)}}})();
(function(){var e=this.fabric||(this.fabric={});if(e.Path)console.warn("fabric.Path is already defined");else if(e.Object){e.Path=e.util.createClass(e.Object,{type:"path",initialize:function(a,c){c=c||{};this.setOptions(c);this._importProperties();this.originalState={};if(!a)throw Error("`path` argument is required");var g=Object.prototype.toString.call(a)==="[object Array]";if(this.path=g?a:a.match&&a.match(/[a-zA-Z][^a-zA-Z]*/g)){g||this._initializeFromArray(c);this.setCoords();c.sourcePath&&this.setSourcePath(c.sourcePath)}},
_initializeFromArray:function(a){var c="width"in a;a="height"in a;this.path=this._parsePath();if(!c||!a){e.util.object.extend(this,this._parseDimensions());if(c)this.width=this.options.width;if(a)this.height=this.options.height}},_render:function(a){for(var c,g=0,h=0,l=0,b=0,d,k,m=-(this.width/2),n=-(this.height/2),o=0,s=this.path.length;o<s;++o){c=this.path[o];switch(c[0]){case "l":g+=c[1];h+=c[2];a.lineTo(g+m,h+n);break;case "L":g=c[1];h=c[2];a.lineTo(g+m,h+n);break;case "h":g+=c[1];a.lineTo(g+
m,h+n);break;case "H":g=c[1];a.lineTo(g+m,h+n);break;case "v":h+=c[1];a.lineTo(g+m,h+n);break;case "V":h=c[1];a.lineTo(g+m,h+n);break;case "m":g+=c[1];h+=c[2];a.moveTo(g+m,h+n);break;case "M":g=c[1];h=c[2];a.moveTo(g+m,h+n);break;case "c":d=g+c[5];k=h+c[6];l=g+c[3];b=h+c[4];a.bezierCurveTo(g+c[1]+m,h+c[2]+n,l+m,b+n,d+m,k+n);g=d;h=k;break;case "C":g=c[5];h=c[6];l=c[3];b=c[4];a.bezierCurveTo(c[1]+m,c[2]+n,l+m,b+n,g+m,h+n);break;case "s":d=g+c[3];k=h+c[4];l=2*g-l;b=2*h-b;a.bezierCurveTo(l+m,b+n,g+c[1]+
m,h+c[2]+n,d+m,k+n);g=d;h=k;break;case "S":d=c[3];k=c[4];l=2*g-l;b=2*h-b;a.bezierCurveTo(l+m,b+n,c[1]+m,c[2]+n,d+m,k+n);g=d;h=k;break;case "q":g+=c[3];h+=c[4];a.quadraticCurveTo(c[1]+m,c[2]+n,g+m,h+n);break;case "Q":g=c[3];h=c[4];l=c[1];b=c[2];a.quadraticCurveTo(l+m,b+n,g+m,h+n);break;case "T":d=g;k=h;g=c[1];h=c[2];l=-l+2*d;b=-b+2*k;a.quadraticCurveTo(l+m,b+n,g+m,h+n);break;case "a":break;case "A":break;case "z":case "Z":a.closePath();break}}},render:function(a,c){a.save();var g=this.transformMatrix;
g&&a.transform(g[0],g[1],g[2],g[3],g[4],g[5]);c||this.transform(a);if(this.overlayFill)a.fillStyle=this.overlayFill;else if(this.fill)a.fillStyle=this.fill;if(this.stroke)a.strokeStyle=this.stroke;a.beginPath();this.stub?this.stub._render(a):this._render(a);this.fill&&a.fill();if(this.options.stroke){a.strokeStyle=this.options.stroke;a.lineWidth=this.options.strokeWidth;a.stroke()}if(!c&&this.active){this.drawBorders(a);this.hideCorners||this.drawCorners(a)}a.restore()},toString:function(){return"#<fabric.Path ("+
this.complexity()+"): "+JSON.stringify({top:this.top,left:this.left})+">"},toObject:function(){var a=e.util.object.extend(this.callSuper("toObject"),{path:this.path});if(this.sourcePath)a.sourcePath=this.sourcePath;if(this.transformMatrix)a.transformMatrix=this.transformMatrix;return a},toDatalessObject:function(){var a=this.toObject();if(this.sourcePath)a.path=this.sourcePath;delete a.sourcePath;return a},complexity:function(){return this.path.length},set:function(a,c){this.stub&&this.stub.set(a,
c);return this.callSuper("set",a,c)},_parsePath:function(){for(var a=[],c,g,h=0,l=this.path.length;h<l;h++){c=this.path[h];g=c.slice(1).trim().replace(/(\d)-/g,"$1###-").split(/\s|,|###/);a.push([c.charAt(0)].concat(g.map(parseFloat)))}return a},_parseDimensions:function(){function a(r){if(r[0]==="H")return r[1];return r[r.length-2]}function c(r){if(r[0]==="V")return r[1];return r[r.length-1]}var g=[],h=[],l,b,d=false,k,m;this.path.forEach(function(r,u){if(r[0]!=="H")l=u===0?a(r):a(this.path[u-1]);
if(r[0]!=="V")b=u===0?c(r):c(this.path[u-1]);if(r[0]===r[0].toLowerCase())d=true;k=d?l+a(r):r[0]==="V"?l:a(r);m=d?b+c(r):r[0]==="H"?b:c(r);var q=parseInt(k,10);isNaN(q)||g.push(q);q=parseInt(m,10);isNaN(q)||h.push(q)},this);var n=e.util.array.min(g),o=e.util.array.min(h),s=deltaY=0;n={top:o-deltaY,left:n-s,bottom:e.util.array.max(h)-deltaY,right:e.util.array.max(g)-s};n.width=n.right-n.left;n.height=n.bottom-n.top;return n}});e.Path.fromObject=function(a){return new e.Path(a.path,a)};var f=e.Path.ATTRIBUTE_NAMES=
"d fill fill-opacity fill-rule stroke stroke-width transform".split(" ");e.Path.fromElement=function(a,c){var g=e.parseAttributes(a,f),h=g.d;delete g.d;return new e.Path(h,e.util.object.extend(g,c))}}else console.warn("fabric.Path requires fabric.Object")})();
(function(){var e=this.fabric||(this.fabric={});if(e.PathGroup)console.warn("fabric.PathGroup is already defined");else{e.PathGroup=e.util.createClass(e.Path,{type:"path-group",forceFillOverwrite:false,initialize:function(f,a){a=a||{};this.originalState={};this.paths=f;this.setOptions(a);this.initProperties();this.setCoords();a.sourcePath&&this.setSourcePath(a.sourcePath)},initProperties:function(){this.stateProperties.forEach(function(f){if(f==="fill")this.set(f,this.options[f]);else if(f==="angle")this.setAngle(this.options[f]);
else this[f]=this.options[f]},this)},render:function(f){if(this.stub){f.save();this.transform(f);this.stub.render(f,false);if(this.active){this.drawBorders(f);this.drawCorners(f)}}else{f.save();var a=this.transformMatrix;a&&f.transform(a[0],a[1],a[2],a[3],a[4],a[5]);this.transform(f);a=0;for(var c=this.paths.length;a<c;++a)this.paths[a].render(f,true);if(this.active){this.drawBorders(f);this.hideCorners||this.drawCorners(f)}}f.restore()},set:function(f,a){if((f==="fill"||f==="overlayFill")&&this.isSameColor()){this[f]=
a;for(var c=this.paths.length;c--;)this.paths[c].set(f,a)}else e.Object.prototype.set.call(this,f,a);return this},toObject:function(){return e.util.object.extend(e.Object.prototype.toObject.call(this),{paths:e.util.array.invoke(this.getObjects(),"clone"),sourcePath:this.sourcePath})},toDatalessObject:function(){var f=this.toObject();if(this.sourcePath)f.paths=this.sourcePath;return f},toString:function(){return"#<fabric.PathGroup ("+this.complexity()+"): { top: "+this.top+", left: "+this.left+" }>"},
isSameColor:function(){var f=this.getObjects()[0].get("fill");return this.getObjects().every(function(a){return a.get("fill")===f})},complexity:function(){return this.paths.reduce(function(f,a){return f+(a&&a.complexity?a.complexity():0)},0)},toGrayscale:function(){for(var f=this.paths.length;f--;)this.paths[f].toGrayscale();return this},getObjects:function(){return this.paths}});e.PathGroup.fromObject=function(f){for(var a=f.paths,c=0,g=a.length;c<g;c++)if(!(a[c]instanceof e.Object)){var h=a[c].type.camelize().capitalize();
a[c]=Canvas[h].fromObject(a[c])}return new e.PathGroup(a,f)}}})();
(function(){var e=this.fabric||(this.fabric={});if(!e.Group){e.Group=e.util.createClass(e.Object,{type:"group",initialize:function(f,a){this.objects=f||[];this.originalState={};this.callSuper("initialize");this._calcBounds();this._updateObjectsCoords();a&&e.util.object.extend(this,a);this._setOpacityIfSame();this.setCoords(true);this.saveCoords();this.activateAllObjects()},_updateObjectsCoords:function(){var f=this.left,a=this.top;this.forEachObject(function(c){var g=c.get("left"),h=c.get("top");
c.set("originalLeft",g);c.set("originalTop",h);c.set("left",g-f);c.set("top",h-a);c.setCoords();c.hideCorners=true},this)},toString:function(){return"#<fabric.Group: ("+this.complexity()+")>"},getObjects:function(){return this.objects},add:function(f){this._restoreObjectsState();this.objects.push(f);f.setActive(true);this._calcBounds();this._updateObjectsCoords();return this},remove:function(f){this._restoreObjectsState();e.util.removeFromArray(this.objects,f);f.setActive(false);this._calcBounds();
this._updateObjectsCoords();return this},size:function(){return this.getObjects().length},set:function(f,a){if(typeof a=="function")this.set(f,a(this[f]));else if(f==="fill"||f==="opacity"){var c=this.objects.length;for(this[f]=a;c--;)this.objects[c].set(f,a)}else this[f]=a;return this},contains:function(f){return this.objects.indexOf(f)>-1},toObject:function(){return e.util.object.extend(this.callSuper("toObject"),{objects:e.util.array.invoke(this.objects,"clone")})},render:function(f){f.save();
this.transform(f);for(var a=Math.max(this.scaleX,this.scaleY),c=0,g=this.objects.length;c<g;c++){var h=this.objects[c].borderScaleFactor;this.objects[c].borderScaleFactor=a;this.objects[c].render(f);this.objects[c].borderScaleFactor=h}this.hideBorders||this.drawBorders(f);this.hideCorners||this.drawCorners(f);f.restore();this.setCoords()},item:function(f){return this.getObjects()[f]},complexity:function(){return this.getObjects().reduce(function(f,a){f+=typeof a.complexity=="function"?a.complexity():
0;return f},0)},_restoreObjectsState:function(){this.objects.forEach(this._restoreObjectState,this);return this},_restoreObjectState:function(f){var a=this.get("left"),c=this.get("top"),g=this.getAngle()*(Math.PI/180);f.get("originalLeft");f.get("originalTop");var h=Math.cos(g)*f.get("top")+Math.sin(g)*f.get("left");g=-Math.sin(g)*f.get("top")+Math.cos(g)*f.get("left");f.setAngle(f.getAngle()+this.getAngle());f.set("left",a+g*this.get("scaleX"));f.set("top",c+h*this.get("scaleY"));f.set("scaleX",
f.get("scaleX")*this.get("scaleX"));f.set("scaleY",f.get("scaleY")*this.get("scaleY"));f.setCoords();f.hideCorners=false;f.setActive(false);f.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(f){f.setCoords()});
return this},activateAllObjects:function(){return this.setActive(true)},setActive:function(f){this.forEachObject(function(a){a.setActive(f)});return this},forEachObject:function(f,a){for(var c=this.getObjects(),g=c.length;g--;)f.call(a,c[g],g,c);return this},_setOpacityIfSame:function(){var f=this.getObjects(),a=f[0]?f[0].get("opacity"):1;if(f.every(function(c){return c.get("opacity")===a}))this.opacity=a},_calcBounds:function(){var f=[],a=[],c,g;g=0;for(var h=this.objects.length;g<h;++g){c=this.objects[g];
c.setCoords();for(var l in c.oCoords){f.push(c.oCoords[l].x);a.push(c.oCoords[l].y)}}c=e.util.array.min(f);g=e.util.array.max(f);f=e.util.array.min(a);a=e.util.array.max(a);g=g-c;a=a-f;this.width=g;this.height=a;this.left=c+g/2;this.top=f+a/2},containsPoint:function(f){var a=this.get("width")/2,c=this.get("height")/2,g=this.get("left"),h=this.get("top");return g-a<f.x&&g+a>f.x&&h-c<f.y&&h+c>f.y},toGrayscale:function(){for(var f=this.objects.length;f--;)this.objects[f].toGrayscale()}});e.Group.fromObject=
function(f){return new e.Group(f.objects,f)}}})();
(function(){var e=this.fabric||(this.fabric={});if(e.Text)console.warn("fabric.Text is already defined");else if(e.Object){e.Text=e.util.createClass(e.Object,{options:{top:10,left:10,fontsize:20,fontweight:100,fontfamily:"Modernist_One_400",path:null},type:"text",initialize:function(f,a){this.originalState={};this.initStateProperties();this.text=f;this.setOptions(a);e.util.object.extend(this,this.options);this.theta=this.angle*(Math.PI/180);this.width=this.getWidth();this.setCoords()},initStateProperties:function(){var f;
if((f=this.constructor)&&(f=f.superclass)&&(f=f.prototype)&&(f=f.stateProperties)&&f.clone){this.stateProperties=f.clone();this.stateProperties.push("fontfamily","fontweight","path")}},toString:function(){return"#<fabric.Text ("+this.complexity()+"): "+JSON.stringify({text:this.text,fontfamily:this.fontfamily})+">"},_render:function(f){var a=Cufon.textOptions||(Cufon.textOptions={});a.left=this.left;a.top=this.top;a.context=f;a.color=this.fill;var c=this._initDummyElement();this.transform(f);Cufon.replaceElement(c,
{separate:"none",fontFamily:this.fontfamily});this.width=a.width;this.height=a.height},_initDummyElement:function(){var f=document.createElement("div");f.innerHTML=this.text;f.style.fontSize="40px";f.style.fontWeight="400";f.style.fontStyle="normal";f.style.letterSpacing="normal";f.style.color="#000000";f.style.fontWeight="600";f.style.fontFamily="Verdana";return f},render:function(f){f.save();this._render(f);if(this.active){this.drawBorders(f);this.drawCorners(f)}f.restore()},toObject:function(){return e.util.object.extend(this.callSuper("toObject"),
{text:this.text,fontsize:this.fontsize,fontweight:this.fontweight,fontfamily:this.fontfamily,path:this.path})},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,a){this[f]=a;if(f==="fontfamily")this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+a+"$3");return this}});e.Text.fromObject=function(f){return new e.Text(f.text,
e.util.object.clone(f))};e.Text.fromElement=function(){}}else console.warn("fabric.Text requires fabric.Object")})();
(function(){if(!this.fabric)this.fabric={};if(this.fabric.Image)console.warn("fabric.Image is already defined.");else if(fabric.Object){fabric.Image=fabric.util.createClass(fabric.Object,{maxwidth:null,maxheight:null,active:false,bordervisibility:false,cornervisibility:false,type:"image",__isGrayscaled:false,initialize:function(e,f){this.callSuper("initialize",f);this._initElement(e);this._initConfig(f||{})},getElement:function(){return this._element},setElement:function(e){this._element=e;return this},
getNormalizedSize:function(e,f,a){if(a&&f&&e.width>e.height&&e.width/e.height<f/a){normalizedWidth=Math.floor(e.width*a/e.height);normalizedHeight=a}else if(a&&(e.height==e.width||e.height>e.width||e.height>a)){normalizedWidth=Math.floor(e.width*a/e.height);normalizedHeight=a}else if(f&&f<e.width){normalizedHeight=Math.floor(e.height*f/e.width);normalizedWidth=f}else{normalizedWidth=e.width;normalizedHeight=e.height}return{width:normalizedWidth,height:normalizedHeight}},getOriginalSize:function(){var e=
this.getElement();return{width:e.width,height:e.height}},setBorderVisibility:function(e){this._resetWidthHeight();this._adjustWidthHeightToBorders(e);this.setCoords()},setCornersVisibility:function(e){this.cornervisibility=!!e},render:function(e,f){e.save();f||this.transform(e);this._render(e);if(this.active&&!f){this.drawBorders(e);this.hideCorners||this.drawCorners(e)}e.restore()},toObject:function(){return fabric.util.object.extend(this.callSuper("toObject"),{src:this.getSrc()})},getSrc:function(){return this.getElement().src},
toString:function(){return'#<fabric.Image: { src: "'+this.getSrc()+'" }>'},clone:function(e){this.constructor.fromObject(this.toObject(),e)},toGrayscale:function(e){if(!this.__isGrayscaled){var f=this.getElement(),a=document.createElement("canvas"),c=document.createElement("img"),g=this;a.width=f.width;a.height=f.height;a.getContext("2d").drawImage(f,0,0);fabric.Element.toGrayscale(a);c.onload=function(){g.setElement(c);e&&e();c.onload=a=f=imageData=null};c.width=f.width;c.height=f.height;c.src=a.toDataURL("image/png");
this.__isGrayscaled=true;return this}},_render:function(e){var f=this.getOriginalSize();e.drawImage(this.getElement(),-f.width/2,-f.height/2,f.width,f.height)},_adjustWidthHeightToBorders:function(e){if(e){this.currentBorder=this.borderwidth;this.width+=2*this.currentBorder;this.height+=2*this.currentBorder}else this.currentBorder=0},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width);this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e));
fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){this.setOptions(e);this._setBorder();this._setWidthHeight(e)},_setBorder:function(){this.currentBorder=this.bordervisibility?this.borderwidth:0},_setWidthHeight:function(){var e=2*this.currentBorder;this.width=(this.getElement().width||0)+e;this.height=(this.getElement().height||0)+e}});fabric.Image.CSS_CANVAS="canvas-img";fabric.Image.fromObject=function(e,f){var a=document.createElement("img"),c=e.src;if(e.width)a.width=
e.width;if(e.height)a.height=e.height;a.onload=function(){f&&f(new fabric.Image(a,e));a=a.onload=null};a.src=c};fabric.Image.fromURL=function(e,f,a){var c=document.createElement("img");c.onload=function(){f&&f(new fabric.Image(c,a));c=c.onload=null};c.src=e}}else console.warn("fabric.Object is required for fabric.Image initialization")})();

BIN
dist/all.min-via-goog-cc.js.gz vendored Normal file

Binary file not shown.

BIN
dist/all.min.js.gz vendored Normal file

Binary file not shown.

View file

@ -35,7 +35,6 @@
radius: getRandomInt(10, 50),
fill: '#' + getRandomColor(),
opacity: getRandomNum(0.5, 1),
angle: getRandomInt(0, 180),
top: getRandomInt(0 + offset, c._oConfig.height - offset),
left: getRandomInt(0 + offset, c._oConfig.width - offset)
}));