From 145bf6e461347ed350596fdefca3e4adae6eba67 Mon Sep 17 00:00:00 2001 From: kangax Date: Wed, 13 Aug 2014 21:39:08 +0200 Subject: [PATCH] Build distribution --- dist/fabric.js | 83 ++++++++++++++++++++++------------------- dist/fabric.min.js | 14 +++---- dist/fabric.min.js.gz | Bin 56786 -> 56819 bytes dist/fabric.require.js | 83 ++++++++++++++++++++++------------------- 4 files changed, 95 insertions(+), 85 deletions(-) diff --git a/dist/fabric.js b/dist/fabric.js index e693c73d..43d5eb4e 100644 --- a/dist/fabric.js +++ b/dist/fabric.js @@ -3336,27 +3336,6 @@ if (typeof console !== 'undefined') { extend(fabric, { - /** - * Initializes gradients on instances, according to gradients parsed from a document - * @param {Array} instances - */ - resolveGradients: function(instances) { - for (var i = instances.length; i--; ) { - var instanceFillValue = instances[i].get('fill'); - - if (!(/^url\(/).test(instanceFillValue)) { - continue; - } - - var gradientId = instanceFillValue.slice(5, instanceFillValue.length - 1); - - if (fabric.gradientDefs[gradientId]) { - instances[i].set('fill', - fabric.Gradient.fromElement(fabric.gradientDefs[gradientId], instances[i])); - } - } - }, - /** * Parses an SVG document, returning all of the gradient declarations found in it * @static @@ -3723,6 +3702,7 @@ fabric.ElementsParser.prototype._createObject = function(klass, el, index) { } else { var obj = klass.fromElement(el, this.options); + this.resolveGradient(obj); this.reviver && this.reviver(el, obj); this.instances[index] = obj; this.checkIfDone(); @@ -3732,18 +3712,31 @@ fabric.ElementsParser.prototype._createObject = function(klass, el, index) { fabric.ElementsParser.prototype.createCallback = function(index, el) { var _this = this; return function(obj) { + _this.resolveGradient(obj); _this.reviver && _this.reviver(el, obj); _this.instances[index] = obj; _this.checkIfDone(); }; }; +fabric.ElementsParser.prototype.resolveGradient = function(obj) { + + var instanceFillValue = obj.get('fill'); + if (!(/^url\(/).test(instanceFillValue)) { + return; + } + var gradientId = instanceFillValue.slice(5, instanceFillValue.length - 1); + if (fabric.gradientDefs[gradientId]) { + obj.set('fill', + fabric.Gradient.fromElement(fabric.gradientDefs[gradientId], obj)); + } +}; + fabric.ElementsParser.prototype.checkIfDone = function() { if (--this.numElements === 0) { this.instances = this.instances.filter(function(el) { return el != null; }); - fabric.resolveGradients(this.instances); this.callback(this.instances); } }; @@ -8167,7 +8160,8 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab var t = this._currentTransform, target = t.target, lockScalingX = target.get('lockScalingX'), - lockScalingY = target.get('lockScalingY'); + lockScalingY = target.get('lockScalingY'), + lockScalingFlip = target.get('lockScalingFlip'); if (lockScalingX && lockScalingY) { return; @@ -8180,7 +8174,7 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab this._setLocalMouse(localMouse, t); // Actually scale the object - this._setObjectScale(localMouse, t, lockScalingX, lockScalingY, by); + this._setObjectScale(localMouse, t, lockScalingX, lockScalingY, by, lockScalingFlip); // Make sure the constraints apply target.setPositionByOrigin(constraintPosition, t.originX, t.originY); @@ -8189,32 +8183,36 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab /** * @private */ - _setObjectScale: function(localMouse, transform, lockScalingX, lockScalingY, by) { - var target = transform.target; + _setObjectScale: function(localMouse, transform, lockScalingX, lockScalingY, by, lockScalingFlip) { + var target = transform.target, forbidScalingX = false, forbidScalingY = false; - transform.newScaleX = target.scaleX; - transform.newScaleY = target.scaleY; + transform.newScaleX = localMouse.x / (target.width + target.strokeWidth); + transform.newScaleY = localMouse.y / (target.height + target.strokeWidth); + + if (lockScalingFlip && transform.newScaleX <= 0 && transform.newScaleX < target.scaleX) { + forbidScalingX = true; + } + + if (lockScalingFlip && transform.newScaleY <= 0 && transform.newScaleY < target.scaleY) { + forbidScalingY = true; + } if (by === 'equally' && !lockScalingX && !lockScalingY) { - this._scaleObjectEqually(localMouse, target, transform); + forbidScalingX || forbidScalingY || this._scaleObjectEqually(localMouse, target, transform); } else if (!by) { - transform.newScaleX = localMouse.x / (target.width + target.strokeWidth); - transform.newScaleY = localMouse.y / (target.height + target.strokeWidth); - - lockScalingX || target.set('scaleX', transform.newScaleX); - lockScalingY || target.set('scaleY', transform.newScaleY); + forbidScalingX || lockScalingX || target.set('scaleX', transform.newScaleX); + forbidScalingY || lockScalingY || target.set('scaleY', transform.newScaleY); } else if (by === 'x' && !target.get('lockUniScaling')) { - transform.newScaleX = localMouse.x / (target.width + target.strokeWidth); - lockScalingX || target.set('scaleX', transform.newScaleX); + forbidScalingX || lockScalingX || target.set('scaleX', transform.newScaleX); } else if (by === 'y' && !target.get('lockUniScaling')) { - transform.newScaleY = localMouse.y / (target.height + target.strokeWidth); - lockScalingY || target.set('scaleY', transform.newScaleY); + forbidScalingY || lockScalingY || target.set('scaleY', transform.newScaleY); } - this._flipObject(transform); + forbidScalingX || forbidScalingY || this._flipObject(transform); + }, /** @@ -10853,6 +10851,13 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.Stati */ lockUniScaling: false, + /** + * When `true`, object cannot be flipped by scaling into negative values + * @type Boolean + * @default + */ + + lockScalingFlip: false, /** * List of properties to consider when checking if state * of an object is changed (fabric.Object#hasStateChanged) diff --git a/dist/fabric.min.js b/dist/fabric.min.js index b63b271e..e499da5c 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.10"};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=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width"],fabric.DPI=96,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)},transformPoint:function(e,t,n){return n?new fabric.Point(t[0]*e.x+t[1]*e.y,t[2]*e.x+t[3]*e.y):new fabric.Point(t[0]*e.x+t[1]*e.y+t[4],t[2]*e.x+t[3]*e.y+t[5])},invertTransform:function(e){var t=e.slice(),n=1/(e[0]*e[3]-e[1]*e[2]);t=[n*e[3],-n*e[1],-n*e[2],n*e[0],0,0];var r=fabric.util.transformPoint({x:e[4],y:e[5]},t);return t[4]=-r.x,t[5]=-r.y,t},toFixed:function(e,t){return parseFloat(Number(e).toFixed(t))},parseUnit:function(e){var t=/\D{0,2}$/.exec(e),n=parseFloat(e);switch(t[0]){case"mm":return n*fabric.DPI/25.4;case"cm":return n*fabric.DPI/2.54;case"in":return n*fabric.DPI;case"pt":return n*fabric.DPI/72;case"pc":return n*fabric.DPI/72*12;default:return n}},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;sr)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]},isTransparent:function(e,t,n,r){r>0&&(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=Math.sin(s),h=Math.cos(s),p=Math.sin(o),d=Math.cos(o),v=l*u,m=-f*a,g=f*u,y=l*a,b=.25*(o-s),w=8/3*Math.sin(b)*Math.sin(b)/Math.sin(b*2),E=e+h-w*c,S=i+c+w*h,x=e+d,T=i+p,N=x+w*p,C=T-w*d;return t[r]=[v*E+m*S,g*E+y*S,v*N+m*C,g*N+y*C,v*x+m*T,g*x+y*T],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 et[3]?t[3]:t[0];if(t[0]===1&&t[3]===1&&t[4]===0&&t[5]===0)return;var n=e.ownerDocument.createElement("g");while(e.firstChild!=null)n.appendChild(e.firstChild);n.setAttribute("transform","matrix("+t[0]+" "+t[1]+" "+t[2]+" "+t[3]+" "+t[4]+" "+t[5]+")"),e.appendChild(n)}function x(e){var n=e.objects,i=e.options;return n=n.map(function(e){return t[r(e.type)].fromObject(e)}),{objects:n,options:i}}function T(e,t,n){t[n]&&t[n].toSVG&&e.push('','')}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.parseUnit,u=t.util.multiplyTransformMatrices,a={cx:"left",x:"left",r:"radius",cy:"top",y:"top",display:"visible",visibility:"visible",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","text-anchor":"originX"},f={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*\\.\\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(u){var l=(new RegExp(v)).exec(u).filter(function(e){return e!==""&&e!=null}),c=l[1],h=l.slice(2).map(parseFloat);switch(c){case"translate":s(a,h);break;case"rotate":h[0]=t.util.degreesToRadians(h[0]),e(a,h);break;case"scale":n(a,h);break;case"skewX":r(a,h);break;case"skewY":i(a,h);break;case"matrix":a=h}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*\\.\\d+)(?:e[-+]?\\d+)?)",r=new RegExp("^\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*"+"$");return function(n,u,a){if(!n)return;var f=new Date;w(n);var l=n.getAttribute("viewBox"),c=o(n.getAttribute("width")),h=o(n.getAttribute("height")),p,d;if(l&&(l=l.match(r))){var v=parseFloat(l[1]),m=parseFloat(l[2]),g=1,y=1;p=parseFloat(l[3]),d=parseFloat(l[4]),c&&c!==p&&(g=c/p),h&&h!==d&&(y=h/d),E(n,[g,0,0,y,g*-v,y*-m])}var b=t.util.toArray(n.getElementsByTagName("*"));if(b.length===0&&t.isLikelyNode){b=n.selectNodes('//*[name(.)!="svg"]');var S=[];for(var x=0,T=b.length;x/i,"")));if(!s||!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){S.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),S.has(e,function(r){r?S.get(e,function(e){var t=x(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 T(t,e,"backgroundColor"),T(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]);if(e==="transparent"){this.setSource([255,255,255,0]);return}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,imageSmoothingEnabled:!0,viewportTransform:[1,0,0,1,0,0],onBeforeScaleRotate:function(){},_initStatic:function(e,t){this._objects=[],this._createLowerCanvas(e),this._initOptions(t),this._setImageSmoothing(),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)},_setImageSmoothing:function(){var e=this.getContext();e.imageSmoothingEnabled=this.imageSmoothingEnabled,e.webkitImageSmoothingEnabled=this.imageSmoothingEnabled,e.mozImageSmoothingEnabled=this.imageSmoothingEnabled,e.msImageSmoothingEnabled=this.imageSmoothingEnabled,e.oImageSmoothingEnabled=this.imageSmoothingEnabled},__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&&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",this.viewportTransform=this.viewportTransform.slice()},_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,t){return this.setDimensions({width:e},t)},setHeight:function(e,t){return this.setDimensions({height:e},t)},setDimensions:function(e,t){var n;t=t||{};for(var r in e)n=e[r],t.cssOnly||(this._setBackstoreDimension(r,e[r]),n+="px"),t.backstoreOnly||this._setCssDimension(r,n);return t.cssOnly||this.renderAll(),this.calcOffset(),this},_setBackstoreDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.upperCanvasEl&&(this.upperCanvasEl[e]=t),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this[e]=t,this},_setCssDimension:function(e,t){return this.lowerCanvasEl.style[e]=t,this.upperCanvasEl&&(this.upperCanvasEl.style[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t),this},getZoom:function(){return Math.sqrt(this.viewportTransform[0]*this.viewportTransform[3])},setViewportTransform:function(e){this.viewportTransform=e,this.renderAll();for(var t=0,n=this._objects.length;t"),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,t=this.canvas.viewportTransform,n=this._points[0],r=this._points[1];e.save(),e.transform(t[0],t[1],t[2],t[3],t[4],t[5]),e.beginPath(),this._points.length===2&&n.x===r.x&&n.y===r.y&&(n.x-=.5,r.x+=.5),e.moveTo(n.x,n.y);for(var i=1,s=this._points.length;in.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,!0))},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,!0),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,n,r){r||(r=this.upperCanvasEl);var i=e(t,r),s=r.getBoundingClientRect(),o;return this.calcOffset(),i.x=i.x-this._offset.left,i.y=i.y-this._offset.top,n||(i=fabric.util.transformPoint(i,fabric.util.invertTransform(this.viewportTransform))),s.width===0||s.height===0?o={width:1,height:1}:o={width:r.width/s.width,height:r.height/s.height},{x:i.x*o.width,y:i.y*o.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.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",canvas:this}),t.addWithUpdate(),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||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){this.group&&this.group.transform(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},getViewportTransform:function(){return this.canvas&&this.canvas.viewportTransform?this.canvas.viewportTransform:[1,0,0,1,0,0]},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);if(this.group&&this.group.type==="path-group"){e.translate(-this.group.width/2,-this.group.height/2);var r=this.transformMatrix;r&&e.transform(r[0],r[1],r[2],r[3],r[4],r[5])}e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this._restoreFillRule(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)},_renderControls:function(e,n){var r=this.getViewportTransform();e.save();if(this.active&&!n){var i;this.group&&(i=t.util.transformPoint(this.group.getCenterPoint(),r),e.translate(i.x,i.y),e.rotate(s(this.group.angle))),i=t.util.transformPoint(this.getCenterPoint(),r,null!=this.group),this.group&&(i.x*=this.group.scaleX,i.y*=this.group.scaleY),e.translate(i.x,i.y),e.rotate(s(this.angle)),this.drawBorders(e),this.drawControls(e)}e.restore()},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){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)),this.fillRule==="destination-over"?e.fill("evenodd"):e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke||this.strokeWidth===0)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",e?new t.Shadow(e):null)},setColor:function(e){return this.set("fill",e),this},setAngle:function(e){var t=(this.originX!=="center"||this.originY!=="center")&&this.centeredRotation;return t&&this._setOriginToCenter(),this.set("angle",e),t&&this._resetOrigin(),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},_setOriginToCenter:function(){this._originalOriginX=this.originX,this._originalOriginY=this.originY;var e=this.getCenterPoint();this.originX="center",this.originY="center",this.left=e.x,this.top=e.y},_resetOrigin:function(){var e=this.translateToOriginPoint(this.getCenterPoint(),this._originalOriginX,this._originalOriginY);this.originX=this._originalOriginX,this.originY=this._originalOriginY,this.left=e.x,this.top=e.y,this._originalOriginX=null,this._originalOriginY=null},_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=e(this.angle),r=this.getViewportTransform(),i=function(e){return fabric.util.transformPoint(e,r)},s=this.width,o=this.height,u=this.strokeLineCap==="round"||this.strokeLineCap==="square",a=this.type==="line"&&this.width===1,f=this.type==="line"&&this.height===1,l=u&&f||this.type!=="line",c=u&&a||this.type!=="line";a?s=t:f&&(o=t),l&&(s+=t),c&&(o+=t),this.currentWidth=s*this.scaleX,this.currentHeight=o*this.scaleY,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var h=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),p=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),d=Math.cos(p+n)*h,v=Math.sin(p+n)*h,m=Math.sin(n),g=Math.cos(n),y=this.getCenterPoint(),b=new fabric.Point(this.currentWidth,this.currentHeight),w=new fabric.Point(y.x-d,y.y-v),E=new fabric.Point(w.x+b.x*g,w.y+b.x*m),S=new fabric.Point(w.x-b.y*m,w.y+b.y*g),x=new fabric.Point(w.x+b.x/2*g,w.y+b.x/2*m),T=i(w),N=i(E),C=i(new fabric.Point(E.x-b.y*m,E.y+b.y*g)),k=i(S),L=i(new fabric.Point(w.x-b.y/2*m,w.y+b.y/2*g)),A=i(x),O=i(new fabric.Point(E.x-b.y/2*m,E.y+b.y/2*g)),M=i(new fabric.Point(S.x+b.x/2*g,S.y+b.x/2*m)),_=i(new fabric.Point(x.x,x.y)),D=Math.cos(p+n)*this.padding*Math.sqrt(2),P=Math.sin(p+n)*this.padding*Math.sqrt(2);return T=T.add(new fabric.Point(-D,-P)),N=N.add(new fabric.Point(P,-D)),C=C.add(new fabric.Point(D,P)),k=k.add(new fabric.Point(-P,D)),L=L.add(new fabric.Point((-D-P)/2,(-P+D)/2)),A=A.add(new fabric.Point((P-D)/2,-(P+D)/2)),O=O.add(new fabric.Point((P+D)/2,(P-D)/2)),M=M.add(new fabric.Point((D-P)/2,(D+P)/2)),_=_.add(new fabric.Point((P-D)/2,-(P+D)/2)),this.oCoords={tl:T,tr:N,br:C,bl:k,ml:L,mt:A,mr:O,mb:M,mtr:_},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.fillRule==="destination-over"?"evenodd":this.fillRule,n=this.stroke?this.stroke.toLive?"url(#SVGID_"+this.stroke.id+")":this.stroke:"none",r=this.strokeWidth?this.strokeWidth:"0",i=this.strokeDashArray?this.strokeDashArray.join(" "):"",s=this.strokeLineCap?this.strokeLineCap:"butt",o=this.strokeLineJoin?this.strokeLineJoin:"miter",u=this.strokeMiterLimit?this.strokeMiterLimit:"4",a=typeof this.opacity!="undefined"?this.opacity:"1",f=this.visible?"":" visibility: hidden;",l=this.shadow&&this.type!=="text"?"filter: url(#SVGID_"+this.shadow.id+");":"";return["stroke: ",n,"; ","stroke-width: ",r,"; ","stroke-dasharray: ",i,"; ","stroke-linecap: ",s,"; ","stroke-linejoin: ",o,"; ","stroke-miterlimit: ",u,"; ","fill: ",e,"; ","fill-rule: ",t,"; ","opacity: ",a,";",l,f].join("")},getSvgTransform:function(){if(this.group)return"";var e=fabric.util.toFixed,t=this.getAngle(),n=this.getViewportTransform(),r=fabric.util.transformPoint(this.getCenterPoint(),n),i=fabric.Object.NUM_FRACTION_DIGITS,s=this.type==="path-group"?"":"translate("+e(r.x,i)+" "+e(r.y,i)+")",o=t!==0?" rotate("+e(t,i)+")":"",u=this.scaleX===1&&this.scaleY===1&&n[0]===1&&n[3]===1?"":" scale("+e(this.scaleX*n[0],i)+" "+e(this.scaleY*n[3],i)+")",a=this.type==="path-group"?this.width*n[0]:0,f=this.flipX?" matrix(-1 0 0 1 "+a+" 0) ":"",l=this.type==="path-group"?this.height*n[3]:0,c=this.flipY?" matrix(1 0 0 -1 0 "+l+")":"";return[s,o,u,f,c].join("")},getSvgTransformMatrix:function(){return this.transformMatrix?" matrix("+this.transformMatrix.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=function(){return 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.getViewportTransform();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;var o=this.getWidth(),u=this.getHeight(),a=this.strokeWidth>1?this.strokeWidth:0,f=this.strokeLineCap==="round"||this.strokeLineCap==="square",l=this.type==="line"&&this.width===1,c=this.type==="line"&&this.height===1,h=f&&c||this.type!=="line",p=f&&l||this.type!=="line";l?o=a/i:c&&(u=a/s),h&&(o+=a/i),p&&(u+=a/s);var d=fabric.util.transformPoint(new fabric.Point(o,u),r,!0),v=d.x,m=d.y;this.group&&(v*=this.group.scaleX,m*=this.group.scaleY),e.strokeRect(~~(-(v/2)-t)-.5,~~(-(m/2)-t)-.5,~~(v+n)+1,~~(m+n)+1);if(this.hasRotatingPoint&&this.isControlVisible("mtr")&&!this.get("lockRotation")&&this.hasControls){var g=(-m-t*2)/2;e.beginPath(),e.moveTo(0,g),e.lineTo(0,g-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.getViewportTransform(),i=this.strokeWidth>1?this.strokeWidth:0,s=this.width,o=this.height,u=this.strokeLineCap==="round"||this.strokeLineCap==="square",a=this.type==="line"&&this.width===1,f=this.type==="line"&&this.height===1,l=u&&f||this.type!=="line",c=u&&a||this.type!=="line";a?s=i:f&&(o=i),l&&(s+=i),c&&(o+=i),s*=this.scaleX,o*=this.scaleY;var h=fabric.util.transformPoint(new fabric.Point(s,o),r,!0),p=h.x,d=h.y,v=-(p/2),m=-(d/2),g=this.padding,y=n,b=n-t,w=this.transparentCorners?"strokeRect":"fillRect";return e.save(),e.lineWidth=1,e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=e.fillStyle=this.cornerColor,this._drawControl("tl",e,w,v-y-g,m-y-g),this._drawControl("tr",e,w,v+p-y+g,m-y-g),this._drawControl("bl",e,w,v-y-g,m+d+b+g),this._drawControl("br",e,w,v+p+b+g,m+d+b+g),this.get("lockUniScaling")||(this._drawControl("mt",e,w,v+p/2-y,m-y-g),this._drawControl("mb",e,w,v+p/2-y,m+d+b+g),this._drawControl("mr",e,w,v+p+b+g,m+d/2-y),this._drawControl("ml",e,w,v-y-g,m+d/2-y)),this.hasRotatingPoint&&this._drawControl("mtr",e,w,v+p/2-y,m-this.rotatingPointOffset-this.cornerSize/2-g),e.restore(),this},_drawControl:function(e,n,r,i,s){var o=this.cornerSize;this.isControlVisible(e)&&(t()||this.transparentCorners||n.clearRect(i,s,o,o),n[r](i,s,o,o))},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;rthis.x2?this.x2:this.x1),i=-this.height/2-(this.y1>this.y2?this.y2:this.y1);n="translate("+r+", "+i+") "}return t.push("\n'),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.callSuper("initialize",e),this.set("radius",e.radius||0)},_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(),n=0,r=0;return this.group&&(n=this.left+this.radius,r=this.top+this.radius),t.push("\n'),e?e(t.join("")):t.join("")},_render:function(e,t){e.beginPath(),e.arc(t?this.left+this.radius:0,t?this.top+this.radius:0,this.radius,0,n,!1),this._renderFill(e),this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this -.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");s.left=s.left||0,s.top=s.top||0;var o=new t.Circle(r(s,n));return o.left-=o.radius,o.top-=o.radius,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(),n=0,r=0;return this.group&&(n=this.left+this.rx,r=this.top+this.ry),t.push("\n'),e?e(t.join("")):t.join("")},_render:function(e,t){e.beginPath(),e.save(),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left+this.rx:0,t?(this.top+this.ry)*this.rx/this.ry: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);i.left=i.left||0,i.top=i.top||0;var s=new t.Ellipse(r(i,n));return s.top-=s.ry,s.left-=s.rx,s},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";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,strokeDashArray:null,initialize:function(e){e=e||{},this.callSuper("initialize",e),this._initRxRy()},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e,t){if(this.width===1&&this.height===1){e.fillRect(0,0,1,1);return}var n=this.rx?Math.min(this.rx,this.width/2):0,r=this.ry?Math.min(this.ry,this.height/2):0,i=this.width,s=this.height,o=t?this.left:0,u=t?this.top:0,a=n!==0||r!==0,f=.4477152502;e.beginPath(),t||e.translate(-this.width/2,-this.height/2),e.moveTo(o+n,u),e.lineTo(o+i-n,u),a&&e.bezierCurveTo(o+i-f*n,u,o+i,u+f*r,o+i,u+r),e.lineTo(o+i,u+s-r),a&&e.bezierCurveTo(o+i,u+s-f*r,o+i-f*n,u+s,o+i-n,u+s),e.lineTo(o+n,u+s),a&&e.bezierCurveTo(o+f*n,u+s,o,u+s-f*r,o,u+s-r),e.lineTo(o,u+r),a&&e.bezierCurveTo(o,u+f*r,o+f*n,u,o+n,u),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()},toObject:function(e){var t=n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=this._createBaseSVGMarkup(),n=this.left,r=this.top;return this.group||(n=-this.width/2,r=-this.height/2),t.push("\n'),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;r=r||{};var i=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);return i.left=i.left||0,i.top=i.top||0,new t.Rect(n(r?t.util.object.clone(r):{},i))},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\n'),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\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\n"),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 f=0,l,c=this.path.length;fv)for(var g=1,y=l.length;g\n"];for(var i=0,s=t.length;i\n"),e?e(r.join("")):r.join("")},toString:function(){return"#"},isSameColor:function(){var e=(this.getObjects()[0].get("fill")||"").toLowerCase();return this.getObjects().every(function(t){return(t.get("fill")||"").toLowerCase()===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(),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(),e&&(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){if(!this.visible)return;e.save(),this.clipTo&&t.util.clipContext(this,e);for(var n=0,r=this._objects.length;n\n'];for(var n=0,r=this._objects.length;n\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\n','\n");if(this.stroke||this.strokeDashArray){var i=this.fill;this.fill=null,t.push("\n'),this.fill=i}return t.push("\n"),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,t){this._element&&e.drawImage(this._element,t?this.left:-this.width/2,t?this.top:-this.height/2,this.width,this.height),this._renderStroke(e)},_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.crossOrigin&&(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||0},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){typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaNative:function(e){var n=this.text.split(this._reNewline);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._setupFillRule(e),this._renderTextFill(e,t),this._renderTextStroke(e,t),this._restoreFillRule(e),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(),this._transform(e,t);var n=this.transformMatrix,r=this.group&&this.group.type==="path-group";r&&e.translate(-this.group.width/2,-this.group.height/2),n&&e.transform(n[0],n[1],n[2],n[3],n[4],n[5]),r&&e.translate(this.left,this.top),this._render(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+(this.group?this.left:0),textTop:r+(this.group?this.top:0),lineTop:t}},_wrapSVGTextAndBg:function(e,t,n,r){e.push('\n',t.textBgRects.join(""),"',n.join(""),t.textSpans.join(""),"\n","\n")},_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("\n')},_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 dx dy font-family font-style font-weight font-size text-decoration text-anchor".split(" ")),t.Text.DEFAULT_SVG_FONT_SIZE=16,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),"dx"in r&&(n.left+=r.dx),"dy"in r&&(n.top+=r.dy),"fontSize"in n||(n.fontSize=t.Text.DEFAULT_SVG_FONT_SIZE),n.originX||(n.originX="left");var i=new t.Text(e.textContent,n),s=0;return i.originX==="left"&&(s=i.getWidth()/2),i.originX==="right"&&(s=-i.getWidth()/2),i.set({left:i.getLeft()+s,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.fire("selection:changed"),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.fire("selection:changed"),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,this.__lastSelected=this.selected},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.__lastSelected&&(this.enterEditing(),this.initDelayedCursor(!0)),this.selected=!0})},setCursorByClick:function(e){var t=this.getSelectionStartFromPointer(e);e.shiftKey?ts?0:1,a=r+u;return this.flipX&&(a=i-a),a>this.text.length&&(a=this.text.length),a}}),fabric.util.object.extend(fabric.IText.prototype,{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)),fabric.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this)),fabric.util.addListener(this.hiddenTextarea,"paste",this.paste.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",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.stopPropagation(),this.canvas&&this.canvas.renderAll()},forwardDelete:function(e){this.selectionStart===this.selectionEnd&&this.moveCursorRight(e),this.removeChars(e)},copy:function(e){var t=this.getSelectedText(),n=this._getClipboardData(e);n&&n.setData("text",t),this.copiedText=t,this.copiedStyles=this.getSelectionStyles(this.selectionStart,this.selectionEnd)},paste:function(e){var t=null,n=this._getClipboardData(e);n?t=n.getData("text"):t=this.copiedText,t&&this.insertChars(t)},cut:function(e){if(this.selectionStart===this.selectionEnd)return;this.copy(),this.removeChars(e)},_getClipboardData:function(e){return e&&(e.clipboardData||fabric.window.clipboardData)},onKeyPress:function(e){if(!this.isEditing||e.metaKey||e.ctrlKey||e.keyCode in this._keysMap)return;this.insertChars(String.fromCharCode(e.which)),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,t){return origSetWidth.call(this,e,t),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,t){return origSetHeight.call(this,e,t),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file +/* build: `node build.js modules=ALL exclude=gestures,cufon,json minifier=uglifyjs` *//*! Fabric.js Copyright 2008-2014, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"1.4.10"};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=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width"],fabric.DPI=96,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)},transformPoint:function(e,t,n){return n?new fabric.Point(t[0]*e.x+t[1]*e.y,t[2]*e.x+t[3]*e.y):new fabric.Point(t[0]*e.x+t[1]*e.y+t[4],t[2]*e.x+t[3]*e.y+t[5])},invertTransform:function(e){var t=e.slice(),n=1/(e[0]*e[3]-e[1]*e[2]);t=[n*e[3],-n*e[1],-n*e[2],n*e[0],0,0];var r=fabric.util.transformPoint({x:e[4],y:e[5]},t);return t[4]=-r.x,t[5]=-r.y,t},toFixed:function(e,t){return parseFloat(Number(e).toFixed(t))},parseUnit:function(e){var t=/\D{0,2}$/.exec(e),n=parseFloat(e);switch(t[0]){case"mm":return n*fabric.DPI/25.4;case"cm":return n*fabric.DPI/2.54;case"in":return n*fabric.DPI;case"pt":return n*fabric.DPI/72;case"pc":return n*fabric.DPI/72*12;default:return n}},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;sr)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]},isTransparent:function(e,t,n,r){r>0&&(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=Math.sin(s),h=Math.cos(s),p=Math.sin(o),d=Math.cos(o),v=l*u,m=-f*a,g=f*u,y=l*a,b=.25*(o-s),w=8/3*Math.sin(b)*Math.sin(b)/Math.sin(b*2),E=e+h-w*c,S=i+c+w*h,x=e+d,T=i+p,N=x+w*p,C=T-w*d;return t[r]=[v*E+m*S,g*E+y*S,v*N+m*C,g*N+y*C,v*x+m*T,g*x+y*T],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 et[3]?t[3]:t[0];if(t[0]===1&&t[3]===1&&t[4]===0&&t[5]===0)return;var n=e.ownerDocument.createElement("g");while(e.firstChild!=null)n.appendChild(e.firstChild);n.setAttribute("transform","matrix("+t[0]+" "+t[1]+" "+t[2]+" "+t[3]+" "+t[4]+" "+t[5]+")"),e.appendChild(n)}function x(e){var n=e.objects,i=e.options;return n=n.map(function(e){return t[r(e.type)].fromObject(e)}),{objects:n,options:i}}function T(e,t,n){t[n]&&t[n].toSVG&&e.push('','')}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.parseUnit,u=t.util.multiplyTransformMatrices,a={cx:"left",x:"left",r:"radius",cy:"top",y:"top",display:"visible",visibility:"visible",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","text-anchor":"originX"},f={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*\\.\\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(u){var l=(new RegExp(v)).exec(u).filter(function(e){return e!==""&&e!=null}),c=l[1],h=l.slice(2).map(parseFloat);switch(c){case"translate":s(a,h);break;case"rotate":h[0]=t.util.degreesToRadians(h[0]),e(a,h);break;case"scale":n(a,h);break;case"skewX":r(a,h);break;case"skewY":i(a,h);break;case"matrix":a=h}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*\\.\\d+)(?:e[-+]?\\d+)?)",r=new RegExp("^\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*"+"$");return function(n,u,a){if(!n)return;var f=new Date;w(n);var l=n.getAttribute("viewBox"),c=o(n.getAttribute("width")),h=o(n.getAttribute("height")),p,d;if(l&&(l=l.match(r))){var v=parseFloat(l[1]),m=parseFloat(l[2]),g=1,y=1;p=parseFloat(l[3]),d=parseFloat(l[4]),c&&c!==p&&(g=c/p),h&&h!==d&&(y=h/d),E(n,[g,0,0,y,g*-v,y*-m])}var b=t.util.toArray(n.getElementsByTagName("*"));if(b.length===0&&t.isLikelyNode){b=n.selectNodes('//*[name(.)!="svg"]');var S=[];for(var x=0,T=b.length;x/i,"")));if(!s||!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){S.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),S.has(e,function(r){r?S.get(e,function(e){var t=x(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 T(t,e,"backgroundColor"),T(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]);if(e==="transparent"){this.setSource([255,255,255,0]);return}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,imageSmoothingEnabled:!0,viewportTransform:[1,0,0,1,0,0],onBeforeScaleRotate:function(){},_initStatic:function(e,t){this._objects=[],this._createLowerCanvas(e),this._initOptions(t),this._setImageSmoothing(),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)},_setImageSmoothing:function(){var e=this.getContext();e.imageSmoothingEnabled=this.imageSmoothingEnabled,e.webkitImageSmoothingEnabled=this.imageSmoothingEnabled,e.mozImageSmoothingEnabled=this.imageSmoothingEnabled,e.msImageSmoothingEnabled=this.imageSmoothingEnabled,e.oImageSmoothingEnabled=this.imageSmoothingEnabled},__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&&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",this.viewportTransform=this.viewportTransform.slice()},_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,t){return this.setDimensions({width:e},t)},setHeight:function(e,t){return this.setDimensions({height:e},t)},setDimensions:function(e,t){var n;t=t||{};for(var r in e)n=e[r],t.cssOnly||(this._setBackstoreDimension(r,e[r]),n+="px"),t.backstoreOnly||this._setCssDimension(r,n);return t.cssOnly||this.renderAll(),this.calcOffset(),this},_setBackstoreDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.upperCanvasEl&&(this.upperCanvasEl[e]=t),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this[e]=t,this},_setCssDimension:function(e,t){return this.lowerCanvasEl.style[e]=t,this.upperCanvasEl&&(this.upperCanvasEl.style[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t),this},getZoom:function(){return Math.sqrt(this.viewportTransform[0]*this.viewportTransform[3])},setViewportTransform:function(e){this.viewportTransform=e,this.renderAll();for(var t=0,n=this._objects.length;t"),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,t=this.canvas.viewportTransform,n=this._points[0],r=this._points[1];e.save(),e.transform(t[0],t[1],t[2],t[3],t[4],t[5]),e.beginPath(),this._points.length===2&&n.x===r.x&&n.y===r.y&&(n.x-=.5,r.x+=.5),e.moveTo(n.x,n.y);for(var i=1,s=this._points.length;in.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,!0))},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,!0),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,n,r){r||(r=this.upperCanvasEl);var i=e(t,r),s=r.getBoundingClientRect(),o;return this.calcOffset(),i.x=i.x-this._offset.left,i.y=i.y-this._offset.top,n||(i=fabric.util.transformPoint(i,fabric.util.invertTransform(this.viewportTransform))),s.width===0||s.height===0?o={width:1,height:1}:o={width:r.width/s.width,height:r.height/s.height},{x:i.x*o.width,y:i.y*o.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.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",canvas:this}),t.addWithUpdate(),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||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,lockScalingFlip:!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){this.group&&this.group.transform(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},getViewportTransform:function(){return this.canvas&&this.canvas.viewportTransform?this.canvas.viewportTransform:[1,0,0,1,0,0]},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);if(this.group&&this.group.type==="path-group"){e.translate(-this.group.width/2,-this.group.height/2);var r=this.transformMatrix;r&&e.transform(r[0],r[1],r[2],r[3],r[4],r[5])}e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this._restoreFillRule(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)},_renderControls:function(e,n){var r=this.getViewportTransform();e.save();if(this.active&&!n){var i;this.group&&(i=t.util.transformPoint(this.group.getCenterPoint(),r),e.translate(i.x,i.y),e.rotate(s(this.group.angle))),i=t.util.transformPoint(this.getCenterPoint(),r,null!=this.group),this.group&&(i.x*=this.group.scaleX,i.y*=this.group.scaleY),e.translate(i.x,i.y),e.rotate(s(this.angle)),this.drawBorders(e),this.drawControls(e)}e.restore()},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){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)),this.fillRule==="destination-over"?e.fill("evenodd"):e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke||this.strokeWidth===0)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",e?new t.Shadow(e):null)},setColor:function(e){return this.set("fill",e),this},setAngle:function(e){var t=(this.originX!=="center"||this.originY!=="center")&&this.centeredRotation;return t&&this._setOriginToCenter(),this.set("angle",e),t&&this._resetOrigin(),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},_setOriginToCenter:function(){this._originalOriginX=this.originX,this._originalOriginY=this.originY;var e=this.getCenterPoint();this.originX="center",this.originY="center",this.left=e.x,this.top=e.y},_resetOrigin:function(){var e=this.translateToOriginPoint(this.getCenterPoint(),this._originalOriginX,this._originalOriginY);this.originX=this._originalOriginX,this.originY=this._originalOriginY,this.left=e.x,this.top=e.y,this._originalOriginX=null,this._originalOriginY=null},_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=e(this.angle),r=this.getViewportTransform(),i=function(e){return fabric.util.transformPoint(e,r)},s=this.width,o=this.height,u=this.strokeLineCap==="round"||this.strokeLineCap==="square",a=this.type==="line"&&this.width===1,f=this.type==="line"&&this.height===1,l=u&&f||this.type!=="line",c=u&&a||this.type!=="line";a?s=t:f&&(o=t),l&&(s+=t),c&&(o+=t),this.currentWidth=s*this.scaleX,this.currentHeight=o*this.scaleY,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var h=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),p=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),d=Math.cos(p+n)*h,v=Math.sin(p+n)*h,m=Math.sin(n),g=Math.cos(n),y=this.getCenterPoint(),b=new fabric.Point(this.currentWidth,this.currentHeight),w=new fabric.Point(y.x-d,y.y-v),E=new fabric.Point(w.x+b.x*g,w.y+b.x*m),S=new fabric.Point(w.x-b.y*m,w.y+b.y*g),x=new fabric.Point(w.x+b.x/2*g,w.y+b.x/2*m),T=i(w),N=i(E),C=i(new fabric.Point(E.x-b.y*m,E.y+b.y*g)),k=i(S),L=i(new fabric.Point(w.x-b.y/2*m,w.y+b.y/2*g)),A=i(x),O=i(new fabric.Point(E.x-b.y/2*m,E.y+b.y/2*g)),M=i(new fabric.Point(S.x+b.x/2*g,S.y+b.x/2*m)),_=i(new fabric.Point(x.x,x.y)),D=Math.cos(p+n)*this.padding*Math.sqrt(2),P=Math.sin(p+n)*this.padding*Math.sqrt(2);return T=T.add(new fabric.Point(-D,-P)),N=N.add(new fabric.Point(P,-D)),C=C.add(new fabric.Point(D,P)),k=k.add(new fabric.Point(-P,D)),L=L.add(new fabric.Point((-D-P)/2,(-P+D)/2)),A=A.add(new fabric.Point((P-D)/2,-(P+D)/2)),O=O.add(new fabric.Point((P+D)/2,(P-D)/2)),M=M.add(new fabric.Point((D-P)/2,(D+P)/2)),_=_.add(new fabric.Point((P-D)/2,-(P+D)/2)),this.oCoords={tl:T,tr:N,br:C,bl:k,ml:L,mt:A,mr:O,mb:M,mtr:_},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.fillRule==="destination-over"?"evenodd":this.fillRule,n=this.stroke?this.stroke.toLive?"url(#SVGID_"+this.stroke.id+")":this.stroke:"none",r=this.strokeWidth?this.strokeWidth:"0",i=this.strokeDashArray?this.strokeDashArray.join(" "):"",s=this.strokeLineCap?this.strokeLineCap:"butt",o=this.strokeLineJoin?this.strokeLineJoin:"miter",u=this.strokeMiterLimit?this.strokeMiterLimit:"4",a=typeof this.opacity!="undefined"?this.opacity:"1",f=this.visible?"":" visibility: hidden;",l=this.shadow&&this.type!=="text"?"filter: url(#SVGID_"+this.shadow.id+");":"";return["stroke: ",n,"; ","stroke-width: ",r,"; ","stroke-dasharray: ",i,"; ","stroke-linecap: ",s,"; ","stroke-linejoin: ",o,"; ","stroke-miterlimit: ",u,"; ","fill: ",e,"; ","fill-rule: ",t,"; ","opacity: ",a,";",l,f].join("")},getSvgTransform:function(){if(this.group)return"";var e=fabric.util.toFixed,t=this.getAngle(),n=this.getViewportTransform(),r=fabric.util.transformPoint(this.getCenterPoint(),n),i=fabric.Object.NUM_FRACTION_DIGITS,s=this.type==="path-group"?"":"translate("+e(r.x,i)+" "+e(r.y,i)+")",o=t!==0?" rotate("+e(t,i)+")":"",u=this.scaleX===1&&this.scaleY===1&&n[0]===1&&n[3]===1?"":" scale("+e(this.scaleX*n[0],i)+" "+e(this.scaleY*n[3],i)+")",a=this.type==="path-group"?this.width*n[0]:0,f=this.flipX?" matrix(-1 0 0 1 "+a+" 0) ":"",l=this.type==="path-group"?this.height*n[3]:0,c=this.flipY?" matrix(1 0 0 -1 0 "+l+")":"";return[s,o,u,f,c].join("")},getSvgTransformMatrix:function(){return this.transformMatrix?" matrix("+this.transformMatrix.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=function(){return 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.getViewportTransform();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;var o=this.getWidth(),u=this.getHeight(),a=this.strokeWidth>1?this.strokeWidth:0,f=this.strokeLineCap==="round"||this.strokeLineCap==="square",l=this.type==="line"&&this.width===1,c=this.type==="line"&&this.height===1,h=f&&c||this.type!=="line",p=f&&l||this.type!=="line";l?o=a/i:c&&(u=a/s),h&&(o+=a/i),p&&(u+=a/s);var d=fabric.util.transformPoint(new fabric.Point(o,u),r,!0),v=d.x,m=d.y;this.group&&(v*=this.group.scaleX,m*=this.group.scaleY),e.strokeRect(~~(-(v/2)-t)-.5,~~(-(m/2)-t)-.5,~~(v+n)+1,~~(m+n)+1);if(this.hasRotatingPoint&&this.isControlVisible("mtr")&&!this.get("lockRotation")&&this.hasControls){var g=(-m-t*2)/2;e.beginPath(),e.moveTo(0,g),e.lineTo(0,g-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.getViewportTransform(),i=this.strokeWidth>1?this.strokeWidth:0,s=this.width,o=this.height,u=this.strokeLineCap==="round"||this.strokeLineCap==="square",a=this.type==="line"&&this.width===1,f=this.type==="line"&&this.height===1,l=u&&f||this.type!=="line",c=u&&a||this.type!=="line";a?s=i:f&&(o=i),l&&(s+=i),c&&(o+=i),s*=this.scaleX,o*=this.scaleY;var h=fabric.util.transformPoint(new fabric.Point(s,o),r,!0),p=h.x,d=h.y,v=-(p/2),m=-(d/2),g=this.padding,y=n,b=n-t,w=this.transparentCorners?"strokeRect":"fillRect";return e.save(),e.lineWidth=1,e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=e.fillStyle=this.cornerColor,this._drawControl("tl",e,w,v-y-g,m-y-g),this._drawControl("tr",e,w,v+p-y+g,m-y-g),this._drawControl("bl",e,w,v-y-g,m+d+b+g),this._drawControl("br",e,w,v+p+b+g,m+d+b+g),this.get("lockUniScaling")||(this._drawControl("mt",e,w,v+p/2-y,m-y-g),this._drawControl("mb",e,w,v+p/2-y,m+d+b+g),this._drawControl("mr",e,w,v+p+b+g,m+d/2-y),this._drawControl("ml",e,w,v-y-g,m+d/2-y)),this.hasRotatingPoint&&this._drawControl("mtr",e,w,v+p/2-y,m-this.rotatingPointOffset-this.cornerSize/2-g),e.restore(),this},_drawControl:function(e,n,r,i,s){var o=this.cornerSize;this.isControlVisible(e)&&(t()||this.transparentCorners||n.clearRect(i,s,o,o),n[r](i,s,o,o))},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;rthis.x2?this.x2:this.x1),i=-this.height/2-(this.y1>this.y2?this.y2:this.y1);n="translate("+r+", "+i+") "}return t.push("\n'),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.callSuper("initialize",e),this.set("radius",e.radius||0)},_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(),n=0,r=0;return this.group&&(n=this.left+this.radius,r=this.top+this.radius),t.push("\n'),e?e(t.join("")):t.join("")},_render:function(e,t){e.beginPath(),e.arc(t?this.left+this.radius:0,t?this.top+this.radius:0,this.radius,0,n,!1),this._renderFill(e),this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get +("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");s.left=s.left||0,s.top=s.top||0;var o=new t.Circle(r(s,n));return o.left-=o.radius,o.top-=o.radius,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(),n=0,r=0;return this.group&&(n=this.left+this.rx,r=this.top+this.ry),t.push("\n'),e?e(t.join("")):t.join("")},_render:function(e,t){e.beginPath(),e.save(),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left+this.rx:0,t?(this.top+this.ry)*this.rx/this.ry: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);i.left=i.left||0,i.top=i.top||0;var s=new t.Ellipse(r(i,n));return s.top-=s.ry,s.left-=s.rx,s},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";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,strokeDashArray:null,initialize:function(e){e=e||{},this.callSuper("initialize",e),this._initRxRy()},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e,t){if(this.width===1&&this.height===1){e.fillRect(0,0,1,1);return}var n=this.rx?Math.min(this.rx,this.width/2):0,r=this.ry?Math.min(this.ry,this.height/2):0,i=this.width,s=this.height,o=t?this.left:0,u=t?this.top:0,a=n!==0||r!==0,f=.4477152502;e.beginPath(),t||e.translate(-this.width/2,-this.height/2),e.moveTo(o+n,u),e.lineTo(o+i-n,u),a&&e.bezierCurveTo(o+i-f*n,u,o+i,u+f*r,o+i,u+r),e.lineTo(o+i,u+s-r),a&&e.bezierCurveTo(o+i,u+s-f*r,o+i-f*n,u+s,o+i-n,u+s),e.lineTo(o+n,u+s),a&&e.bezierCurveTo(o+f*n,u+s,o,u+s-f*r,o,u+s-r),e.lineTo(o,u+r),a&&e.bezierCurveTo(o,u+f*r,o+f*n,u,o+n,u),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()},toObject:function(e){var t=n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=this._createBaseSVGMarkup(),n=this.left,r=this.top;return this.group||(n=-this.width/2,r=-this.height/2),t.push("\n'),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;r=r||{};var i=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);return i.left=i.left||0,i.top=i.top||0,new t.Rect(n(r?t.util.object.clone(r):{},i))},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\n'),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\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\n"),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 f=0,l,c=this.path.length;fv)for(var g=1,y=l.length;g\n"];for(var i=0,s=t.length;i\n"),e?e(r.join("")):r.join("")},toString:function(){return"#"},isSameColor:function(){var e=(this.getObjects()[0].get("fill")||"").toLowerCase();return this.getObjects().every(function(t){return(t.get("fill")||"").toLowerCase()===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(),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(),e&&(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){if(!this.visible)return;e.save(),this.clipTo&&t.util.clipContext(this,e);for(var n=0,r=this._objects.length;n\n'];for(var n=0,r=this._objects.length;n\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\n','\n");if(this.stroke||this.strokeDashArray){var i=this.fill;this.fill=null,t.push("\n'),this.fill=i}return t.push("\n"),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,t){this._element&&e.drawImage(this._element,t?this.left:-this.width/2,t?this.top:-this.height/2,this.width,this.height),this._renderStroke(e)},_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.crossOrigin&&(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||0},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){typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaNative:function(e){var n=this.text.split(this._reNewline);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._setupFillRule(e),this._renderTextFill(e,t),this._renderTextStroke(e,t),this._restoreFillRule(e),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(),this._transform(e,t);var n=this.transformMatrix,r=this.group&&this.group.type==="path-group";r&&e.translate(-this.group.width/2,-this.group.height/2),n&&e.transform(n[0],n[1],n[2],n[3],n[4],n[5]),r&&e.translate(this.left,this.top),this._render(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+(this.group?this.left:0),textTop:r+(this.group?this.top:0),lineTop:t}},_wrapSVGTextAndBg:function(e,t,n,r){e.push('\n',t.textBgRects.join(""),"',n.join(""),t.textSpans.join(""),"\n","\n")},_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("\n')},_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 dx dy font-family font-style font-weight font-size text-decoration text-anchor".split(" ")),t.Text.DEFAULT_SVG_FONT_SIZE=16,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),"dx"in r&&(n.left+=r.dx),"dy"in r&&(n.top+=r.dy),"fontSize"in n||(n.fontSize=t.Text.DEFAULT_SVG_FONT_SIZE),n.originX||(n.originX="left");var i=new t.Text(e.textContent,n),s=0;return i.originX==="left"&&(s=i.getWidth()/2),i.originX==="right"&&(s=-i.getWidth()/2),i.set({left:i.getLeft()+s,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.fire("selection:changed"),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.fire("selection:changed"),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,this.__lastSelected=this.selected},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.__lastSelected&&(this.enterEditing(),this.initDelayedCursor(!0)),this.selected=!0})},setCursorByClick:function(e){var t=this.getSelectionStartFromPointer(e);e.shiftKey?ts?0:1,a=r+u;return this.flipX&&(a=i-a),a>this.text.length&&(a=this.text.length),a}}),fabric.util.object.extend(fabric.IText.prototype,{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)),fabric.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this)),fabric.util.addListener(this.hiddenTextarea,"paste",this.paste.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",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.stopPropagation(),this.canvas&&this.canvas.renderAll()},forwardDelete:function(e){this.selectionStart===this.selectionEnd&&this.moveCursorRight(e),this.removeChars(e)},copy:function(e){var t=this.getSelectedText(),n=this._getClipboardData(e);n&&n.setData("text",t),this.copiedText=t,this.copiedStyles=this.getSelectionStyles(this.selectionStart,this.selectionEnd)},paste:function(e){var t=null,n=this._getClipboardData(e);n?t=n.getData("text"):t=this.copiedText,t&&this.insertChars(t)},cut:function(e){if(this.selectionStart===this.selectionEnd)return;this.copy(),this.removeChars(e)},_getClipboardData:function(e){return e&&(e.clipboardData||fabric.window.clipboardData)},onKeyPress:function(e){if(!this.isEditing||e.metaKey||e.ctrlKey||e.keyCode in this._keysMap)return;this.insertChars(String.fromCharCode(e.which)),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,t){return origSetWidth.call(this,e,t),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,t){return origSetHeight.call(this,e,t),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 ce1d547a503d9a98d86f2411a09b35de577edf2d..3822d1baad73269b978e5cd6f2bf3ae8885e96c9 100644 GIT binary patch delta 45993 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 tn2w4D+C_D@qOOX>>wW0|1C?K==Rv delta 45930 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 i8xgX-6PTbPU8oR?;RU#O-jL9