From 0fc54d4f7f2779d3298346f3d6ae05821e07488f Mon Sep 17 00:00:00 2001 From: kangax Date: Fri, 6 Sep 2013 19:12:57 +0200 Subject: [PATCH] Fix Point and Intersection docs. Build distribution. --- dist/all.js | 27 +++++++++++++++------------ dist/all.min.js | 6 +++--- dist/all.min.js.gz | Bin 50403 -> 50395 bytes dist/all.require.js | 27 +++++++++++++++------------ src/intersection.class.js | 1 + src/point.class.js | 1 + 6 files changed, 35 insertions(+), 27 deletions(-) diff --git a/dist/all.js b/dist/all.js index 34570f1e..31f43a2e 100644 --- a/dist/all.js +++ b/dist/all.js @@ -4990,6 +4990,7 @@ fabric.util.string = { /** * Point class * @class fabric.Point + * @memberOf fabric * @constructor * @param {Number} x * @param {Number} y @@ -5278,6 +5279,7 @@ fabric.util.string = { /** * Intersection class * @class fabric.Intersection + * @memberOf fabric * @constructor */ function Intersection(status) { @@ -6484,10 +6486,11 @@ fabric.Pattern = fabric.util.createClass(/** @lends fabric.Pattern.prototype */ }, /** - * @return {String} Returns CSS3 text-shadow declaration + * Returns a string representation of an instance * @see http://www.w3.org/TR/css-text-decor-3/#text-shadow + * @return {String} Returns CSS3 text-shadow declaration */ - getShadow: function() { + toString: function() { return [this.offsetX, this.offsetY, this.blur, this.color].join('px '); }, @@ -18003,7 +18006,7 @@ fabric.util.object.extend(fabric.Text.prototype, { fontFamily: this.fontFamily, fontWeight: this.fontWeight, textDecoration: this.textDecoration, - textShadow: this.shadow && this.shadow.getShadow(), + textShadow: this.shadow && this.shadow.toString(), textAlign: this.textAlign, fontStyle: this.fontStyle, lineHeight: this.lineHeight, @@ -18114,15 +18117,15 @@ fabric.util.object.extend(fabric.Text.prototype, { } /** @private */ - function request_fs(url, callback){ - var fs = require('fs'), - stream = fs.createReadStream(url), - body = ''; - stream.on('data', function(chunk){ - body += chunk; - }); - stream.on('end', function(){ - callback(body); + function request_fs(path, callback){ + var fs = require('fs'); + fs.readFile(path, function (err, data) { + if (err) { + fabric.log(err); + throw err; + } else { + callback(data); + } }); } diff --git a/dist/all.min.js b/dist/all.min.js index 9603261c..9e35e4fe 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 exports=exports||{},fabric=fabric||{version:"1.2.11"};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,t){return c(t)[fabric.util.string.camelize(fabric.util.string.capitalize(e))]}function c(e){if(!e)return fabric;var t=e.split("."),n=t.length,r=fabric.window;for(var i=0;i1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r}function v(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 g(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function y(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function b(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 w(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function E(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 S(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]}function x(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=L(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),N=1/x-.25;N<0&&(N=0);var L=Math.sqrt(N);s===i&&(L=-L);var A=.5*(b+E)-L*(S-w),O=.5*(w+S)+L*(E-b),M=Math.atan2(w-O,b-A),_=Math.atan2(S-O,E-A),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){e||(e={});var t=+(new Date),r=e.duration||500,i=t+r,s,o=e.onChange||function(){},u=e.abort||function(){return!1},a=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},f="startValue"in e?e.startValue:0,l="endValue"in e?e.endValue:100,c=e.byValue||l-f;e.onStart&&e.onStart(),function h(){s=+(new Date);var l=s>i?r:s-t;o(a(l,f,c,r));if(s>i||u()){e.onComplete&&e.onComplete();return}n(h)}()}var t=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)},n=function(){return t.apply(fabric.window,arguments)};fabric.util.animate=e,fabric.util.requestAnimFrame=n}(),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)}}),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Shadow){t.warn("fabric.Shadow is already defined.");return}t.Shadow=t.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,initialize:function(e){typeof e=="string"&&(e=this._parseShadow(e));for(var n in e)this[n]=e[n];this.id=t.Object.__uid++},_parseShadow:function(e){var n=e.trim(),r=t.Shadow.reOffsetsAndBlur.exec(n)||[],i=n.replace(t.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)";return{color:i.trim(),offsetX:parseInt(r[1],10)||0,offsetY:parseInt(r[2],10)||0,blur:parseInt(r[3],10)||0}},getShadow:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(e){var t="SourceAlpha";return e&&(e.fill===this.color||e.stroke===this.color)&&(t="SourceGraphic"),''+''+''+""+""+''+""+""},toObject:function(){return{color:this.color,blur:this.blur,offsetX -:this.offsetX,offsetY:this.offsetY}}}),t.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/}(typeof exports!="undefined"?exports:this),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=fabric.util.createClass({initialize:function(e,t){t||(t={}),this._initStatic(e,t),fabric.StaticCanvas.activeInstance=this},backgroundColor:"",backgroundImage:"",backgroundImageOpacity:1,backgroundImageStretch:!0,overlayImage:"",overlayImageLeft:0,overlayImageTop:0,includeDefaultValues:!0,stateful:!0,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!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','\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.prototype,fabric.Observable),e(fabric.StaticCanvas.prototype,fabric.Collection),e(fabric.StaticCanvas.prototype,fabric.DataURLExporter),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,i(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 i=this._currentTransform,s=this._offset;if(i.target.get("lockRotation"))return;var o=r(i.ey-i.top-s.top,i.ex-i.left-s.left),u=r(t-i.top-s.top,e-i.left-s.left),a=n(u-o+i.theta);a<0&&(a=360+a),i.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,s=i(n),o=i(r);e.fillStyle=this.selectionColor,e.fillRect(t.ex-(n>0?0:-n),t.ey-(r>0?0:-r),s,o),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var a=t.ex+u-(n>0?0:s),f=t.ey+u-(r>0?0:o);e.beginPath(),fabric.util.drawDashedLine(e,a,f,a+s,f,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f+o-1,a+s,f+o-1,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f,a,f+o,this.selectionDashArray),fabric.util.drawDashedLine(e,a+s-1,f,a+s-1,f+o,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+u-(n>0?0:s),t.ey+u-(r>0?0:o),s,o)},_findSelectedObjects:function(e){var t=[],n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,u=r+this._groupSelector.top,a,f=new fabric.Point(s(n,i),s(r,u)),l=new fabric.Point(o(n,i),o(r,u)),c=n===i&&r===u;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){if(this.skipTargetFind)return;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._objects[o].selectable&&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-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){e||(e={});var t=+(new Date),r=e.duration||500,i=t+r,s,o=e.onChange||function(){},u=e.abort||function(){return!1},a=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},f="startValue"in e?e.startValue:0,l="endValue"in e?e.endValue:100,c=e.byValue||l-f;e.onStart&&e.onStart(),function h(){s=+(new Date);var l=s>i?r:s-t;o(a(l,f,c,r));if(s>i||u()){e.onComplete&&e.onComplete();return}n(h)}()}var t=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)},n=function(){return t.apply(fabric.window,arguments)};fabric.util.animate=e,fabric.util.requestAnimFrame=n}(),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',"",t,"",""].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)}}),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Shadow){t.warn("fabric.Shadow is already defined.");return}t.Shadow=t.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,initialize:function(e){typeof e=="string"&&(e=this._parseShadow(e));for(var n in e)this[n]=e[n];this.id=t.Object.__uid++},_parseShadow:function(e){var n=e.trim(),r=t.Shadow.reOffsetsAndBlur.exec(n)||[],i=n.replace(t.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)";return{color:i.trim(),offsetX:parseInt(r[1],10)||0,offsetY:parseInt(r[2],10)||0,blur:parseInt(r[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(e){var t="SourceAlpha";return e&&(e.fill===this.color||e.stroke===this.color)&&(t="SourceGraphic"),''+''+''+""+""+''+""+""},toObject:function(){return{color:this.color,blur:this.blur,offsetX: +this.offsetX,offsetY:this.offsetY}}}),t.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/}(typeof exports!="undefined"?exports:this),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=fabric.util.createClass({initialize:function(e,t){t||(t={}),this._initStatic(e,t),fabric.StaticCanvas.activeInstance=this},backgroundColor:"",backgroundImage:"",backgroundImageOpacity:1,backgroundImageStretch:!0,overlayImage:"",overlayImageLeft:0,overlayImageTop:0,includeDefaultValues:!0,stateful:!0,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!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','\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.prototype,fabric.Observable),e(fabric.StaticCanvas.prototype,fabric.Collection),e(fabric.StaticCanvas.prototype,fabric.DataURLExporter),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,i(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 i=this._currentTransform,s=this._offset;if(i.target.get("lockRotation"))return;var o=r(i.ey-i.top-s.top,i.ex-i.left-s.left),u=r(t-i.top-s.top,e-i.left-s.left),a=n(u-o+i.theta);a<0&&(a=360+a),i.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,s=i(n),o=i(r);e.fillStyle=this.selectionColor,e.fillRect(t.ex-(n>0?0:-n),t.ey-(r>0?0:-r),s,o),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var a=t.ex+u-(n>0?0:s),f=t.ey+u-(r>0?0:o);e.beginPath(),fabric.util.drawDashedLine(e,a,f,a+s,f,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f+o-1,a+s,f+o-1,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f,a,f+o,this.selectionDashArray),fabric.util.drawDashedLine(e,a+s-1,f,a+s-1,f+o,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+u-(n>0?0:s),t.ey+u-(r>0?0:o),s,o)},_findSelectedObjects:function(e){var t=[],n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,u=r+this._groupSelector.top,a,f=new fabric.Point(s(n,i),s(r,u)),l=new fabric.Point(o(n,i),o(r,u)),c=n===i&&r===u;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){if(this.skipTargetFind)return;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._objects[o].selectable&&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,n){var i=e==="scaleX"||e==="scaleY";return i&&(n=this._constrainScale(n)),e==="scaleX"&&n<0?(this.flipX=!this.flipX,n*=-1):e==="scaleY"&&n<0?(this.flipY=!this.flipY,n*=-1):e==="width"||e==="height"?this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2):e==="shadow"&&n&&!(n instanceof t.Shadow)&&(n=new t.Shadow(n)),this[e]=n,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))},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.centerH().centerV()},remove:function(){return this.canvas.remove(this)},sendToBack:function(){return this.group?t.StaticCanvas.prototype.sendToBack.call(this.group,this):this.canvas.sendToBack(this),this},bringToFront:function(){return this.group?t.StaticCanvas.prototype.bringToFront.call(this.group,this):this.canvas.bringToFront(this),this},sendBackwards:function(e){return this.group?t.StaticCanvas.prototype.sendBackwards.call(this.group,this,e):this.canvas.sendBackwards(this,e),this},bringForward:function(e){return this.group?t.StaticCanvas.prototype.bringForward.call(this.group,this,e):this.canvas.bringForward(this,e),this},moveTo:function(e){return this.group?t.StaticCanvas.prototype.moveTo.call(this.group,this,e):this.canvas.moveTo(this,e),this}}),t.util.createAccessors(t.Object),t.Object.prototype.rotate=t.Object.prototype.setAngle,n(t.Object.prototype,t.Observable),t.Object.NUM_FRACTION_DIGITS=2,t.Object.__uid=0}(typeof exports!="undefined"?exports:this),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{translateToCenterPoint:function(t,n,r){var i=t.x,s=t.y;return n==="left"?i=t.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"&&(i=t.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2),r==="top"?s=t.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"&&(s=t.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},translateToOriginPoint:function(t,n,r){var i=t.x,s=t.y;return n==="left"?i=t.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"&&(i=t.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2),r==="top"?s=t.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"&&(s=t.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},getCenterPoint:function(){return this.translateToCenterPoint(new fabric.Point(this.left,this.top),this.originX,this.originY)},toLocalPoint:function(t,n,r){var i=this.getCenterPoint(),s,o;return n!==undefined&&r!==undefined?(n==="left"?s=i.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"?s=i.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2:s=i.x,r==="top"?o=i.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"?o=i.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2:o=i.y):(s=this.left,o=this.top),fabric.util.rotatePoint(new fabric.Point(t.x,t.y),i,-e(this.angle)).subtractEquals(new fabric.Point(s,o))},setPositionByOrigin:function(e,t,n){var r=this.translateToCenterPoint(e,t,n),i=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",i.x),this.set("top",i.y)},adjustPosition:function(t){var n=e(this.angle),r=this.getWidth()/2,i=Math.cos(n)*r,s=Math.sin(n)*r,o=this.getWidth(),u=Math.cos(n)*o,a=Math.sin(n)*o;this.originX==="center"&&t==="left"||this.originX==="right"&&t==="center"?(this.left-=i,this.top-=s):this.originX==="left"&&t==="center"||this.originX==="center"&&t==="right"?(this.left+=i,this.top+=s):this.originX==="left"&&t==="right"?(this.left+=u,this.top+=a):this.originX==="right"&&t==="left"&&(this.left-=u,this.top-=a),this.setCoords(),this.originX=t},_getLeftTopCoords:function(){var t=e(this.angle),n=this.getWidth()/2,r=Math.cos(t)*n,i=Math.sin(t)*n,s=this.left,o=this.top;if(this.originX==="center"||this.originX==="right")s-=r;if(this.originY==="center"||this.originY==="bottom")o-=i;return{x:s,y:o}}})}(),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{oCoords:null,intersectsWithRect:function(e,t){var n=this.oCoords,r=new fabric.Point(n.tl.x,n.tl.y),i=new fabric.Point(n.tr.x,n.tr.y),s=new fabric.Point(n.bl.x,n.bl.y),o=new fabric.Point(n.br.x,n.br.y),u=fabric.Intersection.intersectPolygonRectangle([r,i,o,s],e,t);return u.status==="Intersection"},intersectsWithObject:function(e){function t(e){return{tl:new fabric.Point(e.tl.x,e.tl.y),tr:new fabric.Point(e.tr.x,e.tr.y),bl:new fabric.Point(e.bl.x,e.bl.y),br:new fabric.Point(e.br.x,e.br.y)}}var n=t(this.oCoords),r=t(e.oCoords),i=fabric.Intersection.intersectPolygonPolygon([n.tl,n.tr,n.br,n.bl],[r.tl,r.tr,r.br,r.bl]);return i.status==="Intersection"},isContainedWithinObject:function(e){var t=e.getBoundingRect(),n=new fabric.Point(t.left,t.top),r=new fabric.Point(t.left+t.width,t.top+t.height);return this.isContainedWithinRect(n,r)},isContainedWithinRect:function(e,t){var n=this.getBoundingRect();return n.left>e.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/2)*2;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)+1,~~(u+n+r*this.scaleY)+1);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/2),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}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("left"),endValue:this.getCenter().left,duration:this.FX_DURATION,onChange:function(t){e.set("left",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxCenterObjectV:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("top"),endValue:this.getCenter().top,duration:this.FX_DURATION,onChange:function(t){e.set("top",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxRemove:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("opacity"),endValue:0,duration:this.FX_DURATION,onStart:function(){e.set("active",!1)},onChange:function(t){e.set("opacity",t),s.renderAll(),i()},onComplete:function(){s.remove(e),r()}}),this}}),fabric.util.object.extend(fabric.Object.prototype,{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;r'),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)},_set:function(e,t){return this.callSuper("_set",e,t),e==="radius"&&this.setRadius(t),this},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(){var e=this._createBaseSVGMarkup();return 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=this._createBaseSVGMarkup(),t=this.width/2,n=this.height/2,r=[-t+" "+n,"0 "+ -n,t+" "+n].join(",");return 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=this._createBaseSVGMarkup();return 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=this._createBaseSVGMarkup();return 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=this._createBaseSVGMarkup();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=this._createBaseSVGMarkup();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,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._element=this._originalElement,e&&e();return}var t=this._originalElement,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;return 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,fabric.isLikelyNode?(r.src=n.toBuffer(undefined,fabric.Image.pngCompression),i._element=r,e&&e()):(r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png")),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,t){e.filters&&e.filters.length?fabric.util.enlivenObjects(e.filters,function(e){t&&t(e)},"fabric.Image.filters"):t&&t()},_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;n.onload=function(){fabric.Image.prototype._initFilters.call(e,e,function(r){e.filters=r||[];var i=new fabric.Image(n,e);t&&t(i),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,fabric.Image.pngCompression=1}(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.BaseFilter=fabric.util.createClass({type:"BaseFilter",toObject:function(){return{type:this.type}},toJSON:function(){return this.toObject()}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend;t.Image.filters.Brightness=t.util.createClass(t.Image.filters.BaseFilter,{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&&C-1?e.channel:0},applyTo:function(e){if(!this.mask)return;var n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=r.data,s=this.mask.getElement(),o=t.util.createCanvasElement(),u=this.channel,a,f=r.width*r.height*4;o.width=s.width,o.height=s.height,o.getContext("2d").drawImage(s,0,0,s.width,s.height);var l=o.getContext("2d").getImageData(0,0,s.width,s.height),c=l.data;for(a=0;ao&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toObject:function(){return n(this.callSuper("toObject"),{color:this.color})}}),t.Image.filters.Tint.fromObject=function(e){return new t.Image.filters.Tint(e)}}(typeof exports!="undefined"?exports:this),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","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:"",textAlign:"left",fontStyle:"",lineHeight:1.3,backgroundColor:"",textBackgroundColor:"",path:null,useNative:!0,stateProperties:o,stroke:null,shadow:null,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._setShadow(e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this._removeShadow(e),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},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_drawChars:function(e,t,n,r,i){t[e](n,r,i)},_drawTextLine:function(e,t,n,r,i,s){if(this.textAlign!=="justify"){this._drawChars(e,t,n,r,i,s);return}var o=t.measureText(n).width,u=this.width;if(u>o){var a=n.split(/\s+/),f=t.measureText(n.replace(/\s+/g,"")).width,l=u-f,c=a.length-1,h=l/c,p=0;for(var d=0,v=a.length;d-1&&i(this.fontSize*this.lineHeight),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize*this.lineHeight-s),this.textDecoration.indexOf("overline")>-1&&i(s)},_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,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=1;if(!this.shadow||!this._boundaries)return r;for(s=0,o=n.length;s",t.util.string.escapeXml(n[s]),""),u=1}else u++;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},_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.shadow&&this.shadow.getShadow(),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,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,n){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t,n)}):request(e,"",function(e){fabric.loadSVGFromString(e,t,n)})},fabric.loadSVGFromString=function(e,t,n){var r=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(r.documentElement,function(e,n){t&&t(e,n)},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,function(e){r.filters=e||[],t&&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 +C>=0&&C-1?e.channel:0},applyTo:function(e){if(!this.mask)return;var n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=r.data,s=this.mask.getElement(),o=t.util.createCanvasElement(),u=this.channel,a,f=r.width*r.height*4;o.width=s.width,o.height=s.height,o.getContext("2d").drawImage(s,0,0,s.width,s.height);var l=o.getContext("2d").getImageData(0,0,s.width,s.height),c=l.data;for(a=0;ao&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toObject:function(){return n(this.callSuper("toObject"),{color:this.color})}}),t.Image.filters.Tint.fromObject=function(e){return new t.Image.filters.Tint(e)}}(typeof exports!="undefined"?exports:this),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","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:"",textAlign:"left",fontStyle:"",lineHeight:1.3,backgroundColor:"",textBackgroundColor:"",path:null,useNative:!0,stateProperties:o,stroke:null,shadow:null,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._setShadow(e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this._removeShadow(e),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},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_drawChars:function(e,t,n,r,i){t[e](n,r,i)},_drawTextLine:function(e,t,n,r,i,s){if(this.textAlign!=="justify"){this._drawChars(e,t,n,r,i,s);return}var o=t.measureText(n).width,u=this.width;if(u>o){var a=n.split(/\s+/),f=t.measureText(n.replace(/\s+/g,"")).width,l=u-f,c=a.length-1,h=l/c,p=0;for(var d=0,v=a.length;d-1&&i(this.fontSize*this.lineHeight),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize*this.lineHeight-s),this.textDecoration.indexOf("overline")>-1&&i(s)},_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,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=1;if(!this.shadow||!this._boundaries)return r;for(s=0,o=n.length;s",t.util.string.escapeXml(n[s]),""),u=1}else u++;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},_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.shadow&&this.shadow.toString(),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,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");n.readFile(e,function(e,n){if(e)throw fabric.log(e),e;t(n)})}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,n){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t,n)}):request(e,"",function(e){fabric.loadSVGFromString(e,t,n)})},fabric.loadSVGFromString=function(e,t,n){var r=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(r.documentElement,function(e,n){t&&t(e,n)},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,function(e){r.filters=e||[],t&&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 7edcf163796e4f46a8ab4520f177051112bd8709..2d1422c3ecff83db2e517a545a960ff8f278c4fd 100644 GIT binary patch delta 36885 zcmV(xKrCeQ_Ii0zv-PWNhvc7qB9%`*Mvt-CulBKmG(eDa8=@qg8L zH3_FJ%bITgteg1CliJfSl_46XP8CI5{|8TDnXvoSutd$*IcqK8A2!H^ALOe#6u(ec zTufaKSy1bjBP631d)&n$LugZSw-d&rHYt+S1ik^Z6Sge;i-KC?VIMY>2$kfvJYCUC ze=Q@RQE?61ejv^g*tQiNvc^Qn#(&jr<6>P1i)c~XYPzMp;{{}ZLBc;$ga5%oH2hZl zKnb2uIy~o^FUB>VE4d!O8pcmXCMB8bY^(&kMs7^!Reqt$l^!<4=hz;`x;22)9m4gt!gTdrQNEb1jp-Qp-!wpHo&h@Z4bYjo*M0S@!^) zZ5g1B#yEQd_=z7Fy~%lJWq*!XdX_a}WGZda(J6DtY|U(j?lA334l={)(sa<{0I&(C z1-&E~qaSZ=cMu4W3%=wLV=dK`L=4)hg>Pn)H-iaUx*ef*5?rA4vxK;I&cljOC1iP2 z7Tgy2El%n#5#xr+(ZSsveL%}dSvr_VeN%2S1tz8{;zXw%1v*VIs(;1>U*amI=aEV7 zXuD3~EPv0c&eB$tM@s^NsNuvn1Urck>+2MGa+EHXS1DTdh47Ck1AZms0`Bi`BH;qA z_U

s3x^_!W(S-gCam98T7Q$S%T<#jS- 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 delta 36960 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 ~frNhIjo|F+t^!2@vq(WVM4^^9 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 I32D;;01%38cK`qY diff --git a/dist/all.require.js b/dist/all.require.js index ddf70cba..cba13569 100644 --- a/dist/all.require.js +++ b/dist/all.require.js @@ -4990,6 +4990,7 @@ fabric.util.string = { /** * Point class * @class fabric.Point + * @memberOf fabric * @constructor * @param {Number} x * @param {Number} y @@ -5278,6 +5279,7 @@ fabric.util.string = { /** * Intersection class * @class fabric.Intersection + * @memberOf fabric * @constructor */ function Intersection(status) { @@ -6484,10 +6486,11 @@ fabric.Pattern = fabric.util.createClass(/** @lends fabric.Pattern.prototype */ }, /** - * @return {String} Returns CSS3 text-shadow declaration + * Returns a string representation of an instance * @see http://www.w3.org/TR/css-text-decor-3/#text-shadow + * @return {String} Returns CSS3 text-shadow declaration */ - getShadow: function() { + toString: function() { return [this.offsetX, this.offsetY, this.blur, this.color].join('px '); }, @@ -18003,7 +18006,7 @@ fabric.util.object.extend(fabric.Text.prototype, { fontFamily: this.fontFamily, fontWeight: this.fontWeight, textDecoration: this.textDecoration, - textShadow: this.shadow && this.shadow.getShadow(), + textShadow: this.shadow && this.shadow.toString(), textAlign: this.textAlign, fontStyle: this.fontStyle, lineHeight: this.lineHeight, @@ -18114,15 +18117,15 @@ fabric.util.object.extend(fabric.Text.prototype, { } /** @private */ - function request_fs(url, callback){ - var fs = require('fs'), - stream = fs.createReadStream(url), - body = ''; - stream.on('data', function(chunk){ - body += chunk; - }); - stream.on('end', function(){ - callback(body); + function request_fs(path, callback){ + var fs = require('fs'); + fs.readFile(path, function (err, data) { + if (err) { + fabric.log(err); + throw err; + } else { + callback(data); + } }); } diff --git a/src/intersection.class.js b/src/intersection.class.js index 3de8ef75..f76e5fb2 100644 --- a/src/intersection.class.js +++ b/src/intersection.class.js @@ -14,6 +14,7 @@ /** * Intersection class * @class fabric.Intersection + * @memberOf fabric * @constructor */ function Intersection(status) { diff --git a/src/point.class.js b/src/point.class.js index f2cdde56..7ae1f776 100644 --- a/src/point.class.js +++ b/src/point.class.js @@ -16,6 +16,7 @@ /** * Point class * @class fabric.Point + * @memberOf fabric * @constructor * @param {Number} x * @param {Number} y