From f1aef7ed1afab15f50de6372b23fc1237c752aec Mon Sep 17 00:00:00 2001 From: kangax Date: Sat, 18 Jan 2014 12:01:19 -0500 Subject: [PATCH] Version 1.4.3 --- HEADER.js | 2 +- component.json | 2 +- dist/fabric.js | 8 +++++++- dist/fabric.min.js | 10 +++++----- dist/fabric.min.js.gz | Bin 53376 -> 53384 bytes dist/fabric.require.js | 8 +++++++- package.json | 2 +- src/shapes/line.class.js | 6 ++++++ 8 files changed, 28 insertions(+), 10 deletions(-) diff --git a/HEADER.js b/HEADER.js index f5deb481..bee21702 100644 --- a/HEADER.js +++ b/HEADER.js @@ -1,6 +1,6 @@ /*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "1.4.2" }; +var fabric = fabric || { version: "1.4.3" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; } diff --git a/component.json b/component.json index dd0fe655..bcd2d78d 100644 --- a/component.json +++ b/component.json @@ -2,7 +2,7 @@ "name": "fabric.js", "repo": "kangax/fabric.js", "description": "Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.", - "version": "1.4.2", + "version": "1.4.3", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "dependencies": {}, "development": {}, diff --git a/dist/fabric.js b/dist/fabric.js index 67d6efc4..1e7fa096 100644 --- a/dist/fabric.js +++ b/dist/fabric.js @@ -1,7 +1,7 @@ /* build: `node build.js modules=ALL exclude=gestures,cufon,json minifier=uglifyjs` */ /*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "1.4.2" }; +var fabric = fabric || { version: "1.4.3" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; } @@ -12586,6 +12586,12 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot */ type: 'line', + x1: 0, + y1: 0, + + x2: 0, + y2: 0, + /** * Constructor * @param {Array} [points] Array of points diff --git a/dist/fabric.min.js b/dist/fabric.min.js index d9d4fed9..e22329db 100644 --- a/dist/fabric.min.js +++ b/dist/fabric.min.js @@ -1,7 +1,7 @@ -/* build: `node build.js modules=ALL exclude=gestures,cufon,json minifier=uglifyjs` *//*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"1.4.2"};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",fabric.SHARED_ATTRIBUTES=["transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width"],function(){function e(e,t){if(!this.__eventListeners[e])return;t?fabric.util.removeFromArray(this.__eventListeners[e],t):this.__eventListeners[e].length=0}function t(e,t){this.__eventListeners||(this.__eventListeners={});if(arguments.length===1)for(var n in e)this.on(n,e[n]);else this.__eventListeners[e]||(this.__eventListeners[e]=[]),this.__eventListeners[e].push(t);return this}function n(t,n){if(!this.__eventListeners)return;if(arguments.length===0)this.__eventListeners={};else if(arguments.length===1&&typeof arguments[0]=="object")for(var r in t)e.call(this,r,t[r]);else e.call(this,t,n);return this}function r(e,t){if(!this.__eventListeners)return;var n=this.__eventListeners[e];if(!n)return;for(var r=0,i=n.length;r-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)}},function(e){var t=Math.sqrt,n=Math.atan2,r=Math.PI/180;fabric.util={removeFromArray:function(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e},getRandomInt:function(e,t){return Math.floor(Math.random()*(t-e+1))+e},degreesToRadians:function(e){return e*r},radiansToDegrees:function(e){return e/r},rotatePoint:function(e,t,n){var r=Math.sin(n),i=Math.cos(n);e.subtractEquals(t);var s=e.x*i-e.y*r,o=e.x*r+e.y*i;return(new fabric.Point(s,o)).addEquals(t)},toFixed:function(e,t){return parseFloat(Number(e).toFixed(t))},falseFunction:function(){return!1},getKlass:function(e,t){return e=fabric.util.string.camelize(e.charAt(0).toUpperCase()+e.slice(1)),fabric.util.resolveNamespace(t)[e]},resolveNamespace:function(t){if(!t)return fabric;var n=t.split("."),r=n.length,i=e||fabric.window;for(var s=0;s1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r},populateWithProperties:function(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),e[d?"lineTo":"moveTo"](r,0),d=!d;e.restore()},createCanvasElement:function(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e},createImage:function(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")},createAccessors:function(e){var t=e.prototype;for(var n=t.stateProperties.length;n--;){var r=t.stateProperties[n],i=r.charAt(0).toUpperCase()+r.slice(1),s="set"+i,o="get"+i;t[o]||(t[o]=function(e){return new Function('return this.get("'+e+'")')}(r)),t[s]||(t[s]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(r))}},clipContext:function(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()},multiplyTransformMatrices:function(e,t){var n=[[e[0],e[2],e[4]],[e[1],e[3],e[5]],[0,0,1]],r=[[t[0],t[2],t[4]],[t[1],t[3],t[5]],[0,0,1]],i=[];for(var s=0;s<3;s++){i[s]=[];for(var o=0;o<3;o++){var u=0;for(var a=0;a<3;a++)u+=n[s][a]*r[a][o];i[s][o]=u}}return[i[0][0],i[1][0],i[0][1],i[1][1],i[0][2],i[1][2]]},getFunctionBody:function(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]},normalizePoints:function(e,t){var n=fabric.util.array.min(e,"x"),r=fabric.util.array.min(e,"y");n=n<0?n:0,r=n<0?r:0;for(var i=0,s=e.length;i0&&(t>r?t-=r:t=0,n>r?n-=r:n=0);var i=!0,s=e.getImageData(t,n,r*2||1,r*2||1);for(var o=3,u=s.data.length;o0&&f===0&&(E-=2*Math.PI);var S=Math.ceil(Math.abs(E/(Math.PI*.5+.001))),x=[];for(var T=0;T1&&(h=Math.sqrt(h),t*=h,n*=h);var p=f/t,d=a/t,v=-a/n,m=f/n;return{x0:p*r+d*i,y0:v*r+m*i,x1:p*s+d*o,y1:v*s+m*o,sin_th:a,cos_th:f}}function o(e,i,s,o,u,a,f,l){r=n.call(arguments);if(t[r])return t[r];var c=l*u,h=-f*a,p=f*u,d=l*a,v=.5*(o-s),m=8/3*Math.sin(v*.5)*Math.sin(v*.5)/Math.sin(v),g=e+Math.cos(s)-m*Math.sin(s),y=i+Math.sin(s)+m*Math.cos(s),b=e+Math.cos(o),w=i+Math.sin(o),E=b+m*Math.sin(o),S=w-m*Math.cos(o);return t[r]=[c*g+h*y,p*g+d*y,c*E+h*S,p*E+d*S,c*b+h*w,p*b+d*w],t[r]}var e={},t={},n=Array.prototype.join,r;fabric.util.drawArc=function(e,t,n,r){var s=r[0],u=r[1],a=r[2],f=r[3],l=r[4],c=r[5],h=r[6],p=i(c,h,s,u,f,l,a,t,n);for(var d=0;d=t})}function r(e,t){return i(e,t,function(e,t){return e>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(t){var n=this.constructor.superclass.prototype[t];return arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this)}function o(){function u(){this.initialize.apply(this,arguments)}var n=null,o=e.call(arguments,0);typeof o[0]=="function"&&(n=o.shift()),u.superclass=n,u.subclasses=[],n&&(i.prototype=n.prototype,u.prototype=new i,n.subclasses.push(u));for(var a=0,f=o.length;a-1?e.prototype[i]=function(e){return function(){var n=this.constructor.superclass;this.constructor.superclass=r;var i=t[e].apply(this,arguments);this.constructor.superclass=n;if(e!=="initialize")return i}}(i):e.prototype[i]=t[i],n&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};fabric.util.createClass=o}(),function(){function t(e){var t=Array.prototype.slice.call(arguments,1),n,r,i=t.length;for(r=0;r-1?s(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if(r==="opacity")s(e,t[r]);else{var i=r==="float"||r==="cssFloat"?typeof n.styleFloat=="undefined"?"cssFloat":"styleFloat":r;n[i]=t[r]}return e}var t=fabric.document.createElement("div"),n=typeof t.style.opacity=="string",r=typeof t.style.filter=="string",i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(e){return e};n?s=function(e,t){return e.style.opacity=t,e}:r&&(s=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+t*100+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+t*100+")",e}),fabric.util.setStyle=e}(),function(){function t(e){return typeof e=="string"?fabric.document.getElementById(e):e}function s(e,t){var n=fabric.document.createElement(e);for(var r in t)r==="class"?n.className=t[r]:r==="for"?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function o(e,t){(" "+e.className+" ").indexOf(" "+t+" ")===-1&&(e.className+=(e.className?" ":"")+t)}function u(e,t,n){return typeof t=="string"&&(t=s(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t}function a(e,t){var n,r,i=0,s=0,o=fabric.document.documentElement,u=fabric.document.body||{scrollLeft:0,scrollTop:0};r=e;while(e&&e.parentNode&&!n)e=e.parentNode,e!==fabric.document&&fabric.util.getElementStyle(e,"position")==="fixed"&&(n=e),e!==fabric.document&&r!==t&&fabric.util.getElementStyle(e,"position")==="absolute"?(i=0,s=0):e===fabric.document?(i=u.scrollLeft||o.scrollLeft||0,s=u.scrollTop||o.scrollTop||0):(i+=e.scrollLeft||0,s+=e.scrollTop||0);return{left:i,top:s}}function f(e){var t,n={left:0,top:0},r=e&&e.ownerDocument,i={left:0,top:0},s,o={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!r)return{left:0,top:0};for(var u in o)i[o[u]]+=parseInt(l(e,u),10)||0;return t=r.documentElement,typeof e.getBoundingClientRect!="undefined"&&(n=e.getBoundingClientRect()),s=fabric.util.getScrollLeftTop(e,null),{left:n.left+s.left-(t.clientLeft||0)+i.left,top:n.top+s.top-(t.clientTop||0)+i.top}}function l(e,t){e.style||(e.style={});if(fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle)return fabric.document.defaultView.getComputedStyle(e,null)[t];var n=e.style[t];return!n&&e.currentStyle&&(n=e.currentStyle[t]),n}var e=Array.prototype.slice,n=function(t){return e.call(t,0)},r;try{r=n(fabric.document.childNodes)instanceof Array}catch(i){}r||(n=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t}),function(){function n(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=fabric.util.falseFunction),t?e.style[t]="none":typeof e.unselectable=="string"&&(e.unselectable="on"),e}function r(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=null),t?e.style[t]="":typeof e.unselectable=="string"&&(e.unselectable=""),e}var e=fabric.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=n,fabric.util.makeElementSelectable=r}(),function(){function e(e,t){var n=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),i=!0;r.onload=r.onreadystatechange=function(e){if(i){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;i=!1,t(e||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=e,n.appendChild(r)}fabric.util.getScript=e}(),fabric.util.getById=t,fabric.util.toArray=n,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getScrollLeftTop=a,fabric.util.getElementOffset=f,fabric.util.getElementStyle=l}(),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}(),fabric.log=function(){},fabric.warn=function(){},typeof console!="undefined"&&["log","warn"].forEach(function(e){typeof console[e]!="undefined"&&console[e].apply&&(fabric[e]=function(){return console[e].apply(console,arguments)})}),function(){function e(e){n(function(t){e||(e={});var r=t||+(new Date),i=e.duration||500,s=r+i,o,u=e.onChange||function(){},a=e.abort||function(){return!1},f=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},l="startValue"in e?e.startValue:0,c="endValue"in e?e.endValue:100,h=e.byValue||c-l;e.onStart&&e.onStart(),function p(t){o=t||+(new Date);var c=o>s?i:o-r;if(a()){e.onComplete&&e.onComplete();return}u(f(c,l,h,i));if(o>s){e.onComplete&&e.onComplete();return}n(p)}(r)})}var t=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)},n=function(){return t.apply(fabric.window,arguments)};fabric.util.animate=e,fabric.util.requestAnimFrame=n}(),function(){function e(e,t,n,r){return e','')}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s=t.util.toFixed,o=t.util.multiplyTransformMatrices,u={"fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight",cx:"left",x:"left",r:"radius","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration",cy:"top",y:"top",transform:"transformMatrix"},a={stroke:"strokeOpacity",fill:"fillOpacity"};t.parseTransformAttribute=function(){function e(e,t){var n=t[0];e[0]=Math.cos(n),e[1]=Math.sin(n),e[2]=-Math.sin(n),e[3]=Math.cos(n)}function n(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function r(e,t){e[2]=t[0]}function i(e,t){e[1]=t[0]}function s(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var o=[1,0,0,1,0,0],u="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",a="(?:\\s+,?\\s*|,\\s*)",f="(?:(skewX)\\s*\\(\\s*("+u+")\\s*\\))",l="(?:(skewY)\\s*\\(\\s*("+u+")\\s*\\))",c="(?:(rotate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+")"+a+"("+u+"))?\\s*\\))",h="(?:(scale)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",p="(?:(translate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",d="(?:(matrix)\\s*\\(\\s*("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+"\\s*\\))",v="(?:"+d+"|"+p+"|"+h+"|"+c+"|"+f+"|"+l+")",m="(?:"+v+"(?:"+a+v+")*"+")",g="^\\s*(?:"+m+"?)\\s*$",y=new RegExp(g),b=new RegExp(v,"g");return function(u){var a=o.concat(),f=[];if(!u||u&&!y.test(u))return a;u.replace(b,function(t){var u=(new RegExp(v)).exec(t).filter(function(e){return e!==""&&e!=null}),l=u[1],c=u.slice(2).map(parseFloat);switch(l){case"translate":s(a,c);break;case"rotate":e(a,c);break;case"scale":n(a,c);break;case"skewX":r(a,c);break;case"skewY":i(a,c);break;case"matrix":a=c}f.push(a.concat()),a=o.concat()});var l=f[0];while(f.length>1)f.shift(),l=t.util.multiplyTransformMatrices(l,f[0]);return l}}(),t.parseSVGDocument=function(){function s(e,t){while(e&&(e=e.parentNode))if(t.test(e.nodeName))return!0;return!1}var e=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/,n="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",r=new RegExp("^\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*"+"$");return function(n,o,u){if(!n)return;var a=new Date,f=t.util.toArray(n.getElementsByTagName("*"));if(f.length===0){f=n.selectNodes("//*[name(.)!='svg']");var l=[];for(var c=0,h=f.length;c-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s||!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){m.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),m.has(e,function(r){r?m.get(e,function(e){var t=g(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})},loadSVGFromString:function(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)},createSVGFontFacesMarkup:function(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t},createSVGRefElementsMarkup:function(e){var t=[];return y(t,e,"backgroundColor"),y(t,e,"overlayColor"),t.join("")}})}(typeof exports!="undefined"?exports:this),fabric.ElementsParser={parse:function(e,t,n,r){this.elements=e,this.callback=t,this.options=n,this.reviver=r,this.instances=new Array(e.length),this.numElements=e.length,this.createObjects()},createObjects:function(){for(var e=0,t=this.elements.length;e"),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined",fabric.SHARED_ATTRIBUTES=["transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width"],function(){function e(e,t){if(!this.__eventListeners[e])return;t?fabric.util.removeFromArray(this.__eventListeners[e],t):this.__eventListeners[e].length=0}function t(e,t){this.__eventListeners||(this.__eventListeners={});if(arguments.length===1)for(var n in e)this.on(n,e[n]);else this.__eventListeners[e]||(this.__eventListeners[e]=[]),this.__eventListeners[e].push(t);return this}function n(t,n){if(!this.__eventListeners)return;if(arguments.length===0)this.__eventListeners={};else if(arguments.length===1&&typeof arguments[0]=="object")for(var r in t)e.call(this,r,t[r]);else e.call(this,t,n);return this}function r(e,t){if(!this.__eventListeners)return;var n=this.__eventListeners[e];if(!n)return;for(var r=0,i=n.length;r-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)}},function(e){var t=Math.sqrt,n=Math.atan2,r=Math.PI/180;fabric.util={removeFromArray:function(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e},getRandomInt:function(e,t){return Math.floor(Math.random()*(t-e+1))+e},degreesToRadians:function(e){return e*r},radiansToDegrees:function(e){return e/r},rotatePoint:function(e,t,n){var r=Math.sin(n),i=Math.cos(n);e.subtractEquals(t);var s=e.x*i-e.y*r,o=e.x*r+e.y*i;return(new fabric.Point(s,o)).addEquals(t)},toFixed:function(e,t){return parseFloat(Number(e).toFixed(t))},falseFunction:function(){return!1},getKlass:function(e,t){return e=fabric.util.string.camelize(e.charAt(0).toUpperCase()+e.slice(1)),fabric.util.resolveNamespace(t)[e]},resolveNamespace:function(t){if(!t)return fabric;var n=t.split("."),r=n.length,i=e||fabric.window;for(var s=0;s1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r},populateWithProperties:function(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),e[d?"lineTo":"moveTo"](r,0),d=!d;e.restore()},createCanvasElement:function(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e},createImage:function(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")},createAccessors:function(e){var t=e.prototype;for(var n=t.stateProperties.length;n--;){var r=t.stateProperties[n],i=r.charAt(0).toUpperCase()+r.slice(1),s="set"+i,o="get"+i;t[o]||(t[o]=function(e){return new Function('return this.get("'+e+'")')}(r)),t[s]||(t[s]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(r))}},clipContext:function(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()},multiplyTransformMatrices:function(e,t){var n=[[e[0],e[2],e[4]],[e[1],e[3],e[5]],[0,0,1]],r=[[t[0],t[2],t[4]],[t[1],t[3],t[5]],[0,0,1]],i=[];for(var s=0;s<3;s++){i[s]=[];for(var o=0;o<3;o++){var u=0;for(var a=0;a<3;a++)u+=n[s][a]*r[a][o];i[s][o]=u}}return[i[0][0],i[1][0],i[0][1],i[1][1],i[0][2],i[1][2]]},getFunctionBody:function(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]},normalizePoints:function(e,t){var n=fabric.util.array.min(e,"x"),r=fabric.util.array.min(e,"y");n=n<0?n:0,r=n<0?r:0;for(var i=0,s=e.length;i0&&(t>r?t-=r:t=0,n>r?n-=r:n=0);var i=!0,s=e.getImageData(t,n,r*2||1,r*2||1);for(var o=3,u=s.data.length;o0&&f===0&&(E-=2*Math.PI);var S=Math.ceil(Math.abs(E/(Math.PI*.5+.001))),x=[];for(var T=0;T1&&(h=Math.sqrt(h),t*=h,n*=h);var p=f/t,d=a/t,v=-a/n,m=f/n;return{x0:p*r+d*i,y0:v*r+m*i,x1:p*s+d*o,y1:v*s+m*o,sin_th:a,cos_th:f}}function o(e,i,s,o,u,a,f,l){r=n.call(arguments);if(t[r])return t[r];var c=l*u,h=-f*a,p=f*u,d=l*a,v=.5*(o-s),m=8/3*Math.sin(v*.5)*Math.sin(v*.5)/Math.sin(v),g=e+Math.cos(s)-m*Math.sin(s),y=i+Math.sin(s)+m*Math.cos(s),b=e+Math.cos(o),w=i+Math.sin(o),E=b+m*Math.sin(o),S=w-m*Math.cos(o);return t[r]=[c*g+h*y,p*g+d*y,c*E+h*S,p*E+d*S,c*b+h*w,p*b+d*w],t[r]}var e={},t={},n=Array.prototype.join,r;fabric.util.drawArc=function(e,t,n,r){var s=r[0],u=r[1],a=r[2],f=r[3],l=r[4],c=r[5],h=r[6],p=i(c,h,s,u,f,l,a,t,n);for(var d=0;d=t})}function r(e,t){return i(e,t,function(e,t){return e>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(t){var n=this.constructor.superclass.prototype[t];return arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this)}function o(){function u(){this.initialize.apply(this,arguments)}var n=null,o=e.call(arguments,0);typeof o[0]=="function"&&(n=o.shift()),u.superclass=n,u.subclasses=[],n&&(i.prototype=n.prototype,u.prototype=new i,n.subclasses.push(u));for(var a=0,f=o.length;a-1?e.prototype[i]=function(e){return function(){var n=this.constructor.superclass;this.constructor.superclass=r;var i=t[e].apply(this,arguments);this.constructor.superclass=n;if(e!=="initialize")return i}}(i):e.prototype[i]=t[i],n&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};fabric.util.createClass=o}(),function(){function t(e){var t=Array.prototype.slice.call(arguments,1),n,r,i=t.length;for(r=0;r-1?s(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if(r==="opacity")s(e,t[r]);else{var i=r==="float"||r==="cssFloat"?typeof n.styleFloat=="undefined"?"cssFloat":"styleFloat":r;n[i]=t[r]}return e}var t=fabric.document.createElement("div"),n=typeof t.style.opacity=="string",r=typeof t.style.filter=="string",i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(e){return e};n?s=function(e,t){return e.style.opacity=t,e}:r&&(s=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+t*100+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+t*100+")",e}),fabric.util.setStyle=e}(),function(){function t(e){return typeof e=="string"?fabric.document.getElementById(e):e}function s(e,t){var n=fabric.document.createElement(e);for(var r in t)r==="class"?n.className=t[r]:r==="for"?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function o(e,t){(" "+e.className+" ").indexOf(" "+t+" ")===-1&&(e.className+=(e.className?" ":"")+t)}function u(e,t,n){return typeof t=="string"&&(t=s(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t}function a(e,t){var n,r,i=0,s=0,o=fabric.document.documentElement,u=fabric.document.body||{scrollLeft:0,scrollTop:0};r=e;while(e&&e.parentNode&&!n)e=e.parentNode,e!==fabric.document&&fabric.util.getElementStyle(e,"position")==="fixed"&&(n=e),e!==fabric.document&&r!==t&&fabric.util.getElementStyle(e,"position")==="absolute"?(i=0,s=0):e===fabric.document?(i=u.scrollLeft||o.scrollLeft||0,s=u.scrollTop||o.scrollTop||0):(i+=e.scrollLeft||0,s+=e.scrollTop||0);return{left:i,top:s}}function f(e){var t,n={left:0,top:0},r=e&&e.ownerDocument,i={left:0,top:0},s,o={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!r)return{left:0,top:0};for(var u in o)i[o[u]]+=parseInt(l(e,u),10)||0;return t=r.documentElement,typeof e.getBoundingClientRect!="undefined"&&(n=e.getBoundingClientRect()),s=fabric.util.getScrollLeftTop(e,null),{left:n.left+s.left-(t.clientLeft||0)+i.left,top:n.top+s.top-(t.clientTop||0)+i.top}}function l(e,t){e.style||(e.style={});if(fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle)return fabric.document.defaultView.getComputedStyle(e,null)[t];var n=e.style[t];return!n&&e.currentStyle&&(n=e.currentStyle[t]),n}var e=Array.prototype.slice,n=function(t){return e.call(t,0)},r;try{r=n(fabric.document.childNodes)instanceof Array}catch(i){}r||(n=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t}),function(){function n(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=fabric.util.falseFunction),t?e.style[t]="none":typeof e.unselectable=="string"&&(e.unselectable="on"),e}function r(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=null),t?e.style[t]="":typeof e.unselectable=="string"&&(e.unselectable=""),e}var e=fabric.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=n,fabric.util.makeElementSelectable=r}(),function(){function e(e,t){var n=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),i=!0;r.onload=r.onreadystatechange=function(e){if(i){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;i=!1,t(e||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=e,n.appendChild(r)}fabric.util.getScript=e}(),fabric.util.getById=t,fabric.util.toArray=n,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getScrollLeftTop=a,fabric.util.getElementOffset=f,fabric.util.getElementStyle=l}(),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}(),fabric.log=function(){},fabric.warn=function(){},typeof console!="undefined"&&["log","warn"].forEach(function(e){typeof console[e]!="undefined"&&console[e].apply&&(fabric[e]=function(){return console[e].apply(console,arguments)})}),function(){function e(e){n(function(t){e||(e={});var r=t||+(new Date),i=e.duration||500,s=r+i,o,u=e.onChange||function(){},a=e.abort||function(){return!1},f=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},l="startValue"in e?e.startValue:0,c="endValue"in e?e.endValue:100,h=e.byValue||c-l;e.onStart&&e.onStart(),function p(t){o=t||+(new Date);var c=o>s?i:o-r;if(a()){e.onComplete&&e.onComplete();return}u(f(c,l,h,i));if(o>s){e.onComplete&&e.onComplete();return}n(p)}(r)})}var t=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)},n=function(){return t.apply(fabric.window,arguments)};fabric.util.animate=e,fabric.util.requestAnimFrame=n}(),function(){function e(e,t,n,r){return e','')}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s=t.util.toFixed,o=t.util.multiplyTransformMatrices,u={"fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight",cx:"left",x:"left",r:"radius","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration",cy:"top",y:"top",transform:"transformMatrix"},a={stroke:"strokeOpacity",fill:"fillOpacity"};t.parseTransformAttribute=function(){function e(e,t){var n=t[0];e[0]=Math.cos(n),e[1]=Math.sin(n),e[2]=-Math.sin(n),e[3]=Math.cos(n)}function n(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function r(e,t){e[2]=t[0]}function i(e,t){e[1]=t[0]}function s(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var o=[1,0,0,1,0,0],u="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",a="(?:\\s+,?\\s*|,\\s*)",f="(?:(skewX)\\s*\\(\\s*("+u+")\\s*\\))",l="(?:(skewY)\\s*\\(\\s*("+u+")\\s*\\))",c="(?:(rotate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+")"+a+"("+u+"))?\\s*\\))",h="(?:(scale)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",p="(?:(translate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",d="(?:(matrix)\\s*\\(\\s*("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+"\\s*\\))",v="(?:"+d+"|"+p+"|"+h+"|"+c+"|"+f+"|"+l+")",m="(?:"+v+"(?:"+a+v+")*"+")",g="^\\s*(?:"+m+"?)\\s*$",y=new RegExp(g),b=new RegExp(v,"g");return function(u){var a=o.concat(),f=[];if(!u||u&&!y.test(u))return a;u.replace(b,function(t){var u=(new RegExp(v)).exec(t).filter(function(e){return e!==""&&e!=null}),l=u[1],c=u.slice(2).map(parseFloat);switch(l){case"translate":s(a,c);break;case"rotate":e(a,c);break;case"scale":n(a,c);break;case"skewX":r(a,c);break;case"skewY":i(a,c);break;case"matrix":a=c}f.push(a.concat()),a=o.concat()});var l=f[0];while(f.length>1)f.shift(),l=t.util.multiplyTransformMatrices(l,f[0]);return l}}(),t.parseSVGDocument=function(){function s(e,t){while(e&&(e=e.parentNode))if(t.test(e.nodeName))return!0;return!1}var e=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/,n="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",r=new RegExp("^\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*"+"$");return function(n,o,u){if(!n)return;var a=new Date,f=t.util.toArray(n.getElementsByTagName("*"));if(f.length===0){f=n.selectNodes("//*[name(.)!='svg']");var l=[];for(var c=0,h=f.length;c-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s||!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){m.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),m.has(e,function(r){r?m.get(e,function(e){var t=g(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})},loadSVGFromString:function(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)},createSVGFontFacesMarkup:function(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t},createSVGRefElementsMarkup:function(e){var t=[];return y(t,e,"backgroundColor"),y(t,e,"overlayColor"),t.join("")}})}(typeof exports!="undefined"?exports:this),fabric.ElementsParser={parse:function(e,t,n,r){this.elements=e,this.callback=t,this.options=n,this.reviver=r,this.instances=new Array(e.length),this.numElements=e.length,this.createObjects()},createObjects:function(){for(var e=0,t=this.elements.length;ee.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,t){return new n(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},distanceFrom:function(e){var t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)},midPointFrom:function(e){return new n(this.x+(e.x-this.x)/2,this.y+(e.y-this.y)/2)},min:function(e){return new n(Math.min(this.x,e.x),Math.min(this.y,e.y))},max:function(e){return new n(Math.max(this.x,e.x),Math.max(this.y,e.y))},toString:function(){return this.x+","+this.y},setXY:function(e,t){this.x=e,this.y=t},setFromPoint:function(e){this.x=e.x,this.y=e.y},swap:function(e){var t=this.x,n=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=n}}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){this.status=e,this.points=[]}var t=e.fabric||(e.fabric={});if(t.Intersection){t.warn("fabric.Intersection is already defined");return}t.Intersection=n,t.Intersection.prototype={appendPoint:function(e){this.points.push(e)},appendPoints:function(e){this.points=this.points.concat(e)}},t.Intersection.intersectLineLine=function(e,r,i,s){var o,u=(s.x-i.x)*(e.y-i.y)-(s.y-i.y)*(e.x-i.x),a=(r.x-e.x)*(e.y-i.y)-(r.y-e.y)*(e.x-i.x),f=(s.y-i.y)*(r.x-e.x)-(s.x-i.x)*(r.y-e.y);if(f!==0){var l=u/f,c=a/f;0<=l&&l<=1&&0<=c&&c<=1?(o=new n("Intersection"),o.points.push(new t.Point(e.x+l*(r.x-e.x),e.y+l*(r.y-e.y)))):o=new n}else u===0||a===0?o=new n("Coincident"):o=new n("Parallel");return o},t.Intersection.intersectLinePolygon=function(e,t,r){var i=new n,s=r.length;for(var o=0;o0&&(i.status="Intersection"),i},t.Intersection.intersectPolygonPolygon=function(e,t){var r=new n,i=e.length;for(var s=0;s0&&(r.status="Intersection"),r},t.Intersection.intersectPolygonRectangle=function(e,r,i){var s=r.min(i),o=r.max(i),u=new t.Point(o.x,s.y),a=new t.Point(s.x,o.y),f=n.intersectLinePolygon(s,u,e),l=n.intersectLinePolygon(u,o,e),c=n.intersectLinePolygon(o,a,e),h=n.intersectLinePolygon(a,s,e),p=new n;return p.appendPoints(f.points),p.appendPoints(l.points),p.appendPoints(c.points),p.appendPoints(h.points),p.points.length>0&&(p.status="Intersection"),p}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){e?this._tryParsingColor(e):this.setSource([0,0,0,1])}function r(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var t=e.fabric||(e.fabric={});if(t.Color){t.warn("fabric.Color is already defined.");return}t.Color=n,t.Color.prototype={_tryParsingColor:function(e){var t;e in n.colorNameMap&&(e=n.colorNameMap[e]),t=n.sourceFromHex(e),t||(t=n.sourceFromRgb(e)),t||(t=n.sourceFromHsl(e)),t&&this.setSource(t)},_rgbToHsl:function(e,n,r){e/=255,n/=255,r/=255;var i,s,o,u=t.util.array.max([e,n,r]),a=t.util.array.min([e,n,r]);o=(u+a)/2;if(u===a)i=s=0;else{var f=u-a;s=o>.5?f/(2-u-a):f/(u+a);switch(u){case e:i=(n-r)/f+(n']:this.type==="radial"&&(r=["']);for(var i=0;i');return r.push(this.type==="linear"?"":""),r.join("")},toLive:function(e){var t;if(!this.type)return;this.type==="linear"?t=e.createLinearGradient(this.coords.x1,this.coords.y1,this.coords.x2,this.coords.y2):this.type==="radial"&&(t=e.createRadialGradient(this.coords.x1,this.coords.y1,this.coords.r1,this.coords.x2,this.coords.y2,this.coords.r2));for(var n=0,r=this.colorStops.length;n'+''+""},toLive:function(e){var t=typeof this.source=="function"?this.source():this.source;if(typeof t.src!="undefined"){if(!t.complete)return"";if(t.naturalWidth===0||t.naturalHeight===0)return""}return e.createPattern(t,this.repeat)}}),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Shadow){t.warn("fabric.Shadow is already defined.");return}t.Shadow=t.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,initialize:function(e){typeof e=="string"&&(e=this._parseShadow(e));for(var n in e)this[n]=e[n];this.id=t.Object.__uid++},_parseShadow:function(e){var n=e.trim(),r=t.Shadow.reOffsetsAndBlur.exec(n)||[],i=n.replace(t.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)";return{color:i.trim(),offsetX:parseInt(r[1],10)||0,offsetY:parseInt(r[2],10)||0,blur:parseInt(r[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(e){var t="SourceAlpha";return e&&(e.fill===this.color||e.stroke===this.color)&&(t="SourceGraphic"),''+''+''+""+""+''+""+""},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY};var e={},n=t.Shadow.prototype;return this.color!==n.color&&(e.color=this.color),this.blur!==n.blur&&(e.blur=this.blur),this.offsetX!==n.offsetX&&(e.offsetX=this.offsetX),this.offsetY!==n.offsetY&&(e.offsetY=this.offsetY),e}}),t.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/}(typeof exports!="undefined"?exports:this),function(){"use strict";if(fabric.StaticCanvas){fabric.warn("fabric.StaticCanvas is already defined.");return}var e=fabric.util.object.extend,t=fabric.util.getElementOffset,n=fabric.util.removeFromArray,r=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass({initialize:function(e,t){t||(t={}),this._initStatic(e,t),fabric.StaticCanvas.activeInstance=this},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!0,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!1,onBeforeScaleRotate:function(){},_initStatic:function(e,t){this._objects=[],this._createLowerCanvas(e),this._initOptions(t),t.overlayImage&&this.setOverlayImage(t.overlayImage,this.renderAll.bind(this)),t.backgroundImage&&this.setBackgroundImage(t.backgroundImage,this.renderAll.bind(this)),t.backgroundColor&&this.setBackgroundColor(t.backgroundColor,this.renderAll.bind(this)),t.overlayColor&&this.setOverlayColor(t.overlayColor,this.renderAll.bind(this)),this.calcOffset()},calcOffset:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(e,t,n){return this.__setBgOverlayImage("overlayImage",e,t,n)},setBackgroundImage:function(e,t,n){return this.__setBgOverlayImage("backgroundImage",e,t,n)},setOverlayColor:function(e,t){return this.__setBgOverlayColor("overlayColor",e,t)},setBackgroundColor:function(e,t){return this.__setBgOverlayColor("backgroundColor",e,t)},__setBgOverlayImage:function(e,t,n,r){return typeof t=="string"?fabric.util.loadImage(t,function(t){this[e]=new fabric.Image(t,r),n&&n()},this):(this[e]=t,n&&n()),this},__setBgOverlayColor:function(e,t,n){if(t.source){var r=this;fabric.util.loadImage(t.source,function(i){r[e]=new fabric.Pattern({source:i,repeat:t.repeat,offsetX:t.offsetX,offsetY:t.offsetY}),n&&n()})}else this[e]=t,n&&n();return this},_createCanvasElement:function(){var e=fabric.document.createElement("canvas");e.style||(e.style={});if(!e)throw r;return this._initCanvasElement(e),e},_initCanvasElement:function(e){fabric.util.createCanvasElement(e);if(typeof e.getContext=="undefined")throw r},_initOptions:function(e){for(var t in e)this[t]=e[t];this.width=this.width||parseInt(this.lowerCanvasEl.width,10)||0,this.height=this.height||parseInt(this.lowerCanvasEl.height,10)||0;if(!this.lowerCanvasEl.style)return;this.lowerCanvasEl.width=this.width,this.lowerCanvasEl.height=this.height,this.lowerCanvasEl.style.width=this.width+"px",this.lowerCanvasEl.style.height=this.height+"px"},_createLowerCanvas:function(e){this.lowerCanvasEl=fabric.util.getById(e)||this._createCanvasElement(),this._initCanvasElement(this.lowerCanvasEl),fabric.util.addClass(this.lowerCanvasEl,"lower-canvas"),this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(e){return this._setDimension("width",e)},setHeight:function(e){return this._setDimension("height",e)},setDimensions:function(e){for(var t in e)this._setDimension(t,e[t]);return this},_setDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.lowerCanvasEl.style[e]=t+"px",this.upperCanvasEl&&(this.upperCanvasEl[e]=t,this.upperCanvasEl.style[e]=t+"px"),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t+"px"),this[e]=t,this.calcOffset(),this.renderAll(),this},getElement:function(){return this.lowerCanvasEl},getActiveObject:function(){return null},getActiveGroup:function(){return null},_draw:function(e,t){if(!t)return;if(this.controlsAboveOverlay){var n=t.hasBorders,r=t.hasControls;t.hasBorders=t.hasControls=!1,t.render(e),t.hasBorders=n,t.hasControls=r}else t.render(e)},_onObjectAdded:function(e){this.stateful&&e.setupState(),e.setCoords(),e.canvas=this,this.fire("object:added",{target:e}),e.fire("added")},_onObjectRemoved:function(e){this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this._discardActiveObject(),this.fire("selection:cleared")),this.fire("object:removed",{target:e}),e.fire("removed")},clearContext:function(e){return e.clearRect(0,0,this.width,this.height),this},getContext:function(){return this.contextContainer},clear:function(){return this._objects.length=0,this.discardActiveGroup&&this.discardActiveGroup(),this.discardActiveObject&&this.discardActiveObject(),this.clearContext(this.contextContainer),this.contextTop&&this.clearContext(this.contextTop),this.fire("canvas:cleared"),this.renderAll(),this},renderAll:function(e){var t=this[e===!0&&this.interactive?"contextTop":"contextContainer"],n=this.getActiveGroup();return this.contextTop&&this.selection&&!this._groupSelector&&this.clearContext(this.contextTop),e||this.clearContext(t),this.fire("before:render"),this.clipTo&&fabric.util.clipContext(this,t),this._renderBackground(t),this._renderObjects(t,n),this._renderActiveGroup(t,n),this.clipTo&&t.restore(),this._renderOverlay(t),this.controlsAboveOverlay&&this.interactive&&this.drawControls(t),this.fire("after:render"),this},_renderObjects:function(e,t){var n,r;if(!t)for(n=0,r=this._objects.length;n"),n.join("")},_setSVGPreamble:function(e,t){t.suppressPreamble||e.push('','\n')},_setSVGHeader:function(e,t){e.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),"")},_setSVGObjects:function(e,t){var n=this.getActiveGroup();n&&this.discardActiveGroup();for(var r=0,i=this.getObjects(),s=i.length;r"):this[t]&&t==="overlayColor"&&e.push('")},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e,t){var r=this._objects.indexOf(e);if(r!==0){var i=this._findNewLowerIndex(e,r,t);n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},_findNewLowerIndex:function(e,t,n){var r;if(n){r=t;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}}}else r=t-1;return r},bringForward:function(e,t){var r=this._objects.indexOf(e);if(r!==this._objects.length-1){var i=this._findNewUpperIndex(e,r,t);n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},_findNewUpperIndex:function(e,t,n){var r;if(n){r=t;for(var i=t+1;i"}}),e(fabric.StaticCanvas.prototype,fabric.Observable),e(fabric.StaticCanvas.prototype,fabric.Collection),e(fabric.StaticCanvas.prototype,fabric.DataURLExporter),e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(e){var t=fabric.util.createCanvasElement();if(!t||!t.getContext)return null;var n=t.getContext("2d");if(!n)return null;switch(e){case"getImageData":return typeof n.getImageData!="undefined";case"setLineDash":return typeof n.setLineDash!="undefined";case"toDataURL":return typeof t.toDataURL!="undefined";case"toDataURLWithQuality":try{return t.toDataURL("image/jpeg",0),!0}catch(r){}return!1;default:return null}}}),fabric.StaticCanvas.prototype.toJSON=fabric.StaticCanvas.prototype.toObject}(),fabric.BaseBrush=fabric.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",setShadow:function(e){return this.shadow=new fabric.Shadow(e),this},_setBrushStyles:function(){var e=this.canvas.contextTop;e.strokeStyle=this.color,e.lineWidth=this.width,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin},_setShadow:function(){if(!this.shadow)return;var e=this.canvas.contextTop;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_resetShadow:function(){var e=this.canvas.contextTop;e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0}}),function(){var e=fabric.util.array.min,t=fabric.util.array.max;fabric.PencilBrush=fabric.util.createClass(fabric.BaseBrush,{initialize:function(e){this.canvas=e,this._points=[]},onMouseDown:function(e){this._prepareForDrawing(e),this._captureDrawingPath(e),this._render()},onMouseMove:function(e){this._captureDrawingPath(e),this.canvas.clearContext(this.canvas.contextTop),this._render()},onMouseUp:function(){this._finalizeAndAddPath()},_prepareForDrawing:function(e){var t=new fabric.Point(e.x,e.y);this._reset(),this._addPoint(t),this.canvas.contextTop.moveTo(t.x,t.y)},_addPoint:function(e){this._points.push(e)},_reset:function(){this._points.length=0,this._setBrushStyles(),this._setShadow()},_captureDrawingPath:function(e){var t=new fabric.Point(e.x,e.y);this._addPoint(t)},_render:function(){var e=this.canvas.contextTop;e.beginPath();var t=this._points[0],n=this._points[1];this._points.length===2&&t.x===n.x&&t.y===n.y&&(t.x-=.5,n.x+=.5),e.moveTo(t.x,t.y);for(var r=1,i=this._points.length;rn.padding?e.x<0?e.x+=n.padding:e.x-=n.padding:e.x=0,i(e.y)>n.padding?e.y<0?e.y+=n.padding:e.y-=n.padding:e.y=0},_rotateObject:function(e,t){var i=this._currentTransform,s=this._offset;if(i.target.get("lockRotation"))return;var o=r(i.ey-i.top-s.top,i.ex-i.left-s.left),u=r(t-i.top-s.top,e-i.left-s.left),a=n(u-o+i.theta);a<0&&(a=360+a),i.target.angle=a},_setCursor:function(e){this.upperCanvasEl.style.cursor=e},_resetObjectTransform:function(e){e.scaleX=1,e.scaleY=1,e.setAngle(0)},_drawSelection:function(){var e=this.contextTop,t=this._groupSelector,n=t.left,r=t.top,o=i(n),u=i(r);e.fillStyle=this.selectionColor,e.fillRect(t.ex-(n>0?0:-n),t.ey-(r>0?0:-r),o,u),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var a=t.ex+s-(n>0?0:o),f=t.ey+s-(r>0?0:u);e.beginPath(),fabric.util.drawDashedLine(e,a,f,a+o,f,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f+u-1,a+o,f+u-1,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f,a,f+u,this.selectionDashArray),fabric.util.drawDashedLine(e,a+o-1,f,a+o-1,f+u,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+s-(n>0?0:o),t.ey+s-(r>0?0:u),o,u)},_isLastRenderedObject:function(e){return this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(e,this._offset)},findTarget:function(e,t){if(this.skipTargetFind)return;if(this._isLastRenderedObject(e))return this.lastRenderedObjectWithControlsAboveOverlay;var n=this.getActiveGroup();if(n&&!t&&this.containsPoint(e,n))return n;var r=this._searchPossibleTargets(e);return this._fireOverOutEvents(r),r},_fireOverOutEvents:function(e){e?this._hoveredTarget!==e&&(this.fire("mouse:over",{target:e}),e.fire("mouseover"),this._hoveredTarget&&(this.fire("mouse:out",{target:this._hoveredTarget}),this._hoveredTarget.fire("mouseout")),this._hoveredTarget=e):this._hoveredTarget&&(this.fire("mouse:out",{target:this._hoveredTarget}),this._hoveredTarget.fire("mouseout"),this._hoveredTarget=null)},_searchPossibleTargets:function(e){var t=[],n,r=this.getPointer(e);for(var i=this._objects.length;i--;)if(this._objects[i]&&this._objects[i].visible&&this._objects[i].evented&&this.containsPoint(e,this._objects[i])){if(!this.perPixelTargetFind&&!this._objects[i].perPixelTargetFind){n=this._objects[i],this.relatedTarget=n;break}t[t.length]=this._objects[i]}for(var s=0,o=t.length;s1&&(t=new fabric.Group(t.reverse(),{originX:"center",originY:"center"}),this.setActiveGroup(t,e),t.saveCoords(),this.fire("selection:created",{target:t}),this.renderAll())},_collectObjects:function(){var n=[],r,i=this._groupSelector.ex,s=this._groupSelector.ey,o=i+this._groupSelector.left,u=s+this._groupSelector.top,a=new fabric.Point(e(i,o),e(s,u)),f=new fabric.Point(t(i,o),t(s,u)),l=i===o&&s===u;for(var c=this._objects.length;c--;){r=this._objects[c];if(!r||!r.selectable||!r.visible)continue;if(r.intersectsWithRect(a,f)||r.isContainedWithinRect(a,f)||r.containsPoint(a)||r.containsPoint(f)){r.set("active",!0),n.push(r);if(l)break}}return n},_maybeGroupObjects:function(e){this.selection&&this._groupSelector&&this._groupSelectedObjects(e);var t=this.getActiveGroup();t&&(t.setObjectsCoords().setCoords(),t.isMoving=!1,this._setCursor(this.defaultCursor)),this._groupSelector=null,this._currentTransform=null}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{toDataURL:function(e){e||(e={});var t=e.format||"png",n=e.quality||1,r=e.multiplier||1,i={left:e.left,top:e.top,width:e.width,height:e.height};return r!==1?this.__toDataURLWithMultiplier(t,n,i,r):this.__toDataURL(t,n,i)},__toDataURL:function(e,t,n){this.renderAll(!0);var r=this.upperCanvasEl||this.lowerCanvasEl,i=this.__getCroppedCanvas(r,n);e==="jpg"&&(e="jpeg");var s=fabric.StaticCanvas.supports("toDataURLWithQuality")?(i||r).toDataURL("image/"+e,t):(i||r).toDataURL("image/"+e);return this.contextTop&&this.clearContext(this.contextTop),this.renderAll(),i&&(i=null),s},__getCroppedCanvas:function(e,t){var n,r,i="left"in t||"top"in t||"width"in t||"height"in t;return i&&(n=fabric.util.createCanvasElement(),r=n.getContext("2d"),n.width=t.width||this.width,n.height=t.height||this.height,r.drawImage(e,-t.left||0,-t.top||0)),n},__toDataURLWithMultiplier:function(e,t,n,r){var i=this.getWidth(),s=this.getHeight(),o=i*r,u=s*r,a=this.getActiveObject(),f=this.getActiveGroup(),l=this.contextTop||this.contextContainer;this.setWidth(o).setHeight(u),l.scale(r,r),n.left&&(n.left*=r),n.top&&(n.top*=r),n.width&&(n.width*=r),n.height&&(n.height*=r),f?this._tempRemoveBordersControlsFromGroup(f):a&&this.deactivateAll&&this.deactivateAll(),this.renderAll(!0);var c=this.__toDataURL(e,t,n);return this.width=i,this.height=s,l.scale(1/r,1/r),this.setWidth(i).setHeight(s),f?this._restoreBordersControlsOnGroup(f):a&&this.setActiveObject&&this.setActiveObject(a),this.contextTop&&this.clearContext(this.contextTop),this.renderAll(),c},toDataURLWithMultiplier:function(e,t,n){return this.toDataURL({format:e,multiplier:t,quality:n})},_tempRemoveBordersControlsFromGroup:function(e){e.origHasControls=e.hasControls,e.origBorderColor=e.borderColor,e.hasControls=!0,e.borderColor="rgba(0,0,0,0)",e.forEachObject(function(e){e.origBorderColor=e.borderColor,e.borderColor="rgba(0,0,0,0)"})},_restoreBordersControlsOnGroup:function(e){e.hideControls=e.origHideControls,e.borderColor=e.origBorderColor,e.forEachObject(function(e){e.borderColor=e.origBorderColor,delete e.origBorderColor})}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{loadFromDatalessJSON:function(e,t,n){return this.loadFromJSON(e,t,n)},loadFromJSON:function(e,t,n){if(!e)return;var r=typeof e=="string"?JSON.parse(e):e;this.clear();var i=this;return this._enlivenObjects(r.objects,function(){i._setBgOverlay(r,t)},n),this},_setBgOverlay:function(e,t){var n=this,r={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(!e.backgroundImage&&!e.overlayImage&&!e.background&&!e.overlay){t&&t();return}var i=function(){r.backgroundImage&&r.overlayImage&&r.backgroundColor&&r.overlayColor&&(n.renderAll(),t&&t())};this.__setBgOverlay("backgroundImage",e.backgroundImage,r,i),this.__setBgOverlay("overlayImage",e.overlayImage,r,i),this.__setBgOverlay("backgroundColor",e.background,r,i),this.__setBgOverlay("overlayColor",e.overlay,r,i),i()},__setBgOverlay:function(e,t,n,r){var i=this;if(!t){n[e]=!0;return}e==="backgroundImage"||e==="overlayImage"?fabric.Image.fromObject(t,function(t){i[e]=t,n[e]=!0,r&&r()}):this["set"+fabric.util.string.capitalize(e,!0)](t,function(){n[e]=!0,r&&r()})},_enlivenObjects:function(e,t,n){var r=this;if(e.length===0){t&&t();return}var i=this.renderOnAddRemove;this.renderOnAddRemove=!1,fabric.util.enlivenObjects(e,function(e){e.forEach(function(e,t){r.insertAt(e,t,!0)}),r.renderOnAddRemove=i,t&&t()},null,n)},_toDataURL:function(e,t){this.clone(function(n){t(n.toDataURL(e))})},_toDataURLWithMultiplier:function(e,t,n){this.clone(function(r){n(r.toDataURLWithMultiplier(e,t))})},clone:function(e,t){var n=JSON.stringify(this.toJSON(t));this.cloneWithoutData(function(t){t.loadFromJSON(n,function(){e&&e(t)})})},cloneWithoutData:function(e){var t=fabric.document.createElement("canvas");t.width=this.getWidth(),t.height=this.getHeight();var n=new fabric.Canvas(t);n.clipTo=this.clipTo,this.backgroundImage?(n.setBackgroundImage(this.backgroundImage.src,function(){n.renderAll(),e&&e(n)}),n.backgroundImageOpacity=this.backgroundImageOpacity,n.backgroundImageStretch=this.backgroundImageStretch):e&&e(n)}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.toFixed,i=t.util.string.capitalize,s=t.util.degreesToRadians,o=t.StaticCanvas.supports("setLineDash");if(t.Object)return;t.Object=t.util.createClass({type:"object",originX:"left",originY:"top",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,opacity:1,angle:0,cornerSize:12,transparentCorners:!0,hoverCursor:null,padding:0,borderColor:"rgba(102,153,255,0.75)",cornerColor:"rgba(102,153,255,0.5)",centeredScaling:!1,centeredRotation:!0,fill:"rgb(0,0,0)",fillRule:"source-over",backgroundColor:"",stroke:null,strokeWidth:1,strokeDashArray:null,strokeLineCap:"butt",strokeLineJoin:"miter",strokeMiterLimit:10,shadow:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,transformMatrix:null,minScaleLimit:.01,selectable:!0,evented:!0,visible:!0,hasControls:!0,hasBorders:!0,hasRotatingPoint:!0,rotatingPointOffset:40,perPixelTargetFind:!1,includeDefaultValues:!0,clipTo:null,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockUniScaling:!1,stateProperties:"top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeLineJoin strokeMiterLimit angle opacity fill fillRule shadow clipTo visible backgroundColor".split(" "),initialize:function(e){e&&this.setOptions(e)},_initGradient:function(e){e.fill&&e.fill.colorStops&&!(e.fill instanceof t.Gradient)&&this.set("fill",new t.Gradient(e.fill))},_initPattern:function(e){e.fill&&e.fill.source&&!(e.fill instanceof t.Pattern)&&this.set("fill",new t.Pattern(e.fill)),e.stroke&&e.stroke.source&&!(e.stroke instanceof t.Pattern)&&this.set("stroke",new t.Pattern(e.stroke))},_initClipping:function(e){if(!e.clipTo||typeof e.clipTo!="string")return;var n=t.util.getFunctionBody(e.clipTo);typeof n!="undefined"&&(this.clipTo=new Function("ctx",n))},setOptions:function(e){for(var t in e)this.set(t,e[t]);this._initGradient(e),this._initPattern(e),this._initClipping(e)},transform:function(e,t){e.globalAlpha=this.opacity;var n=t?this._getLeftTopCoords():this.getCenterPoint();e.translate(n.x,n.y),e.rotate(s(this.angle)),e.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(e){var n=t.Object.NUM_FRACTION_DIGITS,i={type:this.type,originX:this.originX,originY:this.originY,left:r(this.left,n),top:r(this.top,n),width:r(this.width,n),height:r(this.height,n),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:r(this.strokeWidth,n),strokeDashArray:this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeLineJoin:this.strokeLineJoin,strokeMiterLimit:r(this.strokeMiterLimit,n),scaleX:r(this.scaleX,n),scaleY:r(this.scaleY,n),angle:r(this.getAngle(),n),flipX:this.flipX,flipY:this.flipY,opacity:r(this.opacity,n),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,clipTo:this.clipTo&&String(this.clipTo),backgroundColor:this.backgroundColor};return this.includeDefaultValues||(i=this._removeDefaultValues(i)),t.util.populateWithProperties(this,i,e),i},toDatalessObject:function(e){return this.toObject(e)},_removeDefaultValues:function(e){var n=t.util.getKlass(e.type).prototype -,r=n.stateProperties;return r.forEach(function(t){e[t]===n[t]&&delete e[t]}),e},toString:function(){return"#"},get:function(e){return this[e]},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"&&e!=="clipTo"?this._set(e,t(this.get(e))):this._set(e,t);return this},_set:function(e,n){var i=e==="scaleX"||e==="scaleY";return i&&(n=this._constrainScale(n)),e==="scaleX"&&n<0?(this.flipX=!this.flipX,n*=-1):e==="scaleY"&&n<0?(this.flipY=!this.flipY,n*=-1):e==="width"||e==="height"?this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2):e==="shadow"&&n&&!(n instanceof t.Shadow)&&(n=new t.Shadow(n)),this[e]=n,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save(),this._transform(e,n),this._setStrokeStyles(e),this._setFillStyles(e);var r=this.transformMatrix;r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_transform:function(e,t){var n=this.transformMatrix;n&&!this.group&&e.setTransform(n[0],n[1],n[2],n[3],n[4],n[5]),t||this.transform(e)},_setStrokeStyles:function(e){this.stroke&&(e.lineWidth=this.strokeWidth,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,e.strokeStyle=this.stroke.toLive?this.stroke.toLive(e):this.stroke)},_setFillStyles:function(e){this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill)},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){if(!this.shadow)return;e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_renderFill:function(e){if(!this.fill)return;this.fill.toLive&&(e.save(),e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0)),e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke)return;e.save(),this.strokeDashArray?(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),o?(e.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(e)):this._renderDashedStroke&&this._renderDashedStroke(e),e.stroke()):this._stroke?this._stroke(e):e.stroke(),this._removeShadow(e),e.restore()},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){var n=this.toDataURL();return t.util.loadImage(n,function(n){e&&e(new t.Image(n))}),this},toDataURL:function(e){e||(e={});var n=t.util.createCanvasElement(),r=this.getBoundingRect();n.width=r.width,n.height=r.height,t.util.wrapElement(n,"div");var i=new t.Canvas(n);e.format==="jpg"&&(e.format="jpeg"),e.format==="jpeg"&&(i.backgroundColor="#fff");var s={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set("active",!1),this.setPositionByOrigin(new t.Point(n.width/2,n.height/2),"center","center");var o=this.canvas;i.add(this);var u=i.toDataURL(e);return this.set(s).setCoords(),this.canvas=o,i.dispose(),i=null,u},isType:function(e){return this.type===e},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}return this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){return this.set("fill",new t.Pattern(e))},setShadow:function(e){return this.set("shadow",new t.Shadow(e))},setColor:function(e){return this.set("fill",e),this},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.canvas.centerObject(this),this},remove:function(){return this.canvas.remove(this),this},getLocalPointer:function(e,t){t=t||this.canvas.getPointer(e);var n=this.translateToOriginPoint(this.getCenterPoint(),"left","top");return{x:t.x-n.x,y:t.y-n.y}}}),t.util.createAccessors(t.Object),t.Object.prototype.rotate=t.Object.prototype.setAngle,n(t.Object.prototype,t.Observable),t.Object.NUM_FRACTION_DIGITS=2,t.Object.__uid=0}(typeof exports!="undefined"?exports:this),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{translateToCenterPoint:function(t,n,r){var i=t.x,s=t.y,o=this.stroke?this.strokeWidth:0;return n==="left"?i=t.x+(this.getWidth()+o*this.scaleX)/2:n==="right"&&(i=t.x-(this.getWidth()+o*this.scaleX)/2),r==="top"?s=t.y+(this.getHeight()+o*this.scaleY)/2:r==="bottom"&&(s=t.y-(this.getHeight()+o*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},translateToOriginPoint:function(t,n,r){var i=t.x,s=t.y,o=this.stroke?this.strokeWidth:0;return n==="left"?i=t.x-(this.getWidth()+o*this.scaleX)/2:n==="right"&&(i=t.x+(this.getWidth()+o*this.scaleX)/2),r==="top"?s=t.y-(this.getHeight()+o*this.scaleY)/2:r==="bottom"&&(s=t.y+(this.getHeight()+o*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},getCenterPoint:function(){var e=new fabric.Point(this.left,this.top);return this.translateToCenterPoint(e,this.originX,this.originY)},getPointByOrigin:function(e,t){var n=this.getCenterPoint();return this.translateToOriginPoint(n,e,t)},toLocalPoint:function(t,n,r){var i=this.getCenterPoint(),s=this.stroke?this.strokeWidth:0,o,u;return n&&r?(n==="left"?o=i.x-(this.getWidth()+s*this.scaleX)/2:n==="right"?o=i.x+(this.getWidth()+s*this.scaleX)/2:o=i.x,r==="top"?u=i.y-(this.getHeight()+s*this.scaleY)/2:r==="bottom"?u=i.y+(this.getHeight()+s*this.scaleY)/2:u=i.y):(o=this.left,u=this.top),fabric.util.rotatePoint(new fabric.Point(t.x,t.y),i,-e(this.angle)).subtractEquals(new fabric.Point(o,u))},setPositionByOrigin:function(e,t,n){var r=this.translateToCenterPoint(e,t,n),i=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",i.x),this.set("top",i.y)},adjustPosition:function(t){var n=e(this.angle),r=this.getWidth()/2,i=Math.cos(n)*r,s=Math.sin(n)*r,o=this.getWidth(),u=Math.cos(n)*o,a=Math.sin(n)*o;this.originX==="center"&&t==="left"||this.originX==="right"&&t==="center"?(this.left-=i,this.top-=s):this.originX==="left"&&t==="center"||this.originX==="center"&&t==="right"?(this.left+=i,this.top+=s):this.originX==="left"&&t==="right"?(this.left+=u,this.top+=a):this.originX==="right"&&t==="left"&&(this.left-=u,this.top-=a),this.setCoords(),this.originX=t},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","center")}})}(),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{oCoords:null,intersectsWithRect:function(e,t){var n=this.oCoords,r=new fabric.Point(n.tl.x,n.tl.y),i=new fabric.Point(n.tr.x,n.tr.y),s=new fabric.Point(n.bl.x,n.bl.y),o=new fabric.Point(n.br.x,n.br.y),u=fabric.Intersection.intersectPolygonRectangle([r,i,o,s],e,t);return u.status==="Intersection"},intersectsWithObject:function(e){function t(e){return{tl:new fabric.Point(e.tl.x,e.tl.y),tr:new fabric.Point(e.tr.x,e.tr.y),bl:new fabric.Point(e.bl.x,e.bl.y),br:new fabric.Point(e.br.x,e.br.y)}}var n=t(this.oCoords),r=t(e.oCoords),i=fabric.Intersection.intersectPolygonPolygon([n.tl,n.tr,n.br,n.bl],[r.tl,r.tr,r.br,r.bl]);return i.status==="Intersection"},isContainedWithinObject:function(e){var t=e.getBoundingRect(),n=new fabric.Point(t.left,t.top),r=new fabric.Point(t.left+t.width,t.top+t.height);return this.isContainedWithinRect(n,r)},isContainedWithinRect:function(e,t){var n=this.getBoundingRect();return n.left>e.x&&n.left+n.widthe.y&&n.top+n.height=e.y&&f.d.y>=e.y)continue;f.o.x===f.d.x&&f.o.x>=e.x?(o=f.o.x,u=e.y):(n=0,r=(f.d.y-f.o.y)/(f.d.x-f.o.x),i=e.y-n*e.x,s=f.o.y-r*f.o.x,o=-(i-s)/(n-r),u=i+n*o),o>=e.x&&(a+=1);if(a===2)break}return a},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],t=fabric.util.array.min(e),n=fabric.util.array.max(e),r=Math.abs(t-n),i=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],s=fabric.util.array.min(i),o=fabric.util.array.max(i),u=Math.abs(s-o);return{left:t,top:s,width:r,height:u}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(e){return Math.abs(e)1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x:m.x,y:m.y};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords&&this._setCornerCoords(),this}})}(),fabric.util.object.extend(fabric.Object.prototype,{sendToBack:function(){return this.group?fabric.StaticCanvas.prototype.sendToBack.call(this.group,this):this.canvas.sendToBack(this),this},bringToFront:function(){return this.group?fabric.StaticCanvas.prototype.bringToFront.call(this.group,this):this.canvas.bringToFront(this),this},sendBackwards:function(e){return this.group?fabric.StaticCanvas.prototype.sendBackwards.call(this.group,this,e):this.canvas.sendBackwards(this,e),this},bringForward:function(e){return this.group?fabric.StaticCanvas.prototype.bringForward.call(this.group,this,e):this.canvas.bringForward(this,e),this},moveTo:function(e){return this.group?fabric.StaticCanvas.prototype.moveTo.call(this.group,this,e):this.canvas.moveTo(this,e),this}}),fabric.util.object.extend(fabric.Object.prototype,{getSvgStyles:function(){var e=this.fill?this.fill.toLive?"url(#SVGID_"+this.fill.id+")":this.fill:"none",t=this.stroke?this.stroke.toLive?"url(#SVGID_"+this.stroke.id+")":this.stroke:"none",n=this.strokeWidth?this.strokeWidth:"0",r=this.strokeDashArray?this.strokeDashArray.join(" "):"",i=this.strokeLineCap?this.strokeLineCap:"butt",s=this.strokeLineJoin?this.strokeLineJoin:"miter",o=this.strokeMiterLimit?this.strokeMiterLimit:"4",u=typeof this.opacity!="undefined"?this.opacity:"1",a=this.visible?"":" visibility: hidden;",f=this.shadow&&this.type!=="text"?"filter: url(#SVGID_"+this.shadow.id+");":"";return["stroke: ",t,"; ","stroke-width: ",n,"; ","stroke-dasharray: ",r,"; ","stroke-linecap: ",i,"; ","stroke-linejoin: ",s,"; ","stroke-miterlimit: ",o,"; ","fill: ",e,"; ","opacity: ",u,";",f,a].join("")},getSvgTransform:function(){var e=fabric.util.toFixed,t=this.getAngle(),n=this.getCenterPoint(),r=fabric.Object.NUM_FRACTION_DIGITS,i="translate("+e(n.x,r)+" "+e(n.y,r)+")",s=t!==0?" rotate("+e(t,r)+")":"",o=this.scaleX===1&&this.scaleY===1?"":" scale("+e(this.scaleX,r)+" "+e(this.scaleY,r)+")",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("")},_createBaseSVGMarkup:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),this.shadow&&e.push(this.shadow.toSVG(this)),e}}),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this.get(e)!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians,n=typeof G_vmlCanvasManager!="undefined";fabric.util.object.extend(fabric.Object.prototype,{_controlsVisibility:null,_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(!this.isControlVisible(a))continue;if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner),o=this._findCrossPoints({x:i,y:s},u);if(o!==0&&o%2===1)return this.__corner=a,a}return!1},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=~~(this.strokeWidth/2)*2;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)-.5,~~(-(u/2)-t-r/2*this.scaleY)-.5,~~(o+n+r*this.scaleX)+1,~~(u+n+r*this.scaleY)+1);if(this.hasRotatingPoint&&this.isControlVisible("mtr")&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;var t=this.cornerSize,n=t/2,r=~~(this.strokeWidth/2),i=-(this.width/2),s=-(this.height/2),o=this.padding/this.scaleX,u=this.padding/this.scaleY,a=n/this.scaleY,f=n/this.scaleX,l=(n-t)/this.scaleX,c=(n-t)/this.scaleY,h=this.height,p=this.width,d=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,this._drawControl("tl",e,d,i-f-r-o,s-a-r-u),this._drawControl("tr",e,d,i+p-f+r+o,s-a-r-u),this._drawControl("bl",e,d,i-f-r-o,s+h+c+r+u),this._drawControl("br",e,d,i+p+l+r+o,s+h+c+r+u),this.get("lockUniScaling")||(this._drawControl("mt",e,d,i+p/2-f,s-a-r-u),this._drawControl("mb",e,d,i+p/2-f,s+h+c+r+u),this._drawControl("mb",e,d,i+p+l+r+o,s+h/2-a),this._drawControl("ml",e,d,i-f-r-o,s+h/2-a)),this.hasRotatingPoint&&this._drawControl("mtr",e,d,i+p/2-f,this.flipY?s+h+this.rotatingPointOffset/this.scaleY-this.cornerSize/this.scaleX/2+r+u:s-this.rotatingPointOffset/this.scaleY-this.cornerSize/this.scaleY/2-r-u),e.restore(),this},_drawControl:function(e,t,r,i,s){var o=this.cornerSize/this.scaleX,u=this.cornerSize/this.scaleY;this.isControlVisible(e)&&(n||this.transparentCorners||t.clearRect(i,s,o,u),t[r](i,s,o,u))},isControlVisible:function(e){return this._getControlsVisibility()[e]},setControlVisible:function(e,t){return this._getControlsVisibility()[e]=t,this},setControlsVisibility:function(e){e||(e={});for(var t in e)this.setControlVisible(t,e[t]);return this},_getControlsVisibility:function(){return this._controlsVisibility||(this._controlsVisibility={tl:!0,tr:!0,br:!0,bl:!0,ml:!0,mt:!0,mr:!0,mb:!0,mtr:!0}),this._controlsVisibility}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("left"),endValue:this.getCenter().left,duration:this.FX_DURATION,onChange:function(t){e.set("left",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxCenterObjectV:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("top"),endValue:this.getCenter().top,duration:this.FX_DURATION,onChange:function(t){e.set("top",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxRemove:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("opacity"),endValue:0,duration:this.FX_DURATION,onStart:function(){e.set("active",!1)},onChange:function(t){e.set("opacity",t),s.renderAll(),i()},onComplete:function(){s.remove(e),r()}}),this}}),fabric.util.object.extend(fabric.Object.prototype,{animate:function(){if(arguments[0]&&typeof arguments[0]=="object"){var e=[],t,n;for(t in arguments[0])e.push(t);for(var r=0,i=e.length;r'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e)},_set:function(e,t){return this.callSuper("_set",e,t),e==="radius"&&this.setRadius(t),this},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this.stroke&&this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(e){var t=this._createBaseSVGMarkup(),n=this.width/2,r=this.height/2,i=[-n+" "+r,"0 "+ -r,n+" "+r].join(",");return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this._renderFill(e),this._renderStroke(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}var r=t.Object.prototype.stateProperties.concat();r.push("rx","ry","x","y"),t.Rect=t.util.createClass(t.Object,{stateProperties:r,type:"rect",rx:0,ry:0,x:0,y:0,strokeDashArray:null,initialize:function(e){e=e||{},this.callSuper("initialize",e),this._initRxRy(),this.x=e.x||0,this.y=e.y||0},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){if(this.width===1&&this.height===1){e.fillRect(0,0,1,1);return}var t=this.rx||0,n=this.ry||0,r=this.width,i=this.height,s=-r/2,o=-i/2,u=this.group&&this.group.type==="path-group",a=t!==0||n!==0;e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y),e.moveTo(s+t,o),e.lineTo(s+r-t,o),a&&e.quadraticCurveTo(s+r,o,s+r,o+n,s+r,o+n),e.lineTo(s+r,o+i-n),a&&e.quadraticCurveTo(s+r,o+i,s+r-t,o+i,s+r-t,o+i),e.lineTo(s+t,o+i),a&&e.quadraticCurveTo(s,o+i,s,o+i-n,s,o+i-n),e.lineTo(s,o+n),a&&e.quadraticCurveTo(s,o,s+t,o,s+t,o),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){var t=n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,r){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=i(s);var o=new t.Rect(n(r?t.util.object.clone(r):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(e){var t=[],r=this._createBaseSVGMarkup();for(var i=0,s=this.points.length;i'),e?e(r.join("")):r.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'),e?e(n.join("")):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;n"},toObject:function(e){var t=s(this.callSuper("toObject",e),{path:this.path.map(function(e){return e.slice()}),pathOffset:this.pathOffset});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(e){var t=[],n=this._createBaseSVGMarkup();for(var r=0,i=this.path.length;r',"",""),e?e(n.join("")):n.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n=[],r,i,s=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:e[-+]?\d+)?)/ig,o,u;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var r=0,i=t.length;r"),e?e(n.join("")):n.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)},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e,n){typeof e.paths=="string"?t.loadSVGFromURL(e.paths,function(r){var i=e.paths;delete e.paths;var s=t.util.groupSVGElements(r,e,i);n(s)}):t.util.enlivenObjects(e.paths,function(r){delete e.paths,n(new t.PathGroup(r,e))})},t.PathGroup.async=!0}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){this.forEachObject(this._updateObjectCoords,this)},_updateObjectCoords:function(e){var t=e.getLeft(),n=e.getTop();e.set({originalLeft:t,originalTop:n,left:t-this.left,top:n-this.top}),e.setCoords(),e.__origHasControls=e.hasControls,e.hasControls=!1},toString:function(){return"#"},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(this._setObjectActive,this),this._calcBounds(),this._updateObjectsCoords(),this},_setObjectActive:function(e){e.set("active",!0),e.group=this},removeWithUpdate:function(e){return this._moveFlippedObject(e),this._restoreObjectsState(),this.forEachObject(this._setObjectActive,this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e),this.clipTo&&t.util.clipContext(this,e);for(var r=0,i=this._objects.length;r'];for(var n=0,r=this._objects.length;n"),e?e(t.join("")):t.join("")},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','");if(this.stroke||this.strokeDashArray){var n=this.fill;this.fill=null,t.push("'),this.fill=n}return t.push(""),e?e(t.join("")):t.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this._element=this._originalElement,e&&e();return}var t=this._originalElement,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;return n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height,fabric.isLikelyNode?(r.src=n.toBuffer(undefined,fabric.Image.pngCompression),i._element=r,e&&e()):(r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png")),this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e),this._element.crossOrigin=this.crossOrigin},_initFilters:function(e,t){e.filters&&e.filters.length?fabric.util.enlivenObjects(e.filters,function(e){t&&t(e)},"fabric.Image.filters"):t&&t()},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){fabric.Image.prototype._initFilters.call(e,e,function(r){e.filters=r||[];var i=new fabric.Image(n,e);t&&t(i)})},null,e.crossOrigin)},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))},null,n&&n.crossOrigin)},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0,fabric.Image.pngCompression=1}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.BaseFilter=fabric.util.createClass({type:"BaseFilter",toObject:function(){return{type:this.type}},toJSON:function(){return this.toObject()}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend;t.Image.filters.Brightness=t.util.createClass(t.Image.filters.BaseFilter,{type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;sa||C<0||C>u)continue;var k=(N*u+C)*4,L=t[x*i+T];b+=o[k]*L,w+=o[k+1]*L,E+=o[k+2]*L,S+=o[k+3]*L}h[y]=b,h[y+1]=w,h[y+2]=E,h[y+3]=S+p*(255-S)}n.putImageData(c,0,0)},toObject:function(){return n(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),t.Image.filters.Convolute.fromObject=function(e){return new t.Image.filters.Convolute(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend;t.Image.filters.GradientTransparency=t.util.createClass(t.Image.filters.BaseFilter,{type:"GradientTransparency",initialize:function(e){e=e||{},this.threshold=e.threshold||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.threshold,s=r.length;for(var o=0,u=r.length;o-1?e.channel:0},applyTo:function(e){if(!this.mask)return;var n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=r.data,s=this.mask.getElement(),o=t.util.createCanvasElement(),u=this.channel,a,f=r.width*r.height*4;o.width=s.width,o.height=s.height,o.getContext("2d").drawImage(s,0,0,s.width,s.height);var l=o.getContext("2d").getImageData(0,0,s.width,s.height),c=l.data;for(a=0;ao&&f>o&&l>o&&u(a-f)'},_render:function(e){var t=this.group&&this.group.type==="path-group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaNative:function(e){var n=this.text.split(this._reNewline);this.transform(e,t.isLikelyNode),this._setTextStyles(e),this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this.clipTo&&t.util.clipContext(this,e),this._renderTextBackground(e,n),this._translateForTextAlign(e),this._renderText(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this.clipTo&&e.restore(),this._setBoundaries(e,n),this._totalLineHeight=0},_renderText:function(e,t){e.save(),this._setShadow(e),this._renderTextFill(e,t),this._renderTextStroke(e,t),this._removeShadow(e),e.restore()},_translateForTextAlign:function(e){this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0))},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_renderChars:function(e,t,n,r,i){t[e](n,r,i)},_renderTextLine:function(e,t,n,r,i,s){i-=this.fontSize/4;if(this.textAlign!=="justify"){this._renderChars(e,t,n,r,i,s);return}var o=t.measureText(n).width,u=this.width;if(u>o){var a=n.split(/\s+/),f=t.measureText(n.replace(/\s+/g,"")).width,l=u-f,c=a.length-1,h=l/c,p=0;for(var d=0,v=a.length;d-1&&i(this.fontSize*this.lineHeight),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize*this.lineHeight-this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(this.fontSize*this.lineHeight-this.fontSize)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(e,t){if(!this.visible)return;e.save();var n=this.transformMatrix;n&&!this.group&&e.setTransform(n[0],n[1],n[2],n[3],n[4],n[5]),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){var t=n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textAlign:this.textAlign,path:this.path,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=[],n=this.text.split(this._reNewline),r=this._getSVGLeftTopOffsets(n),i=this._getSVGTextAndBg(r.lineTop,r.textLeft,n),s=this._getSVGShadows(r.lineTop,n);return r.textTop+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,this._wrapSVGTextAndBg(t,i,s,r),e?e(t.join("")):t.join("")},_getSVGLeftTopOffsets:function(e){var 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;return{textLeft:n,textTop:r,lineTop:t}},_wrapSVGTextAndBg:function(e,t,n,r){e.push('',t.textBgRects.join(""),"',n.join(""),t.textSpans.join(""),"","")},_getSVGShadows:function(e,n){var r=[],s,o,u=1;if(!this.shadow||!this._boundaries)return r;for(s=0,o=n.length;s",t.util.string.escapeXml(n[s]),""),u=1}else u++;return r},_getSVGTextAndBg:function(e,t,n){var r=[],i=[],s=1;this._setSVGBg(i);for(var o=0,u=n.length;o",t.util.string.escapeXml(e),"")},_setSVGTextLineBg:function(e,t,n,r){e.push("')},_setSVGBg:function(e){this.backgroundColor&&this._boundaries&&e.push("')},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),function(){var e=fabric.util.object.clone;fabric.IText=fabric.util.createClass(fabric.Text,fabric.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"#333",cursorDelay:1e3,cursorDuration:600,styles:null,caching:!0,_skipFillStrokeCheck:!0,_reSpace:/\s|\n/,_fontSizeFraction:4,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,_charWidthsCache:{},initialize:function(e,t){this.styles=t?t.styles||{}:{},this.callSuper("initialize",e,t),this.initBehavior(),fabric.IText.instances.push(this),this.__lineWidths={},this.__lineHeights={},this.__lineOffsets={}},isEmptyStyles:function(){if(!this.styles)return!0;var e=this.styles;for(var t in e)for(var n in e[t])for(var r in e[t][n])return!1;return!0},setSelectionStart:function(e){this.selectionStart=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionStart=e)},setSelectionEnd:function(e){this.selectionEnd=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionEnd=e)},getSelectionStyles:function(e,t){if(arguments.length===2){var n=[];for(var r=e;r=r.charIndex&&(f!==o||ps&&f-1&&this._renderCharDecorationAtOffset(e,n,r+this.fontSize/this._fontSizeFraction,i,0,this.fontSize/20),u.indexOf("line-through")>-1&&this._renderCharDecorationAtOffset(e,n,r+this.fontSize/this._fontSizeFraction,i,o/2,a/20),u.indexOf("overline")>-1&&this._renderCharDecorationAtOffset(e,n,r,i,s-this.fontSize/this._fontSizeFraction,this.fontSize/20)},_renderCharDecorationAtOffset:function(e,t,n,r,i,s){e.fillRect(t,n-i,r,s)},_renderTextLine:function(e,t,n,r,i,s){i+=this.fontSize/4,this.callSuper("_renderTextLine",e,t,n,r,i,s)},_renderTextDecoration:function(e,t){if(this.isEmptyStyles())return this.callSuper("_renderTextDecoration",e,t)},_renderTextLinesBackground:function(e,t){if(!this.textBackgroundColor&&!this.styles)return;e.save(),this.textBackgroundColor&&(e.fillStyle=this.textBackgroundColor);var n=0,r=this.fontSize/this._fontSizeFraction;for(var i=0,s=t.length;in&&(n=s)}return n},_getHeightOfLine:function(e,t,n){n=n||this.text.split(this._reNewline);var r=this._getHeightOfChar(e,n[t][0],t,0),i=n[t],s=i.split("");for(var o=1,u=s.length;or&&(r=a)}return r*this.lineHeight},_getTextHeight:function(e,t){var n=0;for(var r=0,i=t.length;r-1)t++,n--;return e-t},findWordBoundaryRight:function(e){var t=0,n=e;if(this._reSpace.test(this.text.charAt(n)))while(this._reSpace.test(this.text.charAt(n)))t++,n++;while(/\S/.test(this.text.charAt(n))&&n-1)t++,n--;return e-t},findLineBoundaryRight:function(e){var t=0,n=e;while(!/\n/.test(this.text.charAt(n))&&n0&&nr;s?this.removeStyleObject(s,n+1):this.removeStyleObject(this.get2DCursorLocation(n).charIndex===0,n)}this.text=this.text.slice(0,e)+this.text.slice(t)},insertChars:function(e){var t=this.text.slice(this.selectionStart,this.selectionStart+1)==="\n";this.text=this.text.slice(0,this.selectionStart)+e+this.text.slice(this.selectionEnd),this.selectionStart===this.selectionEnd?this.insertStyleObjects(e,t,this.copiedStyles):this.selectionEnd-this.selectionStart>1,this.selectionStart+=e.length,this.selectionEnd=this.selectionStart,this.canvas&&this.canvas.renderAll().renderAll(),this.setCoords(),this.fire("changed"),this.canvas&&this.canvas.fire("text:changed",{target:this})},insertNewlineStyleObject:function(t,n,r){this.shiftLineStyles(t,1),this.styles[t+1]||(this.styles[t+1]={});var i=this.styles[t][n-1],s={};if(r)s[0]=e(i),this.styles[t+1]=s;else{for(var o in this.styles[t])parseInt(o,10)>=n&&(s[parseInt(o,10)-n]=this.styles[t][o],delete this.styles[t][o]);this.styles[t+1]=s}},insertCharStyleObject:function(t,n,r){var i=this.styles[t],s=e(i);n===0&&!r&&(n=1);for(var o in s){var u=parseInt(o,10);u>=n&&(i[u+1]=s[u])}this.styles[t][n]=r||e(i[n-1])},insertStyleObjects:function(e,t,n){if(this.isEmptyStyles())return;var r=this.get2DCursorLocation(),i=r.lineIndex,s=r.charIndex;this.styles[i]||(this.styles[i]={}),e==="\n"?this.insertNewlineStyleObject(i,s,t):n?this._insertStyles(n):this.insertCharStyleObject(i,s)},_insertStyles:function(e){for(var t=0,n=e.length;tt&&(this.styles[s+n]=r[s])}},removeStyleObject:function(t,n){var r=this.get2DCursorLocation(n),i=r.lineIndex,s=r.charIndex;if(t){var o=this.text.split(this._reNewline),u=o[i-1],a=u?u.length:0;this.styles[i-1]||(this.styles[i-1]={});for(s in this.styles[i])this.styles[i-1][parseInt(s,10)+a]=this.styles[i][s];this.shiftLineStyles(i,-1)}else{var f=this.styles[i];if(f){var l=this.selectionStart===this.selectionEnd?-1:0;delete f[s+l]}var c=e(f);for(var h in c){var p=parseInt(h,10);p>=s&&p!==0&&(f[p-1]=c[p],delete f[p])}}},insertNewline:function(){this.insertChars("\n")}})}(),fabric.util.object.extend(fabric.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+(new Date),this.__lastLastClickTime=+(new Date),this.lastPointer={},this.on("mousedown",this.onMouseDown.bind(this))},onMouseDown:function(e){this.__newClickTime=+(new Date);var t=this.canvas.getPointer(e.e);this.isTripleClick(t)?(this.fire("tripleclick",e),this._stopEvent(e.e)):this.isDoubleClick(t)&&(this.fire("dblclick",e),this._stopEvent(e.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=t,this.__lastIsEditing=this.isEditing},isDoubleClick:function(e){return this.__newClickTime-this.__lastClickTime<500&&this.__lastPointer.x===e.x&&this.__lastPointer.y===e.y&&this.__lastIsEditing},isTripleClick:function(e){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===e.x&&this.__lastPointer.y===e.y},_stopEvent:function(e){e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation()},initCursorSelectionHandlers:function(){this.initSelectedHandler(),this.initMousedownHandler(),this.initMousemoveHandler(),this.initMouseupHandler(),this.initClicks()},initClicks:function(){this.on("dblclick",function(e){this.selectWord(this.getSelectionStartFromPointer(e.e))}),this.on("tripleclick",function(e){this.selectLine(this.getSelectionStartFromPointer(e.e))})},initMousedownHandler:function(){this.on("mousedown",function(e){var t=this.canvas.getPointer(e.e);this.__mousedownX=t.x,this.__mousedownY=t.y,this.__isMousedown=!0,this.hiddenTextarea&&this.canvas&&this.canvas.wrapperEl.appendChild(this.hiddenTextarea),this.selected&&this.setCursorByClick(e.e),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.initDelayedCursor(!0))})},initMousemoveHandler:function(){this.on("mousemove",function(e){if(!this.__isMousedown||!this.isEditing)return;var t=this.getSelectionStartFromPointer(e.e);t>=this.__selectionStartOnMouseDown?(this.setSelectionStart(this.__selectionStartOnMouseDown),this.setSelectionEnd(t)):(this.setSelectionStart(t),this.setSelectionEnd(this.__selectionStartOnMouseDown))})},_isObjectMoved:function(e){var t=this.canvas.getPointer(e);return this.__mousedownX!==t.x||this.__mousedownY!==t.y},initMouseupHandler:function(){this.on("mouseup",function(e){this.__isMousedown=!1;if(this._isObjectMoved(e.e))return;this.selected&&(this.enterEditing(),this.initDelayedCursor(!0))})},setCursorByClick:function(e){var t=this.getSelectionStartFromPointer(e);e.shiftKey?to?0:1,f=r+a;return this.flipX&&(f=i-f),f>this.text.length&&(f=this.text.length),s===i&&f--,f}}),fabric.util.object.extend(fabric.IText.prototype,{initKeyHandlers:function(){fabric.util.addListener(fabric.document,"keydown",this.onKeyDown.bind(this)),fabric.util.addListener(fabric.document,"keypress",this.onKeyPress.bind(this))},initHiddenTextarea:function(){this.hiddenTextarea=fabric.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.style.cssText="position: absolute; top: 0; left: -9999px",fabric.document.body.appendChild(this.hiddenTextarea)},_keysMap:{8:"removeChars",13:"insertNewline",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown",46:"forwardDelete"},_ctrlKeysMap:{65:"selectAll",67:"copy",86:"paste",88:"cut"},onKeyDown:function(e){if(!this.isEditing)return;if(e.keyCode in this._keysMap)this[this._keysMap[e.keyCode]](e);else{if(!(e.keyCode in this._ctrlKeysMap&&(e.ctrlKey||e.metaKey)))return;this[this._ctrlKeysMap[e.keyCode]](e)}e.preventDefault(),e.stopPropagation(),this.canvas&&this.canvas.renderAll()},forwardDelete:function(e){this.selectionStart===this.selectionEnd&&this.moveCursorRight(e),this.removeChars(e)},copy:function(){var e=this.getSelectedText();this.copiedText=e,this.copiedStyles=this.getSelectionStyles(this.selectionStart,this.selectionEnd)},paste:function(){this.copiedText&&this.insertChars(this.copiedText)},cut:function(e){this.copy(),this.removeChars(e)},onKeyPress:function(e){if(!this.isEditing||e.metaKey||e.ctrlKey||e.keyCode===8||e.keyCode===13)return;this.insertChars(String.fromCharCode(e.which)),e.preventDefault(),e.stopPropagation()},getDownCursorOffset:function(e,t){var n=t?this.selectionEnd:this.selectionStart,r=this.text.split(this._reNewline),i,s,o=this.text.slice(0,n),u=this.text.slice(n),a=o.slice(o.lastIndexOf("\n")+1),f=u.match(/(.*)\n?/)[1],l=(u.match(/.*\n(.*)\n?/)||{})[1]||"",c=this.get2DCursorLocation(n);if(c.lineIndex===r.length-1||e.metaKey)return this.text.length-n;var h=this._getWidthOfLine(this.ctx,c.lineIndex,r);s=this._getLineLeftOffset(h);var p=s,d=c.lineIndex;for(var v=0,m=a.length;vn){f=!0;var d=u-p,v=u,m=Math.abs(d-n),g=Math.abs(v-n);a=gthis.text.length&&(this.selectionStart=this.text.length),this.selectionEnd=this.selectionStart},moveCursorDownWithShift:function(e){if(this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd){this.selectionStart+=e,this -._selectionDirection="left";return}this._selectionDirection="right",this.selectionEnd+=e,this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length)},getUpCursorOffset:function(e,t){var n=t?this.selectionEnd:this.selectionStart,r=this.get2DCursorLocation(n);if(r.lineIndex===0||e.metaKey)return n;var i=this.text.slice(0,n),s=i.slice(i.lastIndexOf("\n")+1),o=(i.match(/\n?(.*)\n.*$/)||{})[1]||"",u=this.text.split(this._reNewline),a,f,l=this._getWidthOfLine(this.ctx,r.lineIndex,u);f=this._getLineLeftOffset(l);var c=f,h=r.lineIndex;for(var p=0,d=s.length;pn){f=!0;var d=u-p,v=u,m=Math.abs(d-n),g=Math.abs(v-n);a=g=this.text.length&&this.selectionEnd>=this.text.length)return;this.abortCursorAnimation(),this._currentCursorOpacity=1,e.shiftKey?this.moveCursorRightWithShift(e):this.moveCursorRightWithoutShift(e),this.initDelayedCursor()},moveCursorRightWithShift:function(e){this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd?this._moveRight(e,"selectionStart"):(this._selectionDirection="right",this._moveRight(e,"selectionEnd"),this.text.charAt(this.selectionEnd-1)==="\n"&&this.selectionEnd++,this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length))},moveCursorRightWithoutShift:function(e){this._selectionDirection="right",this.selectionStart===this.selectionEnd?(this._moveRight(e,"selectionStart"),this.selectionEnd=this.selectionStart):(this.selectionEnd+=this.getNumNewLinesInSelectedText(),this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length),this.selectionStart=this.selectionEnd)},removeChars:function(e){this.selectionStart===this.selectionEnd?this._removeCharsNearCursor(e):this._removeCharsFromTo(this.selectionStart,this.selectionEnd),this.selectionEnd=this.selectionStart,this._removeExtraneousStyles(),this.canvas&&this.canvas.renderAll().renderAll(),this.setCoords(),this.fire("changed"),this.canvas&&this.canvas.fire("text:changed",{target:this})},_removeCharsNearCursor:function(e){if(this.selectionStart!==0)if(e.metaKey){var t=this.findLineBoundaryLeft(this.selectionStart);this._removeCharsFromTo(t,this.selectionStart),this.selectionStart=t}else if(e.altKey){var n=this.findWordBoundaryLeft(this.selectionStart);this._removeCharsFromTo(n,this.selectionStart),this.selectionStart=n}else{var r=this.text.slice(this.selectionStart-1,this.selectionStart)==="\n";this.removeStyleObject(r),this.selectionStart--,this.text=this.text.slice(0,this.selectionStart)+this.text.slice(this.selectionStart+1)}}}),fabric.util.object.extend(fabric.IText.prototype,{_setSVGTextLineText:function(e,t,n,r,i,s){this.styles[t]?this._setSVGTextLineChars(e,t,n,r,i,s):this.callSuper("_setSVGTextLineText",e,t,n,r,i)},_setSVGTextLineChars:function(e,t,n,r,i,s){var o=t===0||this.useNative?"y":"dy",u=e.split(""),a=0,f=this._getSVGLineLeftOffset(t),l=this._getSVGLineTopOffset(t),c=this._getHeightOfLine(this.ctx,t);for(var h=0,p=u.length;h'].join("")},_createTextCharSpan:function(e,t,n,r,i,s){var o=this.getSvgStyles.call(fabric.util.object.extend({visible:!0,fill:this.fill,stroke:this.stroke,type:"text"},t));return['',fabric.util.string.escapeXml(e),""].join("")}}),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs");n.readFile(e,function(e,n){if(e)throw fabric.log(e),e;t(n)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&(e instanceof Buffer||e.indexOf("data")===0)?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e?request(e,"binary",r):t&&t.call(n,e)},fabric.loadSVGFromURL=function(e,t,n){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t,n)}):request(e,"",function(e){fabric.loadSVGFromString(e,t,n)})},fabric.loadSVGFromString=function(e,t,n){var r=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(r.documentElement,function(e,n){t&&t(e,n)},n)},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e,function(e){r.filters=e||[],t&&t(r)})})},fabric.createCanvasForNode=function(e,t,n){var r=fabric.document.createElement("canvas"),i=new Canvas(e||600,t||600);r.style={},r.width=i.width,r.height=i.height;var s=fabric.Canvas||fabric.StaticCanvas,o=new s(r,n);return o.contextContainer=i.getContext("2d"),o.nodeCanvas=i,o.Font=Canvas.Font,o},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file +,r=n.stateProperties;return r.forEach(function(t){e[t]===n[t]&&delete e[t]}),e},toString:function(){return"#"},get:function(e){return this[e]},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"&&e!=="clipTo"?this._set(e,t(this.get(e))):this._set(e,t);return this},_set:function(e,n){var i=e==="scaleX"||e==="scaleY";return i&&(n=this._constrainScale(n)),e==="scaleX"&&n<0?(this.flipX=!this.flipX,n*=-1):e==="scaleY"&&n<0?(this.flipY=!this.flipY,n*=-1):e==="width"||e==="height"?this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2):e==="shadow"&&n&&!(n instanceof t.Shadow)&&(n=new t.Shadow(n)),this[e]=n,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save(),this._transform(e,n),this._setStrokeStyles(e),this._setFillStyles(e);var r=this.transformMatrix;r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_transform:function(e,t){var n=this.transformMatrix;n&&!this.group&&e.setTransform(n[0],n[1],n[2],n[3],n[4],n[5]),t||this.transform(e)},_setStrokeStyles:function(e){this.stroke&&(e.lineWidth=this.strokeWidth,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,e.strokeStyle=this.stroke.toLive?this.stroke.toLive(e):this.stroke)},_setFillStyles:function(e){this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill)},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){if(!this.shadow)return;e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_renderFill:function(e){if(!this.fill)return;this.fill.toLive&&(e.save(),e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0)),e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke)return;e.save(),this.strokeDashArray?(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),o?(e.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(e)):this._renderDashedStroke&&this._renderDashedStroke(e),e.stroke()):this._stroke?this._stroke(e):e.stroke(),this._removeShadow(e),e.restore()},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){var n=this.toDataURL();return t.util.loadImage(n,function(n){e&&e(new t.Image(n))}),this},toDataURL:function(e){e||(e={});var n=t.util.createCanvasElement(),r=this.getBoundingRect();n.width=r.width,n.height=r.height,t.util.wrapElement(n,"div");var i=new t.Canvas(n);e.format==="jpg"&&(e.format="jpeg"),e.format==="jpeg"&&(i.backgroundColor="#fff");var s={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set("active",!1),this.setPositionByOrigin(new t.Point(n.width/2,n.height/2),"center","center");var o=this.canvas;i.add(this);var u=i.toDataURL(e);return this.set(s).setCoords(),this.canvas=o,i.dispose(),i=null,u},isType:function(e){return this.type===e},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}return this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){return this.set("fill",new t.Pattern(e))},setShadow:function(e){return this.set("shadow",new t.Shadow(e))},setColor:function(e){return this.set("fill",e),this},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.canvas.centerObject(this),this},remove:function(){return this.canvas.remove(this),this},getLocalPointer:function(e,t){t=t||this.canvas.getPointer(e);var n=this.translateToOriginPoint(this.getCenterPoint(),"left","top");return{x:t.x-n.x,y:t.y-n.y}}}),t.util.createAccessors(t.Object),t.Object.prototype.rotate=t.Object.prototype.setAngle,n(t.Object.prototype,t.Observable),t.Object.NUM_FRACTION_DIGITS=2,t.Object.__uid=0}(typeof exports!="undefined"?exports:this),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{translateToCenterPoint:function(t,n,r){var i=t.x,s=t.y,o=this.stroke?this.strokeWidth:0;return n==="left"?i=t.x+(this.getWidth()+o*this.scaleX)/2:n==="right"&&(i=t.x-(this.getWidth()+o*this.scaleX)/2),r==="top"?s=t.y+(this.getHeight()+o*this.scaleY)/2:r==="bottom"&&(s=t.y-(this.getHeight()+o*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},translateToOriginPoint:function(t,n,r){var i=t.x,s=t.y,o=this.stroke?this.strokeWidth:0;return n==="left"?i=t.x-(this.getWidth()+o*this.scaleX)/2:n==="right"&&(i=t.x+(this.getWidth()+o*this.scaleX)/2),r==="top"?s=t.y-(this.getHeight()+o*this.scaleY)/2:r==="bottom"&&(s=t.y+(this.getHeight()+o*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},getCenterPoint:function(){var e=new fabric.Point(this.left,this.top);return this.translateToCenterPoint(e,this.originX,this.originY)},getPointByOrigin:function(e,t){var n=this.getCenterPoint();return this.translateToOriginPoint(n,e,t)},toLocalPoint:function(t,n,r){var i=this.getCenterPoint(),s=this.stroke?this.strokeWidth:0,o,u;return n&&r?(n==="left"?o=i.x-(this.getWidth()+s*this.scaleX)/2:n==="right"?o=i.x+(this.getWidth()+s*this.scaleX)/2:o=i.x,r==="top"?u=i.y-(this.getHeight()+s*this.scaleY)/2:r==="bottom"?u=i.y+(this.getHeight()+s*this.scaleY)/2:u=i.y):(o=this.left,u=this.top),fabric.util.rotatePoint(new fabric.Point(t.x,t.y),i,-e(this.angle)).subtractEquals(new fabric.Point(o,u))},setPositionByOrigin:function(e,t,n){var r=this.translateToCenterPoint(e,t,n),i=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",i.x),this.set("top",i.y)},adjustPosition:function(t){var n=e(this.angle),r=this.getWidth()/2,i=Math.cos(n)*r,s=Math.sin(n)*r,o=this.getWidth(),u=Math.cos(n)*o,a=Math.sin(n)*o;this.originX==="center"&&t==="left"||this.originX==="right"&&t==="center"?(this.left-=i,this.top-=s):this.originX==="left"&&t==="center"||this.originX==="center"&&t==="right"?(this.left+=i,this.top+=s):this.originX==="left"&&t==="right"?(this.left+=u,this.top+=a):this.originX==="right"&&t==="left"&&(this.left-=u,this.top-=a),this.setCoords(),this.originX=t},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","center")}})}(),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{oCoords:null,intersectsWithRect:function(e,t){var n=this.oCoords,r=new fabric.Point(n.tl.x,n.tl.y),i=new fabric.Point(n.tr.x,n.tr.y),s=new fabric.Point(n.bl.x,n.bl.y),o=new fabric.Point(n.br.x,n.br.y),u=fabric.Intersection.intersectPolygonRectangle([r,i,o,s],e,t);return u.status==="Intersection"},intersectsWithObject:function(e){function t(e){return{tl:new fabric.Point(e.tl.x,e.tl.y),tr:new fabric.Point(e.tr.x,e.tr.y),bl:new fabric.Point(e.bl.x,e.bl.y),br:new fabric.Point(e.br.x,e.br.y)}}var n=t(this.oCoords),r=t(e.oCoords),i=fabric.Intersection.intersectPolygonPolygon([n.tl,n.tr,n.br,n.bl],[r.tl,r.tr,r.br,r.bl]);return i.status==="Intersection"},isContainedWithinObject:function(e){var t=e.getBoundingRect(),n=new fabric.Point(t.left,t.top),r=new fabric.Point(t.left+t.width,t.top+t.height);return this.isContainedWithinRect(n,r)},isContainedWithinRect:function(e,t){var n=this.getBoundingRect();return n.left>e.x&&n.left+n.widthe.y&&n.top+n.height=e.y&&f.d.y>=e.y)continue;f.o.x===f.d.x&&f.o.x>=e.x?(o=f.o.x,u=e.y):(n=0,r=(f.d.y-f.o.y)/(f.d.x-f.o.x),i=e.y-n*e.x,s=f.o.y-r*f.o.x,o=-(i-s)/(n-r),u=i+n*o),o>=e.x&&(a+=1);if(a===2)break}return a},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],t=fabric.util.array.min(e),n=fabric.util.array.max(e),r=Math.abs(t-n),i=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],s=fabric.util.array.min(i),o=fabric.util.array.max(i),u=Math.abs(s-o);return{left:t,top:s,width:r,height:u}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(e){return Math.abs(e)1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x:m.x,y:m.y};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords&&this._setCornerCoords(),this}})}(),fabric.util.object.extend(fabric.Object.prototype,{sendToBack:function(){return this.group?fabric.StaticCanvas.prototype.sendToBack.call(this.group,this):this.canvas.sendToBack(this),this},bringToFront:function(){return this.group?fabric.StaticCanvas.prototype.bringToFront.call(this.group,this):this.canvas.bringToFront(this),this},sendBackwards:function(e){return this.group?fabric.StaticCanvas.prototype.sendBackwards.call(this.group,this,e):this.canvas.sendBackwards(this,e),this},bringForward:function(e){return this.group?fabric.StaticCanvas.prototype.bringForward.call(this.group,this,e):this.canvas.bringForward(this,e),this},moveTo:function(e){return this.group?fabric.StaticCanvas.prototype.moveTo.call(this.group,this,e):this.canvas.moveTo(this,e),this}}),fabric.util.object.extend(fabric.Object.prototype,{getSvgStyles:function(){var e=this.fill?this.fill.toLive?"url(#SVGID_"+this.fill.id+")":this.fill:"none",t=this.stroke?this.stroke.toLive?"url(#SVGID_"+this.stroke.id+")":this.stroke:"none",n=this.strokeWidth?this.strokeWidth:"0",r=this.strokeDashArray?this.strokeDashArray.join(" "):"",i=this.strokeLineCap?this.strokeLineCap:"butt",s=this.strokeLineJoin?this.strokeLineJoin:"miter",o=this.strokeMiterLimit?this.strokeMiterLimit:"4",u=typeof this.opacity!="undefined"?this.opacity:"1",a=this.visible?"":" visibility: hidden;",f=this.shadow&&this.type!=="text"?"filter: url(#SVGID_"+this.shadow.id+");":"";return["stroke: ",t,"; ","stroke-width: ",n,"; ","stroke-dasharray: ",r,"; ","stroke-linecap: ",i,"; ","stroke-linejoin: ",s,"; ","stroke-miterlimit: ",o,"; ","fill: ",e,"; ","opacity: ",u,";",f,a].join("")},getSvgTransform:function(){var e=fabric.util.toFixed,t=this.getAngle(),n=this.getCenterPoint(),r=fabric.Object.NUM_FRACTION_DIGITS,i="translate("+e(n.x,r)+" "+e(n.y,r)+")",s=t!==0?" rotate("+e(t,r)+")":"",o=this.scaleX===1&&this.scaleY===1?"":" scale("+e(this.scaleX,r)+" "+e(this.scaleY,r)+")",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("")},_createBaseSVGMarkup:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),this.shadow&&e.push(this.shadow.toSVG(this)),e}}),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this.get(e)!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians,n=typeof G_vmlCanvasManager!="undefined";fabric.util.object.extend(fabric.Object.prototype,{_controlsVisibility:null,_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(!this.isControlVisible(a))continue;if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner),o=this._findCrossPoints({x:i,y:s},u);if(o!==0&&o%2===1)return this.__corner=a,a}return!1},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=~~(this.strokeWidth/2)*2;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)-.5,~~(-(u/2)-t-r/2*this.scaleY)-.5,~~(o+n+r*this.scaleX)+1,~~(u+n+r*this.scaleY)+1);if(this.hasRotatingPoint&&this.isControlVisible("mtr")&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;var t=this.cornerSize,n=t/2,r=~~(this.strokeWidth/2),i=-(this.width/2),s=-(this.height/2),o=this.padding/this.scaleX,u=this.padding/this.scaleY,a=n/this.scaleY,f=n/this.scaleX,l=(n-t)/this.scaleX,c=(n-t)/this.scaleY,h=this.height,p=this.width,d=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,this._drawControl("tl",e,d,i-f-r-o,s-a-r-u),this._drawControl("tr",e,d,i+p-f+r+o,s-a-r-u),this._drawControl("bl",e,d,i-f-r-o,s+h+c+r+u),this._drawControl("br",e,d,i+p+l+r+o,s+h+c+r+u),this.get("lockUniScaling")||(this._drawControl("mt",e,d,i+p/2-f,s-a-r-u),this._drawControl("mb",e,d,i+p/2-f,s+h+c+r+u),this._drawControl("mb",e,d,i+p+l+r+o,s+h/2-a),this._drawControl("ml",e,d,i-f-r-o,s+h/2-a)),this.hasRotatingPoint&&this._drawControl("mtr",e,d,i+p/2-f,this.flipY?s+h+this.rotatingPointOffset/this.scaleY-this.cornerSize/this.scaleX/2+r+u:s-this.rotatingPointOffset/this.scaleY-this.cornerSize/this.scaleY/2-r-u),e.restore(),this},_drawControl:function(e,t,r,i,s){var o=this.cornerSize/this.scaleX,u=this.cornerSize/this.scaleY;this.isControlVisible(e)&&(n||this.transparentCorners||t.clearRect(i,s,o,u),t[r](i,s,o,u))},isControlVisible:function(e){return this._getControlsVisibility()[e]},setControlVisible:function(e,t){return this._getControlsVisibility()[e]=t,this},setControlsVisibility:function(e){e||(e={});for(var t in e)this.setControlVisible(t,e[t]);return this},_getControlsVisibility:function(){return this._controlsVisibility||(this._controlsVisibility={tl:!0,tr:!0,br:!0,bl:!0,ml:!0,mt:!0,mr:!0,mb:!0,mtr:!0}),this._controlsVisibility}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("left"),endValue:this.getCenter().left,duration:this.FX_DURATION,onChange:function(t){e.set("left",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxCenterObjectV:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("top"),endValue:this.getCenter().top,duration:this.FX_DURATION,onChange:function(t){e.set("top",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxRemove:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("opacity"),endValue:0,duration:this.FX_DURATION,onStart:function(){e.set("active",!1)},onChange:function(t){e.set("opacity",t),s.renderAll(),i()},onComplete:function(){s.remove(e),r()}}),this}}),fabric.util.object.extend(fabric.Object.prototype,{animate:function(){if(arguments[0]&&typeof arguments[0]=="object"){var e=[],t,n;for(t in arguments[0])e.push(t);for(var r=0,i=e.length;r'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e)},_set:function(e,t){return this.callSuper("_set",e,t),e==="radius"&&this.setRadius(t),this},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this.stroke&&this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(e){var t=this._createBaseSVGMarkup(),n=this.width/2,r=this.height/2,i=[-n+" "+r,"0 "+ -r,n+" "+r].join(",");return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this._renderFill(e),this._renderStroke(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}var r=t.Object.prototype.stateProperties.concat();r.push("rx","ry","x","y"),t.Rect=t.util.createClass(t.Object,{stateProperties:r,type:"rect",rx:0,ry:0,x:0,y:0,strokeDashArray:null,initialize:function(e){e=e||{},this.callSuper("initialize",e),this._initRxRy(),this.x=e.x||0,this.y=e.y||0},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){if(this.width===1&&this.height===1){e.fillRect(0,0,1,1);return}var t=this.rx||0,n=this.ry||0,r=this.width,i=this.height,s=-r/2,o=-i/2,u=this.group&&this.group.type==="path-group",a=t!==0||n!==0;e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y),e.moveTo(s+t,o),e.lineTo(s+r-t,o),a&&e.quadraticCurveTo(s+r,o,s+r,o+n,s+r,o+n),e.lineTo(s+r,o+i-n),a&&e.quadraticCurveTo(s+r,o+i,s+r-t,o+i,s+r-t,o+i),e.lineTo(s+t,o+i),a&&e.quadraticCurveTo(s,o+i,s,o+i-n,s,o+i-n),e.lineTo(s,o+n),a&&e.quadraticCurveTo(s,o,s+t,o,s+t,o),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){var t=n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,r){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=i(s);var o=new t.Rect(n(r?t.util.object.clone(r):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(e){var t=[],r=this._createBaseSVGMarkup();for(var i=0,s=this.points.length;i'),e?e(r.join("")):r.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'),e?e(n.join("")):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;n"},toObject:function(e){var t=s(this.callSuper("toObject",e),{path:this.path.map(function(e){return e.slice()}),pathOffset:this.pathOffset});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(e){var t=[],n=this._createBaseSVGMarkup();for(var r=0,i=this.path.length;r',"",""),e?e(n.join("")):n.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n=[],r,i,s=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:e[-+]?\d+)?)/ig,o,u;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var r=0,i=t.length;r"),e?e(n.join("")):n.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)},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e,n){typeof e.paths=="string"?t.loadSVGFromURL(e.paths,function(r){var i=e.paths;delete e.paths;var s=t.util.groupSVGElements(r,e,i);n(s)}):t.util.enlivenObjects(e.paths,function(r){delete e.paths,n(new t.PathGroup(r,e))})},t.PathGroup.async=!0}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){this.forEachObject(this._updateObjectCoords,this)},_updateObjectCoords:function(e){var t=e.getLeft(),n=e.getTop();e.set({originalLeft:t,originalTop:n,left:t-this.left,top:n-this.top}),e.setCoords(),e.__origHasControls=e.hasControls,e.hasControls=!1},toString:function(){return"#"},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(this._setObjectActive,this),this._calcBounds(),this._updateObjectsCoords(),this},_setObjectActive:function(e){e.set("active",!0),e.group=this},removeWithUpdate:function(e){return this._moveFlippedObject(e),this._restoreObjectsState(),this.forEachObject(this._setObjectActive,this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e),this.clipTo&&t.util.clipContext(this,e);for(var r=0,i=this._objects.length;r'];for(var n=0,r=this._objects.length;n"),e?e(t.join("")):t.join("")},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','");if(this.stroke||this.strokeDashArray){var n=this.fill;this.fill=null,t.push("'),this.fill=n}return t.push(""),e?e(t.join("")):t.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this._element=this._originalElement,e&&e();return}var t=this._originalElement,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;return n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height,fabric.isLikelyNode?(r.src=n.toBuffer(undefined,fabric.Image.pngCompression),i._element=r,e&&e()):(r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png")),this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e),this._element.crossOrigin=this.crossOrigin},_initFilters:function(e,t){e.filters&&e.filters.length?fabric.util.enlivenObjects(e.filters,function(e){t&&t(e)},"fabric.Image.filters"):t&&t()},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){fabric.Image.prototype._initFilters.call(e,e,function(r){e.filters=r||[];var i=new fabric.Image(n,e);t&&t(i)})},null,e.crossOrigin)},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))},null,n&&n.crossOrigin)},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0,fabric.Image.pngCompression=1}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.BaseFilter=fabric.util.createClass({type:"BaseFilter",toObject:function(){return{type:this.type}},toJSON:function(){return this.toObject()}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend;t.Image.filters.Brightness=t.util.createClass(t.Image.filters.BaseFilter,{type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;sa||C<0||C>u)continue;var k=(N*u+C)*4,L=t[x*i+T];b+=o[k]*L,w+=o[k+1]*L,E+=o[k+2]*L,S+=o[k+3]*L}h[y]=b,h[y+1]=w,h[y+2]=E,h[y+3]=S+p*(255-S)}n.putImageData(c,0,0)},toObject:function(){return n(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),t.Image.filters.Convolute.fromObject=function(e){return new t.Image.filters.Convolute(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend;t.Image.filters.GradientTransparency=t.util.createClass(t.Image.filters.BaseFilter,{type:"GradientTransparency",initialize:function(e){e=e||{},this.threshold=e.threshold||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.threshold,s=r.length;for(var o=0,u=r.length;o-1?e.channel:0},applyTo:function(e){if(!this.mask)return;var n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=r.data,s=this.mask.getElement(),o=t.util.createCanvasElement(),u=this.channel,a,f=r.width*r.height*4;o.width=s.width,o.height=s.height,o.getContext("2d").drawImage(s,0,0,s.width,s.height);var l=o.getContext("2d").getImageData(0,0,s.width,s.height),c=l.data;for(a=0;ao&&f>o&&l>o&&u(a-f)'},_render:function(e){var t=this.group&&this.group.type==="path-group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaNative:function(e){var n=this.text.split(this._reNewline);this.transform(e,t.isLikelyNode),this._setTextStyles(e),this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this.clipTo&&t.util.clipContext(this,e),this._renderTextBackground(e,n),this._translateForTextAlign(e),this._renderText(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this.clipTo&&e.restore(),this._setBoundaries(e,n),this._totalLineHeight=0},_renderText:function(e,t){e.save(),this._setShadow(e),this._renderTextFill(e,t),this._renderTextStroke(e,t),this._removeShadow(e),e.restore()},_translateForTextAlign:function(e){this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0))},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_renderChars:function(e,t,n,r,i){t[e](n,r,i)},_renderTextLine:function(e,t,n,r,i,s){i-=this.fontSize/4;if(this.textAlign!=="justify"){this._renderChars(e,t,n,r,i,s);return}var o=t.measureText(n).width,u=this.width;if(u>o){var a=n.split(/\s+/),f=t.measureText(n.replace(/\s+/g,"")).width,l=u-f,c=a.length-1,h=l/c,p=0;for(var d=0,v=a.length;d-1&&i(this.fontSize*this.lineHeight),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize*this.lineHeight-this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(this.fontSize*this.lineHeight-this.fontSize)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(e,t){if(!this.visible)return;e.save();var n=this.transformMatrix;n&&!this.group&&e.setTransform(n[0],n[1],n[2],n[3],n[4],n[5]),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){var t=n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textAlign:this.textAlign,path:this.path,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=[],n=this.text.split(this._reNewline),r=this._getSVGLeftTopOffsets(n),i=this._getSVGTextAndBg(r.lineTop,r.textLeft,n),s=this._getSVGShadows(r.lineTop,n);return r.textTop+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,this._wrapSVGTextAndBg(t,i,s,r),e?e(t.join("")):t.join("")},_getSVGLeftTopOffsets:function(e){var 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;return{textLeft:n,textTop:r,lineTop:t}},_wrapSVGTextAndBg:function(e,t,n,r){e.push('',t.textBgRects.join(""),"',n.join(""),t.textSpans.join(""),"","")},_getSVGShadows:function(e,n){var r=[],s,o,u=1;if(!this.shadow||!this._boundaries)return r;for(s=0,o=n.length;s",t.util.string.escapeXml(n[s]),""),u=1}else u++;return r},_getSVGTextAndBg:function(e,t,n){var r=[],i=[],s=1;this._setSVGBg(i);for(var o=0,u=n.length;o",t.util.string.escapeXml(e),"")},_setSVGTextLineBg:function(e,t,n,r){e.push("')},_setSVGBg:function(e){this.backgroundColor&&this._boundaries&&e.push("')},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),function(){var e=fabric.util.object.clone;fabric.IText=fabric.util.createClass(fabric.Text,fabric.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"#333",cursorDelay:1e3,cursorDuration:600,styles:null,caching:!0,_skipFillStrokeCheck:!0,_reSpace:/\s|\n/,_fontSizeFraction:4,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,_charWidthsCache:{},initialize:function(e,t){this.styles=t?t.styles||{}:{},this.callSuper("initialize",e,t),this.initBehavior(),fabric.IText.instances.push(this),this.__lineWidths={},this.__lineHeights={},this.__lineOffsets={}},isEmptyStyles:function(){if(!this.styles)return!0;var e=this.styles;for(var t in e)for(var n in e[t])for(var r in e[t][n])return!1;return!0},setSelectionStart:function(e){this.selectionStart=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionStart=e)},setSelectionEnd:function(e){this.selectionEnd=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionEnd=e)},getSelectionStyles:function(e,t){if(arguments.length===2){var n=[];for(var r=e;r=r.charIndex&&(f!==o||ps&&f-1&&this._renderCharDecorationAtOffset(e,n,r+this.fontSize/this._fontSizeFraction,i,0,this.fontSize/20),u.indexOf("line-through")>-1&&this._renderCharDecorationAtOffset(e,n,r+this.fontSize/this._fontSizeFraction,i,o/2,a/20),u.indexOf("overline")>-1&&this._renderCharDecorationAtOffset(e,n,r,i,s-this.fontSize/this._fontSizeFraction,this.fontSize/20)},_renderCharDecorationAtOffset:function(e,t,n,r,i,s){e.fillRect(t,n-i,r,s)},_renderTextLine:function(e,t,n,r,i,s){i+=this.fontSize/4,this.callSuper("_renderTextLine",e,t,n,r,i,s)},_renderTextDecoration:function(e,t){if(this.isEmptyStyles())return this.callSuper("_renderTextDecoration",e,t)},_renderTextLinesBackground:function(e,t){if(!this.textBackgroundColor&&!this.styles)return;e.save(),this.textBackgroundColor&&(e.fillStyle=this.textBackgroundColor);var n=0,r=this.fontSize/this._fontSizeFraction;for(var i=0,s=t.length;in&&(n=s)}return n},_getHeightOfLine:function(e,t,n){n=n||this.text.split(this._reNewline);var r=this._getHeightOfChar(e,n[t][0],t,0),i=n[t],s=i.split("");for(var o=1,u=s.length;or&&(r=a)}return r*this.lineHeight},_getTextHeight:function(e,t){var n=0;for(var r=0,i=t.length;r-1)t++,n--;return e-t},findWordBoundaryRight:function(e){var t=0,n=e;if(this._reSpace.test(this.text.charAt(n)))while(this._reSpace.test(this.text.charAt(n)))t++,n++;while(/\S/.test(this.text.charAt(n))&&n-1)t++,n--;return e-t},findLineBoundaryRight:function(e){var t=0,n=e;while(!/\n/.test(this.text.charAt(n))&&n0&&nr;s?this.removeStyleObject(s,n+1):this.removeStyleObject(this.get2DCursorLocation(n).charIndex===0,n)}this.text=this.text.slice(0,e)+this.text.slice(t)},insertChars:function(e){var t=this.text.slice(this.selectionStart,this.selectionStart+1)==="\n";this.text=this.text.slice(0,this.selectionStart)+e+this.text.slice(this.selectionEnd),this.selectionStart===this.selectionEnd?this.insertStyleObjects(e,t,this.copiedStyles):this.selectionEnd-this.selectionStart>1,this.selectionStart+=e.length,this.selectionEnd=this.selectionStart,this.canvas&&this.canvas.renderAll().renderAll(),this.setCoords(),this.fire("changed"),this.canvas&&this.canvas.fire("text:changed",{target:this})},insertNewlineStyleObject:function(t,n,r){this.shiftLineStyles(t,1),this.styles[t+1]||(this.styles[t+1]={});var i=this.styles[t][n-1],s={};if(r)s[0]=e(i),this.styles[t+1]=s;else{for(var o in this.styles[t])parseInt(o,10)>=n&&(s[parseInt(o,10)-n]=this.styles[t][o],delete this.styles[t][o]);this.styles[t+1]=s}},insertCharStyleObject:function(t,n,r){var i=this.styles[t],s=e(i);n===0&&!r&&(n=1);for(var o in s){var u=parseInt(o,10);u>=n&&(i[u+1]=s[u])}this.styles[t][n]=r||e(i[n-1])},insertStyleObjects:function(e,t,n){if(this.isEmptyStyles())return;var r=this.get2DCursorLocation(),i=r.lineIndex,s=r.charIndex;this.styles[i]||(this.styles[i]={}),e==="\n"?this.insertNewlineStyleObject(i,s,t):n?this._insertStyles(n):this.insertCharStyleObject(i,s)},_insertStyles:function(e){for(var t=0,n=e.length;tt&&(this.styles[s+n]=r[s])}},removeStyleObject:function(t,n){var r=this.get2DCursorLocation(n),i=r.lineIndex,s=r.charIndex;if(t){var o=this.text.split(this._reNewline),u=o[i-1],a=u?u.length:0;this.styles[i-1]||(this.styles[i-1]={});for(s in this.styles[i])this.styles[i-1][parseInt(s,10)+a]=this.styles[i][s];this.shiftLineStyles(i,-1)}else{var f=this.styles[i];if(f){var l=this.selectionStart===this.selectionEnd?-1:0;delete f[s+l]}var c=e(f);for(var h in c){var p=parseInt(h,10);p>=s&&p!==0&&(f[p-1]=c[p],delete f[p])}}},insertNewline:function(){this.insertChars("\n")}})}(),fabric.util.object.extend(fabric.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+(new Date),this.__lastLastClickTime=+(new Date),this.lastPointer={},this.on("mousedown",this.onMouseDown.bind(this))},onMouseDown:function(e){this.__newClickTime=+(new Date);var t=this.canvas.getPointer(e.e);this.isTripleClick(t)?(this.fire("tripleclick",e),this._stopEvent(e.e)):this.isDoubleClick(t)&&(this.fire("dblclick",e),this._stopEvent(e.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=t,this.__lastIsEditing=this.isEditing},isDoubleClick:function(e){return this.__newClickTime-this.__lastClickTime<500&&this.__lastPointer.x===e.x&&this.__lastPointer.y===e.y&&this.__lastIsEditing},isTripleClick:function(e){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===e.x&&this.__lastPointer.y===e.y},_stopEvent:function(e){e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation()},initCursorSelectionHandlers:function(){this.initSelectedHandler(),this.initMousedownHandler(),this.initMousemoveHandler(),this.initMouseupHandler(),this.initClicks()},initClicks:function(){this.on("dblclick",function(e){this.selectWord(this.getSelectionStartFromPointer(e.e))}),this.on("tripleclick",function(e){this.selectLine(this.getSelectionStartFromPointer(e.e))})},initMousedownHandler:function(){this.on("mousedown",function(e){var t=this.canvas.getPointer(e.e);this.__mousedownX=t.x,this.__mousedownY=t.y,this.__isMousedown=!0,this.hiddenTextarea&&this.canvas&&this.canvas.wrapperEl.appendChild(this.hiddenTextarea),this.selected&&this.setCursorByClick(e.e),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.initDelayedCursor(!0))})},initMousemoveHandler:function(){this.on("mousemove",function(e){if(!this.__isMousedown||!this.isEditing)return;var t=this.getSelectionStartFromPointer(e.e);t>=this.__selectionStartOnMouseDown?(this.setSelectionStart(this.__selectionStartOnMouseDown),this.setSelectionEnd(t)):(this.setSelectionStart(t),this.setSelectionEnd(this.__selectionStartOnMouseDown))})},_isObjectMoved:function(e){var t=this.canvas.getPointer(e);return this.__mousedownX!==t.x||this.__mousedownY!==t.y},initMouseupHandler:function(){this.on("mouseup",function(e){this.__isMousedown=!1;if(this._isObjectMoved(e.e))return;this.selected&&(this.enterEditing(),this.initDelayedCursor(!0))})},setCursorByClick:function(e){var t=this.getSelectionStartFromPointer(e);e.shiftKey?to?0:1,f=r+a;return this.flipX&&(f=i-f),f>this.text.length&&(f=this.text.length),s===i&&f--,f}}),fabric.util.object.extend(fabric.IText.prototype,{initKeyHandlers:function(){fabric.util.addListener(fabric.document,"keydown",this.onKeyDown.bind(this)),fabric.util.addListener(fabric.document,"keypress",this.onKeyPress.bind(this))},initHiddenTextarea:function(){this.hiddenTextarea=fabric.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.style.cssText="position: absolute; top: 0; left: -9999px",fabric.document.body.appendChild(this.hiddenTextarea)},_keysMap:{8:"removeChars",13:"insertNewline",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown",46:"forwardDelete"},_ctrlKeysMap:{65:"selectAll",67:"copy",86:"paste",88:"cut"},onKeyDown:function(e){if(!this.isEditing)return;if(e.keyCode in this._keysMap)this[this._keysMap[e.keyCode]](e);else{if(!(e.keyCode in this._ctrlKeysMap&&(e.ctrlKey||e.metaKey)))return;this[this._ctrlKeysMap[e.keyCode]](e)}e.preventDefault(),e.stopPropagation(),this.canvas&&this.canvas.renderAll()},forwardDelete:function(e){this.selectionStart===this.selectionEnd&&this.moveCursorRight(e),this.removeChars(e)},copy:function(){var e=this.getSelectedText();this.copiedText=e,this.copiedStyles=this.getSelectionStyles(this.selectionStart,this.selectionEnd)},paste:function(){this.copiedText&&this.insertChars(this.copiedText)},cut:function(e){this.copy(),this.removeChars(e)},onKeyPress:function(e){if(!this.isEditing||e.metaKey||e.ctrlKey||e.keyCode===8||e.keyCode===13)return;this.insertChars(String.fromCharCode(e.which)),e.preventDefault(),e.stopPropagation()},getDownCursorOffset:function(e,t){var n=t?this.selectionEnd:this.selectionStart,r=this.text.split(this._reNewline),i,s,o=this.text.slice(0,n),u=this.text.slice(n),a=o.slice(o.lastIndexOf("\n")+1),f=u.match(/(.*)\n?/)[1],l=(u.match(/.*\n(.*)\n?/)||{})[1]||"",c=this.get2DCursorLocation(n);if(c.lineIndex===r.length-1||e.metaKey)return this.text.length-n;var h=this._getWidthOfLine(this.ctx,c.lineIndex,r);s=this._getLineLeftOffset(h);var p=s,d=c.lineIndex;for(var v=0,m=a.length;vn){f=!0;var d=u-p,v=u,m=Math.abs(d-n),g=Math.abs(v-n);a=gthis.text.length&&(this.selectionStart=this.text.length),this.selectionEnd=this.selectionStart},moveCursorDownWithShift:function(e){if(this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd +){this.selectionStart+=e,this._selectionDirection="left";return}this._selectionDirection="right",this.selectionEnd+=e,this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length)},getUpCursorOffset:function(e,t){var n=t?this.selectionEnd:this.selectionStart,r=this.get2DCursorLocation(n);if(r.lineIndex===0||e.metaKey)return n;var i=this.text.slice(0,n),s=i.slice(i.lastIndexOf("\n")+1),o=(i.match(/\n?(.*)\n.*$/)||{})[1]||"",u=this.text.split(this._reNewline),a,f,l=this._getWidthOfLine(this.ctx,r.lineIndex,u);f=this._getLineLeftOffset(l);var c=f,h=r.lineIndex;for(var p=0,d=s.length;pn){f=!0;var d=u-p,v=u,m=Math.abs(d-n),g=Math.abs(v-n);a=g=this.text.length&&this.selectionEnd>=this.text.length)return;this.abortCursorAnimation(),this._currentCursorOpacity=1,e.shiftKey?this.moveCursorRightWithShift(e):this.moveCursorRightWithoutShift(e),this.initDelayedCursor()},moveCursorRightWithShift:function(e){this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd?this._moveRight(e,"selectionStart"):(this._selectionDirection="right",this._moveRight(e,"selectionEnd"),this.text.charAt(this.selectionEnd-1)==="\n"&&this.selectionEnd++,this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length))},moveCursorRightWithoutShift:function(e){this._selectionDirection="right",this.selectionStart===this.selectionEnd?(this._moveRight(e,"selectionStart"),this.selectionEnd=this.selectionStart):(this.selectionEnd+=this.getNumNewLinesInSelectedText(),this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length),this.selectionStart=this.selectionEnd)},removeChars:function(e){this.selectionStart===this.selectionEnd?this._removeCharsNearCursor(e):this._removeCharsFromTo(this.selectionStart,this.selectionEnd),this.selectionEnd=this.selectionStart,this._removeExtraneousStyles(),this.canvas&&this.canvas.renderAll().renderAll(),this.setCoords(),this.fire("changed"),this.canvas&&this.canvas.fire("text:changed",{target:this})},_removeCharsNearCursor:function(e){if(this.selectionStart!==0)if(e.metaKey){var t=this.findLineBoundaryLeft(this.selectionStart);this._removeCharsFromTo(t,this.selectionStart),this.selectionStart=t}else if(e.altKey){var n=this.findWordBoundaryLeft(this.selectionStart);this._removeCharsFromTo(n,this.selectionStart),this.selectionStart=n}else{var r=this.text.slice(this.selectionStart-1,this.selectionStart)==="\n";this.removeStyleObject(r),this.selectionStart--,this.text=this.text.slice(0,this.selectionStart)+this.text.slice(this.selectionStart+1)}}}),fabric.util.object.extend(fabric.IText.prototype,{_setSVGTextLineText:function(e,t,n,r,i,s){this.styles[t]?this._setSVGTextLineChars(e,t,n,r,i,s):this.callSuper("_setSVGTextLineText",e,t,n,r,i)},_setSVGTextLineChars:function(e,t,n,r,i,s){var o=t===0||this.useNative?"y":"dy",u=e.split(""),a=0,f=this._getSVGLineLeftOffset(t),l=this._getSVGLineTopOffset(t),c=this._getHeightOfLine(this.ctx,t);for(var h=0,p=u.length;h'].join("")},_createTextCharSpan:function(e,t,n,r,i,s){var o=this.getSvgStyles.call(fabric.util.object.extend({visible:!0,fill:this.fill,stroke:this.stroke,type:"text"},t));return['',fabric.util.string.escapeXml(e),""].join("")}}),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs");n.readFile(e,function(e,n){if(e)throw fabric.log(e),e;t(n)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&(e instanceof Buffer||e.indexOf("data")===0)?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e?request(e,"binary",r):t&&t.call(n,e)},fabric.loadSVGFromURL=function(e,t,n){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t,n)}):request(e,"",function(e){fabric.loadSVGFromString(e,t,n)})},fabric.loadSVGFromString=function(e,t,n){var r=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(r.documentElement,function(e,n){t&&t(e,n)},n)},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e,function(e){r.filters=e||[],t&&t(r)})})},fabric.createCanvasForNode=function(e,t,n){var r=fabric.document.createElement("canvas"),i=new Canvas(e||600,t||600);r.style={},r.width=i.width,r.height=i.height;var s=fabric.Canvas||fabric.StaticCanvas,o=new s(r,n);return o.contextContainer=i.getContext("2d"),o.nodeCanvas=i,o.Font=Canvas.Font,o},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file diff --git a/dist/fabric.min.js.gz b/dist/fabric.min.js.gz index 82e06c318e610c2f22190ac22d6318415ba01f01..001d25b76e172915fc1a914c740713be9b0267b4 100644 GIT binary patch delta 50663 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 delta 50690 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 P_{skTcv$}}6C?uwjT+b^ diff --git a/dist/fabric.require.js b/dist/fabric.require.js index 0992022b..de9f2e02 100644 --- a/dist/fabric.require.js +++ b/dist/fabric.require.js @@ -1,7 +1,7 @@ /* build: `node build.js modules=ALL exclude=gestures,cufon,json minifier=uglifyjs` */ /*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "1.4.2" }; +var fabric = fabric || { version: "1.4.3" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; } @@ -12586,6 +12586,12 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot */ type: 'line', + x1: 0, + y1: 0, + + x2: 0, + y2: 0, + /** * Constructor * @param {Array} [points] Array of points diff --git a/package.json b/package.json index dbcf9958..128540eb 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "fabric", "description": "Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.", - "version": "1.4.2", + "version": "1.4.3", "author": "Juriy Zaytsev ", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "repository": "git://github.com/kangax/fabric.js", diff --git a/src/shapes/line.class.js b/src/shapes/line.class.js index 037371f7..31593497 100644 --- a/src/shapes/line.class.js +++ b/src/shapes/line.class.js @@ -27,6 +27,12 @@ */ type: 'line', + x1: 0, + y1: 0, + + x2: 0, + y2: 0, + /** * Constructor * @param {Array} [points] Array of points