From 139b77c8a06993c097d6ed597556e68a1370cbb6 Mon Sep 17 00:00:00 2001 From: kangax Date: Tue, 14 Oct 2014 17:58:55 +0200 Subject: [PATCH] Version 1.4.12 --- HEADER.js | 2 +- bower.json | 2 +- dist/fabric.js | 161 +++++++++++++---------------------------- dist/fabric.min.js | 14 ++-- dist/fabric.min.js.gz | Bin 58618 -> 58340 bytes dist/fabric.require.js | 161 +++++++++++++---------------------------- package.json | 2 +- 7 files changed, 112 insertions(+), 230 deletions(-) diff --git a/HEADER.js b/HEADER.js index f8071752230..c448a14e919 100644 --- a/HEADER.js +++ b/HEADER.js @@ -1,6 +1,6 @@ /*! Fabric.js Copyright 2008-2014, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "1.4.11" }; +var fabric = fabric || { version: "1.4.12" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; } diff --git a/bower.json b/bower.json index 5c7282a42b4..2827a502b5d 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "fabric.js", - "version": "1.4.11", + "version": "1.4.12", "homepage": "http://fabricjs.com", "authors": [ "kangax", "Kienz" diff --git a/dist/fabric.js b/dist/fabric.js index e9b65702f37..1301287e102 100644 --- a/dist/fabric.js +++ b/dist/fabric.js @@ -1,7 +1,7 @@ /* build: `node build.js modules=ALL exclude=gestures,cufon,json minifier=uglifyjs` */ /*! Fabric.js Copyright 2008-2014, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "1.4.11" }; +var fabric = fabric || { version: "1.4.12" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; } @@ -2059,12 +2059,12 @@ fabric.Collection = { element = element.parentNode; - if (element !== fabric.document && + if (element.nodeType === 1 && fabric.util.getElementStyle(element, 'position') === 'fixed') { firstFixedAncestor = element; } - if (element !== fabric.document && + if (element.nodeType === 1 && origElement !== upperCanvasEl && fabric.util.getElementStyle(element, 'position') === 'absolute') { left = 0; @@ -2957,11 +2957,11 @@ if (typeof console !== 'undefined') { } function skewXMatrix(matrix, args) { - matrix[2] = args[0]; + matrix[2] = Math.tan(fabric.util.degreesToRadians(args[0])); } function skewYMatrix(matrix, args) { - matrix[1] = args[0]; + matrix[1] = Math.tan(fabric.util.degreesToRadians(args[0])); } function translateMatrix(matrix, args) { @@ -7233,9 +7233,6 @@ fabric.BaseBrush = fabric.util.createClass(/** @lends fabric.BaseBrush.prototype (function() { - var utilMin = fabric.util.array.min, - utilMax = fabric.util.array.max; - /** * PencilBrush class * @class fabric.PencilBrush @@ -7367,52 +7364,6 @@ fabric.BaseBrush = fabric.util.createClass(/** @lends fabric.BaseBrush.prototype ctx.restore(); }, - /** - * Return an SVG path based on our captured points and their bounding box - * @private - */ - _getSVGPathData: function() { - this.box = this.getPathBoundingBox(this._points); - return this.convertPointsToSVGPath( - this._points, this.box.minX, this.box.minY); - }, - - /** - * Returns bounding box of a path based on given points - * @param {Array} points Array of points - * @return {Object} Object with minX, minY, maxX, maxY - */ - getPathBoundingBox: function(points) { - var xBounds = [], - yBounds = [], - p1 = points[0], - p2 = points[1], - startPoint = p1; - - for (var i = 1, len = points.length; i < len; i++) { - var midPoint = p1.midPointFrom(p2); - // with startPoint, p1 as control point, midpoint as end point - xBounds.push(startPoint.x); - xBounds.push(midPoint.x); - yBounds.push(startPoint.y); - yBounds.push(midPoint.y); - - p1 = points[i]; - p2 = points[i + 1]; - startPoint = midPoint; - } - - xBounds.push(p1.x); - yBounds.push(p1.y); - - return { - minX: utilMin(xBounds), - minY: utilMin(yBounds), - maxX: utilMax(xBounds), - maxY: utilMax(yBounds) - }; - }, - /** * Converts points to SVG path * @param {Array} points Array of points @@ -7420,21 +7371,21 @@ fabric.BaseBrush = fabric.util.createClass(/** @lends fabric.BaseBrush.prototype * @param {Number} minY * @return {String} SVG path */ - convertPointsToSVGPath: function(points, minX, minY) { + convertPointsToSVGPath: function(points) { var path = [], - p1 = new fabric.Point(points[0].x - minX, points[0].y - minY), - p2 = new fabric.Point(points[1].x - minX, points[1].y - minY); + p1 = new fabric.Point(points[0].x, points[0].y), + p2 = new fabric.Point(points[1].x, points[1].y); - path.push('M ', points[0].x - minX, ' ', points[0].y - minY, ' '); + path.push('M ', points[0].x, ' ', points[0].y, ' '); for (var i = 1, len = points.length; i < len; i++) { var midPoint = p1.midPointFrom(p2); // p1 is our bezier control point // midpoint is our endpoint // start point is p(i-1) value. path.push('Q ', p1.x, ' ', p1.y, ' ', midPoint.x, ' ', midPoint.y, ' '); - p1 = new fabric.Point(points[i].x - minX, points[i].y - minY); + p1 = new fabric.Point(points[i].x, points[i].y); if ((i + 1) < points.length) { - p2 = new fabric.Point(points[i + 1].x - minX, points[i + 1].y - minY); + p2 = new fabric.Point(points[i + 1].x, points[i + 1].y); } } path.push('L ', p1.x, ' ', p1.y, ' '); @@ -7471,7 +7422,7 @@ fabric.BaseBrush = fabric.util.createClass(/** @lends fabric.BaseBrush.prototype var ctx = this.canvas.contextTop; ctx.closePath(); - var pathData = this._getSVGPathData().join(''); + var pathData = this.convertPointsToSVGPath(this._points).join(''); if (pathData === 'M 0 0 Q 0 0 0 0 L 0 0') { // do not create 0 width/height paths, as they are // rendered inconsistently across browsers @@ -7481,19 +7432,7 @@ fabric.BaseBrush = fabric.util.createClass(/** @lends fabric.BaseBrush.prototype return; } - // set path origin coordinates based on our bounding box - var originLeft = this.box.minX + (this.box.maxX - this.box.minX) / 2, - originTop = this.box.minY + (this.box.maxY - this.box.minY) / 2; - - this.canvas.contextTop.arc(originLeft, originTop, 3, 0, Math.PI * 2, false); - var path = this.createPath(pathData); - path.set({ - left: originLeft, - top: originTop, - originX: 'center', - originY: 'center' - }); this.canvas.add(path); path.setCoords(); @@ -8420,7 +8359,7 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab forbidScalingY || lockScalingY || target.set('scaleY', transform.newScaleY); } - forbidScalingX || forbidScalingY || this._flipObject(transform); + forbidScalingX || forbidScalingY || this._flipObject(transform, by); }, @@ -8445,8 +8384,8 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab /** * @private */ - _flipObject: function(transform) { - if (transform.newScaleX < 0) { + _flipObject: function(transform, by) { + if (transform.newScaleX < 0 && by !== 'y') { if (transform.originX === 'left') { transform.originX = 'right'; } @@ -8455,7 +8394,7 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab } } - if (transform.newScaleY < 0) { + if (transform.newScaleY < 0 && by !== 'x') { if (transform.originY === 'top') { transform.originY = 'bottom'; } @@ -13712,7 +13651,7 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot * @param {Any} value */ _set: function(key, value) { - this[key] = value; + this.callSuper('_set', key, value); if (typeof coordProps[key] !== 'undefined') { this._setWidthHeight(); } @@ -13824,12 +13763,27 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot * @return {Object} object representation of an instance */ toObject: function(propertiesToInclude) { - return extend(this.callSuper('toObject', propertiesToInclude), { - x1: this.get('x1'), - y1: this.get('y1'), - x2: this.get('x2'), - y2: this.get('y2') - }); + return extend(this.callSuper('toObject', propertiesToInclude), this.calcLinePoints()); + }, + + /** + * @private + * Recalculate line points from width and height. + */ + calcLinePoints: function() { + var xMult = this.x1 <= this.x2 ? -1 : 1, + yMult = this.y1 <= this.y2 ? -1 : 1, + x1 = (xMult * this.width / 2), + y1 = (yMult * this.height / 2), + x2 = (xMult * -1 * this.width / 2), + y2 = (yMult * -1 * this.height / 2); + + return { + x1: x1, + x2: x2, + y1: y1, + y2: y2 + }; }, /* _TO_SVG_START_ */ @@ -13839,20 +13793,20 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot * @return {String} svg representation of an instance */ toSVG: function(reviver) { - var markup = this._createBaseSVGMarkup(), addTranslate = ''; + var markup = this._createBaseSVGMarkup(), + p = { x1: this.x1, x2: this.x2, y1: this.y1, y2: this.y2 }; + if (!(this.group && this.group.type === 'path-group')) { - var x = - this.width / 2 - (this.x1 > this.x2 ? this.x2 : this.x1), - y = - this.height / 2 - (this.y1 > this.y2 ? this.y2 : this.y1); - addTranslate = 'translate(' + x + ', ' + y + ') '; + p = this.calcLinePoints(); } markup.push( '\n' ); @@ -14406,7 +14360,7 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot * Returns Vertical radius of an object (according to how an object is scaled) * @return {Number} */ - getRY: function() { + getRy: function() { return this.get('ry') * this.get('scaleY'); }, @@ -16464,7 +16418,6 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot if (options) { extend(this, options); } - this._setOpacityIfSame(); this.setCoords(); this.saveCoords(); @@ -16817,21 +16770,6 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot return this; }, - /** - * @private - */ - _setOpacityIfSame: function() { - var objects = this.getObjects(), - firstValue = objects[0] ? objects[0].get('opacity') : 1, - isSameOpacity = objects.every(function(o) { - return o.get('opacity') === firstValue; - }); - - if (isSameOpacity) { - this.opacity = firstValue; - } - }, - /** * @private */ @@ -19476,6 +19414,9 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Imag i ); } + if (this.shadow && !this.shadow.affectStroke) { + this._removeShadow(ctx); + } }, /** diff --git a/dist/fabric.min.js b/dist/fabric.min.js index a7037d5a2eb..1ae4b9cb3fd 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.11"};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?_-=2*h:f===1&&_<0&&(_+=2*h);var D=Math.ceil(Math.abs(_/h*2)),P=[],H=_/D,B=8/3*Math.sin(H/4)*Math.sin(H/4)/Math.sin(H/2),j=M+H;for(var F=0;F=i?s-i:2*Math.PI-(i-s)}function u(e,t,i,s,o,u,a,f){var l=r.call(arguments);if(n[l])return n[l];var c=Math.sqrt,h=Math.min,p=Math.max,d=Math.abs,v=[],m=[[],[]],g,y,b,w,E,S,x,T;y=6*e-12*i+6*o,g=-3*e+9*i-9*o+3*a,b=3*i-3*e;for(var N=0;N<2;++N){N>0&&(y=6*t-12*s+6*u,g=-3*t+9*s-9*u+3*f,b=3*s-3*t);if(d(g)<1e-12){if(d(y)<1e-12)continue;w=-b/y,0=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){var n=fabric.document.defaultView.getComputedStyle(e,null);return n?n[t]:undefined}: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.cssRules={},t.gradientDefs={},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,l=t.Object.__uid++;w(n);var c=n.getAttribute("viewBox"),h=o(n.getAttribute("width")||"100%"),p=o(n.getAttribute("height")||"100%"),d,v;if(c&&(c=c.match(r))){var m=parseFloat(c[1]),g=parseFloat(c[2]),y=1,b=1;d=parseFloat(c[3]),v=parseFloat(c[4]),h&&h!==d&&(y=h/d),p&&p!==v&&(b=p/v),E(n,[y,0,0,b,y*-m,b*-g])}var S=t.util.toArray(n.getElementsByTagName("*"));if(S.length===0&&t.isLikelyNode){S=n.selectNodes('//*[name(.)!="svg"]');var x=[];for(var T=0,N=S.length;T/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,this.svgUid=n&&n.svgUid||0},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+(n1?1:n;if(t){var o=t.split(/\s*;\s*/);o[o.length-1]===""&&o.pop();for(var u=o.length;u--;){var a=o[u].split(/\s*:\s*/),f=a[0].trim(),l=a[1].trim();f==="stop-color"?r=l:f==="stop-opacity"&&(s=l)}}return r||(r=e.getAttribute("stop-color")||"rgb(0,0,0)"),s||(s=e.getAttribute("stop-opacity")),r=new fabric.Color(r),i=r.getAlpha(),s=isNaN(parseFloat(s))?1:parseFloat(s),s*=i,{offset:n,color:r.toRgb(),opacity:s}}function t(e){return{x1:e.getAttribute("x1")||0,y1:e.getAttribute("y1")||0,x2:e.getAttribute("x2")||"100%",y2:e.getAttribute("y2")||0}}function n(e){return{x1:e.getAttribute("fx")||e.getAttribute("cx")||"50%",y1:e.getAttribute("fy")||e.getAttribute("cy")||"50%",r1:0,x2:e.getAttribute("cx")||"50%",y2:e.getAttribute("cy")||"50%",r2:e.getAttribute("r")||"50%"}}function r(e,t,n){var r,i=0,s=1,o="";for(var u in t){r=parseFloat(t[u],10),typeof t[u]=="string"&&/^\d+%$/.test(t[u])?s=.01:s=1;if(u==="x1"||u==="x2"||u==="r2")s*=n==="objectBoundingBox"?e.width:1,i=n==="objectBoundingBox"?e.left||0:0;else if(u==="y1"||u==="y2")s*=n==="objectBoundingBox"?e.height:1,i=n==="objectBoundingBox"?e.top||0:0;t[u]=r*s+i}if(e.type==="ellipse"&&t.r2!==null&&n==="objectBoundingBox"&&e.rx!==e.ry){var a=e.ry/e.rx;o=" scale(1, "+a+")",t.y1&&(t.y1/=a),t.y2&&(t.y2/=a)}return o}fabric.Gradient=fabric.util.createClass({offsetX:0,offsetY:0,initialize:function(e){e||(e={});var t={};this.id=fabric.Object.__uid++,this.type=e.type||"linear",t={x1:e.coords.x1||0,y1:e.coords.y1||0,x2:e.coords.x2||0,y2:e.coords.y2||0},this.type==="radial"&&(t.r1=e.coords.r1||0,t.r2=e.coords.r2||0),this.coords=t,this.colorStops=e.colorStops.slice(),e.gradientTransform&&(this.gradientTransform=e.gradientTransform),this.offsetX=e.offsetX||this.offsetX,this.offsetY=e.offsetY||this.offsetY},addColorStop:function(e){for(var t in e){var n=new fabric.Color(e[t]);this.colorStops.push({offset:t,color:n.toRgb(),opacity:n.getAlpha()})}return this},toObject:function(){return{type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY}},toSVG:function(e){var t=fabric.util.object.clone(this.coords),n,r;this.colorStops.sort(function(e,t){return e.offset-t.offset});if(!e.group||e.group.type!=="path-group")for(var i in t)if(i==="x1"||i==="x2"||i==="r2")t[i]+=this.offsetX-e.width/2;else if(i==="y1"||i==="y2")t[i]+=this.offsetY-e.height/2;r='id="SVGID_'+this.id+'" gradientUnits="userSpaceOnUse"',this.gradientTransform&&(r+=' gradientTransform="matrix('+this.gradientTransform.join(" ")+')" '),this.type==="linear"?n=["\n']:this.type==="radial"&&(n=["\n']);for(var s=0;s\n');return n.push(this.type==="linear"?"\n":"\n"),n.join("")},toLive:function(e,t){var n,r=fabric.util.object.clone(this.coords);if(!this.type)return;if(t.group&&t.group.type==="path-group")for(var i in r)if(i==="x1"||i==="x2")r[i]+=-this.offsetX+t.width/2;else if(i==="y1"||i==="y2")r[i]+=-this.offsetY+t.height/2;this.type==="linear"?n=e.createLinearGradient(r.x1,r.y1,r.x2,r.y2):this.type==="radial"&&(n=e.createRadialGradient(r.x1,r.y1,r.r1,r.x2,r.y2,r.r2));for(var s=0,o=this.colorStops.length;s'+''+""},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,preserveObjectStacking:!1,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){var n,r,i;t.viewBox?(n=t.viewBox.width,r=t.viewBox.height):(n=this.width,r=this.height,this.svgViewportTransformation||(i=this.viewportTransform,n/=i[0],r/=i[3])),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=s.width||0,u=s.height||0,a;if(!o||!u)"top"in s&&"bottom"in s&&(u=Math.abs(s.top-s.bottom)),"right"in s&&"left"in s&&(o=Math.abs(s.right-s.left));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))),o===0||u===0?a={width:1,height:1}:a={width:r.width/o,height:r.height/u},{x:i.x*a.width,y:i.y*a.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:"nonzero",globalCompositeOperation:"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 globalCompositeOperation 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);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,fillRule:this.fillRule,globalCompositeOperation:this.globalCompositeOperation};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._setupCompositeOperation(e),n||this.transform(e),this._setStrokeStyles(e),this._setFillStyles(e),this.group&&this.group.type==="path-group"&&e.translate(-this.group.width/2,-this.group.height/2),this.transformMatrix&&e.transform.apply(e,this.transformMatrix),this._setOpacity(e),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this._restoreCompositeOperation(e),e.restore()},_setOpacity:function(e){this.group&&this.group._setOpacity(e),e.globalAlpha*=this.opacity},_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):this.stroke)},_setFillStyles:function(e){this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e,this):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;e.save();if(this.fill.gradientTransform){var t=this.fill.gradientTransform;e.transform.apply(e,t)}this.fill.toLive&&e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0),this.fillRule==="evenodd"?e.fill("evenodd"):e.fill(),e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke||this.strokeWidth===0)return;e.save();if(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();else{if(this.stroke.gradientTransform){var t=this.stroke.gradientTransform;e.transform.apply(e,t)}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}},_setupCompositeOperation:function(e){this.globalCompositeOperation&&(this._prevGlobalCompositeOperation=e.globalCompositeOperation,e.globalCompositeOperation=this.globalCompositeOperation)},_restoreCompositeOperation:function(e){this.globalCompositeOperation&&this._prevGlobalCompositeOperation&&(e.globalCompositeOperation=this._prevGlobalCompositeOperation)}}),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,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&&this.group.type==="path-group")return"";var e=fabric.util.toFixed,t=this.getAngle(),n=!this.canvas||this.canvas.svgViewportTransformation?this.getViewportTransform():[1,0,0,1,0,0],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,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,startAngle:0,endAngle:n*2,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("radius",e.radius||0),this.startAngle=e.startAngle||this.startAngle,this.endAngle=e.endAngle||this.endAngle},_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"),startAngle:this.startAngle,endAngle:this.endAngle})},toSVG:function(e){var t=this._createBaseSVGMarkup(),r=0,i=0,s=(this.endAngle-this.startAngle)%(2*n);if(s===0)this.group&&this.group.type==="path-group"&&(r=this.left+this.radius,i=this.top+this.radius),t.push("\n');else{var o=Math.cos(this.startAngle)*this.radius,u=Math.sin(this.startAngle)*this.radius,a=Math.cos(this.endAngle)*this.radius,f=Math.sin(this.endAngle)*this.radius,l=s>n?"1":"0";t.push('\n')}return 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,this.startAngle,this.endAngle,!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)},_set:function(e,t){this.callSuper("_set",e,t);switch(e){case"rx":this.rx=t,this.set("width",t*2);break;case"ry":this.ry=t,this.set("height",t*2)}return this},getRx:function(){return this.get("rx")*this.get("scaleX")},getRY:function(){return this.get("ry")*this.get("scaleY")},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&&this.group.type==="path-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:-this.width/2,u=t?this.top:-this.height/2,a=n!==0||r!==0,f=.4477152502;e.beginPath(),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;if(!this.group||this.group.type!=="path-group")n=-this.width/2,r=-this.height/2;return 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={});if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",points:null,minX:0,minY:0,initialize:function(e,n){return t.Polygon.prototype.initialize.call(this,e,n)},_calcDimensions:function(){return t.Polygon.prototype._calcDimensions.call(this)},_applyPointOffset:function(){return t.Polygon.prototype._applyPointOffset.call(this)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(e){return t.Polygon.prototype.toSVG.call(this,e)},_render:function(e){t.Polygon.prototype.commonRender.call(this,e),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n,r;e.beginPath();for(var i=0,s=this.points.length;i\n'),e?e(n.join("")):n.join("")},_render:function(e){this.commonRender(e),this._renderFill(e);if(this.stroke||this.strokeDashArray)e.closePath(),this._renderStroke(e)},commonRender:function(e){var t;e.beginPath(),this._applyPointOffset&&((!this.group||this.group.type!=="path-group")&&this._applyPointOffset(),this._applyPointOffset=null),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(),r="";for(var i=0,s=this.path.length;i\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._setupCompositeOperation(e),this._renderTextFill(e,t),this._renderTextStroke(e,t),this._restoreCompositeOperation(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(),t||this.transform(e);var n=this.group&&this.group.type==="path-group";n&&e.translate(-this.group.width/2,-this.group.height/2),this.transformMatrix&&e.transform.apply(e,this.transformMatrix),n&&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.group.type==="path-group"?this.left:0),textTop:r+(this.group&&this.group.type==="path-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",9:"exitEditing",27:"exitEditing",13:"insertNewline",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorRight",36:"moveCursorLeft",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.stopImmediatePropagation(),e.preventDefault(),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)return;e.which!==0&&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||e.keyCode===34)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},swapSelectionPoints:function(){var e=this.selectionEnd;this.selectionEnd=this.selectionStart,this.selectionStart=e},moveCursorDownWithShift:function(e){this.selectionEnd===this.selectionStart&&(this._selectionDirection="right");var t=this._selectionDirection==="right"?"selectionEnd":"selectionStart";this[t]+=e,this.selectionEndthis.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||e.keyCode===33)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.12"};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?_-=2*h:f===1&&_<0&&(_+=2*h);var D=Math.ceil(Math.abs(_/h*2)),P=[],H=_/D,B=8/3*Math.sin(H/4)*Math.sin(H/4)/Math.sin(H/2),j=M+H;for(var F=0;F=i?s-i:2*Math.PI-(i-s)}function u(e,t,i,s,o,u,a,f){var l=r.call(arguments);if(n[l])return n[l];var c=Math.sqrt,h=Math.min,p=Math.max,d=Math.abs,v=[],m=[[],[]],g,y,b,w,E,S,x,T;y=6*e-12*i+6*o,g=-3*e+9*i-9*o+3*a,b=3*i-3*e;for(var N=0;N<2;++N){N>0&&(y=6*t-12*s+6*u,g=-3*t+9*s-9*u+3*f,b=3*s-3*t);if(d(g)<1e-12){if(d(y)<1e-12)continue;w=-b/y,0=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.nodeType===1&&fabric.util.getElementStyle(e,"position")==="fixed"&&(n=e),e.nodeType===1&&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){var n=fabric.document.defaultView.getComputedStyle(e,null);return n?n[t]:undefined}: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.cssRules={},t.gradientDefs={},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,n){e[2]=Math.tan(t.util.degreesToRadians(n[0]))}function i(e,n){e[1]=Math.tan(t.util.degreesToRadians(n[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,l=t.Object.__uid++;w(n);var c=n.getAttribute("viewBox"),h=o(n.getAttribute("width")||"100%"),p=o(n.getAttribute("height")||"100%"),d,v;if(c&&(c=c.match(r))){var m=parseFloat(c[1]),g=parseFloat(c[2]),y=1,b=1;d=parseFloat(c[3]),v=parseFloat(c[4]),h&&h!==d&&(y=h/d),p&&p!==v&&(b=p/v),E(n,[y,0,0,b,y*-m,b*-g])}var S=t.util.toArray(n.getElementsByTagName("*"));if(S.length===0&&t.isLikelyNode){S=n.selectNodes('//*[name(.)!="svg"]');var x=[];for(var T=0,N=S.length;T/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,this.svgUid=n&&n.svgUid||0},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+(n1?1:n;if(t){var o=t.split(/\s*;\s*/);o[o.length-1]===""&&o.pop();for(var u=o.length;u--;){var a=o[u].split(/\s*:\s*/),f=a[0].trim(),l=a[1].trim();f==="stop-color"?r=l:f==="stop-opacity"&&(s=l)}}return r||(r=e.getAttribute("stop-color")||"rgb(0,0,0)"),s||(s=e.getAttribute("stop-opacity")),r=new fabric.Color(r),i=r.getAlpha(),s=isNaN(parseFloat(s))?1:parseFloat(s),s*=i,{offset:n,color:r.toRgb(),opacity:s}}function t(e){return{x1:e.getAttribute("x1")||0,y1:e.getAttribute("y1")||0,x2:e.getAttribute("x2")||"100%",y2:e.getAttribute("y2")||0}}function n(e){return{x1:e.getAttribute("fx")||e.getAttribute("cx")||"50%",y1:e.getAttribute("fy")||e.getAttribute("cy")||"50%",r1:0,x2:e.getAttribute("cx")||"50%",y2:e.getAttribute("cy")||"50%",r2:e.getAttribute("r")||"50%"}}function r(e,t,n){var r,i=0,s=1,o="";for(var u in t){r=parseFloat(t[u],10),typeof t[u]=="string"&&/^\d+%$/.test(t[u])?s=.01:s=1;if(u==="x1"||u==="x2"||u==="r2")s*=n==="objectBoundingBox"?e.width:1,i=n==="objectBoundingBox"?e.left||0:0;else if(u==="y1"||u==="y2")s*=n==="objectBoundingBox"?e.height:1,i=n==="objectBoundingBox"?e.top||0:0;t[u]=r*s+i}if(e.type==="ellipse"&&t.r2!==null&&n==="objectBoundingBox"&&e.rx!==e.ry){var a=e.ry/e.rx;o=" scale(1, "+a+")",t.y1&&(t.y1/=a),t.y2&&(t.y2/=a)}return o}fabric.Gradient=fabric.util.createClass({offsetX:0,offsetY:0,initialize:function(e){e||(e={});var t={};this.id=fabric.Object.__uid++,this.type=e.type||"linear",t={x1:e.coords.x1||0,y1:e.coords.y1||0,x2:e.coords.x2||0,y2:e.coords.y2||0},this.type==="radial"&&(t.r1=e.coords.r1||0,t.r2=e.coords.r2||0),this.coords=t,this.colorStops=e.colorStops.slice(),e.gradientTransform&&(this.gradientTransform=e.gradientTransform),this.offsetX=e.offsetX||this.offsetX,this.offsetY=e.offsetY||this.offsetY},addColorStop:function(e){for(var t in e){var n=new fabric.Color(e[t]);this.colorStops.push({offset:t,color:n.toRgb(),opacity:n.getAlpha()})}return this},toObject:function(){return{type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY}},toSVG:function(e){var t=fabric.util.object.clone(this.coords),n,r;this.colorStops.sort(function(e,t){return e.offset-t.offset});if(!e.group||e.group.type!=="path-group")for(var i in t)if(i==="x1"||i==="x2"||i==="r2")t[i]+=this.offsetX-e.width/2;else if(i==="y1"||i==="y2")t[i]+=this.offsetY-e.height/2;r='id="SVGID_'+this.id+'" gradientUnits="userSpaceOnUse"',this.gradientTransform&&(r+=' gradientTransform="matrix('+this.gradientTransform.join(" ")+')" '),this.type==="linear"?n=["\n']:this.type==="radial"&&(n=["\n']);for(var s=0;s\n');return n.push(this.type==="linear"?"\n":"\n"),n.join("")},toLive:function(e,t){var n,r=fabric.util.object.clone(this.coords);if(!this.type)return;if(t.group&&t.group.type==="path-group")for(var i in r)if(i==="x1"||i==="x2")r[i]+=-this.offsetX+t.width/2;else if(i==="y1"||i==="y2")r[i]+=-this.offsetY+t.height/2;this.type==="linear"?n=e.createLinearGradient(r.x1,r.y1,r.x2,r.y2):this.type==="radial"&&(n=e.createRadialGradient(r.x1,r.y1,r.r1,r.x2,r.y2,r.r2));for(var s=0,o=this.colorStops.length;s'+''+""},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,preserveObjectStacking:!1,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){var n,r,i;t.viewBox?(n=t.viewBox.width,r=t.viewBox.height):(n=this.width,r=this.height,this.svgViewportTransformation||(i=this.viewportTransform,n/=i[0],r/=i[3])),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(){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=s.width||0,u=s.height||0,a;if(!o||!u)"top"in s&&"bottom"in s&&(u=Math.abs(s.top-s.bottom)),"right"in s&&"left"in s&&(o=Math.abs(s.right-s.left));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))),o===0||u===0?a={width:1,height:1}:a={width:r.width/o,height:r.height/u},{x:i.x*a.width,y:i.y*a.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:"nonzero",globalCompositeOperation:"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 globalCompositeOperation 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);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,fillRule:this.fillRule,globalCompositeOperation:this.globalCompositeOperation};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._setupCompositeOperation(e),n||this.transform(e),this._setStrokeStyles(e),this._setFillStyles(e),this.group&&this.group.type==="path-group"&&e.translate(-this.group.width/2,-this.group.height/2),this.transformMatrix&&e.transform.apply(e,this.transformMatrix),this._setOpacity(e),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this._restoreCompositeOperation(e),e.restore()},_setOpacity:function(e){this.group&&this.group._setOpacity(e),e.globalAlpha*=this.opacity},_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):this.stroke)},_setFillStyles:function(e){this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e,this):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;e.save();if(this.fill.gradientTransform){var t=this.fill.gradientTransform;e.transform.apply(e,t)}this.fill.toLive&&e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0),this.fillRule==="evenodd"?e.fill("evenodd"):e.fill(),e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke||this.strokeWidth===0)return;e.save();if(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();else{if(this.stroke.gradientTransform){var t=this.stroke.gradientTransform;e.transform.apply(e,t)}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}},_setupCompositeOperation:function(e){this.globalCompositeOperation&&(this._prevGlobalCompositeOperation=e.globalCompositeOperation,e.globalCompositeOperation=this.globalCompositeOperation)},_restoreCompositeOperation:function(e){this.globalCompositeOperation&&this._prevGlobalCompositeOperation&&(e.globalCompositeOperation=this._prevGlobalCompositeOperation)}}),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,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&&this.group.type==="path-group")return"";var e=fabric.util.toFixed,t=this.getAngle(),n=!this.canvas||this.canvas.svgViewportTransformation?this.getViewportTransform():[1,0,0,1,0,0],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;r\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,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,startAngle:0,endAngle:n*2,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("radius",e.radius||0),this.startAngle=e.startAngle||this.startAngle,this.endAngle=e.endAngle||this.endAngle},_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"),startAngle:this.startAngle,endAngle:this.endAngle})},toSVG:function(e){var t=this._createBaseSVGMarkup(),r=0,i=0,s=(this.endAngle-this.startAngle)%(2*n);if(s===0)this.group&&this.group.type==="path-group"&&(r=this.left+this.radius,i=this.top+this.radius),t.push("\n');else{var o=Math.cos(this.startAngle)*this.radius,u=Math.sin(this.startAngle)*this.radius,a=Math.cos(this.endAngle)*this.radius,f=Math.sin(this.endAngle)*this.radius,l=s>n?"1":"0";t.push('\n')}return 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,this.startAngle,this.endAngle,!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)},_set:function(e,t){this.callSuper("_set",e,t);switch(e){case"rx":this.rx=t,this.set("width",t*2);break;case"ry":this.ry=t,this.set("height",t*2)}return this},getRx:function(){return this.get("rx")*this.get("scaleX")},getRy:function(){return this.get("ry")*this.get("scaleY")},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&&this.group.type==="path-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:-this.width/2,u=t?this.top:-this.height/2,a=n!==0||r!==0,f=.4477152502;e.beginPath(),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;if(!this.group||this.group.type!=="path-group")n=-this.width/2,r=-this.height/2;return 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={});if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",points:null,minX:0,minY:0,initialize:function(e,n){return t.Polygon.prototype.initialize.call(this,e,n)},_calcDimensions:function(){return t.Polygon.prototype._calcDimensions.call(this)},_applyPointOffset:function(){return t.Polygon.prototype._applyPointOffset.call(this)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(e){return t.Polygon.prototype.toSVG.call(this,e)},_render:function(e){t.Polygon.prototype.commonRender.call(this,e),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n,r;e.beginPath();for(var i=0,s=this.points.length;i\n'),e?e(n.join("")):n.join("")},_render:function(e){this.commonRender(e),this._renderFill(e);if(this.stroke||this.strokeDashArray)e.closePath(),this._renderStroke(e)},commonRender:function(e){var t;e.beginPath(),this._applyPointOffset&&((!this.group||this.group.type!=="path-group")&&this._applyPointOffset(),this._applyPointOffset=null),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(),r="";for(var i=0,s=this.path.length;i\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.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._setupCompositeOperation(e),this._renderTextFill(e,t),this._renderTextStroke(e,t),this._restoreCompositeOperation(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(),t||this.transform(e);var n=this.group&&this.group.type==="path-group";n&&e.translate(-this.group.width/2,-this.group.height/2),this.transformMatrix&&e.transform.apply(e,this.transformMatrix),n&&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.group.type==="path-group"?this.left:0),textTop:r+(this.group&&this.group.type==="path-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",9:"exitEditing",27:"exitEditing",13:"insertNewline",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorRight",36:"moveCursorLeft",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.stopImmediatePropagation(),e.preventDefault(),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)return;e.which!==0&&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||e.keyCode===34)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},swapSelectionPoints:function(){var e=this.selectionEnd;this.selectionEnd=this.selectionStart,this.selectionStart=e},moveCursorDownWithShift:function(e){this.selectionEnd===this.selectionStart&&(this._selectionDirection="right");var t=this._selectionDirection==="right"?"selectionEnd":"selectionStart";this[t]+=e,this.selectionEndthis.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||e.keyCode===33)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 b2ab008c882386b87971463778c42afde913dc4b..1638e6141d3425e9ed686cbcd9d93acf6722fd8a 100644 GIT binary patch literal 58340 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 V(BgJoLePxKe*vaHY>1s`0|4FYpB?}J literal 58618 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 this.x2 ? this.x2 : this.x1), - y = - this.height / 2 - (this.y1 > this.y2 ? this.y2 : this.y1); - addTranslate = 'translate(' + x + ', ' + y + ') '; + p = this.calcLinePoints(); } markup.push( '\n' ); @@ -14406,7 +14360,7 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot * Returns Vertical radius of an object (according to how an object is scaled) * @return {Number} */ - getRY: function() { + getRy: function() { return this.get('ry') * this.get('scaleY'); }, @@ -16464,7 +16418,6 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot if (options) { extend(this, options); } - this._setOpacityIfSame(); this.setCoords(); this.saveCoords(); @@ -16817,21 +16770,6 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot return this; }, - /** - * @private - */ - _setOpacityIfSame: function() { - var objects = this.getObjects(), - firstValue = objects[0] ? objects[0].get('opacity') : 1, - isSameOpacity = objects.every(function(o) { - return o.get('opacity') === firstValue; - }); - - if (isSameOpacity) { - this.opacity = firstValue; - } - }, - /** * @private */ @@ -19476,6 +19414,9 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Imag i ); } + if (this.shadow && !this.shadow.affectStroke) { + this._removeShadow(ctx); + } }, /** diff --git a/package.json b/package.json index 261b8d91257..b525748e535 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "fabric", "description": "Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.", "homepage": "http://fabricjs.com/", - "version": "1.4.11", + "version": "1.4.12", "author": "Juriy Zaytsev ", "keywords": [ "canvas",