From 01982a446c7c0de8e2cf79040e2852d6eec38aa0 Mon Sep 17 00:00:00 2001 From: kangax Date: Thu, 15 Nov 2012 12:49:10 +0100 Subject: [PATCH] Do not use `uniqueID` in IE as it's not always unique. Fix #311. --- dist/all.js | 9 ++------- dist/all.min.js | 10 +++++----- dist/all.min.js.gz | Bin 40361 -> 40343 bytes src/util/dom_event.js | 5 ----- 4 files changed, 7 insertions(+), 17 deletions(-) diff --git a/dist/all.js b/dist/all.js index 5984e046..a8d5796b 100644 --- a/dist/all.js +++ b/dist/all.js @@ -3,11 +3,11 @@ var fabric = fabric || { version: "0.9.21" }; -if (typeof exports != 'undefined') { +if (typeof exports !== 'undefined') { exports.fabric = fabric; } -if (typeof document != 'undefined' && typeof window != 'undefined') { +if (typeof document !== 'undefined' && typeof window !== 'undefined') { fabric.document = document; fabric.window = window; } @@ -2478,11 +2478,6 @@ fabric.util.string = { return true; } var getUniqueId = (function () { - if (typeof fabric.document.documentElement.uniqueID !== 'undefined') { - return function (element) { - return element.uniqueID; - }; - } var uid = 0; return function (element) { return element.__uniqueID || (element.__uniqueID = 'uniqueID__' + uid++); diff --git a/dist/all.min.js b/dist/all.min.js index 6c3d41ac..0568c648 100644 --- a/dist/all.min.js +++ b/dist/all.min.js @@ -1,5 +1,5 @@ -/* build: `node build.js modules=ALL` *//*! Fabric.js Copyright 2008-2012, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"0.9.21"};typeof exports!="undefined"&&(exports.fabric=fabric),typeof document!="undefined"&&typeof window!="undefined"?(fabric.document=document,fabric.window=window):(fabric.document=require("jsdom").jsdom(""),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined";var Cufon=function(){function r(e){var t=this.face=e.face;this.glyphs=e.glyphs,this.w=e.w,this.baseSize=parseInt(t["units-per-em"],10),this.family=t["font-family"].toLowerCase(),this.weight=t["font-weight"],this.style=t["font-style"]||"normal",this.viewBox=function(){var e=t.bbox.split(/\s+/),n={minX:parseInt(e[0],10),minY:parseInt(e[1],10),maxX:parseInt(e[2],10),maxY:parseInt(e[3],10)};return n.width=n.maxX-n.minX,n.height=n.maxY-n.minY,n.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")},n}(),this.ascent=-parseInt(t.ascent,10),this.descent=-parseInt(t.descent,10),this.height=-this.ascent+this.descent}function i(){var e={},t={oblique:"italic",italic:"oblique"};this.add=function(t){(e[t.style]||(e[t.style]={}))[t.weight]=t},this.get=function(n,r){var i=e[n]||e[t[n]]||e.normal||e.italic||e.oblique;if(!i)return null;r={normal:400,bold:700}[r]||parseInt(r,10);if(i[r])return i[r];var s={1:1,99:0}[r%100],o=[],u,a;s===undefined&&(s=r>400),r==500&&(r=400);for(var f in i){f=parseInt(f,10);if(!u||fa)a=f;o.push(f)}return ra&&(r=a),o.sort(function(e,t){return(s?e>r&&t>r?et:et:e=i.length+e?r():setTimeout(arguments.callee,10)}),function(t){e?t():n.push(t)}}(),supports:function(e,t){var n=fabric.document.createElement("span").style;return n[e]===undefined?!1:(n[e]=t,n[e]===t)},textAlign:function(e,t,n,r){return t.get("textAlign")=="right"?n>0&&(e=" "+e):nk&&(k=N),A.push(N),N=0;continue}var O=t.glyphs[T[b]]||t.missingGlyph;if(!O)continue;N+=C=Number(O.w||t.w)+h}A.push(N),N=Math.max(k,N);var M=[];for(var b=A.length;b--;)M[b]=N-A[b];if(C===null)return null;d+=l.width-C,m+=l.minX;var _,D;if(f)_=u,D=u.firstChild;else{_=fabric.document.createElement("span"),_.className="cufon cufon-canvas",_.alt=n,D=fabric.document.createElement("canvas"),_.appendChild(D);if(i.printable){var P=fabric.document.createElement("span");P.className="cufon-alt",P.appendChild(fabric.document.createTextNode(n)),_.appendChild(P)}}var H=_.style,B=D.style||{},j=c.convert(l.height-p+v),F=Math.ceil(j),I=F/j;D.width=Math.ceil(c.convert(N+d-m)*I),D.height=F,p+=l.minY,B.top=Math.round(c.convert(p-t.ascent))+"px",B.left=Math.round(c.convert(m))+"px";var q=Math.ceil(c.convert(N*I)),R=q+"px",U=c.convert(t.height),z=(i.lineHeight-1)*c.convert(-t.ascent/5)*(L-1);Cufon.textOptions.width=q,Cufon.textOptions.height=U*L+z,Cufon.textOptions.lines=L,Cufon.textOptions.totalLineHeight=z,e?(H.width=R,H.height=U+"px"):(H.paddingLeft=R,H.paddingBottom=U-1+"px");var W=Cufon.textOptions.context||D.getContext("2d"),X=F/l.height;Cufon.textOptions.fontAscent=t.ascent*X,Cufon.textOptions.boundaries=null;for(var V=Cufon.textOptions.shadowOffsets,b=y.length;b--;)V[b]=[y[b][0]*X,y[b][1]*X];W.save(),W.scale(X,X),W.translate(-m-1/X*D.width/2+(Cufon.fonts[t.family].offsetLeft||0),-p-Cufon.textOptions.height/X/2+(Cufon.fonts[t.family].offsetTop||0)),W.lineWidth=t.face["underline-thickness"],W.save();var J=Cufon.getTextDecoration(i),K=i.fontStyle==="italic";W.save(),Q();if(g)for(var b=0,w=g.length;b.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}'),function(e,t,i,s,o,u,a){var f=t===null;f&&(t=o.alt);var l=e.viewBox,c=i.computedFontSize||(i.computedFontSize=new Cufon.CSS.Size(n(u,i.get("fontSize"))+"px",e.baseSize)),h=i.computedLSpacing;h==undefined&&(h=i.get("letterSpacing"),i.computedLSpacing=h=h=="normal"?0:~~c.convertFrom(r(u,h)));var p,d;if(f)p=o,d=o.firstChild;else{p=fabric.document.createElement("span"),p.className="cufon cufon-vml",p.alt=t,d=fabric.document.createElement("span"),d.className="cufon-vml-canvas",p.appendChild(d);if(s.printable){var v=fabric.document.createElement("span");v.className="cufon-alt",v.appendChild(fabric.document.createTextNode(t)),p.appendChild(v)}a||p.appendChild(fabric.document.createElement("cvml:shape"))}var m=p.style,g=d.style,y=c.convert(l.height),b=Math.ceil(y),w=b/y,E=l.minX,S=l.minY;g.height=b,g.top=Math.round(c.convert(S-e.ascent)),g.left=Math.round(c.convert(E)),m.height=c.convert(e.height)+"px";var x=Cufon.getTextDecoration(s),T=i.get("color"),N=Cufon.CSS.textTransform(t,i).split(""),C=0,k=0,L=null,A,O,M=s.textShadow;for(var _=0,D=0,P=N.length;_r?n:i-t;s(u(l,f,c,n));if(i>r||o()){e.onComplete&&e.onComplete();return}a(h)}()}function f(e,t,n){if(e){var r=new Image;r.onload=function(){t&&t.call(n,r),r=r.onload=null},r.src=e}else t&&t.call(n,e)}function l(e,t){function n(e){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(e))]}function r(){++s===o&&t&&t(i)}var i=[],s=0,o=e.length;e.forEach(function(e,t){if(!e.type)return;var s=n(e.type);s.async?s.fromObject(e,function(e){i[t]=e,r()}):(i[t]=s.fromObject(e),r())})}function c(e,t,n){var r=e.length>1?new fabric.PathGroup(e,t):e[0];return typeof n!="undefined"&&r.setSourcePath(n),r}fabric.util={};var n=Math.PI/180,u=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)},a=function(){return u.apply(fabric.window,arguments)};fabric.util.removeFromArray=e,fabric.util.degreesToRadians=r,fabric.util.toFixed=i,fabric.util.getRandomInt=t,fabric.util.falseFunction=s,fabric.util.animate=o,fabric.util.requestAnimFrame=a,fabric.util.loadImage=f,fabric.util.enlivenObjects=l,fabric.util.groupSVGElements=c}(),function(){function t(t,n){var r=e.call(arguments,2),i=[];for(var s=0,o=t.length;s=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!==1/0&&r!==-1/0&&(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(){function o(){this.initialize.apply(this,arguments)}var n=null,s=e.call(arguments,0);typeof s[0]=="function"&&(n=s.shift()),o.superclass=n,o.subclasses=[],n&&(i.prototype=n.prototype,o.prototype=new i,n.subclasses.push(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=0,n=0;do t+=e.offsetTop||0,n+=e.offsetLeft||0,e=e.offsetParent;while(e);return{left:n,top:t}}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});var f;fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle?f=function(e){return fabric.document.defaultView.getComputedStyle(e).position}:f=function(e){var t=e.style.position;return!t&&e.currentStyle&&(t=e.currentStyle.position),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.type="text/javascript",r.setAttribute("runat","server"),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.getElementPosition=f}(),function(){function e(e,t){return e+(/\?/.test(e)?"&":"?")+t}function n(){}function r(r,i){i||(i={});var s=i.method?i.method.toUpperCase():"GET",o=i.onComplete||function(){},u=t(),a;return u.onreadystatechange=function(){u.readyState===4&&(o(u),u.onreadystatechange=n)},s==="GET"&&(a=null,typeof i.parameters=="string"&&(r=e(r,i.parameters))),u.open(s,r,!0),(s==="POST"||s==="PUT")&&u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),u.send(a),u}var t=function(){var e=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}];for(var t=e.length;t--;)try{var n=e[t]();if(n)return e[t]}catch(r){}}();fabric.util.request=r}(),function(){function e(e,t,n,r){return n*(e/=r)*e+t}function t(e,t,n,r){return-n*(e/=r)*(e-2)+t}function n(e,t,n,r){return e/=r/2,e<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e,t,n,r){return n*(e/=r)*e*e+t}function i(e,t,n,r){return n*((e=e/r-1)*e*e+1)+t}function s(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e+t:n/2*((e-=2)*e*e+2)+t}function o(e,t,n,r){return n*(e/=r)*e*e*e+t}function u(e,t,n,r){return-n*((e=e/r-1)*e*e*e-1)+t}function a(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e+t:-n/2*((e-=2)*e*e*e-2)+t}function f(e,t,n,r){return n*(e/=r)*e*e*e*e+t}function l(e,t,n,r){return n*((e=e/r-1)*e*e*e*e+1)+t}function c(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e*e+t:n/2*((e-=2)*e*e*e*e+2)+t}function h(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t}function p(e,t,n,r){return n*Math.sin(e/r*(Math.PI/2))+t}function d(e,t,n,r){return-n/2*(Math.cos(Math.PI*e/r)-1)+t}function v(e,t,n,r){return e===0?t:n*Math.pow(2,10*(e/r-1))+t}function m(e,t,n,r){return e===r?t+n:n*(-Math.pow(2,-10*e/r)+1)+t}function g(e,t,n,r){return e===0?t:e===r?t+n:(e/=r/2,e<1?n/2*Math.pow(2,10*(e-1))+t:n/2*(-Math.pow(2,-10*--e)+2)+t)}function y(e,t,n,r){return-n*(Math.sqrt(1-(e/=r)*e)-1)+t}function b(e,t,n,r){return n*Math.sqrt(1-(e=e/r-1)*e)+t}function w(e,t,n,r){return e/=r/2,e<1?-n/2*(Math.sqrt(1-e*e)-1)+t:n/2*(Math.sqrt(1-(e-=2)*e)+1)+t}function E(e,t,n,r){var i=1.70158,s=0,o=n;return e===0?t:(e/=r,e===1?t+n:(s||(s=r*.3),o-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){d.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),d.has(e,function(r){r?d.get(e,function(e){var t=m(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function m(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 g(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 y(e){var t="";for(var n=0,r=e.length;n",'",""].join("")),t}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s={cx:"left",x:"left",cy:"top",y:"top",r:"radius","fill-opacity":"opacity","fill-rule":"fillRule","stroke-width":"strokeWidth",transform:"transformMatrix","text-decoration":"textDecoration","font-size":"fontSize","font-weight":"fontWeight","font-style":"fontStyle","font-family":"fontFamily"};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 t(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function n(e,t){e[2]=t[0]}function r(e,t){e[1]=t[0]}function i(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var s=[1,0,0,1,0,0],o="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",u="(?:\\s+,?\\s*|,\\s*)",a="(?:(skewX)\\s*\\(\\s*("+o+")\\s*\\))",f="(?:(skewY)\\s*\\(\\s*("+o+")\\s*\\))",l="(?:(rotate)\\s*\\(\\s*("+o+")(?:"+u+"("+o+")"+u+"("+o+"))?\\s*\\))",c="(?:(scale)\\s*\\(\\s*("+o+")(?:"+u+"("+o+"))?\\s*\\))",h="(?:(translate)\\s*\\(\\s*("+o+")(?:"+u+"("+o+"))?\\s*\\))",p="(?:(matrix)\\s*\\(\\s*("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+"\\s*\\))",d="(?:"+p+"|"+h+"|"+c+"|"+l+"|"+a+"|"+f+")",v="(?:"+d+"(?:"+u+d+")*"+")",m="^\\s*(?:"+v+"?)\\s*$",g=new RegExp(m),y=new RegExp(d);return function(o){var u=s.concat();return!o||o&&!g.test(o)?u:(o.replace(y,function(s){var o=(new RegExp(d)).exec(s).filter(function(e){return e!==""&&e!=null}),a=o[1],f=o.slice(2).map(parseFloat);switch(a){case"translate":i(u,f);break;case"rotate":e(u,f);break;case"scale":t(u,f);break;case"skewX":n(u,f);break;case"skewY":r(u,f);break;case"matrix":u=f}}),u)}}(),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,p=f.length;c0&&this.init(e,t)}var t=e.fabric||(e.fabric={});if(t.Point){t.warn("fabric.Point is already defined");return}t.Point=n,n.prototype={constructor:n,init:function(e,t){this.x=e,this.y=t},add:function(e){return new n(this.x+e.x,this.y+e.y)},addEquals:function(e){return this.x+=e.x,this.y+=e.y,this},scalarAdd:function(e){return new n(this.x+e,this.y+e)},scalarAddEquals:function(e){return this.x+=e,this.y+=e,this},subtract:function(e){return new n(this.x-e.x,this.y-e.y)},subtractEquals:function(e){return this.x-=e.x,this.y-=e.y,this},scalarSubtract:function(e){return new n(this.x-e,this.y-e)},scalarSubtractEquals:function(e){return this.x-=e,this.y-=e,this},multiply:function(e){return new n(this.x*e,this.y*e)},multiplyEquals:function(e){return this.x*=e,this.y*=e,this},divide:function(e){return new n(this.x/e,this.y/e)},divideEquals:function(e){return this.x/=e,this.y/=e,this},eq:function(e){return this.x===e.x&&this.y===e.y},lt:function(e){return this.xe.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)},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){arguments.length>0&&this.init(e)}var t=e.fabric||(e.fabric={});if(t.Intersection){t.warn("fabric.Intersection is already defined");return}t.Intersection=n,t.Intersection.prototype={init:function(e){this.status=e,this.points=[]},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("No Intersection")}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("No Intersection"),s=r.length;for(var o=0;o0&&(i.status="Intersection"),i},t.Intersection.intersectPolygonPolygon=function(e,t){var r=new n("No Intersection"),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("No Intersection");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])}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=n.sourceFromHex(e);t||(t=n.sourceFromRgb(e)),t&&this.setSource(t)},getSource:function(){return this._source},setSource:function(e){this._source=e},toRgb:function(){var e=this.getSource();return"rgb("+e[0]+","+e[1]+","+e[2]+")"},toRgba:function(){var e=this.getSource();return"rgba("+e[0]+","+e[1]+","+e[2]+","+e[3]+")"},toHex:function(){var e=this.getSource(),t=e[0].toString(16);t=t.length===1?"0"+t:t;var n=e[1].toString(16);n=n.length===1?"0"+n:n;var r=e[2].toString(16);return r=r.length===1?"0"+r:r,t.toUpperCase()+n.toUpperCase()+r.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var t=this.getSource();return t[3]=e,this.setSource(t),this},toGrayscale:function(){var e=this.getSource(),t=parseInt((e[0]*.3+e[1]*.59+e[2]*.11).toFixed(0),10),n=e[3];return this.setSource([t,t,t,n]),this},toBlackWhite:function(e){var t=this.getSource(),n=(t[0]*.3+t[1]*.59+t[2]*.11).toFixed(0),r=t[3];return e=e||127,n=Number(n)','',"',"Created with Fabric.js ",fabric.version,"",fabric.createSVGFontFacesMarkup(this.getObjects())];this.backgroundImage&&e.push(''),this.overlayImage&&e.push('');for(var t=0,n=this.getObjects(),r=n.length;t"),e.join("")},isEmpty:function(){return this._objects.length===0},remove:function(e){return n(this._objects,e),this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared")),this.renderAll(),e},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll()},sendBackwards:function(e){var t=this._objects.indexOf(e),r=t;if(t!==0){for(var i=t-1;i>=0;--i){var s=e.intersectsWithObject(this._objects[i])||e.isContainedWithinObject(this._objects[i])||this._objects[i].isContainedWithinObject(e);if(s){r=i;break}}n(this._objects,e),this._objects.splice(r,0,e)}return this.renderAll()},bringForward:function(e){var t=this.getObjects(),r=t.indexOf(e),i=r;if(r!==t.length-1){for(var s=r+1,o=this._objects.length;s"},e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;a0&&(t>this.targetFindTolerance?t-=this.targetFindTolerance:t=0,n>this.targetFindTolerance?n-=this.targetFindTolerance:n=0);var o=!0,u=r.getImageData(t,n,this.targetFindTolerance*2||1,this.targetFindTolerance*2||1);for(var a=3;a0?0:-t),e.ey-(n>0?0:-n),r,i),this.contextTop.lineWidth=this.selectionLineWidth,this.contextTop.strokeStyle=this.selectionBorderColor,this.contextTop.strokeRect(e.ex+p-(t>0?0:r),e.ey+p-(n>0?0:i),r,i)},_findSelectedObjects:function(e){var t=[],n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,s=r+this._groupSelector.top,o,u=new fabric.Point(c(n,i),c(r,s)),a=new fabric.Point(h(n,i),h(r,s));for(var f=0,l=this._objects.length;f1&&(t=new fabric.Group(t),this.setActiveGroup(t),t.saveCoords(),this.fire("selection:created",{target:t})),this.renderAll()},findTarget:function(e,t){var n,r=this.getPointer(e);if(this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay))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.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;u1?t.apply(this,u.call(arguments,1)):t.call(this)},initialize:function(e){e&&this.setOptions(e)},_initGradient:function(e){e.fill&&typeof e.fill=="object"&&!(e.fill instanceof t.Gradient)&&this.set("fill",new t.Gradient(e.fill))},setOptions:function(e){var t=this.stateProperties.length,n;while(t--)n=this.stateProperties[t],n in e&&this.set(n,e[n]);this._initGradient(e)},transform:function(e){e.globalAlpha=this.opacity,e.translate(this.left,this.top),e.rotate(this._theta),e.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(){var e=t.Object.NUM_FRACTION_DIGITS,n={type:this.type,left:r(this.left,e),top:r(this.top,e),width:r(this.width,e),height:r(this.height,e),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,overlayFill:this.overlayFill,stroke:this.stroke,strokeWidth:this.strokeWidth,strokeDashArray:this.strokeDashArray,scaleX:r(this.scaleX,e),scaleY:r(this.scaleY,e),angle:r(this.getAngle(),e),flipX:this.flipX,flipY:this.flipY,opacity:r(this.opacity,e),selectable:this.selectable,hasControls:this.hasControls,hasBorders:this.hasBorders,hasRotatingPoint:this.hasRotatingPoint,transparentCorners:this.transparentCorners,perPixelTargetFind:this.perPixelTargetFind};return this.includeDefaultValues||(n=this._removeDefaultValues(n)),n},toDatalessObject:function(){return this.toObject()},getSvgStyles:function(){return["stroke: ",this.stroke?this.stroke:"none","; ","stroke-width: ",this.strokeWidth?this.strokeWidth:"0","; ","stroke-dasharray: ",this.strokeDashArray?this.strokeDashArray.join(" "):"; ","fill: ",this.fill?this.fill:"none","; ","opacity: ",this.opacity?this.opacity:"1",";"].join("")},getSvgTransform:function(){var e=this.getAngle(),n=t.Object.NUM_FRACTION_DIGITS,i="translate("+r(this.left,n)+" "+r(this.top,n)+")",s=e!==0?" rotate("+r(e,n)+")":"",o=this.scaleX===1&&this.scaleY===1?"":" scale("+r(this.scaleX,n)+" "+r(this.scaleY,n)+")",u=this.flipX?"matrix(-1 0 0 1 0 0) ":"",a=this.flipY?"matrix(1 0 0 -1 0 0)":"";return[i,s,o,u,a].join("")},_removeDefaultValues:function(e){var n=t.Object.prototype.options;return n&&this.stateProperties.forEach(function(t){e[t]===n[t]&&delete e[t]}),e},isActive:function(){return!!this.active},setActive:function(e){return this.active=!!e,this},toString:function(){return"#"},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"?this._set(e,t(this.get(e))):this._set(e,t);return this},_set:function(e,n){var r=(e==="scaleX"||e==="scaleY")&&n1?this.strokeWidth:0,t=this.padding;this.currentWidth=(this.width+e)*this.scaleX+t*2,this.currentHeight=(this.height+e)*this.scaleY+t*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth)),this._hypotenuse=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),this._angle=Math.atan(this.currentHeight/this.currentWidth);var n=Math.cos(this._angle+this._theta)*this._hypotenuse,r=Math.sin(this._angle+this._theta)*this._hypotenuse,i=this._theta,s=Math.sin(i),o=Math.cos(i),u={x:this.left-n,y:this.top-r},a={x:u.x+this.currentWidth*o,y:u.y+this.currentWidth*s},f={x:a.x-this.currentHeight*s,y:a.y+this.currentHeight*o},l={x:u.x-this.currentHeight*s,y:u.y+this.currentHeight*o},c={x:u.x-this.currentHeight/2*s,y:u.y+this.currentHeight/2*o},h={x:u.x+this.currentWidth/2*o,y:u.y+this.currentWidth/2*s},p={x:a.x-this.currentHeight/2*s,y:a.y+this.currentHeight/2*o},d={x:l.x+this.currentWidth/2*o,y:l.y+this.currentWidth/2*s},v={x:u.x+this.currentWidth/2*o,y:u.y+this.currentWidth/2*s};return this.oCoords={tl:u,tr:a,br:f,bl:l,ml:c,mt:h,mr:p,mb:d,mtr:v},this._setCornerCoords(),this},getBoundingRectWidth:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],n=t.util.array.min(e),r=t.util.array.max(e);return Math.abs(n-r)},getBoundingRectHeight:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],n=t.util.array.min(e),r=t.util.array.max(e);return Math.abs(n-r)},drawBorders:function(e){if(!this.hasBorders)return;var n=t.Object.MIN_SCALE_LIMIT,r=this.padding,i=r*2,s=this.strokeWidth>1?this.strokeWidth:0;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var o=1/(this.scaleXc&&(l=f-c),u?n+=h*u-(l*u||0):r+=h*a-(l*a||0),e[1&t?"moveTo":"lineTo"](n,r),t>=o&&(t=0)}}1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray);var t=0,n=-this.width/2,r=-this.height/2,i=this,s=this.padding,o=this.strokeDashArray.length;e.save(),e.beginPath(),u(1,0),u(0,1),u(-1,0),u(0,-1),e.stroke(),e.closePath(),e.restore()},drawCorners:function(e){if(!this.hasControls)return;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";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,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m+v+r+c,e.clearRect(o,u,a,f),e[y](o,u,a,f),this.lockUniScaling||(o=i+g/2-p,u=s-h-r-c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,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,e.clearRect(o,u,a,f),e[y](o,u,a,f)),e.restore(),this},clone:function(e){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(),e):new t.Object(this.toObject())},cloneAsImage:function(e){if(t.Image){var n=new Image;n.onload=function(){e&&e(new t.Image(n),r),n=n.onload=null};var r={angle:this.get("angle"),flipX:this.get("flipX"),flipY:this.get("flipY")};this.set("angle",0).set("flipX",!1).set("flipY",!1),this.toDataURL(function(e){n.src=e})}return this},toDataURL:function(e){function i(t){t.left=n.width/2,t.top=n.height/2,t.setActive(!1),r.add(t);var i=r.toDataURL("png");r.dispose(),r=t=null,e&&e(i)}var n=t.document.createElement("canvas");!n.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(n),n.width=this.getBoundingRectWidth(),n.height=this.getBoundingRectHeight(),t.util.wrapElement(n,"div");var r=new t.Canvas(n);r.backgroundColor="transparent",r.renderAll(),this.constructor.async?this.clone(i):i(this.clone())},hasStateChanged:function(){return this.stateProperties.some(function(e){return this[e]!==this.originalState[e]},this)},saveState:function(){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){this.originalState={},this.saveState()},intersectsWithRect:function(e,n){var r=this.oCoords,i=new t.Point(r.tl.x,r.tl.y),s=new t.Point(r.tr.x,r.tr.y),o=new t.Point(r.bl.x,r.bl.y),u=new t.Point(r.br.x,r.br.y),a=t.Intersection.intersectPolygonRectangle([i,s,u,o],e,n);return a.status==="Intersection"},intersectsWithObject:function(e){function n(e){return{tl:new t.Point(e.tl.x,e.tl.y),tr:new t.Point(e.tr.x,e.tr.y),bl:new t.Point(e.bl.x,e.bl.y),br:new t.Point(e.br.x,e.br.y)}}var r=n(this.oCoords),i=n(e.oCoords),s=t.Intersection.intersectPolygonPolygon([r.tl,r.tr,r.br,r.bl],[i.tl,i.tr,i.br,i.bl]);return s.status==="Intersection"},isContainedWithinObject:function(e){return this.isContainedWithinRect(e.oCoords.tl,e.oCoords.br)},isContainedWithinRect:function(e,n){var r=this.oCoords,i=new t.Point(r.tl.x,r.tl.y),s=new t.Point(r.tr.x,r.tr.y),o=new t.Point(r.bl.x,r.bl.y);return i.x>e.x&&s.xe.y&&o.y=t&&l.d.y>=t)continue;l.o.x===l.d.x&&l.o.x>=e?(u=l.o.x,a=t):(r=0,i=(l.d.y-l.o.y)/(l.d.x-l.o.x),s=t-r*e,o=l.o.y-i*l.o.x,u=-(s-o)/(r-i),a=s+r*u),u>=e&&(f+=1);if(f===2)break}return f},_getImageLines:function(e){return{topline:{o:e.tl,d:e.tr},rightline:{o:e.tr,d:e.br},bottomline:{o:e.br,d:e.bl},leftline:{o:e.bl,d:e.tl}}},_setCornerCoords:function(){var e=this.oCoords,t=o(45-this.getAngle()),n=Math.sqrt(2*Math.pow(this.cornersize,2))/2,r=n*Math.cos(t),i=n*Math.sin(t),s=Math.sin(this._theta),u=Math.cos(this._theta);e.tl.corner={tl:{x:e.tl.x-i,y:e.tl.y-r},tr:{x:e.tl.x+r,y:e.tl.y-i},bl:{x:e.tl.x-r,y:e.tl.y+i},br:{x:e.tl.x+i,y:e.tl.y+r}},e.tr.corner={tl:{x:e.tr.x-i,y:e.tr.y-r},tr:{x:e.tr.x+r,y:e.tr.y-i},br:{x:e.tr.x+i,y:e.tr.y+r},bl:{x:e.tr.x-r,y:e.tr.y+i}},e.bl.corner={tl:{x:e.bl.x-i,y:e.bl.y-r},bl:{x:e.bl.x-r,y:e.bl.y+i},br:{x:e.bl.x+i,y:e.bl.y+r},tr:{x:e.bl.x+r,y:e.bl.y-i}},e.br.corner={tr:{x:e.br.x+r,y:e.br.y-i},bl:{x:e.br.x-r,y:e.br.y+i},br:{x:e.br.x+i,y:e.br.y+r},tl:{x:e.br.x-i,y:e.br.y-r}},e.ml.corner={tl:{x:e.ml.x-i,y:e.ml.y-r},tr:{x:e.ml.x+r,y:e.ml.y-i},bl:{x:e.ml.x-r,y:e.ml.y+i},br:{x:e.ml.x+i,y:e.ml.y+r}},e.mt.corner={tl:{x:e.mt.x-i,y:e.mt.y-r},tr:{x:e.mt.x+r,y:e.mt.y-i},bl:{x:e.mt.x-r,y:e.mt.y+i},br:{x:e.mt.x+i,y:e.mt.y+r}},e.mr.corner={tl:{x:e.mr.x-i,y:e.mr.y-r},tr:{x:e.mr.x+r,y:e.mr.y-i},bl:{x:e.mr.x-r,y:e.mr.y+i},br:{x:e.mr.x+i,y:e.mr.y+r}},e.mb.corner={tl:{x:e.mb.x-i,y:e.mb.y-r},tr:{x:e.mb.x+r,y:e.mb.y-i},bl:{x:e.mb.x-r,y:e.mb.y+i},br:{x:e.mb.x+i,y:e.mb.y+r}},e.mtr.corner={tl:{x:e.mtr.x-i+s*this.rotatingPointOffset,y:e.mtr.y-r-u*this.rotatingPointOffset},tr:{x:e.mtr.x+r+s*this.rotatingPointOffset,y:e.mtr.y-i-u*this.rotatingPointOffset},bl:{x:e.mtr.x-r+s*this.rotatingPointOffset,y:e.mtr.y+i-u*this.rotatingPointOffset},br:{x:e.mtr.x+i+s*this.rotatingPointOffset,y:e.mtr.y+r-u*this.rotatingPointOffset}}},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(){return this.toObject()},setGradientFill:function(e){this.set("fill",t.Gradient.forObject(this,e))},animate:function(){if(arguments[0]&&typeof arguments[0]=="object")for(var e in arguments[0])this._animate(e,arguments[0][e],arguments[1]);else this._animate.apply(this,arguments);return this},_animate:function(e,n,r){var i=this;r||(r={}),"from"in r||(r.from=this.get(e)),/[+\-]/.test((n+"").charAt(0))&&(n=this.get(e)+parseFloat(n)),t.util.animate({startValue:r.from,endValue:n,byValue:r.by,easing:r.easing,duration:r.duration,onChange:function(t){i.set(e,t),r.onChange&&r.onChange()},onComplete:function(){i.setCoords(),r.onComplete&&r.onComplete()}})},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.canvas.sendToBack(this),this},bringToFront:function(){return this.canvas.bringToFront(this),this},sendBackwards:function(){return this.canvas.sendBackwards(this),this},bringForward:function(){return this.canvas.bringForward(this),this}}),t.Object.prototype.rotate=t.Object.prototype.setAngle;var a=t.Object.prototype;for(var f=a.stateProperties.length;f--;){var l=a.stateProperties[f],c=l.charAt(0).toUpperCase()+l.slice(1),h="set"+c,p="get"+c;a[p]||(a[p]=function(e){return new Function('return this.get("'+e+'")')}(l)),a[h]||(a[h]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(l))}n(t.Object.prototype,t.Observable),n(t.Object,{NUM_FRACTION_DIGITS:2,MIN_SCALE_LIMIT:.1})}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r={x1:1,x2:1,y1:1,y2:1};if(t.Line){t.warn("fabric.Line is already defined");return}t.Line=t.util.createClass(t.Object,{type:"line",initialize:function(e,t){t=t||{},e||(e=[0,0,0,0]),this.callSuper("initialize",t),this.set("x1",e[0]),this.set("y1",e[1]),this.set("x2",e[2]),this.set("y2",e[3]),this._setWidthHeight(t)},_setWidthHeight:function(e){e||(e={}),this.set("width",this.x2-this.x1||1),this.set("height" -,this.y2-this.y1||1),this.set("left","left"in e?e.left:this.x1+this.width/2),this.set("top","top"in e?e.top:this.y1+this.height/2)},_set:function(e,t){return this[e]=t,e in r&&this._setWidthHeight(),this},_render:function(e){e.beginPath(),this.group&&e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top),e.moveTo(this.width===1?0:-this.width/2,this.height===1?0:-this.height/2),e.lineTo(this.width===1?0:this.width/2,this.height===1?0:this.height/2),e.lineWidth=this.strokeWidth;var t=e.strokeStyle;e.strokeStyle=e.fillStyle,e.stroke(),e.strokeStyle=t},complexity:function(){return 1},toObject:function(){return n(this.callSuper("toObject"),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){return[""].join("")}}),t.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" "),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e);var t=this.get("radius")*2;this.set("width",t).set("height",t)},toObject:function(){return r(this.callSuper("toObject"),{radius:this.get("radius")})},toSVG:function(){return'"},_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.fill&&e.fill(),this.stroke&&e.stroke()},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="cx cy r fill fill-opacity opacity stroke stroke-width transform".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");return"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0),new t.Circle(r(s,n))},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.fill&&e.fill(),this.stroke&&e.stroke()},complexity:function(){return 1},toSVG:function(){var e=this.width/2,t=this.height/2,n=[-e+" "+t,"0 "+ -t,e+" "+t].join(",");return'"}}),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",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(){return r(this.callSuper("toObject"),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){return[""].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.stroke&&e.stroke(),this.fill&&e.fill(),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".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 n(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={});if(t.Rect){console.warn("fabric.Rect is already defined");return}t.Rect=t.util.createClass(t.Object,{type:"rect",rx:0,ry:0,initialize:function(e){e=e||{},this._initStateProperties(),this.callSuper("initialize",e),this._initRxRy()},_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;e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&this.group&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y),e.moveTo(r+t,i),e.lineTo(r+s-t,i),e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this.fill&&e.fill(),this.strokeDashArray?this._renderDashedStroke(e):this.stroke&&e.stroke()},_normalizeLeftTopProperties:function(e){return e.left&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),e.top&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},complexity:function(){return 1},toObject:function(){return t.util.object.extend(this.callSuper("toObject"),{rx:this.get("rx")||0,ry:this.get("ry")||0})},toSVG:function(){return'"}}),t.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Rect.fromElement=function(e,r){if(!e)return null;var i=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);i=n(i);var s=new t.Rect(t.util.object.extend(r?t.util.object.clone(r):{},i));return s._normalizeLeftTopProperties(i),s},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;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions()},_calcDimensions:function(){return t.Polygon.prototype._calcDimensions.call(this)},toObject:function(){return t.Polygon.prototype.toObject.call(this)},toSVG:function(){var e=[];for(var t=0,r=this.points.length;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"].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;n1&&(g=Math.sqrt(g),n*=g,i*=g);var y=d/n,b=p/n,w=-p/i,E=d/i,S=y*l+b*c,x=w*l+E*c,T=y*e+b*t,N=w*e+E*t,C=(T-S)*(T-S)+(N-x)*(N-x),k=1/C-.25;k<0&&(k=0);var L=Math.sqrt(k);a===u&&(L=-L);var A=.5*(S+T)-L*(N-x),O=.5*(x+N)+L*(T-S),M=Math.atan2(x-O,S-A),_=Math.atan2(N-O,T-A),D=_-M;D<0&&a===1?D+=2*Math.PI:D>0&&a===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B"},toObject:function(){var e=h(this.callSuper("toObject"),{path:this.path});return this.sourcePath&&(e.sourcePath=this.sourcePath),this.transformMatrix&&(e.transformMatrix=this.transformMatrix),e},toDatalessObject:function(){var e=this.toObject();return this.sourcePath&&(e.path=this.sourcePath),delete e.sourcePath,e},toSVG:function(){var e=[];for(var t=0,n=this.path.length;t',"',""].join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n,r,i;for(var s=0,o,u=this.path.length;sc)for(var h=1,p=o.length;h"];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){var n=u(e.paths);return new t.PathGroup(n,e)}}(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,o=t.util.removeFromArray;if(t.Group)return;t.Group=t.util.createClass(t.Object,{type:"group",initialize:function(e,t){t=t||{},this.objects=e||[],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.hideCorners=!0},this)},toString:function(){return"#"},getObjects:function(){return this.objects},addWithUpdate:function(e){return this._restoreObjectsState(),this.objects.push(e),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),o(this.objects,e),e.setActive(!1),this._calcBounds(),this._updateObjectsCoords(),this},add:function(e){return this.objects.push(e),this},remove:function(e){return o(this.objects,e),this},size:function(){return this.getObjects().length},_set:function(e,t){if(e==="fill"||e==="opacity"){var n=this.objects.length;this[e]=t;while(n--)this.objects[n].set(e,t)}else this[e]=t},contains:function(e){return this.objects.indexOf(e)>-1},toObject:function(){return n(this.callSuper("toObject"),{objects:s(this.objects,"toObject")})},render:function(e,t){e.save(),this.transform(e);var n=Math.max(this.scaleX,this.scaleY);for(var r=this.objects.length;r>0;r--){var i=this.objects[r-1],s=i.borderScaleFactor,o=i.hasRotatingPoint;i.borderScaleFactor=n,i.hasRotatingPoint=!1,i.render(e),i.borderScaleFactor=s,i.hasRotatingPoint=o}!t&&this.active&&(this.drawBorders(e),this.hideCorners||this.drawCorners(e)),e.restore(),this.setCoords()},item:function(e){return this.getObjects()[e]},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=typeof t.complexity=="function"?t.complexity():0,e},0)},_restoreObjectsState:function(){return this.objects.forEach(this._restoreObjectState,this),this},_restoreObjectState:function(e){var t=this.get("left"),n=this.get("top"),r=this.getAngle()*(Math.PI/180),i=Math.cos(r)*e.get("top")+Math.sin(r)*e.get("left"),s=-Math.sin(r)*e.get("top")+Math.cos(r)*e.get("left");return e.setAngle(e.getAngle()+this.getAngle()),e.set("left",t+s*this.get("scaleX")),e.set("top",n+i*this.get("scaleY")),e.set("scaleX",e.get("scaleX")*this.get("scaleX")),e.set("scaleY",e.get("scaleY")*this.get("scaleY")),e.setCoords(),e.hideCorners=!1,e.setActive(!1),e.setCoords(),this},destroy:function(){return this._restoreObjectsState()},saveCoords:function(){return this._originalLeft=this.get("left"),this._originalTop=this.get("top"),this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){return this.forEachObject(function(e){e.setCoords()}),this},activateAllObjects:function(){return this.forEachObject(function(e){e.setActive()}),this},forEachObject:t.StaticCanvas.prototype.forEachObject,_setOpacityIfSame:function(){var e=this.getObjects(),t=e[0]?e[0].get("opacity"):1,n=e.every(function(e){return e.get("opacity")===t});n&&(this.opacity=t)},_calcBounds:function(){var e=[],t=[],n,s,o,u,a,f,l,c=0,h=this.objects.length;for(;ce.x&&i-ne.y},toGrayscale:function(){var e=this.objects.length;while(e--)this.objects[e].toGrayscale()},toSVG:function(){var e=[];for(var t=0,n=this.objects.length;t'+e.join("")+""}}),t.Group.fromObject=function(e,n){t.util.enlivenObjects(e.objects,function(r){delete e.objects,n&&n(new t.Group(r,e))})},t.Group.async=!0}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=fabric.util.object.extend;e.fabric||(e.fabric={});if(e.fabric.Image){fabric.warn("fabric.Image is already defined.");return}fabric.Image=fabric.util.createClass(fabric.Object,{active:!1,type:"image",initialize:function(e,t){t||(t={}),this.callSuper("initialize",t),this._initElement(e),this._originalImage=this.getElement(),this._initConfig(t),this.filters=[],t.filters&&(this.filters=t.filters,this.applyFilters())},getElement:function(){return this._element},setElement:function(e){return this._element=e,this._initConfig(),this},getOriginalSize:function(){var e=this.getElement();return{width:e.width,height:e.height}},render:function(e,t){e.save();var n=this.transformMatrix;this._resetWidthHeight(),this.group&&e.translate(-this.group.width/2+this.width/2,-this.group.height/2+this.height/2),n&&e.transform(n[0],n[1],n[2],n[3],n[4],n[5]),t||this.transform(e),this._render(e),this.active&&!t&&(this.drawBorders(e),this.hideCorners||this.drawCorners(e)),e.restore()},toObject:function(){return t(this.callSuper("toObject"),{src:this._originalImage.src||this._originalImage._src,filters:this.filters.concat()})},toSVG:function(){return''+'"+""},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e){this.constructor.fromObject(this.toObject(),e)},applyFilters:function(e){if(this.filters.length===0){this.setElement(this._originalImage),e&&e();return}var t=typeof Buffer!="undefined"&&typeof window=="undefined",n=this._originalImage,r=fabric.document.createElement("canvas"),i=t?new(require("canvas").Image):fabric.document.createElement("img"),s=this;!r.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(r),r.width=n.width,r.height=n.height,r.getContext("2d").drawImage(n,0,0,n.width,n.height),this.filters.forEach(function(e){e&&e.applyTo(r)}),i.onload=function(){s._element=i,e&&e(),i.onload=r=n=null},i.width=n.width,i.height=n.height;if(t){var o=r.toDataURL("image/png").replace(/data:image\/png;base64,/,"");i.src=new Buffer(o,"base64"),s._element=i,e&&e()}else i.src=r.toDataURL("image/png");return this},_render:function(e){e.drawImage(this.getElement(),-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e){e.filters&&e.filters.length&&(this.filters=e.filters.map(function(e){return e&&fabric.Image.filters[e.type].fromObject(e)}))},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){var n=fabric.document.createElement("img"),r=e.src;e.width&&(n.width=e.width),e.height&&(n.height=e.height),n.onload=function(){fabric.Image.prototype._initFilters.call(e,e);var r=new fabric.Image(n,e);t&&t(r),n=n.onload=null},n.src=r},fabric.Image.fromURL=function(e,t,n){var r=fabric.document.createElement("img");r.onload=function(){t&&t(new fabric.Image(r,n)),r=r.onload=null},r.src=e},fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" "),fabric.Image.fromElement=function(e,n,r){r||(r={});var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(i,r))},fabric.Image.async=!0}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.get("angle");return e>-225&&e<=-135?-180:e>-135&&e<=-45?-90:e>-45&&e<=45?0:e>45&&e<=135?90:e>135&&e<=225?180:e>225&&e<=315?270:e>315?360:0},straighten:function(){var e=this._getAngleValueForStraighten();return this.setAngle(e),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.setActive(!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.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo: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;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)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},fabric.Image.filters.Convolute=fabric.util.createClass({type:"Convolute",initialize:function(e){e||(e={}),this.opaque=e.opaque,this.matrix=e.matrix||[0,0,0,0,1,0,0,0,0],this.tmpCtx=fabric.document.createElement("canvas").getContext("2d")},_createImageData:function(e,t){return this.tmpCtx.createImageData(e,t)},applyTo:function(e){var t=this.matrix,n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=Math.round(Math.sqrt(t.length)),s=Math.floor(i/2),o=r.data,u=r.width,a=r.height,f=u,l=a,c=this._createImageData(f,l),h=c.data,p=this.opaque?1:0;for(var d=0;d=0&&N=0&&C'},_render:function(e){typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_renderViaNative:function(e){this.transform(e),this._setTextStyles(e);var t=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,t),this.height=this._getTextHeight(e,t),this._renderTextBackground(e,t),this.textAlign!=="left"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),this._setTextShadow(e),this._renderTextFill(e,t),this.textShadow&&e.restore(),this._renderTextStroke(e,t),this.textAlign!=="left"&&e.restore(),this._renderTextDecoration(e,t),this._setBoundaries(e,t),this._totalLineHeight=0,this.setCoords()},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_setTextShadow:function(e){if(this.textShadow){var t=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/,n=this.textShadow,r=t.exec(this.textShadow),i=n.replace(t,"");e.save(),e.shadowColor=i,e.shadowOffsetX=parseInt(r[1],10),e.shadowOffsetY=parseInt(r[2],10),e.shadowBlur=parseInt(r[3],10),this._shadows=[{blur:e.shadowBlur,color:e.shadowColor,offX:e.shadowOffsetX,offY:e.shadowOffsetY}],this._shadowOffsets=[[parseInt(e.shadowOffsetX,10),parseInt(e.shadowOffsetY,10)]]}},_renderTextFill:function(e,t){this._boundaries=[];for(var n=0,r=t.length;n-1&&i(this.fontSize),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(0)},_getFontDeclaration:function(){return[this.fontStyle,this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},_initDummyElementForCufon:function(){var e=t.document.createElement("pre"),n=t.document.createElement("div");return n.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},render:function(e,t){e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.hideCorners||this.drawCorners(e)),e.restore()},toObject:function(){return n(this.callSuper("toObject"),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.backgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e?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},setFontsize:function(e){return this.set("fontSize",e),this._initDimensions(),this.setCoords(),this},getText:function(){return this.text},setText:function(e){return this.set("text",e),this._initDimensions(),this.setCoords(),this},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t)}}),t.Text.ATTRIBUTE_NAMES="x y fill fill-opacity opacity stroke stroke-width transform font-family font-style font-weight font-size text-decoration".split(" "),t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},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}}(typeof exports!="undefined"?exports:this),function(){function request(e,t,n){var r=URL.parse(e),i=HTTP.createClient(r.port,r.hostname),s=i.request("GET",r.pathname,{host:r.hostname});i.addListener("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+i.host+":"+i.port):fabric.log(e.message)}),s.end(),s.on("response",function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t){request(e,"binary",function(n){var r=new Image;r.src=new Buffer(n,"binary"),r._src=e,t(r)})},fabric.loadSVGFromURL=function(e,t){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),request(e,"",function(e){fabric.loadSVGFromString(e,t)})},fabric.loadSVGFromString=function(e,t){var n=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(n.documentElement,function(e,n){t(e,n)})},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e),t(r)})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this),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),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file +/* build: `node build.js modules=ALL` *//*! Fabric.js Copyright 2008-2012, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"0.9.21"};typeof exports!="undefined"&&(exports.fabric=fabric),typeof document!="undefined"&&typeof window!="undefined"?(fabric.document=document,fabric.window=window):(fabric.document=require("jsdom").jsdom(""),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined";var Cufon=function(){function r(e){var t=this.face=e.face;this.glyphs=e.glyphs,this.w=e.w,this.baseSize=parseInt(t["units-per-em"],10),this.family=t["font-family"].toLowerCase(),this.weight=t["font-weight"],this.style=t["font-style"]||"normal",this.viewBox=function(){var e=t.bbox.split(/\s+/),n={minX:parseInt(e[0],10),minY:parseInt(e[1],10),maxX:parseInt(e[2],10),maxY:parseInt(e[3],10)};return n.width=n.maxX-n.minX,n.height=n.maxY-n.minY,n.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")},n}(),this.ascent=-parseInt(t.ascent,10),this.descent=-parseInt(t.descent,10),this.height=-this.ascent+this.descent}function i(){var e={},t={oblique:"italic",italic:"oblique"};this.add=function(t){(e[t.style]||(e[t.style]={}))[t.weight]=t},this.get=function(n,r){var i=e[n]||e[t[n]]||e.normal||e.italic||e.oblique;if(!i)return null;r={normal:400,bold:700}[r]||parseInt(r,10);if(i[r])return i[r];var s={1:1,99:0}[r%100],o=[],u,a;s===undefined&&(s=r>400),r==500&&(r=400);for(var f in i){f=parseInt(f,10);if(!u||fa)a=f;o.push(f)}return ra&&(r=a),o.sort(function(e,t){return(s?e>r&&t>r?et:et:e=i.length+e?r():setTimeout(arguments.callee,10)}),function(t){e?t():n.push(t)}}(),supports:function(e,t){var n=fabric.document.createElement("span").style;return n[e]===undefined?!1:(n[e]=t,n[e]===t)},textAlign:function(e,t,n,r){return t.get("textAlign")=="right"?n>0&&(e=" "+e):nk&&(k=N),A.push(N),N=0;continue}var O=t.glyphs[T[b]]||t.missingGlyph;if(!O)continue;N+=C=Number(O.w||t.w)+h}A.push(N),N=Math.max(k,N);var M=[];for(var b=A.length;b--;)M[b]=N-A[b];if(C===null)return null;d+=l.width-C,m+=l.minX;var _,D;if(f)_=u,D=u.firstChild;else{_=fabric.document.createElement("span"),_.className="cufon cufon-canvas",_.alt=n,D=fabric.document.createElement("canvas"),_.appendChild(D);if(i.printable){var P=fabric.document.createElement("span");P.className="cufon-alt",P.appendChild(fabric.document.createTextNode(n)),_.appendChild(P)}}var H=_.style,B=D.style||{},j=c.convert(l.height-p+v),F=Math.ceil(j),I=F/j;D.width=Math.ceil(c.convert(N+d-m)*I),D.height=F,p+=l.minY,B.top=Math.round(c.convert(p-t.ascent))+"px",B.left=Math.round(c.convert(m))+"px";var q=Math.ceil(c.convert(N*I)),R=q+"px",U=c.convert(t.height),z=(i.lineHeight-1)*c.convert(-t.ascent/5)*(L-1);Cufon.textOptions.width=q,Cufon.textOptions.height=U*L+z,Cufon.textOptions.lines=L,Cufon.textOptions.totalLineHeight=z,e?(H.width=R,H.height=U+"px"):(H.paddingLeft=R,H.paddingBottom=U-1+"px");var W=Cufon.textOptions.context||D.getContext("2d"),X=F/l.height;Cufon.textOptions.fontAscent=t.ascent*X,Cufon.textOptions.boundaries=null;for(var V=Cufon.textOptions.shadowOffsets,b=y.length;b--;)V[b]=[y[b][0]*X,y[b][1]*X];W.save(),W.scale(X,X),W.translate(-m-1/X*D.width/2+(Cufon.fonts[t.family].offsetLeft||0),-p-Cufon.textOptions.height/X/2+(Cufon.fonts[t.family].offsetTop||0)),W.lineWidth=t.face["underline-thickness"],W.save();var J=Cufon.getTextDecoration(i),K=i.fontStyle==="italic";W.save(),Q();if(g)for(var b=0,w=g.length;b.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}'),function(e,t,i,s,o,u,a){var f=t===null;f&&(t=o.alt);var l=e.viewBox,c=i.computedFontSize||(i.computedFontSize=new Cufon.CSS.Size(n(u,i.get("fontSize"))+"px",e.baseSize)),h=i.computedLSpacing;h==undefined&&(h=i.get("letterSpacing"),i.computedLSpacing=h=h=="normal"?0:~~c.convertFrom(r(u,h)));var p,d;if(f)p=o,d=o.firstChild;else{p=fabric.document.createElement("span"),p.className="cufon cufon-vml",p.alt=t,d=fabric.document.createElement("span"),d.className="cufon-vml-canvas",p.appendChild(d);if(s.printable){var v=fabric.document.createElement("span");v.className="cufon-alt",v.appendChild(fabric.document.createTextNode(t)),p.appendChild(v)}a||p.appendChild(fabric.document.createElement("cvml:shape"))}var m=p.style,g=d.style,y=c.convert(l.height),b=Math.ceil(y),w=b/y,E=l.minX,S=l.minY;g.height=b,g.top=Math.round(c.convert(S-e.ascent)),g.left=Math.round(c.convert(E)),m.height=c.convert(e.height)+"px";var x=Cufon.getTextDecoration(s),T=i.get("color"),N=Cufon.CSS.textTransform(t,i).split(""),C=0,k=0,L=null,A,O,M=s.textShadow;for(var _=0,D=0,P=N.length;_r?n:i-t;s(u(l,f,c,n));if(i>r||o()){e.onComplete&&e.onComplete();return}a(h)}()}function f(e,t,n){if(e){var r=new Image;r.onload=function(){t&&t.call(n,r),r=r.onload=null},r.src=e}else t&&t.call(n,e)}function l(e,t){function n(e){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(e))]}function r(){++s===o&&t&&t(i)}var i=[],s=0,o=e.length;e.forEach(function(e,t){if(!e.type)return;var s=n(e.type);s.async?s.fromObject(e,function(e){i[t]=e,r()}):(i[t]=s.fromObject(e),r())})}function c(e,t,n){var r=e.length>1?new fabric.PathGroup(e,t):e[0];return typeof n!="undefined"&&r.setSourcePath(n),r}fabric.util={};var n=Math.PI/180,u=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)},a=function(){return u.apply(fabric.window,arguments)};fabric.util.removeFromArray=e,fabric.util.degreesToRadians=r,fabric.util.toFixed=i,fabric.util.getRandomInt=t,fabric.util.falseFunction=s,fabric.util.animate=o,fabric.util.requestAnimFrame=a,fabric.util.loadImage=f,fabric.util.enlivenObjects=l,fabric.util.groupSVGElements=c}(),function(){function t(t,n){var r=e.call(arguments,2),i=[];for(var s=0,o=t.length;s=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!==1/0&&r!==-1/0&&(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(){function o(){this.initialize.apply(this,arguments)}var n=null,s=e.call(arguments,0);typeof s[0]=="function"&&(n=s.shift()),o.superclass=n,o.subclasses=[],n&&(i.prototype=n.prototype,o.prototype=new i,n.subclasses.push(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=0,n=0;do t+=e.offsetTop||0,n+=e.offsetLeft||0,e=e.offsetParent;while(e);return{left:n,top:t}}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});var f;fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle?f=function(e){return fabric.document.defaultView.getComputedStyle(e).position}:f=function(e){var t=e.style.position;return!t&&e.currentStyle&&(t=e.currentStyle.position),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.type="text/javascript",r.setAttribute("runat","server"),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.getElementPosition=f}(),function(){function e(e,t){return e+(/\?/.test(e)?"&":"?")+t}function n(){}function r(r,i){i||(i={});var s=i.method?i.method.toUpperCase():"GET",o=i.onComplete||function(){},u=t(),a;return u.onreadystatechange=function(){u.readyState===4&&(o(u),u.onreadystatechange=n)},s==="GET"&&(a=null,typeof i.parameters=="string"&&(r=e(r,i.parameters))),u.open(s,r,!0),(s==="POST"||s==="PUT")&&u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),u.send(a),u}var t=function(){var e=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}];for(var t=e.length;t--;)try{var n=e[t]();if(n)return e[t]}catch(r){}}();fabric.util.request=r}(),function(){function e(e,t,n,r){return n*(e/=r)*e+t}function t(e,t,n,r){return-n*(e/=r)*(e-2)+t}function n(e,t,n,r){return e/=r/2,e<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e,t,n,r){return n*(e/=r)*e*e+t}function i(e,t,n,r){return n*((e=e/r-1)*e*e+1)+t}function s(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e+t:n/2*((e-=2)*e*e+2)+t}function o(e,t,n,r){return n*(e/=r)*e*e*e+t}function u(e,t,n,r){return-n*((e=e/r-1)*e*e*e-1)+t}function a(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e+t:-n/2*((e-=2)*e*e*e-2)+t}function f(e,t,n,r){return n*(e/=r)*e*e*e*e+t}function l(e,t,n,r){return n*((e=e/r-1)*e*e*e*e+1)+t}function c(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e*e+t:n/2*((e-=2)*e*e*e*e+2)+t}function h(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t}function p(e,t,n,r){return n*Math.sin(e/r*(Math.PI/2))+t}function d(e,t,n,r){return-n/2*(Math.cos(Math.PI*e/r)-1)+t}function v(e,t,n,r){return e===0?t:n*Math.pow(2,10*(e/r-1))+t}function m(e,t,n,r){return e===r?t+n:n*(-Math.pow(2,-10*e/r)+1)+t}function g(e,t,n,r){return e===0?t:e===r?t+n:(e/=r/2,e<1?n/2*Math.pow(2,10*(e-1))+t:n/2*(-Math.pow(2,-10*--e)+2)+t)}function y(e,t,n,r){return-n*(Math.sqrt(1-(e/=r)*e)-1)+t}function b(e,t,n,r){return n*Math.sqrt(1-(e=e/r-1)*e)+t}function w(e,t,n,r){return e/=r/2,e<1?-n/2*(Math.sqrt(1-e*e)-1)+t:n/2*(Math.sqrt(1-(e-=2)*e)+1)+t}function E(e,t,n,r){var i=1.70158,s=0,o=n;return e===0?t:(e/=r,e===1?t+n:(s||(s=r*.3),o-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){d.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),d.has(e,function(r){r?d.get(e,function(e){var t=m(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function m(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 g(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 y(e){var t="";for(var n=0,r=e.length;n",'",""].join("")),t}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s={cx:"left",x:"left",cy:"top",y:"top",r:"radius","fill-opacity":"opacity","fill-rule":"fillRule","stroke-width":"strokeWidth",transform:"transformMatrix","text-decoration":"textDecoration","font-size":"fontSize","font-weight":"fontWeight","font-style":"fontStyle","font-family":"fontFamily"};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 t(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function n(e,t){e[2]=t[0]}function r(e,t){e[1]=t[0]}function i(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var s=[1,0,0,1,0,0],o="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",u="(?:\\s+,?\\s*|,\\s*)",a="(?:(skewX)\\s*\\(\\s*("+o+")\\s*\\))",f="(?:(skewY)\\s*\\(\\s*("+o+")\\s*\\))",l="(?:(rotate)\\s*\\(\\s*("+o+")(?:"+u+"("+o+")"+u+"("+o+"))?\\s*\\))",c="(?:(scale)\\s*\\(\\s*("+o+")(?:"+u+"("+o+"))?\\s*\\))",h="(?:(translate)\\s*\\(\\s*("+o+")(?:"+u+"("+o+"))?\\s*\\))",p="(?:(matrix)\\s*\\(\\s*("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+"\\s*\\))",d="(?:"+p+"|"+h+"|"+c+"|"+l+"|"+a+"|"+f+")",v="(?:"+d+"(?:"+u+d+")*"+")",m="^\\s*(?:"+v+"?)\\s*$",g=new RegExp(m),y=new RegExp(d);return function(o){var u=s.concat();return!o||o&&!g.test(o)?u:(o.replace(y,function(s){var o=(new RegExp(d)).exec(s).filter(function(e){return e!==""&&e!=null}),a=o[1],f=o.slice(2).map(parseFloat);switch(a){case"translate":i(u,f);break;case"rotate":e(u,f);break;case"scale":t(u,f);break;case"skewX":n(u,f);break;case"skewY":r(u,f);break;case"matrix":u=f}}),u)}}(),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,p=f.length;c0&&this.init(e,t)}var t=e.fabric||(e.fabric={});if(t.Point){t.warn("fabric.Point is already defined");return}t.Point=n,n.prototype={constructor:n,init:function(e,t){this.x=e,this.y=t},add:function(e){return new n(this.x+e.x,this.y+e.y)},addEquals:function(e){return this.x+=e.x,this.y+=e.y,this},scalarAdd:function(e){return new n(this.x+e,this.y+e)},scalarAddEquals:function(e){return this.x+=e,this.y+=e,this},subtract:function(e){return new n(this.x-e.x,this.y-e.y)},subtractEquals:function(e){return this.x-=e.x,this.y-=e.y,this},scalarSubtract:function(e){return new n(this.x-e,this.y-e)},scalarSubtractEquals:function(e){return this.x-=e,this.y-=e,this},multiply:function(e){return new n(this.x*e,this.y*e)},multiplyEquals:function(e){return this.x*=e,this.y*=e,this},divide:function(e){return new n(this.x/e,this.y/e)},divideEquals:function(e){return this.x/=e,this.y/=e,this},eq:function(e){return this.x===e.x&&this.y===e.y},lt:function(e){return this.xe.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)},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){arguments.length>0&&this.init(e)}var t=e.fabric||(e.fabric={});if(t.Intersection){t.warn("fabric.Intersection is already defined");return}t.Intersection=n,t.Intersection.prototype={init:function(e){this.status=e,this.points=[]},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("No Intersection")}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("No Intersection"),s=r.length;for(var o=0;o0&&(i.status="Intersection"),i},t.Intersection.intersectPolygonPolygon=function(e,t){var r=new n("No Intersection"),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("No Intersection");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])}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=n.sourceFromHex(e);t||(t=n.sourceFromRgb(e)),t&&this.setSource(t)},getSource:function(){return this._source},setSource:function(e){this._source=e},toRgb:function(){var e=this.getSource();return"rgb("+e[0]+","+e[1]+","+e[2]+")"},toRgba:function(){var e=this.getSource();return"rgba("+e[0]+","+e[1]+","+e[2]+","+e[3]+")"},toHex:function(){var e=this.getSource(),t=e[0].toString(16);t=t.length===1?"0"+t:t;var n=e[1].toString(16);n=n.length===1?"0"+n:n;var r=e[2].toString(16);return r=r.length===1?"0"+r:r,t.toUpperCase()+n.toUpperCase()+r.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var t=this.getSource();return t[3]=e,this.setSource(t),this},toGrayscale:function(){var e=this.getSource(),t=parseInt((e[0]*.3+e[1]*.59+e[2]*.11).toFixed(0),10),n=e[3];return this.setSource([t,t,t,n]),this},toBlackWhite:function(e){var t=this.getSource(),n=(t[0]*.3+t[1]*.59+t[2]*.11).toFixed(0),r=t[3];return e=e||127,n=Number(n)','',"',"Created with Fabric.js ",fabric.version,"",fabric.createSVGFontFacesMarkup(this.getObjects())];this.backgroundImage&&e.push(''),this.overlayImage&&e.push('');for(var t=0,n=this.getObjects(),r=n.length;t"),e.join("")},isEmpty:function(){return this._objects.length===0},remove:function(e){return n(this._objects,e),this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared")),this.renderAll(),e},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll()},sendBackwards:function(e){var t=this._objects.indexOf(e),r=t;if(t!==0){for(var i=t-1;i>=0;--i){var s=e.intersectsWithObject(this._objects[i])||e.isContainedWithinObject(this._objects[i])||this._objects[i].isContainedWithinObject(e);if(s){r=i;break}}n(this._objects,e),this._objects.splice(r,0,e)}return this.renderAll()},bringForward:function(e){var t=this.getObjects(),r=t.indexOf(e),i=r;if(r!==t.length-1){for(var s=r+1,o=this._objects.length;s"},e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;a0&&(t>this.targetFindTolerance?t-=this.targetFindTolerance:t=0,n>this.targetFindTolerance?n-=this.targetFindTolerance:n=0);var o=!0,u=r.getImageData(t,n,this.targetFindTolerance*2||1,this.targetFindTolerance*2||1);for(var a=3;a0?0:-t),e.ey-(n>0?0:-n),r,i),this.contextTop.lineWidth=this.selectionLineWidth,this.contextTop.strokeStyle=this.selectionBorderColor,this.contextTop.strokeRect(e.ex+p-(t>0?0:r),e.ey+p-(n>0?0:i),r,i)},_findSelectedObjects:function(e){var t=[],n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,s=r+this._groupSelector.top,o,u=new fabric.Point(c(n,i),c(r,s)),a=new fabric.Point(h(n,i),h(r,s));for(var f=0,l=this._objects.length;f1&&(t=new fabric.Group(t),this.setActiveGroup(t),t.saveCoords(),this.fire("selection:created",{target:t})),this.renderAll()},findTarget:function(e,t){var n,r=this.getPointer(e);if(this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay))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.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;u1?t.apply(this,u.call(arguments,1)):t.call(this)},initialize:function(e){e&&this.setOptions(e)},_initGradient:function(e){e.fill&&typeof e.fill=="object"&&!(e.fill instanceof t.Gradient)&&this.set("fill",new t.Gradient(e.fill))},setOptions:function(e){var t=this.stateProperties.length,n;while(t--)n=this.stateProperties[t],n in e&&this.set(n,e[n]);this._initGradient(e)},transform:function(e){e.globalAlpha=this.opacity,e.translate(this.left,this.top),e.rotate(this._theta),e.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(){var e=t.Object.NUM_FRACTION_DIGITS,n={type:this.type,left:r(this.left,e),top:r(this.top,e),width:r(this.width,e),height:r(this.height,e),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,overlayFill:this.overlayFill,stroke:this.stroke,strokeWidth:this.strokeWidth,strokeDashArray:this.strokeDashArray,scaleX:r(this.scaleX,e),scaleY:r(this.scaleY,e),angle:r(this.getAngle(),e),flipX:this.flipX,flipY:this.flipY,opacity:r(this.opacity,e),selectable:this.selectable,hasControls:this.hasControls,hasBorders:this.hasBorders,hasRotatingPoint:this.hasRotatingPoint,transparentCorners:this.transparentCorners,perPixelTargetFind:this.perPixelTargetFind};return this.includeDefaultValues||(n=this._removeDefaultValues(n)),n},toDatalessObject:function(){return this.toObject()},getSvgStyles:function(){return["stroke: ",this.stroke?this.stroke:"none","; ","stroke-width: ",this.strokeWidth?this.strokeWidth:"0","; ","stroke-dasharray: ",this.strokeDashArray?this.strokeDashArray.join(" "):"; ","fill: ",this.fill?this.fill:"none","; ","opacity: ",this.opacity?this.opacity:"1",";"].join("")},getSvgTransform:function(){var e=this.getAngle(),n=t.Object.NUM_FRACTION_DIGITS,i="translate("+r(this.left,n)+" "+r(this.top,n)+")",s=e!==0?" rotate("+r(e,n)+")":"",o=this.scaleX===1&&this.scaleY===1?"":" scale("+r(this.scaleX,n)+" "+r(this.scaleY,n)+")",u=this.flipX?"matrix(-1 0 0 1 0 0) ":"",a=this.flipY?"matrix(1 0 0 -1 0 0)":"";return[i,s,o,u,a].join("")},_removeDefaultValues:function(e){var n=t.Object.prototype.options;return n&&this.stateProperties.forEach(function(t){e[t]===n[t]&&delete e[t]}),e},isActive:function(){return!!this.active},setActive:function(e){return this.active=!!e,this},toString:function(){return"#"},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"?this._set(e,t(this.get(e))):this._set(e,t);return this},_set:function(e,n){var r=(e==="scaleX"||e==="scaleY")&&n1?this.strokeWidth:0,t=this.padding;this.currentWidth=(this.width+e)*this.scaleX+t*2,this.currentHeight=(this.height+e)*this.scaleY+t*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth)),this._hypotenuse=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),this._angle=Math.atan(this.currentHeight/this.currentWidth);var n=Math.cos(this._angle+this._theta)*this._hypotenuse,r=Math.sin(this._angle+this._theta)*this._hypotenuse,i=this._theta,s=Math.sin(i),o=Math.cos(i),u={x:this.left-n,y:this.top-r},a={x:u.x+this.currentWidth*o,y:u.y+this.currentWidth*s},f={x:a.x-this.currentHeight*s,y:a.y+this.currentHeight*o},l={x:u.x-this.currentHeight*s,y:u.y+this.currentHeight*o},c={x:u.x-this.currentHeight/2*s,y:u.y+this.currentHeight/2*o},h={x:u.x+this.currentWidth/2*o,y:u.y+this.currentWidth/2*s},p={x:a.x-this.currentHeight/2*s,y:a.y+this.currentHeight/2*o},d={x:l.x+this.currentWidth/2*o,y:l.y+this.currentWidth/2*s},v={x:u.x+this.currentWidth/2*o,y:u.y+this.currentWidth/2*s};return this.oCoords={tl:u,tr:a,br:f,bl:l,ml:c,mt:h,mr:p,mb:d,mtr:v},this._setCornerCoords(),this},getBoundingRectWidth:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],n=t.util.array.min(e),r=t.util.array.max(e);return Math.abs(n-r)},getBoundingRectHeight:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],n=t.util.array.min(e),r=t.util.array.max(e);return Math.abs(n-r)},drawBorders:function(e){if(!this.hasBorders)return;var n=t.Object.MIN_SCALE_LIMIT,r=this.padding,i=r*2,s=this.strokeWidth>1?this.strokeWidth:0;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var o=1/(this.scaleXc&&(l=f-c),u?n+=h*u-(l*u||0):r+=h*a-(l*a||0),e[1&t?"moveTo":"lineTo"](n,r),t>=o&&(t=0)}}1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray);var t=0,n=-this.width/2,r=-this.height/2,i=this,s=this.padding,o=this.strokeDashArray.length;e.save(),e.beginPath(),u(1,0),u(0,1),u(-1,0),u(0,-1),e.stroke(),e.closePath(),e.restore()},drawCorners:function(e){if(!this.hasControls)return;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";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,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m+v+r+c,e.clearRect(o,u,a,f),e[y](o,u,a,f),this.lockUniScaling||(o=i+g/2-p,u=s-h-r-c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,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,e.clearRect(o,u,a,f),e[y](o,u,a,f)),e.restore(),this},clone:function(e){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(),e):new t.Object(this.toObject())},cloneAsImage:function(e){if(t.Image){var n=new Image;n.onload=function(){e&&e(new t.Image(n),r),n=n.onload=null};var r={angle:this.get("angle"),flipX:this.get("flipX"),flipY:this.get("flipY")};this.set("angle",0).set("flipX",!1).set("flipY",!1),this.toDataURL(function(e){n.src=e})}return this},toDataURL:function(e){function i(t){t.left=n.width/2,t.top=n.height/2,t.setActive(!1),r.add(t);var i=r.toDataURL("png");r.dispose(),r=t=null,e&&e(i)}var n=t.document.createElement("canvas");!n.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(n),n.width=this.getBoundingRectWidth(),n.height=this.getBoundingRectHeight(),t.util.wrapElement(n,"div");var r=new t.Canvas(n);r.backgroundColor="transparent",r.renderAll(),this.constructor.async?this.clone(i):i(this.clone())},hasStateChanged:function(){return this.stateProperties.some(function(e){return this[e]!==this.originalState[e]},this)},saveState:function(){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){this.originalState={},this.saveState()},intersectsWithRect:function(e,n){var r=this.oCoords,i=new t.Point(r.tl.x,r.tl.y),s=new t.Point(r.tr.x,r.tr.y),o=new t.Point(r.bl.x,r.bl.y),u=new t.Point(r.br.x,r.br.y),a=t.Intersection.intersectPolygonRectangle([i,s,u,o],e,n);return a.status==="Intersection"},intersectsWithObject:function(e){function n(e){return{tl:new t.Point(e.tl.x,e.tl.y),tr:new t.Point(e.tr.x,e.tr.y),bl:new t.Point(e.bl.x,e.bl.y),br:new t.Point(e.br.x,e.br.y)}}var r=n(this.oCoords),i=n(e.oCoords),s=t.Intersection.intersectPolygonPolygon([r.tl,r.tr,r.br,r.bl],[i.tl,i.tr,i.br,i.bl]);return s.status==="Intersection"},isContainedWithinObject:function(e){return this.isContainedWithinRect(e.oCoords.tl,e.oCoords.br)},isContainedWithinRect:function(e,n){var r=this.oCoords,i=new t.Point(r.tl.x,r.tl.y),s=new t.Point(r.tr.x,r.tr.y),o=new t.Point(r.bl.x,r.bl.y);return i.x>e.x&&s.xe.y&&o.y=t&&l.d.y>=t)continue;l.o.x===l.d.x&&l.o.x>=e?(u=l.o.x,a=t):(r=0,i=(l.d.y-l.o.y)/(l.d.x-l.o.x),s=t-r*e,o=l.o.y-i*l.o.x,u=-(s-o)/(r-i),a=s+r*u),u>=e&&(f+=1);if(f===2)break}return f},_getImageLines:function(e){return{topline:{o:e.tl,d:e.tr},rightline:{o:e.tr,d:e.br},bottomline:{o:e.br,d:e.bl},leftline:{o:e.bl,d:e.tl}}},_setCornerCoords:function(){var e=this.oCoords,t=o(45-this.getAngle()),n=Math.sqrt(2*Math.pow(this.cornersize,2))/2,r=n*Math.cos(t),i=n*Math.sin(t),s=Math.sin(this._theta),u=Math.cos(this._theta);e.tl.corner={tl:{x:e.tl.x-i,y:e.tl.y-r},tr:{x:e.tl.x+r,y:e.tl.y-i},bl:{x:e.tl.x-r,y:e.tl.y+i},br:{x:e.tl.x+i,y:e.tl.y+r}},e.tr.corner={tl:{x:e.tr.x-i,y:e.tr.y-r},tr:{x:e.tr.x+r,y:e.tr.y-i},br:{x:e.tr.x+i,y:e.tr.y+r},bl:{x:e.tr.x-r,y:e.tr.y+i}},e.bl.corner={tl:{x:e.bl.x-i,y:e.bl.y-r},bl:{x:e.bl.x-r,y:e.bl.y+i},br:{x:e.bl.x+i,y:e.bl.y+r},tr:{x:e.bl.x+r,y:e.bl.y-i}},e.br.corner={tr:{x:e.br.x+r,y:e.br.y-i},bl:{x:e.br.x-r,y:e.br.y+i},br:{x:e.br.x+i,y:e.br.y+r},tl:{x:e.br.x-i,y:e.br.y-r}},e.ml.corner={tl:{x:e.ml.x-i,y:e.ml.y-r},tr:{x:e.ml.x+r,y:e.ml.y-i},bl:{x:e.ml.x-r,y:e.ml.y+i},br:{x:e.ml.x+i,y:e.ml.y+r}},e.mt.corner={tl:{x:e.mt.x-i,y:e.mt.y-r},tr:{x:e.mt.x+r,y:e.mt.y-i},bl:{x:e.mt.x-r,y:e.mt.y+i},br:{x:e.mt.x+i,y:e.mt.y+r}},e.mr.corner={tl:{x:e.mr.x-i,y:e.mr.y-r},tr:{x:e.mr.x+r,y:e.mr.y-i},bl:{x:e.mr.x-r,y:e.mr.y+i},br:{x:e.mr.x+i,y:e.mr.y+r}},e.mb.corner={tl:{x:e.mb.x-i,y:e.mb.y-r},tr:{x:e.mb.x+r,y:e.mb.y-i},bl:{x:e.mb.x-r,y:e.mb.y+i},br:{x:e.mb.x+i,y:e.mb.y+r}},e.mtr.corner={tl:{x:e.mtr.x-i+s*this.rotatingPointOffset,y:e.mtr.y-r-u*this.rotatingPointOffset},tr:{x:e.mtr.x+r+s*this.rotatingPointOffset,y:e.mtr.y-i-u*this.rotatingPointOffset},bl:{x:e.mtr.x-r+s*this.rotatingPointOffset,y:e.mtr.y+i-u*this.rotatingPointOffset},br:{x:e.mtr.x+i+s*this.rotatingPointOffset,y:e.mtr.y+r-u*this.rotatingPointOffset}}},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(){return this.toObject()},setGradientFill:function(e){this.set("fill",t.Gradient.forObject(this,e))},animate:function(){if(arguments[0]&&typeof arguments[0]=="object")for(var e in arguments[0])this._animate(e,arguments[0][e],arguments[1]);else this._animate.apply(this,arguments);return this},_animate:function(e,n,r){var i=this;r||(r={}),"from"in r||(r.from=this.get(e)),/[+\-]/.test((n+"").charAt(0))&&(n=this.get(e)+parseFloat(n)),t.util.animate({startValue:r.from,endValue:n,byValue:r.by,easing:r.easing,duration:r.duration,onChange:function(t){i.set(e,t),r.onChange&&r.onChange()},onComplete:function(){i.setCoords(),r.onComplete&&r.onComplete()}})},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.canvas.sendToBack(this),this},bringToFront:function(){return this.canvas.bringToFront(this),this},sendBackwards:function(){return this.canvas.sendBackwards(this),this},bringForward:function(){return this.canvas.bringForward(this),this}}),t.Object.prototype.rotate=t.Object.prototype.setAngle;var a=t.Object.prototype;for(var f=a.stateProperties.length;f--;){var l=a.stateProperties[f],c=l.charAt(0).toUpperCase()+l.slice(1),h="set"+c,p="get"+c;a[p]||(a[p]=function(e){return new Function('return this.get("'+e+'")')}(l)),a[h]||(a[h]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(l))}n(t.Object.prototype,t.Observable),n(t.Object,{NUM_FRACTION_DIGITS:2,MIN_SCALE_LIMIT:.1})}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r={x1:1,x2:1,y1:1,y2:1};if(t.Line){t.warn("fabric.Line is already defined");return}t.Line=t.util.createClass(t.Object,{type:"line",initialize:function(e,t){t=t||{},e||(e=[0,0,0,0]),this.callSuper("initialize",t),this.set("x1",e[0]),this.set("y1",e[1]),this.set("x2",e[2]),this.set("y2",e[3]),this._setWidthHeight(t)},_setWidthHeight:function(e){e||(e={}),this.set("width",this.x2-this.x1||1),this.set("height",this.y2-this.y1||1),this.set("left","left"in e?e.left:this.x1+this.width/2),this.set("top","top"in e?e.top:this +.y1+this.height/2)},_set:function(e,t){return this[e]=t,e in r&&this._setWidthHeight(),this},_render:function(e){e.beginPath(),this.group&&e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top),e.moveTo(this.width===1?0:-this.width/2,this.height===1?0:-this.height/2),e.lineTo(this.width===1?0:this.width/2,this.height===1?0:this.height/2),e.lineWidth=this.strokeWidth;var t=e.strokeStyle;e.strokeStyle=e.fillStyle,e.stroke(),e.strokeStyle=t},complexity:function(){return 1},toObject:function(){return n(this.callSuper("toObject"),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){return[""].join("")}}),t.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" "),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e);var t=this.get("radius")*2;this.set("width",t).set("height",t)},toObject:function(){return r(this.callSuper("toObject"),{radius:this.get("radius")})},toSVG:function(){return'"},_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.fill&&e.fill(),this.stroke&&e.stroke()},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="cx cy r fill fill-opacity opacity stroke stroke-width transform".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");return"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0),new t.Circle(r(s,n))},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.fill&&e.fill(),this.stroke&&e.stroke()},complexity:function(){return 1},toSVG:function(){var e=this.width/2,t=this.height/2,n=[-e+" "+t,"0 "+ -t,e+" "+t].join(",");return'"}}),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",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(){return r(this.callSuper("toObject"),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){return[""].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.stroke&&e.stroke(),this.fill&&e.fill(),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".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 n(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={});if(t.Rect){console.warn("fabric.Rect is already defined");return}t.Rect=t.util.createClass(t.Object,{type:"rect",rx:0,ry:0,initialize:function(e){e=e||{},this._initStateProperties(),this.callSuper("initialize",e),this._initRxRy()},_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;e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&this.group&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y),e.moveTo(r+t,i),e.lineTo(r+s-t,i),e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this.fill&&e.fill(),this.strokeDashArray?this._renderDashedStroke(e):this.stroke&&e.stroke()},_normalizeLeftTopProperties:function(e){return e.left&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),e.top&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},complexity:function(){return 1},toObject:function(){return t.util.object.extend(this.callSuper("toObject"),{rx:this.get("rx")||0,ry:this.get("ry")||0})},toSVG:function(){return'"}}),t.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Rect.fromElement=function(e,r){if(!e)return null;var i=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);i=n(i);var s=new t.Rect(t.util.object.extend(r?t.util.object.clone(r):{},i));return s._normalizeLeftTopProperties(i),s},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;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions()},_calcDimensions:function(){return t.Polygon.prototype._calcDimensions.call(this)},toObject:function(){return t.Polygon.prototype.toObject.call(this)},toSVG:function(){var e=[];for(var t=0,r=this.points.length;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"].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;n1&&(g=Math.sqrt(g),n*=g,i*=g);var y=d/n,b=p/n,w=-p/i,E=d/i,S=y*l+b*c,x=w*l+E*c,T=y*e+b*t,N=w*e+E*t,C=(T-S)*(T-S)+(N-x)*(N-x),k=1/C-.25;k<0&&(k=0);var L=Math.sqrt(k);a===u&&(L=-L);var A=.5*(S+T)-L*(N-x),O=.5*(x+N)+L*(T-S),M=Math.atan2(x-O,S-A),_=Math.atan2(N-O,T-A),D=_-M;D<0&&a===1?D+=2*Math.PI:D>0&&a===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B"},toObject:function(){var e=h(this.callSuper("toObject"),{path:this.path});return this.sourcePath&&(e.sourcePath=this.sourcePath),this.transformMatrix&&(e.transformMatrix=this.transformMatrix),e},toDatalessObject:function(){var e=this.toObject();return this.sourcePath&&(e.path=this.sourcePath),delete e.sourcePath,e},toSVG:function(){var e=[];for(var t=0,n=this.path.length;t',"',""].join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n,r,i;for(var s=0,o,u=this.path.length;sc)for(var h=1,p=o.length;h"];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){var n=u(e.paths);return new t.PathGroup(n,e)}}(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,o=t.util.removeFromArray;if(t.Group)return;t.Group=t.util.createClass(t.Object,{type:"group",initialize:function(e,t){t=t||{},this.objects=e||[],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.hideCorners=!0},this)},toString:function(){return"#"},getObjects:function(){return this.objects},addWithUpdate:function(e){return this._restoreObjectsState(),this.objects.push(e),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),o(this.objects,e),e.setActive(!1),this._calcBounds(),this._updateObjectsCoords(),this},add:function(e){return this.objects.push(e),this},remove:function(e){return o(this.objects,e),this},size:function(){return this.getObjects().length},_set:function(e,t){if(e==="fill"||e==="opacity"){var n=this.objects.length;this[e]=t;while(n--)this.objects[n].set(e,t)}else this[e]=t},contains:function(e){return this.objects.indexOf(e)>-1},toObject:function(){return n(this.callSuper("toObject"),{objects:s(this.objects,"toObject")})},render:function(e,t){e.save(),this.transform(e);var n=Math.max(this.scaleX,this.scaleY);for(var r=this.objects.length;r>0;r--){var i=this.objects[r-1],s=i.borderScaleFactor,o=i.hasRotatingPoint;i.borderScaleFactor=n,i.hasRotatingPoint=!1,i.render(e),i.borderScaleFactor=s,i.hasRotatingPoint=o}!t&&this.active&&(this.drawBorders(e),this.hideCorners||this.drawCorners(e)),e.restore(),this.setCoords()},item:function(e){return this.getObjects()[e]},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=typeof t.complexity=="function"?t.complexity():0,e},0)},_restoreObjectsState:function(){return this.objects.forEach(this._restoreObjectState,this),this},_restoreObjectState:function(e){var t=this.get("left"),n=this.get("top"),r=this.getAngle()*(Math.PI/180),i=Math.cos(r)*e.get("top")+Math.sin(r)*e.get("left"),s=-Math.sin(r)*e.get("top")+Math.cos(r)*e.get("left");return e.setAngle(e.getAngle()+this.getAngle()),e.set("left",t+s*this.get("scaleX")),e.set("top",n+i*this.get("scaleY")),e.set("scaleX",e.get("scaleX")*this.get("scaleX")),e.set("scaleY",e.get("scaleY")*this.get("scaleY")),e.setCoords(),e.hideCorners=!1,e.setActive(!1),e.setCoords(),this},destroy:function(){return this._restoreObjectsState()},saveCoords:function(){return this._originalLeft=this.get("left"),this._originalTop=this.get("top"),this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){return this.forEachObject(function(e){e.setCoords()}),this},activateAllObjects:function(){return this.forEachObject(function(e){e.setActive()}),this},forEachObject:t.StaticCanvas.prototype.forEachObject,_setOpacityIfSame:function(){var e=this.getObjects(),t=e[0]?e[0].get("opacity"):1,n=e.every(function(e){return e.get("opacity")===t});n&&(this.opacity=t)},_calcBounds:function(){var e=[],t=[],n,s,o,u,a,f,l,c=0,h=this.objects.length;for(;ce.x&&i-ne.y},toGrayscale:function(){var e=this.objects.length;while(e--)this.objects[e].toGrayscale()},toSVG:function(){var e=[];for(var t=0,n=this.objects.length;t'+e.join("")+""}}),t.Group.fromObject=function(e,n){t.util.enlivenObjects(e.objects,function(r){delete e.objects,n&&n(new t.Group(r,e))})},t.Group.async=!0}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=fabric.util.object.extend;e.fabric||(e.fabric={});if(e.fabric.Image){fabric.warn("fabric.Image is already defined.");return}fabric.Image=fabric.util.createClass(fabric.Object,{active:!1,type:"image",initialize:function(e,t){t||(t={}),this.callSuper("initialize",t),this._initElement(e),this._originalImage=this.getElement(),this._initConfig(t),this.filters=[],t.filters&&(this.filters=t.filters,this.applyFilters())},getElement:function(){return this._element},setElement:function(e){return this._element=e,this._initConfig(),this},getOriginalSize:function(){var e=this.getElement();return{width:e.width,height:e.height}},render:function(e,t){e.save();var n=this.transformMatrix;this._resetWidthHeight(),this.group&&e.translate(-this.group.width/2+this.width/2,-this.group.height/2+this.height/2),n&&e.transform(n[0],n[1],n[2],n[3],n[4],n[5]),t||this.transform(e),this._render(e),this.active&&!t&&(this.drawBorders(e),this.hideCorners||this.drawCorners(e)),e.restore()},toObject:function(){return t(this.callSuper("toObject"),{src:this._originalImage.src||this._originalImage._src,filters:this.filters.concat()})},toSVG:function(){return''+'"+""},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e){this.constructor.fromObject(this.toObject(),e)},applyFilters:function(e){if(this.filters.length===0){this.setElement(this._originalImage),e&&e();return}var t=typeof Buffer!="undefined"&&typeof window=="undefined",n=this._originalImage,r=fabric.document.createElement("canvas"),i=t?new(require("canvas").Image):fabric.document.createElement("img"),s=this;!r.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(r),r.width=n.width,r.height=n.height,r.getContext("2d").drawImage(n,0,0,n.width,n.height),this.filters.forEach(function(e){e&&e.applyTo(r)}),i.onload=function(){s._element=i,e&&e(),i.onload=r=n=null},i.width=n.width,i.height=n.height;if(t){var o=r.toDataURL("image/png").replace(/data:image\/png;base64,/,"");i.src=new Buffer(o,"base64"),s._element=i,e&&e()}else i.src=r.toDataURL("image/png");return this},_render:function(e){e.drawImage(this.getElement(),-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e){e.filters&&e.filters.length&&(this.filters=e.filters.map(function(e){return e&&fabric.Image.filters[e.type].fromObject(e)}))},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){var n=fabric.document.createElement("img"),r=e.src;e.width&&(n.width=e.width),e.height&&(n.height=e.height),n.onload=function(){fabric.Image.prototype._initFilters.call(e,e);var r=new fabric.Image(n,e);t&&t(r),n=n.onload=null},n.src=r},fabric.Image.fromURL=function(e,t,n){var r=fabric.document.createElement("img");r.onload=function(){t&&t(new fabric.Image(r,n)),r=r.onload=null},r.src=e},fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" "),fabric.Image.fromElement=function(e,n,r){r||(r={});var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(i,r))},fabric.Image.async=!0}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.get("angle");return e>-225&&e<=-135?-180:e>-135&&e<=-45?-90:e>-45&&e<=45?0:e>45&&e<=135?90:e>135&&e<=225?180:e>225&&e<=315?270:e>315?360:0},straighten:function(){var e=this._getAngleValueForStraighten();return this.setAngle(e),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.setActive(!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.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo: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;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)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},fabric.Image.filters.Convolute=fabric.util.createClass({type:"Convolute",initialize:function(e){e||(e={}),this.opaque=e.opaque,this.matrix=e.matrix||[0,0,0,0,1,0,0,0,0],this.tmpCtx=fabric.document.createElement("canvas").getContext("2d")},_createImageData:function(e,t){return this.tmpCtx.createImageData(e,t)},applyTo:function(e){var t=this.matrix,n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=Math.round(Math.sqrt(t.length)),s=Math.floor(i/2),o=r.data,u=r.width,a=r.height,f=u,l=a,c=this._createImageData(f,l),h=c.data,p=this.opaque?1:0;for(var d=0;d=0&&N=0&&C'},_render:function(e){typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_renderViaNative:function(e){this.transform(e),this._setTextStyles(e);var t=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,t),this.height=this._getTextHeight(e,t),this._renderTextBackground(e,t),this.textAlign!=="left"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),this._setTextShadow(e),this._renderTextFill(e,t),this.textShadow&&e.restore(),this._renderTextStroke(e,t),this.textAlign!=="left"&&e.restore(),this._renderTextDecoration(e,t),this._setBoundaries(e,t),this._totalLineHeight=0,this.setCoords()},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_setTextShadow:function(e){if(this.textShadow){var t=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/,n=this.textShadow,r=t.exec(this.textShadow),i=n.replace(t,"");e.save(),e.shadowColor=i,e.shadowOffsetX=parseInt(r[1],10),e.shadowOffsetY=parseInt(r[2],10),e.shadowBlur=parseInt(r[3],10),this._shadows=[{blur:e.shadowBlur,color:e.shadowColor,offX:e.shadowOffsetX,offY:e.shadowOffsetY}],this._shadowOffsets=[[parseInt(e.shadowOffsetX,10),parseInt(e.shadowOffsetY,10)]]}},_renderTextFill:function(e,t){this._boundaries=[];for(var n=0,r=t.length;n-1&&i(this.fontSize),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(0)},_getFontDeclaration:function(){return[this.fontStyle,this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},_initDummyElementForCufon:function(){var e=t.document.createElement("pre"),n=t.document.createElement("div");return n.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},render:function(e,t){e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.hideCorners||this.drawCorners(e)),e.restore()},toObject:function(){return n(this.callSuper("toObject"),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.backgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e?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},setFontsize:function(e){return this.set("fontSize",e),this._initDimensions(),this.setCoords(),this},getText:function(){return this.text},setText:function(e){return this.set("text",e),this._initDimensions(),this.setCoords(),this},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t)}}),t.Text.ATTRIBUTE_NAMES="x y fill fill-opacity opacity stroke stroke-width transform font-family font-style font-weight font-size text-decoration".split(" "),t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},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}}(typeof exports!="undefined"?exports:this),function(){function request(e,t,n){var r=URL.parse(e),i=HTTP.createClient(r.port,r.hostname),s=i.request("GET",r.pathname,{host:r.hostname});i.addListener("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+i.host+":"+i.port):fabric.log(e.message)}),s.end(),s.on("response",function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t){request(e,"binary",function(n){var r=new Image;r.src=new Buffer(n,"binary"),r._src=e,t(r)})},fabric.loadSVGFromURL=function(e,t){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),request(e,"",function(e){fabric.loadSVGFromString(e,t)})},fabric.loadSVGFromString=function(e,t){var n=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(n.documentElement,function(e,n){t(e,n)})},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e),t(r)})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this),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),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 a764514c281ce79a3088074d5c1ec7dbed02bcf7..4c8c3e09ddf35efad41c8763267978db56fb07b3 100644 GIT binary patch delta 35296 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 aAaJxke-u8iGr`smCjT$e2(U3+H39$@5e1t7 diff --git a/src/util/dom_event.js b/src/util/dom_event.js index daa8364c..d21fda41 100644 --- a/src/util/dom_event.js +++ b/src/util/dom_event.js @@ -12,11 +12,6 @@ return true; } var getUniqueId = (function () { - if (typeof fabric.document.documentElement.uniqueID !== 'undefined') { - return function (element) { - return element.uniqueID; - }; - } var uid = 0; return function (element) { return element.__uniqueID || (element.__uniqueID = 'uniqueID__' + uid++);