From 64a09c6f7db91f0a325ff54eb1c96391793fce58 Mon Sep 17 00:00:00 2001 From: kangax Date: Wed, 9 Apr 2014 18:02:47 -0400 Subject: [PATCH] Build distribution again --- dist/fabric.js | 10 ++++++---- dist/fabric.min.js | 8 ++++---- dist/fabric.min.js.gz | Bin 54147 -> 54158 bytes dist/fabric.require.js | 10 ++++++---- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/dist/fabric.js b/dist/fabric.js index 5c640061..ad65263e 100644 --- a/dist/fabric.js +++ b/dist/fabric.js @@ -6098,11 +6098,12 @@ fabric.Pattern = fabric.util.createClass(/** @lends fabric.Pattern.prototype */ activeGroup.forEachObject(function(o) { o.set('active', true); }); + + if (this._currentTransform) { + this._currentTransform.target = this.getActiveGroup(); + } } - if (this._currentTransform) { - this._currentTransform.target = this.getActiveGroup(); - } return data; }, @@ -8612,8 +8613,9 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab if (e.type === 'touchend') { // Wait 400ms before rebinding mousedown to prevent double triggers // from touch devices + var _this = this; setTimeout(function() { - addListener(this.upperCanvasEl, 'mousedown', this._onMouseDown); + addListener(_this.upperCanvasEl, 'mousedown', _this._onMouseDown); }, 400); } }, diff --git a/dist/fabric.min.js b/dist/fabric.min.js index 692a06bb..9c2e48d5 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-2014, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"1.4.4"};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,sinTh:a,cosTh: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&&(" "+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=e&&e.ownerDocument,r={left:0,top:0},i={left:0,top:0},s,o={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!n)return{left:0,top:0};for(var u in o)i[o[u]]+=parseInt(l(e,u),10)||0;return t=n.documentElement,typeof e.getBoundingClientRect!="undefined"&&(r=e.getBoundingClientRect()),s=fabric.util.getScrollLeftTop(e,null),{left:r.left+s.left-(t.clientLeft||0)+i.left,top:r.top+s.top-(t.clientTop||0)+i.top}}var e=Array.prototype.slice,n,r=function(t){return e.call(t,0)};try{n=r(fabric.document.childNodes)instanceof Array}catch(i){}n||(r=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t});var l;fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle?l=function(e,t){return fabric.document.defaultView.getComputedStyle(e,null)[t]}:l=function(e,t){var n=e.style[t];return!n&&e.currentStyle&&(n=e.currentStyle[t]),n},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=r,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)})}function n(){return t.apply(fabric.window,arguments)}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)};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={cx:"left",x:"left",r:"radius",cy:"top",y:"top",transform:"transformMatrix","fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration"},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=function(e,t,n,r){this.elements=e,this.callback=t,this.options=n,this.reviver=r},fabric.ElementsParser.prototype.parse=function(){this.instances=new Array(this.elements.length),this.numElements=this.elements.length,this.createObjects()},fabric.ElementsParser.prototype.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(!t)return"";if(typeof t.src!="undefined"){if(!t.complete)return"";if(t.naturalWidth===0||t.naturalHeight===0)return""}return e.createPattern(t,this.repeat)}}),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Shadow){t.warn("fabric.Shadow is already defined.");return}t.Shadow=t.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,initialize:function(e){typeof e=="string"&&(e=this._parseShadow(e));for(var n in e)this[n]=e[n];this.id=t.Object.__uid++},_parseShadow:function(e){var n=e.trim(),r=t.Shadow.reOffsetsAndBlur.exec(n)||[],i=n.replace(t.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)";return{color:i.trim(),offsetX:parseInt(r[1],10)||0,offsetY:parseInt(r[2],10)||0,blur:parseInt(r[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(e){var t="SourceAlpha";return e&&(e.fill===this.color||e.stroke===this.color)&&(t="SourceGraphic"),''+''+''+""+""+''+""+""},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY};var e={},n=t.Shadow.prototype;return this.color!==n.color&&(e.color=this.color),this.blur!==n.blur&&(e.blur=this.blur),this.offsetX!==n.offsetX&&(e.offsetX=this.offsetX),this.offsetY!==n.offsetY&&(e.offsetY=this.offsetY),e}}),t.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/}(typeof exports!="undefined"?exports:this),function(){"use strict";if(fabric.StaticCanvas){fabric.warn("fabric.StaticCanvas is already defined.");return}var e=fabric.util.object.extend,t=fabric.util.getElementOffset,n=fabric.util.removeFromArray,r=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass({initialize:function(e,t){t||(t={}),this._initStatic(e,t),fabric.StaticCanvas.activeInstance=this},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!0,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!1,onBeforeScaleRotate:function(){},_initStatic:function(e,t){this._objects=[],this._createLowerCanvas(e),this._initOptions(t),t.overlayImage&&this.setOverlayImage(t.overlayImage,this.renderAll.bind(this)),t.backgroundImage&&this.setBackgroundImage(t.backgroundImage,this.renderAll.bind(this)),t.backgroundColor&&this.setBackgroundColor(t.backgroundColor,this.renderAll.bind(this)),t.overlayColor&&this.setOverlayColor(t.overlayColor,this.renderAll.bind(this)),this.calcOffset()},calcOffset:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(e,t,n){return this.__setBgOverlayImage("overlayImage",e,t,n)},setBackgroundImage:function(e,t,n){return this.__setBgOverlayImage("backgroundImage",e,t,n)},setOverlayColor:function(e,t){return this.__setBgOverlayColor("overlayColor",e,t)},setBackgroundColor:function(e,t){return this.__setBgOverlayColor("backgroundColor",e,t)},__setBgOverlayImage:function(e,t,n,r){return typeof t=="string"?fabric.util.loadImage(t,function(t){this[e]=new fabric.Image(t,r),n&&n()},this):(this[e]=t,n&&n()),this},__setBgOverlayColor:function(e,t,n){if(t.source){var r=this;fabric.util.loadImage(t.source,function(i){r[e]=new fabric.Pattern({source:i,repeat:t.repeat,offsetX:t.offsetX,offsetY:t.offsetY}),n&&n()})}else this[e]=t,n&&n();return this},_createCanvasElement:function(){var e=fabric.document.createElement("canvas");e.style||(e.style={});if(!e)throw r;return this._initCanvasElement(e),e},_initCanvasElement:function(e){fabric.util.createCanvasElement(e);if(typeof e.getContext=="undefined")throw r},_initOptions:function(e){for(var t in e)this[t]=e[t];this.width=this.width||parseInt(this.lowerCanvasEl.width,10)||0,this.height=this.height||parseInt(this.lowerCanvasEl.height,10)||0;if(!this.lowerCanvasEl.style)return;this.lowerCanvasEl.width=this.width,this.lowerCanvasEl.height=this.height,this.lowerCanvasEl.style.width=this.width+"px",this.lowerCanvasEl.style.height=this.height+"px"},_createLowerCanvas:function(e){this.lowerCanvasEl=fabric.util.getById(e)||this._createCanvasElement(),this._initCanvasElement(this.lowerCanvasEl),fabric.util.addClass(this.lowerCanvasEl,"lower-canvas"),this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(e){return this._setDimension("width",e)},setHeight:function(e){return this._setDimension("height",e)},setDimensions:function(e){for(var t in e)this._setDimension(t,e[t]);return this},_setDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.lowerCanvasEl.style[e]=t+"px",this.upperCanvasEl&&(this.upperCanvasEl[e]=t,this.upperCanvasEl.style[e]=t+"px"),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t+"px"),this[e]=t,this.calcOffset(),this.renderAll(),this},getElement:function(){return this.lowerCanvasEl},getActiveObject:function(){return null},getActiveGroup:function(){return null},_draw:function(e,t){if(!t)return;if(this.controlsAboveOverlay){var n=t.hasBorders,r=t.hasControls;t.hasBorders=t.hasControls=!1,t.render(e),t.hasBorders=n,t.hasControls=r}else t.render(e)},_onObjectAdded:function(e){this.stateful&&e.setupState(),e.setCoords(),e.canvas=this,this.fire("object:added",{target:e}),e.fire("added")},_onObjectRemoved:function(e){this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this._discardActiveObject(),this.fire("selection:cleared")),this.fire("object:removed",{target:e}),e.fire("removed")},clearContext:function(e){return e.clearRect(0,0,this.width,this.height),this},getContext:function(){return this.contextContainer},clear:function(){return this._objects.length=0,this.discardActiveGroup&&this.discardActiveGroup(),this.discardActiveObject&&this.discardActiveObject(),this.clearContext(this.contextContainer),this.contextTop&&this.clearContext(this.contextTop),this.fire("canvas:cleared"),this.renderAll(),this},renderAll:function(e){var t=this[e===!0&&this.interactive?"contextTop":"contextContainer"],n=this.getActiveGroup();return this.contextTop&&this.selection&&!this._groupSelector&&this.clearContext(this.contextTop),e||this.clearContext(t),this.fire("before:render"),this.clipTo&&fabric.util.clipContext(this,t),this._renderBackground(t),this._renderObjects(t,n),this._renderActiveGroup(t,n),this.clipTo&&t.restore(),this._renderOverlay(t),this.controlsAboveOverlay&&this.interactive&&this.drawControls(t),this.fire("after:render"),this},_renderObjects:function(e,t){var n,r;if(!t)for(n=0,r=this._objects.length;n"),n.join("")},_setSVGPreamble:function(e,t){t.suppressPreamble||e.push('','\n')},_setSVGHeader:function(e,t){e.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),"")},_setSVGObjects:function(e,t){var n=this.getActiveGroup();n&&this.discardActiveGroup();for(var r=0,i=this.getObjects(),s=i.length;r"):this[t]&&t==="overlayColor"&&e.push('")},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e,t){var r=this._objects.indexOf(e);if(r!==0){var i=this._findNewLowerIndex(e,r,t);n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},_findNewLowerIndex:function(e,t,n){var r;if(n){r=t;for(var i=t-1;i>=0;--i){var s=e.intersectsWithObject(this._objects[i])||e.isContainedWithinObject(this._objects[i])||this._objects[i].isContainedWithinObject(e);if(s){r=i;break}}}else r=t-1;return r},bringForward:function(e,t){var r=this._objects.indexOf(e);if(r!==this._objects.length-1){var i=this._findNewUpperIndex(e,r,t);n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},_findNewUpperIndex:function(e,t,n){var r;if(n){r=t;for(var i=t+1;i"}}),e(fabric.StaticCanvas.prototype,fabric.Observable),e(fabric.StaticCanvas.prototype,fabric.Collection),e(fabric.StaticCanvas.prototype,fabric.DataURLExporter),e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(e){var t=fabric.util.createCanvasElement();if(!t||!t.getContext)return null;var n=t.getContext("2d");if(!n)return null;switch(e){case"getImageData":return typeof n.getImageData!="undefined";case"setLineDash":return typeof n.setLineDash!="undefined";case"toDataURL":return typeof t.toDataURL!="undefined";case"toDataURLWithQuality":try{return t.toDataURL("image/jpeg",0),!0}catch(r){}return!1;default:return null}}}),fabric.StaticCanvas.prototype.toJSON=fabric.StaticCanvas.prototype.toObject}(),fabric.BaseBrush=fabric.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",setShadow:function(e){return this.shadow=new fabric.Shadow(e),this},_setBrushStyles:function(){var e=this.canvas.contextTop;e.strokeStyle=this.color,e.lineWidth=this.width,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin},_setShadow:function(){if(!this.shadow)return;var e=this.canvas.contextTop;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_resetShadow:function(){var e=this.canvas.contextTop;e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0}}),function(){var e=fabric.util.array.min,t=fabric.util.array.max;fabric.PencilBrush=fabric.util.createClass(fabric.BaseBrush,{initialize:function(e){this.canvas=e,this._points=[]},onMouseDown:function(e){this._prepareForDrawing(e),this._captureDrawingPath(e),this._render()},onMouseMove:function(e){this._captureDrawingPath(e),this.canvas.clearContext(this.canvas.contextTop),this._render()},onMouseUp:function(){this._finalizeAndAddPath()},_prepareForDrawing:function(e){var t=new fabric.Point(e.x,e.y);this._reset(),this._addPoint(t),this.canvas.contextTop.moveTo(t.x,t.y)},_addPoint:function(e){this._points.push(e)},_reset:function(){this._points.length=0,this._setBrushStyles(),this._setShadow()},_captureDrawingPath:function(e){var t=new fabric.Point(e.x,e.y);this._addPoint(t)},_render:function(){var e=this.canvas.contextTop;e.beginPath();var t=this._points[0],n=this._points[1];this._points.length===2&&t.x===n.x&&t.y===n.y&&(t.x-=.5,n.x+=.5),e.moveTo(t.x,t.y);for(var r=1,i=this._points.length;rn.padding?e.x<0?e.x+=n.padding:e.x-=n.padding:e.x=0,i(e.y)>n.padding?e.y<0?e.y+=n.padding:e.y-=n.padding:e.y=0},_rotateObject:function(e,t){var i=this._currentTransform;if(i.target.get("lockRotation"))return;var s=r(i.ey-i.top,i.ex-i.left),o=r(t-i.top,e-i.left),u=n(o-s+i.theta);u<0&&(u=360+u),i.target.angle=u},_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(this.getPointer(e))},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)},_checkTarget:function(e,t,n){if(t&&t.visible&&t.evented&&this.containsPoint(e,t)){if(!this.perPixelTargetFind&&!t.perPixelTargetFind||!!t.isEditing)return!0;var r=this.isTargetTransparent(t,n.x,n.y);if(!r)return!0}},_searchPossibleTargets:function(e){var t,n=this.getPointer(e);if(this._activeObject&&this._checkTarget(e,this._activeObject,n))return this.relatedTarget=this._activeObject,this._activeObject;var r=this._objects.length;while(r--)if(this._checkTarget(e,this._objects[r],n)){this.relatedTarget=this._objects[r],t=this._objects[r];break}return t},getPointer:function(t){var n=e(t,this.upperCanvasEl),r=this.upperCanvasEl.getBoundingClientRect(),i;return r.width===0||r.height===0?i={width:1,height:1}:i={width:this.upperCanvasEl.width/r.width,height:this.upperCanvasEl.height/r.height},{x:(n.x-this._offset.left)*i.width,y:(n.y-this._offset.top)*i.height}},_createUpperCanvas:function(){var e=this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/,"");this.upperCanvasEl=this._createCanvasElement(),fabric.util.addClass(this.upperCanvasEl,"upper-canvas "+e),this.wrapperEl.appendChild(this.upperCanvasEl),this._copyCanvasStyle(this.lowerCanvasEl,this.upperCanvasEl),this._applyCanvasStyle(this.upperCanvasEl),this.contextTop=this.upperCanvasEl.getContext("2d")},_createCacheCanvas:function(){this.cacheCanvasEl=this._createCanvasElement(),this.cacheCanvasEl.setAttribute("width",this.width),this.cacheCanvasEl.setAttribute("height",this.height),this.contextCache=this.cacheCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=fabric.util.wrapElement(this.lowerCanvasEl,"div",{"class":this.containerClass}),fabric.util.setStyle(this.wrapperEl,{width:this.getWidth()+"px",height:this.getHeight()+"px",position:"relative"}),fabric.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(e){var t=this.getWidth()||e.width,n=this.getHeight()||e.height;fabric.util.setStyle(e,{position:"absolute",width:t+"px",height:n+"px",left:0,top:0}),e.width=t,e.height=n,fabric.util.makeElementUnselectable(e)},_copyCanvasStyle:function(e,t){t.style.cssText=e.style.cssText},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},_setActiveObject:function(e){this._activeObject&&this._activeObject.set("active",!1),this._activeObject=e,e.set("active",!0)},setActiveObject:function(e,t){return this._setActiveObject(e),this.renderAll(),this.fire("object:selected",{target:e,e:t}),e.fire("selected",{e:t}),this},getActiveObject:function(){return this._activeObject},_discardActiveObject:function(){this._activeObject&&this._activeObject.set("active",!1),this._activeObject=null},discardActiveObject:function(e){return this._discardActiveObject(),this.renderAll(),this.fire("selection:cleared",{e:e}),this},_setActiveGroup:function(e){this._activeGroup=e,e&&(e.canvas=this,e.set("active",!0))},setActiveGroup:function(e,t){return this._setActiveGroup(e),e&&(this.fire("object:selected",{target:e,e:t}),e.fire("selected",{e:t})),this},getActiveGroup:function(){return this._activeGroup},_discardActiveGroup:function(){var e=this.getActiveGroup();e&&e.destroy(),this.setActiveGroup(null)},discardActiveGroup:function(e){return this._discardActiveGroup(),this.fire("selection:cleared",{e:e}),this},deactivateAll:function(){var e=this.getObjects(),t=0,n=e.length;for(;t1&&(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;r>1&&this.setWidth(o).setHeight(u),l.scale(r,r),n.left&&(n.left*=r),n.top&&(n.top*=r),n.width?n.width*=r:r<1&&(n.width=o),n.height?n.height*=r:r<1&&(n.height=u),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]},_setObject:function(e){for(var t in e)this._set(t,e[t])},set:function(e,t){return typeof e=="object"?this._setObject(e):typeof t=="function"&&e!=="clipTo"?this._set(e,t(this.get(e))):this._set(e,t),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._setupFillRule(e),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._restoreFillRule(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}},_setupFillRule:function(e){this.fillRule&&(this._prevFillRule=e.globalCompositeOperation,e.globalCompositeOperation=this.fillRule)},_restoreFillRule:function(e){this.fillRule&&this._prevFillRule&&(e.globalCompositeOperation=this._prevFillRule)}}),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.width<=t.x&&n.top>=e.y&&n.top+n.height<=t.y},containsPoint:function(e){var t=this._getImageLines(this.oCoords),n=this._findCrossPoints(e,t);return n!==0&&n%2===1},_getImageLines:function(e){return{topline:{o:e.tl,d:e.tr},rightline:{o:e.tr,d:e.br},bottomline:{o:e.br,d:e.bl},leftline:{o:e.bl,d:e.tl}}},_findCrossPoints:function(e,t){var n,r,i,s,o,u,a=0,f;for(var l in t){f=t[l];if(f.o.y=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.degreesToRadians,t=typeof G_vmlCanvasManager!="undefined";fabric.util.object.extend(fabric.Object.prototype,{_controlsVisibility:null,_findTargetCorner:function(e){if(!this.hasControls||!this.active)return!1;var t=e.x,n=e.y,r,i;for(var s in this.oCoords){if(!this.isControlVisible(s))continue;if(s==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||s!=="mt"&&s!=="mr"&&s!=="mb"&&s!=="ml"))continue;i=this._getImageLines(this.oCoords[s].corner),r=this._findCrossPoints({x:t,y:n},i);if(r!==0&&r%2===1)return this.__corner=s,s}return!1},_setCornerCoords:function(){var t=this.oCoords,n=e(this.angle),r=e(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);t.tl.corner={tl:{x:t.tl.x-o,y:t.tl.y-s},tr:{x:t.tl.x+s,y:t.tl.y-o},bl:{x:t.tl.x-s,y:t.tl.y+o},br:{x:t.tl.x+o,y:t.tl.y+s}},t.tr.corner={tl:{x:t.tr.x-o,y:t.tr.y-s},tr:{x:t.tr.x+s,y:t.tr.y-o},br:{x:t.tr.x+o,y:t.tr.y+s},bl:{x:t.tr.x-s,y:t.tr.y+o}},t.bl.corner={tl:{x:t.bl.x-o,y:t.bl.y-s},bl:{x:t.bl.x-s,y:t.bl.y+o},br:{x:t.bl.x+o,y:t.bl.y+s},tr:{x:t.bl.x+s,y:t.bl.y-o}},t.br.corner={tr:{x:t.br.x+s,y:t.br.y-o},bl:{x:t.br.x-s,y:t.br.y+o},br:{x:t.br.x+o,y:t.br.y+s},tl:{x:t.br.x-o,y:t.br.y-s}},t.ml.corner={tl:{x:t.ml.x-o,y:t.ml.y-s},tr:{x:t.ml.x+s,y:t.ml.y-o},bl:{x:t.ml.x-s,y:t.ml.y+o},br:{x:t.ml.x+o,y:t.ml.y+s}},t.mt.corner={tl:{x:t.mt.x-o,y:t.mt.y-s},tr:{x:t.mt.x+s,y:t.mt.y-o},bl:{x:t.mt.x-s,y:t.mt.y+o},br:{x:t.mt.x+o,y:t.mt.y+s}},t.mr.corner={tl:{x:t.mr.x-o,y:t.mr.y-s},tr:{x:t.mr.x+s,y:t.mr.y-o},bl:{x:t.mr.x-s,y:t.mr.y+o},br:{x:t.mr.x+o,y:t.mr.y+s}},t.mb.corner={tl:{x:t.mb.x-o,y:t.mb.y-s},tr:{x:t.mb.x+s,y:t.mb.y-o},bl:{x:t.mb.x-s,y:t.mb.y+o},br:{x:t.mb.x+o,y:t.mb.y+s}},t.mtr.corner={tl:{x:t.mtr.x-o+u*this.rotatingPointOffset,y:t.mtr.y-s-a*this.rotatingPointOffset},tr:{x:t.mtr.x+s+u*this.rotatingPointOffset,y:t.mtr.y-o-a*this.rotatingPointOffset},bl:{x:t.mtr.x-s+u*this.rotatingPointOffset,y:t.mtr.y+o-a*this.rotatingPointOffset},br:{x:t.mtr.x+o+u*this.rotatingPointOffset,y:t.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("mr",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,n,r,i,s){var o=this.cornerSize/this.scaleX,u=this.cornerSize/this.scaleY;this.isControlVisible(e)&&(t||this.transparentCorners||n.clearRect(i,s,o,u),n[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",radius:0,initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e)},_set:function(e,t){return this.callSuper("_set",e,t),e==="radius"&&this.setRadius(t),this},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this.stroke&&this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(e){var t=this._createBaseSVGMarkup(),n=this.width/2,r=this.height/2,i=[-n+" "+r,"0 "+ -r,n+" "+r].join(",");return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),e.restore(),this._renderFill(e),this._renderStroke(e)},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",points:null,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=i(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=[],t=[],n,r,i=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:e[-+]?\d+)?)/ig,s,o;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(){if(this.getElement())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._originalElement)return;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){this._element&&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&&(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()?this.getElement().width||0:0,this.height="height"in e?e.height:this.getElement()?this.getElement().height||0: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 +){--this.numElements===0&&(this.instances=this.instances.filter(function(e){return e!=null}),fabric.resolveGradients(this.instances),this.callback(this.instances))},function(e){"use strict";function n(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(!t)return"";if(typeof t.src!="undefined"){if(!t.complete)return"";if(t.naturalWidth===0||t.naturalHeight===0)return""}return e.createPattern(t,this.repeat)}}),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Shadow){t.warn("fabric.Shadow is already defined.");return}t.Shadow=t.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,initialize:function(e){typeof e=="string"&&(e=this._parseShadow(e));for(var n in e)this[n]=e[n];this.id=t.Object.__uid++},_parseShadow:function(e){var n=e.trim(),r=t.Shadow.reOffsetsAndBlur.exec(n)||[],i=n.replace(t.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)";return{color:i.trim(),offsetX:parseInt(r[1],10)||0,offsetY:parseInt(r[2],10)||0,blur:parseInt(r[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(e){var t="SourceAlpha";return e&&(e.fill===this.color||e.stroke===this.color)&&(t="SourceGraphic"),''+''+''+""+""+''+""+""},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY};var e={},n=t.Shadow.prototype;return this.color!==n.color&&(e.color=this.color),this.blur!==n.blur&&(e.blur=this.blur),this.offsetX!==n.offsetX&&(e.offsetX=this.offsetX),this.offsetY!==n.offsetY&&(e.offsetY=this.offsetY),e}}),t.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/}(typeof exports!="undefined"?exports:this),function(){"use strict";if(fabric.StaticCanvas){fabric.warn("fabric.StaticCanvas is already defined.");return}var e=fabric.util.object.extend,t=fabric.util.getElementOffset,n=fabric.util.removeFromArray,r=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass({initialize:function(e,t){t||(t={}),this._initStatic(e,t),fabric.StaticCanvas.activeInstance=this},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!0,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!1,onBeforeScaleRotate:function(){},_initStatic:function(e,t){this._objects=[],this._createLowerCanvas(e),this._initOptions(t),t.overlayImage&&this.setOverlayImage(t.overlayImage,this.renderAll.bind(this)),t.backgroundImage&&this.setBackgroundImage(t.backgroundImage,this.renderAll.bind(this)),t.backgroundColor&&this.setBackgroundColor(t.backgroundColor,this.renderAll.bind(this)),t.overlayColor&&this.setOverlayColor(t.overlayColor,this.renderAll.bind(this)),this.calcOffset()},calcOffset:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(e,t,n){return this.__setBgOverlayImage("overlayImage",e,t,n)},setBackgroundImage:function(e,t,n){return this.__setBgOverlayImage("backgroundImage",e,t,n)},setOverlayColor:function(e,t){return this.__setBgOverlayColor("overlayColor",e,t)},setBackgroundColor:function(e,t){return this.__setBgOverlayColor("backgroundColor",e,t)},__setBgOverlayImage:function(e,t,n,r){return typeof t=="string"?fabric.util.loadImage(t,function(t){this[e]=new fabric.Image(t,r),n&&n()},this):(this[e]=t,n&&n()),this},__setBgOverlayColor:function(e,t,n){if(t.source){var r=this;fabric.util.loadImage(t.source,function(i){r[e]=new fabric.Pattern({source:i,repeat:t.repeat,offsetX:t.offsetX,offsetY:t.offsetY}),n&&n()})}else this[e]=t,n&&n();return this},_createCanvasElement:function(){var e=fabric.document.createElement("canvas");e.style||(e.style={});if(!e)throw r;return this._initCanvasElement(e),e},_initCanvasElement:function(e){fabric.util.createCanvasElement(e);if(typeof e.getContext=="undefined")throw r},_initOptions:function(e){for(var t in e)this[t]=e[t];this.width=this.width||parseInt(this.lowerCanvasEl.width,10)||0,this.height=this.height||parseInt(this.lowerCanvasEl.height,10)||0;if(!this.lowerCanvasEl.style)return;this.lowerCanvasEl.width=this.width,this.lowerCanvasEl.height=this.height,this.lowerCanvasEl.style.width=this.width+"px",this.lowerCanvasEl.style.height=this.height+"px"},_createLowerCanvas:function(e){this.lowerCanvasEl=fabric.util.getById(e)||this._createCanvasElement(),this._initCanvasElement(this.lowerCanvasEl),fabric.util.addClass(this.lowerCanvasEl,"lower-canvas"),this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(e){return this._setDimension("width",e)},setHeight:function(e){return this._setDimension("height",e)},setDimensions:function(e){for(var t in e)this._setDimension(t,e[t]);return this},_setDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.lowerCanvasEl.style[e]=t+"px",this.upperCanvasEl&&(this.upperCanvasEl[e]=t,this.upperCanvasEl.style[e]=t+"px"),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t+"px"),this[e]=t,this.calcOffset(),this.renderAll(),this},getElement:function(){return this.lowerCanvasEl},getActiveObject:function(){return null},getActiveGroup:function(){return null},_draw:function(e,t){if(!t)return;if(this.controlsAboveOverlay){var n=t.hasBorders,r=t.hasControls;t.hasBorders=t.hasControls=!1,t.render(e),t.hasBorders=n,t.hasControls=r}else t.render(e)},_onObjectAdded:function(e){this.stateful&&e.setupState(),e.setCoords(),e.canvas=this,this.fire("object:added",{target:e}),e.fire("added")},_onObjectRemoved:function(e){this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this._discardActiveObject(),this.fire("selection:cleared")),this.fire("object:removed",{target:e}),e.fire("removed")},clearContext:function(e){return e.clearRect(0,0,this.width,this.height),this},getContext:function(){return this.contextContainer},clear:function(){return this._objects.length=0,this.discardActiveGroup&&this.discardActiveGroup(),this.discardActiveObject&&this.discardActiveObject(),this.clearContext(this.contextContainer),this.contextTop&&this.clearContext(this.contextTop),this.fire("canvas:cleared"),this.renderAll(),this},renderAll:function(e){var t=this[e===!0&&this.interactive?"contextTop":"contextContainer"],n=this.getActiveGroup();return this.contextTop&&this.selection&&!this._groupSelector&&this.clearContext(this.contextTop),e||this.clearContext(t),this.fire("before:render"),this.clipTo&&fabric.util.clipContext(this,t),this._renderBackground(t),this._renderObjects(t,n),this._renderActiveGroup(t,n),this.clipTo&&t.restore(),this._renderOverlay(t),this.controlsAboveOverlay&&this.interactive&&this.drawControls(t),this.fire("after:render"),this},_renderObjects:function(e,t){var n,r;if(!t)for(n=0,r=this._objects.length;n"),n.join("")},_setSVGPreamble:function(e,t){t.suppressPreamble||e.push('','\n')},_setSVGHeader:function(e,t){e.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),"")},_setSVGObjects:function(e,t){var n=this.getActiveGroup();n&&this.discardActiveGroup();for(var r=0,i=this.getObjects(),s=i.length;r"):this[t]&&t==="overlayColor"&&e.push('")},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e,t){var r=this._objects.indexOf(e);if(r!==0){var i=this._findNewLowerIndex(e,r,t);n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},_findNewLowerIndex:function(e,t,n){var r;if(n){r=t;for(var i=t-1;i>=0;--i){var s=e.intersectsWithObject(this._objects[i])||e.isContainedWithinObject(this._objects[i])||this._objects[i].isContainedWithinObject(e);if(s){r=i;break}}}else r=t-1;return r},bringForward:function(e,t){var r=this._objects.indexOf(e);if(r!==this._objects.length-1){var i=this._findNewUpperIndex(e,r,t);n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},_findNewUpperIndex:function(e,t,n){var r;if(n){r=t;for(var i=t+1;i"}}),e(fabric.StaticCanvas.prototype,fabric.Observable),e(fabric.StaticCanvas.prototype,fabric.Collection),e(fabric.StaticCanvas.prototype,fabric.DataURLExporter),e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(e){var t=fabric.util.createCanvasElement();if(!t||!t.getContext)return null;var n=t.getContext("2d");if(!n)return null;switch(e){case"getImageData":return typeof n.getImageData!="undefined";case"setLineDash":return typeof n.setLineDash!="undefined";case"toDataURL":return typeof t.toDataURL!="undefined";case"toDataURLWithQuality":try{return t.toDataURL("image/jpeg",0),!0}catch(r){}return!1;default:return null}}}),fabric.StaticCanvas.prototype.toJSON=fabric.StaticCanvas.prototype.toObject}(),fabric.BaseBrush=fabric.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",setShadow:function(e){return this.shadow=new fabric.Shadow(e),this},_setBrushStyles:function(){var e=this.canvas.contextTop;e.strokeStyle=this.color,e.lineWidth=this.width,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin},_setShadow:function(){if(!this.shadow)return;var e=this.canvas.contextTop;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_resetShadow:function(){var e=this.canvas.contextTop;e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0}}),function(){var e=fabric.util.array.min,t=fabric.util.array.max;fabric.PencilBrush=fabric.util.createClass(fabric.BaseBrush,{initialize:function(e){this.canvas=e,this._points=[]},onMouseDown:function(e){this._prepareForDrawing(e),this._captureDrawingPath(e),this._render()},onMouseMove:function(e){this._captureDrawingPath(e),this.canvas.clearContext(this.canvas.contextTop),this._render()},onMouseUp:function(){this._finalizeAndAddPath()},_prepareForDrawing:function(e){var t=new fabric.Point(e.x,e.y);this._reset(),this._addPoint(t),this.canvas.contextTop.moveTo(t.x,t.y)},_addPoint:function(e){this._points.push(e)},_reset:function(){this._points.length=0,this._setBrushStyles(),this._setShadow()},_captureDrawingPath:function(e){var t=new fabric.Point(e.x,e.y);this._addPoint(t)},_render:function(){var e=this.canvas.contextTop;e.beginPath();var t=this._points[0],n=this._points[1];this._points.length===2&&t.x===n.x&&t.y===n.y&&(t.x-=.5,n.x+=.5),e.moveTo(t.x,t.y);for(var r=1,i=this._points.length;rn.padding?e.x<0?e.x+=n.padding:e.x-=n.padding:e.x=0,i(e.y)>n.padding?e.y<0?e.y+=n.padding:e.y-=n.padding:e.y=0},_rotateObject:function(e,t){var i=this._currentTransform;if(i.target.get("lockRotation"))return;var s=r(i.ey-i.top,i.ex-i.left),o=r(t-i.top,e-i.left),u=n(o-s+i.theta);u<0&&(u=360+u),i.target.angle=u},_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(this.getPointer(e))},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)},_checkTarget:function(e,t,n){if(t&&t.visible&&t.evented&&this.containsPoint(e,t)){if(!this.perPixelTargetFind&&!t.perPixelTargetFind||!!t.isEditing)return!0;var r=this.isTargetTransparent(t,n.x,n.y);if(!r)return!0}},_searchPossibleTargets:function(e){var t,n=this.getPointer(e);if(this._activeObject&&this._checkTarget(e,this._activeObject,n))return this.relatedTarget=this._activeObject,this._activeObject;var r=this._objects.length;while(r--)if(this._checkTarget(e,this._objects[r],n)){this.relatedTarget=this._objects[r],t=this._objects[r];break}return t},getPointer:function(t){var n=e(t,this.upperCanvasEl),r=this.upperCanvasEl.getBoundingClientRect(),i;return r.width===0||r.height===0?i={width:1,height:1}:i={width:this.upperCanvasEl.width/r.width,height:this.upperCanvasEl.height/r.height},{x:(n.x-this._offset.left)*i.width,y:(n.y-this._offset.top)*i.height}},_createUpperCanvas:function(){var e=this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/,"");this.upperCanvasEl=this._createCanvasElement(),fabric.util.addClass(this.upperCanvasEl,"upper-canvas "+e),this.wrapperEl.appendChild(this.upperCanvasEl),this._copyCanvasStyle(this.lowerCanvasEl,this.upperCanvasEl),this._applyCanvasStyle(this.upperCanvasEl),this.contextTop=this.upperCanvasEl.getContext("2d")},_createCacheCanvas:function(){this.cacheCanvasEl=this._createCanvasElement(),this.cacheCanvasEl.setAttribute("width",this.width),this.cacheCanvasEl.setAttribute("height",this.height),this.contextCache=this.cacheCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=fabric.util.wrapElement(this.lowerCanvasEl,"div",{"class":this.containerClass}),fabric.util.setStyle(this.wrapperEl,{width:this.getWidth()+"px",height:this.getHeight()+"px",position:"relative"}),fabric.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(e){var t=this.getWidth()||e.width,n=this.getHeight()||e.height;fabric.util.setStyle(e,{position:"absolute",width:t+"px",height:n+"px",left:0,top:0}),e.width=t,e.height=n,fabric.util.makeElementUnselectable(e)},_copyCanvasStyle:function(e,t){t.style.cssText=e.style.cssText},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},_setActiveObject:function(e){this._activeObject&&this._activeObject.set("active",!1),this._activeObject=e,e.set("active",!0)},setActiveObject:function(e,t){return this._setActiveObject(e),this.renderAll(),this.fire("object:selected",{target:e,e:t}),e.fire("selected",{e:t}),this},getActiveObject:function(){return this._activeObject},_discardActiveObject:function(){this._activeObject&&this._activeObject.set("active",!1),this._activeObject=null},discardActiveObject:function(e){return this._discardActiveObject(),this.renderAll(),this.fire("selection:cleared",{e:e}),this},_setActiveGroup:function(e){this._activeGroup=e,e&&(e.canvas=this,e.set("active",!0))},setActiveGroup:function(e,t){return this._setActiveGroup(e),e&&(this.fire("object:selected",{target:e,e:t}),e.fire("selected",{e:t})),this},getActiveGroup:function(){return this._activeGroup},_discardActiveGroup:function(){var e=this.getActiveGroup();e&&e.destroy(),this.setActiveGroup(null)},discardActiveGroup:function(e){return this._discardActiveGroup(),this.fire("selection:cleared",{e:e}),this},deactivateAll:function(){var e=this.getObjects(),t=0,n=e.length;for(;t1&&(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;r>1&&this.setWidth(o).setHeight(u),l.scale(r,r),n.left&&(n.left*=r),n.top&&(n.top*=r),n.width?n.width*=r:r<1&&(n.width=o),n.height?n.height*=r:r<1&&(n.height=u),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]},_setObject:function(e){for(var t in e)this._set(t,e[t])},set:function(e,t){return typeof e=="object"?this._setObject(e):typeof t=="function"&&e!=="clipTo"?this._set(e,t(this.get(e))):this._set(e,t),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._setupFillRule(e),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._restoreFillRule(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}},_setupFillRule:function(e){this.fillRule&&(this._prevFillRule=e.globalCompositeOperation,e.globalCompositeOperation=this.fillRule)},_restoreFillRule:function(e){this.fillRule&&this._prevFillRule&&(e.globalCompositeOperation=this._prevFillRule)}}),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.width<=t.x&&n.top>=e.y&&n.top+n.height<=t.y},containsPoint:function(e){var t=this._getImageLines(this.oCoords),n=this._findCrossPoints(e,t);return n!==0&&n%2===1},_getImageLines:function(e){return{topline:{o:e.tl,d:e.tr},rightline:{o:e.tr,d:e.br},bottomline:{o:e.br,d:e.bl},leftline:{o:e.bl,d:e.tl}}},_findCrossPoints:function(e,t){var n,r,i,s,o,u,a=0,f;for(var l in t){f=t[l];if(f.o.y=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.degreesToRadians,t=typeof G_vmlCanvasManager!="undefined";fabric.util.object.extend(fabric.Object.prototype,{_controlsVisibility:null,_findTargetCorner:function(e){if(!this.hasControls||!this.active)return!1;var t=e.x,n=e.y,r,i;for(var s in this.oCoords){if(!this.isControlVisible(s))continue;if(s==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||s!=="mt"&&s!=="mr"&&s!=="mb"&&s!=="ml"))continue;i=this._getImageLines(this.oCoords[s].corner),r=this._findCrossPoints({x:t,y:n},i);if(r!==0&&r%2===1)return this.__corner=s,s}return!1},_setCornerCoords:function(){var t=this.oCoords,n=e(this.angle),r=e(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);t.tl.corner={tl:{x:t.tl.x-o,y:t.tl.y-s},tr:{x:t.tl.x+s,y:t.tl.y-o},bl:{x:t.tl.x-s,y:t.tl.y+o},br:{x:t.tl.x+o,y:t.tl.y+s}},t.tr.corner={tl:{x:t.tr.x-o,y:t.tr.y-s},tr:{x:t.tr.x+s,y:t.tr.y-o},br:{x:t.tr.x+o,y:t.tr.y+s},bl:{x:t.tr.x-s,y:t.tr.y+o}},t.bl.corner={tl:{x:t.bl.x-o,y:t.bl.y-s},bl:{x:t.bl.x-s,y:t.bl.y+o},br:{x:t.bl.x+o,y:t.bl.y+s},tr:{x:t.bl.x+s,y:t.bl.y-o}},t.br.corner={tr:{x:t.br.x+s,y:t.br.y-o},bl:{x:t.br.x-s,y:t.br.y+o},br:{x:t.br.x+o,y:t.br.y+s},tl:{x:t.br.x-o,y:t.br.y-s}},t.ml.corner={tl:{x:t.ml.x-o,y:t.ml.y-s},tr:{x:t.ml.x+s,y:t.ml.y-o},bl:{x:t.ml.x-s,y:t.ml.y+o},br:{x:t.ml.x+o,y:t.ml.y+s}},t.mt.corner={tl:{x:t.mt.x-o,y:t.mt.y-s},tr:{x:t.mt.x+s,y:t.mt.y-o},bl:{x:t.mt.x-s,y:t.mt.y+o},br:{x:t.mt.x+o,y:t.mt.y+s}},t.mr.corner={tl:{x:t.mr.x-o,y:t.mr.y-s},tr:{x:t.mr.x+s,y:t.mr.y-o},bl:{x:t.mr.x-s,y:t.mr.y+o},br:{x:t.mr.x+o,y:t.mr.y+s}},t.mb.corner={tl:{x:t.mb.x-o,y:t.mb.y-s},tr:{x:t.mb.x+s,y:t.mb.y-o},bl:{x:t.mb.x-s,y:t.mb.y+o},br:{x:t.mb.x+o,y:t.mb.y+s}},t.mtr.corner={tl:{x:t.mtr.x-o+u*this.rotatingPointOffset,y:t.mtr.y-s-a*this.rotatingPointOffset},tr:{x:t.mtr.x+s+u*this.rotatingPointOffset,y:t.mtr.y-o-a*this.rotatingPointOffset},bl:{x:t.mtr.x-s+u*this.rotatingPointOffset,y:t.mtr.y+o-a*this.rotatingPointOffset},br:{x:t.mtr.x+o+u*this.rotatingPointOffset,y:t.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("mr",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,n,r,i,s){var o=this.cornerSize/this.scaleX,u=this.cornerSize/this.scaleY;this.isControlVisible(e)&&(t||this.transparentCorners||n.clearRect(i,s,o,u),n[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",radius:0,initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e)},_set:function(e,t){return this.callSuper("_set",e,t),e==="radius"&&this.setRadius(t),this},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this.stroke&&this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(e){var t=this._createBaseSVGMarkup(),n=this.width/2,r=this.height/2,i=[-n+" "+r,"0 "+ -r,n+" "+r].join(",");return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),e.restore(),this._renderFill(e),this._renderStroke(e)},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",points:null,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=i(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=[],t=[],n,r,i=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:e[-+]?\d+)?)/ig,s,o;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(){if(this.getElement())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._originalElement)return;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){this._element&&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&&(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()?this.getElement().width||0:0,this.height="height"in e?e.height:this.getElement()?this.getElement().height||0: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.canvas&&this.canvas.fire("text:selection:changed",{target:this}),this.selectionStart=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionStart=e)},setSelectionEnd:function(e){this.selectionEnd!==e&&this.canvas&&this.canvas.fire("text:selection:changed",{target:this}),this.selectionEnd=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionEnd=e)},getSelectionStyles:function(e,t){if(arguments.length===2){var n=[];for(var r=e;r=r.charIndex&&(a!==o||hs&&a-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.selectionStart+=e.length,this.selectionEnd=this.selectionStart,this.canvas&&this.canvas.renderAll().renderAll(),this.setCoords(),this.fire("changed"),this.canvas&&this.canvas.fire("text:changed",{target:this})},insertNewlineStyleObject:function(t,n,r){this.shiftLineStyles(t,1),this.styles[t+1]||(this.styles[t+1]={});var i=this.styles[t][n-1],s={};if(r)s[0]=e(i),this.styles[t+1]=s;else{for(var o in this.styles[t])parseInt(o,10)>=n&&(s[parseInt(o,10)-n]=this.styles[t][o],delete this.styles[t][o]);this.styles[t+1]=s}},insertCharStyleObject:function(t,n,r){var i=this.styles[t],s=e(i);n===0&&!r&&(n=1);for(var o in s){var u=parseInt(o,10);u>=n&&(i[u+1]=s[u])}this.styles[t][n]=r||e(i[n-1])},insertStyleObjects:function(e,t,n){if(this.isEmptyStyles())return;var r=this.get2DCursorLocation(),i=r.lineIndex,s=r.charIndex;this.styles[i]||(this.styles[i]={}),e==="\n"?this.insertNewlineStyleObject(i,s,t):n?this._insertStyles(n):this.insertCharStyleObject(i,s)},_insertStyles:function(e){for(var t=0,n=e.length;tt&&(this.styles[s+n]=r[s])}},removeStyleObject:function(t,n){var r=this.get2DCursorLocation(n),i=r.lineIndex,s=r.charIndex;if(t){var o=this.text.split(this._reNewline),u=o[i-1],a=u?u.length:0;this.styles[i-1]||(this.styles[i-1]={});for(s in this.styles[i])this.styles[i-1][parseInt(s,10)+a]=this.styles[i][s];this.shiftLineStyles(i,-1)}else{var f=this.styles[i];if(f){var l=this.selectionStart===this.selectionEnd?-1:0;delete f[s+l]}var c=e(f);for(var h in c){var p=parseInt(h,10);p>=s&&p!==0&&(f[p-1]=c[p],delete f[p])}}},insertNewline:function(){this.insertChars("\n")}})}(),fabric.util.object.extend(fabric.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+(new Date),this.__lastLastClickTime=+(new Date),this.__lastPointer={},this.on("mousedown",this.onMouseDown.bind(this))},onMouseDown:function(e){this.__newClickTime=+(new Date);var t=this.canvas.getPointer(e.e);this.isTripleClick(t)?(this.fire("tripleclick",e),this._stopEvent(e.e)):this.isDoubleClick(t)&&(this.fire("dblclick",e),this._stopEvent(e.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=t,this.__lastIsEditing=this.isEditing},isDoubleClick:function(e){return this.__newClickTime-this.__lastClickTime<500&&this.__lastPointer.x===e.x&&this.__lastPointer.y===e.y&&this.__lastIsEditing},isTripleClick:function(e){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===e.x&&this.__lastPointer.y===e.y},_stopEvent:function(e){e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation()},initCursorSelectionHandlers:function(){this.initSelectedHandler(),this.initMousedownHandler(),this.initMousemoveHandler(),this.initMouseupHandler(),this.initClicks()},initClicks:function(){this.on("dblclick",function(e){this.selectWord(this.getSelectionStartFromPointer(e.e))}),this.on("tripleclick",function(e){this.selectLine(this.getSelectionStartFromPointer(e.e))})},initMousedownHandler:function(){this.on("mousedown",function(e){var t=this.canvas.getPointer(e.e);this.__mousedownX=t.x,this.__mousedownY=t.y,this.__isMousedown=!0,this.hiddenTextarea&&this.canvas&&this.canvas.wrapperEl.appendChild(this.hiddenTextarea),this.selected&&this.setCursorByClick(e.e),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.initDelayedCursor(!0))})},initMousemoveHandler:function(){this.on("mousemove",function(e){if(!this.__isMousedown||!this.isEditing)return;var t=this.getSelectionStartFromPointer(e.e);t>=this.__selectionStartOnMouseDown?(this.setSelectionStart(this.__selectionStartOnMouseDown),this.setSelectionEnd(t)):(this.setSelectionStart(t),this.setSelectionEnd(this.__selectionStartOnMouseDown))})},_isObjectMoved:function(e){var t=this.canvas.getPointer(e);return this.__mousedownX!==t.x||this.__mousedownY!==t.y},initMouseupHandler:function(){this.on("mouseup",function(e){this.__isMousedown=!1;if(this._isObjectMoved(e.e))return;this.selected&&(this.enterEditing(),this.initDelayedCursor(!0)),this.selected=!0})},setCursorByClick:function(e){var t=this.getSelectionStartFromPointer(e);e.shiftKey?to?0:1,f=r+a;return this.flipX&&(f=i-f),f>this.text.length&&(f=this.text.length),s===i&&f--,f}}),fabric.util.object.extend(fabric.IText.prototype,{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),fabric.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this)),fabric.util.addListener(this.hiddenTextarea,"keypress",this.onKeyPress.bind(this)),!this._clickHandlerInitialized&&this.canvas&&(fabric.util.addListener(this.canvas.upperCanvasEl,"click",this.onClick.bind(this)),this._clickHandlerInitialized=!0)},_keysMap:{8:"removeChars",13:"insertNewline",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown",46:"forwardDelete"},_ctrlKeysMap:{65:"selectAll",67:"copy",86:"paste",88:"cut"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},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=this._getWidthOfLine(this.ctx,r.lineIndex,u),l=this._getLineLeftOffset(f),c=l,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 requestFs(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=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){function r(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)}var 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?requestFs(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?requestFs(e,function(e){fabric.loadSVGFromString(e.toString(),t,n)}):request(e,"",function(e){fabric.loadSVGFromString(e,t,n)})},fabric.loadSVGFromString=function(e,t,n){var r=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(r.documentElement,function(e,n){t&&t(e,n)},n)},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e,function(e){r.filters=e||[],t&&t(r)})})},fabric.createCanvasForNode=function(e,t,n,r){r=r||n;var i=fabric.document.createElement("canvas"),s=new Canvas(e||600,t||600,r);i.style={},i.width=s.width,i.height=s.height;var o=fabric.Canvas||fabric.StaticCanvas,u=new o(i,n);return u.contextContainer=s.getContext("2d"),u.nodeCanvas=s,u.Font=Canvas.Font,u},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 b88dda0fc58541b013d5f9a79b554a03b11a1872..83ad65175145640b21fd814be1c27e2b6a145130 100644 GIT binary patch delta 36727 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
+S;A_d3J%e+*m7 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 egaQ}X3