From 4b1c58ca6e964d11fce9272430ba33ddaf87600d Mon Sep 17 00:00:00 2001 From: kangax Date: Sat, 4 Jan 2014 14:35:06 -0500 Subject: [PATCH] Build distribution --- dist/fabric.js | 43 ++++++++++++++++++++++++++--------------- dist/fabric.min.js | 12 ++++++------ dist/fabric.min.js.gz | Bin 53177 -> 53184 bytes dist/fabric.require.js | 43 ++++++++++++++++++++++++++--------------- 4 files changed, 60 insertions(+), 38 deletions(-) diff --git a/dist/fabric.js b/dist/fabric.js index 21e4aa1e..36d2f849 100644 --- a/dist/fabric.js +++ b/dist/fabric.js @@ -5858,9 +5858,7 @@ fabric.Pattern = fabric.util.createClass(/** @lends fabric.Pattern.prototype */ activeGroup.render(ctx); } - if (this.overlayImage) { - ctx.drawImage(this.overlayImage, this.overlayImageLeft, this.overlayImageTop); - } + this._renderOverlay(ctx); this.fire('after:render'); @@ -10610,6 +10608,8 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.Stati * @param {CanvasRenderingContext2D} ctx Context to render on */ _removeShadow: function(ctx) { + if (!this.shadow) return; + ctx.shadowColor = ''; ctx.shadowBlur = ctx.shadowOffsetX = ctx.shadowOffsetY = 0; }, @@ -13384,13 +13384,21 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot * @param ctx {CanvasRenderingContext2D} context to render on */ _render: function(ctx) { + + // optimize 1x1 case (used in spray brush) + if (this.width === 1 && this.height === 1) { + ctx.fillRect(0, 0, 1, 1); + return; + } + var rx = this.rx || 0, ry = this.ry || 0, - x = -this.width / 2, - y = -this.height / 2, w = this.width, h = this.height, - isInPathGroup = this.group && this.group.type === 'path-group'; + x = -w / 2, + y = -h / 2, + isInPathGroup = this.group && this.group.type === 'path-group', + isRounded = rx !== 0 || ry !== 0; ctx.beginPath(); ctx.globalAlpha = isInPathGroup ? (ctx.globalAlpha * this.opacity) : this.opacity; @@ -13406,17 +13414,20 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot -this.group.height / 2 + this.height / 2 + this.y); } - var isRounded = rx !== 0 || ry !== 0; + ctx.moveTo(x + rx, y); + + ctx.lineTo(x + w - rx, y); + isRounded && ctx.quadraticCurveTo(x + w, y, x + w, y + ry, x + w, y + ry); + + ctx.lineTo(x + w, y + h - ry); + isRounded && ctx.quadraticCurveTo(x + w, y + h, x + w - rx, y + h, x + w - rx, y + h); + + ctx.lineTo(x + rx, y + h); + isRounded && ctx.quadraticCurveTo(x, y + h, x, y + h - ry, x, y + h - ry); + + ctx.lineTo(x, y + ry); + isRounded && ctx.quadraticCurveTo(x, y, x + rx, y, x + rx, y); - ctx.moveTo(x+rx, y); - ctx.lineTo(x+w-rx, y); - isRounded && ctx.quadraticCurveTo(x+w, y, x+w, y+ry, x+w, y+ry); - ctx.lineTo(x+w, y+h-ry); - isRounded && ctx.quadraticCurveTo(x+w,y+h,x+w-rx,y+h,x+w-rx,y+h); - ctx.lineTo(x+rx,y+h); - isRounded && ctx.quadraticCurveTo(x,y+h,x,y+h-ry,x,y+h-ry); - ctx.lineTo(x,y+ry); - isRounded && ctx.quadraticCurveTo(x,y,x+rx,y,x+rx,y); ctx.closePath(); this._renderFill(ctx); diff --git a/dist/fabric.min.js b/dist/fabric.min.js index 69b634a8..ce2a3f0a 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.1"};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;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=parseInt(this.lowerCanvasEl.width,10)||0,this.height=parseInt(this.lowerCanvasEl.height,10)||0;if(!this.lowerCanvasEl.style)return;this.lowerCanvasEl.style.width=this.width+"px",this.lowerCanvasEl.style.height=this.height+"px"},_createLowerCanvas:function(e){this.lowerCanvasEl=fabric.util.getById(e)||this._createCanvasElement(),this._initCanvasElement(this.lowerCanvasEl),fabric.util.addClass(this.lowerCanvasEl,"lower-canvas"),this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(e){return this._setDimension("width",e)},setHeight:function(e){return this._setDimension("height",e)},setDimensions:function(e){for(var t in e)this._setDimension(t,e[t]);return this},_setDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.lowerCanvasEl.style[e]=t+"px",this.upperCanvasEl&&(this.upperCanvasEl[e]=t,this.upperCanvasEl.style[e]=t+"px"),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t+"px"),this[e]=t,this.calcOffset(),this.renderAll(),this},getElement:function(){return this.lowerCanvasEl},getActiveObject:function(){return null},getActiveGroup:function(){return null},_draw:function(e,t){if(!t)return;if(this.controlsAboveOverlay){var n=t.hasBorders,r=t.hasControls;t.hasBorders=t.hasControls=!1,t.render(e),t.hasBorders=n,t.hasControls=r}else t.render(e)},_onObjectAdded:function(e){this.stateful&&e.setupState(),e.setCoords(),e.canvas=this,this.fire("object:added",{target:e}),e.fire("added")},_onObjectRemoved:function(e){this.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){for(var 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){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._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){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height,u=this.group&&this.group.type==="path-group";e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y);var a=t!==0||n!==0;e.moveTo(r+t,i),e.lineTo(r+s-t,i),a&&e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),a&&e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),a&&e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),a&&e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){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+)?(?:e[-+]?\d+)?)/g,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-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&&console.log("replacing MORE than 1 char"),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},isDoubleClick:function(e){return this.__newClickTime-this.__lastClickTime<500&&this.__lastPointer.x===e.x&&this.__lastPointer.y===e.y},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.isEditing&&(this.setCursorByClick(e.e),this.__selectionStartOnMouseDown=this.selectionStart)})},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()})},setCursorByClick:function(e){var t=this.getSelectionStartFromPointer(e);e.shiftKey?ts?0:1,a=r+u;return this.flipX&&(a=i-a),a>this.text.length&&(a=this.text.length),a}}),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){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file +e,t){this.x=e,this.y=t}var t=e.fabric||(e.fabric={});if(t.Point){t.warn("fabric.Point is already defined");return}t.Point=n,n.prototype={constructor:n,add:function(e){return new n(this.x+e.x,this.y+e.y)},addEquals:function(e){return this.x+=e.x,this.y+=e.y,this},scalarAdd:function(e){return new n(this.x+e,this.y+e)},scalarAddEquals:function(e){return this.x+=e,this.y+=e,this},subtract:function(e){return new n(this.x-e.x,this.y-e.y)},subtractEquals:function(e){return this.x-=e.x,this.y-=e.y,this},scalarSubtract:function(e){return new n(this.x-e,this.y-e)},scalarSubtractEquals:function(e){return this.x-=e,this.y-=e,this},multiply:function(e){return new n(this.x*e,this.y*e)},multiplyEquals:function(e){return this.x*=e,this.y*=e,this},divide:function(e){return new n(this.x/e,this.y/e)},divideEquals:function(e){return this.x/=e,this.y/=e,this},eq:function(e){return this.x===e.x&&this.y===e.y},lt:function(e){return this.xe.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,t){return new n(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},distanceFrom:function(e){var t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)},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=parseInt(this.lowerCanvasEl.width,10)||0,this.height=parseInt(this.lowerCanvasEl.height,10)||0;if(!this.lowerCanvasEl.style)return;this.lowerCanvasEl.style.width=this.width+"px",this.lowerCanvasEl.style.height=this.height+"px"},_createLowerCanvas:function(e){this.lowerCanvasEl=fabric.util.getById(e)||this._createCanvasElement(),this._initCanvasElement(this.lowerCanvasEl),fabric.util.addClass(this.lowerCanvasEl,"lower-canvas"),this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(e){return this._setDimension("width",e)},setHeight:function(e){return this._setDimension("height",e)},setDimensions:function(e){for(var t in e)this._setDimension(t,e[t]);return this},_setDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.lowerCanvasEl.style[e]=t+"px",this.upperCanvasEl&&(this.upperCanvasEl[e]=t,this.upperCanvasEl.style[e]=t+"px"),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t+"px"),this[e]=t,this.calcOffset(),this.renderAll(),this},getElement:function(){return this.lowerCanvasEl},getActiveObject:function(){return null},getActiveGroup:function(){return null},_draw:function(e,t){if(!t)return;if(this.controlsAboveOverlay){var n=t.hasBorders,r=t.hasControls;t.hasBorders=t.hasControls=!1,t.render(e),t.hasBorders=n,t.hasControls=r}else t.render(e)},_onObjectAdded:function(e){this.stateful&&e.setupState(),e.setCoords(),e.canvas=this,this.fire("object:added",{target:e}),e.fire("added")},_onObjectRemoved:function(e){this.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){for(var 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._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+)?(?:e[-+]?\d+)?)/g,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-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&&console.log("replacing MORE than 1 char"),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},isDoubleClick:function(e){return this.__newClickTime-this.__lastClickTime<500&&this.__lastPointer.x===e.x&&this.__lastPointer.y===e.y},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.isEditing&&(this.setCursorByClick(e.e),this.__selectionStartOnMouseDown=this.selectionStart)})},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()})},setCursorByClick:function(e){var t=this.getSelectionStartFromPointer(e);e.shiftKey?ts?0:1,a=r+u;return this.flipX&&(a=i-a),a>this.text.length&&(a=this.text.length),a}}),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){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file diff --git a/dist/fabric.min.js.gz b/dist/fabric.min.js.gz index 8ed5c406f8f540a4d8a29460184d250e175b05db..264aa91d39ff6c949b24e0fed7959bce8aa68b74 100644 GIT binary patch delta 51947 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%0D{o%by{iYA}Sxx^ct`v%>EJa}7=?XrDu zO-=(nf2Kq%qfD4^-0JQ&Y2ppge^4C2RlsMeVhOh{T;(Js!F+o;ZrdLxEeR?a5cVPEEfX;9XMN!#(k=P)c=lCXvI9yVv_;jca}$;5e4 zyQb23>~Z;;=Y#D{+b(Oef8r28Cl8$0Kq3yF%O|x5tf6^j7QWa*nvQ*|Wl7YdimnypWXAyNYPb=u5aH)o4Vz<%uv;dh$YdFwDzaRvx5ec7b@bl4-N5tO4W90VGsn9z01isrX2nAQ1qwucCt(4$Lq4 zEn6Owk%I5@Vvf_D(3NA9oeN7EZGXZP; zn=}Vv+ri;`>sM`#f5fto^X3}zx?)TNWBRPC%D9rAJTakyju&Fv62ce;);Pxd${Ai4 zbZX7Rq#5u@=4?~)yGvHA2%XQC10EC8&q*ucL}+*FXs%$0nxHxkg6as@muO>=t1qfv z;As~9h^7r4%aVISB6EPkATt7Su4#B&3jIe_DhXwKXqi(Ie+yXuHRHmx_T95c0V;HPDB|cT8U^& zU24L+jG?vwzqkjGQkU|b1JBRuQRGsc`~FIfXU|D zZJgJ<+qCmg5TWSM4n#jZ+U8A87M@iRKInR4=JDnr3pg|}WO+a!Ok5WnuO*bJv?@WO z%u`J+h(q&Mg`wz-o~n_+p;!+PbxeA68aKg;qL_rMfB3P*oJ#Nf^On?#mkM>FAHwJa znh-Hown4iNC}#}OCR2$nb$Ci03o_tbK`#VMV_ETCO*kFN`VK<#WIREC?rowR(Xkkm=(x4nE5HpUADxT zOXP=Oe{T@{z;|T6&AiJAXNM^;v{BzDTlK1VwUmDH8ufL)45DIiD*>+USnsM*1=QDh zB?{ot4OHE_#;e9C1X(u<0^60J>k{X7gM#QAwmiTGOltxBZHP zb7@YqMo|Oeph*_w8ZHaTeO$wp!EUi!4Er5r4hTP~G+M&THkYi)P*P-&6&EPDEtnkA ze_^HUn8phLch(nsGTz4i(W>h?z4N#H;L!b}+M4`LcYA~dsk>tk_58ht8+O4paYams zc@YN7a`rp2`w`*&4P6ivTv?9JX3Y9sBbPSMJ=L5T)!-?No87gX5P6R?vP*@(3rtHv zGF}%tViqHe(WkHKoPe^wkz1&C{0SGGe<+_kS(|4qgRE+*k4t_OICf-M<`CvT;Iv8L zSt*1qMme6Q{IP^~c)s?_T|XBa2R;ai@l`ZYXff4APc7jhu8g-HK7B;bVoF@bYqa=K zd+m2*-c~qJGAe3GPQ|&F&J$ay8Niq*_ir#*vDbCviHtmf#R7oH{<+SUOZ0)fe~(B& zB@uqT1K#i)&?H*)O7ba{L*Iw{#?t-DX?JqyG!4y8u)*yxl<%3fDJcXS_Wr)+ds9Gg zqo=<`&=@&V-O&^g2YPI5u)(&3s<6{oWjA(WHg*ybCGfajKf1-;!+WShVlOS0`AVuS zIfqj$O(!C~=`q6RL*>QClGKV0e+rkX?1j<`&;vPt1DK^}tCf0C4fD7#=Bd>ZWerdK*N8smZR#2p`+!rzMw+IgDcPjB4-WC!ghpZ$f97T=GN^Ks z{D$3SHFn}Qwo#3psKz#CV<%Q)C!(<&`x(6`2CHn2lCx9lBL3~ADl)-GA3KPTfY_>C zbVEfqcF~Ppbd!#dn?pEZ=MA2BU3s;2<>9@ROU90ZSdu7!RW|OkGOZvl+whB~UlW!B z5x3$B>euvxcVrbdRxajdf63A!T=&Z!WI_Zhnq)N7S^DgoQ7=P@I?*S>y3&kqHo-7# zJ>7YX{SIc7H)WFX#b?UT_hJGHq~ln8p72k=aIyVx6bS>l9+I}hpqr8;x0r_HhlcL! ziX5x0P=EliGITc?R#E!_*5(CU=IwCi!{WtgI!gLzxDb~ntauoOe~#mI)K*Pu^Lk^C zUXzc5tPB9Rna<+P_k~dD%~I@Jua>9SP|>M_3hcN7?0=XFl38Py5RQxv?z$JZ8pe*2H$Sn3=e zyQH+9*0Y0aKij(u=yA@n_5J7`Pj+zANNXLLULDg}s75)2mvmCivTAk-SU;@=ABxF8 z6^LG5Q77K5`7=h1>J$}8tvd-euoWmfJuopbllv_b*mTJzf0)N_k($yeSt6cRh2F~6 zjjqd6X6voVYH!^ruRWB?su8S1ue#37$8GusN;IVj<7O72ns?XN=y_&#h)w>gEi4lgj^O z=<|;t5BA+{QVfKWhJbe*S=m7R#*W9QI^|Ksc;4(ljBNi7Gko1e&)Q06WcaZ@FnxSL zaENX#C+*%!%+~9Cq}!p0RYx39P&Bp|^rQ%scItq?f5rUOWxkwyDp1e6<>~={Bfj~T z8mV4yCBCd0uS`7{Z`)5vTcp7w^kO)=*g2=|?1UL>Kj*?L37IaFRQI%qg5#4OWlHr*sy3x4xr7J8 zxG{Hbe`4CNG7KW~#Fb#Zq3d%v_-KR7Y4R%jT?&}}TIk0urw63V>}>sA_u1~x(z~VdI`Ru$dm$2^A1Vm#Ez2G6@gO7*>KBAjm_&ti1OQYgZBPV5S z=U}#tMRF>!u8+~D6tlwwML%fL>oE>0;B4B(e;#n>VjW>l-}?QzD24NE*78JQ#W|Mh z#tO_Bc~Ta8EZW80jkmnTIa%9Az-;d$!n+7x9?QK*%#y}H=!_gZ0V{coo169^kyvlL z=xEFO{97iJyU*F#o@+gNhyRd{S@d~=Vaf@NxqDoP3HDei754!5Z)yA)UREYvCG}MO zpW*PKDeYUzb@`jwDn9bsjrj`5M@=O`HYMxI$M15$o}rw#7;Mna($fxg4@hG zg<;+4*TSq`F_1lZTp#N$3GNW>GRf*4fA-m`?7<~49IiZeI1^#Yns|s5r(Cw+QA%{8 zSUH_6IgeH;k4;cs+^jYZs7xShaH{ruebb5^F2#qtrq^o>B23Xj%^8~Ya-xLHY=qZi zUaW~iQvoz3<cbX5$J8B9OwmEaLb~&kd@s)YHRxaLC7&H1vSmFgi zxk49Ex}iJEaN%vM49Z{ZEOT?o*wQKVH;n5l)!@FY0sc0h(LE~E**&2ve@64?=!u~N zz5q@crNJSfUs5LYHFE){bX^&Z{J?qm|6?PQ*JixG{qE6VLhTz2(Az3|!i+qv<_9TVE z{W~9CSB02nRDwZWP;Zj1;yQ;>iH_7&wWg`7##Tn7;#QijpXRWue@;p?>Y=bR%nsX) zW-^(*kw;$Yi;Cm5UIi|c^=766!q6`2V{$)q_4}*;67cYuWp=isC-qk!TSF(3s>pxv?Ai8fav1bHpA1Ai*#3KZqFkoI0~ zM5==b{WqCAvj*bD4d3$ZwbZRtRK2~iT8 zB)TiCzo-Dse{j<_c&A;gle>0uu+Hz*c^G+F!B^!xU*r~-j(qaU!HHBQZy{JKTm=2M z6KT%YinI=m5>JpvP2_Tq^E)BGE;x9sOKQLEv@`bB?~Oe{i8rOW=`E&3Y`qnrFdthq zr1OYY*;l0Z=&j1sO?GPG?-e$xV!;K^CEErqWV#a5e|%hE7I{n-KFR?%!u+E$1(RL z0k?Gre-G4^xU;TH4|k;NT2x!W1(O~XQ1gb1{1R2(Yd@__3#Im5h$?(aUYnBEl7Z# zkqttL@42%H#ac-cbCr|YdZ^;)rkxvKCP?6+Tjd%bJK7bR?{Wf@GPR?povkHpw6~2m zr+18`$xywrz5a=sDbJc`VU+?T_7bM==uK#)FuAZNxuqnZI1%{t=r!K{H83l zwW%l76re&bVSpp4$5nV!uLxzo8ZZ><#IgHiDKULxih#ha3m`Y?AkBERdZSc`R}y+C zt|%5}6ZYHZ`yn*Mw(zr)0P+BCfuTG=f5JF;j58|FHt$-1F16)JF(4fvL~{yx;x)-A zU2>dj0PelVpe>A2X)pDiDrFaK(~$lG9qNw-sXi8D%B0b1$kNEoq%_Uk2#9McfpOh? zNwVYQayv`KMG&LEwkRpJ5eivBS#XVC>`AM&OW{MNhpJO%^zX?ZA(VTAwyn@S3T3GM;R$X-D7%y29B~5FuOuGb zg_aQ)I_R#cwTPgZtGMWDbqheif6twq;kdo+uvOSt`=Wz5I=iS^9?3iC7^9x<*x$NP zf$r!;tn}NZeysy&ySbtsKyG;4(_mj|{B(o)SXfPVZShF?uiS?h!_L~TpsmU@%Y#_% z!zi>A>dLkCE}l`G)f`2nbbkkiX*#hzj2QHf7rRxM(`MU*=$JOft?E|Re zt^N@?hI)B;qRINy6&bAAFOU=VUO-{OyX5RwyJz1{w(aF@xjhi{w2o ztY|4op*8yI**Bx%*U$Cblm2bqOTUHn?WJf(IL^OHzl|Acx(HtqE)$U(nI-RO(%$SB z3CkE!a!8y^6VAkSCYUU7@c;IaA@YYg=`UfTO2$@GLB)0 zp)f}#)$O+4>cs9}ujWXf87Z3P5(*k_q9vA0(Y7=*MGaiOckG^~ca zZT>`!MCGqkv*~-Tt$&R=&#uVvSX7KpMPY=T9!a*grBIs=YPcBWe+|0|N0CD2xyEdP zvNfO4xruS_8xo<){J6o3K(2M+k*RMlR)@Z*BZtn^6OkG380Mj>rL6VDo(dtI+$pWz zA#mI=wyjTJ!0f;dAy_SkjJy=-7}_(qqsDL>jni*%L?ckfB!!$g`N>`q2>bEWC5Aad7s*wTpn67&T z(}l3AdEg(p=1Te0AY`~UjX7fXIjKNBQe`9ECYh1!t^ElbG=9+YB@s_#oz~t&w3?84 ze3$^9P@=cvI$lR;aiEo>;W-+SW0|74p7P0)8h+MFSa;?Ze}A5#!t0&m>-=z$P+|UJ-O%MlFTW z_PeUbIKF1~d6vWzsSc6UdF_;pCz3?L;9722`-Rbb;PumT77nG}3_C6Mdd>XWKC`+} zm<|WrcgktAf35I-e;+cmO|6)V*kA_uL9jyl6xB2S$(=yo-;ZN7gmeWX$ydvqRTz^C z6LCzNh$AMN(4}LxI}xcYw^g3q_Z3w7^vQBP{gY}2ZMg#JT}eDc=i@2#a^oAGK_qLC zAz%1?IJUspZ9Pi~IS{dZRh5u`E{r8tgj*y1^^esBe;Mk*F9!78|6AR=wzq90iNfFa zSJ0R}HXwo&DaV-^Qm`J!u_xJ0oE+Q9#IM5jLL?+%Ljeo`D$>fD-~QI6?`V*e>}2N5 zJh6zrcXfAlRdro#Pp8(B$S~!hKhid^hB=&`s2yY*S$lL5+@0+>L{%?j^2w~rL#lqx zG+#P$f26tDXrG*?w&w4n$q3W3k0)eOU>l)BCh?O^am9zQvBfV%=aWy$t-;#80SaOn znLzm55=$uzM5T?U^xY*{Gx~@tvX!7P>@bx93q?PC7~xMCKKzQGG%k3^*&pu*ef6`1@ngc5$j0aK@1`|VALo@7H2sU(u zfW+zJQqYgRgwh(^Mj`zbDFj+dV|SCB${?j={z>VlQYf5VtT=3qFjSESDkwzYNu5TM zRBTx5MaY-dHcXVKTV9j~u3&Uv9TDC!xoPK})CwBo{VIn4G#SId%T3_bdT!zw+L_pQ ze?@Cr4*BIz)p3SC@)*x=jOPd0{wC&)k1U$Iphh2&Ot!tn$~G5tTnmoJ#Zi*$Z2VA~$brmi-$d~2xr_!r)p z_IbX@j5!k&j3lSG*4VbpWOLmGkQxp8e`j(sZp|n(cPA{CWxBvs#{II)>iR$4eD`YO z){+&lpvb?C&BRu1Bx5sEu>me`*09e|_(@S;f+MUtT&2jL05c<_uib5JiAY?BKY$X>V7xTd$nP%_1~pJib_!^ z5rc5o``XtiY%Ta_*u_fGTR3(?)x5}x&?ql|etI1WYJiY+Bh{U$Ha1u*}po(XoOvB(M|_32U8-B1m20YgFX5E4^vp5Y5lMl|&xgkfKvF z@)iI-Sl3w(*MHswS}H&=LScdUN%5>uaM~sq$bBd!H|5LxDqGN_oFA)@K7l`s7pfO@ zaL(x47uXtfNhu=34~48&&WN;=EWqq$VuAF$=~9~H#wwX zBxDX6%WW~3!~yyHc~-E9ZZiB#WYLrT%M@jAFdn7X^KA-S^orZK$XN@3I~b0}v6iAD zXoQPE{3+zAw04>^5ubuH5MS1tE2dRu0$UtSJ{xre6U&SFe{#LZgk95*>2jS>!;GbP z+*arVtYif-kO^kQH#3lc^R3Ej{RK=R#nkVs5=PnNFa$g=Jv=BqIwn0nBt1SN{O4Vd zjtBkwt|!i&`1`KstU!+!xMysep0jCs)_&>P8>Q!NkRF}Co;Z&^+{8V(lY6{#dJM## zSj?VF9u8}`e?;Nd=><_&knBuz^B8!yEQFU7EdDnPMVJ+?lXV;fTCCw;4n+9|U|9pb z9&%zY7oq)t-)V-j75!QaBf?@qjF*`%AZkal`&LlPcJF+iyLuK4bapJ`KgxcUXJBlf ze_1_<72ethmuvUJ>1uw@VeysN9i7YW7Wxo{*$Qy}6C_GqJI{cA^9c z?ZKu))5{KGOqInUk>EH|8YbVs0e@SreaE>txw1nc6IW9>Onddix9?xRe)jzB*WbN* z|K-)RXGnU00U=a~B~@S~ilBkwg@+zLP$GaKawN^X!W0pcCp5*; zk)$C+vXDbVx{j012UGnV${8NDljK5RqP%k%e_-PH86QqNPNHmyldU^j4An@Y5G>9; zZj@1p&b@9F5lQYH@07r__I+=SN2k-EM06r^PpR~GR{A?kXUeS7`Z=tIMC(BWo!*Xu zu+uwG5qP3{DM|83k|W%i2y}0JxGP~Ns+FK*MPE>w_>gzLfps1}G(#W@bk(BF9Ik+c ze}I-)%tvJa@h_jkSe?eo4RZ=^L5OozuGVTtJ0LfU^ z+UnVR$WLqwPSQ4;sk|YKEdH7IDQqhqYU@)8w!@ceK zFZk1;;4g!I9x5~w^@FDY`3>xv_;EI)f6HR>Z*9dKE&CK)OeC+5!ni(A1O?o8c3jL@ z1+XV7Hc(ME8n8}Jz?MXkz7AFDWbp^=LBYNoJ`EXNHcj{p=^6zTsYk z%R>;}AzERX4Lp2U9FC5R>mhkyoXrA*r~qGU^x;-`XHwKeXuh;yfESFhY1O{=H#Sa=O$42kCM4q)GgPZ5ERz;FbRIFM~5elt9#&Ve?8Ch?x zobbRzXOad}p6|qyVTaY;8yy#UfO*9N<5X@t@D|pC_}(96YbB9JaD-?XW#I6avZkQbR)4 z%v>v2fhnDiSoMbeNeI;x%V}V&(hSdmw(CH{2Bupn(*?D1Um;*kYI}xCesC8{JFUMR}L zEMU+hz6dsw==ug0MH=BoE~d!|e*hOG!af=tx?7zwHu;?@K_nPhP}D1#C) zPAPr!W1~sI%*8_`e}1uCf7{t7kf3r|+VPWBKty14%DnTGd8Y`1`;I#Z?18%Da>qcy zt>_HmYWVvja7sC(19Msx+ofZddj?GEfwAYTBXwHxrHJmO=^N^ zn4X>jLGi|999&eQV8Eq1pw3&@i_;zc;3ynF^refpp@;rV)EgXHsneERjRE=s2t2hNk;)WjAu2!QhP{pt|6bgjM(gS<>8AFKb{!RMTK}T z;;uzDK3^#^XuC>df8jgLBn|73jf`c+hZ37;+ zcvmVYfEuaNm>PpJNhl7+cA1O{L6_PlP`l{%o!k~(jR=6_16Jh#z+Yv~nf4TB0DnrlY)@!K6lH%xU zNAp&+8d$h_d9hk%SIEk@-M5c$vpK3M8`xAB zq(|6`2eW|9S*XofB{y2&J2{>K6V4+l=ns}1R%47gTpb(**kZa2CIONpDaMvUC2NF5 za&t9Ce+J|De;WT@kK?NY{62`U@$dD)EgP@Mwjx;(QW8v#b;1EA9Ow{B$WRuBTv`Un z6`LE=Lo*+PA)$?!N?;A|8@{F{c}zJIgxKq|6I6f{0u&a#pb(NY3EZ_u^F;|%JR=4s ziYp;l6++O~-R!pI7h8))JhViszF_5Ii&K*gu#jbkfBrLx$oPzW)fvQt-#@t&&-*LG z%d4#a;~nb%=&65)>Q-&Oown3AoP-)d6Lj?GmQy{Tr=>D0x6lq%WilIWw-OS?*`6iD zGcU)9)uE-D;ne^|)z|Rr8h%~h-rg#Cmb8_cXLVfypQK)!VkliRPJ$Y4t~53D9{Q< zOtl7EYawwULlM&mbw?@;l3C{+_Egz{iK*UTe|tS!{gSs(M^N=V#sd^*)+>s5-Dw?y z-wo*7!RG_|_N8h8eFxxqfxg3HeLT=@?9z5**tYV*>e{IeOw%TE{6|OHq+33ObYOdl z7$teO(N@-esq5(5M59H_P9TAeRLHt(TX`{Vy=9AG1X#7r9zG;5Hfpn#KoWX3TfJek ze{r4mR%_Lva>jl`^3%89>P`ENYk78Cs}>cECZRZT!i-SugWWeHp56wZRP%UX@5o`j zK7nNv!R+gHRSdQ(NF|4+-=L_uVOOFYGT(R$R~xpj!FKSi4C|q}j*wNb5NNk?y7-@U ztp@E69;pFguytbffjtrK2IeL5VtWP%@}pjwC)cc~puy5Qo~fxb4Q?q9VRs6uRdc z_{AkDTEL%cVt+j)DlUQEoReU688bG--BA>sf3*AFk;gc8zw< zf!R=S>j1~|PAq@-8qHn3X!!z*Br>8CAQ_hBPI8U?T75eOxE_N3<%-lP@ zGC=PnzeKrn?d%5m_Klueo>yhfP1V*TJ35FN!2tfx0lINul&Bl@2peu-q$nqv+>~gL zlYMp=HYG8lks(@J-rllbZ*$mPR>5(NgdW_Xqxe)wmzM0x=;kzOj+f-F;B;6HuMY{@ zr^5yRw7e9P%XU`?_8ODIa1MlTlPY%_F^%sw(~5;4_NpK>jJtX&Vy&5_7}weicd3uDJ6tY~4V|MZ*4+_Qiu4`Q?H7;$cuaprB)yC;n#l#mD?P(d zrPuITO-^nNuSLRe3|mo(4|cLdnLGL;YBRt!#=VKioOYdkni9OQ4Qg{ZUpK}WUZ9g_0f zXn;u7u+$C(oL+yH73O`^u*`;b8kJeW85F)JzAZm$INZce1L30f5O(pJ(cb=mgx_4A zxte@d>?3?0Zt3eC1?y@V{^`w+fBX8&_kp1RmM{826lh((Nl=spx)SaZyl-ew6fm0< z1|_1=qD3yWiG^SkNC~W~>g7uu{tw(nWL1YYqq#>7^QeEFq|8HodYNu{%W~9u^3sZ$ zN8Z#)@L7OTdZ9#3IF|Jl>?c+;XA+D9>B>pyHXjASBw)M3oV@1r&hy10E2e>T?PM8< zV0WmLj~c+i5o!zI`*_c@T&%Q5%Qb~Aq)z>@Fq)h60*tjj?O{-BN*OTI0SSejzJTQ* z4hHioI}d+Z|2e=MlJa&AE+1yqb{2tqNkD|uQe@Hwg&&#tmN0|gYe)ik#OX}zh=3or z;IwQA7G|D6X>V@$^OL4L9R!dHz`fB%EYO;oL7#2fs;Cb;mOifOBci>CVw$6%CrsTi zzY)2(x8>Gj&Lm03Qn!(r6Lf_~8-#3pmW1!-M}gK=*J|EGVW z9*rQ?<=&}sT#QRc<}Ok~8*@d3d(|(}I)lCVZCd?edO1?j*Jl=C(za%kN~xqBWM)94 zjAkExuq!NW$?H6mlsPWDZWjM^en5aE8#v*Lns9ytBW7? zO+n8@EjRVn3%sFrZ8#s0<~6L*DKxQ__xyiMMza+3jT5aTPb$)gB2j(~AE*?C7OnVL zFQvCBNpB6l!x%^|$MGZIfMFV0VqBDok}Gu70Vw3&SNhckwn`q0X^_xIdEaHPuC>pEm=rkvXDM9x9R)$+*p#v>8*cU z3M&?XS2&Z|FMsMKNk4OkpFJ6vNv3GyV9ya=D98yUOv&viKN_8!r)yFKemTs^QCz+qet4gDm|!*26cbSFMn>&Cwk5&V$LUKR;{wkiJj<)o$$oecuzE> zP8d?R{Gh0MmId|1PAVIuCwlZJmD97H^NE;qW7g7H1BUiRd(Ibn&KJ%)U+B?aIO}|& z!Exb$<3fYuLa*~h)9$&^JvUCzjqbT|dTw;jjni|Zdv0{k?HzWZfpg*PunT{^5Esru zTFRe4=|kae6+{J)bx|pXi=XoSsi~&nE`7J(K2h)nBtP*5j&1 zK#m|XNIQ#}%S6!Ht;up@lPA_FcWbi0rAcd)yG^{mapC}5!^qNaEv20VnYV`Nn_SA> z;R@J00L1@~f3*BD>>osX2UCB;zO3cfLpmyFcD2hz(%5ISXtF*#tQnCJA+D33PEgFdkqDa}wN@7QPY6^d(TO5PRV>%&C zOs6PodnkR_F_Xc1U?mP95l8?4&`E}hQYk@Dip0WEoJPX?v)_GofOHxdZ&sL6%M@+cR9eSz-{jBN zU0LriB!u;SYJL9{FOz?;7&MWUHgBc9i-q~Jus{ z*29E)slRj^1XNZO?m%VkTq=8j2JXPIc3}x~uMeElYo3k$1Dx!n?nE~`HuMe#M=);V z9&nvl~F7jwi_n8pS!H|!unfg+yak|+~ zxzKwNM!}Xjgpq%AKGWF@Im+Fwp`_8moOY28)7=htXb!Zbb2Qr%jdv(r@*|JPMV-%f z77@l6leNNsPxxO-x!`}vq2mRmUz~6Xe#pp0o+dvwuFK1x-hcVS>t`sio;(?i;?t|= zrk$YAs_y1in9mt7xh1cyW$~QMU>jJ8g50)33JEmvyS9J)r(3E|MSg+Owwt<1EB4DY z$prR8Eo(So#e$P1UgS}R5sR1>>x!LGQnoRtSPsC_`Oi$Nfd(#WJ8}t{#p|hXO05_Dz-4AT++V)dH?X_e6`A-6uct|oqHrfcEH`qjLmX-zl z?M5)l9`AnyN@WR~*?_#?ql18l*#XK{t26SJT_2BTa6hxS+DtSYhpFcpH0B|+ODNYY z9myvXjh3rqM7pse{#bRGPpf`EYLX0YBA~M|tW!Ra(XiyIHL=+&U~c0Zeg8xp4$-P) zxcJbeU5wuXgU8K&Tu;#*wDi=5Z-Pg*MyY@~J5)+9q6ymR$N$Jw@V{V)3|NS9JA@-x zNRYf}eWVCJg4r=nX{KE=WYIK04;vWph@1eBzm24f;(zGyf@pDT>9*Wtlb< zbd&snY#F?tqc;X}!9e~P#^{7$d`nnvcYo&ijjr^Qfr1u)mU$@E& zTQV8=EIZ>y7#RtZ*6cEAyaF`VK9&Dd!7aQJw<(e)nB zk_bhg6F$x+V`|6$l+rPhmJ4?3!-u(LBXl)B6h98gv#``+f4Y|G*PK4hOnorr;&6O4 zniPBH!dj8VxPXwtnGOVnl+DxDV7$FKSw?SyP44c5%OFbtGxf-OIpMvpGnC`E-97631aH$ox0n&A{71oZhQwE*@MxV!uxD$>HGSY)Q9@HH^#4JH(hwEv1 zD~2wi0e+ym|T22HQGr|i)r(9zS+#^Pr11w{v0IsB9Dx}2H9Tm8(vt#<;BKj^k z#BI|H;zw8GBzP1%BYPC|uATI2k$!dHls^#Vo%CywPND40ETs?`V*dWqM*!s`AQ+X} z5e6sLDo7iBHI3PG3ohpH+1t0Tzy9Kfw=dqmdiL#$e>ZpofA#G3i!a}+j5p{5ZJyF3 zVSX?b7`5r?U$uoalyLNw7zoyIszFrQvj$Mw$-2qNfX_P&6f7U-u=&xiUk;m{|6U!4 zZ~SY8jpk;;IxfPTogEot5|K{YC+s-G3n#7?g*HD9(VB~JFxN<))a;!?YiOLHpO zK`_C^m}EpQ>1$lfI+hbg_lz5fr)=xxZPvt+0ohTre`L{}_U!wb5<=zNcN3PXwqPl4 z+`u`aw@-$57`ljg=2uBD3VQQv`tvA$R4FvUf1U1tK6EG%r;K(uyAzgaQ$QRp!G17n zy@9aexs}1!kW_UwKcIoMnukLBSOgjpUmSeMocjovT6D~3Kc$)1GP*ts9e2U%swQn( z-WWe^uo2bkyQhhAw|KdpsJshfKxH#yme`XrO%M4b-H^yA=%vyw31tVo#G>EG!AXcht_~%ohrs|5w=POM*bMiGMUpvVHkr@OC+%xzJiVClFG8VU1{Ym8A`{nP>hnZRJbJ1;VVt%=Hxbg6Pe2; zy2#wMAah06Kz;S0rk?PRD{jS%njdh_`ai6-f=58G7`vOCrAf6OnUJX3mzCC~S zBfA+Sm>=LX;aXCVugdwarEnmNS>%A#7`?$~?3YqBrMz!hZC#6EiWk`siMC0$y#}@z z3BsH%FM)|>L8SZ5GQ@7|5Y1EW_;x5yd^Gqp{0iQ#^q`1Lh5ML|4}@mAIxon@+>yKC zOG{?)NrPl@cgb{d+(TAp4`m1KLji7!l;_v(+f|$l~Il=@ny69c{ z6t`r?7E!P)wu|6pCCYXxaUp*t)wndqV!4~9N4KbQy@&kympN>pI>%u41v!5JvC_Q8 z1w-Mj*dXkkYTD}(J$-Hx!1!8|4G zP2h4abDYnBHp8%2@c&lMHRbfQJhU?9p;G5U3q&;n`5iD-Wnijm<71})U69qrzR82Y^%|z zelS=Hw)aQgK(6+2<2WiN0NW0VDfo~7`T{KLy}j_+X8Yv@rFOl$py=*bmq3o$?{a6E zR`%2n8Zd-SOq6xaKatEVf!q@F*}w>WYasx@l1KT z-+TqLaft^5D>Dzf?u-g{i+SnV$CUj-LT)qa19+5H~x;vGBYuH#nHx zsw$_RDnGWXjAufoeseK7h?nr+`D7el!hiG0=W#vxEdCY#Yal(H{P}j;A{~lO(xFO< zHjPlUX@tT@V3dDJ>&Zsi)WNk_=p*y2nsd}yJOR;7;m{P2xRIdXda^;2nkZaqBE^UQ zt)@(p2mWr=5Lv($XAiQrrrm#Ii~p@`AWap!Kt>)FUW2m;SMQiX)T5I>3&fpF!#_d; z)r+*5pQEIjeuVqS7yr9Fzns^&f~NqFO8u*-?W`IZ7!Bs|yn#`C?(qA+}dCUvsB+TS-q+)K~dnf=%x zB)|BM-Pq3#w;MO0~MN*kv%ucWLfND7Qngi}u_X$pb(M1;B^g zTLupw%HQ7xM*&laB33y3h_mCx%-i(0E|@-5!}DO0CRM*Veli30C5IoMV=x^|c|1dA z3VwflhVwqj{x{Dm`F4l-;~BMw!|AWk15I4Q-xU6y_9>=ViZRp7&Ytrup71QFBhihw z6VZj!fo~SIoW)}~i_fs}`siS<8lW0MnUwH5AC!~4)s1f0os*gi17s`#axnAF?hOt? z3_%Qlx`#^Cb!W%+JY4`1kj4z8gPGakul^8OyF>Lp{%&8a|Lac2)6RX9vyUWycF6!< z3INY_=C2%K*aAPsSE=K9Qr-n1ZE%{?c*`IfGl&j+D}FD~r@>^6902e1_?Wt&4ro1S zHRu@OA?jDO0)L+Mq3jIW>+{(n6!d3nywC2`u4t9o6iv2T{NG?gfB(N=Vslc!$=!DA z88YD{-0n--N$Lbj5#@PXBV$^BDTNGT*(+oKE1X3|hZ1K|;Vdec1zi57izcd|%6KVlY3<}U4Kpkn4&LNAO z$9a=Dw@C5C$&NZSlc185=H1}pP5;ZZNn!idouClF_yPP*ai06rm@7-L#;HLM1t(z(9ne9h^9%F*a7-iDP!!7jU(Itwd~7DcX6uh%{d`2EORjr`fQn+_2rhOS-_7@TC zYI2w)ik@m$s&c)2FCM1LCtkXnTP?9@zahY?3dK|QtcQMeURLGB^YY>%Ef$y`^P7!$ zT@Xi&ZlV&OPx!qgLl5#f`76R_5m@gO=$LsTVqz+64Rp+ZDQQ^&>#s0-SoW8g$kA&~ zWys8>3V$}2j{ltDwR}Rw!sSPuJQzt^KgKxvpWeYJ>zKla()xW}G$F>C9Ya~(bZgjjVmGgy zV%JzK*2OA+S&TvR)4SFin;?gdis4nC=4^-~A#H+bh;rfMx_@dG_zDXE=Fk_!%@r_1 z*OUAfCD$yx^9yE4CMSfhe1jzDp%z`ELYr{P7J&S51%G(`O~@s*=v8@JAo>jbm|*@? zTsfk&Pi`6Jc#-Fh=nDglptq`M0!KUht;ge*y=LftX+ccImB1I>68Pg_5zH(Ycx3R6 zb{tW7#OD59BXpr-jWi!FVwRN~V@>PpVh;Q3U*;7$FD~J>qK9aY@R*at6EuwfZ+Pdn zAE9N=wr6Nr&i@ci)QBNCma60&IBi!kGS;k7>;HIWJhAC4^}03~Oe39qT+EoFU`Uu&gm7H5jbj1)K>!JCE1} zij!=WApzx+j+ILnKEKU`cQQc+@sQsl9KcV`w<@nA2B80w@Rclo=<}=anF@SgphTlq zclCO;fcj!jYU=3W!$Q0X8?=UqIPvu7r$ODY#>CC$)zr z0=3cJb((ZrR5uZ+)S&qT-9hyAwp?-W8o+cn5`y0lpB&3iC^IQyW}XKMD-+vX3?$~h zC4+c_p3H{t-(w4ZU+Ksx_#CdkV(TlxD0RDBE3`W&U3UuJ6X{~{_q;j(fk4t7kwB1A zVj0XJj(P*qg-B9xz1!l>^{FMcenzAnFV3BJ+BrEzb=q>gquTz%NA>`bHb;7M7a(A{ zmq53!vV|gl;;rzxWqOe>)z{xyN+iB81c&;K)EuE&xOBc!#gGB{GMkr`Le-e^ zY?+_Y$4NT><%~qFOzu1wb<+DPG^S_t7On4MRZJu|y)NOekSx&tiu6|w)2YhG>Gg{C zC*mG~I9U0PdQ!FOdWNU-I)kBiU?H&Nh)8L77Zs>8bRj=^Xt7x7reAF3hMJ}3@ zF?%o?HDF*V=%IxSyYA31;JfjsKwYFV=^c9I;Up`60Jwd}{xk{ZlpBa!_MJ|kixxG0 z@q(>}*D9n-Q=XkId4L#KAd?ETnF=cW#r1d88o4tw!fu%zH>yW*r{|)pTy+JYu={E| zPo((YuxU}Oh9!Yb!jvG2t%xZDD>jSBIjjvr21VV;1S0U1Ng}$` zq=@kgVFio3NNf;tFE%j&sBF?@aC@c!`;|ce!Ux8OVN@YQq(~p09=D!c@|{)ko!@z< zcuuefykYKQlzX9YUA8~|%Sb&M(9j1e%5W2Z?P>bg(|KP-AeJQ=vc4H9zxihI%?+DF z=xi9{d1m&v{3Qc z#Y?eDIId@?%G-F7ucKSZH-`#K3HAV~7=Z@dc^L!_JpkAI@@u>UH~0=*qp948UV_ni zmP7~qyqn7B-BU(wML#9iTy&&Md>uxA4@ny|N`x49HyQ2IM>C(9lnZ-hC}pUbm?U{i zZrilwwq0%_&N7>(kqktsyfOiKZw5GpPaPsJQNEU1yu@KKZBT{b)ERFx(+xh5&<9pu z?(R+8%aPp_g_v?uM8u|gpZO7@roa1W`S}bmO-}UkH4Gju`^zO*K~uw zVEH}#`XW6;Ln8jNo;oROvyV=*q%{yzFldDhlLEmUs|4}9D(jlb(#_AFXab>Q=>Xde z)NoB`t6PqzrE!=jq|MZxkqq?LX@15QDxz75J!LN{Lp;r4D6p5D5=MM(MB|;eR>t{s z@wCde!&r*q($ZMnW-pv{V*)mRWW>=!e`J!AG)Jxc@guS}mY|FHHI_;BEyn1{X$ElWJRTj-$bZtl`{@RLSXL3erE_G$du!i^2@ z+}08G=<}L#3st$MwxlaR{u-vIr^GU${-4CW-iPenb$wee<5KwXp!t}8cks3iuLoR? zrgY1ftB&42@GP)Wi`03h`F%U+cw0iV(crjoT)P#nYqxH{hSR%F*4!d3lVem}0}d}P zIy|avuFMtt>e7e6x#$X|quq*{^^6=#Vb;-qkWMewmzC*{Q3$P|d@;x-u}d zlKVaD6p)|yo_!GdLNEEQe%My9(phzxJ*!vvK!9TRBq+)v3s7_7aGxgjG}zJ6fGJnU z2ZE{k#paG5@0acq`Rp0BY`)_&(GH%dtCu;*fR|+)AwC1YhxmD#(n! z3|^`&`Pb}CXl_W9&|H7LAo9!#6TDamyy_F6uF^XC2YXRm&I_C}6?xt=ZYR;5O( zsR3#R8CB^%UZ!s34z|Q{_@0d9#;mDkDORgX}OAC^yU5&`c;>2aq01z)0*b;qK zZx+*0!jV{i1iuU zBH2&?DJKhZT?PQ=(%|XlBbg0}_L3zFRnG0p+z`SMN1RzABDHEsMY>Ev)js>JXEsT( z4_T=`Cvg#x37NV3Ah9(iKsmN9f6+N3dw+$k0if)EOZJOWtW90JHV7hfv!__oN3201 z+U{aoGxT}?(-sS&c-w4Y({Q7y4~}7e92ldTA&U@J*3tF&kj*0(Hd4N~=_*Rbcar{f ziT7-|n%7h%z8J*&*#CL_`AEGDKOG&>gB0nSgkd%qNBe&r zMSFjL9Zih%Or+gnv;t2*mcF#?NXha$1{$gh^z_O%d>!vVia~XUxAbVDBdi0pNw4lQ zemj2KMA5d;^%6*7z;VwaBZ~djiRei7RQBah@4x)v^|QBMfA`80ogOJm4JEjsstwWR z?FjQ+@C}Z-Rm#?7lFwDQJ8Um2R=lyv^jdd+GsYx1(Qu&YGdc7OaHVg7H??J!3vU$Y z>{f>-IgFi-PJ5QtJ(~CuNeR`LF+_7N+_FXMg*N^^t+wcjj6llnX#tensCd$VlP7uD@G^z!TkHW_(bnKf!{%ExXihEKY?A zW(bKiLL|#6K!}qSpfi6~@(GW2(T0oS8$GOvGt65)#hnYclQ+7q%HbdEy?pa-gay7V zmvFV;Z!@auyY0ntmHxWU@V1~I!cQtYG|0pcAmv6e|9>q0j%M7gU(zO9!4NI&^3_&kd$YrI`I>jmFsV-15Sp$8j1jqxd|Ta}z>;gcs>(JQ=BT zyGTaU#o=Yf@KtirzZ%r>^W?1mc0ew5UmcD*&pJU(OB+c>FUfzE@o1XNO^7xn8-Z$}Y^b3#-{C>f|5AgRJ z{{0w!-<}^|&ytfE{y@3pH~MifOJ2~A$Ft;3f3+7LJb8aI0M5CvvD5rxu@eJ-Vk|_= zJ8NR>GC!hHhw>hHO4a?>LQ{XkkkN3=NiGgNNmk6S?}xE`E$xQ98sJ{)^K!Ys$ZGQU zA9#(bKGCg|ygB8WLC=0`om?KSrzKygCGOO`58HGvtOsSZUw`tORE=z657fUseJgN} zo$71mkJ*2;zTJ6Es)P65l3YFbz4wujPwz>&G$2Q!#DpC}eV9jO5)u(6C@?0!qW#B6 zh|Q8xP-f!C0scV3tz%31SDz>AUGi-!&Q<>zYy5R_nN=MD2)8XT*ZtjBSDyZu>1r82eaK*lxKJM<>Y^Q|3a6{w`u*${T3K&?skb>U>_O% z5y~3CXcyTsIYx5#Abva>0*{?teTQmfA}@M67$2#xNyl}g^mMRo(|q;gC{aOG)`@D{ zeo81e66G@1qZm6npOxh4UZs%Gv=qX0`2tf)5xIJ2EjPWJ)x;&J=zDVXH2Y=ZsoI)( zt1f>~%1fF#9id<}F$KIs~;faQ|mQ2KQ{Y`-SZ&=)p zTeUDvkvw%}$>mABPMg&@x~Ou=+so9(Z1){1#Z1q*{^=Itt#kjX%)0`iZ#(!@b+?mW zP%jz({R7EH>MyRhQi^pF4xg}@22fOs@*;nXqCJ$ql(T+P<6n}<@Gq3ee0n;PhC0!s z_U~?j`8^0ms`szO)_k8|WvG91zs)CW?5coY_ zYd_?)GuMD&*FdbS`-wf;NaNoc@voD6Qzq-Z&-Utm3bZWTEwEeTWx|^ka5(SP_&k4M zK1dycRkDs3$+~a1HeDSqrYlRdk;WHE>K0=Metn>oSJd|<^o>0yr{b6-OL0n)c`P`v z^V?4@zm(&d*u(Rm8o62Sad2eSf335_mgavy&+mJDj0QeR0PtA6>M!!TNsBq2FZuJs zhl78DaKIW3dXomCJ_npnxII0o`RIQ+J~1oXCnj77DIA*lj1JWtPt%fqz-daKqP8>s zv&4VaVLCXC4r~6k6u(ZzuMjK2{vStwnAjnfbDvm{@Sh7~7u@4$7`6XNvWGX>Do^is z0I2F8$d$%rn=dVs;p06LI1Hcsbx#N#hU4)bbD=`&&vFsLbPWw0|%h-$6FT zFuUglIrta48{eYmhI?%rths;NZ8%5wC@@g^`{6_IrxE=xP%nLK94pf3{qmr{RXDw@)PE$mM3X=+k%=FQ$uR;|SSVC&@b&$D`Sv2?N;ii{r7A zb_!_+PTDFN56lEQOTexHk5)5}woGy)aOe03&(b;lfU|_jK+Z1rRxy8P0ns`aA88kx7j_eTdej^r9!oLIa6azJD3x(R>{4brQB1mS2Us!n1IoT%NEheN z$S@9l)4=S|LzLt4$#w>%9YwW$K5cLiC5+nCFH!=Qt*}3+DtndvhP5X9KUYUT7yB_| zPllNq)o0eI0uFx|m}3Kcdy&;WXs!3Uyhs72&QOEEa8D&%yXb$hL#{D)xHMxA;IR}1 zw;%;nwFW#vYo|;~Ie99|)`*!M{Q6`(MD`rP`taOq$206iPqm6Cwv;QcFd*(sa**Z~K z<8%gryNms8Bdvc>9V_0Wovd=nFHN^eZd0yUwcgXgR=ZzsyHPCefahy~NMhaq!U9Td zb(rac(UG~BKjtZCNf!o22DKL&@oH6J58a^_Oz2w6wgi5VT1ncV7%-k`a$^`z;5Kmr z2MHS@$A{e1D>{ljD{X7T58Lusu+l8COVd_~y8nMN+yYGtp6z2)LO`bgg@2a_7c0 ztdVy!Q{MXW6j4WV_C`Y*ps{@@+o0bR?W<)5&KGl?VV6meB1dzQ0evX=CA^{3DibZL zSHoT$Yz$|i0r3*P;9x9MaWaJ49*qe$XgX?mh_!!k0i)YuI>_(l@FGj=b(PV{$9SH= z4}J)Q*^}Y*XzcThE<&}qjZ`yPzkZ57mx`oTZtx3rT%Vt(j=h)+0Mi_2vygvVha0zz zr$SrbKT#^ zm^yz>6M!#P%M|!dDsUE~;jn0RnXCt=z$m6F9uY8$%l$bpnU*$Ze5r~|7l)Um*y*2C zdc2s$Rewb@i&uSTFqkbm@1JX*rQN{cjinE;PdDGTP904w3r?{!%T-r>CsuCkpy@6@ zCupWENg<*f`HbU%etw?Km2QO(zX{y7Ef{}**z)QG^HKZm6!+%8VT?r>5Fo^)Zrvi} zY=Io(za?G+@nR($_1N%K_mv4GpgGaT>(&BB%Q1!pj#{`O*$xmndHcR}4EW(Bk01In z1dJZ~GZB-sg>&f3@9;T67NZ8k?X4R*UOIMKywbmT#@dw~YsbBR)aq^Wc;XDG+xLH- z{~ok9hNc0%SG!TLyfW#k2mJyhIh8O zJ+@BQT3(9Qhzu~__(z!c>%Gc{0Wng;0O-_p zjOLKmj@PrYFAYEY+C<9z($v$0(v&3Dzrqa@pswV@hk3YpL&Y0g!-7CNz!`r#JKwFr zflW3ZZ0P{FzB`Q8Zd@Dyhvsji`D2H8QjPrG<%STw#9gIX&gfLOk83|zT?K9fkG#^V zM-wN_2;chY-Or(`)(2X0Bxr%RcZzgo_-p%wfsr=^>SBpTm$xetL94x`CC%1?#J*(~ zD`&`_ou!C9%guYk5HY)$+mU}(dv?7czP52=YzJKSO0K&uJwu93MbxJguPiU-%k?7r zGCNJzOEx#JrB5)HzF1i#klrPV@dkmP>F^tx5x%n-bJk%I#krMFJb$tH;tbF%)`zlj zMeSov6j;?(d6pK{MrrMCp6fxH(2{$POZcqDd+*3i*ni@pnTe3kzyE)&N>|p%@Pe*^ z?%e33$~)gKfwWq$BWvTfhBR=8-AZWB10DDoS3Dx)YGbd1@x)>j2bm=bQN_4xM{+1# zYswXy@PWMNzGR1LTJ}OJR++IcWHe)w_S-bmZH(ws6eW8gf{GXPDJ$^!%)#&uiea|^U z_kE8h@bBUpR)iaIie!7WTW_hC3Xy8mog~FvwWE zvv7#NVOG!6RrY_=#gYKZD~!`ew|}r;EG%31`wEY%74Je8#;WJE^swwgJVW&WY3Grn z@n6^)|G*m*$0aZCQD|0{Of1V7QQxGDF^C`qt%jbW32cw)CPvn`<&<@{uPYoc^wOYL zKm(!D$pAcRU^omu9eW099SRsO90tk!?67Hz*^$^lb}E0rY92%#J9o{Sqwwz0;5wKD zi|e3cf7W}Bd~#CnmAmaX4N>*xL1UKIXJIQW0}anNu2!M{J2ZYTZmmt!4Jp-W#$ zj$*r7%eH8@W7es|^W5?n*KBbXXV8B=O_22rDyyeRyPiWo*&gM@0J?n1G4C!J_8zJc zO+~0tk6StaY@(@O4=*f^JbHM*UZLl>N`~j+{mSYHgtAEKp)f;qu>-Fg5spj61nSdo z7M6dZ5Q?L8$>2f*`YFUzkPVBG-uk&%v8jQ0js{%nTSoxp3+7-;YG19KZRymb#?-0 z`_J)s{MY#4$&+|Ad>jGYT)$Z44TZ%W#~FY8#I8_ZE#qVsw^&V#4&w2X$D)mcC(y`z zT>%7HRC^%4M3p~1e*9P#_%d6j*OPJfSbj@?a-WY-KaO7hNds=4&d)hgZ|r*nqx32R zl4Xusf%ON}3VbhFqL)=l)1G`5zlVM**o4oiI}y)lf{jYpe3@7LgFAkop1|sI@n?VJ zKaX@6$I#Mw$`h=g!{9RVn%JqQM<|BolQeL6_$R9FO*RMYjkU%Krhbu~r!ehQ}8K72F#In+=zbydc3hWxW`AYnJ;xA&-2A1D-cd8oGf_{*r~0m zk=@}7=UvS14s!3;8C4WM#`ORkg%=@+O{=pt1r^s0xep}8V8xQorqy9%g}s;TwB1Em z=~zmvCXp+jnFn9;mj9-l3xzLRw#SQmoRjG1YZR>u&eM|tA9z;yL+p8XIa_}^KFS@v zy)Gi)nF&ClF~L`pn3<<4`k^IWPlt8#l$th&tqv%{ldqH51`5zcX1-ThXA^u)_!S2H zFhEd8mf;h+oe3W%+&dew%2A8mt}}OP!+c(DpBj^Z<1&F#ft)v2@*t^eNKleOlZEki zrM6C}o-SHhUWCQZ2aXo9BUOJU>Ckk??Fa0;mJ#z9EUm|YZ#Eey&>U;npr7_F)m2}1 z3mO0-R-9*3*|66fg(hB5BhhyZqN#C07&6NoX!Q}U6cU9U`nEFYq}&&iLTf;&{V^$y zb@EL7x}_OB7q>GMeJNj8x?g(5KFnrHZAE+^HzZaXO&aK6W2O?D3JHIL{B%ddw9D^2 z6rgFuFbsl;c}90<+zq)XA^fJN6U**}kw|-ExUpu5wg|D;`d)Xo}+$c_yhSU-GP#&q#Td(L67saD! zAc5-HnxTOKV*>$3hR=V-Q`AR0^c=D2DM|q`VBPWQ42SeHobVg;#K4Yo>V9aAbUYbF z$^`?#0jbV~ehdkhus;1h&QuCDbzvd^zdOaz>)Bz?B&&-{lqvd}7E6y0P`BoOe?MPl za4N7|h%ckCm?>-Tu4B1=EG^UpO?>?Ew5bmS-64+6M&aPe+t7ba@6apL5R*|kb zQOrrUdRED;m2&#k@j%_R>Ba<}aZ;ISdw2q{t?}vfPR%6pu5aFIUC)j%k7?u48|Xq< z=HWs=ChB;}N7;@;i8{yA##P?(pmQn-tpC}vJV}=%>5>jwJxn48QDmi@j8PT;VK|_Y zdAaJ-zaquJ}!B|KgwZfgI&EiXmPdAv!hFpOeU0Z4} zm)q}*b&@MgmwM^x)I(3F{J@nRrwZ{k1}GDZ!lS_0?>LhME?y4!4(;6u-yx4ABO=qF zg~Q$(#=~A*Sj0FA)~a51?s4zogaH8Rj4-%v4%1izEwz74MsiJ9PmlMBIl2ClC)YQo z7@x-7bHsgOR8LM3$=?(onCAxod!Iel6Gj*&Sg4}OQ;eq`)W`Vm@MHiGMYtMJES=0+jltjzihM^K|sekX@ zjx`VO2E@m4@r+I0Z*;IZ+=n()2yK&uK*j5=74)TE#}I-SIma?weL z9Y@Ir;BQjOj7l~*)YQTPa{DmV#6_YQmE?yK@L_+>yK0V!8j>>E-4TWbT@$ASm(zHS z?!Oz;e9o{9J4G)6gxqu7p6*)k2bR_2-5W4CQo@<DK0K}QbHN3ZH@DH>RJE4X%plZOyu4Up#ATnwxi^AOi?Vw^FoAP_dcF0>T+{G+H()S}N zci6HM)Wyo&x>BUi59?{Z-RLJrriM%{aw2~yfsaNLpsCb)xiwW$9HN11n?yrf9seVt zvDNgYpLSSo^eea=fW~z0OPFS4$QSU+f+XdX{%}dMg;pK=n$2gx{dnU#DhKo#F zv)2F0&|O@yKL!}y;*MyWvJiia`T>3pKI=E84!wWA zK*Ud>1=$#yl#S3xgZ4Y_Ro#_=hj@qAil!lWR?Y%dGXU|lJSvkcETc)O#UmWdRSu$t z+^Mta)l7k_DD{qVFp@;`&g16sdZx%hdWf|dhj!_y5I2_s8d{G94vk7Qg7pbQe3=#T z_|v3p5p~KuRqw$Rc&TqtuS@<2n`nQM#-$>TLP?x)d7UAD$p)NnY)2*$BPInYs)@gI zY)OL@`@4uAyU|RXV=5{NQF%2G>1w+Ra7!J*HlUTfrk&Mc^DO&pS3sR|Uk$mH_5N~V zzUm{wj-1q|#{T>*&F5L-9_kPKnvli*E@E$n=BF}sU$XwJ5gfnX5V_Tx zhYodw#lGtgO0fnfdB>9z=yHDwaaU5)Y>G)t*DBB^mqu7(H>VOEEs%}2->pQa{j`8p zkrX>_kE(->&j^@kd)5FWih^bMB=3V-?xR(=$MHI;TdLcpI)1zT8kM#iykpa+NFr8A zs^(aAJNWQA3)#`5LD3~76~MM3>~-2;DXWoAkr52oti(4IcBir4PV9f){~H$PyK&4~ zYPrEIy=`fz3Ck@S7G4uXX#Ym&#APOFAF-E5OCijs2iaJ9kY@3a1uHSqJ4W1JTeU1X zp52D`P;l%H!1}el&*B?X#jW*Ph?)PHU4NApizS+S8ftO;tf3xHd_}%2*C)&D`7)pX z@+QAnFXaP>D)5!1qJ@9!hpF6Vwh&FW1_i%_hDNps+OWYgQ#5Gt?5qT>QWy|VC4Z>osn~hsF;mYAg&FjQYfVsGG{X$l z@kJeEw^P_I-uj=KSx|qZLU2H3RC%fD8o>#z zUI5t|+Jxx)_j&y-HUy+JO3811J@H!|1q;|8`>2UL|GM4uw5 z<;_NhXAZpYk3l?+Z|r!>w$5xvC}jXjS-geu$xIP-*@@1K1sO)hiW(7(Z(|z2M;$)% zPwkcfV|VTK54nE{F7EDp&r=r1Y5edZ?M!*Pd_@$uW2GitXL8#bj5eSXVb+&My=i7(hhSI@y@E&-qKC zk-N;ZwJVa5iDHzT#9hVd4p%}Kd~h{MBN3o{2zf?-yV^QSHBvp069|8?9+?!5CV)5#iIi{>U7BC*X~OIV z<48L6@aB)D(ur&Kp&VB`_8DQJFr*_pum&6gP9wD~{EQfZT~Tx=Yknv5oPBBm($A;rqzc z$HQHvJiBA8vTvayv?lr~X(hcQhSb?YUSod>+pNiAW*m#BOLXz0k&Vw*%B5jCX$_~^ zX*plBGkSM-w@E}Sv7o%<#(>ns1zl{wd*UuYY{75R2B}rxUAw@$*w`%-cl*TF?wE8Q z9IIHYH%@mAU4~tdlBB8&U}}*KpxG;I?0C1}(3p;YTbhMU!25T*S^C7?@}BK%mbZVG z#!j=5@iSR}C;tCblfF-Nj=B|D-F*z;u?qHd^GEiAS zi&m{4J}fen3Rq8l%}n*rI-pf~VMTvfGL*jsZHGRvGwFgx(x@%X?jq8P+*72%x0rXD zQgoUYC1G9gDfv2OV zC?_k6x?E;}+Rnm&J#WCl=zaU$>ld&g)1o)-;o=0|k@geml>9HFeI9i@_M* z8EvsmXtwK{=N#9c+R&^W?$f>!Jxu6bwC0@GZ4Iwo?bi%pF5H zi@it)GHml>9>=YD+BSjAH({77PH#&7nI1lTP|2kK-R@E@QzjclSolhSizCGUhpNZ%KdB&u*egAvA984R088g!V{!q3?f~oqXKgV# zEc?|{D~-C>tx!KuTPmk5RX=Sc{U#Qr?&BUpuW+|$faTm|-XUzb-8Mo2H=d=&y4k*^ zJkAFct#f^}7Hc#a**kx1(852MMEHmN3c6S$pG9tAjWBA2P(QU1Mm_`3OugtZNAV4r zC78xlsvb`Fl&8D&T@c=@Z!m@_3iNaeYqOl)vesz^ZK=gR$9c`U?Ui2Qb6Von(*$mY z)dRvf;py=TAu>N+DYOSkxY*8Z;CX6RG)73~Y51TLZt{z;=|z9r`}FKHhE3~+O5xK$ z(x;G@UjhrRJ-I-EZ#EagBJ}>6RZ2Njy{_V;sEiO=&@<_mkTN{Uh1x+xuTv_+6LaT1 zbm#5e^cNs5WjG~bBw;p`0<^q-TjeVO4LA}<(y1O@;FLATEbS8FJ#Y=H7nc|k4x5qK zuQs3x?Z}hO4K068mRnls2B~i`V($uhKw=h@%g~@79b>c`jFio$2EINIpNvLQMc3?P zh!k};yz=HPqyvitg>vy;-LNU9~BM_iv zqw5^TScWImF;=;;1D+7IXS(k4>I`7}B`adPj@G5pw-$ClNOtmyf zMjHenK28MvOs}%)#S+8iz{T(!c=mTK&u zs9DuaHlpCL^Cir)OI>#idaI%>`|wJ7%r|x`Wn3GJt58Pw(prjD`aZYSrS#LaH5)## zrtDV=9mVE1AG$&Uhr5lt0J3?PU?dbGJ^wSiK5~COb5U{622pF~9EbMm%5_(A6nC@S zeXmF_9mp3fUzZr+cOj;8mpuWznW3X873u(S4X?>HMk|kKKk}JF%tg6EcEluCD;f)z zMx!G$Z;_o=*9n;P6pr(c#7V?@k5Z3mapG*9M2 zn6=DTKcNf+yA7Uq7nF5;KAToa9(Ncf z=m9U{)ELguYH&U|H>dp*qJa7k@ymw~IsSjWif+(5kg}z8%@trt+G{WUW{`DT*-zsY z$08C|VQb3?S=3TCk_t*&+V^@(VBQ}n%0YvU^#||^8S1AsDlA~krT*I5(Q;kVBp<-7 zoIZ7jp}i59>JxE#yU|hJCWg?^V)ndTQ)B63@l9SsOK>6qNeZ_0MEatflmEv!_$9lx zSUG5a&t>G|yEFzQb6uOQeUAw?U)WZWZa;xr*@@GWaBC~Wdy}*l%SpLz>oK@d9*V;t zT{nO#R(T`5q6X#ZX;(!QLJa41O@4KQRaxi6Z}-xZx?DnQ(;j-O>W!v7@>kUx{1yI( zL6qD9pOlO1tz;Z*Qh;FnZMvG={ACgtZ#hAKJbpY0EI~sMKmPM1&@X)7P(=C1e=*a3 zfQ$O^U(FO!K?&l|MrPudv;jW*d=dbn_${p#Uy_6)K#yBZwfs*xrq7>D0;M(>#Gga| z^Kx|^#D9URE8w+YP=A2|%-2nT+`rgMev^zAy@whULzw^ba$$Jj762i6)3KFwtV+)) zW}$G%NzMD3G3G&**5doa2MplWr0_GcsFLGWHK)7VUAV&?wOwvwlcUAQe?EK&0!b|S zMd*l6=30ghD^e*(q2{sgAQ%SBfSzw5+Ke91QnNeg<~fTsS4kZ&5~G%)%`Sm9yU-z= zFAp!KmuMcEq{o-Dc(sif%YhubDZMUs-s5 z5!Vr1Lwp+z_x|0vkJj67P;yzf1zDOeziVLLH;DxJ zRr54HH{XjD3S9vTU1+28)!|~g0u-7iHNIocx7{fzAkY=}aoM_4fNZ*?aaVB}&vBpv z)TO*ZFZ;E{eLEF*xmpJQZ(l9{w)5RGSq{bt=7@D&b zDqIm|(r~$soQi9)=c~XXtH@pPdk~hib3FUc-R`tqq!NLgmK8sPO0*PQcc34w?XcUh z71G(6dOX@Na>x$kThuln?J#%K+Rrn(NE<79kjLPTW2nR018rkZ|FM7CqE9_Ypk3&9 zLB8x*Km|>@Fc>Y;TTD8_eWDI$EJkx^08uojdN@V93$*KN&;g z2l6LlYdb;#Z3pvi_(wlIo9v#X_&TkaLr?SflgG&-0YsDP$tDhNW#9%$4q2ftd|o8( zHj^I89DjE)JKAB0{W0n~-{+NjON?*BZ!LE#jWUiTDm811w;Q9DG*Pu8`8xeM0R}ux zc8o|U*>4UDzP7wJu+9jN{fs(t1Atg@0Ytv`8rN7#Ab#zV##QN9cj$B25IsJpkcm?> zl;eATN=IOjNyREH!Zj3(7bvNU%Q%f%5+JWYgnueE@p&{|`2Abg-MxNs7IJs<_!2ve z(|&R(;xe@W*sW~5F*1BMJ2LlfQ@+fvGO3YgmD91}tr2)!9cm9FrW=oGahPP}uA?*H zjDni>kl_SS$G3L}Mjd;U>mNVj5auG{cAR-#XFm#h6jA|3dyxb>y27K_j$j`2g4i5S zzkiB@D8T9z@Vx2QD#AHB&9)+%+cC^5Gidot=_IwLhZ}G6Ar$n=o69r4OWA2!H$J+# z%}oMLe|V7KREg^xk+|1N*%7gv0ICvCLkn~5BAc(a)aDUMPM(x)1$xpab7NH;uljllZn!JbG#o58J zDF2&WAKUl1u7QBi;R22x;kOY!oNL;JRP9G{G=M!|@gG@t27B%vX7xN>Wj|e@*Sk14 z+$SJE4U7$PYq^J%KYLa7>pGM1grp_a53j%BK;)zXJH!~;A3lWqBdPc@nwLu*j(_63 zX;$?lh$v*@XP-Tu{AHv(0duV+f#jpF-oE|*%>@6YM*`XT&3RcjMS77s_ zjxi`b{)Rs>P)6tFViNrA#aq}~F7Bw304{hkBgmQ;#k^dg-YdEPM15P>$d*sR0&e|V znYl=t)b^u@iUMh~u7wW50oqA~6@OqMRHTijtizjCRaw~@yx9;EixR2;tT1Bv@Wu1* zUcGw#;^hx-UVJGLCmH;j8I#_;EQ(C7%qeRB_L{O6^fg@ia7*?XEYZYh2ua4ePS4Qm zVT@|O3*cqlWqyBJn-4~qO62Tm9Yj-%Ta_+eq9J=`%tqK|W)X%tQM#?vC4T^Jie8BT z7+Qf)>S#T%gPDrl-(b&_zdi8i7}9?E^1E-p$BkDdWWS^acy+N{lovr14ONL4cB!7h zx>^FUfICa4;jR>kZ|qcat81T-p^O@>W!-6@YM9 zS98)1{$hQ4nqh>y;3O|lB7YdgInZU03zace5h3D&XseuRaL?!~A62l}Z4SVa8^YH) zbr5L_(=m*WLhiDo?Px;&L9HVkM96>~S(~MTf=3!l$T4HO*`129I1yUMdw+m9(**Z?klD0JvRuK|IxPOf%#)N{qRrO7i zi*#%PHpG*=He$qTHXO-4MLE#qm*NBg#+8RjsAf9H5*L7e-O_*N*2J5AUgayp$1og` z7*`8@F(aA75WrLu2B=vHi*%VT`KPM#@S*$_nqZ*4>Gf$$h{k(d09nD7)O{*gna+=? zAkuTfw{BUS=7e)Z0)HT?Cac_~uaF|a^d$T6;dn-yo^ZS|WTuq({J$)#SBTtw@9A5# zWEH~TadUeibo==T_(J-FNR@Bz8(1PH2jNC!@6?4L1|fleh#OOM%k6#mAcJtgMU>Au z5iU>cF*h8-v5Q|M{@BwmV9<&JYjSEB9H3OA9u_cJiTU6Y!+%C3{7t{(T0zO|&~UfQ zK=}UE-(dS@=|y5(rY7^C`*CZ8(QaM*$M-K<@eAqy51SaX?pq)O06W7un*aa+ delta 51934 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 Lv82JGVju$mWW3cN diff --git a/dist/fabric.require.js b/dist/fabric.require.js index 0c907a72..348ffa5e 100644 --- a/dist/fabric.require.js +++ b/dist/fabric.require.js @@ -5858,9 +5858,7 @@ fabric.Pattern = fabric.util.createClass(/** @lends fabric.Pattern.prototype */ activeGroup.render(ctx); } - if (this.overlayImage) { - ctx.drawImage(this.overlayImage, this.overlayImageLeft, this.overlayImageTop); - } + this._renderOverlay(ctx); this.fire('after:render'); @@ -10610,6 +10608,8 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.Stati * @param {CanvasRenderingContext2D} ctx Context to render on */ _removeShadow: function(ctx) { + if (!this.shadow) return; + ctx.shadowColor = ''; ctx.shadowBlur = ctx.shadowOffsetX = ctx.shadowOffsetY = 0; }, @@ -13384,13 +13384,21 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot * @param ctx {CanvasRenderingContext2D} context to render on */ _render: function(ctx) { + + // optimize 1x1 case (used in spray brush) + if (this.width === 1 && this.height === 1) { + ctx.fillRect(0, 0, 1, 1); + return; + } + var rx = this.rx || 0, ry = this.ry || 0, - x = -this.width / 2, - y = -this.height / 2, w = this.width, h = this.height, - isInPathGroup = this.group && this.group.type === 'path-group'; + x = -w / 2, + y = -h / 2, + isInPathGroup = this.group && this.group.type === 'path-group', + isRounded = rx !== 0 || ry !== 0; ctx.beginPath(); ctx.globalAlpha = isInPathGroup ? (ctx.globalAlpha * this.opacity) : this.opacity; @@ -13406,17 +13414,20 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot -this.group.height / 2 + this.height / 2 + this.y); } - var isRounded = rx !== 0 || ry !== 0; + ctx.moveTo(x + rx, y); + + ctx.lineTo(x + w - rx, y); + isRounded && ctx.quadraticCurveTo(x + w, y, x + w, y + ry, x + w, y + ry); + + ctx.lineTo(x + w, y + h - ry); + isRounded && ctx.quadraticCurveTo(x + w, y + h, x + w - rx, y + h, x + w - rx, y + h); + + ctx.lineTo(x + rx, y + h); + isRounded && ctx.quadraticCurveTo(x, y + h, x, y + h - ry, x, y + h - ry); + + ctx.lineTo(x, y + ry); + isRounded && ctx.quadraticCurveTo(x, y, x + rx, y, x + rx, y); - ctx.moveTo(x+rx, y); - ctx.lineTo(x+w-rx, y); - isRounded && ctx.quadraticCurveTo(x+w, y, x+w, y+ry, x+w, y+ry); - ctx.lineTo(x+w, y+h-ry); - isRounded && ctx.quadraticCurveTo(x+w,y+h,x+w-rx,y+h,x+w-rx,y+h); - ctx.lineTo(x+rx,y+h); - isRounded && ctx.quadraticCurveTo(x,y+h,x,y+h-ry,x,y+h-ry); - ctx.lineTo(x,y+ry); - isRounded && ctx.quadraticCurveTo(x,y,x+rx,y,x+rx,y); ctx.closePath(); this._renderFill(ctx);