From 581d5a54b970fad886a13b94ab4f05f9e70bc561 Mon Sep 17 00:00:00 2001 From: kangax Date: Tue, 31 Jul 2012 20:55:49 +0200 Subject: [PATCH] Fix compatibility with Node (including `loadSVGFromString`). --- HEADER.js | 2 +- dist/all.js | 35 ++++++++++++++++++++++------------- dist/all.min.js | 4 ++-- dist/all.min.js.gz | Bin 40979 -> 41012 bytes package.json | 2 +- src/static_canvas.class.js | 2 ++ src/util/dom_style.js | 19 +++++++++++-------- test.js | 4 ++++ 8 files changed, 43 insertions(+), 25 deletions(-) diff --git a/HEADER.js b/HEADER.js index 939fba33..15e2b159 100644 --- a/HEADER.js +++ b/HEADER.js @@ -1,6 +1,6 @@ /*! Fabric.js Copyright 2008-2012, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "0.8.41" }; +var fabric = fabric || { version: "0.8.42" }; if (typeof exports != 'undefined') { exports.fabric = fabric; diff --git a/dist/all.js b/dist/all.js index d90648bd..748f4a2d 100644 --- a/dist/all.js +++ b/dist/all.js @@ -1,7 +1,7 @@ /* build: `node build.js modules=ALL` */ /*! Fabric.js Copyright 2008-2012, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "0.8.41" }; +var fabric = fabric || { version: "0.8.42" }; if (typeof exports != 'undefined') { exports.fabric = fabric; @@ -2675,7 +2675,7 @@ fabric.util.string = { })(this); (function () { - + /** * Cross-browser wrapper for setting element's style * @method setStyle @@ -2686,10 +2686,13 @@ fabric.util.string = { */ function setStyle(element, styles) { var elementStyle = element.style, match; + if (!elementStyle) { + return element; + } if (typeof styles === 'string') { element.style.cssText += ';' + styles; - return styles.indexOf('opacity') > -1 - ? setOpacity(element, styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) + return styles.indexOf('opacity') > -1 + ? setOpacity(element, styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; } for (var property in styles) { @@ -2697,8 +2700,8 @@ fabric.util.string = { setOpacity(element, styles[property]); } else { - var normalizedProperty = (property === 'float' || property === 'cssFloat') - ? (typeof elementStyle.styleFloat === 'undefined' ? 'cssFloat' : 'styleFloat') + var normalizedProperty = (property === 'float' || property === 'cssFloat') + ? (typeof elementStyle.styleFloat === 'undefined' ? 'cssFloat' : 'styleFloat') : property; elementStyle[normalizedProperty] = styles[property]; } @@ -2707,12 +2710,12 @@ fabric.util.string = { } var parseEl = fabric.document.createElement('div'), - supportsOpacity = typeof parseEl.style.opacity === 'string', + supportsOpacity = typeof parseEl.style.opacity === 'string', supportsFilters = typeof parseEl.style.filter === 'string', view = fabric.document.defaultView, supportsGCS = view && typeof view.getComputedStyle !== 'undefined', reOpacity = /alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/, - + /** @ignore */ setOpacity = function (element) { return element; }; @@ -2742,7 +2745,7 @@ fabric.util.string = { } fabric.util.setStyle = setStyle; - + })(); (function() { @@ -5062,6 +5065,8 @@ fabric.util.string = { this.width = parseInt(this.lowerCanvasEl.width, 10) || 0; this.height = parseInt(this.lowerCanvasEl.height, 10) || 0; + if (!this.lowerCanvasEl.style) return; + this.lowerCanvasEl.style.width = this.width + 'px'; this.lowerCanvasEl.style.height = this.height + 'px'; }, @@ -13174,10 +13179,14 @@ fabric.Image.filters.GradientTransparency.fromObject = function(object) { 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.loadSVGFromString(body, callback); + }); + }; + + fabric.loadSVGFromString = function(string, callback) { + var doc = new DOMParser().parseFromString(string); + fabric.parseSVGDocument(doc.documentElement, function(results, options) { + callback(results, options); }); }; diff --git a/dist/all.min.js b/dist/all.min.js index 98bb7801..022fb3a9 100644 --- a/dist/all.min.js +++ b/dist/all.min.js @@ -1,7 +1,7 @@ /* Fabric.js Copyright 2008-2012, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric=fabric||{version:"0.8.41"};if(typeof exports!="undefined"){exports.fabric=fabric}if(typeof document!="undefined"&&typeof window!="undefined"){fabric.document=document;fabric.window=window}else{fabric.document=require("jsdom").jsdom("");fabric.window=fabric.document.createWindow()}fabric.isTouchSupported="ontouchstart" in fabric.document.documentElement;fabric.isLikelyNode=typeof Buffer!=="undefined"&&typeof window==="undefined"; +var fabric=fabric||{version:"0.8.42"};if(typeof exports!="undefined"){exports.fabric=fabric}if(typeof document!="undefined"&&typeof window!="undefined"){fabric.document=document;fabric.window=window}else{fabric.document=require("jsdom").jsdom("");fabric.window=fabric.document.createWindow()}fabric.isTouchSupported="ontouchstart" in fabric.document.documentElement;fabric.isLikelyNode=typeof Buffer!=="undefined"&&typeof window==="undefined"; /* * 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:Jz){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)+(Cufon.fonts[ab.family].offsetTop||0));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;Sw?p:(o-n);s(t(currentTime,m,byValue,p));if(o>w||q()){x.onComplete&&x.onComplete();return}k(r)})()}var f=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(n,m){fabric.window.setTimeout(n,1000/60)};var k=function(){return f.apply(fabric.window,arguments)};function b(n,p,o){if(n){var m=new Image();m.onload=function(){p&&p.call(o,m);m=m.onload=null};m.src=n}else{p&&p.call(o,n)}}function i(o,s){function n(t){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(t))]}var q=[],p=0,m=o.filter(function(t){return n(t.type).async}).length;var r=this;o.forEach(function(v,u){if(!v.type){return}var t=n(v.type);if(t.async){t.fromObject(v,function(w){q[u]=w;if(++p===m){if(s){s(q)}}})}else{q[u]=t.fromObject(v)}});if(m===0&&s){s(q)}}function a(o,n,p){var m=o.length>1?new fabric.PathGroup(o,n):o[0];if(typeof p!=="undefined"){m.setSourcePath(p)}return m}fabric.util.removeFromArray=j;fabric.util.degreesToRadians=c;fabric.util.toFixed=e;fabric.util.getRandomInt=g;fabric.util.falseFunction=l;fabric.util.animate=d;fabric.util.requestAnimFrame=k;fabric.util.loadImage=b;fabric.util.enlivenObjects=i;fabric.util.groupSVGElements=a})();(function(){var d=Array.prototype.slice;if(!Array.prototype.indexOf){Array.prototype.indexOf=function(g){if(this===void 0||this===null){throw new TypeError()}var h=Object(this),e=h.length>>>0;if(e===0){return -1}var i=0;if(arguments.length>0){i=Number(arguments[1]);if(i!==i){i=0}else{if(i!==0&&i!==(1/0)&&i!==-(1/0)){i=(i>0||-1)*Math.floor(Math.abs(i))}}}if(i>=e){return -1}var f=i>=0?i:Math.max(e-Math.abs(i),0);for(;f>>0;f>>0;g>>0;f>>0;f>>0;g>>0,f=0,h;if(arguments.length>1){h=arguments[1]}else{do{if(f in this){h=this[f++];break}if(++f>=e){throw new TypeError()}}while(true)}for(;f=e){e=h[f][g]}}}else{while(f--){if(h[f]>=e){e=h[f]}}}return e}function c(h,g){if(!h||h.length===0){return undefined}var f=h.length-1,e=g?h[f][g]:h[f];if(g){while(f--){if(h[f][g]/g,">")}fabric.util.string={camelize:b,capitalize:c,escapeXml:a}}());(function(){var c=Array.prototype.slice,a=Function.prototype.apply,b=function(){};if(!Function.prototype.bind){Function.prototype.bind=function(d){var g=this,e=c.call(arguments,1),f;if(e.length){f=function(){return a.call(g,this instanceof b?this:d,e.concat(c.call(arguments)))}}else{f=function(){return a.call(g,this instanceof b?this:d,arguments)}}b.prototype=this.prototype;f.prototype=new b;return f}}})();(function(){var f=Array.prototype.slice,e=function(){};var c=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();var b=function(g,j,h){for(var i in j){if(i in g.prototype&&typeof g.prototype[i]=="function"){g.prototype[i]=(function(k){return function(){var m=this.constructor.superclass;this.constructor.superclass=h;var l=j[k].apply(this,arguments);this.constructor.superclass=m;if(k!=="initialize"){return l}}})(i)}else{g.prototype[i]=j[i]}if(c){if(j.toString!==Object.prototype.toString){g.prototype.toString=j.toString}if(j.valueOf!==Object.prototype.valueOf){g.prototype.valueOf=j.valueOf}}}};function a(){}function d(){var k=null,j=f.call(arguments,0);if(typeof j[0]==="function"){k=j.shift()}function g(){this.initialize.apply(this,arguments)}g.superclass=k;g.subclasses=[];if(k){a.prototype=k.prototype;g.prototype=new a;k.subclasses.push(g)}for(var h=0,l=j.length;h-1?c(j,l.match(/opacity:\s*(\d?\.?\d*)/)[1]):j}for(var m in l){if(m==="opacity"){c(j,l[m])}else{var k=(m==="float"||m==="cssFloat")?(typeof n.styleFloat==="undefined"?"cssFloat":"styleFloat"):m;n[k]=l[m]}}return j}var h=fabric.document.createElement("div"),g=typeof h.style.opacity==="string",b=typeof h.style.filter==="string",a=fabric.document.defaultView,f=a&&typeof a.getComputedStyle!=="undefined",d=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,c=function(i){return i};if(g){c=function(i,j){i.style.opacity=j;return i}}else{if(b){c=function(i,j){var k=i.style;if(i.currentStyle&&!i.currentStyle.hasLayout){k.zoom=1}if(d.test(k.filter)){j=j>=0.9999?"":("alpha(opacity="+(j*100)+")");k.filter=k.filter.replace(d,j)}else{k.filter+=" alpha(opacity="+(j*100)+")"}return i}}}fabric.util.setStyle=e})();(function(){var h=Array.prototype.slice;function g(j){return typeof j==="string"?fabric.document.getElementById(j):j}function b(j){return h.call(j,0)}try{var i=b(fabric.document.childNodes) instanceof Array}catch(a){}if(!i){b=function(k){var j=new Array(k.length),l=k.length;while(l--){j[l]=k[l]}return j}}function c(k,j){var l=fabric.document.createElement(k);for(var m in j){if(m==="class"){l.className=j[m]}else{if(m==="for"){l.htmlFor=j[m]}else{l.setAttribute(m,j[m])}}}return l}function f(j,k){if((" "+j.className+" ").indexOf(" "+k+" ")===-1){j.className+=(j.className?" ":"")+k}}function e(k,l,j){if(typeof l==="string"){l=c(l,j)}if(k.parentNode){k.parentNode.replaceChild(l,k)}l.appendChild(k);return l}function d(k){var j=0,l=0;do{j+=k.offsetTop||0;l+=k.offsetLeft||0;k=k.offsetParent}while(k);return({left:l,top:j})}(function(){var k=fabric.document.documentElement.style;var l="userSelect" in k?"userSelect":"MozUserSelect" in k?"MozUserSelect":"WebkitUserSelect" in k?"WebkitUserSelect":"KhtmlUserSelect" in k?"KhtmlUserSelect":"";function m(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=fabric.util.falseFunction}if(l){n.style[l]="none"}else{if(typeof n.unselectable=="string"){n.unselectable="on"}}return n}function j(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=null}if(l){n.style[l]=""}else{if(typeof n.unselectable=="string"){n.unselectable=""}}return n}fabric.util.makeElementUnselectable=m;fabric.util.makeElementSelectable=j})();(function(){function j(k,o){var m=fabric.document.getElementsByTagName("head")[0],l=fabric.document.createElement("script"),n=true;l.type="text/javascript";l.setAttribute("runat","server");l.onload=l.onreadystatechange=function(p){if(n){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete"){return}n=false;o(p||fabric.window.event);l=l.onload=l.onreadystatechange=null}};l.src=k;m.appendChild(l)}fabric.util.getScript=j})();fabric.util.getById=g;fabric.util.toArray=b;fabric.util.makeElement=c;fabric.util.addClass=f;fabric.util.wrapElement=e;fabric.util.getElementOffset=d})();(function(){function d(e,f){return e+(/\?/.test(e)?"&":"?")+f}var c=(function(){var h=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest()}];for(var e=h.length;e--;){try{var g=h[e]();if(g){return h[e]}}catch(f){}}})();function a(){}function b(g,f){f||(f={});var j=f.method?f.method.toUpperCase():"GET",i=f.onComplete||function(){},h=c(),e;h.onreadystatechange=function(){if(h.readyState===4){i(h);h.onreadystatechange=a}};if(j==="GET"){e=null;if(typeof f.parameters=="string"){g=d(g,f.parameters)}}h.open(j,g,true);if(j==="POST"||j==="PUT"){h.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}h.send(e);return h}fabric.util.request=b})();(function(){function d(F,E,H,G){return H*(F/=G)*F+E}function l(F,E,H,G){return -H*(F/=G)*(F-2)+E}function r(F,E,H,G){if((F/=G/2)<1){return H/2*F*F+E}return -H/2*((--F)*(F-2)-1)+E}function B(F,E,H,G){return H*(F/=G)*F*F+E}function q(F,E,H,G){return H*((F=F/G-1)*F*F+1)+E}function u(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F+E}return H/2*((F-=2)*F*F+2)+E}function t(F,E,H,G){return H*(F/=G)*F*F*F+E}function g(F,E,H,G){return -H*((F=F/G-1)*F*F*F-1)+E}function k(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F+E}return -H/2*((F-=2)*F*F*F-2)+E}function y(F,E,H,G){return H*(F/=G)*F*F*F*F+E}function j(F,E,H,G){return H*((F=F/G-1)*F*F*F*F+1)+E}function n(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F*F+E}return H/2*((F-=2)*F*F*F*F+2)+E}function f(F,E,H,G){return -H*Math.cos(F/G*(Math.PI/2))+H+E}function o(F,E,H,G){return H*Math.sin(F/G*(Math.PI/2))+E}function v(F,E,H,G){return -H/2*(Math.cos(Math.PI*F/G)-1)+E}function D(F,E,H,G){return(F==0)?E:H*Math.pow(2,10*(F/G-1))+E}function c(F,E,H,G){return(F==G)?E+H:H*(-Math.pow(2,-10*F/G)+1)+E}function i(F,E,H,G){if(F==0){return E}if(F==G){return E+H}if((F/=G/2)<1){return H/2*Math.pow(2,10*(F-1))+E}return H/2*(-Math.pow(2,-10*--F)+2)+E}function h(F,E,H,G){return -H*(Math.sqrt(1-(F/=G)*F)-1)+E}function p(F,E,H,G){return H*Math.sqrt(1-(F=F/G-1)*F)+E}function x(F,E,H,G){if((F/=G/2)<1){return -H/2*(Math.sqrt(1-F*F)-1)+E}return H/2*(Math.sqrt(1-(F-=2)*F)+1)+E}function s(G,E,K,J){var H=1.70158;var I=0;var F=K;if(G==0){return E}if((G/=J)==1){return E+K}if(!I){I=J*0.3}if(F-1;w=w.split(/\s+/);var u=[];if(y){for(var v=0,t=w.length;v/i,""))}if(!w.documentElement){return}h.parseSVGDocument(w.documentElement,function(z,y){k.set(t,{objects:h.util.array.invoke(z,"toObject"),options:y});v(z,y)})}}function b(v){var u=v.objects,t=v.options;u=u.map(function(w){return h[f(w.type)].fromObject(w)});return({objects:u,options:t})}function n(t,w){t=t.trim();var u;if(typeof DOMParser!=="undefined"){var v=new DOMParser();if(v&&v.parseFromString){u=v.parseFromString(t,"text/xml")}}else{if(h.window.ActiveXObject){var u=new ActiveXObject("Microsoft.XMLDOM");u.async="false";u.loadXML(t.replace(//i,""))}}h.parseSVGDocument(u.documentElement,function(y,x){w(y,x)})}function m(w){var u="";for(var v=0,t=w.length;v",'",""].join("")}return u}p(h,{parseAttributes:e,parseElements:g,parseStyleAttribute:i,parsePointsAttribute:s,getCSSRules:d,loadSVGFromURL:c,loadSVGFromString:n,createSVGFontFacesMarkup:m})})(typeof exports!="undefined"?exports:this);(function(){function c(h){var g=h.getAttribute("style");if(g){var k=g.split(/\s*;\s*/);if(k[k.length-1]===""){k.pop()}for(var f=k.length;f--;){var e=k[f].split(/\s*:\s*/),d=e[0].trim(),j=e[1].trim();if(d==="stop-color"){return j}}}}fabric.Gradient={create:function(l,m){m||(m={});var f=m.x1||0,k=m.y1||0,e=m.x2||l.canvas.width,i=m.y2||0,g=m.colorStops;var j=l.createLinearGradient(f,k,e,i);for(var h in g){var d=g[h];j.addColorStop(parseFloat(h),d)}return j},fromElement:function(d,m,l){var j=d.getElementsByTagName("stop"),d,f,e={},g,k={x1:d.getAttribute("x1")||0,y1:d.getAttribute("y1")||0,x2:d.getAttribute("x2")||"100%",y2:d.getAttribute("y2")||0};for(var h=j.length;h--;){d=j[h];f=d.getAttribute("offset");f=parseFloat(f)/(/%$/.test(f)?100:1);e[f]=c(d)||d.getAttribute("stop-color")}a(l,k);return fabric.Gradient.create(m,{x1:k.x1,y1:k.y1,x2:k.x2,y2:k.y2,colorStops:e})},forObject:function(g,d,e){e||(e={});a(g,e);var f=fabric.Gradient.create(d,{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,colorStops:e.colorStops});return f}};function a(f,e){for(var g in e){if(typeof e[g]==="string"&&/^\d+%$/.test(e[g])){var d=parseFloat(e[g],10);if(g==="x1"||g==="x2"){e[g]=f.width*d/100}else{if(g==="y1"||g==="y2"){e[g]=f.height*d/100}}}if(g==="x1"||g==="x2"){e[g]-=f.width/2}else{if(g==="y1"||g==="y2"){e[g]-=f.height/2}}}}function b(j){var f=j.getElementsByTagName("linearGradient"),d=j.getElementsByTagName("radialGradient"),g,h={};for(var e=f.length;e--;){g=f[e];h[g.id]=g}for(var e=d.length;e--;){g=d[e];h[g.id]=g}return h}fabric.getGradientDefs=b})();(function(b){var c=b.fabric||(b.fabric={});if(c.Point){c.warn("fabric.Point is already defined");return}c.Point=a;function a(d,e){if(arguments.length>0){this.init(d,e)}}a.prototype={constructor:a,init:function(d,e){this.x=d;this.y=e},add:function(d){return new a(this.x+d.x,this.y+d.y)},addEquals:function(d){this.x+=d.x;this.y+=d.y;return this},scalarAdd:function(d){return new a(this.x+d,this.y+d)},scalarAddEquals:function(d){this.x+=d;this.y+=d;return this},subtract:function(d){return new a(this.x-d.x,this.y-d.y)},subtractEquals:function(d){this.x-=d.x;this.y-=d.y;return this},scalarSubtract:function(d){return new a(this.x-d,this.y-d)},scalarSubtractEquals:function(d){this.x-=d;this.y-=d;return this},multiply:function(d){return new a(this.x*d,this.y*d)},multiplyEquals:function(d){this.x*=d;this.y*=d;return this},divide:function(d){return new a(this.x/d,this.y/d)},divideEquals:function(d){this.x/=d;this.y/=d;return this},eq:function(d){return(this.x==d.x&&this.y==d.y)},lt:function(d){return(this.xd.x&&this.y>d.y)},gte:function(d){return(this.x>=d.x&&this.y>=d.y)},lerp:function(e,d){return new a(this.x+(e.x-this.x)*d,this.y+(e.y-this.y)*d)},distanceFrom:function(f){var e=this.x-f.x,d=this.y-f.y;return Math.sqrt(e*e+d*d)},min:function(d){return new a(Math.min(this.x,d.x),Math.min(this.y,d.y))},max:function(d){return new a(Math.max(this.x,d.x),Math.max(this.y,d.y))},toString:function(){return this.x+","+this.y},setXY:function(d,e){this.x=d;this.y=e},setFromPoint:function(d){this.x=d.x;this.y=d.y},swap:function(e){var d=this.x,f=this.y;this.x=e.x;this.y=e.y;e.x=d;e.y=f}}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Intersection){b.warn("fabric.Intersection is already defined");return}function c(d){if(arguments.length>0){this.init(d)}}b.Intersection=c;b.Intersection.prototype={init:function(d){this.status=d;this.points=[]},appendPoint:function(d){this.points.push(d)},appendPoints:function(d){this.points=this.points.concat(d)}};b.Intersection.intersectLineLine=function(h,f,l,k){var m,i=(k.x-l.x)*(h.y-l.y)-(k.y-l.y)*(h.x-l.x),j=(f.x-h.x)*(h.y-l.y)-(f.y-h.y)*(h.x-l.x),g=(k.y-l.y)*(f.x-h.x)-(k.x-l.x)*(f.y-h.y);if(g!=0){var e=i/g,d=j/g;if(0<=e&&e<=1&&0<=d&&d<=1){m=new c("Intersection");m.points.push(new b.Point(h.x+e*(f.x-h.x),h.y+e*(f.y-h.y)))}else{m=new c("No Intersection")}}else{if(i==0||j==0){m=new c("Coincident")}else{m=new c("Parallel")}}return m};b.Intersection.intersectLinePolygon=function(e,d,l){var m=new c("No Intersection"),f=l.length;for(var h=0;h0){m.status="Intersection"}return m};b.Intersection.intersectPolygonPolygon=function(j,h){var f=new c("No Intersection"),l=j.length;for(var k=0;k0){f.status="Intersection"}return f};b.Intersection.intersectPolygonRectangle=function(n,e,d){var g=e.min(d),m=e.max(d),f=new b.Point(m.x,g.y),l=new b.Point(g.x,m.y),k=c.intersectLinePolygon(g,f,n),j=c.intersectLinePolygon(f,m,n),i=c.intersectLinePolygon(m,l,n),h=c.intersectLinePolygon(l,g,n),o=new c("No Intersection");o.appendPoints(k.points);o.appendPoints(j.points);o.appendPoints(i.points);o.appendPoints(h.points);if(o.points.length>0){o.status="Intersection"}return o}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Color){b.warn("fabric.Color is already defined.");return}function c(d){if(!d){this.setSource([0,0,0,1])}else{this._tryParsingColor(d)}}b.Color=c;b.Color.prototype={_tryParsingColor:function(d){var e=c.sourceFromHex(d);if(!e){e=c.sourceFromRgb(d)}if(e){this.setSource(e)}},getSource:function(){return this._source},setSource:function(d){this._source=d},toRgb:function(){var d=this.getSource();return"rgb("+d[0]+","+d[1]+","+d[2]+")"},toRgba:function(){var d=this.getSource();return"rgba("+d[0]+","+d[1]+","+d[2]+","+d[3]+")"},toHex:function(){var h=this.getSource();var f=h[0].toString(16);f=(f.length==1)?("0"+f):f;var e=h[1].toString(16);e=(e.length==1)?("0"+e):e;var d=h[2].toString(16);d=(d.length==1)?("0"+d):d;return f.toUpperCase()+e.toUpperCase()+d.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var d=this.getSource();d[3]=e;this.setSource(d);return this},toGrayscale:function(){var f=this.getSource(),e=parseInt((f[0]*0.3+f[1]*0.59+f[2]*0.11).toFixed(0),10),d=f[3];this.setSource([e,e,e,d]);return this},toBlackWhite:function(d){var g=this.getSource(),f=(g[0]*0.3+g[1]*0.59+g[2]*0.11).toFixed(0),e=g[3],d=d||127;f=(Number(f)','',"',"Created with Fabric.js ",fabric.version,"",fabric.createSVGFontFacesMarkup(this.getObjects())];if(this.backgroundImage){h.push('')}for(var j=0,k=this.getObjects(),g=k.length;j");return h.join("")},isEmpty:function(){return this._objects.length===0},remove:function(g){e(this._objects,g);if(this.getActiveObject()===g){this.fire("before:selection:cleared",{target:g});this.discardActiveObject();this.fire("selection:cleared")}this.renderAll();return g},sendToBack:function(g){e(this._objects,g);this._objects.unshift(g);return this.renderAll()},bringToFront:function(g){e(this._objects,g);this._objects.push(g);return this.renderAll()},sendBackwards:function(j){var h=this._objects.indexOf(j),g=h;if(h!==0){for(var k=h-1;k>=0;--k){if(j.intersectsWithObject(this._objects[k])||j.isContainedWithinObject(this._objects[k])){g=k;break}}e(this._objects,j);this._objects.splice(g,0,j)}return this.renderAll()},bringForward:function(k){var n=this.getObjects(),h=n.indexOf(k),g=h;if(h!==n.length-1){for(var m=h+1,j=this._objects.length;m"};f(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(l){var k=l.getContext("2d"),g=k.getImageData(0,0,l.width,l.height),p=g.data,m=g.width,r=g.height,q,h,o,n;for(o=0;o0)?0:-v),r.ey-((u>0)?0:-u),t,s);this.contextTop.lineWidth=this.selectionLineWidth;this.contextTop.strokeStyle=this.selectionBorderColor;this.contextTop.strokeRect(r.ex+a-((v>0)?0:t),r.ey+a-((u>0)?0:s),t,s)},_findSelectedObjects:function(x){var y,t,D=[],s=this._groupSelector.ex,C=this._groupSelector.ey,r=s+this._groupSelector.left,A=C+this._groupSelector.top,z,w=new fabric.Point(f(s,r),f(C,A)),B=new fabric.Point(l(s,r),l(C,A));for(var u=0,v=this._objects.length;u1){var D=new fabric.Group(D);this.setActiveGroup(D);D.saveCoords();this.fire("selection:created",{target:D})}}this.renderAll()},findTarget:function(v,s){var u,w=this.getPointer(v);var t=this.getActiveGroup();if(t&&!s&&this.containsPoint(v,t)){u=t;return u}for(var r=this._objects.length;r--;){if(this._objects[r]&&this.containsPoint(v,this._objects[r])){u=this._objects[r];this.relatedTarget=u;break}}if(u&&u.selectable){return u}},getPointer:function(r){var s=q(r);return{x:s.x-this._offset.left,y:s.y-this._offset.top}},_createUpperCanvas:function(){this.upperCanvasEl=this._createCanvasElement();this.upperCanvasEl.className="upper-canvas";this.wrapperEl.appendChild(this.upperCanvasEl);this._applyCanvasStyle(this.upperCanvasEl);this.contextTop=this.upperCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=fabric.util.wrapElement(this.lowerCanvasEl,"div",{"class":this.containerClass});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});r.fire("selected",{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;r&&r.setActive(true);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)?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 u=this.oCoords,q=b(45-this.getAngle()),s=Math.sqrt(2*Math.pow(this.cornersize,2))/2,i=s*Math.cos(q),r=s*Math.sin(q),v=Math.sin(this.theta),t=Math.cos(this.theta);u.tl.corner={tl:{x:u.tl.x-r,y:u.tl.y-i},tr:{x:u.tl.x+i,y:u.tl.y-r},bl:{x:u.tl.x-i,y:u.tl.y+r},br:{x:u.tl.x+r,y:u.tl.y+i}};u.tr.corner={tl:{x:u.tr.x-r,y:u.tr.y-i},tr:{x:u.tr.x+i,y:u.tr.y-r},br:{x:u.tr.x+r,y:u.tr.y+i},bl:{x:u.tr.x-i,y:u.tr.y+r}};u.bl.corner={tl:{x:u.bl.x-r,y:u.bl.y-i},bl:{x:u.bl.x-i,y:u.bl.y+r},br:{x:u.bl.x+r,y:u.bl.y+i},tr:{x:u.bl.x+i,y:u.bl.y-r}};u.br.corner={tr:{x:u.br.x+i,y:u.br.y-r},bl:{x:u.br.x-i,y:u.br.y+r},br:{x:u.br.x+r,y:u.br.y+i},tl:{x:u.br.x-r,y:u.br.y-i}};u.ml.corner={tl:{x:u.ml.x-r,y:u.ml.y-i},tr:{x:u.ml.x+i,y:u.ml.y-r},bl:{x:u.ml.x-i,y:u.ml.y+r},br:{x:u.ml.x+r,y:u.ml.y+i}};u.mt.corner={tl:{x:u.mt.x-r,y:u.mt.y-i},tr:{x:u.mt.x+i,y:u.mt.y-r},bl:{x:u.mt.x-i,y:u.mt.y+r},br:{x:u.mt.x+r,y:u.mt.y+i}};u.mr.corner={tl:{x:u.mr.x-r,y:u.mr.y-i},tr:{x:u.mr.x+i,y:u.mr.y-r},bl:{x:u.mr.x-i,y:u.mr.y+r},br:{x:u.mr.x+r,y:u.mr.y+i}};u.mb.corner={tl:{x:u.mb.x-r,y:u.mb.y-i},tr:{x:u.mb.x+i,y:u.mb.y-r},bl:{x:u.mb.x-i,y:u.mb.y+r},br:{x:u.mb.x+r,y:u.mb.y+i}};u.mtr.corner={tl:{x:u.mtr.x-r+(v*this.rotatingPointOffset),y:u.mtr.y-i-(t*this.rotatingPointOffset)},tr:{x:u.mtr.x+i+(v*this.rotatingPointOffset),y:u.mtr.y-r-(t*this.rotatingPointOffset)},bl:{x:u.mtr.x-i+(v*this.rotatingPointOffset),y:u.mtr.y+r-(t*this.rotatingPointOffset)},br:{x:u.mtr.x+r+(v*this.rotatingPointOffset),y:u.mtr.y+i-(t*this.rotatingPointOffset)}}},toGrayscale:function(){var i=this.get("fill");if(i){this.set("overlayFill",new d.Color(i).toGrayscale().toRgb())}return this},complexity:function(){return 0},toJSON:function(){return this.toObject()},setGradientFill:function(i,q){this.set("fill",d.Gradient.forObject(this,i,q))},animate:function(q,s,i){var r=this;i||(i={});if(!("from" in i)){i.from=this.get(q)}if(/[+-]/.test((s+"").charAt(0))){s=this.get(q)+parseFloat(s)}d.util.animate({startValue:i.from,endValue:s,byValue:i.by,easing:i.easing,duration:i.duration,onChange:function(t){r.set(q,t);i.onChange&&i.onChange()},onComplete:function(){r.setCoords();i.onComplete&&i.onComplete()}})}});d.Object.prototype.rotate=d.Object.prototype.setAngle;var j=d.Object.prototype;for(var g=j.stateProperties.length;g--;){var h=j.stateProperties[g],e=h.charAt(0).toUpperCase()+h.slice(1),f="set"+e,n="get"+e;if(!j[n]){j[n]=(function(i){return new Function('return this.get("'+i+'")')})(h)}if(!j[f]){j[f]=(function(i){return new Function("value",'return this.set("'+i+'", value)')})(h)}}l(d.Object.prototype,d.Observable)})(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(f)},_setWidthHeight:function(f){f||(f={});this.set("width",(this.x2-this.x1)||1);this.set("height",(this.y2-this.y1)||1);this.set("left","left" in f?f.left:(this.x1+this.width/2));this.set("top","top" in f?f.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.quadraticCurveTo(d+e,k,d+e,k+i,d+e,k+i);f.lineTo(d+e,k+g-i);f.quadraticCurveTo(d+e,k+g,d+e-j,k+g,d+e-j,k+g);f.lineTo(d+j,k+g);f.quadraticCurveTo(d,k+g,d,k+g-i,d,k+g-i);f.lineTo(d,k+i);f.quadraticCurveTo(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();f.moveTo(this.points[0].x,this.points[0].y);for(var g=0,d=this.points.length;g"].join("")},_render:function(l){var k;l.beginPath();l.moveTo(this.points[0].x,this.points[0].y);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},addWithUpdate:function(h){this._restoreObjectsState();this.objects.push(h);this._calcBounds();this._updateObjectsCoords();return this},removeWithUpdate:function(h){this._restoreObjectsState();f(this.objects,h);h.setActive(false);this._calcBounds();this._updateObjectsCoords();return this},add:function(h){this.objects.push(h);return this},remove:function(h){f(this.objects,h);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,o){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}if(!o&&this.active){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(){this.forEachObject(function(h){h.setActive()});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,i){e.util.enlivenObjects(h.objects,function(j){delete h.objects;i&&i(new e.Group(j,h))})};e.Group.async=true})(typeof exports!="undefined"?exports:this);(function(a){var b=fabric.util.object.extend;if(!a.fabric){a.fabric={}}if(a.fabric.Image){fabric.warn("fabric.Image is already defined.");return}if(!fabric.Object){fabric.warn("fabric.Object is required for fabric.Image initialization");return}fabric.Image=fabric.util.createClass(fabric.Object,{active:false,bordervisibility:false,cornervisibility:false,type:"image",initialize:function(d,c){c||(c={});this.callSuper("initialize",c);this._initElement(d);this._originalImage=this.getElement();this._initConfig(c);this.filters=[];if(c.filters){this.filters=c.filters;this.applyFilters()}},getElement:function(){return this._element},setElement:function(c){this._element=c;this._initConfig();return this},getOriginalSize:function(){var c=this.getElement();return{width:c.width,height:c.height}},setBorderVisibility:function(c){this._resetWidthHeight();this._adjustWidthHeightToBorders(showBorder);this.setCoords()},setCornersVisibility:function(c){this.cornervisibility=!!c},render:function(c,d){c.save();if(!d){this.transform(c)}this._render(c);if(this.active&&!d){this.drawBorders(c);this.hideCorners||this.drawCorners(c)}c.restore()},toObject:function(){return b(this.callSuper("toObject"),{src:this._originalImage.src||this._originalImage._src,filters:this.filters.concat()})},toSVG:function(){return''},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(c){this.constructor.fromObject(this.toObject(),c)},applyFilters:function(i){if(this.filters.length===0){this.setElement(this._originalImage);i&&i();return}var c=typeof Buffer!=="undefined"&&typeof window==="undefined",g=this._originalImage,e=fabric.document.createElement("canvas"),f=c?new (require("canvas").Image):fabric.document.createElement("img"),h=this;if(!e.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(e)}e.width=g.width;e.height=g.height;e.getContext("2d").drawImage(g,0,0);this.filters.forEach(function(j){j&&j.applyTo(e)});f.onload=function(){h._element=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._element=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){c||(c={});this.setOptions(c);this._setBorder();this._setWidthHeight(c)},_initFilters:function(c){if(c.filters&&c.filters.length){this.filters=c.filters.map(function(d){return d&&fabric.Image.filters[d.type].fromObject(d)})}},_setBorder:function(){if(this.bordervisibility){this.currentBorder=this.borderwidth}else{this.currentBorder=0}},_setWidthHeight:function(c){var d=2*this.currentBorder;this.width="width" in c?c.width:((this.getElement().width||0)+d);this.height="height" in c?c.height:((this.getElement().height||0)+d)},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){if(typeof Cufon==="undefined"||this.useNative===true){this._renderViaNative(f)}else{this._renderViaCufon(f)}},_renderViaCufon: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._initDummyElementForCufon();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()},_renderViaNative:function(f){this.transform(f);this._setTextStyles(f);var g=this.text.split(/\r?\n/);this.width=this._getTextWidth(f,g);this.height=this._getTextHeight(f,g);this._renderTextBackground(f,g);if(this.textAlign!=="left"){f.save();f.translate(this.textAlign==="center"?(this.width/2):this.width,0)}this._setTextShadow(f);this._renderTextFill(f,g);this.textShadow&&f.restore();this._renderTextStroke(f,g);if(this.textAlign!=="left"){f.restore()}this._renderTextDecoration(f,g);this._setBoundaries(f,g);this._totalLineHeight=0;this.setCoords()},_setBoundaries:function(h,k){this._boundaries=[];for(var j=0,g=k.length;jk){k=l}}return k},_setTextShadow:function(f){if(this.textShadow){var j=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/;var g=this.textShadow;var i=j.exec(this.textShadow);var h=g.replace(j,"");f.save();f.shadowColor=h;f.shadowOffsetX=parseInt(i[1],10);f.shadowOffsetY=parseInt(i[2],10);f.shadowBlur=parseInt(i[3],10);this._shadows=[{blur:f.shadowBlur,color:f.shadowColor,offX:f.shadowOffsetX,offY:f.shadowOffsetY}];this._shadowOffsets=[[parseInt(f.shadowOffsetX,10),parseInt(f.shadowOffsetY,10)]]}},_renderTextFill:function(g,j){this._boundaries=[];for(var h=0,f=j.length;h-1){f.call(this,this.fontSize)}if(this.textDecoration.indexOf("line-through")>-1){f.call(this,this.fontSize/2)}if(this.textDecoration.indexOf("overline")>-1){f.call(this,0)}},_getFontDeclaration:function(){return[this.fontStyle,this.fontWeight,this.fontSize+"px",this.fontFamily].join(" ")},_initDummyElementForCufon: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.useNative?this.fontSize*this.lineHeight:(-this._fontAscent-((this._fontAscent/5)*this.lineHeight)),g=-(this.width/2),f=this.useNative?this.fontSize-1:(this.height/2)-(i.length*this.fontSize)-this._totalLineHeight,h=this._getSVGTextAndBg(j,g,i),k=this._getSVGShadows(j,i);f+=(this._fontAscent?((this._fontAscent/5)*this.lineHeight):0);return['',h.textBgRects.join(""),"',k.join(""),h.textSpans.join(""),"",""].join("")},_getSVGShadows:function(h,n){var o=[],k,l,p,g,f=1;if(!this._shadows||!this._boundaries){return o}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||!this._boundaries){continue}k.push("')}return{textSpans:g,textBgRects:k}},_getFillAttributes:function(f){var g=f?new c.Color(f):"";if(!g||!g.getSource()||g.getAlpha()===1){return'fill="'+f+'"'}return'opacity="'+g.getAlpha()+'" fill="'+g.setAlpha(1).toRgb()+'"'},setColor:function(f){this.set("fill",f);return this},setFontsize:function(f){this.set("fontSize",f);this.setCoords();return this},getText:function(){return this.text},setText:function(f){this.set("text",f);this.setCoords();return this},set:function(f,g){if(typeof f=="object"){for(var h in f){this.set(h,f[h])}}else{this[f]=g;if(f==="fontFamily"&&this.path){this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+g+"$3")}}return this}});c.Text.fromObject=function(f){return new c.Text(f.text,d(f))};c.Text.fromElement=function(f){}})(typeof exports!="undefined"?exports:this);(function(){if(typeof document!="undefined"&&typeof window!="undefined"){return}var DOMParser=new require("xmldom").DOMParser,URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;function request(url,encoding,callback){var oURL=URL.parse(url),client=HTTP.createClient(oURL.port,oURL.hostname),request=client.request("GET",oURL.pathname,{host:oURL.hostname});client.addListener("error",function(err){if(err.errno===process.ECONNREFUSED){fabric.log("ECONNREFUSED: connection refused to "+client.host+":"+client.port)}else{fabric.log(err.message)}});request.end();request.on("response",function(response){var body="";if(encoding){response.setEncoding(encoding)}response.on("end",function(){callback(body)});response.on("data",function(chunk){if(response.statusCode==200){body+=chunk}})})}fabric.util.loadImage=function(url,callback){request(url,"binary",function(body){var img=new Image();img.src=new Buffer(body,"binary");img._src=url;callback(img)})};fabric.loadSVGFromURL=function(url,callback){url=url.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();request(url,"",function(body){var doc=new DOMParser().parseFromString(body);fabric.parseSVGDocument(doc.documentElement,function(results,options){callback(results,options)})})};fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body);callback&&callback()})};fabric.Image.fromObject=function(object,callback){fabric.util.loadImage(object.src,function(img){var oImg=new fabric.Image(img);oImg._initConfig(object);oImg._initFilters(object);callback(oImg)})};fabric.createCanvasForNode=function(width,height){var canvasEl=fabric.document.createElement("canvas"),nodeCanvas=new Canvas(width||600,height||600);canvasEl.style={};canvasEl.width=nodeCanvas.width;canvasEl.height=nodeCanvas.height;var canvas=fabric.Canvas||fabric.StaticCanvas;var fabricCanvas=new canvas(canvasEl);fabricCanvas.contextContainer=nodeCanvas.getContext("2d");fabricCanvas.nodeCanvas=nodeCanvas;return fabricCanvas};fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()};if(fabric.Canvas){fabric.Canvas.prototype.createPNGStream}var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(width){origSetWidth.call(this);this.nodeCanvas.width=width;return this};if(fabric.Canvas){fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth}var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(height){origSetHeight.call(this);this.nodeCanvas.height=height;return this};if(fabric.Canvas){fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight}})(); \ No newline at end of file +var Cufon=(function(){var k=function(){return k.replace.apply(null,arguments)};var u=k.DOM={ready:(function(){var z=false,B={loaded:1,complete:1};var y=[],A=function(){if(z){return}z=true;for(var C;C=y.shift();C()){}};if(fabric.document.addEventListener){fabric.document.addEventListener("DOMContentLoaded",A,false);fabric.window.addEventListener("pageshow",A,false)}if(!fabric.window.opera&&fabric.document.readyState){(function(){B[fabric.document.readyState]?A():setTimeout(arguments.callee,10)})()}if(fabric.document.readyState&&fabric.document.createStyleSheet){(function(){try{fabric.document.body.doScroll("left");A()}catch(C){setTimeout(arguments.callee,1)}})()}o(fabric.window,"load",A);return function(C){if(!arguments.length){A()}else{z?C():y.push(C)}}})()};var l=k.CSS={Size:function(z,y){this.value=parseFloat(z);this.unit=String(z).match(/[a-z%]*$/)[0]||"px";this.convert=function(A){return A/y*this.value};this.convertFrom=function(A){return A/this.value*y};this.toString=function(){return this.value+this.unit}},getStyle:function(y){return new a(y.style)},quotedList:i(function(B){var A=[],z=/\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g,y;while(y=z.exec(B)){A.push(y[3]||y[1])}return A}),ready:(function(){var A=false;var z=[],B=function(){A=true;for(var D;D=z.shift();D()){}};var y=Object.prototype.propertyIsEnumerable?f("style"):{length:0};var C=f("link");u.ready(function(){var G=0,F;for(var E=0,D=C.length;F=C[E],E=y.length+G){B()}else{setTimeout(arguments.callee,10)}});return function(D){if(A){D()}else{z.push(D)}}})(),supports:function(A,z){var y=fabric.document.createElement("span").style;if(y[A]===undefined){return false}y[A]=z;return y[A]===z},textAlign:function(B,A,y,z){if(A.get("textAlign")=="right"){if(y>0){B=" "+B}}else{if(y400}if(F==500){F=400}for(var G in D){G=parseInt(G,10);if(!C||GA){A=G}H.push(G)}if(FA){F=A}H.sort(function(J,I){return(B?(J>F&&I>F)?JI:(JI:Jz){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)+(Cufon.fonts[ab.family].offsetTop||0));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;Sw?p:(o-n);s(t(currentTime,m,byValue,p));if(o>w||q()){x.onComplete&&x.onComplete();return}k(r)})()}var f=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(n,m){fabric.window.setTimeout(n,1000/60)};var k=function(){return f.apply(fabric.window,arguments)};function b(n,p,o){if(n){var m=new Image();m.onload=function(){p&&p.call(o,m);m=m.onload=null};m.src=n}else{p&&p.call(o,n)}}function i(o,s){function n(t){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(t))]}var q=[],p=0,m=o.filter(function(t){return n(t.type).async}).length;var r=this;o.forEach(function(v,u){if(!v.type){return}var t=n(v.type);if(t.async){t.fromObject(v,function(w){q[u]=w;if(++p===m){if(s){s(q)}}})}else{q[u]=t.fromObject(v)}});if(m===0&&s){s(q)}}function a(o,n,p){var m=o.length>1?new fabric.PathGroup(o,n):o[0];if(typeof p!=="undefined"){m.setSourcePath(p)}return m}fabric.util.removeFromArray=j;fabric.util.degreesToRadians=c;fabric.util.toFixed=e;fabric.util.getRandomInt=g;fabric.util.falseFunction=l;fabric.util.animate=d;fabric.util.requestAnimFrame=k;fabric.util.loadImage=b;fabric.util.enlivenObjects=i;fabric.util.groupSVGElements=a})();(function(){var d=Array.prototype.slice;if(!Array.prototype.indexOf){Array.prototype.indexOf=function(g){if(this===void 0||this===null){throw new TypeError()}var h=Object(this),e=h.length>>>0;if(e===0){return -1}var i=0;if(arguments.length>0){i=Number(arguments[1]);if(i!==i){i=0}else{if(i!==0&&i!==(1/0)&&i!==-(1/0)){i=(i>0||-1)*Math.floor(Math.abs(i))}}}if(i>=e){return -1}var f=i>=0?i:Math.max(e-Math.abs(i),0);for(;f>>0;f>>0;g>>0;f>>0;f>>0;g>>0,f=0,h;if(arguments.length>1){h=arguments[1]}else{do{if(f in this){h=this[f++];break}if(++f>=e){throw new TypeError()}}while(true)}for(;f=e){e=h[f][g]}}}else{while(f--){if(h[f]>=e){e=h[f]}}}return e}function c(h,g){if(!h||h.length===0){return undefined}var f=h.length-1,e=g?h[f][g]:h[f];if(g){while(f--){if(h[f][g]/g,">")}fabric.util.string={camelize:b,capitalize:c,escapeXml:a}}());(function(){var c=Array.prototype.slice,a=Function.prototype.apply,b=function(){};if(!Function.prototype.bind){Function.prototype.bind=function(d){var g=this,e=c.call(arguments,1),f;if(e.length){f=function(){return a.call(g,this instanceof b?this:d,e.concat(c.call(arguments)))}}else{f=function(){return a.call(g,this instanceof b?this:d,arguments)}}b.prototype=this.prototype;f.prototype=new b;return f}}})();(function(){var f=Array.prototype.slice,e=function(){};var c=(function(){for(var g in {toString:1}){if(g==="toString"){return false}}return true})();var b=function(g,j,h){for(var i in j){if(i in g.prototype&&typeof g.prototype[i]=="function"){g.prototype[i]=(function(k){return function(){var m=this.constructor.superclass;this.constructor.superclass=h;var l=j[k].apply(this,arguments);this.constructor.superclass=m;if(k!=="initialize"){return l}}})(i)}else{g.prototype[i]=j[i]}if(c){if(j.toString!==Object.prototype.toString){g.prototype.toString=j.toString}if(j.valueOf!==Object.prototype.valueOf){g.prototype.valueOf=j.valueOf}}}};function a(){}function d(){var k=null,j=f.call(arguments,0);if(typeof j[0]==="function"){k=j.shift()}function g(){this.initialize.apply(this,arguments)}g.superclass=k;g.subclasses=[];if(k){a.prototype=k.prototype;g.prototype=new a;k.subclasses.push(g)}for(var h=0,l=j.length;h-1?c(j,l.match(/opacity:\s*(\d?\.?\d*)/)[1]):j}for(var m in l){if(m==="opacity"){c(j,l[m])}else{var k=(m==="float"||m==="cssFloat")?(typeof n.styleFloat==="undefined"?"cssFloat":"styleFloat"):m;n[k]=l[m]}}return j}var h=fabric.document.createElement("div"),g=typeof h.style.opacity==="string",b=typeof h.style.filter==="string",a=fabric.document.defaultView,f=a&&typeof a.getComputedStyle!=="undefined",d=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,c=function(i){return i};if(g){c=function(i,j){i.style.opacity=j;return i}}else{if(b){c=function(i,j){var k=i.style;if(i.currentStyle&&!i.currentStyle.hasLayout){k.zoom=1}if(d.test(k.filter)){j=j>=0.9999?"":("alpha(opacity="+(j*100)+")");k.filter=k.filter.replace(d,j)}else{k.filter+=" alpha(opacity="+(j*100)+")"}return i}}}fabric.util.setStyle=e})();(function(){var h=Array.prototype.slice;function g(j){return typeof j==="string"?fabric.document.getElementById(j):j}function b(j){return h.call(j,0)}try{var i=b(fabric.document.childNodes) instanceof Array}catch(a){}if(!i){b=function(k){var j=new Array(k.length),l=k.length;while(l--){j[l]=k[l]}return j}}function c(k,j){var l=fabric.document.createElement(k);for(var m in j){if(m==="class"){l.className=j[m]}else{if(m==="for"){l.htmlFor=j[m]}else{l.setAttribute(m,j[m])}}}return l}function f(j,k){if((" "+j.className+" ").indexOf(" "+k+" ")===-1){j.className+=(j.className?" ":"")+k}}function e(k,l,j){if(typeof l==="string"){l=c(l,j)}if(k.parentNode){k.parentNode.replaceChild(l,k)}l.appendChild(k);return l}function d(k){var j=0,l=0;do{j+=k.offsetTop||0;l+=k.offsetLeft||0;k=k.offsetParent}while(k);return({left:l,top:j})}(function(){var k=fabric.document.documentElement.style;var l="userSelect" in k?"userSelect":"MozUserSelect" in k?"MozUserSelect":"WebkitUserSelect" in k?"WebkitUserSelect":"KhtmlUserSelect" in k?"KhtmlUserSelect":"";function m(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=fabric.util.falseFunction}if(l){n.style[l]="none"}else{if(typeof n.unselectable=="string"){n.unselectable="on"}}return n}function j(n){if(typeof n.onselectstart!=="undefined"){n.onselectstart=null}if(l){n.style[l]=""}else{if(typeof n.unselectable=="string"){n.unselectable=""}}return n}fabric.util.makeElementUnselectable=m;fabric.util.makeElementSelectable=j})();(function(){function j(k,o){var m=fabric.document.getElementsByTagName("head")[0],l=fabric.document.createElement("script"),n=true;l.type="text/javascript";l.setAttribute("runat","server");l.onload=l.onreadystatechange=function(p){if(n){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete"){return}n=false;o(p||fabric.window.event);l=l.onload=l.onreadystatechange=null}};l.src=k;m.appendChild(l)}fabric.util.getScript=j})();fabric.util.getById=g;fabric.util.toArray=b;fabric.util.makeElement=c;fabric.util.addClass=f;fabric.util.wrapElement=e;fabric.util.getElementOffset=d})();(function(){function d(e,f){return e+(/\?/.test(e)?"&":"?")+f}var c=(function(){var h=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest()}];for(var e=h.length;e--;){try{var g=h[e]();if(g){return h[e]}}catch(f){}}})();function a(){}function b(g,f){f||(f={});var j=f.method?f.method.toUpperCase():"GET",i=f.onComplete||function(){},h=c(),e;h.onreadystatechange=function(){if(h.readyState===4){i(h);h.onreadystatechange=a}};if(j==="GET"){e=null;if(typeof f.parameters=="string"){g=d(g,f.parameters)}}h.open(j,g,true);if(j==="POST"||j==="PUT"){h.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}h.send(e);return h}fabric.util.request=b})();(function(){function d(F,E,H,G){return H*(F/=G)*F+E}function l(F,E,H,G){return -H*(F/=G)*(F-2)+E}function r(F,E,H,G){if((F/=G/2)<1){return H/2*F*F+E}return -H/2*((--F)*(F-2)-1)+E}function B(F,E,H,G){return H*(F/=G)*F*F+E}function q(F,E,H,G){return H*((F=F/G-1)*F*F+1)+E}function u(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F+E}return H/2*((F-=2)*F*F+2)+E}function t(F,E,H,G){return H*(F/=G)*F*F*F+E}function g(F,E,H,G){return -H*((F=F/G-1)*F*F*F-1)+E}function k(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F+E}return -H/2*((F-=2)*F*F*F-2)+E}function y(F,E,H,G){return H*(F/=G)*F*F*F*F+E}function j(F,E,H,G){return H*((F=F/G-1)*F*F*F*F+1)+E}function n(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F*F+E}return H/2*((F-=2)*F*F*F*F+2)+E}function f(F,E,H,G){return -H*Math.cos(F/G*(Math.PI/2))+H+E}function o(F,E,H,G){return H*Math.sin(F/G*(Math.PI/2))+E}function v(F,E,H,G){return -H/2*(Math.cos(Math.PI*F/G)-1)+E}function D(F,E,H,G){return(F==0)?E:H*Math.pow(2,10*(F/G-1))+E}function c(F,E,H,G){return(F==G)?E+H:H*(-Math.pow(2,-10*F/G)+1)+E}function i(F,E,H,G){if(F==0){return E}if(F==G){return E+H}if((F/=G/2)<1){return H/2*Math.pow(2,10*(F-1))+E}return H/2*(-Math.pow(2,-10*--F)+2)+E}function h(F,E,H,G){return -H*(Math.sqrt(1-(F/=G)*F)-1)+E}function p(F,E,H,G){return H*Math.sqrt(1-(F=F/G-1)*F)+E}function x(F,E,H,G){if((F/=G/2)<1){return -H/2*(Math.sqrt(1-F*F)-1)+E}return H/2*(Math.sqrt(1-(F-=2)*F)+1)+E}function s(G,E,K,J){var H=1.70158;var I=0;var F=K;if(G==0){return E}if((G/=J)==1){return E+K}if(!I){I=J*0.3}if(F-1;w=w.split(/\s+/);var u=[];if(y){for(var v=0,t=w.length;v/i,""))}if(!w.documentElement){return}h.parseSVGDocument(w.documentElement,function(z,y){k.set(t,{objects:h.util.array.invoke(z,"toObject"),options:y});v(z,y)})}}function b(v){var u=v.objects,t=v.options;u=u.map(function(w){return h[f(w.type)].fromObject(w)});return({objects:u,options:t})}function n(t,w){t=t.trim();var u;if(typeof DOMParser!=="undefined"){var v=new DOMParser();if(v&&v.parseFromString){u=v.parseFromString(t,"text/xml")}}else{if(h.window.ActiveXObject){var u=new ActiveXObject("Microsoft.XMLDOM");u.async="false";u.loadXML(t.replace(//i,""))}}h.parseSVGDocument(u.documentElement,function(y,x){w(y,x)})}function m(w){var u="";for(var v=0,t=w.length;v",'",""].join("")}return u}p(h,{parseAttributes:e,parseElements:g,parseStyleAttribute:i,parsePointsAttribute:s,getCSSRules:d,loadSVGFromURL:c,loadSVGFromString:n,createSVGFontFacesMarkup:m})})(typeof exports!="undefined"?exports:this);(function(){function c(h){var g=h.getAttribute("style");if(g){var k=g.split(/\s*;\s*/);if(k[k.length-1]===""){k.pop()}for(var f=k.length;f--;){var e=k[f].split(/\s*:\s*/),d=e[0].trim(),j=e[1].trim();if(d==="stop-color"){return j}}}}fabric.Gradient={create:function(l,m){m||(m={});var f=m.x1||0,k=m.y1||0,e=m.x2||l.canvas.width,i=m.y2||0,g=m.colorStops;var j=l.createLinearGradient(f,k,e,i);for(var h in g){var d=g[h];j.addColorStop(parseFloat(h),d)}return j},fromElement:function(d,m,l){var j=d.getElementsByTagName("stop"),d,f,e={},g,k={x1:d.getAttribute("x1")||0,y1:d.getAttribute("y1")||0,x2:d.getAttribute("x2")||"100%",y2:d.getAttribute("y2")||0};for(var h=j.length;h--;){d=j[h];f=d.getAttribute("offset");f=parseFloat(f)/(/%$/.test(f)?100:1);e[f]=c(d)||d.getAttribute("stop-color")}a(l,k);return fabric.Gradient.create(m,{x1:k.x1,y1:k.y1,x2:k.x2,y2:k.y2,colorStops:e})},forObject:function(g,d,e){e||(e={});a(g,e);var f=fabric.Gradient.create(d,{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,colorStops:e.colorStops});return f}};function a(f,e){for(var g in e){if(typeof e[g]==="string"&&/^\d+%$/.test(e[g])){var d=parseFloat(e[g],10);if(g==="x1"||g==="x2"){e[g]=f.width*d/100}else{if(g==="y1"||g==="y2"){e[g]=f.height*d/100}}}if(g==="x1"||g==="x2"){e[g]-=f.width/2}else{if(g==="y1"||g==="y2"){e[g]-=f.height/2}}}}function b(j){var f=j.getElementsByTagName("linearGradient"),d=j.getElementsByTagName("radialGradient"),g,h={};for(var e=f.length;e--;){g=f[e];h[g.id]=g}for(var e=d.length;e--;){g=d[e];h[g.id]=g}return h}fabric.getGradientDefs=b})();(function(b){var c=b.fabric||(b.fabric={});if(c.Point){c.warn("fabric.Point is already defined");return}c.Point=a;function a(d,e){if(arguments.length>0){this.init(d,e)}}a.prototype={constructor:a,init:function(d,e){this.x=d;this.y=e},add:function(d){return new a(this.x+d.x,this.y+d.y)},addEquals:function(d){this.x+=d.x;this.y+=d.y;return this},scalarAdd:function(d){return new a(this.x+d,this.y+d)},scalarAddEquals:function(d){this.x+=d;this.y+=d;return this},subtract:function(d){return new a(this.x-d.x,this.y-d.y)},subtractEquals:function(d){this.x-=d.x;this.y-=d.y;return this},scalarSubtract:function(d){return new a(this.x-d,this.y-d)},scalarSubtractEquals:function(d){this.x-=d;this.y-=d;return this},multiply:function(d){return new a(this.x*d,this.y*d)},multiplyEquals:function(d){this.x*=d;this.y*=d;return this},divide:function(d){return new a(this.x/d,this.y/d)},divideEquals:function(d){this.x/=d;this.y/=d;return this},eq:function(d){return(this.x==d.x&&this.y==d.y)},lt:function(d){return(this.xd.x&&this.y>d.y)},gte:function(d){return(this.x>=d.x&&this.y>=d.y)},lerp:function(e,d){return new a(this.x+(e.x-this.x)*d,this.y+(e.y-this.y)*d)},distanceFrom:function(f){var e=this.x-f.x,d=this.y-f.y;return Math.sqrt(e*e+d*d)},min:function(d){return new a(Math.min(this.x,d.x),Math.min(this.y,d.y))},max:function(d){return new a(Math.max(this.x,d.x),Math.max(this.y,d.y))},toString:function(){return this.x+","+this.y},setXY:function(d,e){this.x=d;this.y=e},setFromPoint:function(d){this.x=d.x;this.y=d.y},swap:function(e){var d=this.x,f=this.y;this.x=e.x;this.y=e.y;e.x=d;e.y=f}}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Intersection){b.warn("fabric.Intersection is already defined");return}function c(d){if(arguments.length>0){this.init(d)}}b.Intersection=c;b.Intersection.prototype={init:function(d){this.status=d;this.points=[]},appendPoint:function(d){this.points.push(d)},appendPoints:function(d){this.points=this.points.concat(d)}};b.Intersection.intersectLineLine=function(h,f,l,k){var m,i=(k.x-l.x)*(h.y-l.y)-(k.y-l.y)*(h.x-l.x),j=(f.x-h.x)*(h.y-l.y)-(f.y-h.y)*(h.x-l.x),g=(k.y-l.y)*(f.x-h.x)-(k.x-l.x)*(f.y-h.y);if(g!=0){var e=i/g,d=j/g;if(0<=e&&e<=1&&0<=d&&d<=1){m=new c("Intersection");m.points.push(new b.Point(h.x+e*(f.x-h.x),h.y+e*(f.y-h.y)))}else{m=new c("No Intersection")}}else{if(i==0||j==0){m=new c("Coincident")}else{m=new c("Parallel")}}return m};b.Intersection.intersectLinePolygon=function(e,d,l){var m=new c("No Intersection"),f=l.length;for(var h=0;h0){m.status="Intersection"}return m};b.Intersection.intersectPolygonPolygon=function(j,h){var f=new c("No Intersection"),l=j.length;for(var k=0;k0){f.status="Intersection"}return f};b.Intersection.intersectPolygonRectangle=function(n,e,d){var g=e.min(d),m=e.max(d),f=new b.Point(m.x,g.y),l=new b.Point(g.x,m.y),k=c.intersectLinePolygon(g,f,n),j=c.intersectLinePolygon(f,m,n),i=c.intersectLinePolygon(m,l,n),h=c.intersectLinePolygon(l,g,n),o=new c("No Intersection");o.appendPoints(k.points);o.appendPoints(j.points);o.appendPoints(i.points);o.appendPoints(h.points);if(o.points.length>0){o.status="Intersection"}return o}})(typeof exports!="undefined"?exports:this);(function(a){var b=a.fabric||(a.fabric={});if(b.Color){b.warn("fabric.Color is already defined.");return}function c(d){if(!d){this.setSource([0,0,0,1])}else{this._tryParsingColor(d)}}b.Color=c;b.Color.prototype={_tryParsingColor:function(d){var e=c.sourceFromHex(d);if(!e){e=c.sourceFromRgb(d)}if(e){this.setSource(e)}},getSource:function(){return this._source},setSource:function(d){this._source=d},toRgb:function(){var d=this.getSource();return"rgb("+d[0]+","+d[1]+","+d[2]+")"},toRgba:function(){var d=this.getSource();return"rgba("+d[0]+","+d[1]+","+d[2]+","+d[3]+")"},toHex:function(){var h=this.getSource();var f=h[0].toString(16);f=(f.length==1)?("0"+f):f;var e=h[1].toString(16);e=(e.length==1)?("0"+e):e;var d=h[2].toString(16);d=(d.length==1)?("0"+d):d;return f.toUpperCase()+e.toUpperCase()+d.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var d=this.getSource();d[3]=e;this.setSource(d);return this},toGrayscale:function(){var f=this.getSource(),e=parseInt((f[0]*0.3+f[1]*0.59+f[2]*0.11).toFixed(0),10),d=f[3];this.setSource([e,e,e,d]);return this},toBlackWhite:function(d){var g=this.getSource(),f=(g[0]*0.3+g[1]*0.59+g[2]*0.11).toFixed(0),e=g[3],d=d||127;f=(Number(f)','',"',"Created with Fabric.js ",fabric.version,"",fabric.createSVGFontFacesMarkup(this.getObjects())];if(this.backgroundImage){h.push('')}for(var j=0,k=this.getObjects(),g=k.length;j");return h.join("")},isEmpty:function(){return this._objects.length===0},remove:function(g){e(this._objects,g);if(this.getActiveObject()===g){this.fire("before:selection:cleared",{target:g});this.discardActiveObject();this.fire("selection:cleared")}this.renderAll();return g},sendToBack:function(g){e(this._objects,g);this._objects.unshift(g);return this.renderAll()},bringToFront:function(g){e(this._objects,g);this._objects.push(g);return this.renderAll()},sendBackwards:function(j){var h=this._objects.indexOf(j),g=h;if(h!==0){for(var k=h-1;k>=0;--k){if(j.intersectsWithObject(this._objects[k])||j.isContainedWithinObject(this._objects[k])){g=k;break}}e(this._objects,j);this._objects.splice(g,0,j)}return this.renderAll()},bringForward:function(k){var n=this.getObjects(),h=n.indexOf(k),g=h;if(h!==n.length-1){for(var m=h+1,j=this._objects.length;m"};f(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(l){var k=l.getContext("2d"),g=k.getImageData(0,0,l.width,l.height),p=g.data,m=g.width,r=g.height,q,h,o,n;for(o=0;o0)?0:-v),r.ey-((u>0)?0:-u),t,s);this.contextTop.lineWidth=this.selectionLineWidth;this.contextTop.strokeStyle=this.selectionBorderColor;this.contextTop.strokeRect(r.ex+a-((v>0)?0:t),r.ey+a-((u>0)?0:s),t,s)},_findSelectedObjects:function(x){var y,t,D=[],s=this._groupSelector.ex,C=this._groupSelector.ey,r=s+this._groupSelector.left,A=C+this._groupSelector.top,z,w=new fabric.Point(f(s,r),f(C,A)),B=new fabric.Point(l(s,r),l(C,A));for(var u=0,v=this._objects.length;u1){var D=new fabric.Group(D);this.setActiveGroup(D);D.saveCoords();this.fire("selection:created",{target:D})}}this.renderAll()},findTarget:function(v,s){var u,w=this.getPointer(v);var t=this.getActiveGroup();if(t&&!s&&this.containsPoint(v,t)){u=t;return u}for(var r=this._objects.length;r--;){if(this._objects[r]&&this.containsPoint(v,this._objects[r])){u=this._objects[r];this.relatedTarget=u;break}}if(u&&u.selectable){return u}},getPointer:function(r){var s=q(r);return{x:s.x-this._offset.left,y:s.y-this._offset.top}},_createUpperCanvas:function(){this.upperCanvasEl=this._createCanvasElement();this.upperCanvasEl.className="upper-canvas";this.wrapperEl.appendChild(this.upperCanvasEl);this._applyCanvasStyle(this.upperCanvasEl);this.contextTop=this.upperCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=fabric.util.wrapElement(this.lowerCanvasEl,"div",{"class":this.containerClass});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});r.fire("selected",{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;r&&r.setActive(true);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)?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 u=this.oCoords,q=b(45-this.getAngle()),s=Math.sqrt(2*Math.pow(this.cornersize,2))/2,i=s*Math.cos(q),r=s*Math.sin(q),v=Math.sin(this.theta),t=Math.cos(this.theta);u.tl.corner={tl:{x:u.tl.x-r,y:u.tl.y-i},tr:{x:u.tl.x+i,y:u.tl.y-r},bl:{x:u.tl.x-i,y:u.tl.y+r},br:{x:u.tl.x+r,y:u.tl.y+i}};u.tr.corner={tl:{x:u.tr.x-r,y:u.tr.y-i},tr:{x:u.tr.x+i,y:u.tr.y-r},br:{x:u.tr.x+r,y:u.tr.y+i},bl:{x:u.tr.x-i,y:u.tr.y+r}};u.bl.corner={tl:{x:u.bl.x-r,y:u.bl.y-i},bl:{x:u.bl.x-i,y:u.bl.y+r},br:{x:u.bl.x+r,y:u.bl.y+i},tr:{x:u.bl.x+i,y:u.bl.y-r}};u.br.corner={tr:{x:u.br.x+i,y:u.br.y-r},bl:{x:u.br.x-i,y:u.br.y+r},br:{x:u.br.x+r,y:u.br.y+i},tl:{x:u.br.x-r,y:u.br.y-i}};u.ml.corner={tl:{x:u.ml.x-r,y:u.ml.y-i},tr:{x:u.ml.x+i,y:u.ml.y-r},bl:{x:u.ml.x-i,y:u.ml.y+r},br:{x:u.ml.x+r,y:u.ml.y+i}};u.mt.corner={tl:{x:u.mt.x-r,y:u.mt.y-i},tr:{x:u.mt.x+i,y:u.mt.y-r},bl:{x:u.mt.x-i,y:u.mt.y+r},br:{x:u.mt.x+r,y:u.mt.y+i}};u.mr.corner={tl:{x:u.mr.x-r,y:u.mr.y-i},tr:{x:u.mr.x+i,y:u.mr.y-r},bl:{x:u.mr.x-i,y:u.mr.y+r},br:{x:u.mr.x+r,y:u.mr.y+i}};u.mb.corner={tl:{x:u.mb.x-r,y:u.mb.y-i},tr:{x:u.mb.x+i,y:u.mb.y-r},bl:{x:u.mb.x-i,y:u.mb.y+r},br:{x:u.mb.x+r,y:u.mb.y+i}};u.mtr.corner={tl:{x:u.mtr.x-r+(v*this.rotatingPointOffset),y:u.mtr.y-i-(t*this.rotatingPointOffset)},tr:{x:u.mtr.x+i+(v*this.rotatingPointOffset),y:u.mtr.y-r-(t*this.rotatingPointOffset)},bl:{x:u.mtr.x-i+(v*this.rotatingPointOffset),y:u.mtr.y+r-(t*this.rotatingPointOffset)},br:{x:u.mtr.x+r+(v*this.rotatingPointOffset),y:u.mtr.y+i-(t*this.rotatingPointOffset)}}},toGrayscale:function(){var i=this.get("fill");if(i){this.set("overlayFill",new d.Color(i).toGrayscale().toRgb())}return this},complexity:function(){return 0},toJSON:function(){return this.toObject()},setGradientFill:function(i,q){this.set("fill",d.Gradient.forObject(this,i,q))},animate:function(q,s,i){var r=this;i||(i={});if(!("from" in i)){i.from=this.get(q)}if(/[+-]/.test((s+"").charAt(0))){s=this.get(q)+parseFloat(s)}d.util.animate({startValue:i.from,endValue:s,byValue:i.by,easing:i.easing,duration:i.duration,onChange:function(t){r.set(q,t);i.onChange&&i.onChange()},onComplete:function(){r.setCoords();i.onComplete&&i.onComplete()}})}});d.Object.prototype.rotate=d.Object.prototype.setAngle;var j=d.Object.prototype;for(var g=j.stateProperties.length;g--;){var h=j.stateProperties[g],e=h.charAt(0).toUpperCase()+h.slice(1),f="set"+e,n="get"+e;if(!j[n]){j[n]=(function(i){return new Function('return this.get("'+i+'")')})(h)}if(!j[f]){j[f]=(function(i){return new Function("value",'return this.set("'+i+'", value)')})(h)}}l(d.Object.prototype,d.Observable)})(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(f)},_setWidthHeight:function(f){f||(f={});this.set("width",(this.x2-this.x1)||1);this.set("height",(this.y2-this.y1)||1);this.set("left","left" in f?f.left:(this.x1+this.width/2));this.set("top","top" in f?f.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.quadraticCurveTo(d+e,k,d+e,k+i,d+e,k+i);f.lineTo(d+e,k+g-i);f.quadraticCurveTo(d+e,k+g,d+e-j,k+g,d+e-j,k+g);f.lineTo(d+j,k+g);f.quadraticCurveTo(d,k+g,d,k+g-i,d,k+g-i);f.lineTo(d,k+i);f.quadraticCurveTo(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();f.moveTo(this.points[0].x,this.points[0].y);for(var g=0,d=this.points.length;g"].join("")},_render:function(l){var k;l.beginPath();l.moveTo(this.points[0].x,this.points[0].y);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},addWithUpdate:function(h){this._restoreObjectsState();this.objects.push(h);this._calcBounds();this._updateObjectsCoords();return this},removeWithUpdate:function(h){this._restoreObjectsState();f(this.objects,h);h.setActive(false);this._calcBounds();this._updateObjectsCoords();return this},add:function(h){this.objects.push(h);return this},remove:function(h){f(this.objects,h);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,o){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}if(!o&&this.active){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(){this.forEachObject(function(h){h.setActive()});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,i){e.util.enlivenObjects(h.objects,function(j){delete h.objects;i&&i(new e.Group(j,h))})};e.Group.async=true})(typeof exports!="undefined"?exports:this);(function(a){var b=fabric.util.object.extend;if(!a.fabric){a.fabric={}}if(a.fabric.Image){fabric.warn("fabric.Image is already defined.");return}if(!fabric.Object){fabric.warn("fabric.Object is required for fabric.Image initialization");return}fabric.Image=fabric.util.createClass(fabric.Object,{active:false,bordervisibility:false,cornervisibility:false,type:"image",initialize:function(d,c){c||(c={});this.callSuper("initialize",c);this._initElement(d);this._originalImage=this.getElement();this._initConfig(c);this.filters=[];if(c.filters){this.filters=c.filters;this.applyFilters()}},getElement:function(){return this._element},setElement:function(c){this._element=c;this._initConfig();return this},getOriginalSize:function(){var c=this.getElement();return{width:c.width,height:c.height}},setBorderVisibility:function(c){this._resetWidthHeight();this._adjustWidthHeightToBorders(showBorder);this.setCoords()},setCornersVisibility:function(c){this.cornervisibility=!!c},render:function(c,d){c.save();if(!d){this.transform(c)}this._render(c);if(this.active&&!d){this.drawBorders(c);this.hideCorners||this.drawCorners(c)}c.restore()},toObject:function(){return b(this.callSuper("toObject"),{src:this._originalImage.src||this._originalImage._src,filters:this.filters.concat()})},toSVG:function(){return''},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(c){this.constructor.fromObject(this.toObject(),c)},applyFilters:function(i){if(this.filters.length===0){this.setElement(this._originalImage);i&&i();return}var c=typeof Buffer!=="undefined"&&typeof window==="undefined",g=this._originalImage,e=fabric.document.createElement("canvas"),f=c?new (require("canvas").Image):fabric.document.createElement("img"),h=this;if(!e.getContext&&typeof G_vmlCanvasManager!="undefined"){G_vmlCanvasManager.initElement(e)}e.width=g.width;e.height=g.height;e.getContext("2d").drawImage(g,0,0);this.filters.forEach(function(j){j&&j.applyTo(e)});f.onload=function(){h._element=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._element=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){c||(c={});this.setOptions(c);this._setBorder();this._setWidthHeight(c)},_initFilters:function(c){if(c.filters&&c.filters.length){this.filters=c.filters.map(function(d){return d&&fabric.Image.filters[d.type].fromObject(d)})}},_setBorder:function(){if(this.bordervisibility){this.currentBorder=this.borderwidth}else{this.currentBorder=0}},_setWidthHeight:function(c){var d=2*this.currentBorder;this.width="width" in c?c.width:((this.getElement().width||0)+d);this.height="height" in c?c.height:((this.getElement().height||0)+d)},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){if(typeof Cufon==="undefined"||this.useNative===true){this._renderViaNative(f)}else{this._renderViaCufon(f)}},_renderViaCufon: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._initDummyElementForCufon();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()},_renderViaNative:function(f){this.transform(f);this._setTextStyles(f);var g=this.text.split(/\r?\n/);this.width=this._getTextWidth(f,g);this.height=this._getTextHeight(f,g);this._renderTextBackground(f,g);if(this.textAlign!=="left"){f.save();f.translate(this.textAlign==="center"?(this.width/2):this.width,0)}this._setTextShadow(f);this._renderTextFill(f,g);this.textShadow&&f.restore();this._renderTextStroke(f,g);if(this.textAlign!=="left"){f.restore()}this._renderTextDecoration(f,g);this._setBoundaries(f,g);this._totalLineHeight=0;this.setCoords()},_setBoundaries:function(h,k){this._boundaries=[];for(var j=0,g=k.length;jk){k=l}}return k},_setTextShadow:function(f){if(this.textShadow){var j=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/;var g=this.textShadow;var i=j.exec(this.textShadow);var h=g.replace(j,"");f.save();f.shadowColor=h;f.shadowOffsetX=parseInt(i[1],10);f.shadowOffsetY=parseInt(i[2],10);f.shadowBlur=parseInt(i[3],10);this._shadows=[{blur:f.shadowBlur,color:f.shadowColor,offX:f.shadowOffsetX,offY:f.shadowOffsetY}];this._shadowOffsets=[[parseInt(f.shadowOffsetX,10),parseInt(f.shadowOffsetY,10)]]}},_renderTextFill:function(g,j){this._boundaries=[];for(var h=0,f=j.length;h-1){f.call(this,this.fontSize)}if(this.textDecoration.indexOf("line-through")>-1){f.call(this,this.fontSize/2)}if(this.textDecoration.indexOf("overline")>-1){f.call(this,0)}},_getFontDeclaration:function(){return[this.fontStyle,this.fontWeight,this.fontSize+"px",this.fontFamily].join(" ")},_initDummyElementForCufon: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.useNative?this.fontSize*this.lineHeight:(-this._fontAscent-((this._fontAscent/5)*this.lineHeight)),g=-(this.width/2),f=this.useNative?this.fontSize-1:(this.height/2)-(i.length*this.fontSize)-this._totalLineHeight,h=this._getSVGTextAndBg(j,g,i),k=this._getSVGShadows(j,i);f+=(this._fontAscent?((this._fontAscent/5)*this.lineHeight):0);return['',h.textBgRects.join(""),"',k.join(""),h.textSpans.join(""),"",""].join("")},_getSVGShadows:function(h,n){var o=[],k,l,p,g,f=1;if(!this._shadows||!this._boundaries){return o}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||!this._boundaries){continue}k.push("')}return{textSpans:g,textBgRects:k}},_getFillAttributes:function(f){var g=f?new c.Color(f):"";if(!g||!g.getSource()||g.getAlpha()===1){return'fill="'+f+'"'}return'opacity="'+g.getAlpha()+'" fill="'+g.setAlpha(1).toRgb()+'"'},setColor:function(f){this.set("fill",f);return this},setFontsize:function(f){this.set("fontSize",f);this.setCoords();return this},getText:function(){return this.text},setText:function(f){this.set("text",f);this.setCoords();return this},set:function(f,g){if(typeof f=="object"){for(var h in f){this.set(h,f[h])}}else{this[f]=g;if(f==="fontFamily"&&this.path){this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+g+"$3")}}return this}});c.Text.fromObject=function(f){return new c.Text(f.text,d(f))};c.Text.fromElement=function(f){}})(typeof exports!="undefined"?exports:this);(function(){if(typeof document!="undefined"&&typeof window!="undefined"){return}var DOMParser=new require("xmldom").DOMParser,URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;function request(url,encoding,callback){var oURL=URL.parse(url),client=HTTP.createClient(oURL.port,oURL.hostname),request=client.request("GET",oURL.pathname,{host:oURL.hostname});client.addListener("error",function(err){if(err.errno===process.ECONNREFUSED){fabric.log("ECONNREFUSED: connection refused to "+client.host+":"+client.port)}else{fabric.log(err.message)}});request.end();request.on("response",function(response){var body="";if(encoding){response.setEncoding(encoding)}response.on("end",function(){callback(body)});response.on("data",function(chunk){if(response.statusCode==200){body+=chunk}})})}fabric.util.loadImage=function(url,callback){request(url,"binary",function(body){var img=new Image();img.src=new Buffer(body,"binary");img._src=url;callback(img)})};fabric.loadSVGFromURL=function(url,callback){url=url.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();request(url,"",function(body){fabric.loadSVGFromString(body,callback)})};fabric.loadSVGFromString=function(string,callback){var doc=new DOMParser().parseFromString(string);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 731cc10982d1b4989ef49dd6ae7132d72aab235a..f68dfd21619080b593922078e1582f35ff8d22e6 100644 GIT binary patch delta 35344 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", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "repository": "git://github.com/kangax/fabric.js", diff --git a/src/static_canvas.class.js b/src/static_canvas.class.js index d88d187c..17ac57b3 100644 --- a/src/static_canvas.class.js +++ b/src/static_canvas.class.js @@ -213,6 +213,8 @@ this.width = parseInt(this.lowerCanvasEl.width, 10) || 0; this.height = parseInt(this.lowerCanvasEl.height, 10) || 0; + if (!this.lowerCanvasEl.style) return; + this.lowerCanvasEl.style.width = this.width + 'px'; this.lowerCanvasEl.style.height = this.height + 'px'; }, diff --git a/src/util/dom_style.js b/src/util/dom_style.js index ae38ec61..ee604cf5 100644 --- a/src/util/dom_style.js +++ b/src/util/dom_style.js @@ -1,5 +1,5 @@ (function () { - + /** * Cross-browser wrapper for setting element's style * @method setStyle @@ -10,10 +10,13 @@ */ function setStyle(element, styles) { var elementStyle = element.style, match; + if (!elementStyle) { + return element; + } if (typeof styles === 'string') { element.style.cssText += ';' + styles; - return styles.indexOf('opacity') > -1 - ? setOpacity(element, styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) + return styles.indexOf('opacity') > -1 + ? setOpacity(element, styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; } for (var property in styles) { @@ -21,8 +24,8 @@ setOpacity(element, styles[property]); } else { - var normalizedProperty = (property === 'float' || property === 'cssFloat') - ? (typeof elementStyle.styleFloat === 'undefined' ? 'cssFloat' : 'styleFloat') + var normalizedProperty = (property === 'float' || property === 'cssFloat') + ? (typeof elementStyle.styleFloat === 'undefined' ? 'cssFloat' : 'styleFloat') : property; elementStyle[normalizedProperty] = styles[property]; } @@ -31,12 +34,12 @@ } var parseEl = fabric.document.createElement('div'), - supportsOpacity = typeof parseEl.style.opacity === 'string', + supportsOpacity = typeof parseEl.style.opacity === 'string', supportsFilters = typeof parseEl.style.filter === 'string', view = fabric.document.defaultView, supportsGCS = view && typeof view.getComputedStyle !== 'undefined', reOpacity = /alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/, - + /** @ignore */ setOpacity = function (element) { return element; }; @@ -66,5 +69,5 @@ } fabric.util.setStyle = setStyle; - + })(); \ No newline at end of file diff --git a/test.js b/test.js index f233bcd7..a993b847 100644 --- a/test.js +++ b/test.js @@ -1,5 +1,9 @@ var testrunner = require('qunit'); +testrunner.options.log.summary = false; +testrunner.options.log.tests = false; +testrunner.options.log.assertions = false; + testrunner.run({ code: "./dist/all.js", tests: [