From 6b36e725211c63f8585e84516b412f825e839b9b Mon Sep 17 00:00:00 2001 From: kangax Date: Mon, 22 Jul 2013 14:20:19 +0200 Subject: [PATCH] Make SVG output Corel Draw -compatible. Closes #758 --- dist/all.js | 6 +++--- dist/all.min.js | 2 +- dist/all.min.js.gz | Bin 49638 -> 49640 bytes src/static_canvas.class.js | 6 +++--- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/dist/all.js b/dist/all.js index 01c32543..f5b7e635 100644 --- a/dist/all.js +++ b/dist/all.js @@ -7156,7 +7156,7 @@ fabric.Shadow = fabric.util.createClass(/** @lends fabric.Shadow.prototype */ { markup.push( '', '' + '"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n' ); } markup.push( @@ -7279,7 +7279,7 @@ fabric.Shadow = fabric.util.createClass(/** @lends fabric.Shadow.prototype */ { if (intersecting) { newIdx = idx; - + // traverse down the stack looking for the nearest intersecting object for (var i=idx-1; i>=0; --i) { @@ -7337,7 +7337,7 @@ fabric.Shadow = fabric.util.createClass(/** @lends fabric.Shadow.prototype */ { else { newIdx = idx+1; } - + removeFromArray(this._objects, object); this._objects.splice(newIdx, 0, object); this.renderAll && this.renderAll(); diff --git a/dist/all.min.js b/dist/all.min.js index 7c1e678b..2e8972ad 100644 --- a/dist/all.min.js +++ b/dist/all.min.js @@ -1,6 +1,6 @@ /* build: `node build.js modules=ALL exclude=gestures` *//*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"1.2.6"};typeof exports!="undefined"&&(exports.fabric=fabric),typeof document!="undefined"&&typeof window!="undefined"?(fabric.document=document,fabric.window=window):(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 Cufon=function(){function r(e){var t=this.face=e.face;this.glyphs=e.glyphs,this.w=e.w,this.baseSize=parseInt(t["units-per-em"],10),this.family=t["font-family"].toLowerCase(),this.weight=t["font-weight"],this.style=t["font-style"]||"normal",this.viewBox=function(){var e=t.bbox.split(/\s+/),n={minX:parseInt(e[0],10),minY:parseInt(e[1],10),maxX:parseInt(e[2],10),maxY:parseInt(e[3],10)};return n.width=n.maxX-n.minX,n.height=n.maxY-n.minY,n.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")},n}(),this.ascent=-parseInt(t.ascent,10),this.descent=-parseInt(t.descent,10),this.height=-this.ascent+this.descent}function i(){var e={},t={oblique:"italic",italic:"oblique"};this.add=function(t){(e[t.style]||(e[t.style]={}))[t.weight]=t},this.get=function(n,r){var i=e[n]||e[t[n]]||e.normal||e.italic||e.oblique;if(!i)return null;r={normal:400,bold:700}[r]||parseInt(r,10);if(i[r])return i[r];var s={1:1,99:0}[r%100],o=[],u,a;s===undefined&&(s=r>400),r==500&&(r=400);for(var f in i){f=parseInt(f,10);if(!u||fa)a=f;o.push(f)}return ra&&(r=a),o.sort(function(e,t){return(s?e>r&&t>r?et:et:e=i.length+e?r():setTimeout(arguments.callee,10)}),function(t){e?t():n.push(t)}}(),supports:function(e,t){var n=fabric.document.createElement("span").style;return n[e]===undefined?!1:(n[e]=t,n[e]===t)},textAlign:function(e,t,n,r){return t.get("textAlign")=="right"?n>0&&(e=" "+e):nk&&(k=N),A.push(N),N=0;continue}var O=t.glyphs[T[b]]||t.missingGlyph;if(!O)continue;N+=C=Number(O.w||t.w)+h}A.push(N),N=Math.max(k,N);var M=[];for(var b=A.length;b--;)M[b]=N-A[b];if(C===null)return null;d+=l.width-C,m+=l.minX;var _,D;if(f)_=u,D=u.firstChild;else{_=fabric.document.createElement("span"),_.className="cufon cufon-canvas",_.alt=n,D=fabric.document.createElement("canvas"),_.appendChild(D);if(i.printable){var P=fabric.document.createElement("span");P.className="cufon-alt",P.appendChild(fabric.document.createTextNode(n)),_.appendChild(P)}}var H=_.style,B=D.style||{},j=c.convert(l.height-p+v),F=Math.ceil(j),I=F/j;D.width=Math.ceil(c.convert(N+d-m)*I),D.height=F,p+=l.minY,B.top=Math.round(c.convert(p-t.ascent))+"px",B.left=Math.round(c.convert(m))+"px";var q=Math.ceil(c.convert(N*I)),R=q+"px",U=c.convert(t.height),z=(i.lineHeight-1)*c.convert(-t.ascent/5)*(L-1);Cufon.textOptions.width=q,Cufon.textOptions.height=U*L+z,Cufon.textOptions.lines=L,Cufon.textOptions.totalLineHeight=z,e?(H.width=R,H.height=U+"px"):(H.paddingLeft=R,H.paddingBottom=U-1+"px");var W=Cufon.textOptions.context||D.getContext("2d"),X=F/l.height;Cufon.textOptions.fontAscent=t.ascent*X,Cufon.textOptions.boundaries=null;for(var V=Cufon.textOptions.shadowOffsets,b=y.length;b--;)V[b]=[y[b][0]*X,y[b][1]*X];W.save(),W.scale(X,X),W.translate(-m-1/X*D.width/2+(Cufon.fonts[t.family].offsetLeft||0),-p-Cufon.textOptions.height/X/2+(Cufon.fonts[t.family].offsetTop||0)),W.lineWidth=t.face["underline-thickness"],W.save();var J=Cufon.getTextDecoration(i),K=i.fontStyle==="italic";W.save(),Q();if(g)for(var b=0,w=g.length;b.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(e,t,i,s,o,u,a){var f=t===null;f&&(t=o.alt);var l=e.viewBox,c=i.computedFontSize||(i.computedFontSize=new Cufon.CSS.Size(n(u,i.get("fontSize"))+"px",e.baseSize)),h=i.computedLSpacing;h==undefined&&(h=i.get("letterSpacing"),i.computedLSpacing=h=h=="normal"?0:~~c.convertFrom(r(u,h)));var p,d;if(f)p=o,d=o.firstChild;else{p=fabric.document.createElement("span"),p.className="cufon cufon-vml",p.alt=t,d=fabric.document.createElement("span"),d.className="cufon-vml-canvas",p.appendChild(d);if(s.printable){var v=fabric.document.createElement("span");v.className="cufon-alt",v.appendChild(fabric.document.createTextNode(t)),p.appendChild(v)}a||p.appendChild(fabric.document.createElement("cvml:shape"))}var m=p.style,g=d.style,y=c.convert(l.height),b=Math.ceil(y),w=b/y,E=l.minX,S=l.minY;g.height=b,g.top=Math.round(c.convert(S-e.ascent)),g.left=Math.round(c.convert(E)),m.height=c.convert(e.height)+"px";var x=Cufon.getTextDecoration(s),T=i.get("color"),N=Cufon.CSS.textTransform(t,i).split(""),C=0,k=0,L=null,A,O,M=s.textShadow;for(var _=0,D=0,P=N.length;_-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)},toGrayscale:function(){return this.forEachObject(function(e){e.toGrayscale()})}},function(){function n(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e}function r(e,t){return Math.floor(Math.random()*(t-e+1))+e}function s(e){return e*i}function o(e){return e/i}function u(e,t,n){var r=Math.sin(n),i=Math.cos(n);e.subtractEquals(t);var s=e.x*i-e.y*r,o=e.x*r+e.y*i;return(new fabric.Point(s,o)).addEquals(t)}function a(e,t){return parseFloat(Number(e).toFixed(t))}function f(){return!1}function l(e){e||(e={});var t=+(new Date),n=e.duration||500,r=t+n,i,s=e.onChange||function(){},o=e.abort||function(){return!1},u=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},a="startValue"in e?e.startValue:0,f="endValue"in e?e.endValue:100,l=e.byValue||f-a;e.onStart&&e.onStart(),function c(){i=+(new Date);var f=i>r?n:i-t;s(u(f,a,l,n));if(i>r||o()){e.onComplete&&e.onComplete();return}h(c)}()}function p(e){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(e))]}function d(e,t,n){if(e){var r=fabric.util.createImage();r.onload=function(){t&&t.call(n,r),r=r.onload=null},r.src=e}else t&&t.call(n,e)}function v(e,t){function n(){++i===s&&t&&t(r)}var r=[],i=0,s=e.length;e.forEach(function(e,t){if(!e.type)return;var i=fabric.util.getKlass(e.type);i.async?i.fromObject(e,function(e,i){i||(r[t]=e),n()}):(r[t]=i.fromObject(e),n())})}function m(e,t,n){var r;return e.length>1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r}function g(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),n[d?"lineTo":"moveTo"](r,0),d=!d;n.restore()}function b(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function w(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function E(e){var t=e.prototype;for(var n=t.stateProperties.length;n--;){var r=t.stateProperties[n],i=r.charAt(0).toUpperCase()+r.slice(1),s="set"+i,o="get"+i;t[o]||(t[o]=function(e){return new Function('return this.get("'+e+'")')}(r)),t[s]||(t[s]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(r))}}function S(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function x(e,t){var n=[[e[0],e[2],e[4]],[e[1],e[3],e[5]],[0,0,1]],r=[[t[0],t[2],t[4]],[t[1],t[3],t[5]],[0,0,1]],i=[];for(var s=0;s<3;s++){i[s]=[];for(var o=0;o<3;o++){var u=0;for(var a=0;a<3;a++)u+=n[s][a]*r[a][o];i[s][o]=u}}return[i[0][0],i[1][0],i[0][1],i[1][1],i[0][2],i[1][2]]}function T(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]}function N(e,t,n,r){var i=r[0],s=r[1],o=r[2],u=r[3],a=r[4],f=r[5],l=r[6],c=O(f,l,i,s,u,a,o,t,n);for(var h=0;h1&&(d=Math.sqrt(d),n*=d,r*=d);var v=c/n,m=l/n,g=-l/r,y=c/r,b=v*u+m*a,w=g*u+y*a,E=v*e+m*t,S=g*e+y*t,x=(E-b)*(E-b)+(S-w)*(S-w),T=1/x-.25;T<0&&(T=0);var N=Math.sqrt(T);s===i&&(N=-N);var k=.5*(b+E)-N*(S-w),O=.5*(w+S)+N*(E-b),M=Math.atan2(w-O,b-k),_=Math.atan2(S-O,E-k),D=_-M;D<0&&s===1?D+=2*Math.PI:D>0&&s===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B=r&&(r=e[n][t]);else while(n--)e[n]>=r&&(r=e[n]);return r}function r(e,t){if(!e||e.length===0)return undefined;var n=e.length-1,r=t?e[n][t]:e[n];if(t)while(n--)e[n][t]>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(t){var n=this.constructor.superclass.prototype[t];return arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this)}function o(){function u(){this.initialize.apply(this,arguments)}var n=null,o=e.call(arguments,0);typeof o[0]=="function"&&(n=o.shift()),u.superclass=n,u.subclasses=[],n&&(i.prototype=n.prototype,u.prototype=new i,n.subclasses.push(u));for(var a=0,f=o.length;a-1?e.prototype[i]=function(e){return function(){var n=this.constructor.superclass;this.constructor.superclass=r;var i=t[e].apply(this,arguments);this.constructor.superclass=n;if(e!=="initialize")return i}}(i):e.prototype[i]=t[i],n&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};fabric.util.createClass=o}(),function(){function e(e){var t=Array.prototype.slice.call(arguments,1),n,r,i=t.length;for(r=0;r-1?s(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if(r==="opacity")s(e,t[r]);else{var i=r==="float"||r==="cssFloat"?typeof n.styleFloat=="undefined"?"cssFloat":"styleFloat":r;n[i]=t[r]}return e}var t=fabric.document.createElement("div"),n=typeof t.style.opacity=="string",r=typeof t.style.filter=="string",i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(e){return e};n?s=function(e,t){return e.style.opacity=t,e}:r&&(s=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+t*100+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+t*100+")",e}),fabric.util.setStyle=e}(),function(){function t(e){return typeof e=="string"?fabric.document.getElementById(e):e}function s(e,t){var n=fabric.document.createElement(e);for(var r in t)r==="class"?n.className=t[r]:r==="for"?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function o(e,t){(" "+e.className+" ").indexOf(" "+t+" ")===-1&&(e.className+=(e.className?" ":"")+t)}function u(e,t,n){return typeof t=="string"&&(t=s(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t}function a(e){var t,n,r={left:0,top:0},i=e&&e.ownerDocument,s={left:0,top:0},o={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!i)return{left:0,top:0};for(var u in o)s[o[u]]+=parseInt(f(e,u),10)||0;return t=i.documentElement,typeof e.getBoundingClientRect!="undefined"&&(r=e.getBoundingClientRect()),i!=null&&i===i.window?n=i:n=i.nodeType===9&&(i.defaultView||i.parentWindow),{left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)+s.left,top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0)+s.top}}function f(e,t){e.style||(e.style={});if(fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle)return fabric.document.defaultView.getComputedStyle(e,null)[t];var n=e.style[t];return!n&&e.currentStyle&&(n=e.currentStyle[t]),n}var e=Array.prototype.slice,n=function(t){return e.call(t,0)},r;try{r=n(fabric.document.childNodes)instanceof Array}catch(i){}r||(n=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t}),function(){function n(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=fabric.util.falseFunction),t?e.style[t]="none":typeof e.unselectable=="string"&&(e.unselectable="on"),e}function r(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=null),t?e.style[t]="":typeof e.unselectable=="string"&&(e.unselectable=""),e}var e=fabric.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=n,fabric.util.makeElementSelectable=r}(),function(){function e(e,t){var n=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),i=!0;r.onload=r.onreadystatechange=function(e){if(i){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;i=!1,t(e||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=e,n.appendChild(r)}fabric.util.getScript=e}(),fabric.util.getById=t,fabric.util.toArray=n,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getElementOffset=a,fabric.util.getElementStyle=f}(),function(){function e(e,t){return e+(/\?/.test(e)?"&":"?")+t}function n(){}function r(r,i){i||(i={});var s=i.method?i.method.toUpperCase():"GET",o=i.onComplete||function(){},u=t(),a;return u.onreadystatechange=function(){u.readyState===4&&(o(u),u.onreadystatechange=n)},s==="GET"&&(a=null,typeof i.parameters=="string"&&(r=e(r,i.parameters))),u.open(s,r,!0),(s==="POST"||s==="PUT")&&u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),u.send(a),u}var t=function(){var e=[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 t=e.length;t--;)try{var n=e[t]();if(n)return e[t]}catch(r){}}();fabric.util.request=r}(),function(){function e(e,t,n,r){return n*(e/=r)*e+t}function t(e,t,n,r){return-n*(e/=r)*(e-2)+t}function n(e,t,n,r){return e/=r/2,e<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e,t,n,r){return n*(e/=r)*e*e+t}function i(e,t,n,r){return n*((e=e/r-1)*e*e+1)+t}function s(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e+t:n/2*((e-=2)*e*e+2)+t}function o(e,t,n,r){return n*(e/=r)*e*e*e+t}function u(e,t,n,r){return-n*((e=e/r-1)*e*e*e-1)+t}function a(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e+t:-n/2*((e-=2)*e*e*e-2)+t}function f(e,t,n,r){return n*(e/=r)*e*e*e*e+t}function l(e,t,n,r){return n*((e=e/r-1)*e*e*e*e+1)+t}function c(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e*e+t:n/2*((e-=2)*e*e*e*e+2)+t}function h(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t}function p(e,t,n,r){return n*Math.sin(e/r*(Math.PI/2))+t}function d(e,t,n,r){return-n/2*(Math.cos(Math.PI*e/r)-1)+t}function v(e,t,n,r){return e===0?t:n*Math.pow(2,10*(e/r-1))+t}function m(e,t,n,r){return e===r?t+n:n*(-Math.pow(2,-10*e/r)+1)+t}function g(e,t,n,r){return e===0?t:e===r?t+n:(e/=r/2,e<1?n/2*Math.pow(2,10*(e-1))+t:n/2*(-Math.pow(2,-10*--e)+2)+t)}function y(e,t,n,r){return-n*(Math.sqrt(1-(e/=r)*e)-1)+t}function b(e,t,n,r){return n*Math.sqrt(1-(e=e/r-1)*e)+t}function w(e,t,n,r){return e/=r/2,e<1?-n/2*(Math.sqrt(1-e*e)-1)+t:n/2*(Math.sqrt(1-(e-=2)*e)+1)+t}function E(e,t,n,r){var i=1.70158,s=0,o=n;return e===0?t:(e/=r,e===1?t+n:(s||(s=r*.3),o-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){w.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),w.has(e,function(r){r?w.get(e,function(e){var t=S(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function S(e){var n=e.objects,i=e.options;return n=n.map(function(e){return t[r(e.type)].fromObject(e)}),{objects:n,options:i}}function x(e,n,r){e=e.trim();var i;if(typeof DOMParser!="undefined"){var s=new DOMParser;s&&s.parseFromString&&(i=s.parseFromString(e,"text/xml"))}else t.window.ActiveXObject&&(i=new ActiveXObject("Microsoft.XMLDOM"),i.async="false",i.loadXML(e.replace(//i,"")));t.parseSVGDocument(i.documentElement,function(e,t){n(e,t)},r)}function T(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t}function N(e){var t="";return e.backgroundColor&&e.backgroundColor.source&&(t=['',''].join("")),t}function C(e){var t=e.getElementsByTagName("linearGradient"),n=e.getElementsByTagName("radialGradient"),r,i,s={};i=t.length;for(;i--;)r=t[i],s[r.getAttribute("id")]=r;i=n.length;for(;i--;)r=n[i],s[r.getAttribute("id")]=r;return s}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s=t.util.toFixed,o=t.util.multiplyTransformMatrices;t.SHARED_ATTRIBUTES=["transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width"];var u={"fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight",cx:"left",x:"left",r:"radius","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration",cy:"top",y:"top",transform:"transformMatrix"},a={stroke:"strokeOpacity",fill:"fillOpacity"};t.parseTransformAttribute=function(){function e(e,t){var n=t[0];e[0]=Math.cos(n),e[1]=Math.sin(n),e[2]=-Math.sin(n),e[3]=Math.cos(n)}function n(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function r(e,t){e[2]=t[0]}function i(e,t){e[1]=t[0]}function s(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var o=[1,0,0,1,0,0],u="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",a="(?:\\s+,?\\s*|,\\s*)",f="(?:(skewX)\\s*\\(\\s*("+u+")\\s*\\))",l="(?:(skewY)\\s*\\(\\s*("+u+")\\s*\\))",c="(?:(rotate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+")"+a+"("+u+"))?\\s*\\))",h="(?:(scale)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",p="(?:(translate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",d="(?:(matrix)\\s*\\(\\s*("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+"\\s*\\))",v="(?:"+d+"|"+p+"|"+h+"|"+c+"|"+f+"|"+l+")",m="(?:"+v+"(?:"+a+v+")*"+")",g="^\\s*(?:"+m+"?)\\s*$",y=new RegExp(g),b=new RegExp(v,"g");return function(u){var a=o.concat(),f=[];if(!u||u&&!y.test(u))return a;u.replace(b,function(t){var u=(new RegExp(v)).exec(t).filter(function(e){return e!==""&&e!=null}),l=u[1],c=u.slice(2).map(parseFloat);switch(l){case"translate":s(a,c);break;case"rotate":e(a,c);break;case"scale":n(a,c);break;case"skewX":r(a,c);break;case"skewY":i(a,c);break;case"matrix":a=c}f.push(a.concat()),a=o.concat()});var l=f[0];while(f.length>1)f.shift(),l=t.util.multiplyTransformMatrices(l,f[0]);return l}}(),t.parseSVGDocument=function(){function s(e,t){while(e&&(e=e.parentNode))if(t.test(e.nodeName))return!0;return!1}var e=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/,n="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",r=new RegExp("^\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*"+"$");return function(n,o,u){if(!n)return;var a=new Date,f=t.util.toArray(n.getElementsByTagName("*"));if(f.length===0){f=n.selectNodes("//*[name(.)!='svg']");var l=[];for(var c=0,h=f.length;ce.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,t){return new n(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},distanceFrom:function(e){var t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)},midPointFrom:function(e){return new n(this.x+(e.x-this.x)/2,this.y+(e.y-this.y)/2)},min:function(e){return new n(Math.min(this.x,e.x),Math.min(this.y,e.y))},max:function(e){return new n(Math.max(this.x,e.x),Math.max(this.y,e.y))},toString:function(){return this.x+","+this.y},setXY:function(e,t){this.x=e,this.y=t},setFromPoint:function(e){this.x=e.x,this.y=e.y},swap:function(e){var t=this.x,n=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=n}}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){this.status=e,this.points=[]}var t=e.fabric||(e.fabric={});if(t.Intersection){t.warn("fabric.Intersection is already defined");return}t.Intersection=n,t.Intersection.prototype={appendPoint:function(e){this.points.push(e)},appendPoints:function(e){this.points=this.points.concat(e)}},t.Intersection.intersectLineLine=function(e,r,i,s){var o,u=(s.x-i.x)*(e.y-i.y)-(s.y-i.y)*(e.x-i.x),a=(r.x-e.x)*(e.y-i.y)-(r.y-e.y)*(e.x-i.x),f=(s.y-i.y)*(r.x-e.x)-(s.x-i.x)*(r.y-e.y);if(f!==0){var l=u/f,c=a/f;0<=l&&l<=1&&0<=c&&c<=1?(o=new n("Intersection"),o.points.push(new t.Point(e.x+l*(r.x-e.x),e.y+l*(r.y-e.y)))):o=new n}else u===0||a===0?o=new n("Coincident"):o=new n("Parallel");return o},t.Intersection.intersectLinePolygon=function(e,t,r){var i=new n,s=r.length;for(var o=0;o0&&(i.status="Intersection"),i},t.Intersection.intersectPolygonPolygon=function(e,t){var r=new n,i=e.length;for(var s=0;s0&&(r.status="Intersection"),r},t.Intersection.intersectPolygonRectangle=function(e,r,i){var s=r.min(i),o=r.max(i),u=new t.Point(o.x,s.y),a=new t.Point(s.x,o.y),f=n.intersectLinePolygon(s,u,e),l=n.intersectLinePolygon(u,o,e),c=n.intersectLinePolygon(o,a,e),h=n.intersectLinePolygon(a,s,e),p=new n;return p.appendPoints(f.points),p.appendPoints(l.points),p.appendPoints(c.points),p.appendPoints(h.points),p.points.length>0&&(p.status="Intersection"),p}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){e?this._tryParsingColor(e):this.setSource([0,0,0,1])}function r(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var t=e.fabric||(e.fabric={});if(t.Color){t.warn("fabric.Color is already defined.");return}t.Color=n,t.Color.prototype={_tryParsingColor:function(e){var t;e in n.colorNameMap&&(e=n.colorNameMap[e]),t=n.sourceFromHex(e),t||(t=n.sourceFromRgb(e)),t||(t=n.sourceFromHsl(e)),t&&this.setSource(t)},_rgbToHsl:function(e,n,r){e/=255,n/=255,r/=255;var i,s,o,u=t.util.array.max([e,n,r]),a=t.util.array.min([e,n,r]);o=(u+a)/2;if(u===a)i=s=0;else{var f=u-a;s=o>.5?f/(2-u-a):f/(u+a);switch(u){case e:i=(n-r)/f+(n']:this.type==="radial"&&(i=["']);for(var s=0;s');return i.push(this.type==="linear"?"":""),i.join("")},toLive:function(e){var t;if(!this.type)return;this.type==="linear"?t=e.createLinearGradient(this.coords.x1,this.coords.y1,this.coords.x2,this.coords.y2):this.type==="radial"&&(t=e.createRadialGradient(this.coords.x1,this.coords.y1,this.coords.r1,this.coords.x2,this.coords.y2,this.coords.r2));for(var n=0,r=this.colorStops.length;n'+''+""},toLive:function(e){var t=typeof this.source=="function"?this.source():this.source;return e.createPattern(t,this.repeat)}}),fabric.Shadow=fabric.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,initialize:function(e){for(var t in e)this[t]=e[t]},toSVG:function(){},toObject:function(){return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY}}}),function(){"use strict";if(fabric.StaticCanvas){fabric.warn("fabric.StaticCanvas is already defined.");return}var e=fabric.util.object.extend,t=fabric.util.getElementOffset,n=fabric.util.removeFromArray,r=fabric.util.removeListener,i=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=function(e,t){t||(t={}),this._initStatic(e,t),fabric.StaticCanvas.activeInstance=this},e(fabric.StaticCanvas.prototype,fabric.Observable),e(fabric.StaticCanvas.prototype,fabric.Collection),e(fabric.StaticCanvas.prototype,fabric.DataURLExporter),e(fabric.StaticCanvas.prototype,{backgroundColor:"",backgroundImage:"",backgroundImageOpacity:1,backgroundImageStretch:!0,overlayImage:"",overlayImageLeft:0,overlayImageTop:0,includeDefaultValues:!0,stateful:!0,renderOnAddition:!0,clipTo:null,controlsAboveOverlay:!1,onBeforeScaleRotate:function(){},_initStatic:function(e,t){this._objects=[],this._createLowerCanvas(e),this._initOptions(t),t.overlayImage&&this.setOverlayImage(t.overlayImage,this.renderAll.bind(this)),t.backgroundImage&&this.setBackgroundImage(t.backgroundImage,this.renderAll.bind(this)),t.backgroundColor&&this.setBackgroundColor(t.backgroundColor,this.renderAll.bind(this)),this.calcOffset()},calcOffset -:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(e,t,n){return fabric.util.loadImage(e,function(e){this.overlayImage=e,n&&"overlayImageLeft"in n&&(this.overlayImageLeft=n.overlayImageLeft),n&&"overlayImageTop"in n&&(this.overlayImageTop=n.overlayImageTop),t&&t()},this),this},setBackgroundImage:function(e,t,n){return fabric.util.loadImage(e,function(e){this.backgroundImage=e,n&&"backgroundImageOpacity"in n&&(this.backgroundImageOpacity=n.backgroundImageOpacity),n&&"backgroundImageStretch"in n&&(this.backgroundImageStretch=n.backgroundImageStretch),t&&t()},this),this},setBackgroundColor:function(e,t){if(e.source){var n=this;fabric.util.loadImage(e.source,function(r){n.backgroundColor=new fabric.Pattern({source:r,repeat:e.repeat}),t&&t()})}else this.backgroundColor=e,t&&t();return this},_createCanvasElement:function(){var e=fabric.document.createElement("canvas");e.style||(e.style={});if(!e)throw i;return this._initCanvasElement(e),e},_initCanvasElement:function(e){fabric.util.createCanvasElement(e);if(typeof e.getContext=="undefined")throw i},_initOptions:function(e){for(var t in e)this[t]=e[t];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"},_createLowerCanvas:function(e){this.lowerCanvasEl=fabric.util.getById(e)||this._createCanvasElement(),this._initCanvasElement(this.lowerCanvasEl),fabric.util.addClass(this.lowerCanvasEl,"lower-canvas"),this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(e){return this._setDimension("width",e)},setHeight:function(e){return this._setDimension("height",e)},setDimensions:function(e){for(var t in e)this._setDimension(t,e[t]);return this},_setDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.lowerCanvasEl.style[e]=t+"px",this.upperCanvasEl&&(this.upperCanvasEl[e]=t,this.upperCanvasEl.style[e]=t+"px"),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t+"px"),this[e]=t,this.calcOffset(),this.renderAll(),this},getElement:function(){return this.lowerCanvasEl},getActiveObject:function(){return null},getActiveGroup:function(){return null},_draw:function(e,t){if(!t)return;if(this.controlsAboveOverlay){var n=t.hasBorders,r=t.hasControls;t.hasBorders=t.hasControls=!1,t.render(e),t.hasBorders=n,t.hasControls=r}else t.render(e)},_onObjectAdded:function(e){this.stateful&&e.setupState(),e.setCoords(),e.canvas=this,this.fire("object:added",{target:e}),e.fire("added")},_onObjectRemoved:function(e){this.fire("object:removed",{target:e}),e.fire("removed")},getObjects:function(){return this._objects},clearContext:function(e){return e.clearRect(0,0,this.width,this.height),this},getContext:function(){return this.contextContainer},clear:function(){return this._objects.length=0,this.discardActiveGroup&&this.discardActiveGroup(),this.discardActiveObject&&this.discardActiveObject(),this.clearContext(this.contextContainer),this.contextTop&&this.clearContext(this.contextTop),this.fire("canvas:cleared"),this.renderAll(),this},renderAll:function(e){var t=this[e===!0&&this.interactive?"contextTop":"contextContainer"];this.contextTop&&this.selection&&!this._groupSelector&&this.clearContext(this.contextTop),e||this.clearContext(t),this.fire("before:render"),this.clipTo&&fabric.util.clipContext(this,t),this.backgroundColor&&(t.fillStyle=this.backgroundColor.toLive?this.backgroundColor.toLive(t):this.backgroundColor,t.fillRect(this.backgroundColor.offsetX||0,this.backgroundColor.offsetY||0,this.width,this.height)),typeof this.backgroundImage=="object"&&this._drawBackroundImage(t);var n=this.getActiveGroup();for(var r=0,i=this._objects.length;r',''),t.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),""),this.backgroundColor&&this.backgroundColor.source&&t.push('"),this.backgroundImage&&t.push(''),this.overlayImage&&t.push('');var n=this.getActiveGroup();n&&this.discardActiveGroup();for(var r=0,i=this.getObjects(),s=i.length;r"),t.join("")},remove:function(e){return this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared")),fabric.Collection.remove.call(this,e)},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e,t){var r=this._objects.indexOf(e);if(r!==0){var i;if(t){i=r;for(var s=r-1;s>=0;--s){var o=e.intersectsWithObject(this._objects[s])||e.isContainedWithinObject(this._objects[s])||this._objects[s].isContainedWithinObject(e);if(o){i=s;break}}}else i=r-1;n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},bringForward:function(e,t){var r=this._objects.indexOf(e);if(r!==this._objects.length-1){var i;if(t){i=r;for(var s=r+1;s"},e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;a0&&(t>this.targetFindTolerance?t-=this.targetFindTolerance:t=0,n>this.targetFindTolerance?n-=this.targetFindTolerance:n=0);var o=!0,u=r.getImageData(t,n,this.targetFindTolerance*2||1,this.targetFindTolerance*2||1);for(var a=3,f=u.data.length;ao.padding?l.x<0?l.x+=o.padding:l.x-=o.padding:l.x=0,s(l.y)>o.padding?l.y<0?l.y+=o.padding:l.y-=o.padding:l.y=0;var c=o.scaleX,h=o.scaleY;if(n==="equally"&&!u&&!a){var p=l.y+l.x,d=(o.height+o.strokeWidth)*r.original.scaleY+(o.width+o.strokeWidth)*r.original.scaleX;c=r.original.scaleX*p/d,h=r.original.scaleY*p/d,o.set("scaleX",c),o.set("scaleY",h)}else n?n==="x"&&!o.get("lockUniScaling")?(c=l.x/(o.width+o.strokeWidth),u||o.set("scaleX",c)):n==="y"&&!o.get("lockUniScaling")&&(h=l.y/(o.height+o.strokeWidth),a||o.set("scaleY",h)):(c=l.x/(o.width+o.strokeWidth),h=l.y/(o.height+o.strokeWidth),u||o.set("scaleX",c),a||o.set("scaleY",h));c<0&&(r.originX==="left"?r.originX="right":r.originX==="right"&&(r.originX="left")),h<0&&(r.originY==="top"?r.originY="bottom":r.originY==="bottom"&&(r.originY="top")),o.setPositionByOrigin(f,r.originX,r.originY)},_rotateObject:function(e,t){var n=this._currentTransform,s=this._offset;if(n.target.get("lockRotation"))return;var o=i(n.ey-n.top-s.top,n.ex-n.left-s.left),u=i(t-n.top-s.top,e-n.left-s.left),a=r(u-o+n.theta);a<0&&(a=360+a),n.target.angle=a},_setCursor:function(e){this.upperCanvasEl.style.cursor=e},_resetObjectTransform:function(e){e.scaleX=1,e.scaleY=1,e.setAngle(0)},_drawSelection:function(){var e=this.contextTop,t=this._groupSelector,n=t.left,r=t.top,i=s(n),o=s(r);e.fillStyle=this.selectionColor,e.fillRect(t.ex-(n>0?0:-n),t.ey-(r>0?0:-r),i,o),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var u=t.ex+a-(n>0?0:i),f=t.ey+a-(r>0?0:o);e.beginPath(),fabric.util.drawDashedLine(e,u,f,u+i,f,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f+o-1,u+i,f+o-1,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f,u,f+o,this.selectionDashArray),fabric.util.drawDashedLine(e,u+i-1,f,u+i-1,f+o,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+a-(n>0?0:i),t.ey+a-(r>0?0:o),i,o)},_findSelectedObjects:function(e){var t=[],n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,s=r+this._groupSelector.top,a,f=new fabric.Point(o(n,i),o(r,s)),l=new fabric.Point(u(n,i),u(r,s)),c=n===i&&r===s;for(var h=this._objects.length;h--;){a=this._objects[h];if(!a)continue;if(a.intersectsWithRect(f,l)||a.isContainedWithinRect(f,l)||a.containsPoint(f)||a.containsPoint(l))if(this.selection&&a.selectable){a.set("active",!0),t.push(a);if(c)break}}t.length===1?this.setActiveObject(t[0],e):t.length>1&&(t=new fabric.Group(t.reverse()),this.setActiveGroup(t),t.saveCoords(),this.fire("selection:created",{target:t}),this.renderAll())},findTarget:function(e,t){var n,r=this.getPointer(e);if(this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(e,this._offset))return n=this.lastRenderedObjectWithControlsAboveOverlay,n;var i=this.getActiveGroup();if(i&&!t&&this.containsPoint(e,i))return n=i,n;var s=[];for(var o=this._objects.length;o--;)if(this._objects[o]&&this._objects[o].visible&&this.containsPoint(e,this._objects[o])){if(!this.perPixelTargetFind&&!this._objects[o].perPixelTargetFind){n=this._objects[o],this.relatedTarget=n;break}s[s.length]=this._objects[o]}for(var u=0,a=s.length;u','\n'),t.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),""),this.backgroundColor&&this.backgroundColor.source&&t.push('"),this.backgroundImage&&t.push(''),this.overlayImage&&t.push('');var n=this.getActiveGroup();n&&this.discardActiveGroup();for(var r=0,i=this.getObjects(),s=i.length;r"),t.join("")},remove:function(e){return this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared")),fabric.Collection.remove.call(this,e)},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e,t){var r=this._objects.indexOf(e);if(r!==0){var i;if(t){i=r;for(var s=r-1;s>=0;--s){var o=e.intersectsWithObject(this._objects[s])||e.isContainedWithinObject(this._objects[s])||this._objects[s].isContainedWithinObject(e);if(o){i=s;break}}}else i=r-1;n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},bringForward:function(e,t){var r=this._objects.indexOf(e);if(r!==this._objects.length-1){var i;if(t){i=r;for(var s=r+1;s"},e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;a0&&(t>this.targetFindTolerance?t-=this.targetFindTolerance:t=0,n>this.targetFindTolerance?n-=this.targetFindTolerance:n=0);var o=!0,u=r.getImageData(t,n,this.targetFindTolerance*2||1,this.targetFindTolerance*2||1);for(var a=3,f=u.data.length;ao.padding?l.x<0?l.x+=o.padding:l.x-=o.padding:l.x=0,s(l.y)>o.padding?l.y<0?l.y+=o.padding:l.y-=o.padding:l.y=0;var c=o.scaleX,h=o.scaleY;if(n==="equally"&&!u&&!a){var p=l.y+l.x,d=(o.height+o.strokeWidth)*r.original.scaleY+(o.width+o.strokeWidth)*r.original.scaleX;c=r.original.scaleX*p/d,h=r.original.scaleY*p/d,o.set("scaleX",c),o.set("scaleY",h)}else n?n==="x"&&!o.get("lockUniScaling")?(c=l.x/(o.width+o.strokeWidth),u||o.set("scaleX",c)):n==="y"&&!o.get("lockUniScaling")&&(h=l.y/(o.height+o.strokeWidth),a||o.set("scaleY",h)):(c=l.x/(o.width+o.strokeWidth),h=l.y/(o.height+o.strokeWidth),u||o.set("scaleX",c),a||o.set("scaleY",h));c<0&&(r.originX==="left"?r.originX="right":r.originX==="right"&&(r.originX="left")),h<0&&(r.originY==="top"?r.originY="bottom":r.originY==="bottom"&&(r.originY="top")),o.setPositionByOrigin(f,r.originX,r.originY)},_rotateObject:function(e,t){var n=this._currentTransform,s=this._offset;if(n.target.get("lockRotation"))return;var o=i(n.ey-n.top-s.top,n.ex-n.left-s.left),u=i(t-n.top-s.top,e-n.left-s.left),a=r(u-o+n.theta);a<0&&(a=360+a),n.target.angle=a},_setCursor:function(e){this.upperCanvasEl.style.cursor=e},_resetObjectTransform:function(e){e.scaleX=1,e.scaleY=1,e.setAngle(0)},_drawSelection:function(){var e=this.contextTop,t=this._groupSelector,n=t.left,r=t.top,i=s(n),o=s(r);e.fillStyle=this.selectionColor,e.fillRect(t.ex-(n>0?0:-n),t.ey-(r>0?0:-r),i,o),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var u=t.ex+a-(n>0?0:i),f=t.ey+a-(r>0?0:o);e.beginPath(),fabric.util.drawDashedLine(e,u,f,u+i,f,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f+o-1,u+i,f+o-1,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f,u,f+o,this.selectionDashArray),fabric.util.drawDashedLine(e,u+i-1,f,u+i-1,f+o,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+a-(n>0?0:i),t.ey+a-(r>0?0:o),i,o)},_findSelectedObjects:function(e){var t=[],n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,s=r+this._groupSelector.top,a,f=new fabric.Point(o(n,i),o(r,s)),l=new fabric.Point(u(n,i),u(r,s)),c=n===i&&r===s;for(var h=this._objects.length;h--;){a=this._objects[h];if(!a)continue;if(a.intersectsWithRect(f,l)||a.isContainedWithinRect(f,l)||a.containsPoint(f)||a.containsPoint(l))if(this.selection&&a.selectable){a.set("active",!0),t.push(a);if(c)break}}t.length===1?this.setActiveObject(t[0],e):t.length>1&&(t=new fabric.Group(t.reverse()),this.setActiveGroup(t),t.saveCoords(),this.fire("selection:created",{target:t}),this.renderAll())},findTarget:function(e,t){var n,r=this.getPointer(e);if(this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(e,this._offset))return n=this.lastRenderedObjectWithControlsAboveOverlay,n;var i=this.getActiveGroup();if(i&&!t&&this.containsPoint(e,i))return n=i,n;var s=[];for(var o=this._objects.length;o--;)if(this._objects[o]&&this._objects[o].visible&&this.containsPoint(e,this._objects[o])){if(!this.perPixelTargetFind&&!this._objects[o].perPixelTargetFind){n=this._objects[o],this.relatedTarget=n;break}s[s.length]=this._objects[o]}for(var u=0,a=s.length;u"},get:function(e){return this[e]},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"&&e!=="clipTo"?this._set(e,t(this.get(e))):this._set(e,t);return this},_set:function(e,t){var n=e==="scaleX"||e==="scaleY";n&&(t=this._constrainScale(t));if(e==="scaleX"&&t<0)this.flipX=!this.flipX,t*=-1;else if(e==="scaleY"&&t<0)this.flipY=!this.flipY,t*=-1;else if(e==="width"||e==="height")this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2);return this[e]=t,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save();var r=this.transformMatrix;r&&!this.group&&e.setTransform(r[0],r[1],r[2],r[3],r[4],r[5]),n||this.transform(e),this.stroke&&(e.lineWidth=this.strokeWidth,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,e.strokeStyle=this.stroke.toLive?this.stroke.toLive(e):this.stroke),this.overlayFill?e.fillStyle=this.overlayFill:this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill),r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_renderFill:function(e){if(!this.fill)return;this.fill.toLive&&(e.save(),e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0)),e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke)return;e.save(),this.strokeDashArray?(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),o?(e.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(e)):this._renderDashedStroke&&this._renderDashedStroke(e),e.stroke()):this._stroke?this._stroke(e):e.stroke(),this._removeShadow(e),e.restore()},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){var n=this.toDataURL();return t.util.loadImage(n,function(n){e&&e(new t.Image(n))}),this},toDataURL:function(e){e||(e={});var n=t.util.createCanvasElement();n.width=this.getBoundingRectWidth(),n.height=this.getBoundingRectHeight(),t.util.wrapElement(n,"div");var r=new t.Canvas(n);e.format==="jpeg"&&(r.backgroundColor="#fff");var i={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set({active:!1,left:n.width/2,top:n.height/2}),r.add(this);var s=r.toDataURL(e);return this.set(i).setCoords(),r.dispose(),r=null,s},isType:function(e){return this.type===e},toGrayscale:function(){var e=this.get("fill");return e&&this.set("overlayFill",(new t.Color(e)).toGrayscale().toRgb()),this},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){return this.set("fill",new t.Pattern(e))},setShadow:function(e){return this.set("shadow",new t.Shadow(e))},animate:function(){if(arguments[0]&&typeof arguments[0]=="object"){var e=[],t,n;for(t in arguments[0])e.push(t);for(var r=0,i=e.length;re.x&&n.left+n.widthe.y&&n.top+n.height=e.y&&f.d.y>=e.y)continue;f.o.x===f.d.x&&f.o.x>=e.x?(o=f.o.x,u=e.y):(n=0,r=(f.d.y-f.o.y)/(f.d.x-f.o.x),i=e.y-n*e.x,s=f.o.y-r*f.o.x,o=-(i-s)/(n-r),u=i+n*o),o>=e.x&&(a+=1);if(a===2)break}return a},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],t=fabric.util.array.min(e),n=fabric.util.array.max(e),r=Math.abs(t-n),i=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],s=fabric.util.array.min(i),o=fabric.util.array.max(i),u=Math.abs(s-o);return{left:t,top:s,width:r,height:u}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(e){return Math.abs(e)1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x:m.x,y:m.y};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords&&this._setCornerCoords(),this}})}(),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this[e]!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner),o=this._findCrossPoints({x:i,y:s},u);if(o!==0&&o%2===1)return this.__corner=a,a}return!1},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=this.strokeWidth>1?this.strokeWidth:0;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)+.5,~~(-(u/2)-t-r/2*this.scaleY)+.5,~~(o+n+r*this.scaleX),~~(u+n+r*this.scaleY));if(this.hasRotatingPoint&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;var t=this.cornerSize,n=t/2,r=this.strokeWidth>1?this.strokeWidth/2:0,i=-(this.width/2),s=-(this.height/2),o,u,a=t/this.scaleX,f=t/this.scaleY,l=this.padding/this.scaleX,c=this.padding/this.scaleY,h=n/this.scaleY,p=n/this.scaleX,d=(n-t)/this.scaleX,v=(n-t)/this.scaleY,m=this.height,g=this.width,y=this.transparentCorners?"strokeRect":"fillRect",b=this.transparentCorners,w=typeof G_vmlCanvasManager!="undefined";return e.save(),e.lineWidth=1/Math.max(this.scaleX,this.scaleY),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=e.fillStyle=this.cornerColor,o=i-p-r-l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),this.get("lockUniScaling")||(o=i+g/2-p,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),this.hasRotatingPoint&&(o=i+g/2-p,u=this.flipY?s+m+this.rotatingPointOffset/this.scaleY-f/2+r+c:s-this.rotatingPointOffset/this.scaleY-f/2-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),e.restore(),this}})}(),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r={x1:1,x2:1,y1:1,y2:1},i=t.StaticCanvas.supports("setLineDash");if(t.Line){t.warn("fabric.Line is already defined");return}t.Line=t.util.createClass(t.Object,{type:"line",initialize:function(e,t){t=t||{},e||(e=[0,0,0,0]),this.callSuper("initialize",t),this.set("x1",e[0]),this.set("y1",e[1]),this.set("x2",e[2]),this.set("y2",e[3]),this._setWidthHeight(t)},_setWidthHeight:function(e){e||(e={}),this.set("width",Math.abs(this.x2-this.x1)||1),this.set("height",Math.abs(this.y2-this.y1)||1),this.set("left","left"in e?e.left:Math.min(this.x1,this.x2)+this.width/2),this.set("top","top"in e?e.top:Math.min(this.y1,this.y2)+this.height/2)},_set:function(e,t){return this[e]=t,e in r&&this._setWidthHeight(),this},_render:function(e){e.beginPath();var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix&&e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top);if(!this.strokeDashArray||this.strokeDashArray&&i){var n=this.x1<=this.x2?-1:1,r=this.y1<=this.y2?-1:1;e.moveTo(this.width===1?0:n*this.width/2,this.height===1?0:r*this.height/2),e.lineTo(this.width===1?0:n*-1*this.width/2,this.height===1?0:r*-1*this.height/2)}e.lineWidth=this.strokeWidth;var s=e.strokeStyle;e.strokeStyle=this.stroke||e.fillStyle,this._renderStroke(e),e.strokeStyle=s},_renderDashedStroke:function(e){var n=this.x1<=this.x2?-1:1,r=this.y1<=this.y2?-1:1,i=this.width===1?0:n*this.width/2,s=this.height===1?0:r*this.height/2;e.beginPath(),t.util.drawDashedLine(e,i,s,-i,-s,this.strokeDashArray),e.closePath()},toObject:function(e){return n(this.callSuper("toObject",e),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){var e=[];return this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!0)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e);var t=this.get("radius" )*2;this.set("width",t).set("height",t)},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(){var e=[],t=this.width/2,n=this.height/2,r=[-t+" "+n,"0 "+ -n,t+" "+n].join(",");return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!0)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!0)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,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(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this._renderFill(e),this._renderStroke(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function r(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}t.Rect=t.util.createClass(t.Object,{type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(e){e=e||{},this._initStateProperties(),this.callSuper("initialize",e),this._initRxRy(),this.x=e.x||0,this.y=e.y||0},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height,u=this.group&&this.group.type!=="group";e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y);var a=t!==0||n!==0;e.moveTo(r+t,i),e.lineTo(r+s-t,i),a&&e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),a&&e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),a&&e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),a&&e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")})},toSVG:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),e.push("'),e.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,i){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=r(s);var o=new t.Rect(n(i?t.util.object.clone(i):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed,r=t.util.array.min;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(){var e=[],t=[];for(var r=0,i=this.points.length;r'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),t.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n"},toObject:function(e){var t=s(this.callSuper("toObject",e),{path:this.path,pathOffset:this.pathOffset});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(){var e=[],t=[];for(var n=0,r=this.path.length;n',"",""),t.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n=[],r,i,s=/(-?\.\d+)|(-?\d+(\.\d+)?)/g,o,u;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var n=0,r=e.length;n"),t.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},toGrayscale:function(){var e=this.paths.length;while(e--)this.paths[e].toGrayscale();return this},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e,n){typeof e.paths=="string"?t.loadSVGFromURL(e.paths,function(r){var i=e.paths;delete e.paths;var s=t.util.groupSVGElements(r,e,i);n(s)}):t.util.enlivenObjects(e.paths,function(r){delete e.paths,n(new t.PathGroup(r,e))})},t.PathGroup.async=!0}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){var e=this.left,t=this.top;this.forEachObject(function(n){var r=n.get("left"),i=n.get("top");n.set("originalLeft",r),n.set("originalTop",i),n.set("left",r-e),n.set("top",i-t),n.setCoords(),n.__origHasControls=n.hasControls,n.hasControls=!1},this)},toString:function(){return"#"},getObjects:function(){return this._objects},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textShadow:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e);var r=Math.max(this.scaleX,this.scaleY);this.clipTo&&t.util.clipContext(this,e);for(var i=0,s=this._objects.length;i'+e.join("")+""},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','');if(this.stroke||this.strokeDashArray){var t=this.fill;this.fill=null,e.push("'),this.fill=t}return e.push(""),e.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this.setElement(this._originalImage),e&&e();return}var t=this._originalImage,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height;if(fabric.isLikelyNode){var s=n.toDataURL("image/png").substring(22);r.src=new Buffer(s,"base64"),i._element=r,e&&e()}else r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png");return this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e){e.filters&&e.filters.length&&(this.filters=e.filters.map(function(e){return e&&fabric.Image.filters[e.type].fromObject(e)}))},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){var n=fabric.document.createElement("img"),r=e.src;e.width&&(n.width=e.width),e.height&&(n.height=e.height),n.onload=function(){fabric.Image.prototype._initFilters.call(e,e);var r=new fabric.Image(n,e);t&&t(r),n=n.onload=n.onerror=null},n.onerror=function(){fabric.log("Error loading "+n.src),t&&t(null,!0),n=n.onload=n.onerror=null},n.src=r},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))})},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.Brightness=fabric.util.createClass({type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;s=0&&N=0&&Co&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.object.clone,i=t.util.toFixed,s=t.StaticCanvas.supports("setLineDash");if(t.Text){t.warn("fabric.Text is already defined");return}var o=t.Object.prototype.stateProperties.concat();o.push("fontFamily","fontWeight","fontSize","path","text","textDecoration","textShadow","textAlign","fontStyle","lineHeight","backgroundColor","textBackgroundColor","useNative"),t.Text=t.util.createClass(t.Object,{_dimensionAffectingProps:{fontSize:!0,fontWeight:!0,fontFamily:!0,textDecoration:!0,fontStyle:!0,lineHeight:!0,stroke:!0,strokeWidth:!0,text:!0},type:"text",fontSize:40,fontWeight:"normal",fontFamily:"Times New Roman",textDecoration:"",textShadow:"",textAlign:"left",fontStyle:"",lineHeight:1.3,backgroundColor:"",textBackgroundColor:"",path:null,useNative:!0,stateProperties:o,initialize:function(e,t){t=t||{},this.text=e,this.__skipDimension=!0,this.setOptions(t),this.__skipDimension=!1,this._initDimensions(),this.setCoords()},_initDimensions:function(){if(this.__skipDimension)return;var e=t.util.createCanvasElement();this._render(e.getContext("2d"))},toString:function(){return"#'},_render:function(e){var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaNative:function(e){this.transform(e,t.isLikelyNode),this._setTextStyles(e);var n=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this.clipTo&&t.util.clipContext(this,e),this._renderTextBackground(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),e.save(),this._setTextShadow(e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this.textShadow&&e.restore(),e.restore(),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this.clipTo&&e.restore(),this._setBoundaries(e,n),this._totalLineHeight=0,this.setCoords()},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_setTextShadow:function(e){if(!this.textShadow)return;var t=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/,n=this.textShadow,r=t.exec(this.textShadow),i=n.replace(t,"");e.save(),e.shadowColor=i,e.shadowOffsetX=parseInt(r[1],10),e.shadowOffsetY=parseInt(r[2],10),e.shadowBlur=parseInt(r[3],10),this._shadows=[{blur:e.shadowBlur,color:e.shadowColor,offX:e.shadowOffsetX,offY:e.shadowOffsetY}],this._shadowOffsets=[[parseInt(e.shadowOffsetX,10),parseInt(e.shadowOffsetY,10)]]},_drawTextLine:function(e,t,n,r,i){if(this.textAlign!=="justify"){t[e](n,r,i);return}var s=t.measureText(n).width,o=this.width;if(o>s){var u=n.split(/\s+/),a=t.measureText(n.replace(/\s+/g,"")).width,f=o-a,l=u.length-1,c=f/l,h=0;for(var p=0,d=u.length;p-1&&i(this.fontSize),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(0)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(e,t){if(!this.visible)return;e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){return n(this.callSuper("toObject",e),{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,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;this.backgroundColor&&this._boundaries&&o.push("');for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.textBackgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},setColor:function(e){return this.set("fill",e),this},getText:function(){return this.text},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Text.prototype,{_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{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,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_initDummyElementForCufon:function(){var e=fabric.document.createElement("pre"),t=fabric.document.createElement("div");return t.appendChild(e),typeof G_vmlCanvasManager=="undefined"?e.innerHTML=this.text:e.innerText=this.text.replace(/\r?\n/gi,"\r"),e.style.fontSize=this.fontSize+"px",e.style.letterSpacing="normal",e}}),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs"),r=n.createReadStream(e),i="";r.on("data",function(e){i+=e}),r.on("end",function(){t(i)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&(e instanceof Buffer||e.indexOf("data")===0)?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e&&request(e,"binary",r)},fabric.loadSVGFromURL=function(e,t){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t)}):request(e,"",function(e){fabric.loadSVGFromString(e,t)})},fabric.loadSVGFromString=function(e,t){var n=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(n.documentElement,function(e,n){t(e,n)})},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e),t(r)})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},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 f46770e8c2e7bc1995bc2d4c8cf35e7e0cf1bdd7..da8c8288b99e0a72cb6d6d69f913e13625567a5b 100644 GIT binary patch delta 26784 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 RdNd3E{{iO*F;ED}0s!l~J|zGE diff --git a/src/static_canvas.class.js b/src/static_canvas.class.js index 6105ecc7..0855b967 100644 --- a/src/static_canvas.class.js +++ b/src/static_canvas.class.js @@ -744,7 +744,7 @@ markup.push( '', '' + '"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n' ); } markup.push( @@ -867,7 +867,7 @@ if (intersecting) { newIdx = idx; - + // traverse down the stack looking for the nearest intersecting object for (var i=idx-1; i>=0; --i) { @@ -925,7 +925,7 @@ else { newIdx = idx+1; } - + removeFromArray(this._objects, object); this._objects.splice(newIdx, 0, object); this.renderAll && this.renderAll();