From 79b46849474d93c4f6c8a1dad0d7f4e4be31ceff Mon Sep 17 00:00:00 2001 From: Asturur Date: Mon, 5 Sep 2016 20:20:15 +0200 Subject: [PATCH] rebuilt dist --- dist/fabric.js | 35 +++++++++++++++++++++-------------- dist/fabric.min.js | 14 +++++++------- dist/fabric.min.js.gz | Bin 67318 -> 67345 bytes dist/fabric.require.js | 35 +++++++++++++++++++++-------------- 4 files changed, 49 insertions(+), 35 deletions(-) diff --git a/dist/fabric.js b/dist/fabric.js index 21a3643d..0efd6404 100644 --- a/dist/fabric.js +++ b/dist/fabric.js @@ -18389,6 +18389,9 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot canvasEl.getContext('2d').drawImage(imgElement, 0, 0, imgElement.width, imgElement.height); filters.forEach(function(filter) { + if (!filter) { + return; + } if (forResizing) { scaleX = _this.scaleX < minimumScale ? _this.scaleX : 1; scaleY = _this.scaleY < minimumScale ? _this.scaleY : 1; @@ -18403,8 +18406,8 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot scaleX = filter.scaleX; scaleY = filter.scaleY; } - filter && filter.applyTo(canvasEl, scaleX, scaleY); - if (!forResizing && filter && filter.type === 'Resize') { + filter.applyTo(canvasEl, scaleX, scaleY); + if (!forResizing && filter.type === 'Resize') { _this.width *= filter.scaleX; _this.height *= filter.scaleY; } @@ -18416,7 +18419,8 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot if (fabric.isLikelyNode) { replacement.src = canvasEl.toBuffer(undefined, fabric.Image.pngCompression); // onload doesn't fire in some node versions, so we invoke callback manually - _this._element = replacement; // !forResizing && (_this._filteredEl = replacement); + _this._element = replacement; + !forResizing && (_this._filteredEl = replacement); callback && callback(_this); } else { @@ -21108,7 +21112,7 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Imag char = chars[i]; width = ctx.measureText(char).width + additionalSpace; ctx[method](char, left, top); - left += width; + left += width > 0 ? width : 0; } } else { @@ -21169,7 +21173,7 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Imag additionalSpace = charCount * this._getWidthOfCharSpacing(); width += additionalSpace; } - return width; + return width > 0 ? width : 0; }, /** @@ -21419,12 +21423,13 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Imag _measureLine: function(ctx, lineIndex) { var line = this._textLines[lineIndex], width = ctx.measureText(line).width, - additionalSpace = 0, charCount; + additionalSpace = 0, charCount, finalWidth; if (this.charSpacing !== 0) { charCount = line.split('').length; additionalSpace = (charCount - 1) * this._getWidthOfCharSpacing(); } - return width + additionalSpace; + finalWidth = width + additionalSpace; + return finalWidth > 0 ? finalWidth : 0; }, /** @@ -22367,7 +22372,7 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Imag } boundaries = { top: topOffset, - left: leftOffset, + left: leftOffset > 0 ? leftOffset : 0, lineLeft: lineLeftOffset }; this.cursorOffsetCache = boundaries; @@ -22451,7 +22456,7 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Imag ctx.fillRect( boundaries.left + lineOffset, boundaries.top + boundaries.topOffset, - boxWidth, + boxWidth > 0 ? boxWidth : 0, lineHeight); boundaries.topOffset += realLineHeight; @@ -22530,7 +22535,7 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Imag _renderChar: function(method, ctx, lineIndex, i, _char, left, top, lineHeight) { var charWidth, charHeight, shouldFill, shouldStroke, decl = this._getStyleDeclaration(lineIndex, i), - offset, textDecoration, chars; + offset, textDecoration, chars, additionalSpace, _charWidth; if (decl) { charHeight = this._getHeightOfChar(ctx, _char, lineIndex, i); @@ -22554,13 +22559,15 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Imag this._removeShadow(ctx); } if (this.charSpacing !== 0) { + additionalSpace = this._getWidthOfCharSpacing(); chars = _char.split(''); charWidth = 0; for (var j = 0, len = chars.length, char; j < len; j++) { char = chars[j]; shouldFill && ctx.fillText(char, left + charWidth, top); shouldStroke && ctx.strokeText(char, left + charWidth, top); - charWidth += ctx.measureText(char).width + this._getWidthOfCharSpacing(); + _charWidth = ctx.measureText(char).width + additionalSpace; + charWidth += _charWidth > 0 ? _charWidth : 0; } } else { @@ -22869,7 +22876,7 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Imag width += this._getWidthOfCharSpacing(); } ctx.restore(); - return width; + return width > 0 ? width : 0 }, /** @@ -22911,7 +22918,7 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Imag width -= this._getWidthOfCharSpacing(); } this._isMeasuring = false; - return width; + return width > 0 ? width : 0; }, /** @@ -25235,7 +25242,7 @@ fabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.protot } line += word; - infixWidth = this._measureText(ctx, infix, lineIndex, offset) + additionalSpace; + infixWidth = this._measureText(ctx, infix, lineIndex, offset); offset++; lineJustStarted = false; // keep track of largest word diff --git a/dist/fabric.min.js b/dist/fabric.min.js index f3be3830..36f62d22 100644 --- a/dist/fabric.min.js +++ b/dist/fabric.min.js @@ -1,8 +1,8 @@ -var fabric=fabric||{version:"1.6.4"};"undefined"!=typeof exports&&(exports.fabric=fabric),"undefined"!=typeof document&&"undefined"!=typeof window?(fabric.document=document,fabric.window=window,window.fabric=fabric):(fabric.document=require("jsdom").jsdom(""),fabric.document.createWindow?fabric.window=fabric.document.createWindow():fabric.window=fabric.document.parentWindow),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode="undefined"!=typeof Buffer&&"undefined"==typeof window,fabric.SHARED_ATTRIBUTES=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","id"],fabric.DPI=96,fabric.reNum="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:e[-+]?\\d+)?)",fabric.fontPaths={},fabric.charWidthsCache={},fabric.devicePixelRatio=fabric.window.devicePixelRatio||fabric.window.webkitDevicePixelRatio||fabric.window.mozDevicePixelRatio||1,function(){function t(t,e){if(this.__eventListeners[t]){var i=this.__eventListeners[t];e?i[i.indexOf(e)]=!1:fabric.util.array.fill(i,!1)}}function e(t,e){if(this.__eventListeners||(this.__eventListeners={}),1===arguments.length)for(var i in t)this.on(i,t[i]);else this.__eventListeners[t]||(this.__eventListeners[t]=[]),this.__eventListeners[t].push(e);return this}function i(e,i){if(this.__eventListeners){if(0===arguments.length)for(e in this.__eventListeners)t.call(this,e);else if(1===arguments.length&&"object"==typeof arguments[0])for(var r in e)t.call(this,r,e[r]);else t.call(this,e,i);return this}}function r(t,e){if(this.__eventListeners){var i=this.__eventListeners[t];if(i){for(var r=0,n=i.length;r-1},complexity:function(){return this.getObjects().reduce(function(t,e){return t+=e.complexity?e.complexity():0},0)}},function(t){var e=Math.sqrt,i=Math.atan2,r=Math.pow,n=Math.abs,s=Math.PI/180;fabric.util={removeFromArray:function(t,e){var i=t.indexOf(e);return i!==-1&&t.splice(i,1),t},getRandomInt:function(t,e){return Math.floor(Math.random()*(e-t+1))+t},degreesToRadians:function(t){return t*s},radiansToDegrees:function(t){return t/s},rotatePoint:function(t,e,i){t.subtractEquals(e);var r=fabric.util.rotateVector(t,i);return new fabric.Point(r.x,r.y).addEquals(e)},rotateVector:function(t,e){var i=Math.sin(e),r=Math.cos(e),n=t.x*r-t.y*i,s=t.x*i+t.y*r;return{x:n,y:s}},transformPoint:function(t,e,i){return i?new fabric.Point(e[0]*t.x+e[2]*t.y,e[1]*t.x+e[3]*t.y):new fabric.Point(e[0]*t.x+e[2]*t.y+e[4],e[1]*t.x+e[3]*t.y+e[5])},makeBoundingBoxFromPoints:function(t){var e=[t[0].x,t[1].x,t[2].x,t[3].x],i=fabric.util.array.min(e),r=fabric.util.array.max(e),n=Math.abs(i-r),s=[t[0].y,t[1].y,t[2].y,t[3].y],o=fabric.util.array.min(s),a=fabric.util.array.max(s),h=Math.abs(o-a);return{left:i,top:o,width:n,height:h}},invertTransform:function(t){var e=1/(t[0]*t[3]-t[1]*t[2]),i=[e*t[3],-e*t[1],-e*t[2],e*t[0]],r=fabric.util.transformPoint({x:t[4],y:t[5]},i,!0);return i[4]=-r.x,i[5]=-r.y,i},toFixed:function(t,e){return parseFloat(Number(t).toFixed(e))},parseUnit:function(t,e){var i=/\D{0,2}$/.exec(t),r=parseFloat(t);switch(e||(e=fabric.Text.DEFAULT_SVG_FONT_SIZE),i[0]){case"mm":return r*fabric.DPI/25.4;case"cm":return r*fabric.DPI/2.54;case"in":return r*fabric.DPI;case"pt":return r*fabric.DPI/72;case"pc":return r*fabric.DPI/72*12;case"em":return r*e;default:return r}},falseFunction:function(){return!1},getKlass:function(t,e){return t=fabric.util.string.camelize(t.charAt(0).toUpperCase()+t.slice(1)),fabric.util.resolveNamespace(e)[t]},resolveNamespace:function(e){if(!e)return fabric;for(var i=e.split("."),r=i.length,n=t||fabric.window,s=0;sr;)r+=a[d++%f],r>l&&(r=l),t[g?"lineTo":"moveTo"](r,0),g=!g;t.restore()},createCanvasElement:function(t){return t||(t=fabric.document.createElement("canvas")),t.getContext||"undefined"==typeof G_vmlCanvasManager||G_vmlCanvasManager.initElement(t),t},createImage:function(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")},createAccessors:function(t){for(var e=t.prototype,i=e.stateProperties.length;i--;){var r=e.stateProperties[i],n=r.charAt(0).toUpperCase()+r.slice(1),s="set"+n,o="get"+n;e[o]||(e[o]=function(t){return new Function('return this.get("'+t+'")')}(r)),e[s]||(e[s]=function(t){return new Function("value",'return this.set("'+t+'", value)')}(r))}},clipContext:function(t,e){e.save(),e.beginPath(),t.clipTo(e),e.clip()},multiplyTransformMatrices:function(t,e,i){return[t[0]*e[0]+t[2]*e[1],t[1]*e[0]+t[3]*e[1],t[0]*e[2]+t[2]*e[3],t[1]*e[2]+t[3]*e[3],i?0:t[0]*e[4]+t[2]*e[5]+t[4],i?0:t[1]*e[4]+t[3]*e[5]+t[5]]},qrDecompose:function(t){var n=i(t[1],t[0]),o=r(t[0],2)+r(t[1],2),a=e(o),h=(t[0]*t[3]-t[2]*t[1])/a,c=i(t[0]*t[2]+t[1]*t[3],o);return{angle:n/s,scaleX:a,scaleY:h,skewX:c/s,skewY:0,translateX:t[4],translateY:t[5]}},customTransformMatrix:function(t,e,i){var r=[1,0,n(Math.tan(i*s)),1],o=[n(t),0,0,n(e)];return fabric.util.multiplyTransformMatrices(o,r,!0)},resetObjectTransform:function(t){t.scaleX=1,t.scaleY=1,t.skewX=0,t.skewY=0,t.flipX=!1,t.flipY=!1,t.setAngle(0)},getFunctionBody:function(t){return(String(t).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]},isTransparent:function(t,e,i,r){r>0&&(e>r?e-=r:e=0,i>r?i-=r:i=0);for(var n=!0,s=t.getImageData(e,i,2*r||1,2*r||1),o=3,a=s.data.length;o0?I-=2*f:1===c&&I<0&&(I+=2*f);for(var L=Math.ceil(Math.abs(I/f*2)),E=[],D=I/L,R=8/3*Math.sin(D/4)*Math.sin(D/4)/Math.sin(D/2),F=P+D,B=0;B=n?s-n:2*Math.PI-(n-s)}function r(t,e,i,r,n,s,h,c){var l=a.call(arguments);if(o[l])return o[l];var u,f,d,g,p,v,b,m,y=Math.sqrt,_=Math.min,x=Math.max,S=Math.abs,C=[],w=[[],[]];f=6*t-12*i+6*n,u=-3*t+9*i-9*n+3*h,d=3*i-3*t;for(var O=0;O<2;++O)if(O>0&&(f=6*e-12*r+6*s,u=-3*e+9*r-9*s+3*c,d=3*r-3*e),S(u)<1e-12){if(S(f)<1e-12)continue;g=-d/f,0=e})}function i(t,e){return n(t,e,function(t,e){return t>>0;if(0===i)return-1;var r=0;if(arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:0!==r&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r)))),r>=i)return-1;for(var n=r>=0?r:Math.max(i-Math.abs(r),0);n>>0;i>>0;r>>0;i>>0;i>>0;n>>0,r=0;if(arguments.length>1)e=arguments[1];else for(;;){if(r in this){e=this[r++];break}if(++r>=i)throw new TypeError}for(;r/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:t,capitalize:e,escapeXml:i}}(),function(){var t=Array.prototype.slice,e=Function.prototype.apply,i=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var n,s=this,o=t.call(arguments,1);return n=o.length?function(){return e.call(s,this instanceof i?this:r,o.concat(t.call(arguments)))}:function(){return e.call(s,this instanceof i?this:r,arguments)},i.prototype=this.prototype,n.prototype=new i,n})}(),function(){function t(){}function e(t){var e=this.constructor.superclass.prototype[t];return arguments.length>1?e.apply(this,r.call(arguments,1)):e.call(this)}function i(){function i(){this.initialize.apply(this,arguments)}var s=null,a=r.call(arguments,0);"function"==typeof a[0]&&(s=a.shift()),i.superclass=s,i.subclasses=[],s&&(t.prototype=s.prototype,i.prototype=new t,s.subclasses.push(i));for(var h=0,c=a.length;h-1?t.prototype[r]=function(t){return function(){var r=this.constructor.superclass;this.constructor.superclass=i;var n=e[t].apply(this,arguments);if(this.constructor.superclass=r,"initialize"!==t)return n}}(r):t.prototype[r]=e[r],s&&(e.toString!==Object.prototype.toString&&(t.prototype.toString=e.toString),e.valueOf!==Object.prototype.valueOf&&(t.prototype.valueOf=e.valueOf))};fabric.util.createClass=i}(),function(){function t(t){var e,i,r=Array.prototype.slice.call(arguments,1),n=r.length;for(i=0;i-1?s(t,e.match(/opacity:\s*(\d?\.?\d*)/)[1]):t;for(var r in e)if("opacity"===r)s(t,e[r]);else{var n="float"===r||"cssFloat"===r?"undefined"==typeof i.styleFloat?"cssFloat":"styleFloat":r;i[n]=e[r]}return t}var e=fabric.document.createElement("div"),i="string"==typeof e.style.opacity,r="string"==typeof e.style.filter,n=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(t){return t};i?s=function(t,e){return t.style.opacity=e,t}:r&&(s=function(t,e){var i=t.style;return t.currentStyle&&!t.currentStyle.hasLayout&&(i.zoom=1),n.test(i.filter)?(e=e>=.9999?"":"alpha(opacity="+100*e+")",i.filter=i.filter.replace(n,e)):i.filter+=" alpha(opacity="+100*e+")",t}),fabric.util.setStyle=t}(),function(){function t(t){return"string"==typeof t?fabric.document.getElementById(t):t}function e(t,e){var i=fabric.document.createElement(t);for(var r in e)"class"===r?i.className=e[r]:"for"===r?i.htmlFor=e[r]:i.setAttribute(r,e[r]);return i}function i(t,e){t&&(" "+t.className+" ").indexOf(" "+e+" ")===-1&&(t.className+=(t.className?" ":"")+e)}function r(t,i,r){return"string"==typeof i&&(i=e(i,r)),t.parentNode&&t.parentNode.replaceChild(i,t),i.appendChild(t),i}function n(t){for(var e=0,i=0,r=fabric.document.documentElement,n=fabric.document.body||{scrollLeft:0,scrollTop:0};t&&(t.parentNode||t.host)&&(t=t.parentNode||t.host,t===fabric.document?(e=n.scrollLeft||r.scrollLeft||0,i=n.scrollTop||r.scrollTop||0):(e+=t.scrollLeft||0,i+=t.scrollTop||0),1!==t.nodeType||"fixed"!==fabric.util.getElementStyle(t,"position")););return{left:e,top:i}}function s(t){var e,i,r=t&&t.ownerDocument,s={left:0,top:0},o={left:0,top:0},a={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!r)return o;for(var h in a)o[a[h]]+=parseInt(l(t,h),10)||0;return e=r.documentElement,"undefined"!=typeof t.getBoundingClientRect&&(s=t.getBoundingClientRect()),i=n(t),{left:s.left+i.left-(e.clientLeft||0)+o.left,top:s.top+i.top-(e.clientTop||0)+o.top}}var o,a=Array.prototype.slice,h=function(t){return a.call(t,0)};try{o=h(fabric.document.childNodes)instanceof Array}catch(c){}o||(h=function(t){for(var e=new Array(t.length),i=t.length;i--;)e[i]=t[i];return e});var l;l=fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle?function(t,e){var i=fabric.document.defaultView.getComputedStyle(t,null);return i?i[e]:void 0}:function(t,e){var i=t.style[e];return!i&&t.currentStyle&&(i=t.currentStyle[e]),i},function(){function t(t){return"undefined"!=typeof t.onselectstart&&(t.onselectstart=fabric.util.falseFunction),r?t.style[r]="none":"string"==typeof t.unselectable&&(t.unselectable="on"),t}function e(t){return"undefined"!=typeof t.onselectstart&&(t.onselectstart=null),r?t.style[r]="":"string"==typeof t.unselectable&&(t.unselectable=""),t}var i=fabric.document.documentElement.style,r="userSelect"in i?"userSelect":"MozUserSelect"in i?"MozUserSelect":"WebkitUserSelect"in i?"WebkitUserSelect":"KhtmlUserSelect"in i?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=t,fabric.util.makeElementSelectable=e}(),function(){function t(t,e){var i=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),n=!0;r.onload=r.onreadystatechange=function(t){if(n){if("string"==typeof this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState)return;n=!1,e(t||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=t,i.appendChild(r)}fabric.util.getScript=t}(),fabric.util.getById=t,fabric.util.toArray=h,fabric.util.makeElement=e,fabric.util.addClass=i,fabric.util.wrapElement=r,fabric.util.getScrollLeftTop=n,fabric.util.getElementOffset=s,fabric.util.getElementStyle=l}(),function(){function t(t,e){return t+(/\?/.test(t)?"&":"?")+e}function e(){}function i(i,n){n||(n={});var s=n.method?n.method.toUpperCase():"GET",o=n.onComplete||function(){},a=r(),h=n.body||n.parameters;return a.onreadystatechange=function(){4===a.readyState&&(o(a),a.onreadystatechange=e)},"GET"===s&&(h=null,"string"==typeof n.parameters&&(i=t(i,n.parameters))),a.open(s,i,!0),"POST"!==s&&"PUT"!==s||a.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),a.send(h),a}var r=function(){for(var t=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}],e=t.length;e--;)try{var i=t[e]();if(i)return t[e]}catch(r){}}();fabric.util.request=i}(),fabric.log=function(){},fabric.warn=function(){},"undefined"!=typeof console&&["log","warn"].forEach(function(t){"undefined"!=typeof console[t]&&"function"==typeof console[t].apply&&(fabric[t]=function(){return console[t].apply(console,arguments)})}),function(){function t(t){e(function(i){t||(t={});var r,n=i||+new Date,s=t.duration||500,o=n+s,a=t.onChange||function(){},h=t.abort||function(){return!1},c=t.easing||function(t,e,i,r){return-i*Math.cos(t/r*(Math.PI/2))+i+e},l="startValue"in t?t.startValue:0,u="endValue"in t?t.endValue:100,f=t.byValue||u-l;t.onStart&&t.onStart(),function d(i){r=i||+new Date;var u=r>o?s:r-n;return h()?void(t.onComplete&&t.onComplete()):(a(c(u,l,f,s)),r>o?void(t.onComplete&&t.onComplete()):void e(d))}(n)})}function e(){return i.apply(fabric.window,arguments)}var i=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(t){fabric.window.setTimeout(t,1e3/60)};fabric.util.animate=t,fabric.util.requestAnimFrame=e}(),function(){function t(t,e,i,r){return ta?a:o),1===o&&1===a&&0===h&&0===c&&0===f&&0===d)return y;if((f||d)&&(_=" translate("+x(f)+" "+x(d)+") "),r=_+" matrix("+o+" 0 0 "+a+" "+h*o+" "+c*a+") ","svg"===t.nodeName){for(n=t.ownerDocument.createElement("g");null!=t.firstChild;)n.appendChild(t.firstChild);t.appendChild(n)}else n=t,r=n.getAttribute("transform")+r;return n.setAttribute("transform",r),y}function g(t){var e=t.objects,i=t.options;return e=e.map(function(t){return v[m(t.type)].fromObject(t)}),{objects:e,options:i}}function p(t,e,i){e[i]&&e[i].toSVG&&t.push('\t\n','\t\t\n\t\n')}var v=t.fabric||(t.fabric={}),b=v.util.object.extend,m=v.util.string.capitalize,y=v.util.object.clone,_=v.util.toFixed,x=v.util.parseUnit,S=v.util.multiplyTransformMatrices,C=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/i,w=/^(symbol|image|marker|pattern|view|svg)$/i,O=/^(?:pattern|defs|symbol|metadata)$/i,T=/^(symbol|g|a|svg)$/i,k={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"},j={stroke:"strokeOpacity",fill:"fillOpacity"};v.cssRules={},v.gradientDefs={},v.parseTransformAttribute=function(){function t(t,e){var i=e[0],r=3===e.length?e[1]:0,n=3===e.length?e[2]:0;t[0]=Math.cos(i),t[1]=Math.sin(i),t[2]=-Math.sin(i),t[3]=Math.cos(i),t[4]=r-(t[0]*r+t[2]*n),t[5]=n-(t[1]*r+t[3]*n)}function e(t,e){var i=e[0],r=2===e.length?e[1]:e[0];t[0]=i,t[3]=r}function i(t,e){t[2]=Math.tan(v.util.degreesToRadians(e[0]))}function r(t,e){t[1]=Math.tan(v.util.degreesToRadians(e[0]))}function n(t,e){t[4]=e[0],2===e.length&&(t[5]=e[1])}var s=[1,0,0,1,0,0],o=v.reNum,a="(?:\\s+,?\\s*|,\\s*)",h="(?:(skewX)\\s*\\(\\s*("+o+")\\s*\\))",c="(?:(skewY)\\s*\\(\\s*("+o+")\\s*\\))",l="(?:(rotate)\\s*\\(\\s*("+o+")(?:"+a+"("+o+")"+a+"("+o+"))?\\s*\\))",u="(?:(scale)\\s*\\(\\s*("+o+")(?:"+a+"("+o+"))?\\s*\\))",f="(?:(translate)\\s*\\(\\s*("+o+")(?:"+a+"("+o+"))?\\s*\\))",d="(?:(matrix)\\s*\\(\\s*("+o+")"+a+"("+o+")"+a+"("+o+")"+a+"("+o+")"+a+"("+o+")"+a+"("+o+")\\s*\\))",g="(?:"+d+"|"+f+"|"+u+"|"+l+"|"+h+"|"+c+")",p="(?:"+g+"(?:"+a+"*"+g+")*)",b="^\\s*(?:"+p+"?)\\s*$",m=new RegExp(b),y=new RegExp(g,"g"); -return function(o){var a=s.concat(),h=[];if(!o||o&&!m.test(o))return a;o.replace(y,function(o){var c=new RegExp(g).exec(o).filter(function(t){return""!==t&&null!=t}),l=c[1],u=c.slice(2).map(parseFloat);switch(l){case"translate":n(a,u);break;case"rotate":u[0]=v.util.degreesToRadians(u[0]),t(a,u);break;case"scale":e(a,u);break;case"skewX":i(a,u);break;case"skewY":r(a,u);break;case"matrix":a=u}h.push(a.concat()),a=s.concat()});for(var c=h[0];h.length>1;)h.shift(),c=v.util.multiplyTransformMatrices(c,h[0]);return c}}();var A=new RegExp("^\\s*("+v.reNum+"+)\\s*,?\\s*("+v.reNum+"+)\\s*,?\\s*("+v.reNum+"+)\\s*,?\\s*("+v.reNum+"+)\\s*$");v.parseSVGDocument=function(){function t(t,e){for(;t&&(t=t.parentNode);)if(t.nodeName&&e.test(t.nodeName.replace("svg:",""))&&!t.getAttribute("instantiated_by_use"))return!0;return!1}return function(e,i,r){if(e){f(e);var n=new Date,s=v.Object.__uid++,o=d(e),a=v.util.toArray(e.getElementsByTagName("*"));if(o.svgUid=s,0===a.length&&v.isLikelyNode){a=e.selectNodes('//*[name(.)!="svg"]');for(var h=[],c=0,l=a.length;c/i,""))),n&&n.documentElement||e&&e(null),v.parseSVGDocument(n.documentElement,function(i,r){M.set(t,{objects:v.util.array.invoke(i,"toObject"),options:r}),e&&e(i,r)},i)}t=t.replace(/^\n\s*/,"").trim(),M.has(t,function(i){i?M.get(t,function(t){var i=g(t);e(i.objects,i.options)}):new v.util.request(t,{method:"get",onComplete:r})})},loadSVGFromString:function(t,e,i){t=t.trim();var r;if("undefined"!=typeof DOMParser){var n=new DOMParser;n&&n.parseFromString&&(r=n.parseFromString(t,"text/xml"))}else v.window.ActiveXObject&&(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(t.replace(//i,"")));v.parseSVGDocument(r.documentElement,function(t,i){e(t,i)},i)},createSVGFontFacesMarkup:function(t){for(var e,i,r,n,s,o,a,h="",c={},l=v.fontPaths,u=0,f=t.length;u',"","\n"].join("")),h},createSVGRefElementsMarkup:function(t){var e=[];return p(e,t,"backgroundColor"),p(e,t,"overlayColor"),e.join("")}})}("undefined"!=typeof exports?exports:this),fabric.ElementsParser=function(t,e,i,r){this.elements=t,this.callback=e,this.options=i,this.reviver=r,this.svgUid=i&&i.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 t=0,e=this.elements.length;tt.x&&this.y>t.y},gte:function(t){return this.x>=t.x&&this.y>=t.y},lerp:function(t,i){return"undefined"==typeof i&&(i=.5),i=Math.max(Math.min(1,i),0),new e(this.x+(t.x-this.x)*i,this.y+(t.y-this.y)*i)},distanceFrom:function(t){var e=this.x-t.x,i=this.y-t.y;return Math.sqrt(e*e+i*i)},midPointFrom:function(t){return this.lerp(t)},min:function(t){return new e(Math.min(this.x,t.x),Math.min(this.y,t.y))},max:function(t){return new e(Math.max(this.x,t.x),Math.max(this.y,t.y))},toString:function(){return this.x+","+this.y},setXY:function(t,e){return this.x=t,this.y=e,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setFromPoint:function(t){return this.x=t.x,this.y=t.y,this},swap:function(t){var e=this.x,i=this.y;this.x=t.x,this.y=t.y,t.x=e,t.y=i},clone:function(){return new e(this.x,this.y)}}))}("undefined"!=typeof exports?exports:this),function(t){"use strict";function e(t){this.status=t,this.points=[]}var i=t.fabric||(t.fabric={});return i.Intersection?void i.warn("fabric.Intersection is already defined"):(i.Intersection=e,i.Intersection.prototype={constructor:e,appendPoint:function(t){return this.points.push(t),this},appendPoints:function(t){return this.points=this.points.concat(t),this}},i.Intersection.intersectLineLine=function(t,r,n,s){var o,a=(s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x),h=(r.x-t.x)*(t.y-n.y)-(r.y-t.y)*(t.x-n.x),c=(s.y-n.y)*(r.x-t.x)-(s.x-n.x)*(r.y-t.y);if(0!==c){var l=a/c,u=h/c;0<=l&&l<=1&&0<=u&&u<=1?(o=new e("Intersection"),o.appendPoint(new i.Point(t.x+l*(r.x-t.x),t.y+l*(r.y-t.y)))):o=new e}else o=new e(0===a||0===h?"Coincident":"Parallel");return o},i.Intersection.intersectLinePolygon=function(t,i,r){for(var n,s,o,a=new e,h=r.length,c=0;c0&&(a.status="Intersection"),a},i.Intersection.intersectPolygonPolygon=function(t,i){for(var r=new e,n=t.length,s=0;s0&&(r.status="Intersection"),r},void(i.Intersection.intersectPolygonRectangle=function(t,r,n){var s=r.min(n),o=r.max(n),a=new i.Point(o.x,s.y),h=new i.Point(s.x,o.y),c=e.intersectLinePolygon(s,a,t),l=e.intersectLinePolygon(a,o,t),u=e.intersectLinePolygon(o,h,t),f=e.intersectLinePolygon(h,s,t),d=new e;return d.appendPoints(c.points),d.appendPoints(l.points),d.appendPoints(u.points),d.appendPoints(f.points),d.points.length>0&&(d.status="Intersection"),d}))}("undefined"!=typeof exports?exports:this),function(t){"use strict";function e(t){t?this._tryParsingColor(t):this.setSource([0,0,0,1])}function i(t,e,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?t+6*(e-t)*i:i<.5?e:i<2/3?t+(e-t)*(2/3-i)*6:t}var r=t.fabric||(t.fabric={});return r.Color?void r.warn("fabric.Color is already defined."):(r.Color=e,r.Color.prototype={_tryParsingColor:function(t){var i;t in e.colorNameMap&&(t=e.colorNameMap[t]),"transparent"===t&&(i=[255,255,255,0]),i||(i=e.sourceFromHex(t)),i||(i=e.sourceFromRgb(t)),i||(i=e.sourceFromHsl(t)),i||(i=[0,0,0,1]),i&&this.setSource(i)},_rgbToHsl:function(t,e,i){t/=255,e/=255,i/=255;var n,s,o,a=r.util.array.max([t,e,i]),h=r.util.array.min([t,e,i]);if(o=(a+h)/2,a===h)n=s=0;else{var c=a-h;switch(s=o>.5?c/(2-a-h):c/(a+h),a){case t:n=(e-i)/c+(e1?1:s,n){var o=n.split(/\s*;\s*/);""===o[o.length-1]&&o.pop();for(var a=o.length;a--;){var h=o[a].split(/\s*:\s*/),c=h[0].trim(),l=h[1].trim();"stop-color"===c?e=l:"stop-opacity"===c&&(r=l)}}return e||(e=t.getAttribute("stop-color")||"rgb(0,0,0)"),r||(r=t.getAttribute("stop-opacity")),e=new fabric.Color(e),i=e.getAlpha(),r=isNaN(parseFloat(r))?1:parseFloat(r),r*=i,{offset:s,color:e.toRgb(),opacity:r}}function e(t){return{x1:t.getAttribute("x1")||0,y1:t.getAttribute("y1")||0,x2:t.getAttribute("x2")||"100%",y2:t.getAttribute("y2")||0}}function i(t){return{x1:t.getAttribute("fx")||t.getAttribute("cx")||"50%",y1:t.getAttribute("fy")||t.getAttribute("cy")||"50%",r1:0,x2:t.getAttribute("cx")||"50%",y2:t.getAttribute("cy")||"50%",r2:t.getAttribute("r")||"50%"}}function r(t,e,i){var r,n=0,s=1,o="";for(var a in e)"Infinity"===e[a]?e[a]=1:"-Infinity"===e[a]&&(e[a]=0),r=parseFloat(e[a],10),s="string"==typeof e[a]&&/^\d+%$/.test(e[a])?.01:1,"x1"===a||"x2"===a||"r2"===a?(s*="objectBoundingBox"===i?t.width:1,n="objectBoundingBox"===i?t.left||0:0):"y1"!==a&&"y2"!==a||(s*="objectBoundingBox"===i?t.height:1,n="objectBoundingBox"===i?t.top||0:0),e[a]=r*s+n;if("ellipse"===t.type&&null!==e.r2&&"objectBoundingBox"===i&&t.rx!==t.ry){var h=t.ry/t.rx;o=" scale(1, "+h+")",e.y1&&(e.y1/=h),e.y2&&(e.y2/=h)}return o}fabric.Gradient=fabric.util.createClass({offsetX:0,offsetY:0,initialize:function(t){t||(t={});var e={};this.id=fabric.Object.__uid++,this.type=t.type||"linear",e={x1:t.coords.x1||0,y1:t.coords.y1||0,x2:t.coords.x2||0,y2:t.coords.y2||0},"radial"===this.type&&(e.r1=t.coords.r1||0,e.r2=t.coords.r2||0),this.coords=e,this.colorStops=t.colorStops.slice(),t.gradientTransform&&(this.gradientTransform=t.gradientTransform),this.offsetX=t.offsetX||this.offsetX,this.offsetY=t.offsetY||this.offsetY},addColorStop:function(t){for(var e in t){var i=new fabric.Color(t[e]);this.colorStops.push({offset:e,color:i.toRgb(),opacity:i.getAlpha()})}return this},toObject:function(){return{type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY,gradientTransform:this.gradientTransform?this.gradientTransform.concat():this.gradientTransform}},toSVG:function(t){var e,i,r=fabric.util.object.clone(this.coords);if(this.colorStops.sort(function(t,e){return t.offset-e.offset}),!t.group||"path-group"!==t.group.type)for(var n in r)"x1"===n||"x2"===n||"r2"===n?r[n]+=this.offsetX-t.width/2:"y1"!==n&&"y2"!==n||(r[n]+=this.offsetY-t.height/2);i='id="SVGID_'+this.id+'" gradientUnits="userSpaceOnUse"',this.gradientTransform&&(i+=' gradientTransform="matrix('+this.gradientTransform.join(" ")+')" '),"linear"===this.type?e=["\n']:"radial"===this.type&&(e=["\n']);for(var s=0;s\n');return e.push("linear"===this.type?"\n":"\n"),e.join("")},toLive:function(t,e){var i,r,n=fabric.util.object.clone(this.coords);if(this.type){if(e.group&&"path-group"===e.group.type)for(r in n)"x1"===r||"x2"===r?n[r]+=-this.offsetX+e.width/2:"y1"!==r&&"y2"!==r||(n[r]+=-this.offsetY+e.height/2);"linear"===this.type?i=t.createLinearGradient(n.x1,n.y1,n.x2,n.y2):"radial"===this.type&&(i=t.createRadialGradient(n.x1,n.y1,n.r1,n.x2,n.y2,n.r2));for(var s=0,o=this.colorStops.length;s\n\n\n'},toLive:function(t){var e="function"==typeof this.source?this.source():this.source;if(!e)return"";if("undefined"!=typeof e.src){if(!e.complete)return"";if(0===e.naturalWidth||0===e.naturalHeight)return""}return t.createPattern(e,this.repeat)}}),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.toFixed;return e.Shadow?void e.warn("fabric.Shadow is already defined."):(e.Shadow=e.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,initialize:function(t){"string"==typeof t&&(t=this._parseShadow(t));for(var i in t)this[i]=t[i];this.id=e.Object.__uid++},_parseShadow:function(t){var i=t.trim(),r=e.Shadow.reOffsetsAndBlur.exec(i)||[],n=i.replace(e.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)";return{color:n.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(t){var r=40,n=40,s=e.Object.NUM_FRACTION_DIGITS,o=e.util.rotateVector({x:this.offsetX,y:this.offsetY},e.util.degreesToRadians(-t.angle)),a=20;return t.width&&t.height&&(r=100*i((Math.abs(o.x)+this.blur)/t.width,s)+a,n=100*i((Math.abs(o.y)+this.blur)/t.height,s)+a),t.flipX&&(o.x*=-1),t.flipY&&(o.y*=-1),'\n\t\n\t\n\t\n\t\n\t\n\t\t\n\t\t\n\t\n\n'},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY,affectStroke:this.affectStroke};var t={},i=e.Shadow.prototype;return["color","blur","offsetX","offsetY","affectStroke"].forEach(function(e){this[e]!==i[e]&&(t[e]=this[e])},this),t}}),void(e.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/))}("undefined"!=typeof exports?exports:this),function(){"use strict";if(fabric.StaticCanvas)return void fabric.warn("fabric.StaticCanvas is already defined.");var t=fabric.util.object.extend,e=fabric.util.getElementOffset,i=fabric.util.removeFromArray,r=fabric.util.toFixed,n=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass({initialize:function(t,e){e||(e={}),this._initStatic(t,e)},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!0,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!1,imageSmoothingEnabled:!0,viewportTransform:[1,0,0,1,0,0],backgroundVpt:!0,overlayVpt:!0,onBeforeScaleRotate:function(){},enableRetinaScaling:!0,_initStatic:function(t,e){var i=fabric.StaticCanvas.prototype.renderAll.bind(this);this._objects=[],this._createLowerCanvas(t),this._initOptions(e),this._setImageSmoothing(),this.interactive||this._initRetinaScaling(),e.overlayImage&&this.setOverlayImage(e.overlayImage,i),e.backgroundImage&&this.setBackgroundImage(e.backgroundImage,i),e.backgroundColor&&this.setBackgroundColor(e.backgroundColor,i),e.overlayColor&&this.setOverlayColor(e.overlayColor,i),this.calcOffset()},_isRetinaScaling:function(){return 1!==fabric.devicePixelRatio&&this.enableRetinaScaling},getRetinaScaling:function(){return this._isRetinaScaling()?fabric.devicePixelRatio:1},_initRetinaScaling:function(){this._isRetinaScaling()&&(this.lowerCanvasEl.setAttribute("width",this.width*fabric.devicePixelRatio),this.lowerCanvasEl.setAttribute("height",this.height*fabric.devicePixelRatio),this.contextContainer.scale(fabric.devicePixelRatio,fabric.devicePixelRatio))},calcOffset:function(){return this._offset=e(this.lowerCanvasEl),this},setOverlayImage:function(t,e,i){return this.__setBgOverlayImage("overlayImage",t,e,i)},setBackgroundImage:function(t,e,i){return this.__setBgOverlayImage("backgroundImage",t,e,i)},setOverlayColor:function(t,e){return this.__setBgOverlayColor("overlayColor",t,e)},setBackgroundColor:function(t,e){return this.__setBgOverlayColor("backgroundColor",t,e)},_setImageSmoothing:function(){var t=this.getContext();t.imageSmoothingEnabled=t.imageSmoothingEnabled||t.webkitImageSmoothingEnabled||t.mozImageSmoothingEnabled||t.msImageSmoothingEnabled||t.oImageSmoothingEnabled,t.imageSmoothingEnabled=this.imageSmoothingEnabled},__setBgOverlayImage:function(t,e,i,r){return"string"==typeof e?fabric.util.loadImage(e,function(e){e&&(this[t]=new fabric.Image(e,r)),i&&i(e)},this,r&&r.crossOrigin):(r&&e.setOptions(r),this[t]=e,i&&i(e)),this},__setBgOverlayColor:function(t,e,i){if(e&&e.source){var r=this;fabric.util.loadImage(e.source,function(n){r[t]=new fabric.Pattern({source:n,repeat:e.repeat,offsetX:e.offsetX,offsetY:e.offsetY}),i&&i()})}else this[t]=e,i&&i();return this},_createCanvasElement:function(){var t=fabric.document.createElement("canvas");if(t.style||(t.style={}),!t)throw n;return this._initCanvasElement(t),t},_initCanvasElement:function(t){if(fabric.util.createCanvasElement(t),"undefined"==typeof t.getContext)throw n},_initOptions:function(t){for(var e in t)this[e]=t[e];this.width=this.width||parseInt(this.lowerCanvasEl.width,10)||0,this.height=this.height||parseInt(this.lowerCanvasEl.height,10)||0,this.lowerCanvasEl.style&&(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(t){this.lowerCanvasEl=fabric.util.getById(t)||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(t,e){return this.setDimensions({width:t},e)},setHeight:function(t,e){return this.setDimensions({height:t},e)},setDimensions:function(t,e){var i;e=e||{};for(var r in t)i=t[r],e.cssOnly||(this._setBackstoreDimension(r,t[r]),i+="px"),e.backstoreOnly||this._setCssDimension(r,i);return this._initRetinaScaling(),this._setImageSmoothing(),this.calcOffset(),e.cssOnly||this.renderAll(),this},_setBackstoreDimension:function(t,e){return this.lowerCanvasEl[t]=e,this.upperCanvasEl&&(this.upperCanvasEl[t]=e),this.cacheCanvasEl&&(this.cacheCanvasEl[t]=e),this[t]=e,this},_setCssDimension:function(t,e){return this.lowerCanvasEl.style[t]=e,this.upperCanvasEl&&(this.upperCanvasEl.style[t]=e),this.wrapperEl&&(this.wrapperEl.style[t]=e),this},getZoom:function(){return Math.sqrt(this.viewportTransform[0]*this.viewportTransform[3])},setViewportTransform:function(t){var e=this.getActiveGroup();this.viewportTransform=t;for(var i=0,r=this._objects.length;i"),i.join("")},_setSVGPreamble:function(t,e){e.suppressPreamble||t.push('\n','\n')},_setSVGHeader:function(t,e){var i,n=e.width||this.width,s=e.height||this.height,o='viewBox="0 0 '+this.width+" "+this.height+'" ',a=fabric.Object.NUM_FRACTION_DIGITS;e.viewBox?o='viewBox="'+e.viewBox.x+" "+e.viewBox.y+" "+e.viewBox.width+" "+e.viewBox.height+'" ':this.svgViewportTransformation&&(i=this.viewportTransform,o='viewBox="'+r(-i[4]/i[0],a)+" "+r(-i[5]/i[3],a)+" "+r(this.width/i[0],a)+" "+r(this.height/i[3],a)+'" '),t.push("\n',"Created with Fabric.js ",fabric.version,"\n","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),"\n")},_setSVGObjects:function(t,e){for(var i,r,n=0,s=this.getObjects(),o=s.length;n\n"):this[e]&&"overlayColor"===e&&t.push('\n")},sendToBack:function(t){if(!t)return this;var e,r,n,s=this.getActiveGroup?this.getActiveGroup():null;if(t===s)for(n=s._objects,e=n.length;e--;)r=n[e],i(this._objects,r),this._objects.unshift(r);else i(this._objects,t),this._objects.unshift(t);return this.renderAll&&this.renderAll()},bringToFront:function(t){if(!t)return this;var e,r,n,s=this.getActiveGroup?this.getActiveGroup():null;if(t===s)for(n=s._objects,e=0;e=0;--n){var s=t.intersectsWithObject(this._objects[n])||t.isContainedWithinObject(this._objects[n])||this._objects[n].isContainedWithinObject(t);if(s){r=n;break}}}else r=e-1;return r},bringForward:function(t,e){if(!t)return this;var r,n,s,o,a,h=this.getActiveGroup?this.getActiveGroup():null;if(t===h)for(a=h._objects,r=a.length;r--;)n=a[r],s=this._objects.indexOf(n),s!==this._objects.length-1&&(o=s+1,i(this._objects,n),this._objects.splice(o,0,n));else s=this._objects.indexOf(t),s!==this._objects.length-1&&(o=this._findNewUpperIndex(t,s,e),i(this._objects,t),this._objects.splice(o,0,t));return this.renderAll&&this.renderAll(),this},_findNewUpperIndex:function(t,e,i){var r;if(i){r=e;for(var n=e+1;n"}}),t(fabric.StaticCanvas.prototype,fabric.Observable),t(fabric.StaticCanvas.prototype,fabric.Collection),t(fabric.StaticCanvas.prototype,fabric.DataURLExporter),t(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(t){var e=fabric.util.createCanvasElement();if(!e||!e.getContext)return null;var i=e.getContext("2d");if(!i)return null;switch(t){case"getImageData":return"undefined"!=typeof i.getImageData;case"setLineDash":return"undefined"!=typeof i.setLineDash;case"toDataURL":return"undefined"!=typeof e.toDataURL;case"toDataURLWithQuality":try{return e.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",strokeDashArray:null,setShadow:function(t){return this.shadow=new fabric.Shadow(t),this},_setBrushStyles:function(){var t=this.canvas.contextTop;t.strokeStyle=this.color,t.lineWidth=this.width,t.lineCap=this.strokeLineCap,t.lineJoin=this.strokeLineJoin,this.strokeDashArray&&fabric.StaticCanvas.supports("setLineDash")&&t.setLineDash(this.strokeDashArray)},_setShadow:function(){if(this.shadow){var t=this.canvas.contextTop;t.shadowColor=this.shadow.color,t.shadowBlur=this.shadow.blur,t.shadowOffsetX=this.shadow.offsetX,t.shadowOffsetY=this.shadow.offsetY}},_resetShadow:function(){var t=this.canvas.contextTop;t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0}}),function(){fabric.PencilBrush=fabric.util.createClass(fabric.BaseBrush,{initialize:function(t){this.canvas=t,this._points=[]},onMouseDown:function(t){this._prepareForDrawing(t),this._captureDrawingPath(t),this._render()},onMouseMove:function(t){this._captureDrawingPath(t),this.canvas.clearContext(this.canvas.contextTop),this._render()},onMouseUp:function(){this._finalizeAndAddPath()},_prepareForDrawing:function(t){var e=new fabric.Point(t.x,t.y);this._reset(),this._addPoint(e),this.canvas.contextTop.moveTo(e.x,e.y)},_addPoint:function(t){this._points.push(t)},_reset:function(){this._points.length=0,this._setBrushStyles(),this._setShadow()},_captureDrawingPath:function(t){var e=new fabric.Point(t.x,t.y);this._addPoint(e)},_render:function(){var t=this.canvas.contextTop,e=this.canvas.viewportTransform,i=this._points[0],r=this._points[1];t.save(),t.transform(e[0],e[1],e[2],e[3],e[4],e[5]),t.beginPath(),2===this._points.length&&i.x===r.x&&i.y===r.y&&(i.x-=.5,r.x+=.5),t.moveTo(i.x,i.y);for(var n=1,s=this._points.length;n0?1:-1,"y"===i&&(s=e.target.skewY,o="top",a="bottom",r="originY"),n[-1]=o,n[1]=a,e.target.flipX&&(c*=-1),e.target.flipY&&(c*=-1),0===s?(e.skewSign=-h*t*c,e[r]=n[-t]):(s=s>0?1:-1,e.skewSign=s,e[r]=n[s*h*c])},_skewObject:function(t,e,i){var r=this._currentTransform,n=r.target,s=!1,o=n.get("lockSkewingX"),a=n.get("lockSkewingY");if(o&&"x"===i||a&&"y"===i)return!1;var h,c,l=n.getCenterPoint(),u=n.toLocalPoint(new fabric.Point(t,e),"center","center")[i],f=n.toLocalPoint(new fabric.Point(r.lastX,r.lastY),"center","center")[i],d=n._getTransformedDimensions();return this._changeSkewTransformOrigin(u-f,r,i),h=n.toLocalPoint(new fabric.Point(t,e),r.originX,r.originY)[i],c=n.translateToOriginPoint(l,r.originX,r.originY),s=this._setObjectSkew(h,r,i,d),r.lastX=t,r.lastY=e,n.setPositionByOrigin(c,r.originX,r.originY),s},_setObjectSkew:function(t,e,i,r){var n,s,o,a,h,c,l,u,f,d=e.target,g=!1,p=e.skewSign;return"x"===i?(a="y",h="Y",c="X",u=0,f=d.skewY):(a="x",h="X",c="Y",u=d.skewX,f=0),o=d._getTransformedDimensions(u,f),l=2*Math.abs(t)-o[i],l<=2?n=0:(n=p*Math.atan(l/d["scale"+c]/(o[a]/d["scale"+h])),n=fabric.util.radiansToDegrees(n)),g=d["skew"+c]!==n,d.set("skew"+c,n),0!==d["skew"+h]&&(s=d._getTransformedDimensions(),n=r[a]/s[a]*d["scale"+h],d.set("scale"+h,n)),g},_scaleObject:function(t,e,i){var r=this._currentTransform,n=r.target,s=n.get("lockScalingX"),o=n.get("lockScalingY"),a=n.get("lockScalingFlip");if(s&&o)return!1;var h=n.translateToOriginPoint(n.getCenterPoint(),r.originX,r.originY),c=n.toLocalPoint(new fabric.Point(t,e),r.originX,r.originY),l=n._getTransformedDimensions(),u=!1;return this._setLocalMouse(c,r),u=this._setObjectScale(c,r,s,o,i,a,l),n.setPositionByOrigin(h,r.originX,r.originY),u},_setObjectScale:function(t,e,i,r,n,s,o){var a,h,c,l,u=e.target,f=!1,d=!1,g=!1;return c=t.x*u.scaleX/o.x,l=t.y*u.scaleY/o.y,a=u.scaleX!==c,h=u.scaleY!==l,s&&c<=0&&ci.padding?t.x<0?t.x+=i.padding:t.x-=i.padding:t.x=0,n(t.y)>i.padding?t.y<0?t.y+=i.padding:t.y-=i.padding:t.y=0},_rotateObject:function(t,e){var n=this._currentTransform;if(n.target.get("lockRotation"))return!1;var s=r(n.ey-n.top,n.ex-n.left),o=r(e-n.top,t-n.left),a=i(o-s+n.theta);return a<0&&(a=360+a),n.target.angle=a%360,!0},setCursor:function(t){this.upperCanvasEl.style.cursor=t},_resetObjectTransform:function(t){t.scaleX=1,t.scaleY=1,t.skewX=0,t.skewY=0,t.setAngle(0)},_drawSelection:function(t){var e=this._groupSelector,i=e.left,r=e.top,o=n(i),a=n(r);if(t.fillStyle=this.selectionColor,t.fillRect(e.ex-(i>0?0:-i),e.ey-(r>0?0:-r),o,a),t.lineWidth=this.selectionLineWidth,t.strokeStyle=this.selectionBorderColor,this.selectionDashArray.length>1){var h=e.ex+s-(i>0?0:o),c=e.ey+s-(r>0?0:a);t.beginPath(),fabric.util.drawDashedLine(t,h,c,h+o,c,this.selectionDashArray),fabric.util.drawDashedLine(t,h,c+a-1,h+o,c+a-1,this.selectionDashArray),fabric.util.drawDashedLine(t,h,c,h,c+a,this.selectionDashArray),fabric.util.drawDashedLine(t,h+o-1,c,h+o-1,c+a,this.selectionDashArray),t.closePath(),t.stroke()}else t.strokeRect(e.ex+s-(i>0?0:o),e.ey+s-(r>0?0:a),o,a)},findTarget:function(t,e){if(!this.skipTargetFind){var i=!0,r=this.getPointer(t,i),n=this.getActiveGroup(),s=this.getActiveObject();if(n&&!e&&this._checkTarget(r,n))return n;if(s&&this._checkTarget(r,s))return s;this.targets=[];var o=this._searchPossibleTargets(this._objects,r);return this._fireOverOutEvents(o,t),o}},_fireOverOutEvents:function(t,e){t?this._hoveredTarget!==t&&(this._hoveredTarget&&(this.fire("mouse:out",{target:this._hoveredTarget,e:e}),this._hoveredTarget.fire("mouseout")),this.fire("mouse:over",{target:t,e:e}),t.fire("mouseover"),this._hoveredTarget=t):this._hoveredTarget&&(this.fire("mouse:out",{target:this._hoveredTarget,e:e}),this._hoveredTarget.fire("mouseout"),this._hoveredTarget=null)},_checkTarget:function(t,e){if(e&&e.visible&&e.evented&&this.containsPoint(null,e,t)){if(!this.perPixelTargetFind&&!e.perPixelTargetFind||e.isEditing)return!0;var i=this.isTargetTransparent(e,t.x,t.y);if(!i)return!0}},_searchPossibleTargets:function(t,e){for(var i,r,n,s=t.length;s--;)if(this._checkTarget(e,t[s])){i=t[s],"group"===i.type&&i.subTargetCheck&&(r=this._normalizePointer(i,e),n=this._searchPossibleTargets(i._objects,r),n&&this.targets.push(n));break}return i},restorePointerVpt:function(t){return fabric.util.transformPoint(t,fabric.util.invertTransform(this.viewportTransform))},getPointer:function(e,i,r){r||(r=this.upperCanvasEl);var n,s=t(e),o=r.getBoundingClientRect(),a=o.width||0,h=o.height||0;return a&&h||("top"in o&&"bottom"in o&&(h=Math.abs(o.top-o.bottom)),"right"in o&&"left"in o&&(a=Math.abs(o.right-o.left))),this.calcOffset(),s.x=s.x-this._offset.left,s.y=s.y-this._offset.top,i||(s=this.restorePointerVpt(s)),n=0===a||0===h?{width:1,height:1}:{width:r.width/a,height:r.height/h},{x:s.x*n.width,y:s.y*n.height}},_createUpperCanvas:function(){var t=this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/,"");this.upperCanvasEl=this._createCanvasElement(),fabric.util.addClass(this.upperCanvasEl,"upper-canvas "+t),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(t){var e=this.getWidth()||t.width,i=this.getHeight()||t.height;fabric.util.setStyle(t,{position:"absolute",width:e+"px",height:i+"px",left:0,top:0}),t.width=e,t.height=i,fabric.util.makeElementUnselectable(t)},_copyCanvasStyle:function(t,e){e.style.cssText=t.style.cssText},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},_setActiveObject:function(t){this._activeObject&&this._activeObject.set("active",!1),this._activeObject=t,t.set("active",!0)},setActiveObject:function(t,e){return this._setActiveObject(t),this.renderAll(),this.fire("object:selected",{target:t,e:e}),t.fire("selected",{e:e}),this},getActiveObject:function(){return this._activeObject},_onObjectRemoved:function(t){this.getActiveObject()===t&&(this.fire("before:selection:cleared",{target:t}),this._discardActiveObject(),this.fire("selection:cleared",{target:t}),t.fire("deselected")),this.callSuper("_onObjectRemoved",t)},_discardActiveObject:function(){this._activeObject&&this._activeObject.set("active",!1),this._activeObject=null},discardActiveObject:function(t){var e=this._activeObject;return this.fire("before:selection:cleared",{target:e,e:t}),this._discardActiveObject(),this.fire("selection:cleared",{e:t}),e&&e.fire("deselected",{e:t}),this},_setActiveGroup:function(t){this._activeGroup=t,t&&t.set("active",!0)},setActiveGroup:function(t,e){return this._setActiveGroup(t),t&&(this.fire("object:selected",{target:t,e:e}),t.fire("selected",{e:e})),this},getActiveGroup:function(){return this._activeGroup},_discardActiveGroup:function(){var t=this.getActiveGroup();t&&t.destroy(),this.setActiveGroup(null)},discardActiveGroup:function(t){var e=this.getActiveGroup();return this.fire("before:selection:cleared",{e:t,target:e}),this._discardActiveGroup(),this.fire("selection:cleared",{e:t}),this},deactivateAll:function(){for(var t=this.getObjects(),e=0,i=t.length;e"),fabric.document.createWindow?fabric.window=fabric.document.createWindow():fabric.window=fabric.document.parentWindow),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode="undefined"!=typeof Buffer&&"undefined"==typeof window,fabric.SHARED_ATTRIBUTES=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","id"],fabric.DPI=96,fabric.reNum="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:e[-+]?\\d+)?)",fabric.fontPaths={},fabric.charWidthsCache={},fabric.devicePixelRatio=fabric.window.devicePixelRatio||fabric.window.webkitDevicePixelRatio||fabric.window.mozDevicePixelRatio||1,function(){function t(t,e){if(this.__eventListeners[t]){var i=this.__eventListeners[t];e?i[i.indexOf(e)]=!1:fabric.util.array.fill(i,!1)}}function e(t,e){if(this.__eventListeners||(this.__eventListeners={}),1===arguments.length)for(var i in t)this.on(i,t[i]);else this.__eventListeners[t]||(this.__eventListeners[t]=[]),this.__eventListeners[t].push(e);return this}function i(e,i){if(this.__eventListeners){if(0===arguments.length)for(e in this.__eventListeners)t.call(this,e);else if(1===arguments.length&&"object"==typeof arguments[0])for(var r in e)t.call(this,r,e[r]);else t.call(this,e,i);return this}}function r(t,e){if(this.__eventListeners){var i=this.__eventListeners[t];if(i){for(var r=0,n=i.length;r-1},complexity:function(){return this.getObjects().reduce(function(t,e){return t+=e.complexity?e.complexity():0},0)}},function(t){var e=Math.sqrt,i=Math.atan2,r=Math.pow,n=Math.abs,s=Math.PI/180;fabric.util={removeFromArray:function(t,e){var i=t.indexOf(e);return i!==-1&&t.splice(i,1),t},getRandomInt:function(t,e){return Math.floor(Math.random()*(e-t+1))+t},degreesToRadians:function(t){return t*s},radiansToDegrees:function(t){return t/s},rotatePoint:function(t,e,i){t.subtractEquals(e);var r=fabric.util.rotateVector(t,i);return new fabric.Point(r.x,r.y).addEquals(e)},rotateVector:function(t,e){var i=Math.sin(e),r=Math.cos(e),n=t.x*r-t.y*i,s=t.x*i+t.y*r;return{x:n,y:s}},transformPoint:function(t,e,i){return i?new fabric.Point(e[0]*t.x+e[2]*t.y,e[1]*t.x+e[3]*t.y):new fabric.Point(e[0]*t.x+e[2]*t.y+e[4],e[1]*t.x+e[3]*t.y+e[5])},makeBoundingBoxFromPoints:function(t){var e=[t[0].x,t[1].x,t[2].x,t[3].x],i=fabric.util.array.min(e),r=fabric.util.array.max(e),n=Math.abs(i-r),s=[t[0].y,t[1].y,t[2].y,t[3].y],o=fabric.util.array.min(s),a=fabric.util.array.max(s),h=Math.abs(o-a);return{left:i,top:o,width:n,height:h}},invertTransform:function(t){var e=1/(t[0]*t[3]-t[1]*t[2]),i=[e*t[3],-e*t[1],-e*t[2],e*t[0]],r=fabric.util.transformPoint({x:t[4],y:t[5]},i,!0);return i[4]=-r.x,i[5]=-r.y,i},toFixed:function(t,e){return parseFloat(Number(t).toFixed(e))},parseUnit:function(t,e){var i=/\D{0,2}$/.exec(t),r=parseFloat(t);switch(e||(e=fabric.Text.DEFAULT_SVG_FONT_SIZE),i[0]){case"mm":return r*fabric.DPI/25.4;case"cm":return r*fabric.DPI/2.54;case"in":return r*fabric.DPI;case"pt":return r*fabric.DPI/72;case"pc":return r*fabric.DPI/72*12;case"em":return r*e;default:return r}},falseFunction:function(){return!1},getKlass:function(t,e){return t=fabric.util.string.camelize(t.charAt(0).toUpperCase()+t.slice(1)),fabric.util.resolveNamespace(e)[t]},resolveNamespace:function(e){if(!e)return fabric;for(var i=e.split("."),r=i.length,n=t||fabric.window,s=0;sr;)r+=a[d++%f],r>l&&(r=l),t[g?"lineTo":"moveTo"](r,0),g=!g;t.restore()},createCanvasElement:function(t){return t||(t=fabric.document.createElement("canvas")),t.getContext||"undefined"==typeof G_vmlCanvasManager||G_vmlCanvasManager.initElement(t),t},createImage:function(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")},createAccessors:function(t){for(var e=t.prototype,i=e.stateProperties.length;i--;){var r=e.stateProperties[i],n=r.charAt(0).toUpperCase()+r.slice(1),s="set"+n,o="get"+n;e[o]||(e[o]=function(t){return new Function('return this.get("'+t+'")')}(r)),e[s]||(e[s]=function(t){return new Function("value",'return this.set("'+t+'", value)')}(r))}},clipContext:function(t,e){e.save(),e.beginPath(),t.clipTo(e),e.clip()},multiplyTransformMatrices:function(t,e,i){return[t[0]*e[0]+t[2]*e[1],t[1]*e[0]+t[3]*e[1],t[0]*e[2]+t[2]*e[3],t[1]*e[2]+t[3]*e[3],i?0:t[0]*e[4]+t[2]*e[5]+t[4],i?0:t[1]*e[4]+t[3]*e[5]+t[5]]},qrDecompose:function(t){var n=i(t[1],t[0]),o=r(t[0],2)+r(t[1],2),a=e(o),h=(t[0]*t[3]-t[2]*t[1])/a,c=i(t[0]*t[2]+t[1]*t[3],o);return{angle:n/s,scaleX:a,scaleY:h,skewX:c/s,skewY:0,translateX:t[4],translateY:t[5]}},customTransformMatrix:function(t,e,i){var r=[1,0,n(Math.tan(i*s)),1],o=[n(t),0,0,n(e)];return fabric.util.multiplyTransformMatrices(o,r,!0)},resetObjectTransform:function(t){t.scaleX=1,t.scaleY=1,t.skewX=0,t.skewY=0,t.flipX=!1,t.flipY=!1,t.setAngle(0)},getFunctionBody:function(t){return(String(t).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]},isTransparent:function(t,e,i,r){r>0&&(e>r?e-=r:e=0,i>r?i-=r:i=0);for(var n=!0,s=t.getImageData(e,i,2*r||1,2*r||1),o=3,a=s.data.length;o0?I-=2*f:1===c&&I<0&&(I+=2*f);for(var L=Math.ceil(Math.abs(I/f*2)),E=[],D=I/L,R=8/3*Math.sin(D/4)*Math.sin(D/4)/Math.sin(D/2),F=P+D,B=0;B=n?s-n:2*Math.PI-(n-s)}function r(t,e,i,r,n,s,h,c){var l=a.call(arguments);if(o[l])return o[l];var u,f,d,g,p,v,b,m,y=Math.sqrt,_=Math.min,x=Math.max,S=Math.abs,C=[],w=[[],[]];f=6*t-12*i+6*n,u=-3*t+9*i-9*n+3*h,d=3*i-3*t;for(var O=0;O<2;++O)if(O>0&&(f=6*e-12*r+6*s,u=-3*e+9*r-9*s+3*c,d=3*r-3*e),S(u)<1e-12){if(S(f)<1e-12)continue;g=-d/f,0=e})}function i(t,e){return n(t,e,function(t,e){return t>>0;if(0===i)return-1;var r=0;if(arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:0!==r&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r)))),r>=i)return-1;for(var n=r>=0?r:Math.max(i-Math.abs(r),0);n>>0;i>>0;r>>0;i>>0;i>>0;n>>0,r=0;if(arguments.length>1)e=arguments[1];else for(;;){if(r in this){e=this[r++];break}if(++r>=i)throw new TypeError}for(;r/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:t,capitalize:e,escapeXml:i}}(),function(){var t=Array.prototype.slice,e=Function.prototype.apply,i=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var n,s=this,o=t.call(arguments,1);return n=o.length?function(){return e.call(s,this instanceof i?this:r,o.concat(t.call(arguments)))}:function(){return e.call(s,this instanceof i?this:r,arguments)},i.prototype=this.prototype,n.prototype=new i,n})}(),function(){function t(){}function e(t){var e=this.constructor.superclass.prototype[t];return arguments.length>1?e.apply(this,r.call(arguments,1)):e.call(this)}function i(){function i(){this.initialize.apply(this,arguments)}var s=null,a=r.call(arguments,0);"function"==typeof a[0]&&(s=a.shift()),i.superclass=s,i.subclasses=[],s&&(t.prototype=s.prototype,i.prototype=new t,s.subclasses.push(i));for(var h=0,c=a.length;h-1?t.prototype[r]=function(t){return function(){var r=this.constructor.superclass;this.constructor.superclass=i;var n=e[t].apply(this,arguments);if(this.constructor.superclass=r,"initialize"!==t)return n}}(r):t.prototype[r]=e[r],s&&(e.toString!==Object.prototype.toString&&(t.prototype.toString=e.toString),e.valueOf!==Object.prototype.valueOf&&(t.prototype.valueOf=e.valueOf))};fabric.util.createClass=i}(),function(){function t(t){var e,i,r=Array.prototype.slice.call(arguments,1),n=r.length;for(i=0;i-1?s(t,e.match(/opacity:\s*(\d?\.?\d*)/)[1]):t;for(var r in e)if("opacity"===r)s(t,e[r]);else{var n="float"===r||"cssFloat"===r?"undefined"==typeof i.styleFloat?"cssFloat":"styleFloat":r;i[n]=e[r]}return t}var e=fabric.document.createElement("div"),i="string"==typeof e.style.opacity,r="string"==typeof e.style.filter,n=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(t){return t};i?s=function(t,e){return t.style.opacity=e,t}:r&&(s=function(t,e){var i=t.style;return t.currentStyle&&!t.currentStyle.hasLayout&&(i.zoom=1),n.test(i.filter)?(e=e>=.9999?"":"alpha(opacity="+100*e+")",i.filter=i.filter.replace(n,e)):i.filter+=" alpha(opacity="+100*e+")",t}),fabric.util.setStyle=t}(),function(){function t(t){return"string"==typeof t?fabric.document.getElementById(t):t}function e(t,e){var i=fabric.document.createElement(t);for(var r in e)"class"===r?i.className=e[r]:"for"===r?i.htmlFor=e[r]:i.setAttribute(r,e[r]);return i}function i(t,e){t&&(" "+t.className+" ").indexOf(" "+e+" ")===-1&&(t.className+=(t.className?" ":"")+e)}function r(t,i,r){return"string"==typeof i&&(i=e(i,r)),t.parentNode&&t.parentNode.replaceChild(i,t),i.appendChild(t),i}function n(t){for(var e=0,i=0,r=fabric.document.documentElement,n=fabric.document.body||{scrollLeft:0,scrollTop:0};t&&(t.parentNode||t.host)&&(t=t.parentNode||t.host,t===fabric.document?(e=n.scrollLeft||r.scrollLeft||0,i=n.scrollTop||r.scrollTop||0):(e+=t.scrollLeft||0,i+=t.scrollTop||0),1!==t.nodeType||"fixed"!==fabric.util.getElementStyle(t,"position")););return{left:e,top:i}}function s(t){var e,i,r=t&&t.ownerDocument,s={left:0,top:0},o={left:0,top:0},a={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!r)return o;for(var h in a)o[a[h]]+=parseInt(c(t,h),10)||0;return e=r.documentElement,"undefined"!=typeof t.getBoundingClientRect&&(s=t.getBoundingClientRect()),i=n(t),{left:s.left+i.left-(e.clientLeft||0)+o.left,top:s.top+i.top-(e.clientTop||0)+o.top}}var o,a=Array.prototype.slice,h=function(t){return a.call(t,0)};try{o=h(fabric.document.childNodes)instanceof Array}catch(t){}o||(h=function(t){for(var e=new Array(t.length),i=t.length;i--;)e[i]=t[i];return e});var c;c=fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle?function(t,e){var i=fabric.document.defaultView.getComputedStyle(t,null);return i?i[e]:void 0}:function(t,e){var i=t.style[e];return!i&&t.currentStyle&&(i=t.currentStyle[e]),i},function(){function t(t){return"undefined"!=typeof t.onselectstart&&(t.onselectstart=fabric.util.falseFunction),r?t.style[r]="none":"string"==typeof t.unselectable&&(t.unselectable="on"),t}function e(t){return"undefined"!=typeof t.onselectstart&&(t.onselectstart=null),r?t.style[r]="":"string"==typeof t.unselectable&&(t.unselectable=""),t}var i=fabric.document.documentElement.style,r="userSelect"in i?"userSelect":"MozUserSelect"in i?"MozUserSelect":"WebkitUserSelect"in i?"WebkitUserSelect":"KhtmlUserSelect"in i?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=t,fabric.util.makeElementSelectable=e}(),function(){function t(t,e){var i=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),n=!0;r.onload=r.onreadystatechange=function(t){if(n){if("string"==typeof this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState)return;n=!1,e(t||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=t,i.appendChild(r)}fabric.util.getScript=t}(),fabric.util.getById=t,fabric.util.toArray=h,fabric.util.makeElement=e,fabric.util.addClass=i,fabric.util.wrapElement=r,fabric.util.getScrollLeftTop=n,fabric.util.getElementOffset=s,fabric.util.getElementStyle=c}(),function(){function t(t,e){return t+(/\?/.test(t)?"&":"?")+e}function e(){}function i(i,n){n||(n={});var s=n.method?n.method.toUpperCase():"GET",o=n.onComplete||function(){},a=r(),h=n.body||n.parameters;return a.onreadystatechange=function(){4===a.readyState&&(o(a),a.onreadystatechange=e)},"GET"===s&&(h=null,"string"==typeof n.parameters&&(i=t(i,n.parameters))),a.open(s,i,!0),"POST"!==s&&"PUT"!==s||a.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),a.send(h),a}var r=function(){for(var t=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}],e=t.length;e--;)try{var i=t[e]();if(i)return t[e]}catch(t){}}();fabric.util.request=i}(),fabric.log=function(){},fabric.warn=function(){},"undefined"!=typeof console&&["log","warn"].forEach(function(t){"undefined"!=typeof console[t]&&"function"==typeof console[t].apply&&(fabric[t]=function(){return console[t].apply(console,arguments)})}),function(){function t(t){e(function(i){t||(t={});var r,n=i||+new Date,s=t.duration||500,o=n+s,a=t.onChange||function(){},h=t.abort||function(){return!1},c=t.easing||function(t,e,i,r){return-i*Math.cos(t/r*(Math.PI/2))+i+e},l="startValue"in t?t.startValue:0,u="endValue"in t?t.endValue:100,f=t.byValue||u-l;t.onStart&&t.onStart(),function i(u){r=u||+new Date;var d=r>o?s:r-n;return h()?void(t.onComplete&&t.onComplete()):(a(c(d,l,f,s)),r>o?void(t.onComplete&&t.onComplete()):void e(i))}(n)})}function e(){return i.apply(fabric.window,arguments)}var i=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(t){fabric.window.setTimeout(t,1e3/60)};fabric.util.animate=t,fabric.util.requestAnimFrame=e}(),function(){function t(t,e,i,r){return ta?a:o),1===o&&1===a&&0===h&&0===c&&0===f&&0===d)return y;if((f||d)&&(_=" translate("+x(f)+" "+x(d)+") "),r=_+" matrix("+o+" 0 0 "+a+" "+h*o+" "+c*a+") ","svg"===t.nodeName){for(n=t.ownerDocument.createElement("g");null!=t.firstChild;)n.appendChild(t.firstChild);t.appendChild(n)}else n=t,r=n.getAttribute("transform")+r;return n.setAttribute("transform",r),y}function g(t){var e=t.objects,i=t.options;return e=e.map(function(t){return v[m(t.type)].fromObject(t)}),{objects:e,options:i}}function p(t,e,i){e[i]&&e[i].toSVG&&t.push('\t\n','\t\t\n\t\n')}var v=t.fabric||(t.fabric={}),b=v.util.object.extend,m=v.util.string.capitalize,y=v.util.object.clone,_=v.util.toFixed,x=v.util.parseUnit,S=v.util.multiplyTransformMatrices,C=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/i,w=/^(symbol|image|marker|pattern|view|svg)$/i,O=/^(?:pattern|defs|symbol|metadata)$/i,T=/^(symbol|g|a|svg)$/i,k={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"},j={stroke:"strokeOpacity",fill:"fillOpacity"};v.cssRules={},v.gradientDefs={},v.parseTransformAttribute=function(){function t(t,e){var i=e[0],r=3===e.length?e[1]:0,n=3===e.length?e[2]:0;t[0]=Math.cos(i),t[1]=Math.sin(i),t[2]=-Math.sin(i),t[3]=Math.cos(i),t[4]=r-(t[0]*r+t[2]*n),t[5]=n-(t[1]*r+t[3]*n)}function e(t,e){var i=e[0],r=2===e.length?e[1]:e[0];t[0]=i,t[3]=r}function i(t,e){t[2]=Math.tan(v.util.degreesToRadians(e[0]))}function r(t,e){t[1]=Math.tan(v.util.degreesToRadians(e[0]))}function n(t,e){t[4]=e[0],2===e.length&&(t[5]=e[1])}var s=[1,0,0,1,0,0],o=v.reNum,a="(?:\\s+,?\\s*|,\\s*)",h="(?:(skewX)\\s*\\(\\s*("+o+")\\s*\\))",c="(?:(skewY)\\s*\\(\\s*("+o+")\\s*\\))",l="(?:(rotate)\\s*\\(\\s*("+o+")(?:"+a+"("+o+")"+a+"("+o+"))?\\s*\\))",u="(?:(scale)\\s*\\(\\s*("+o+")(?:"+a+"("+o+"))?\\s*\\))",f="(?:(translate)\\s*\\(\\s*("+o+")(?:"+a+"("+o+"))?\\s*\\))",d="(?:(matrix)\\s*\\(\\s*("+o+")"+a+"("+o+")"+a+"("+o+")"+a+"("+o+")"+a+"("+o+")"+a+"("+o+")\\s*\\))",g="(?:"+d+"|"+f+"|"+u+"|"+l+"|"+h+"|"+c+")",p="(?:"+g+"(?:"+a+"*"+g+")*)",b="^\\s*(?:"+p+"?)\\s*$",m=new RegExp(b),y=new RegExp(g,"g"); +return function(o){var a=s.concat(),h=[];if(!o||o&&!m.test(o))return a;o.replace(y,function(o){var c=new RegExp(g).exec(o).filter(function(t){return""!==t&&null!=t}),l=c[1],u=c.slice(2).map(parseFloat);switch(l){case"translate":n(a,u);break;case"rotate":u[0]=v.util.degreesToRadians(u[0]),t(a,u);break;case"scale":e(a,u);break;case"skewX":i(a,u);break;case"skewY":r(a,u);break;case"matrix":a=u}h.push(a.concat()),a=s.concat()});for(var c=h[0];h.length>1;)h.shift(),c=v.util.multiplyTransformMatrices(c,h[0]);return c}}();var A=new RegExp("^\\s*("+v.reNum+"+)\\s*,?\\s*("+v.reNum+"+)\\s*,?\\s*("+v.reNum+"+)\\s*,?\\s*("+v.reNum+"+)\\s*$");v.parseSVGDocument=function(){function t(t,e){for(;t&&(t=t.parentNode);)if(t.nodeName&&e.test(t.nodeName.replace("svg:",""))&&!t.getAttribute("instantiated_by_use"))return!0;return!1}return function(e,i,r){if(e){f(e);var n=new Date,s=v.Object.__uid++,o=d(e),a=v.util.toArray(e.getElementsByTagName("*"));if(o.svgUid=s,0===a.length&&v.isLikelyNode){a=e.selectNodes('//*[name(.)!="svg"]');for(var h=[],c=0,l=a.length;c/i,""))),n&&n.documentElement||e&&e(null),v.parseSVGDocument(n.documentElement,function(i,r){M.set(t,{objects:v.util.array.invoke(i,"toObject"),options:r}),e&&e(i,r)},i)}t=t.replace(/^\n\s*/,"").trim(),M.has(t,function(i){i?M.get(t,function(t){var i=g(t);e(i.objects,i.options)}):new v.util.request(t,{method:"get",onComplete:r})})},loadSVGFromString:function(t,e,i){t=t.trim();var r;if("undefined"!=typeof DOMParser){var n=new DOMParser;n&&n.parseFromString&&(r=n.parseFromString(t,"text/xml"))}else v.window.ActiveXObject&&(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(t.replace(//i,"")));v.parseSVGDocument(r.documentElement,function(t,i){e(t,i)},i)},createSVGFontFacesMarkup:function(t){for(var e,i,r,n,s,o,a,h="",c={},l=v.fontPaths,u=0,f=t.length;u',"","\n"].join("")),h},createSVGRefElementsMarkup:function(t){var e=[];return p(e,t,"backgroundColor"),p(e,t,"overlayColor"),e.join("")}})}("undefined"!=typeof exports?exports:this),fabric.ElementsParser=function(t,e,i,r){this.elements=t,this.callback=e,this.options=i,this.reviver=r,this.svgUid=i&&i.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 t=0,e=this.elements.length;tt.x&&this.y>t.y},gte:function(t){return this.x>=t.x&&this.y>=t.y},lerp:function(t,i){return"undefined"==typeof i&&(i=.5),i=Math.max(Math.min(1,i),0),new e(this.x+(t.x-this.x)*i,this.y+(t.y-this.y)*i)},distanceFrom:function(t){var e=this.x-t.x,i=this.y-t.y;return Math.sqrt(e*e+i*i)},midPointFrom:function(t){return this.lerp(t)},min:function(t){return new e(Math.min(this.x,t.x),Math.min(this.y,t.y))},max:function(t){return new e(Math.max(this.x,t.x),Math.max(this.y,t.y))},toString:function(){return this.x+","+this.y},setXY:function(t,e){return this.x=t,this.y=e,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setFromPoint:function(t){return this.x=t.x,this.y=t.y,this},swap:function(t){var e=this.x,i=this.y;this.x=t.x,this.y=t.y,t.x=e,t.y=i},clone:function(){return new e(this.x,this.y)}}))}("undefined"!=typeof exports?exports:this),function(t){"use strict";function e(t){this.status=t,this.points=[]}var i=t.fabric||(t.fabric={});return i.Intersection?void i.warn("fabric.Intersection is already defined"):(i.Intersection=e,i.Intersection.prototype={constructor:e,appendPoint:function(t){return this.points.push(t),this},appendPoints:function(t){return this.points=this.points.concat(t),this}},i.Intersection.intersectLineLine=function(t,r,n,s){var o,a=(s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x),h=(r.x-t.x)*(t.y-n.y)-(r.y-t.y)*(t.x-n.x),c=(s.y-n.y)*(r.x-t.x)-(s.x-n.x)*(r.y-t.y);if(0!==c){var l=a/c,u=h/c;0<=l&&l<=1&&0<=u&&u<=1?(o=new e("Intersection"),o.appendPoint(new i.Point(t.x+l*(r.x-t.x),t.y+l*(r.y-t.y)))):o=new e}else o=new e(0===a||0===h?"Coincident":"Parallel");return o},i.Intersection.intersectLinePolygon=function(t,i,r){for(var n,s,o,a=new e,h=r.length,c=0;c0&&(a.status="Intersection"),a},i.Intersection.intersectPolygonPolygon=function(t,i){for(var r=new e,n=t.length,s=0;s0&&(r.status="Intersection"),r},void(i.Intersection.intersectPolygonRectangle=function(t,r,n){var s=r.min(n),o=r.max(n),a=new i.Point(o.x,s.y),h=new i.Point(s.x,o.y),c=e.intersectLinePolygon(s,a,t),l=e.intersectLinePolygon(a,o,t),u=e.intersectLinePolygon(o,h,t),f=e.intersectLinePolygon(h,s,t),d=new e;return d.appendPoints(c.points),d.appendPoints(l.points),d.appendPoints(u.points),d.appendPoints(f.points),d.points.length>0&&(d.status="Intersection"),d}))}("undefined"!=typeof exports?exports:this),function(t){"use strict";function e(t){t?this._tryParsingColor(t):this.setSource([0,0,0,1])}function i(t,e,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?t+6*(e-t)*i:i<.5?e:i<2/3?t+(e-t)*(2/3-i)*6:t}var r=t.fabric||(t.fabric={});return r.Color?void r.warn("fabric.Color is already defined."):(r.Color=e,r.Color.prototype={_tryParsingColor:function(t){var i;t in e.colorNameMap&&(t=e.colorNameMap[t]),"transparent"===t&&(i=[255,255,255,0]),i||(i=e.sourceFromHex(t)),i||(i=e.sourceFromRgb(t)),i||(i=e.sourceFromHsl(t)),i||(i=[0,0,0,1]),i&&this.setSource(i)},_rgbToHsl:function(t,e,i){t/=255,e/=255,i/=255;var n,s,o,a=r.util.array.max([t,e,i]),h=r.util.array.min([t,e,i]);if(o=(a+h)/2,a===h)n=s=0;else{var c=a-h;switch(s=o>.5?c/(2-a-h):c/(a+h),a){case t:n=(e-i)/c+(e1?1:s,n){var o=n.split(/\s*;\s*/);""===o[o.length-1]&&o.pop();for(var a=o.length;a--;){var h=o[a].split(/\s*:\s*/),c=h[0].trim(),l=h[1].trim();"stop-color"===c?e=l:"stop-opacity"===c&&(r=l)}}return e||(e=t.getAttribute("stop-color")||"rgb(0,0,0)"),r||(r=t.getAttribute("stop-opacity")),e=new fabric.Color(e),i=e.getAlpha(),r=isNaN(parseFloat(r))?1:parseFloat(r),r*=i,{offset:s,color:e.toRgb(),opacity:r}}function e(t){return{x1:t.getAttribute("x1")||0,y1:t.getAttribute("y1")||0,x2:t.getAttribute("x2")||"100%",y2:t.getAttribute("y2")||0}}function i(t){return{x1:t.getAttribute("fx")||t.getAttribute("cx")||"50%",y1:t.getAttribute("fy")||t.getAttribute("cy")||"50%",r1:0,x2:t.getAttribute("cx")||"50%",y2:t.getAttribute("cy")||"50%",r2:t.getAttribute("r")||"50%"}}function r(t,e,i){var r,n=0,s=1,o="";for(var a in e)"Infinity"===e[a]?e[a]=1:"-Infinity"===e[a]&&(e[a]=0),r=parseFloat(e[a],10),s="string"==typeof e[a]&&/^\d+%$/.test(e[a])?.01:1,"x1"===a||"x2"===a||"r2"===a?(s*="objectBoundingBox"===i?t.width:1,n="objectBoundingBox"===i?t.left||0:0):"y1"!==a&&"y2"!==a||(s*="objectBoundingBox"===i?t.height:1,n="objectBoundingBox"===i?t.top||0:0),e[a]=r*s+n;if("ellipse"===t.type&&null!==e.r2&&"objectBoundingBox"===i&&t.rx!==t.ry){var h=t.ry/t.rx;o=" scale(1, "+h+")",e.y1&&(e.y1/=h),e.y2&&(e.y2/=h)}return o}fabric.Gradient=fabric.util.createClass({offsetX:0,offsetY:0,initialize:function(t){t||(t={});var e={};this.id=fabric.Object.__uid++,this.type=t.type||"linear",e={x1:t.coords.x1||0,y1:t.coords.y1||0,x2:t.coords.x2||0,y2:t.coords.y2||0},"radial"===this.type&&(e.r1=t.coords.r1||0,e.r2=t.coords.r2||0),this.coords=e,this.colorStops=t.colorStops.slice(),t.gradientTransform&&(this.gradientTransform=t.gradientTransform),this.offsetX=t.offsetX||this.offsetX,this.offsetY=t.offsetY||this.offsetY},addColorStop:function(t){for(var e in t){var i=new fabric.Color(t[e]);this.colorStops.push({offset:e,color:i.toRgb(),opacity:i.getAlpha()})}return this},toObject:function(){return{type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY,gradientTransform:this.gradientTransform?this.gradientTransform.concat():this.gradientTransform}},toSVG:function(t){var e,i,r=fabric.util.object.clone(this.coords);if(this.colorStops.sort(function(t,e){return t.offset-e.offset}),!t.group||"path-group"!==t.group.type)for(var n in r)"x1"===n||"x2"===n||"r2"===n?r[n]+=this.offsetX-t.width/2:"y1"!==n&&"y2"!==n||(r[n]+=this.offsetY-t.height/2);i='id="SVGID_'+this.id+'" gradientUnits="userSpaceOnUse"',this.gradientTransform&&(i+=' gradientTransform="matrix('+this.gradientTransform.join(" ")+')" '),"linear"===this.type?e=["\n']:"radial"===this.type&&(e=["\n']);for(var s=0;s\n');return e.push("linear"===this.type?"\n":"\n"),e.join("")},toLive:function(t,e){var i,r,n=fabric.util.object.clone(this.coords);if(this.type){if(e.group&&"path-group"===e.group.type)for(r in n)"x1"===r||"x2"===r?n[r]+=-this.offsetX+e.width/2:"y1"!==r&&"y2"!==r||(n[r]+=-this.offsetY+e.height/2);"linear"===this.type?i=t.createLinearGradient(n.x1,n.y1,n.x2,n.y2):"radial"===this.type&&(i=t.createRadialGradient(n.x1,n.y1,n.r1,n.x2,n.y2,n.r2));for(var s=0,o=this.colorStops.length;s\n\n\n'},toLive:function(t){var e="function"==typeof this.source?this.source():this.source;if(!e)return"";if("undefined"!=typeof e.src){if(!e.complete)return"";if(0===e.naturalWidth||0===e.naturalHeight)return""}return t.createPattern(e,this.repeat)}}),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.toFixed;return e.Shadow?void e.warn("fabric.Shadow is already defined."):(e.Shadow=e.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,initialize:function(t){"string"==typeof t&&(t=this._parseShadow(t));for(var i in t)this[i]=t[i];this.id=e.Object.__uid++},_parseShadow:function(t){var i=t.trim(),r=e.Shadow.reOffsetsAndBlur.exec(i)||[],n=i.replace(e.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)";return{color:n.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(t){var r=40,n=40,s=e.Object.NUM_FRACTION_DIGITS,o=e.util.rotateVector({x:this.offsetX,y:this.offsetY},e.util.degreesToRadians(-t.angle)),a=20;return t.width&&t.height&&(r=100*i((Math.abs(o.x)+this.blur)/t.width,s)+a,n=100*i((Math.abs(o.y)+this.blur)/t.height,s)+a),t.flipX&&(o.x*=-1),t.flipY&&(o.y*=-1),'\n\t\n\t\n\t\n\t\n\t\n\t\t\n\t\t\n\t\n\n'},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY,affectStroke:this.affectStroke};var t={},i=e.Shadow.prototype;return["color","blur","offsetX","offsetY","affectStroke"].forEach(function(e){this[e]!==i[e]&&(t[e]=this[e])},this),t}}),void(e.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/))}("undefined"!=typeof exports?exports:this),function(){"use strict";if(fabric.StaticCanvas)return void fabric.warn("fabric.StaticCanvas is already defined.");var t=fabric.util.object.extend,e=fabric.util.getElementOffset,i=fabric.util.removeFromArray,r=fabric.util.toFixed,n=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass({initialize:function(t,e){e||(e={}),this._initStatic(t,e)},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!0,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!1,imageSmoothingEnabled:!0,viewportTransform:[1,0,0,1,0,0],backgroundVpt:!0,overlayVpt:!0,onBeforeScaleRotate:function(){},enableRetinaScaling:!0,_initStatic:function(t,e){var i=fabric.StaticCanvas.prototype.renderAll.bind(this);this._objects=[],this._createLowerCanvas(t),this._initOptions(e),this._setImageSmoothing(),this.interactive||this._initRetinaScaling(),e.overlayImage&&this.setOverlayImage(e.overlayImage,i),e.backgroundImage&&this.setBackgroundImage(e.backgroundImage,i),e.backgroundColor&&this.setBackgroundColor(e.backgroundColor,i),e.overlayColor&&this.setOverlayColor(e.overlayColor,i),this.calcOffset()},_isRetinaScaling:function(){return 1!==fabric.devicePixelRatio&&this.enableRetinaScaling},getRetinaScaling:function(){return this._isRetinaScaling()?fabric.devicePixelRatio:1},_initRetinaScaling:function(){this._isRetinaScaling()&&(this.lowerCanvasEl.setAttribute("width",this.width*fabric.devicePixelRatio),this.lowerCanvasEl.setAttribute("height",this.height*fabric.devicePixelRatio),this.contextContainer.scale(fabric.devicePixelRatio,fabric.devicePixelRatio))},calcOffset:function(){return this._offset=e(this.lowerCanvasEl),this},setOverlayImage:function(t,e,i){return this.__setBgOverlayImage("overlayImage",t,e,i)},setBackgroundImage:function(t,e,i){return this.__setBgOverlayImage("backgroundImage",t,e,i)},setOverlayColor:function(t,e){return this.__setBgOverlayColor("overlayColor",t,e)},setBackgroundColor:function(t,e){return this.__setBgOverlayColor("backgroundColor",t,e)},_setImageSmoothing:function(){var t=this.getContext();t.imageSmoothingEnabled=t.imageSmoothingEnabled||t.webkitImageSmoothingEnabled||t.mozImageSmoothingEnabled||t.msImageSmoothingEnabled||t.oImageSmoothingEnabled,t.imageSmoothingEnabled=this.imageSmoothingEnabled},__setBgOverlayImage:function(t,e,i,r){return"string"==typeof e?fabric.util.loadImage(e,function(e){e&&(this[t]=new fabric.Image(e,r)),i&&i(e)},this,r&&r.crossOrigin):(r&&e.setOptions(r),this[t]=e,i&&i(e)),this},__setBgOverlayColor:function(t,e,i){if(e&&e.source){var r=this;fabric.util.loadImage(e.source,function(n){r[t]=new fabric.Pattern({source:n,repeat:e.repeat,offsetX:e.offsetX,offsetY:e.offsetY}),i&&i()})}else this[t]=e,i&&i();return this},_createCanvasElement:function(){var t=fabric.document.createElement("canvas");if(t.style||(t.style={}),!t)throw n;return this._initCanvasElement(t),t},_initCanvasElement:function(t){if(fabric.util.createCanvasElement(t),"undefined"==typeof t.getContext)throw n},_initOptions:function(t){for(var e in t)this[e]=t[e];this.width=this.width||parseInt(this.lowerCanvasEl.width,10)||0,this.height=this.height||parseInt(this.lowerCanvasEl.height,10)||0,this.lowerCanvasEl.style&&(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(t){this.lowerCanvasEl=fabric.util.getById(t)||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(t,e){return this.setDimensions({width:t},e)},setHeight:function(t,e){return this.setDimensions({height:t},e)},setDimensions:function(t,e){var i;e=e||{};for(var r in t)i=t[r],e.cssOnly||(this._setBackstoreDimension(r,t[r]),i+="px"),e.backstoreOnly||this._setCssDimension(r,i);return this._initRetinaScaling(),this._setImageSmoothing(),this.calcOffset(),e.cssOnly||this.renderAll(),this},_setBackstoreDimension:function(t,e){return this.lowerCanvasEl[t]=e,this.upperCanvasEl&&(this.upperCanvasEl[t]=e),this.cacheCanvasEl&&(this.cacheCanvasEl[t]=e),this[t]=e,this},_setCssDimension:function(t,e){return this.lowerCanvasEl.style[t]=e,this.upperCanvasEl&&(this.upperCanvasEl.style[t]=e),this.wrapperEl&&(this.wrapperEl.style[t]=e),this},getZoom:function(){return Math.sqrt(this.viewportTransform[0]*this.viewportTransform[3])},setViewportTransform:function(t){var e=this.getActiveGroup();this.viewportTransform=t;for(var i=0,r=this._objects.length;i"),i.join("")},_setSVGPreamble:function(t,e){e.suppressPreamble||t.push('\n','\n')},_setSVGHeader:function(t,e){var i,n=e.width||this.width,s=e.height||this.height,o='viewBox="0 0 '+this.width+" "+this.height+'" ',a=fabric.Object.NUM_FRACTION_DIGITS;e.viewBox?o='viewBox="'+e.viewBox.x+" "+e.viewBox.y+" "+e.viewBox.width+" "+e.viewBox.height+'" ':this.svgViewportTransformation&&(i=this.viewportTransform,o='viewBox="'+r(-i[4]/i[0],a)+" "+r(-i[5]/i[3],a)+" "+r(this.width/i[0],a)+" "+r(this.height/i[3],a)+'" '),t.push("\n',"Created with Fabric.js ",fabric.version,"\n","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),"\n")},_setSVGObjects:function(t,e){for(var i,r,n=0,s=this.getObjects(),o=s.length;n\n"):this[e]&&"overlayColor"===e&&t.push('\n")},sendToBack:function(t){if(!t)return this;var e,r,n,s=this.getActiveGroup?this.getActiveGroup():null;if(t===s)for(n=s._objects,e=n.length;e--;)r=n[e],i(this._objects,r),this._objects.unshift(r);else i(this._objects,t),this._objects.unshift(t);return this.renderAll&&this.renderAll()},bringToFront:function(t){if(!t)return this;var e,r,n,s=this.getActiveGroup?this.getActiveGroup():null;if(t===s)for(n=s._objects,e=0;e=0;--n){var s=t.intersectsWithObject(this._objects[n])||t.isContainedWithinObject(this._objects[n])||this._objects[n].isContainedWithinObject(t);if(s){r=n;break}}}else r=e-1;return r},bringForward:function(t,e){if(!t)return this;var r,n,s,o,a,h=this.getActiveGroup?this.getActiveGroup():null;if(t===h)for(a=h._objects,r=a.length;r--;)n=a[r],s=this._objects.indexOf(n),s!==this._objects.length-1&&(o=s+1,i(this._objects,n),this._objects.splice(o,0,n));else s=this._objects.indexOf(t),s!==this._objects.length-1&&(o=this._findNewUpperIndex(t,s,e),i(this._objects,t),this._objects.splice(o,0,t));return this.renderAll&&this.renderAll(),this},_findNewUpperIndex:function(t,e,i){var r;if(i){r=e;for(var n=e+1;n"}}),t(fabric.StaticCanvas.prototype,fabric.Observable),t(fabric.StaticCanvas.prototype,fabric.Collection),t(fabric.StaticCanvas.prototype,fabric.DataURLExporter),t(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(t){var e=fabric.util.createCanvasElement();if(!e||!e.getContext)return null;var i=e.getContext("2d");if(!i)return null;switch(t){case"getImageData":return"undefined"!=typeof i.getImageData;case"setLineDash":return"undefined"!=typeof i.setLineDash;case"toDataURL":return"undefined"!=typeof e.toDataURL;case"toDataURLWithQuality":try{return e.toDataURL("image/jpeg",0),!0}catch(t){}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",strokeDashArray:null,setShadow:function(t){return this.shadow=new fabric.Shadow(t),this},_setBrushStyles:function(){var t=this.canvas.contextTop;t.strokeStyle=this.color,t.lineWidth=this.width,t.lineCap=this.strokeLineCap,t.lineJoin=this.strokeLineJoin,this.strokeDashArray&&fabric.StaticCanvas.supports("setLineDash")&&t.setLineDash(this.strokeDashArray)},_setShadow:function(){if(this.shadow){var t=this.canvas.contextTop;t.shadowColor=this.shadow.color,t.shadowBlur=this.shadow.blur,t.shadowOffsetX=this.shadow.offsetX,t.shadowOffsetY=this.shadow.offsetY}},_resetShadow:function(){var t=this.canvas.contextTop;t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0}}),function(){fabric.PencilBrush=fabric.util.createClass(fabric.BaseBrush,{initialize:function(t){this.canvas=t,this._points=[]},onMouseDown:function(t){this._prepareForDrawing(t),this._captureDrawingPath(t),this._render()},onMouseMove:function(t){this._captureDrawingPath(t),this.canvas.clearContext(this.canvas.contextTop),this._render()},onMouseUp:function(){this._finalizeAndAddPath()},_prepareForDrawing:function(t){var e=new fabric.Point(t.x,t.y);this._reset(),this._addPoint(e),this.canvas.contextTop.moveTo(e.x,e.y)},_addPoint:function(t){this._points.push(t)},_reset:function(){this._points.length=0,this._setBrushStyles(),this._setShadow()},_captureDrawingPath:function(t){var e=new fabric.Point(t.x,t.y);this._addPoint(e)},_render:function(){var t=this.canvas.contextTop,e=this.canvas.viewportTransform,i=this._points[0],r=this._points[1];t.save(),t.transform(e[0],e[1],e[2],e[3],e[4],e[5]),t.beginPath(),2===this._points.length&&i.x===r.x&&i.y===r.y&&(i.x-=.5,r.x+=.5),t.moveTo(i.x,i.y);for(var n=1,s=this._points.length;n0?1:-1,"y"===i&&(s=e.target.skewY,o="top",a="bottom",r="originY"),n[-1]=o,n[1]=a,e.target.flipX&&(c*=-1),e.target.flipY&&(c*=-1),0===s?(e.skewSign=-h*t*c,e[r]=n[-t]):(s=s>0?1:-1,e.skewSign=s,e[r]=n[s*h*c])},_skewObject:function(t,e,i){var r=this._currentTransform,n=r.target,s=!1,o=n.get("lockSkewingX"),a=n.get("lockSkewingY");if(o&&"x"===i||a&&"y"===i)return!1;var h,c,l=n.getCenterPoint(),u=n.toLocalPoint(new fabric.Point(t,e),"center","center")[i],f=n.toLocalPoint(new fabric.Point(r.lastX,r.lastY),"center","center")[i],d=n._getTransformedDimensions();return this._changeSkewTransformOrigin(u-f,r,i),h=n.toLocalPoint(new fabric.Point(t,e),r.originX,r.originY)[i],c=n.translateToOriginPoint(l,r.originX,r.originY),s=this._setObjectSkew(h,r,i,d),r.lastX=t,r.lastY=e,n.setPositionByOrigin(c,r.originX,r.originY),s},_setObjectSkew:function(t,e,i,r){var n,s,o,a,h,c,l,u,f,d=e.target,g=!1,p=e.skewSign;return"x"===i?(a="y",h="Y",c="X",u=0,f=d.skewY):(a="x",h="X",c="Y",u=d.skewX,f=0),o=d._getTransformedDimensions(u,f),l=2*Math.abs(t)-o[i],l<=2?n=0:(n=p*Math.atan(l/d["scale"+c]/(o[a]/d["scale"+h])),n=fabric.util.radiansToDegrees(n)),g=d["skew"+c]!==n,d.set("skew"+c,n),0!==d["skew"+h]&&(s=d._getTransformedDimensions(),n=r[a]/s[a]*d["scale"+h],d.set("scale"+h,n)),g},_scaleObject:function(t,e,i){var r=this._currentTransform,n=r.target,s=n.get("lockScalingX"),o=n.get("lockScalingY"),a=n.get("lockScalingFlip");if(s&&o)return!1;var h=n.translateToOriginPoint(n.getCenterPoint(),r.originX,r.originY),c=n.toLocalPoint(new fabric.Point(t,e),r.originX,r.originY),l=n._getTransformedDimensions(),u=!1;return this._setLocalMouse(c,r),u=this._setObjectScale(c,r,s,o,i,a,l),n.setPositionByOrigin(h,r.originX,r.originY),u},_setObjectScale:function(t,e,i,r,n,s,o){var a,h,c,l,u=e.target,f=!1,d=!1,g=!1;return c=t.x*u.scaleX/o.x,l=t.y*u.scaleY/o.y,a=u.scaleX!==c,h=u.scaleY!==l,s&&c<=0&&ci.padding?t.x<0?t.x+=i.padding:t.x-=i.padding:t.x=0,n(t.y)>i.padding?t.y<0?t.y+=i.padding:t.y-=i.padding:t.y=0},_rotateObject:function(t,e){var n=this._currentTransform;if(n.target.get("lockRotation"))return!1;var s=r(n.ey-n.top,n.ex-n.left),o=r(e-n.top,t-n.left),a=i(o-s+n.theta);return a<0&&(a=360+a),n.target.angle=a%360,!0},setCursor:function(t){this.upperCanvasEl.style.cursor=t},_resetObjectTransform:function(t){t.scaleX=1,t.scaleY=1,t.skewX=0,t.skewY=0,t.setAngle(0)},_drawSelection:function(t){var e=this._groupSelector,i=e.left,r=e.top,o=n(i),a=n(r);if(t.fillStyle=this.selectionColor,t.fillRect(e.ex-(i>0?0:-i),e.ey-(r>0?0:-r),o,a),t.lineWidth=this.selectionLineWidth,t.strokeStyle=this.selectionBorderColor,this.selectionDashArray.length>1){var h=e.ex+s-(i>0?0:o),c=e.ey+s-(r>0?0:a);t.beginPath(),fabric.util.drawDashedLine(t,h,c,h+o,c,this.selectionDashArray),fabric.util.drawDashedLine(t,h,c+a-1,h+o,c+a-1,this.selectionDashArray),fabric.util.drawDashedLine(t,h,c,h,c+a,this.selectionDashArray),fabric.util.drawDashedLine(t,h+o-1,c,h+o-1,c+a,this.selectionDashArray),t.closePath(),t.stroke()}else t.strokeRect(e.ex+s-(i>0?0:o),e.ey+s-(r>0?0:a),o,a)},findTarget:function(t,e){if(!this.skipTargetFind){var i=!0,r=this.getPointer(t,i),n=this.getActiveGroup(),s=this.getActiveObject();if(n&&!e&&this._checkTarget(r,n))return n;if(s&&this._checkTarget(r,s))return s;this.targets=[];var o=this._searchPossibleTargets(this._objects,r);return this._fireOverOutEvents(o,t),o}},_fireOverOutEvents:function(t,e){t?this._hoveredTarget!==t&&(this._hoveredTarget&&(this.fire("mouse:out",{target:this._hoveredTarget,e:e}),this._hoveredTarget.fire("mouseout")),this.fire("mouse:over",{target:t,e:e}),t.fire("mouseover"),this._hoveredTarget=t):this._hoveredTarget&&(this.fire("mouse:out",{target:this._hoveredTarget,e:e}),this._hoveredTarget.fire("mouseout"),this._hoveredTarget=null)},_checkTarget:function(t,e){if(e&&e.visible&&e.evented&&this.containsPoint(null,e,t)){if(!this.perPixelTargetFind&&!e.perPixelTargetFind||e.isEditing)return!0;var i=this.isTargetTransparent(e,t.x,t.y);if(!i)return!0}},_searchPossibleTargets:function(t,e){for(var i,r,n,s=t.length;s--;)if(this._checkTarget(e,t[s])){i=t[s],"group"===i.type&&i.subTargetCheck&&(r=this._normalizePointer(i,e),n=this._searchPossibleTargets(i._objects,r),n&&this.targets.push(n));break}return i},restorePointerVpt:function(t){return fabric.util.transformPoint(t,fabric.util.invertTransform(this.viewportTransform))},getPointer:function(e,i,r){r||(r=this.upperCanvasEl);var n,s=t(e),o=r.getBoundingClientRect(),a=o.width||0,h=o.height||0;return a&&h||("top"in o&&"bottom"in o&&(h=Math.abs(o.top-o.bottom)),"right"in o&&"left"in o&&(a=Math.abs(o.right-o.left))),this.calcOffset(),s.x=s.x-this._offset.left,s.y=s.y-this._offset.top,i||(s=this.restorePointerVpt(s)),n=0===a||0===h?{width:1,height:1}:{width:r.width/a,height:r.height/h},{x:s.x*n.width,y:s.y*n.height}},_createUpperCanvas:function(){var t=this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/,"");this.upperCanvasEl=this._createCanvasElement(),fabric.util.addClass(this.upperCanvasEl,"upper-canvas "+t),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(t){var e=this.getWidth()||t.width,i=this.getHeight()||t.height;fabric.util.setStyle(t,{position:"absolute",width:e+"px",height:i+"px",left:0,top:0}),t.width=e,t.height=i,fabric.util.makeElementUnselectable(t)},_copyCanvasStyle:function(t,e){e.style.cssText=t.style.cssText},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},_setActiveObject:function(t){this._activeObject&&this._activeObject.set("active",!1),this._activeObject=t,t.set("active",!0)},setActiveObject:function(t,e){return this._setActiveObject(t),this.renderAll(),this.fire("object:selected",{target:t,e:e}),t.fire("selected",{e:e}),this},getActiveObject:function(){return this._activeObject},_onObjectRemoved:function(t){this.getActiveObject()===t&&(this.fire("before:selection:cleared",{target:t}),this._discardActiveObject(),this.fire("selection:cleared",{target:t}),t.fire("deselected")),this.callSuper("_onObjectRemoved",t)},_discardActiveObject:function(){this._activeObject&&this._activeObject.set("active",!1),this._activeObject=null},discardActiveObject:function(t){var e=this._activeObject;return this.fire("before:selection:cleared",{target:e,e:t}),this._discardActiveObject(),this.fire("selection:cleared",{e:t}),e&&e.fire("deselected",{e:t}),this},_setActiveGroup:function(t){this._activeGroup=t,t&&t.set("active",!0)},setActiveGroup:function(t,e){return this._setActiveGroup(t),t&&(this.fire("object:selected",{target:t,e:e}),t.fire("selected",{e:e})),this},getActiveGroup:function(){return this._activeGroup},_discardActiveGroup:function(){var t=this.getActiveGroup();t&&t.destroy(),this.setActiveGroup(null)},discardActiveGroup:function(t){var e=this.getActiveGroup();return this.fire("before:selection:cleared",{e:t,target:e}),this._discardActiveGroup(),this.fire("selection:cleared",{e:t}),this},deactivateAll:function(){for(var t=this.getObjects(),e=0,i=t.length;e1)){var r=this._groupSelector;r?(i=this.getPointer(t,!0),r.left=i.x-r.ex,r.top=i.y-r.ey,this.renderTop()):this._currentTransform?this._transformObject(t):(e=this.findTarget(t),this._setCursorFromEvent(t,e)),this._handleEvent(t,"move",e?e:null)}},__onMouseWheel:function(t){this.fire("mouse:wheel",{e:t})},_transformObject:function(t){var e=this.getPointer(t),i=this._currentTransform;i.reset=!1,i.target.isMoving=!0,this._beforeScaleTransform(t,i),this._performTransformAction(t,i,e),i.actionPerformed&&this.renderAll()},_performTransformAction:function(t,e,i){var r=i.x,n=i.y,s=e.target,o=e.action,a=!1;"rotate"===o?(a=this._rotateObject(r,n))&&this._fire("rotating",s,t):"scale"===o?(a=this._onScale(t,e,r,n))&&this._fire("scaling",s,t):"scaleX"===o?(a=this._scaleObject(r,n,"x"))&&this._fire("scaling",s,t):"scaleY"===o?(a=this._scaleObject(r,n,"y"))&&this._fire("scaling",s,t):"skewX"===o?(a=this._skewObject(r,n,"x"))&&this._fire("skewing",s,t):"skewY"===o?(a=this._skewObject(r,n,"y"))&&this._fire("skewing",s,t):(a=this._translateObject(r,n),a&&(this._fire("moving",s,t),this.setCursor(s.moveCursor||this.moveCursor))),e.actionPerformed=a},_fire:function(t,e,i){this.fire("object:"+t,{target:e,e:i}),e.fire(t,{e:i})},_beforeScaleTransform:function(t,e){if("scale"===e.action||"scaleX"===e.action||"scaleY"===e.action){var i=this._shouldCenterTransform(e.target);(i&&("center"!==e.originX||"center"!==e.originY)||!i&&"center"===e.originX&&"center"===e.originY)&&(this._resetCurrentTransform(),e.reset=!0)}},_onScale:function(t,e,i,r){return!t[this.uniScaleKey]&&!this.uniScaleTransform||e.target.get("lockUniScaling")?(e.reset||"scale"!==e.currentAction||this._resetCurrentTransform(),e.currentAction="scaleEqually",this._scaleObject(i,r,"equally")):(e.currentAction="scale",this._scaleObject(i,r))},_setCursorFromEvent:function(t,e){if(!e)return this.setCursor(this.defaultCursor),!1;var i=e.hoverCursor||this.hoverCursor;if(e.selectable){var r=this.getActiveGroup(),n=e._findTargetCorner&&(!r||!r.contains(e))&&e._findTargetCorner(this.getPointer(t,!0));n?this._setCornerCursor(n,e,t):this.setCursor(i)}else this.setCursor(i);return!0},_setCornerCursor:function(e,i,r){if(e in t)this.setCursor(this._getRotatedCornerCursor(e,i,r));else{if("mtr"!==e||!i.hasRotatingPoint)return this.setCursor(this.defaultCursor),!1;this.setCursor(this.rotationCursor)}},_getRotatedCornerCursor:function(e,i,r){var n=Math.round(i.getAngle()%360/45);return n<0&&(n+=8),n+=t[e],r[this.altActionKey]&&t[e]%2===0&&(n+=2),n%=8,this.cursorMap[n]}})}(),function(){var t=Math.min,e=Math.max;fabric.util.object.extend(fabric.Canvas.prototype,{_shouldGroup:function(t,e){var i=this.getActiveObject();return t[this.selectionKey]&&e&&e.selectable&&(this.getActiveGroup()||i&&i!==e)&&this.selection},_handleGrouping:function(t,e){var i=this.getActiveGroup();(e!==i||(e=this.findTarget(t,!0)))&&(i?this._updateActiveGroup(e,t):this._createActiveGroup(e,t),this._activeGroup&&this._activeGroup.saveCoords())},_updateActiveGroup:function(t,e){var i=this.getActiveGroup();if(i.contains(t)){if(i.removeWithUpdate(t),t.set("active",!1),1===i.size())return this.discardActiveGroup(e),void this.setActiveObject(i.item(0))}else i.addWithUpdate(t);this.fire("selection:created",{target:i,e:e}),i.set("active",!0)},_createActiveGroup:function(t,e){if(this._activeObject&&t!==this._activeObject){var i=this._createGroup(t);i.addWithUpdate(),this.setActiveGroup(i),this._activeObject=null,this.fire("selection:created",{target:i,e:e})}t.set("active",!0)},_createGroup:function(t){var e=this.getObjects(),i=e.indexOf(this._activeObject)1&&(e=new fabric.Group(e.reverse(),{canvas:this}),e.addWithUpdate(),this.setActiveGroup(e,t),e.saveCoords(),this.fire("selection:created",{target:e}),this.renderAll())},_collectObjects:function(){for(var i,r=[],n=this._groupSelector.ex,s=this._groupSelector.ey,o=n+this._groupSelector.left,a=s+this._groupSelector.top,h=new fabric.Point(t(n,o),t(s,a)),c=new fabric.Point(e(n,o),e(s,a)),l=n===o&&s===a,u=this._objects.length;u--&&(i=this._objects[u],!(i&&i.selectable&&i.visible&&(i.intersectsWithRect(h,c)||i.isContainedWithinRect(h,c)||i.containsPoint(h)||i.containsPoint(c))&&(i.set("active",!0),r.push(i),l))););return r},_maybeGroupObjects:function(t){this.selection&&this._groupSelector&&this._groupSelectedObjects(t);var e=this.getActiveGroup();e&&(e.setObjectsCoords().setCoords(),e.isMoving=!1,this.setCursor(this.defaultCursor)),this._groupSelector=null,this._currentTransform=null}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{toDataURL:function(t){t||(t={});var e=t.format||"png",i=t.quality||1,r=t.multiplier||1,n={left:t.left,top:t.top,width:t.width,height:t.height};return this._isRetinaScaling()&&(r*=fabric.devicePixelRatio),1!==r?this.__toDataURLWithMultiplier(e,i,n,r):this.__toDataURL(e,i,n)},__toDataURL:function(t,e,i){this.renderAll();var r=this.contextContainer.canvas,n=this.__getCroppedCanvas(r,i);"jpg"===t&&(t="jpeg");var s=fabric.StaticCanvas.supports("toDataURLWithQuality")?(n||r).toDataURL("image/"+t,e):(n||r).toDataURL("image/"+t);return n&&(n=null),s},__getCroppedCanvas:function(t,e){var i,r,n="left"in e||"top"in e||"width"in e||"height"in e;return n&&(i=fabric.util.createCanvasElement(),r=i.getContext("2d"),i.width=e.width||this.width,i.height=e.height||this.height,r.drawImage(t,-e.left||0,-e.top||0)),i},__toDataURLWithMultiplier:function(t,e,i,r){var n=this.getWidth(),s=this.getHeight(),o=n*r,a=s*r,h=this.getActiveObject(),c=this.getActiveGroup(),l=this.getZoom(),u=l*r/fabric.devicePixelRatio;r>1&&this.setDimensions({width:o,height:a}),this.setZoom(u),i.left&&(i.left*=r),i.top&&(i.top*=r),i.width?i.width*=r:r<1&&(i.width=o),i.height?i.height*=r:r<1&&(i.height=a),c?this._tempRemoveBordersControlsFromGroup(c):h&&this.deactivateAll&&this.deactivateAll();var f=this.__toDataURL(t,e,i);return c?this._restoreBordersControlsOnGroup(c):h&&this.setActiveObject&&this.setActiveObject(h),this.setZoom(l),this.setDimensions({width:n,height:s}),f},toDataURLWithMultiplier:function(t,e,i){return this.toDataURL({format:t,multiplier:e,quality:i})},_tempRemoveBordersControlsFromGroup:function(t){t.origHasControls=t.hasControls,t.origBorderColor=t.borderColor,t.hasControls=!0,t.borderColor="rgba(0,0,0,0)",t.forEachObject(function(t){t.origBorderColor=t.borderColor,t.borderColor="rgba(0,0,0,0)"})},_restoreBordersControlsOnGroup:function(t){t.hideControls=t.origHideControls,t.borderColor=t.origBorderColor,t.forEachObject(function(t){t.borderColor=t.origBorderColor,delete t.origBorderColor})}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{loadFromDatalessJSON:function(t,e,i){return this.loadFromJSON(t,e,i)},loadFromJSON:function(t,e,i){if(t){var r="string"==typeof t?JSON.parse(t):fabric.util.object.clone(t);this.clear();var n=this;return this._enlivenObjects(r.objects,function(){n._setBgOverlay(r,function(){delete r.objects,delete r.backgroundImage,delete r.overlayImage,delete r.background,delete r.overlay;for(var t in r)n[t]=r[t];e&&e()})},i),this}},_setBgOverlay:function(t,e){var i=this,r={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(!(t.backgroundImage||t.overlayImage||t.background||t.overlay))return void(e&&e());var n=function(){r.backgroundImage&&r.overlayImage&&r.backgroundColor&&r.overlayColor&&(i.renderAll(),e&&e())};this.__setBgOverlay("backgroundImage",t.backgroundImage,r,n),this.__setBgOverlay("overlayImage",t.overlayImage,r,n),this.__setBgOverlay("backgroundColor",t.background,r,n),this.__setBgOverlay("overlayColor",t.overlay,r,n),n()},__setBgOverlay:function(t,e,i,r){var n=this;return e?void("backgroundImage"===t||"overlayImage"===t?fabric.Image.fromObject(e,function(e){n[t]=e,i[t]=!0,r&&r()}):this["set"+fabric.util.string.capitalize(t,!0)](e,function(){i[t]=!0,r&&r()})):void(i[t]=!0)},_enlivenObjects:function(t,e,i){var r=this;if(!t||0===t.length)return void(e&&e());var n=this.renderOnAddRemove;this.renderOnAddRemove=!1,fabric.util.enlivenObjects(t,function(t){t.forEach(function(t,e){r.insertAt(t,e)}),r.renderOnAddRemove=n,e&&e()},null,i)},_toDataURL:function(t,e){this.clone(function(i){e(i.toDataURL(t))})},_toDataURLWithMultiplier:function(t,e,i){this.clone(function(r){i(r.toDataURLWithMultiplier(t,e))})},clone:function(t,e){var i=JSON.stringify(this.toJSON(e));this.cloneWithoutData(function(e){e.loadFromJSON(i,function(){t&&t(e)})})},cloneWithoutData:function(t){var e=fabric.document.createElement("canvas");e.width=this.getWidth(),e.height=this.getHeight();var i=new fabric.Canvas(e);i.clipTo=this.clipTo,this.backgroundImage?(i.setBackgroundImage(this.backgroundImage.src,function(){i.renderAll(),t&&t(i)}),i.backgroundImageOpacity=this.backgroundImageOpacity,i.backgroundImageStretch=this.backgroundImageStretch):t&&t(i)}}),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.util.toFixed,n=e.util.string.capitalize,s=e.util.degreesToRadians,o=e.StaticCanvas.supports("setLineDash");e.Object||(e.Object=e.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,skewX:0,skewY:0,cornerSize:13,transparentCorners:!0,hoverCursor:null,moveCursor:null,padding:0,borderColor:"rgba(102,153,255,0.75)",borderDashArray:null,cornerColor:"rgba(102,153,255,0.5)",cornerStrokeColor:null,cornerStyle:"rect",cornerDashArray:null,centeredScaling:!1,centeredRotation:!0,fill:"rgb(0,0,0)",fillRule:"nonzero",globalCompositeOperation:"source-over",backgroundColor:"",selectionBackgroundColor:"",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,lockSkewingX:!1,lockSkewingY:!1,lockScalingFlip:!1,excludeFromExport:!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 alignX alignY meetOrSlice skewX skewY".split(" "),initialize:function(t){t&&this.setOptions(t)},_initGradient:function(t){!t.fill||!t.fill.colorStops||t.fill instanceof e.Gradient||this.set("fill",new e.Gradient(t.fill)),!t.stroke||!t.stroke.colorStops||t.stroke instanceof e.Gradient||this.set("stroke",new e.Gradient(t.stroke))},_initPattern:function(t){!t.fill||!t.fill.source||t.fill instanceof e.Pattern||this.set("fill",new e.Pattern(t.fill)),!t.stroke||!t.stroke.source||t.stroke instanceof e.Pattern||this.set("stroke",new e.Pattern(t.stroke))},_initClipping:function(t){if(t.clipTo&&"string"==typeof t.clipTo){var i=e.util.getFunctionBody(t.clipTo);"undefined"!=typeof i&&(this.clipTo=new Function("ctx",i))}},setOptions:function(t){for(var e in t)this.set(e,t[e]);this._initGradient(t),this._initPattern(t),this._initClipping(t)},transform:function(t,e){this.group&&!this.group._transformDone&&this.group===this.canvas._activeGroup&&this.group.transform(t);var i=e?this._getLeftTopCoords():this.getCenterPoint();t.translate(i.x,i.y),t.rotate(s(this.angle)),t.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1)),t.transform(1,0,Math.tan(s(this.skewX)),1,0,0),t.transform(1,Math.tan(s(this.skewY)),0,1,0,0)},toObject:function(t){var i=e.Object.NUM_FRACTION_DIGITS,n={type:this.type,originX:this.originX,originY:this.originY,left:r(this.left,i),top:r(this.top,i),width:r(this.width,i),height:r(this.height,i),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,i),strokeDashArray:this.strokeDashArray?this.strokeDashArray.concat():this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeLineJoin:this.strokeLineJoin,strokeMiterLimit:r(this.strokeMiterLimit,i),scaleX:r(this.scaleX,i),scaleY:r(this.scaleY,i),angle:r(this.getAngle(),i),flipX:this.flipX,flipY:this.flipY,opacity:r(this.opacity,i),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,transformMatrix:this.transformMatrix?this.transformMatrix.concat():this.transformMatrix,skewX:r(this.skewX,i),skewY:r(this.skewY,i)};return this.includeDefaultValues||(n=this._removeDefaultValues(n)),e.util.populateWithProperties(this,n,t),n},toDatalessObject:function(t){return this.toObject(t)},_removeDefaultValues:function(t){var i=e.util.getKlass(t.type).prototype,r=i.stateProperties;return r.forEach(function(e){t[e]===i[e]&&delete t[e];var r="[object Array]"===Object.prototype.toString.call(t[e])&&"[object Array]"===Object.prototype.toString.call(i[e]);r&&0===t[e].length&&0===i[e].length&&delete t[e]}),t},toString:function(){return"#"},get:function(t){return this[t]},getObjectScaling:function(){var t=this.scaleX,e=this.scaleY;if(this.group){var i=this.group.getObjectScaling();t*=i.scaleX,e*=i.scaleY}return{scaleX:t,scaleY:e}},_setObject:function(t){for(var e in t)this._set(e,t[e])},set:function(t,e){return"object"==typeof t?this._setObject(t):"function"==typeof e&&"clipTo"!==t?this._set(t,e(this.get(t))):this._set(t,e),this},_set:function(t,i){var r="scaleX"===t||"scaleY"===t;return r&&(i=this._constrainScale(i)),"scaleX"===t&&i<0?(this.flipX=!this.flipX,i*=-1):"scaleY"===t&&i<0?(this.flipY=!this.flipY,i*=-1):"shadow"!==t||!i||i instanceof e.Shadow||(i=new e.Shadow(i)),this[t]=i,"width"!==t&&"height"!==t||(this.minScaleLimit=Math.min(.1,1/Math.max(this.width,this.height))),this},setOnGroup:function(){},toggle:function(t){var e=this.get(t);return"boolean"==typeof e&&this.set(t,!e),this},setSourcePath:function(t){return this.sourcePath=t,this},getViewportTransform:function(){return this.canvas&&this.canvas.viewportTransform?this.canvas.viewportTransform:[1,0,0,1,0,0]},render:function(t,i){0===this.width&&0===this.height||!this.visible||(t.save(),this._setupCompositeOperation(t),this.drawSelectionBackground(t),i||this.transform(t),this._setStrokeStyles(t),this._setFillStyles(t),this.transformMatrix&&t.transform.apply(t,this.transformMatrix),this._setOpacity(t),this._setShadow(t),this.clipTo&&e.util.clipContext(this,t),this._render(t,i),this.clipTo&&t.restore(),t.restore())},_setOpacity:function(t){this.group&&this.group._setOpacity(t),t.globalAlpha*=this.opacity},_setStrokeStyles:function(t){this.stroke&&(t.lineWidth=this.strokeWidth,t.lineCap=this.strokeLineCap,t.lineJoin=this.strokeLineJoin,t.miterLimit=this.strokeMiterLimit,t.strokeStyle=this.stroke.toLive?this.stroke.toLive(t,this):this.stroke)},_setFillStyles:function(t){this.fill&&(t.fillStyle=this.fill.toLive?this.fill.toLive(t,this):this.fill)},_setLineDash:function(t,e,i){e&&(1&e.length&&e.push.apply(e,e),o?t.setLineDash(e):i&&i(t))},_renderControls:function(t,i){if(!(!this.active||i||this.group&&this.group!==this.canvas.getActiveGroup())){var r,n=this.getViewportTransform(),o=this.calcTransformMatrix();o=e.util.multiplyTransformMatrices(n,o),r=e.util.qrDecompose(o),t.save(),t.translate(r.translateX,r.translateY),t.lineWidth=1*this.borderScaleFactor,t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,this.group&&this.group===this.canvas.getActiveGroup()?(t.rotate(s(r.angle)),this.drawBordersInGroup(t,r)):(t.rotate(s(this.angle)),this.drawBorders(t)),this.drawControls(t),t.restore()}},_setShadow:function(t){if(this.shadow){var i=this.canvas&&this.canvas.viewportTransform[0]||1,r=this.canvas&&this.canvas.viewportTransform[3]||1,n=this.getObjectScaling();this.canvas&&this.canvas._isRetinaScaling()&&(i*=e.devicePixelRatio,r*=e.devicePixelRatio),t.shadowColor=this.shadow.color,t.shadowBlur=this.shadow.blur*(i+r)*(n.scaleX+n.scaleY)/4,t.shadowOffsetX=this.shadow.offsetX*i*n.scaleX,t.shadowOffsetY=this.shadow.offsetY*r*n.scaleY}},_removeShadow:function(t){this.shadow&&(t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0)},_renderFill:function(t){if(this.fill){if(t.save(),this.fill.gradientTransform){var e=this.fill.gradientTransform;t.transform.apply(t,e)}this.fill.toLive&&t.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0),"evenodd"===this.fillRule?t.fill("evenodd"):t.fill(),t.restore()}},_renderStroke:function(t){if(this.stroke&&0!==this.strokeWidth){if(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(t),t.save(),this._setLineDash(t,this.strokeDashArray,this._renderDashedStroke),this.stroke.gradientTransform){var e=this.stroke.gradientTransform;t.transform.apply(t,e)}this.stroke.toLive&&t.translate(-this.width/2+this.stroke.offsetX||0,-this.height/2+this.stroke.offsetY||0),t.stroke(),t.restore()}},clone:function(t,i){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(i),t):new e.Object(this.toObject(i))},cloneAsImage:function(t,i){var r=this.toDataURL(i);return e.util.loadImage(r,function(i){t&&t(new e.Image(i))}),this},toDataURL:function(t){t||(t={});var i=e.util.createCanvasElement(),r=this.getBoundingRect();i.width=r.width,i.height=r.height,e.util.wrapElement(i,"div");var n=new e.StaticCanvas(i,{enableRetinaScaling:t.enableRetinaScaling});"jpg"===t.format&&(t.format="jpeg"),"jpeg"===t.format&&(n.backgroundColor="#fff");var s={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set("active",!1),this.setPositionByOrigin(new e.Point(n.getWidth()/2,n.getHeight()/2),"center","center");var o=this.canvas;n.add(this);var a=n.toDataURL(t);return this.set(s).setCoords(),this.canvas=o,n.dispose(),n=null,a},isType:function(t){return this.type===t},complexity:function(){return 0},toJSON:function(t){return this.toObject(t)},setGradient:function(t,i){i||(i={});var r={colorStops:[]};r.type=i.type||(i.r1||i.r2?"radial":"linear"),r.coords={x1:i.x1,y1:i.y1,x2:i.x2,y2:i.y2},(i.r1||i.r2)&&(r.coords.r1=i.r1,r.coords.r2=i.r2),i.gradientTransform&&(r.gradientTransform=i.gradientTransform);for(var n in i.colorStops){var s=new e.Color(i.colorStops[n]);r.colorStops.push({offset:n,color:s.toRgb(),opacity:s.getAlpha()})}return this.set(t,e.Gradient.forObject(this,r))},setPatternFill:function(t){return this.set("fill",new e.Pattern(t))},setShadow:function(t){return this.set("shadow",t?new e.Shadow(t):null)},setColor:function(t){return this.set("fill",t),this},setAngle:function(t){var e=("center"!==this.originX||"center"!==this.originY)&&this.centeredRotation;return e&&this._setOriginToCenter(),this.set("angle",t),e&&this._resetOrigin(),this},centerH:function(){return this.canvas&&this.canvas.centerObjectH(this),this},viewportCenterH:function(){return this.canvas&&this.canvas.viewportCenterObjectH(this),this},centerV:function(){return this.canvas&&this.canvas.centerObjectV(this),this},viewportCenterV:function(){return this.canvas&&this.canvas.viewportCenterObjectV(this),this},center:function(){return this.canvas&&this.canvas.centerObject(this),this},viewportCenter:function(){return this.canvas&&this.canvas.viewportCenterObject(this),this},remove:function(){return this.canvas&&this.canvas.remove(this),this},getLocalPointer:function(t,i){i=i||this.canvas.getPointer(t);var r=new e.Point(i.x,i.y),n=this._getLeftTopCoords();return this.angle&&(r=e.util.rotatePoint(r,n,e.util.degreesToRadians(-this.angle))),{x:r.x-n.x,y:r.y-n.y}},_setupCompositeOperation:function(t){this.globalCompositeOperation&&(t.globalCompositeOperation=this.globalCompositeOperation)}}),e.util.createAccessors(e.Object),e.Object.prototype.rotate=e.Object.prototype.setAngle,i(e.Object.prototype,e.Observable),e.Object.NUM_FRACTION_DIGITS=2,e.Object.__uid=0)}("undefined"!=typeof exports?exports:this),function(){var t=fabric.util.degreesToRadians,e={left:-.5,center:0,right:.5},i={top:-.5,center:0,bottom:.5};fabric.util.object.extend(fabric.Object.prototype,{translateToGivenOrigin:function(t,r,n,s,o){var a,h,c,l=t.x,u=t.y;return"string"==typeof r?r=e[r]:r-=.5,"string"==typeof s?s=e[s]:s-=.5,a=s-r,"string"==typeof n?n=i[n]:n-=.5,"string"==typeof o?o=i[o]:o-=.5,h=o-n,(a||h)&&(c=this._getTransformedDimensions(),l=t.x+a*c.x,u=t.y+h*c.y),new fabric.Point(l,u)},translateToCenterPoint:function(e,i,r){var n=this.translateToGivenOrigin(e,i,r,"center","center");return this.angle?fabric.util.rotatePoint(n,e,t(this.angle)):n},translateToOriginPoint:function(e,i,r){var n=this.translateToGivenOrigin(e,"center","center",i,r);return this.angle?fabric.util.rotatePoint(n,e,t(this.angle)):n},getCenterPoint:function(){var t=new fabric.Point(this.left,this.top);return this.translateToCenterPoint(t,this.originX,this.originY)},getPointByOrigin:function(t,e){var i=this.getCenterPoint();return this.translateToOriginPoint(i,t,e)},toLocalPoint:function(e,i,r){var n,s,o=this.getCenterPoint();return n="undefined"!=typeof i&&"undefined"!=typeof r?this.translateToGivenOrigin(o,"center","center",i,r):new fabric.Point(this.left,this.top),s=new fabric.Point(e.x,e.y),this.angle&&(s=fabric.util.rotatePoint(s,o,-t(this.angle))),s.subtractEquals(n)},setPositionByOrigin:function(t,e,i){var r=this.translateToCenterPoint(t,e,i),n=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",n.x),this.set("top",n.y)},adjustPosition:function(i){var r,n,s=t(this.angle),o=this.getWidth(),a=Math.cos(s)*o,h=Math.sin(s)*o;r="string"==typeof this.originX?e[this.originX]:this.originX-.5,n="string"==typeof i?e[i]:i-.5,this.left+=a*(n-r),this.top+=h*(n-r),this.setCoords(),this.originX=i},_setOriginToCenter:function(){this._originalOriginX=this.originX,this._originalOriginY=this.originY;var t=this.getCenterPoint();this.originX="center",this.originY="center",this.left=t.x,this.top=t.y},_resetOrigin:function(){var t=this.translateToOriginPoint(this.getCenterPoint(),this._originalOriginX,this._originalOriginY);this.originX=this._originalOriginX,this.originY=this._originalOriginY,this.left=t.x,this.top=t.y,this._originalOriginX=null,this._originalOriginY=null},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","top")}})}(),function(){function t(t){return[new fabric.Point(t.tl.x,t.tl.y),new fabric.Point(t.tr.x,t.tr.y),new fabric.Point(t.br.x,t.br.y),new fabric.Point(t.bl.x,t.bl.y)]}var e=fabric.util.degreesToRadians,i=fabric.util.multiplyTransformMatrices;fabric.util.object.extend(fabric.Object.prototype,{oCoords:null,intersectsWithRect:function(e,i){var r=t(this.oCoords),n=fabric.Intersection.intersectPolygonRectangle(r,e,i);return"Intersection"===n.status},intersectsWithObject:function(e){var i=fabric.Intersection.intersectPolygonPolygon(t(this.oCoords),t(e.oCoords));return"Intersection"===i.status},isContainedWithinObject:function(t){var e=t.getBoundingRect(),i=new fabric.Point(e.left,e.top),r=new fabric.Point(e.left+e.width,e.top+e.height);return this.isContainedWithinRect(i,r)},isContainedWithinRect:function(t,e){var i=this.getBoundingRect();return i.left>=t.x&&i.left+i.width<=e.x&&i.top>=t.y&&i.top+i.height<=e.y},containsPoint:function(t){this.oCoords||this.setCoords();var e=this._getImageLines(this.oCoords),i=this._findCrossPoints(t,e);return 0!==i&&i%2===1},_getImageLines:function(t){return{topline:{o:t.tl,d:t.tr},rightline:{o:t.tr,d:t.br},bottomline:{o:t.br,d:t.bl},leftline:{o:t.bl,d:t.tl}}},_findCrossPoints:function(t,e){var i,r,n,s,o,a,h,c=0;for(var l in e)if(h=e[l],!(h.o.y=t.y&&h.d.y>=t.y||(h.o.x===h.d.x&&h.o.x>=t.x?(o=h.o.x,a=t.y):(i=0,r=(h.d.y-h.o.y)/(h.d.x-h.o.x),n=t.y-i*t.x,s=h.o.y-r*h.o.x,o=-(n-s)/(i-r),a=n+i*o),o>=t.x&&(c+=1),2!==c)))break;return c},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){return this.oCoords||this.setCoords(),fabric.util.makeBoundingBoxFromPoints([this.oCoords.tl,this.oCoords.tr,this.oCoords.br,this.oCoords.bl])},getWidth:function(){return this._getTransformedDimensions().x},getHeight:function(){return this._getTransformedDimensions().y},_constrainScale:function(t){return Math.abs(t)0?Math.atan(s/n):0,c=n/Math.cos(h)/2,l=Math.cos(h+t)*c,u=Math.sin(h+t)*c,f=fabric.util.transformPoint(this.getCenterPoint(),i),d=new fabric.Point(f.x-l,f.y-u),g=new fabric.Point(d.x+n*a,d.y+n*o),p=new fabric.Point(d.x-s*o,d.y+s*a),v=new fabric.Point(f.x+l,f.y+u),b=new fabric.Point((d.x+p.x)/2,(d.y+p.y)/2),m=new fabric.Point((g.x+d.x)/2,(g.y+d.y)/2),y=new fabric.Point((v.x+g.x)/2,(v.y+g.y)/2),_=new fabric.Point((v.x+p.x)/2,(v.y+p.y)/2),x=new fabric.Point(m.x+o*this.rotatingPointOffset,m.y-a*this.rotatingPointOffset);return this.oCoords={tl:d,tr:g,br:v,bl:p,ml:b,mt:m,mr:y,mb:_,mtr:x},this._setCornerCoords&&this._setCornerCoords(),this},_calcRotateMatrix:function(){if(this.angle){var t=e(this.angle),i=Math.cos(t),r=Math.sin(t);return[i,r,-r,i,0,0]}return[1,0,0,1,0,0]},calcTransformMatrix:function(){var t=this.getCenterPoint(),e=[1,0,0,1,t.x,t.y],r=this._calcRotateMatrix(),n=this._calcDimensionsTransformMatrix(this.skewX,this.skewY,!0),s=this.group?this.group.calcTransformMatrix():[1,0,0,1,0,0];return s=i(s,e),s=i(s,r),s=i(s,n)},_calcDimensionsTransformMatrix:function(t,r,n){var s=[1,0,Math.tan(e(t)),1],o=[1,Math.tan(e(r)),0,1],a=this.scaleX*(n&&this.flipX?-1:1),h=this.scaleY*(n&&this.flipY?-1:1),c=[a,0,0,h],l=i(c,s,!0);return i(l,o,!0)}})}(),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(t){return this.group?fabric.StaticCanvas.prototype.sendBackwards.call(this.group,this,t):this.canvas.sendBackwards(this,t),this},bringForward:function(t){return this.group?fabric.StaticCanvas.prototype.bringForward.call(this.group,this,t):this.canvas.bringForward(this,t),this},moveTo:function(t){return this.group?fabric.StaticCanvas.prototype.moveTo.call(this.group,this,t):this.canvas.moveTo(this,t),this}}),function(){function t(t,e){if(e){if(e.toLive)return t+": url(#SVGID_"+e.id+"); ";var i=new fabric.Color(e),r=t+": "+i.toRgb()+"; ",n=i.getAlpha();return 1!==n&&(r+=t+"-opacity: "+n.toString()+"; "),r}return t+": none; "}fabric.util.object.extend(fabric.Object.prototype,{getSvgStyles:function(e){var i=this.fillRule,r=this.strokeWidth?this.strokeWidth:"0",n=this.strokeDashArray?this.strokeDashArray.join(" "):"none",s=this.strokeLineCap?this.strokeLineCap:"butt",o=this.strokeLineJoin?this.strokeLineJoin:"miter",a=this.strokeMiterLimit?this.strokeMiterLimit:"4",h="undefined"!=typeof this.opacity?this.opacity:"1",c=this.visible?"":" visibility: hidden;",l=e?"":this.getSvgFilter(),u=t("fill",this.fill),f=t("stroke",this.stroke);return[f,"stroke-width: ",r,"; ","stroke-dasharray: ",n,"; ","stroke-linecap: ",s,"; ","stroke-linejoin: ",o,"; ","stroke-miterlimit: ",a,"; ",u,"fill-rule: ",i,"; ","opacity: ",h,";",l,c].join("")},getSvgFilter:function(){return this.shadow?"filter: url(#SVGID_"+this.shadow.id+");":""},getSvgId:function(){return this.id?'id="'+this.id+'" ':""},getSvgTransform:function(){if(this.group&&"path-group"===this.group.type)return"";var t=fabric.util.toFixed,e=this.getAngle(),i=this.getSkewX()%360,r=this.getSkewY()%360,n=this.getCenterPoint(),s=fabric.Object.NUM_FRACTION_DIGITS,o="path-group"===this.type?"":"translate("+t(n.x,s)+" "+t(n.y,s)+")",a=0!==e?" rotate("+t(e,s)+")":"",h=1===this.scaleX&&1===this.scaleY?"":" scale("+t(this.scaleX,s)+" "+t(this.scaleY,s)+")",c=0!==i?" skewX("+t(i,s)+")":"",l=0!==r?" skewY("+t(r,s)+")":"",u="path-group"===this.type?this.width:0,f=this.flipX?" matrix(-1 0 0 1 "+u+" 0) ":"",d="path-group"===this.type?this.height:0,g=this.flipY?" matrix(1 0 0 -1 0 "+d+")":"";return[o,a,h,f,g,c,l].join("")},getSvgTransformMatrix:function(){return this.transformMatrix?" matrix("+this.transformMatrix.join(" ")+") ":""},_createBaseSVGMarkup:function(){var t=[];return this.fill&&this.fill.toLive&&t.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&t.push(this.stroke.toSVG(this,!1)),this.shadow&&t.push(this.shadow.toSVG(this)),t}})}(),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(t){return this.get(t)!==this.originalState[t]},this)},saveState:function(t){return this.stateProperties.forEach(function(t){this.originalState[t]=this.get(t)},this),t&&t.stateProperties&&t.stateProperties.forEach(function(t){this.originalState[t]=this.get(t)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var t=fabric.util.degreesToRadians,e=function(){return"undefined"!=typeof G_vmlCanvasManager};fabric.util.object.extend(fabric.Object.prototype,{_controlsVisibility:null,_findTargetCorner:function(t){if(!this.hasControls||!this.active)return!1;var e,i,r=t.x,n=t.y;this.__corner=0;for(var s in this.oCoords)if(this.isControlVisible(s)&&("mtr"!==s||this.hasRotatingPoint)&&(!this.get("lockUniScaling")||"mt"!==s&&"mr"!==s&&"mb"!==s&&"ml"!==s)&&(i=this._getImageLines(this.oCoords[s].corner),e=this._findCrossPoints({x:r,y:n},i),0!==e&&e%2===1))return this.__corner=s,s;return!1},_setCornerCoords:function(){var e,i,r=this.oCoords,n=t(45-this.angle),s=.707106*this.cornerSize,o=s*Math.cos(n),a=s*Math.sin(n);for(var h in r)e=r[h].x,i=r[h].y,r[h].corner={tl:{x:e-a,y:i-o},tr:{x:e+o,y:i-a},bl:{x:e-o,y:i+a},br:{x:e+a,y:i+o}}},_getNonTransformedDimensions:function(){var t=this.strokeWidth,e=this.width,i=this.height,r=!0,n=!0;return"line"===this.type&&"butt"===this.strokeLineCap&&(n=e,r=i),n&&(i+=i<0?-t:t),r&&(e+=e<0?-t:t),{x:e,y:i}},_getTransformedDimensions:function(t,e){"undefined"==typeof t&&(t=this.skewX),"undefined"==typeof e&&(e=this.skewY);var i,r,n=this._getNonTransformedDimensions(),s=n.x/2,o=n.y/2,a=[{x:-s,y:-o},{x:s,y:-o},{x:-s,y:o},{x:s,y:o}],h=this._calcDimensionsTransformMatrix(t,e,!1);for(i=0;i\n'),t?t(e.join("")):e.join("")},complexity:function(){return 1}}),i.Line.ATTRIBUTE_NAMES=i.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),i.Line.fromElement=function(t,e){var n=i.parseAttributes(t,i.Line.ATTRIBUTE_NAMES),s=[n.x1||0,n.y1||0,n.x2||0,n.y2||0];return new i.Line(s,r(n,e))},void(i.Line.fromObject=function(t){var e=[t.x1,t.y1,t.x2,t.y2];return new i.Line(e,t)}))}("undefined"!=typeof exports?exports:this),function(t){"use strict";function e(t){return"radius"in t&&t.radius>=0}var i=t.fabric||(t.fabric={}),r=Math.PI,n=i.util.object.extend;return i.Circle?void i.warn("fabric.Circle is already defined."):(i.Circle=i.util.createClass(i.Object,{type:"circle",radius:0,startAngle:0,endAngle:2*r,initialize:function(t){t=t||{},this.callSuper("initialize",t),this.set("radius",t.radius||0),this.startAngle=t.startAngle||this.startAngle,this.endAngle=t.endAngle||this.endAngle},_set:function(t,e){return this.callSuper("_set",t,e),"radius"===t&&this.setRadius(e),this},toObject:function(t){return n(this.callSuper("toObject",t),{radius:this.get("radius"),startAngle:this.startAngle,endAngle:this.endAngle})},toSVG:function(t){var e=this._createBaseSVGMarkup(),i=0,n=0,s=(this.endAngle-this.startAngle)%(2*r);if(0===s)this.group&&"path-group"===this.group.type&&(i=this.left+this.radius,n=this.top+this.radius),e.push("\n');else{var o=Math.cos(this.startAngle)*this.radius,a=Math.sin(this.startAngle)*this.radius,h=Math.cos(this.endAngle)*this.radius,c=Math.sin(this.endAngle)*this.radius,l=s>r?"1":"0";e.push('\n')}return t?t(e.join("")):e.join("")},_render:function(t,e){t.beginPath(),t.arc(e?this.left+this.radius:0,e?this.top+this.radius:0,this.radius,this.startAngle,this.endAngle,!1),this._renderFill(t),this._renderStroke(t)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(t){return this.radius=t,this.set("width",2*t).set("height",2*t)},complexity:function(){return 1}}),i.Circle.ATTRIBUTE_NAMES=i.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),i.Circle.fromElement=function(t,r){r||(r={});var s=i.parseAttributes(t,i.Circle.ATTRIBUTE_NAMES);if(!e(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 i.Circle(n(s,r));return o.left-=o.radius,o.top-=o.radius,o},void(i.Circle.fromObject=function(t){return new i.Circle(t)}))}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={});return e.Triangle?void e.warn("fabric.Triangle is already defined"):(e.Triangle=e.util.createClass(e.Object,{type:"triangle",initialize:function(t){t=t||{},this.callSuper("initialize",t),this.set("width",t.width||100).set("height",t.height||100)},_render:function(t){var e=this.width/2,i=this.height/2;t.beginPath(),t.moveTo(-e,i),t.lineTo(0,-i),t.lineTo(e,i),t.closePath(),this._renderFill(t),this._renderStroke(t)},_renderDashedStroke:function(t){var i=this.width/2,r=this.height/2;t.beginPath(),e.util.drawDashedLine(t,-i,r,0,-r,this.strokeDashArray),e.util.drawDashedLine(t,0,-r,i,r,this.strokeDashArray),e.util.drawDashedLine(t,i,r,-i,r,this.strokeDashArray),t.closePath()},toSVG:function(t){var e=this._createBaseSVGMarkup(),i=this.width/2,r=this.height/2,n=[-i+" "+r,"0 "+-r,i+" "+r].join(",");return e.push("'),t?t(e.join("")):e.join("")},complexity:function(){return 1}}),void(e.Triangle.fromObject=function(t){return new e.Triangle(t)}))}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=2*Math.PI,r=e.util.object.extend;return e.Ellipse?void e.warn("fabric.Ellipse is already defined."):(e.Ellipse=e.util.createClass(e.Object,{type:"ellipse",rx:0,ry:0,initialize:function(t){t=t||{},this.callSuper("initialize",t),this.set("rx",t.rx||0),this.set("ry",t.ry||0)},_set:function(t,e){switch(this.callSuper("_set",t,e),t){case"rx":this.rx=e,this.set("width",2*e);break;case"ry":this.ry=e,this.set("height",2*e)}return this},getRx:function(){return this.get("rx")*this.get("scaleX")},getRy:function(){return this.get("ry")*this.get("scaleY")},toObject:function(t){return r(this.callSuper("toObject",t),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(t){var e=this._createBaseSVGMarkup(),i=0,r=0;return this.group&&"path-group"===this.group.type&&(i=this.left+this.rx,r=this.top+this.ry),e.push("\n'),t?t(e.join("")):e.join("")},_render:function(t,e){t.beginPath(),t.save(),t.transform(1,0,0,this.ry/this.rx,0,0),t.arc(e?this.left+this.rx:0,e?(this.top+this.ry)*this.rx/this.ry:0,this.rx,0,i,!1),t.restore(),this._renderFill(t),this._renderStroke(t)},complexity:function(){return 1}}),e.Ellipse.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),e.Ellipse.fromElement=function(t,i){i||(i={});var n=e.parseAttributes(t,e.Ellipse.ATTRIBUTE_NAMES);n.left=n.left||0,n.top=n.top||0;var s=new e.Ellipse(r(n,i));return s.top-=s.ry,s.left-=s.rx,s},void(e.Ellipse.fromObject=function(t){return new e.Ellipse(t)}))}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend;if(e.Rect)return void e.warn("fabric.Rect is already defined");var r=e.Object.prototype.stateProperties.concat();r.push("rx","ry","x","y"),e.Rect=e.util.createClass(e.Object,{stateProperties:r,type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(t){t=t||{},this.callSuper("initialize",t),this._initRxRy()},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(t,e){if(1===this.width&&1===this.height)return void t.fillRect(-.5,-.5,1,1);var i=this.rx?Math.min(this.rx,this.width/2):0,r=this.ry?Math.min(this.ry,this.height/2):0,n=this.width,s=this.height,o=e?this.left:-this.width/2,a=e?this.top:-this.height/2,h=0!==i||0!==r,c=.4477152502;t.beginPath(),t.moveTo(o+i,a),t.lineTo(o+n-i,a),h&&t.bezierCurveTo(o+n-c*i,a,o+n,a+c*r,o+n,a+r),t.lineTo(o+n,a+s-r),h&&t.bezierCurveTo(o+n,a+s-c*r,o+n-c*i,a+s,o+n-i,a+s),t.lineTo(o+i,a+s),h&&t.bezierCurveTo(o+c*i,a+s,o,a+s-c*r,o,a+s-r),t.lineTo(o,a+r),h&&t.bezierCurveTo(o,a+c*r,o+c*i,a,o+i,a),t.closePath(),this._renderFill(t),this._renderStroke(t)},_renderDashedStroke:function(t){var i=-this.width/2,r=-this.height/2,n=this.width,s=this.height;t.beginPath(),e.util.drawDashedLine(t,i,r,i+n,r,this.strokeDashArray),e.util.drawDashedLine(t,i+n,r,i+n,r+s,this.strokeDashArray),e.util.drawDashedLine(t,i+n,r+s,i,r+s,this.strokeDashArray),e.util.drawDashedLine(t,i,r+s,i,r,this.strokeDashArray),t.closePath()},toObject:function(t){var e=i(this.callSuper("toObject",t),{rx:this.get("rx")||0,ry:this.get("ry")||0});return this.includeDefaultValues||this._removeDefaultValues(e),e},toSVG:function(t){var e=this._createBaseSVGMarkup(),i=this.left,r=this.top;return this.group&&"path-group"===this.group.type||(i=-this.width/2,r=-this.height/2),e.push("\n'),t?t(e.join("")):e.join("")},complexity:function(){return 1}}),e.Rect.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),e.Rect.fromElement=function(t,r){if(!t)return null;r=r||{};var n=e.parseAttributes(t,e.Rect.ATTRIBUTE_NAMES);n.left=n.left||0,n.top=n.top||0;var s=new e.Rect(i(r?e.util.object.clone(r):{},n));return s.visible=s.visible&&s.width>0&&s.height>0,s},e.Rect.fromObject=function(t){return new e.Rect(t)}}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={});return e.Polyline?void e.warn("fabric.Polyline is already defined"):(e.Polyline=e.util.createClass(e.Object,{type:"polyline",points:null,minX:0,minY:0,initialize:function(t,i){return e.Polygon.prototype.initialize.call(this,t,i)},_calcDimensions:function(){return e.Polygon.prototype._calcDimensions.call(this)},toObject:function(t){return e.Polygon.prototype.toObject.call(this,t)},toSVG:function(t){return e.Polygon.prototype.toSVG.call(this,t)},_render:function(t,i){e.Polygon.prototype.commonRender.call(this,t,i)&&(this._renderFill(t),this._renderStroke(t))},_renderDashedStroke:function(t){var i,r;t.beginPath();for(var n=0,s=this.points.length;n\n'),t?t(r.join("")):r.join("")},_render:function(t,e){this.commonRender(t,e)&&(this._renderFill(t),(this.stroke||this.strokeDashArray)&&(t.closePath(),this._renderStroke(t)))},commonRender:function(t,e){var i,r=this.points.length;if(!r||isNaN(this.points[r-1].y))return!1;e||t.translate(-this.pathOffset.x,-this.pathOffset.y),t.beginPath(),t.moveTo(this.points[0].x,this.points[0].y);for(var n=0;n"},toObject:function(t){var e=n(this.callSuper("toObject",t),{path:this.path.map(function(t){return t.slice()}),pathOffset:this.pathOffset});return this.sourcePath&&(e.sourcePath=this.sourcePath),this.transformMatrix&&(e.transformMatrix=this.transformMatrix),e},toDatalessObject:function(t){var e=this.toObject(t);return this.sourcePath&&(e.path=this.sourcePath),delete e.sourcePath,e},toSVG:function(t){for(var e=[],i=this._createBaseSVGMarkup(),r="",n=0,s=this.path.length;n\n"),t?t(i.join("")):i.join("")},complexity:function(){return this.path.length},_parsePath:function(){for(var t,e,i,r,n,s=[],o=[],c=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:e[-+]?\d+)?)/gi,l=0,u=this.path.length;lp)for(var b=1,m=n.length;b\n");for(var s=0,o=e.length;s\n"),t?t(n.join("")):n.join("")},toString:function(){return"#"},isSameColor:function(){var t=this.getObjects()[0].get("fill")||"";return"string"==typeof t&&(t=t.toLowerCase(),this.getObjects().every(function(e){var i=e.get("fill")||"";return"string"==typeof i&&i.toLowerCase()===t}))},complexity:function(){return this.paths.reduce(function(t,e){return t+(e&&e.complexity?e.complexity():0)},0)},getObjects:function(){return this.paths}}),e.PathGroup.fromObject=function(t,i){"string"==typeof t.paths?e.loadSVGFromURL(t.paths,function(r){var n=t.paths;delete t.paths;var s=e.util.groupSVGElements(r,t,n);i(s)}):e.util.enlivenObjects(t.paths,function(r){delete t.paths,i(new e.PathGroup(r,t))})},void(e.PathGroup.async=!0))}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.util.array.min,n=e.util.array.max,s=e.util.array.invoke;if(!e.Group){var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};e.Group=e.util.createClass(e.Object,e.Collection,{type:"group",strokeWidth:0,subTargetCheck:!1,initialize:function(t,e,i){e=e||{},this._objects=[],i&&this.callSuper("initialize",e),this._objects=t||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},e.originX&&(this.originX=e.originX),e.originY&&(this.originY=e.originY),i?this._updateObjectsCoords(!0):(this._calcBounds(),this._updateObjectsCoords(),this.callSuper("initialize",e)),this.setCoords(),this.saveCoords()},_updateObjectsCoords:function(t){for(var e=this._objects.length;e--;)this._updateObjectCoords(this._objects[e],t)},_updateObjectCoords:function(t,e){if(t.__origHasControls=t.hasControls,t.hasControls=!1,!e){var i=t.getLeft(),r=t.getTop(),n=this.getCenterPoint();t.set({originalLeft:i,originalTop:r,left:i-n.x,top:r-n.y}),t.setCoords()}},toString:function(){return"#"},addWithUpdate:function(t){return this._restoreObjectsState(),e.util.resetObjectTransform(this),t&&(this._objects.push(t),t.group=this,t._set("canvas",this.canvas)),this.forEachObject(this._setObjectActive,this),this._calcBounds(),this._updateObjectsCoords(),this},_setObjectActive:function(t){t.set("active",!0),t.group=this},removeWithUpdate:function(t){return this._restoreObjectsState(),e.util.resetObjectTransform(this),this.forEachObject(this._setObjectActive,this),this.remove(t),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(t){t.group=this,t._set("canvas",this.canvas)},_onObjectRemoved:function(t){delete t.group,t.set("active",!1)},delegatedProperties:{fill:!0,stroke:!0,strokeWidth:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textAlign:!0,backgroundColor:!0},_set:function(t,e){var i=this._objects.length;if(this.delegatedProperties[t]||"canvas"===t)for(;i--;)this._objects[i].set(t,e);else for(;i--;)this._objects[i].setOnGroup(t,e);this.callSuper("_set",t,e)},toObject:function(t){return i(this.callSuper("toObject",t),{objects:s(this._objects,"toObject",t)})},render:function(t){if(this.visible){t.save(),this.transformMatrix&&t.transform.apply(t,this.transformMatrix),this.transform(t),this._setShadow(t),this.clipTo&&e.util.clipContext(this,t),this._transformDone=!0;for(var i=0,r=this._objects.length;i\n');for(var i=0,r=this._objects.length;i\n"),t?t(e.join("")):e.join("")},get:function(t){if(t in o){if(this[t])return this[t];for(var e=0,i=this._objects.length;e\n',"\n"),this.stroke||this.strokeDashArray){var s=this.fill;this.fill=null,e.push("\n'),this.fill=s}return e.push("\n"),t?t(e.join("")):e.join("")},getSrc:function(){var t=this._originalElement;return t?fabric.isLikelyNode?t._src:t.src:this.src||""},setSrc:function(t,e,i){fabric.util.loadImage(t,function(t){return this.setElement(t,e,i)},this,i&&i.crossOrigin)},toString:function(){return'#'},clone:function(t,e){this.constructor.fromObject(this.toObject(e),t)},applyFilters:function(t,e,i,r){if(e=e||this.filters,i=i||this._originalElement){var n,s,o=fabric.util.createImage(),a=this.canvas?this.canvas.getRetinaScaling():fabric.devicePixelRatio,h=this.minimumScaleTrigger/a,c=this;if(0===e.length)return this._element=i,t&&t(this),i;var l=fabric.util.createCanvasElement();return l.width=i.width,l.height=i.height,l.getContext("2d").drawImage(i,0,0,i.width,i.height),e.forEach(function(t){r?(n=c.scaleX0?90*Math.round((t-1)/90):90*Math.round(t/90)},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(t){t=t||{};var e=function(){},i=t.onComplete||e,r=t.onChange||e,n=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(t){n.setAngle(t),r()},onComplete:function(){n.setCoords(),i()},onStart:function(){n.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(t){return t.straighten(),this.renderAll(),this},fxStraightenObject:function(t){return t.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.BaseFilter=fabric.util.createClass({type:"BaseFilter",initialize:function(t){t&&this.setOptions(t)},setOptions:function(t){for(var e in t)this[e]=t[e]},toObject:function(){return{type:this.type}},toJSON:function(){return this.toObject()}}),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend;e.Image.filters.Brightness=e.util.createClass(e.Image.filters.BaseFilter,{type:"Brightness",initialize:function(t){t=t||{},this.brightness=t.brightness||0},applyTo:function(t){for(var e=t.getContext("2d"),i=e.getImageData(0,0,t.width,t.height),r=i.data,n=this.brightness,s=0,o=r.length;sb||o<0||o>v||(h=4*(a*v+o),c=l[C*d+w],e+=p[h]*c,i+=p[h+1]*c,r+=p[h+2]*c,n+=p[h+3]*c);y[s]=e,y[s+1]=i,y[s+2]=r,y[s+3]=n+_*(255-n)}u.putImageData(m,0,0)},toObject:function(){return i(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),e.Image.filters.Convolute.fromObject=function(t){return new e.Image.filters.Convolute(t)}}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend;e.Image.filters.GradientTransparency=e.util.createClass(e.Image.filters.BaseFilter,{type:"GradientTransparency",initialize:function(t){t=t||{},this.threshold=t.threshold||100},applyTo:function(t){for(var e=t.getContext("2d"),i=e.getImageData(0,0,t.width,t.height),r=i.data,n=this.threshold,s=r.length,o=0,a=r.length;o-1?t.channel:0},applyTo:function(t){if(this.mask){var i,r=t.getContext("2d"),n=r.getImageData(0,0,t.width,t.height),s=n.data,o=this.mask.getElement(),a=e.util.createCanvasElement(),h=this.channel,c=n.width*n.height*4;a.width=t.width,a.height=t.height,a.getContext("2d").drawImage(o,0,0,t.width,t.height);var l=a.getContext("2d").getImageData(0,0,t.width,t.height),u=l.data;for(i=0;ic&&i>c&&r>c&&l(e-i)i&&(l=2,f=-1),a>n&&(u=2,d=-1),h=c.getImageData(0,0,i,n),t.width=o(s,i),t.height=o(a,n),c.putImageData(h,0,0);!g||!p;)i=v,n=b,s*ft)return 0;if(e*=Math.PI,s(e)<1e-16)return 1;var i=e/t;return h(e)*h(i)/e/i}}function f(t){var h,c,u,d,g,j,A,M,P,I,L;for(T.x=(t+.5)*y,k.x=r(T.x),h=0;h=e)){I=r(1e3*s(c-T.x)),O[I]||(O[I]={});for(var E=k.y-w;E<=k.y+w;E++)E<0||E>=o||(L=r(1e3*s(E-T.y)),O[I][L]||(O[I][L]=m(n(i(I*x,2)+i(L*S,2))/1e3)),u=O[I][L],u>0&&(d=4*(E*e+c),g+=u,j+=u*v[d],A+=u*v[d+1],M+=u*v[d+2],P+=u*v[d+3]))}d=4*(h*a+t),b[d]=j/g,b[d+1]=A/g,b[d+2]=M/g,b[d+3]=P/g}return++t1&&D<-1||(x=2*D*D*D-3*D*D+1,x>0&&(E=4*(L+A*e),k+=x*p[E+3],C+=x,p[E+3]<255&&(x=x*p[E+3]/250),w+=x*p[E],O+=x*p[E+1],T+=x*p[E+2],S+=x))}b[_]=w/S,b[_+1]=O/S,b[_+2]=T/S,b[_+3]=k/C}return v},toObject:function(){return{type:this.type,scaleX:this.scaleX,scaleY:this.scaleY,resizeType:this.resizeType,lanczosLobes:this.lanczosLobes}}}),e.Image.filters.Resize.fromObject=function(t){return new e.Image.filters.Resize(t)}}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend;e.Image.filters.ColorMatrix=e.util.createClass(e.Image.filters.BaseFilter,{type:"ColorMatrix",initialize:function(t){t||(t={}),this.matrix=t.matrix||[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0]},applyTo:function(t){var e,i,r,n,s,o=t.getContext("2d"),a=o.getImageData(0,0,t.width,t.height),h=a.data,c=h.length,l=this.matrix;for(e=0;e'},_render:function(t){this.clipTo&&e.util.clipContext(this,t),this._setOpacity(t),this._setShadow(t),this._setupCompositeOperation(t),this._renderTextBackground(t),this._setStrokeStyles(t),this._setFillStyles(t),this._renderText(t),this._renderTextDecoration(t),this.clipTo&&t.restore()},_renderText:function(t){this._renderTextFill(t),this._renderTextStroke(t)},_setTextStyles:function(t){t.textBaseline="alphabetic",t.font=this._getFontDeclaration()},_getTextHeight:function(){return this._getHeightOfSingleLine()+(this._textLines.length-1)*this._getHeightOfLine()},_getTextWidth:function(t){for(var e=this._getLineWidth(t,0),i=1,r=this._textLines.length;ie&&(e=n)}return e},_getNonTransformedDimensions:function(){ -return{x:this.width,y:this.height}},_renderChars:function(t,e,i,r,n){var s,o,a=t.slice(0,-4);if(this[a].toLive){var h=-this.width/2+this[a].offsetX||0,c=-this.height/2+this[a].offsetY||0;e.save(),e.translate(h,c),r-=h,n-=c}if(0!==this.charSpacing){var l=this._getWidthOfCharSpacing();i=i.split("");for(var u=0,f=i.length;u0?u/f:0,g=0,p=0,v=h.length;p0&&(r=this._getLineLeftOffset(i),t.fillRect(this._getLeftOffset()+r,this._getTopOffset()+n,i,e/this.lineHeight)),n+=e;this._removeShadow(t)}},_getLineLeftOffset:function(t){return"center"===this.textAlign?(this.width-t)/2:"right"===this.textAlign?this.width-t:0},_clearCache:function(){this.__lineWidths=[],this.__lineHeights=[]},_shouldClearCache:function(){var t=!1;if(this._forceClearCache)return this._forceClearCache=!1,!0;for(var e in this._dimensionAffectingProps)this["__"+e]!==this[e]&&(this["__"+e]=this[e],t=!0);return t},_getLineWidth:function(t,e){if(this.__lineWidths[e])return this.__lineWidths[e]===-1?this.width:this.__lineWidths[e];var i,r,n=this._textLines[e];return i=""===n?0:this._measureLine(t,e),this.__lineWidths[e]=i,i&&"justify"===this.textAlign&&(r=n.split(/\s+/),r.length>1&&(this.__lineWidths[e]=-1)),i},_getWidthOfCharSpacing:function(){return 0!==this.charSpacing?this.fontSize*this.charSpacing/1e3:0},_measureLine:function(t,e){var i,r=this._textLines[e],n=t.measureText(r).width,s=0;return 0!==this.charSpacing&&(i=r.split("").length,s=(i-1)*this._getWidthOfCharSpacing()),n+s},_renderTextDecoration:function(t){function e(e){var n,s,o,a,h,c,l,u=0;for(n=0,s=r._textLines.length;n-1&&n.push(.85),this.textDecoration.indexOf("line-through")>-1&&n.push(.43),this.textDecoration.indexOf("overline")>-1&&n.push(-.12),n.length>0&&e(n)}},_getFontDeclaration:function(){return[e.isLikelyNode?this.fontWeight:this.fontStyle,e.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",'"'+this.fontFamily+'"'].join(" ")},render:function(t,e){this.visible&&(t.save(),this._setTextStyles(t),this._shouldClearCache()&&this._initDimensions(t),this.drawSelectionBackground(t),e||this.transform(t),this.transformMatrix&&t.transform.apply(t,this.transformMatrix),this.group&&"path-group"===this.group.type&&t.translate(this.left,this.top),this._render(t),t.restore())},_splitTextIntoLines:function(){return this.text.split(this._reNewline)},toObject:function(t){var e=i(this.callSuper("toObject",t),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textAlign:this.textAlign,textBackgroundColor:this.textBackgroundColor,charSpacing:this.charSpacing});return this.includeDefaultValues||this._removeDefaultValues(e),e},toSVG:function(t){this.ctx||(this.ctx=e.util.createCanvasElement().getContext("2d"));var i=this._createBaseSVGMarkup(),r=this._getSVGLeftTopOffsets(this.ctx),n=this._getSVGTextAndBg(r.textTop,r.textLeft);return this._wrapSVGTextAndBg(i,n),t?t(i.join("")):i.join("")},_getSVGLeftTopOffsets:function(t){var e=this._getHeightOfLine(t,0),i=-this.width/2,r=0;return{textLeft:i+(this.group&&"path-group"===this.group.type?this.left:0),textTop:r+(this.group&&"path-group"===this.group.type?-this.top:0),lineTop:e}},_wrapSVGTextAndBg:function(t,e){var i=!0,r=this.getSvgFilter(),n=""===r?"":' style="'+r+'"';t.push("\t\n",e.textBgRects.join(""),"\t\t\n',e.textSpans.join(""),"\t\t\n","\t\n")},_getSVGTextAndBg:function(t,e){var i=[],r=[],n=0;this._setSVGBg(r);for(var s=0,o=this._textLines.length;s",e.util.string.escapeXml(this._textLines[t]),"\n")},_setSVGTextLineJustifed:function(t,i,r,o){var a=e.util.createCanvasElement().getContext("2d");this._setTextStyles(a);var h,c,l=this._textLines[t],u=l.split(/\s+/),f=this._getWidthOfWords(a,u.join("")),d=this.width-f,g=u.length-1,p=g>0?d/g:0,v=this._getFillAttributes(this.fill);for(o+=this._getLineLeftOffset(this._getLineWidth(a,t)),t=0,c=u.length;t",e.util.string.escapeXml(h),"\n"),o+=this._getWidthOfWords(a,h)+p},_setSVGTextLineBg:function(t,e,i,r,o){t.push("\t\t\n')},_setSVGBg:function(t){this.backgroundColor&&t.push("\t\t\n')},_getFillAttributes:function(t){var i=t&&"string"==typeof t?new e.Color(t):"";return i&&i.getSource()&&1!==i.getAlpha()?'opacity="'+i.getAlpha()+'" fill="'+i.setAlpha(1).toRgb()+'"':'fill="'+t+'"'},_set:function(t,e){this.callSuper("_set",t,e),t in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),e.Text.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x y dx dy font-family font-style font-weight font-size text-decoration text-anchor".split(" ")),e.Text.DEFAULT_SVG_FONT_SIZE=16,e.Text.fromElement=function(t,i){if(!t)return null;var r=e.parseAttributes(t,e.Text.ATTRIBUTE_NAMES);i=e.util.object.extend(i?e.util.object.clone(i):{},r),i.top=i.top||0,i.left=i.left||0,"dx"in r&&(i.left+=r.dx),"dy"in r&&(i.top+=r.dy),"fontSize"in i||(i.fontSize=e.Text.DEFAULT_SVG_FONT_SIZE),i.originX||(i.originX="left");var n="";"textContent"in t?n=t.textContent:"firstChild"in t&&null!==t.firstChild&&"data"in t.firstChild&&null!==t.firstChild.data&&(n=t.firstChild.data),n=n.replace(/^\s+|\s+$|\n+/g,"").replace(/\s+/g," ");var s=new e.Text(n,i),o=s.getHeight()/s.height,a=(s.height+s.strokeWidth)*s.lineHeight-s.height,h=a*o,c=s.getHeight()+h,l=0;return"left"===s.originX&&(l=s.getWidth()/2),"right"===s.originX&&(l=-s.getWidth()/2),s.set({left:s.getLeft()+l,top:s.getTop()-c/2+s.fontSize*(.18+s._fontSizeFraction)/s.lineHeight}),s},e.Text.fromObject=function(t){return new e.Text(t.text,r(t))},e.util.createAccessors(e.Text)}("undefined"!=typeof exports?exports:this),function(){var t=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,_reSpace:/\s|\n/,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,__widthOfSpace:[],initialize:function(t,e){this.styles=e?e.styles||{}:{},this.callSuper("initialize",t,e),this.initBehavior()},_clearCache:function(){this.callSuper("_clearCache"),this.__widthOfSpace=[]},isEmptyStyles:function(){if(!this.styles)return!0;var t=this.styles;for(var e in t)for(var i in t[e])for(var r in t[e][i])return!1;return!0},setSelectionStart:function(t){t=Math.max(t,0),this._updateAndFire("selectionStart",t)},setSelectionEnd:function(t){t=Math.min(t,this.text.length),this._updateAndFire("selectionEnd",t)},_updateAndFire:function(t,e){this[t]!==e&&(this._fireSelectionChanged(),this[t]=e),this._updateTextarea()},_fireSelectionChanged:function(){this.fire("selection:changed"),this.canvas&&this.canvas.fire("text:selection:changed",{target:this})},getSelectionStyles:function(t,e){if(2===arguments.length){for(var i=[],r=t;r=r.charIndex&&(a!==o||ds&&a1)&&(c/=this.lineHeight),i.fillRect(e.left+h,e.top+e.topOffset,u,c),e.topOffset+=l}},_renderChars:function(t,e,i,r,n,s,o){if(this.isEmptyStyles())return this._renderCharsFast(t,e,i,r,n);o=o||0;var a,h,c=this._getHeightOfLine(e,s),l="";e.save(),n-=c/this.lineHeight*this._fontSizeFraction;for(var u=o,f=i.length+o;u<=f;u++)a=a||this.getCurrentCharStyle(s,u),h=this.getCurrentCharStyle(s,u+1),(this._hasStyleChanged(a,h)||u===f)&&(this._renderChar(t,e,s,u-1,l,r,n,c),l="",a=h),l+=i[u-o];e.restore()},_renderCharsFast:function(t,e,i,r,n){"fillText"===t&&this.fill&&this.callSuper("_renderChars",t,e,i,r,n),"strokeText"===t&&(this.stroke&&this.strokeWidth>0||this.skipFillStrokeCheck)&&this.callSuper("_renderChars",t,e,i,r,n)},_renderChar:function(t,e,i,r,n,s,o,a){var h,c,l,u,f,d,g,p=this._getStyleDeclaration(i,r);if(p?(c=this._getHeightOfChar(e,n,i,r),u=p.stroke,l=p.fill,d=p.textDecoration):c=this.fontSize,u=(u||this.stroke)&&"strokeText"===t,l=(l||this.fill)&&"fillText"===t,p&&e.save(),h=this._applyCharStylesGetWidth(e,n,i,r,p||null),d=d||this.textDecoration,p&&p.textBackgroundColor&&this._removeShadow(e),0!==this.charSpacing){g=n.split(""),h=0;for(var v,b=0,m=g.length;b-1&&t.fillRect(i,l[h],s,c)}},_renderTextLine:function(t,e,i,r,n,s){this.isEmptyStyles()||(n+=this.fontSize*(this._fontSizeFraction+.03)),this.callSuper("_renderTextLine",t,e,i,r,n,s)},_renderTextDecoration:function(t){if(this.isEmptyStyles())return this.callSuper("_renderTextDecoration",t)},_renderTextLinesBackground:function(t){this.callSuper("_renderTextLinesBackground",t);for(var e,i,r,n,s,o,a=0,h=this._getLeftOffset(),c=this._getTopOffset(),l=0,u=this._textLines.length;lr&&(r=o)}return this.__lineHeights[e]=r*this.lineHeight*this._fontSizeMult,this.__lineHeights[e]},_getTextHeight:function(t){for(var e,i=0,r=0,n=this._textLines.length;r-1;)e++,i--;return t-e},findWordBoundaryRight:function(t){var e=0,i=t;if(this._reSpace.test(this.text.charAt(i)))for(;this._reSpace.test(this.text.charAt(i));)e++,i++;for(;/\S/.test(this.text.charAt(i))&&i-1;)e++,i--;return t-e},findLineBoundaryRight:function(t){for(var e=0,i=t;!/\n/.test(this.text.charAt(i))&&i0&&ithis.__selectionStartOnMouseDown?(this.selectionStart=this.__selectionStartOnMouseDown,this.selectionEnd=e):(this.selectionStart=e,this.selectionEnd=this.__selectionStartOnMouseDown),this.selectionStart===i&&this.selectionEnd===r||(this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()))}},_setEditingProps:function(){this.hoverCursor="text",this.canvas&&(this.canvas.defaultCursor=this.canvas.moveCursor="text"),this.borderColor=this.editingBorderColor,this.hasControls=this.selectable=!1,this.lockMovementX=this.lockMovementY=!0},_updateTextarea:function(){if(this.hiddenTextarea&&!this.inCompositionMode&&(this.cursorOffsetCache={},this.hiddenTextarea.value=this.text,this.hiddenTextarea.selectionStart=this.selectionStart,this.hiddenTextarea.selectionEnd=this.selectionEnd,this.selectionStart===this.selectionEnd)){var t=this._calcTextareaPosition();this.hiddenTextarea.style.left=t.left,this.hiddenTextarea.style.top=t.top,this.hiddenTextarea.style.fontSize=t.fontSize}},_calcTextareaPosition:function(){if(!this.canvas)return{x:1,y:1};var t=this.text.split(""),e=this._getCursorBoundaries(t,"cursor"),i=this.get2DCursorLocation(),r=i.lineIndex,n=i.charIndex,s=this.getCurrentCharFontSize(r,n),o=0===r&&0===n?this._getLineLeftOffset(this._getLineWidth(this.ctx,r)):e.leftOffset,a=this.calcTransformMatrix(),h={x:e.left+o,y:e.top+e.topOffset+s},c=this.canvas.upperCanvasEl,l=c.width-s,u=c.height-s;return h=fabric.util.transformPoint(h,a),h=fabric.util.transformPoint(h,this.canvas.viewportTransform),h.x<0&&(h.x=0),h.x>l&&(h.x=l),h.y<0&&(h.y=0),h.y>u&&(h.y=u),{left:h.x+"px",top:h.y+"px",fontSize:s}},_saveEditingProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,defaultCursor:this.canvas&&this.canvas.defaultCursor,moveCursor:this.canvas&&this.canvas.moveCursor}},_restoreEditingProps:function(){this._savedProps&&(this.hoverCursor=this._savedProps.overCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY,this.canvas&&(this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor))},exitEditing:function(){var t=this._textBeforeEdit!==this.text;return this.selected=!1,this.isEditing=!1,this.selectable=!0,this.selectionEnd=this.selectionStart,this.hiddenTextarea&&this.canvas&&this.hiddenTextarea.parentNode.removeChild(this.hiddenTextarea),this.hiddenTextarea=null,this.abortCursorAnimation(),this._restoreEditingProps(),this._currentCursorOpacity=0,this.fire("editing:exited"),t&&this.fire("modified"),this.canvas&&(this.canvas.off("mouse:move",this.mouseMoveHandler),this.canvas.fire("text:editing:exited",{target:this}),t&&this.canvas.fire("object:modified",{target:this})),this},_removeExtraneousStyles:function(){for(var t in this.styles)this._textLines[t]||delete this.styles[t]},_removeCharsFromTo:function(t,e){for(;e!==t;)this._removeSingleCharAndStyle(t+1),e--;this.selectionStart=t,this.selectionEnd=t},_removeSingleCharAndStyle:function(t){var e="\n"===this.text[t-1],i=e?t:t-1;this.removeStyleObject(e,i),this.text=this.text.slice(0,t-1)+this.text.slice(t),this._textLines=this._splitTextIntoLines()},insertChars:function(t,e){var i;if(this.selectionEnd-this.selectionStart>1&&this._removeCharsFromTo(this.selectionStart,this.selectionEnd),!e&&this.isEmptyStyles())return void this.insertChar(t,!1);for(var r=0,n=t.length;r=i&&(s[parseInt(o,10)-i]=this.styles[e][o],delete this.styles[e][o]);this.styles[e+1]=s}this._forceClearCache=!0},insertCharStyleObject:function(e,i,r){var n=this.styles[e],s=t(n);0!==i||r||(i=1);for(var o in s){var a=parseInt(o,10);a>=i&&(n[a+1]=s[a],s[a-1]||delete n[a])}this.styles[e][i]=r||t(n[i-1]),this._forceClearCache=!0},insertStyleObjects:function(t,e,i){var r=this.get2DCursorLocation(),n=r.lineIndex,s=r.charIndex;this._getLineStyle(n)||this._setLineStyle(n,{}),"\n"===t?this.insertNewlineStyleObject(n,s,e):this.insertCharStyleObject(n,s,i)},shiftLineStyles:function(e,i){var r=t(this.styles);for(var n in this.styles){ -var s=parseInt(n,10);s>e&&(this.styles[s+i]=r[s],r[s-i]||delete this.styles[s])}},removeStyleObject:function(t,e){var i=this.get2DCursorLocation(e),r=i.lineIndex,n=i.charIndex;this._removeStyleObject(t,i,r,n)},_getTextOnPreviousLine:function(t){return this._textLines[t-1]},_removeStyleObject:function(e,i,r,n){if(e){var s=this._getTextOnPreviousLine(i.lineIndex),o=s?s.length:0;this.styles[r-1]||(this.styles[r-1]={});for(n in this.styles[r])this.styles[r-1][parseInt(n,10)+o]=this.styles[r][n];this.shiftLineStyles(i.lineIndex,-1)}else{var a=this.styles[r];a&&delete a[n];var h=t(a);for(var c in h){var l=parseInt(c,10);l>=n&&0!==l&&(a[l-1]=h[l],delete a[l])}}},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(t){this.__newClickTime=+new Date;var e=this.canvas.getPointer(t.e);this.isTripleClick(e)?(this.fire("tripleclick",t),this._stopEvent(t.e)):this.isDoubleClick(e)&&(this.fire("dblclick",t),this._stopEvent(t.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=e,this.__lastIsEditing=this.isEditing,this.__lastSelected=this.selected},isDoubleClick:function(t){return this.__newClickTime-this.__lastClickTime<500&&this.__lastPointer.x===t.x&&this.__lastPointer.y===t.y&&this.__lastIsEditing},isTripleClick:function(t){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===t.x&&this.__lastPointer.y===t.y},_stopEvent:function(t){t.preventDefault&&t.preventDefault(),t.stopPropagation&&t.stopPropagation()},initCursorSelectionHandlers:function(){this.initSelectedHandler(),this.initMousedownHandler(),this.initMouseupHandler(),this.initClicks()},initClicks:function(){this.on("dblclick",function(t){this.selectWord(this.getSelectionStartFromPointer(t.e))}),this.on("tripleclick",function(t){this.selectLine(this.getSelectionStartFromPointer(t.e))})},initMousedownHandler:function(){this.on("mousedown",function(t){if(this.editable){var e=this.canvas.getPointer(t.e);this.__mousedownX=e.x,this.__mousedownY=e.y,this.__isMousedown=!0,this.selected&&this.setCursorByClick(t.e),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.selectionStart===this.selectionEnd&&this.abortCursorAnimation(),this.renderCursorOrSelection())}})},_isObjectMoved:function(t){var e=this.canvas.getPointer(t);return this.__mousedownX!==e.x||this.__mousedownY!==e.y},initMouseupHandler:function(){this.on("mouseup",function(t){this.__isMousedown=!1,this.editable&&!this._isObjectMoved(t.e)&&(this.__lastSelected&&!this.__corner&&(this.enterEditing(t.e),this.selectionStart===this.selectionEnd?this.initDelayedCursor(!0):this.renderCursorOrSelection()),this.selected=!0)})},setCursorByClick:function(t){var e=this.getSelectionStartFromPointer(t);t.shiftKey?es?0:1,h=r+a;return this.flipX&&(h=n-h),h>this.text.length&&(h=this.text.length),h}}),fabric.util.object.extend(fabric.IText.prototype,{initHiddenTextarea:function(){this.hiddenTextarea=fabric.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off");var t=this._calcTextareaPosition();this.hiddenTextarea.style.cssText="position: absolute; top: "+t.top+"; left: "+t.left+"; opacity: 0; width: 0px; height: 0px; z-index: -999;",fabric.document.body.appendChild(this.hiddenTextarea),fabric.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this)),fabric.util.addListener(this.hiddenTextarea,"keyup",this.onKeyUp.bind(this)),fabric.util.addListener(this.hiddenTextarea,"input",this.onInput.bind(this)),fabric.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this)),fabric.util.addListener(this.hiddenTextarea,"cut",this.cut.bind(this)),fabric.util.addListener(this.hiddenTextarea,"paste",this.paste.bind(this)),fabric.util.addListener(this.hiddenTextarea,"compositionstart",this.onCompositionStart.bind(this)),fabric.util.addListener(this.hiddenTextarea,"compositionupdate",this.onCompositionUpdate.bind(this)),fabric.util.addListener(this.hiddenTextarea,"compositionend",this.onCompositionEnd.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"},_ctrlKeysMapUp:{67:"copy",88:"cut"},_ctrlKeysMapDown:{65:"selectAll"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(t){if(this.isEditing){if(t.keyCode in this._keysMap)this[this._keysMap[t.keyCode]](t);else{if(!(t.keyCode in this._ctrlKeysMapDown&&(t.ctrlKey||t.metaKey)))return;this[this._ctrlKeysMapDown[t.keyCode]](t)}t.stopImmediatePropagation(),t.preventDefault(),this.canvas&&this.canvas.renderAll()}},onKeyUp:function(t){return!this.isEditing||this._copyDone?void(this._copyDone=!1):void(t.keyCode in this._ctrlKeysMapUp&&(t.ctrlKey||t.metaKey)&&(this[this._ctrlKeysMapUp[t.keyCode]](t),t.stopImmediatePropagation(),t.preventDefault(),this.canvas&&this.canvas.renderAll()))},onInput:function(t){if(this.isEditing&&!this.inCompositionMode){var e,i,r,n=this.selectionStart||0,s=this.selectionEnd||0,o=this.text.length,a=this.hiddenTextarea.value.length;a>o?(r="left"===this._selectionDirection?s:n,e=a-o,i=this.hiddenTextarea.value.slice(r,r+e)):(e=a-o+s-n,i=this.hiddenTextarea.value.slice(n,n+e)),this.insertChars(i),t.stopPropagation()}},onCompositionStart:function(){this.inCompositionMode=!0,this.prevCompositionLength=0,this.compositionStart=this.selectionStart},onCompositionEnd:function(){this.inCompositionMode=!1},onCompositionUpdate:function(t){var e=t.data;this.selectionStart=this.compositionStart,this.selectionEnd=this.selectionEnd===this.selectionStart?this.compositionStart+this.prevCompositionLength:this.selectionEnd,this.insertChars(e,!1),this.prevCompositionLength=e.length},forwardDelete:function(t){if(this.selectionStart===this.selectionEnd){if(this.selectionStart===this.text.length)return;this.moveCursorRight(t)}this.removeChars(t)},copy:function(t){if(this.selectionStart!==this.selectionEnd){var e=this.getSelectedText(),i=this._getClipboardData(t);i&&i.setData("text",e),fabric.copiedText=e,fabric.copiedTextStyle=this.getSelectionStyles(this.selectionStart,this.selectionEnd),t.stopImmediatePropagation(),t.preventDefault(),this._copyDone=!0}},paste:function(t){var e=null,i=this._getClipboardData(t),r=!0;i?(e=i.getData("text").replace(/\r/g,""),fabric.copiedTextStyle&&fabric.copiedText===e||(r=!1)):e=fabric.copiedText,e&&this.insertChars(e,r),t.stopImmediatePropagation(),t.preventDefault()},cut:function(t){this.selectionStart!==this.selectionEnd&&(this.copy(t),this.removeChars(t))},_getClipboardData:function(t){return t&&t.clipboardData||fabric.window.clipboardData},getDownCursorOffset:function(t,e){var i,r,n=e?this.selectionEnd:this.selectionStart,s=this.get2DCursorLocation(n),o=s.lineIndex,a=this._textLines[o].slice(0,s.charIndex),h=this._textLines[o].slice(s.charIndex),c=this._textLines[o+1]||"";if(o===this._textLines.length-1||t.metaKey||34===t.keyCode)return this.text.length-n;var l=this._getLineWidth(this.ctx,o);r=this._getLineLeftOffset(l);for(var u=r,f=0,d=a.length;fi){r=!0;var d=a-f,g=a,p=Math.abs(d-i),v=Math.abs(g-i);h=v=this.text.length&&this.selectionEnd>=this.text.length||this._moveCursorUpOrDown("Down",t)},moveCursorDownWithoutShift:function(t){return this._selectionDirection="right",this.selectionEnd=this.selectionEnd+t,this.selectionStart=this.selectionEnd,0!==t},swapSelectionPoints:function(){var t=this.selectionEnd;this.selectionEnd=this.selectionStart,this.selectionStart=t},moveCursorDownWithShift:function(t){return this.selectionEnd===this.selectionStart&&(this._selectionDirection="right"),"right"===this._selectionDirection?this.selectionEnd+=t:this.selectionStart+=t,this.selectionEndthis.text.length&&(this.selectionEnd=this.text.length),0!==t},getUpCursorOffset:function(t,e){var i=e?this.selectionEnd:this.selectionStart,r=this.get2DCursorLocation(i),n=r.lineIndex;if(0===n||t.metaKey||33===t.keyCode)return i;for(var s,o=this._textLines[n].slice(0,r.charIndex),a=this._textLines[n-1]||"",h=this._getLineWidth(this.ctx,r.lineIndex),c=this._getLineLeftOffset(h),l=c,u=0,f=o.length;ui){r=!0;var d=a-f,g=a,p=Math.abs(d-i),v=Math.abs(g-i);h=v=this.text.length&&this.selectionEnd>=this.text.length||this._moveCursorLeftOrRight("Right",t)},_moveCursorLeftOrRight:function(t,e){var i="moveCursor"+t+"With";this._currentCursorOpacity=1,i+=e.shiftKey?"Shift":"outShift",this[i](e)&&(this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorRightWithShift:function(t){return"left"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveRight(t,"selectionStart"):this.selectionEnd!==this.text.length?(this._selectionDirection="right",this._moveRight(t,"selectionEnd")):void 0},moveCursorRightWithoutShift:function(t){var e=!0;return this._selectionDirection="right",this.selectionStart===this.selectionEnd?(e=this._moveRight(t,"selectionStart"),this.selectionEnd=this.selectionStart):this.selectionStart=this.selectionEnd,e},removeChars:function(t){this.selectionStart===this.selectionEnd?this._removeCharsNearCursor(t):this._removeCharsFromTo(this.selectionStart,this.selectionEnd),this.setSelectionEnd(this.selectionStart),this._removeExtraneousStyles(),this.canvas&&this.canvas.renderAll(),this.setCoords(),this.fire("changed"),this.canvas&&this.canvas.fire("text:changed",{target:this})},_removeCharsNearCursor:function(t){if(0!==this.selectionStart)if(t.metaKey){var e=this.findLineBoundaryLeft(this.selectionStart);this._removeCharsFromTo(e,this.selectionStart),this.setSelectionStart(e)}else if(t.altKey){var i=this.findWordBoundaryLeft(this.selectionStart);this._removeCharsFromTo(i,this.selectionStart),this.setSelectionStart(i)}else this._removeSingleCharAndStyle(this.selectionStart),this.setSelectionStart(this.selectionStart-1)}}),function(){var t=fabric.util.toFixed,e=fabric.Object.NUM_FRACTION_DIGITS;fabric.util.object.extend(fabric.IText.prototype,{_setSVGTextLineText:function(t,e,i,r,n,s){this._getLineStyle(t)?this._setSVGTextLineChars(t,e,i,r,s):fabric.Text.prototype._setSVGTextLineText.call(this,t,e,i,r,n)},_setSVGTextLineChars:function(t,e,i,r,n){for(var s=this._textLines[t],o=0,a=this._getLineLeftOffset(this._getLineWidth(this.ctx,t))-this.width/2,h=this._getSVGLineTopOffset(t),c=this._getHeightOfLine(this.ctx,t),l=0,u=s.length;l\n'].join("")},_createTextCharSpan:function(i,r,n,s,o){var a=this.getSvgStyles.call(fabric.util.object.extend({visible:!0,fill:this.fill,stroke:this.stroke,type:"text",getSvgFilter:fabric.Object.prototype.getSvgFilter},r));return['\t\t\t',fabric.util.string.escapeXml(i),"\n"].join("")}})}(),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.clone;e.Textbox=e.util.createClass(e.IText,e.Observable,{type:"textbox",minWidth:20,dynamicMinWidth:0,__cachedLines:null,lockScalingY:!0,lockScalingFlip:!0,initialize:function(t,i){this.ctx=e.util.createCanvasElement().getContext("2d"),this.callSuper("initialize",t,i),this.setControlsVisibility(e.Textbox.getTextboxControlVisibility()),this._dimensionAffectingProps.width=!0},_initDimensions:function(t){this.__skipDimension||(t||(t=e.util.createCanvasElement().getContext("2d"),this._setTextStyles(t)),this.dynamicMinWidth=0,this._textLines=this._splitTextIntoLines(),this.dynamicMinWidth>this.width&&this._set("width",this.dynamicMinWidth),this._clearCache(),this.height=this._getTextHeight(t))},_generateStyleMap:function(){for(var t=0,e=0,i=0,r={},n=0;n=this.width&&!d?(n.push(s),s="",r=l,d=!0):r+=g,d||(s+=c),s+=a,u=this._measureText(t,c,i,h)+g,h++,d=!1,l>f&&(f=l);return p&&n.push(s),f>this.dynamicMinWidth&&(this.dynamicMinWidth=f-g),n},_splitTextIntoLines:function(){var t=this.textAlign;this.ctx.save(),this._setTextStyles(this.ctx),this.textAlign="left";var e=this._wrapText(this.ctx,this.text);return this.textAlign=t,this.ctx.restore(),this._textLines=e,this._styleMap=this._generateStyleMap(),e},setOnGroup:function(t,e){"scaleX"===t&&(this.set("scaleX",Math.abs(1/e)),this.set("width",this.get("width")*e/("undefined"==typeof this.__oldScaleX?1:this.__oldScaleX)),this.__oldScaleX=e)},get2DCursorLocation:function(t){"undefined"==typeof t&&(t=this.selectionStart);for(var e=this._textLines.length,i=0,r=0;r=h.getMinWidth()?(h.set("width",c),!0):void 0},fabric.Group.prototype._refreshControlsVisibility=function(){if("undefined"!=typeof fabric.Textbox)for(var t=this._objects.length;t--;)if(this._objects[t]instanceof fabric.Textbox)return void this.setControlsVisibility(fabric.Textbox.getTextboxControlVisibility())};var e=fabric.util.object.clone;fabric.util.object.extend(fabric.Textbox.prototype,{_removeExtraneousStyles:function(){for(var t in this._styleMap)this._textLines[t]||delete this.styles[this._styleMap[t].line]},insertCharStyleObject:function(t,e,i){var r=this._styleMap[t];t=r.line,e=r.offset+e,fabric.IText.prototype.insertCharStyleObject.apply(this,[t,e,i])},insertNewlineStyleObject:function(t,e,i){var r=this._styleMap[t];t=r.line,e=r.offset+e,fabric.IText.prototype.insertNewlineStyleObject.apply(this,[t,e,i])},shiftLineStyles:function(t,i){var r=e(this.styles),n=this._styleMap[t];t=n.line;for(var s in this.styles){var o=parseInt(s,10);o>t&&(this.styles[o+i]=r[o],r[o-i]||delete this.styles[o])}},_getTextOnPreviousLine:function(t){for(var e=this._textLines[t-1];this._styleMap[t-2]&&this._styleMap[t-2].line===this._styleMap[t-1].line;)e=this._textLines[t-2]+e,t--;return e},removeStyleObject:function(t,e){var i=this.get2DCursorLocation(e),r=this._styleMap[i.lineIndex],n=r.line,s=r.offset+i.charIndex;this._removeStyleObject(t,i,n,s)}})}(),function(){var t=fabric.IText.prototype._getNewSelectionStartFromOffset;fabric.IText.prototype._getNewSelectionStartFromOffset=function(e,i,r,n,s){n=t.call(this,e,i,r,n,s);for(var o=0,a=0,h=0;h=n));h++)"\n"!==this.text[o+a]&&" "!==this.text[o+a]||a++;return n-h+a}}(),function(){function request(t,e,i){var r=URL.parse(t);r.port||(r.port=0===r.protocol.indexOf("https:")?443:80);var n=0===r.protocol.indexOf("https:")?HTTPS:HTTP,s=n.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(t){var r="";e&&t.setEncoding(e),t.on("end",function(){i(r)}),t.on("data",function(e){200===t.statusCode&&(r+=e)})});s.on("error",function(t){t.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(t.message),i(null)}),s.end()}function requestFs(t,e){var i=require("fs");i.readFile(t,function(t,i){if(t)throw fabric.log(t),t;e(i)})}if("undefined"==typeof document||"undefined"==typeof window){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(t,e,i){function r(r){r?(n.src=new Buffer(r,"binary"),n._src=t,e&&e.call(i,n)):(n=null,e&&e.call(i,null,!0))}var n=new Image;t&&(t instanceof Buffer||0===t.indexOf("data"))?(n.src=n._src=t,e&&e.call(i,n)):t&&0!==t.indexOf("http")?requestFs(t,r):t?request(t,"binary",r):e&&e.call(i,t)},fabric.loadSVGFromURL=function(t,e,i){t=t.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),0!==t.indexOf("http")?requestFs(t,function(t){fabric.loadSVGFromString(t.toString(),e,i)}):request(t,"",function(t){fabric.loadSVGFromString(t,e,i)})},fabric.loadSVGFromString=function(t,e,i){var r=(new DOMParser).parseFromString(t);fabric.parseSVGDocument(r.documentElement,function(t,i){e&&e(t,i)},i)},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.createCanvasForNode=function(t,e,i,r){r=r||i;var n=fabric.document.createElement("canvas"),s=new Canvas(t||600,e||600,r),o=new Canvas(t||600,e||600,r);n.style={},n.width=s.width,n.height=s.height;var a=fabric.Canvas||fabric.StaticCanvas,h=new a(n,i);return h.contextContainer=s.getContext("2d"),h.nodeCanvas=s,h.contextCache=o.getContext("2d"),h.nodeCacheCanvas=o,h.Font=Canvas.Font,h},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(t){return this.nodeCanvas.createJPEGStream(t)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(t,e){return origSetWidth.call(this,t,e),this.nodeCanvas.width=t,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(t,e){return origSetHeight.call(this,t,e),this.nodeCanvas.height=t,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}}(); \ No newline at end of file +this},sendBackwards:function(t){return this.group?fabric.StaticCanvas.prototype.sendBackwards.call(this.group,this,t):this.canvas.sendBackwards(this,t),this},bringForward:function(t){return this.group?fabric.StaticCanvas.prototype.bringForward.call(this.group,this,t):this.canvas.bringForward(this,t),this},moveTo:function(t){return this.group?fabric.StaticCanvas.prototype.moveTo.call(this.group,this,t):this.canvas.moveTo(this,t),this}}),function(){function t(t,e){if(e){if(e.toLive)return t+": url(#SVGID_"+e.id+"); ";var i=new fabric.Color(e),r=t+": "+i.toRgb()+"; ",n=i.getAlpha();return 1!==n&&(r+=t+"-opacity: "+n.toString()+"; "),r}return t+": none; "}fabric.util.object.extend(fabric.Object.prototype,{getSvgStyles:function(e){var i=this.fillRule,r=this.strokeWidth?this.strokeWidth:"0",n=this.strokeDashArray?this.strokeDashArray.join(" "):"none",s=this.strokeLineCap?this.strokeLineCap:"butt",o=this.strokeLineJoin?this.strokeLineJoin:"miter",a=this.strokeMiterLimit?this.strokeMiterLimit:"4",h="undefined"!=typeof this.opacity?this.opacity:"1",c=this.visible?"":" visibility: hidden;",l=e?"":this.getSvgFilter(),u=t("fill",this.fill),f=t("stroke",this.stroke);return[f,"stroke-width: ",r,"; ","stroke-dasharray: ",n,"; ","stroke-linecap: ",s,"; ","stroke-linejoin: ",o,"; ","stroke-miterlimit: ",a,"; ",u,"fill-rule: ",i,"; ","opacity: ",h,";",l,c].join("")},getSvgFilter:function(){return this.shadow?"filter: url(#SVGID_"+this.shadow.id+");":""},getSvgId:function(){return this.id?'id="'+this.id+'" ':""},getSvgTransform:function(){if(this.group&&"path-group"===this.group.type)return"";var t=fabric.util.toFixed,e=this.getAngle(),i=this.getSkewX()%360,r=this.getSkewY()%360,n=this.getCenterPoint(),s=fabric.Object.NUM_FRACTION_DIGITS,o="path-group"===this.type?"":"translate("+t(n.x,s)+" "+t(n.y,s)+")",a=0!==e?" rotate("+t(e,s)+")":"",h=1===this.scaleX&&1===this.scaleY?"":" scale("+t(this.scaleX,s)+" "+t(this.scaleY,s)+")",c=0!==i?" skewX("+t(i,s)+")":"",l=0!==r?" skewY("+t(r,s)+")":"",u="path-group"===this.type?this.width:0,f=this.flipX?" matrix(-1 0 0 1 "+u+" 0) ":"",d="path-group"===this.type?this.height:0,g=this.flipY?" matrix(1 0 0 -1 0 "+d+")":"";return[o,a,h,f,g,c,l].join("")},getSvgTransformMatrix:function(){return this.transformMatrix?" matrix("+this.transformMatrix.join(" ")+") ":""},_createBaseSVGMarkup:function(){var t=[];return this.fill&&this.fill.toLive&&t.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&t.push(this.stroke.toSVG(this,!1)),this.shadow&&t.push(this.shadow.toSVG(this)),t}})}(),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(t){return this.get(t)!==this.originalState[t]},this)},saveState:function(t){return this.stateProperties.forEach(function(t){this.originalState[t]=this.get(t)},this),t&&t.stateProperties&&t.stateProperties.forEach(function(t){this.originalState[t]=this.get(t)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var t=fabric.util.degreesToRadians,e=function(){return"undefined"!=typeof G_vmlCanvasManager};fabric.util.object.extend(fabric.Object.prototype,{_controlsVisibility:null,_findTargetCorner:function(t){if(!this.hasControls||!this.active)return!1;var e,i,r=t.x,n=t.y;this.__corner=0;for(var s in this.oCoords)if(this.isControlVisible(s)&&("mtr"!==s||this.hasRotatingPoint)&&(!this.get("lockUniScaling")||"mt"!==s&&"mr"!==s&&"mb"!==s&&"ml"!==s)&&(i=this._getImageLines(this.oCoords[s].corner),e=this._findCrossPoints({x:r,y:n},i),0!==e&&e%2===1))return this.__corner=s,s;return!1},_setCornerCoords:function(){var e,i,r=this.oCoords,n=t(45-this.angle),s=.707106*this.cornerSize,o=s*Math.cos(n),a=s*Math.sin(n);for(var h in r)e=r[h].x,i=r[h].y,r[h].corner={tl:{x:e-a,y:i-o},tr:{x:e+o,y:i-a},bl:{x:e-o,y:i+a},br:{x:e+a,y:i+o}}},_getNonTransformedDimensions:function(){var t=this.strokeWidth,e=this.width,i=this.height,r=!0,n=!0;return"line"===this.type&&"butt"===this.strokeLineCap&&(n=e,r=i),n&&(i+=i<0?-t:t),r&&(e+=e<0?-t:t),{x:e,y:i}},_getTransformedDimensions:function(t,e){"undefined"==typeof t&&(t=this.skewX),"undefined"==typeof e&&(e=this.skewY);var i,r,n=this._getNonTransformedDimensions(),s=n.x/2,o=n.y/2,a=[{x:-s,y:-o},{x:s,y:-o},{x:-s,y:o},{x:s,y:o}],h=this._calcDimensionsTransformMatrix(t,e,!1);for(i=0;i\n'),t?t(e.join("")):e.join("")},complexity:function(){return 1}}),i.Line.ATTRIBUTE_NAMES=i.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),i.Line.fromElement=function(t,e){var n=i.parseAttributes(t,i.Line.ATTRIBUTE_NAMES),s=[n.x1||0,n.y1||0,n.x2||0,n.y2||0];return new i.Line(s,r(n,e))},void(i.Line.fromObject=function(t){var e=[t.x1,t.y1,t.x2,t.y2];return new i.Line(e,t)}))}("undefined"!=typeof exports?exports:this),function(t){"use strict";function e(t){return"radius"in t&&t.radius>=0}var i=t.fabric||(t.fabric={}),r=Math.PI,n=i.util.object.extend;return i.Circle?void i.warn("fabric.Circle is already defined."):(i.Circle=i.util.createClass(i.Object,{type:"circle",radius:0,startAngle:0,endAngle:2*r,initialize:function(t){t=t||{},this.callSuper("initialize",t),this.set("radius",t.radius||0),this.startAngle=t.startAngle||this.startAngle,this.endAngle=t.endAngle||this.endAngle},_set:function(t,e){return this.callSuper("_set",t,e),"radius"===t&&this.setRadius(e),this},toObject:function(t){return n(this.callSuper("toObject",t),{radius:this.get("radius"),startAngle:this.startAngle,endAngle:this.endAngle})},toSVG:function(t){var e=this._createBaseSVGMarkup(),i=0,n=0,s=(this.endAngle-this.startAngle)%(2*r);if(0===s)this.group&&"path-group"===this.group.type&&(i=this.left+this.radius,n=this.top+this.radius),e.push("\n');else{var o=Math.cos(this.startAngle)*this.radius,a=Math.sin(this.startAngle)*this.radius,h=Math.cos(this.endAngle)*this.radius,c=Math.sin(this.endAngle)*this.radius,l=s>r?"1":"0";e.push('\n')}return t?t(e.join("")):e.join("")},_render:function(t,e){t.beginPath(),t.arc(e?this.left+this.radius:0,e?this.top+this.radius:0,this.radius,this.startAngle,this.endAngle,!1),this._renderFill(t),this._renderStroke(t)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(t){return this.radius=t,this.set("width",2*t).set("height",2*t)},complexity:function(){return 1}}),i.Circle.ATTRIBUTE_NAMES=i.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),i.Circle.fromElement=function(t,r){r||(r={});var s=i.parseAttributes(t,i.Circle.ATTRIBUTE_NAMES);if(!e(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 i.Circle(n(s,r));return o.left-=o.radius,o.top-=o.radius,o},void(i.Circle.fromObject=function(t){return new i.Circle(t)}))}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={});return e.Triangle?void e.warn("fabric.Triangle is already defined"):(e.Triangle=e.util.createClass(e.Object,{type:"triangle",initialize:function(t){t=t||{},this.callSuper("initialize",t),this.set("width",t.width||100).set("height",t.height||100)},_render:function(t){var e=this.width/2,i=this.height/2;t.beginPath(),t.moveTo(-e,i),t.lineTo(0,-i),t.lineTo(e,i),t.closePath(),this._renderFill(t),this._renderStroke(t)},_renderDashedStroke:function(t){var i=this.width/2,r=this.height/2;t.beginPath(),e.util.drawDashedLine(t,-i,r,0,-r,this.strokeDashArray),e.util.drawDashedLine(t,0,-r,i,r,this.strokeDashArray),e.util.drawDashedLine(t,i,r,-i,r,this.strokeDashArray),t.closePath()},toSVG:function(t){var e=this._createBaseSVGMarkup(),i=this.width/2,r=this.height/2,n=[-i+" "+r,"0 "+-r,i+" "+r].join(",");return e.push("'),t?t(e.join("")):e.join("")},complexity:function(){return 1}}),void(e.Triangle.fromObject=function(t){return new e.Triangle(t)}))}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=2*Math.PI,r=e.util.object.extend;return e.Ellipse?void e.warn("fabric.Ellipse is already defined."):(e.Ellipse=e.util.createClass(e.Object,{type:"ellipse",rx:0,ry:0,initialize:function(t){t=t||{},this.callSuper("initialize",t),this.set("rx",t.rx||0),this.set("ry",t.ry||0)},_set:function(t,e){switch(this.callSuper("_set",t,e),t){case"rx":this.rx=e,this.set("width",2*e);break;case"ry":this.ry=e,this.set("height",2*e)}return this},getRx:function(){return this.get("rx")*this.get("scaleX")},getRy:function(){return this.get("ry")*this.get("scaleY")},toObject:function(t){return r(this.callSuper("toObject",t),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(t){var e=this._createBaseSVGMarkup(),i=0,r=0;return this.group&&"path-group"===this.group.type&&(i=this.left+this.rx,r=this.top+this.ry),e.push("\n'),t?t(e.join("")):e.join("")},_render:function(t,e){t.beginPath(),t.save(),t.transform(1,0,0,this.ry/this.rx,0,0),t.arc(e?this.left+this.rx:0,e?(this.top+this.ry)*this.rx/this.ry:0,this.rx,0,i,!1),t.restore(),this._renderFill(t),this._renderStroke(t)},complexity:function(){return 1}}),e.Ellipse.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),e.Ellipse.fromElement=function(t,i){i||(i={});var n=e.parseAttributes(t,e.Ellipse.ATTRIBUTE_NAMES);n.left=n.left||0,n.top=n.top||0;var s=new e.Ellipse(r(n,i));return s.top-=s.ry,s.left-=s.rx,s},void(e.Ellipse.fromObject=function(t){return new e.Ellipse(t)}))}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend;if(e.Rect)return void e.warn("fabric.Rect is already defined");var r=e.Object.prototype.stateProperties.concat();r.push("rx","ry","x","y"),e.Rect=e.util.createClass(e.Object,{stateProperties:r,type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(t){t=t||{},this.callSuper("initialize",t),this._initRxRy()},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(t,e){if(1===this.width&&1===this.height)return void t.fillRect(-.5,-.5,1,1);var i=this.rx?Math.min(this.rx,this.width/2):0,r=this.ry?Math.min(this.ry,this.height/2):0,n=this.width,s=this.height,o=e?this.left:-this.width/2,a=e?this.top:-this.height/2,h=0!==i||0!==r,c=.4477152502;t.beginPath(),t.moveTo(o+i,a),t.lineTo(o+n-i,a),h&&t.bezierCurveTo(o+n-c*i,a,o+n,a+c*r,o+n,a+r),t.lineTo(o+n,a+s-r),h&&t.bezierCurveTo(o+n,a+s-c*r,o+n-c*i,a+s,o+n-i,a+s),t.lineTo(o+i,a+s),h&&t.bezierCurveTo(o+c*i,a+s,o,a+s-c*r,o,a+s-r),t.lineTo(o,a+r),h&&t.bezierCurveTo(o,a+c*r,o+c*i,a,o+i,a),t.closePath(),this._renderFill(t),this._renderStroke(t)},_renderDashedStroke:function(t){var i=-this.width/2,r=-this.height/2,n=this.width,s=this.height;t.beginPath(),e.util.drawDashedLine(t,i,r,i+n,r,this.strokeDashArray),e.util.drawDashedLine(t,i+n,r,i+n,r+s,this.strokeDashArray),e.util.drawDashedLine(t,i+n,r+s,i,r+s,this.strokeDashArray),e.util.drawDashedLine(t,i,r+s,i,r,this.strokeDashArray),t.closePath()},toObject:function(t){var e=i(this.callSuper("toObject",t),{rx:this.get("rx")||0,ry:this.get("ry")||0});return this.includeDefaultValues||this._removeDefaultValues(e),e},toSVG:function(t){var e=this._createBaseSVGMarkup(),i=this.left,r=this.top;return this.group&&"path-group"===this.group.type||(i=-this.width/2,r=-this.height/2),e.push("\n'),t?t(e.join("")):e.join("")},complexity:function(){return 1}}),e.Rect.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),e.Rect.fromElement=function(t,r){if(!t)return null;r=r||{};var n=e.parseAttributes(t,e.Rect.ATTRIBUTE_NAMES);n.left=n.left||0,n.top=n.top||0;var s=new e.Rect(i(r?e.util.object.clone(r):{},n));return s.visible=s.visible&&s.width>0&&s.height>0,s},e.Rect.fromObject=function(t){return new e.Rect(t)}}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={});return e.Polyline?void e.warn("fabric.Polyline is already defined"):(e.Polyline=e.util.createClass(e.Object,{type:"polyline",points:null,minX:0,minY:0,initialize:function(t,i){return e.Polygon.prototype.initialize.call(this,t,i)},_calcDimensions:function(){return e.Polygon.prototype._calcDimensions.call(this)},toObject:function(t){return e.Polygon.prototype.toObject.call(this,t)},toSVG:function(t){return e.Polygon.prototype.toSVG.call(this,t)},_render:function(t,i){e.Polygon.prototype.commonRender.call(this,t,i)&&(this._renderFill(t),this._renderStroke(t))},_renderDashedStroke:function(t){var i,r;t.beginPath();for(var n=0,s=this.points.length;n\n'),t?t(r.join("")):r.join("")},_render:function(t,e){this.commonRender(t,e)&&(this._renderFill(t),(this.stroke||this.strokeDashArray)&&(t.closePath(),this._renderStroke(t)))},commonRender:function(t,e){var i,r=this.points.length;if(!r||isNaN(this.points[r-1].y))return!1;e||t.translate(-this.pathOffset.x,-this.pathOffset.y),t.beginPath(),t.moveTo(this.points[0].x,this.points[0].y);for(var n=0;n"},toObject:function(t){var e=n(this.callSuper("toObject",t),{path:this.path.map(function(t){return t.slice()}),pathOffset:this.pathOffset});return this.sourcePath&&(e.sourcePath=this.sourcePath),this.transformMatrix&&(e.transformMatrix=this.transformMatrix),e},toDatalessObject:function(t){var e=this.toObject(t);return this.sourcePath&&(e.path=this.sourcePath),delete e.sourcePath,e},toSVG:function(t){for(var e=[],i=this._createBaseSVGMarkup(),r="",n=0,s=this.path.length;n\n"),t?t(i.join("")):i.join("")},complexity:function(){return this.path.length},_parsePath:function(){for(var t,e,i,r,n,s=[],o=[],c=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:e[-+]?\d+)?)/gi,l=0,u=this.path.length;lp)for(var b=1,m=n.length;b\n");for(var s=0,o=e.length;s\n"),t?t(n.join("")):n.join("")},toString:function(){return"#"},isSameColor:function(){var t=this.getObjects()[0].get("fill")||"";return"string"==typeof t&&(t=t.toLowerCase(),this.getObjects().every(function(e){var i=e.get("fill")||"";return"string"==typeof i&&i.toLowerCase()===t}))},complexity:function(){return this.paths.reduce(function(t,e){return t+(e&&e.complexity?e.complexity():0)},0)},getObjects:function(){return this.paths}}),e.PathGroup.fromObject=function(t,i){"string"==typeof t.paths?e.loadSVGFromURL(t.paths,function(r){var n=t.paths;delete t.paths;var s=e.util.groupSVGElements(r,t,n);i(s)}):e.util.enlivenObjects(t.paths,function(r){delete t.paths,i(new e.PathGroup(r,t))})},void(e.PathGroup.async=!0))}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.util.array.min,n=e.util.array.max,s=e.util.array.invoke;if(!e.Group){var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};e.Group=e.util.createClass(e.Object,e.Collection,{type:"group",strokeWidth:0,subTargetCheck:!1,initialize:function(t,e,i){e=e||{},this._objects=[],i&&this.callSuper("initialize",e),this._objects=t||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},e.originX&&(this.originX=e.originX),e.originY&&(this.originY=e.originY),i?this._updateObjectsCoords(!0):(this._calcBounds(),this._updateObjectsCoords(),this.callSuper("initialize",e)),this.setCoords(),this.saveCoords()},_updateObjectsCoords:function(t){for(var e=this._objects.length;e--;)this._updateObjectCoords(this._objects[e],t)},_updateObjectCoords:function(t,e){if(t.__origHasControls=t.hasControls,t.hasControls=!1,!e){var i=t.getLeft(),r=t.getTop(),n=this.getCenterPoint();t.set({originalLeft:i,originalTop:r,left:i-n.x,top:r-n.y}),t.setCoords()}},toString:function(){return"#"},addWithUpdate:function(t){return this._restoreObjectsState(),e.util.resetObjectTransform(this),t&&(this._objects.push(t),t.group=this,t._set("canvas",this.canvas)),this.forEachObject(this._setObjectActive,this),this._calcBounds(),this._updateObjectsCoords(),this},_setObjectActive:function(t){t.set("active",!0),t.group=this},removeWithUpdate:function(t){return this._restoreObjectsState(),e.util.resetObjectTransform(this),this.forEachObject(this._setObjectActive,this),this.remove(t),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(t){t.group=this,t._set("canvas",this.canvas)},_onObjectRemoved:function(t){delete t.group,t.set("active",!1)},delegatedProperties:{fill:!0,stroke:!0,strokeWidth:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textAlign:!0,backgroundColor:!0},_set:function(t,e){var i=this._objects.length;if(this.delegatedProperties[t]||"canvas"===t)for(;i--;)this._objects[i].set(t,e);else for(;i--;)this._objects[i].setOnGroup(t,e);this.callSuper("_set",t,e)},toObject:function(t){return i(this.callSuper("toObject",t),{objects:s(this._objects,"toObject",t)})},render:function(t){if(this.visible){t.save(),this.transformMatrix&&t.transform.apply(t,this.transformMatrix),this.transform(t),this._setShadow(t),this.clipTo&&e.util.clipContext(this,t),this._transformDone=!0;for(var i=0,r=this._objects.length;i\n');for(var i=0,r=this._objects.length;i\n"),t?t(e.join("")):e.join("")},get:function(t){if(t in o){if(this[t])return this[t];for(var e=0,i=this._objects.length;e\n',"\n"),this.stroke||this.strokeDashArray){var s=this.fill;this.fill=null,e.push("\n'),this.fill=s}return e.push("\n"),t?t(e.join("")):e.join("")},getSrc:function(){var t=this._originalElement;return t?fabric.isLikelyNode?t._src:t.src:this.src||""},setSrc:function(t,e,i){fabric.util.loadImage(t,function(t){return this.setElement(t,e,i)},this,i&&i.crossOrigin)},toString:function(){return'#'},clone:function(t,e){this.constructor.fromObject(this.toObject(e),t)},applyFilters:function(t,e,i,r){if(e=e||this.filters,i=i||this._originalElement){var n,s,o=fabric.util.createImage(),a=this.canvas?this.canvas.getRetinaScaling():fabric.devicePixelRatio,h=this.minimumScaleTrigger/a,c=this;if(0===e.length)return this._element=i,t&&t(this),i;var l=fabric.util.createCanvasElement();return l.width=i.width,l.height=i.height,l.getContext("2d").drawImage(i,0,0,i.width,i.height),e.forEach(function(t){t&&(r?(n=c.scaleX0?90*Math.round((t-1)/90):90*Math.round(t/90)},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(t){t=t||{};var e=function(){},i=t.onComplete||e,r=t.onChange||e,n=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(t){n.setAngle(t),r()},onComplete:function(){n.setCoords(),i()},onStart:function(){n.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(t){return t.straighten(),this.renderAll(),this},fxStraightenObject:function(t){return t.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.BaseFilter=fabric.util.createClass({type:"BaseFilter",initialize:function(t){t&&this.setOptions(t)},setOptions:function(t){for(var e in t)this[e]=t[e]},toObject:function(){return{type:this.type}},toJSON:function(){return this.toObject()}}),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend;e.Image.filters.Brightness=e.util.createClass(e.Image.filters.BaseFilter,{type:"Brightness",initialize:function(t){t=t||{},this.brightness=t.brightness||0},applyTo:function(t){for(var e=t.getContext("2d"),i=e.getImageData(0,0,t.width,t.height),r=i.data,n=this.brightness,s=0,o=r.length;sb||o<0||o>v||(h=4*(a*v+o),c=l[C*d+w],e+=p[h]*c,i+=p[h+1]*c,r+=p[h+2]*c,n+=p[h+3]*c);y[s]=e,y[s+1]=i,y[s+2]=r,y[s+3]=n+_*(255-n)}u.putImageData(m,0,0)},toObject:function(){return i(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),e.Image.filters.Convolute.fromObject=function(t){return new e.Image.filters.Convolute(t)}}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend;e.Image.filters.GradientTransparency=e.util.createClass(e.Image.filters.BaseFilter,{type:"GradientTransparency",initialize:function(t){t=t||{},this.threshold=t.threshold||100},applyTo:function(t){for(var e=t.getContext("2d"),i=e.getImageData(0,0,t.width,t.height),r=i.data,n=this.threshold,s=r.length,o=0,a=r.length;o-1?t.channel:0},applyTo:function(t){if(this.mask){var i,r=t.getContext("2d"),n=r.getImageData(0,0,t.width,t.height),s=n.data,o=this.mask.getElement(),a=e.util.createCanvasElement(),h=this.channel,c=n.width*n.height*4;a.width=t.width,a.height=t.height,a.getContext("2d").drawImage(o,0,0,t.width,t.height);var l=a.getContext("2d").getImageData(0,0,t.width,t.height),u=l.data;for(i=0;ic&&i>c&&r>c&&l(e-i)i&&(l=2,f=-1),a>n&&(u=2,d=-1),h=c.getImageData(0,0,i,n),t.width=o(s,i),t.height=o(a,n),c.putImageData(h,0,0);!g||!p;)i=v,n=b,s*ft)return 0;if(e*=Math.PI,s(e)<1e-16)return 1;var i=e/t;return h(e)*h(i)/e/i}}function f(t){var h,c,u,d,g,j,A,M,P,I,L;for(T.x=(t+.5)*y,k.x=r(T.x),h=0;h=e)){I=r(1e3*s(c-T.x)),O[I]||(O[I]={});for(var E=k.y-w;E<=k.y+w;E++)E<0||E>=o||(L=r(1e3*s(E-T.y)),O[I][L]||(O[I][L]=m(n(i(I*x,2)+i(L*S,2))/1e3)),u=O[I][L],u>0&&(d=4*(E*e+c),g+=u,j+=u*v[d],A+=u*v[d+1],M+=u*v[d+2],P+=u*v[d+3]))}d=4*(h*a+t),b[d]=j/g,b[d+1]=A/g,b[d+2]=M/g,b[d+3]=P/g}return++t1&&D<-1||(x=2*D*D*D-3*D*D+1,x>0&&(E=4*(L+A*e),k+=x*p[E+3],C+=x,p[E+3]<255&&(x=x*p[E+3]/250),w+=x*p[E],O+=x*p[E+1],T+=x*p[E+2],S+=x))}b[_]=w/S,b[_+1]=O/S,b[_+2]=T/S,b[_+3]=k/C}return v},toObject:function(){return{type:this.type,scaleX:this.scaleX,scaleY:this.scaleY,resizeType:this.resizeType,lanczosLobes:this.lanczosLobes}}}),e.Image.filters.Resize.fromObject=function(t){return new e.Image.filters.Resize(t)}}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend;e.Image.filters.ColorMatrix=e.util.createClass(e.Image.filters.BaseFilter,{type:"ColorMatrix",initialize:function(t){t||(t={}),this.matrix=t.matrix||[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0]},applyTo:function(t){var e,i,r,n,s,o=t.getContext("2d"),a=o.getImageData(0,0,t.width,t.height),h=a.data,c=h.length,l=this.matrix;for(e=0;e'},_render:function(t){this.clipTo&&e.util.clipContext(this,t),this._setOpacity(t),this._setShadow(t),this._setupCompositeOperation(t),this._renderTextBackground(t),this._setStrokeStyles(t),this._setFillStyles(t),this._renderText(t),this._renderTextDecoration(t),this.clipTo&&t.restore()},_renderText:function(t){this._renderTextFill(t),this._renderTextStroke(t)},_setTextStyles:function(t){t.textBaseline="alphabetic",t.font=this._getFontDeclaration()},_getTextHeight:function(){return this._getHeightOfSingleLine()+(this._textLines.length-1)*this._getHeightOfLine()},_getTextWidth:function(t){for(var e=this._getLineWidth(t,0),i=1,r=this._textLines.length;ie&&(e=n)}return e},_getNonTransformedDimensions:function(){ +return{x:this.width,y:this.height}},_renderChars:function(t,e,i,r,n){var s,o,a=t.slice(0,-4);if(this[a].toLive){var h=-this.width/2+this[a].offsetX||0,c=-this.height/2+this[a].offsetY||0;e.save(),e.translate(h,c),r-=h,n-=c}if(0!==this.charSpacing){var l=this._getWidthOfCharSpacing();i=i.split("");for(var u=0,f=i.length;u0?o:0}else e[t](i,r,n);this[a].toLive&&e.restore()},_renderTextLine:function(t,e,i,r,n,s){n-=this.fontSize*this._fontSizeFraction;var o=this._getLineWidth(e,s);if("justify"!==this.textAlign||this.width0?u/f:0,g=0,p=0,v=h.length;p0?n:0},_getLeftOffset:function(){return-this.width/2},_getTopOffset:function(){return-this.height/2},isEmptyStyles:function(){return!0},_renderTextCommon:function(t,e){for(var i=0,r=this._getLeftOffset(),n=this._getTopOffset(),s=0,o=this._textLines.length;s0&&(r=this._getLineLeftOffset(i),t.fillRect(this._getLeftOffset()+r,this._getTopOffset()+n,i,e/this.lineHeight)),n+=e;this._removeShadow(t)}},_getLineLeftOffset:function(t){return"center"===this.textAlign?(this.width-t)/2:"right"===this.textAlign?this.width-t:0},_clearCache:function(){this.__lineWidths=[],this.__lineHeights=[]},_shouldClearCache:function(){var t=!1;if(this._forceClearCache)return this._forceClearCache=!1,!0;for(var e in this._dimensionAffectingProps)this["__"+e]!==this[e]&&(this["__"+e]=this[e],t=!0);return t},_getLineWidth:function(t,e){if(this.__lineWidths[e])return this.__lineWidths[e]===-1?this.width:this.__lineWidths[e];var i,r,n=this._textLines[e];return i=""===n?0:this._measureLine(t,e),this.__lineWidths[e]=i,i&&"justify"===this.textAlign&&(r=n.split(/\s+/),r.length>1&&(this.__lineWidths[e]=-1)),i},_getWidthOfCharSpacing:function(){return 0!==this.charSpacing?this.fontSize*this.charSpacing/1e3:0},_measureLine:function(t,e){var i,r,n=this._textLines[e],s=t.measureText(n).width,o=0;return 0!==this.charSpacing&&(i=n.split("").length,o=(i-1)*this._getWidthOfCharSpacing()),r=s+o,r>0?r:0},_renderTextDecoration:function(t){function e(e){var n,s,o,a,h,c,l,u=0;for(n=0,s=r._textLines.length;n-1&&n.push(.85),this.textDecoration.indexOf("line-through")>-1&&n.push(.43),this.textDecoration.indexOf("overline")>-1&&n.push(-.12),n.length>0&&e(n)}},_getFontDeclaration:function(){return[e.isLikelyNode?this.fontWeight:this.fontStyle,e.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",'"'+this.fontFamily+'"'].join(" ")},render:function(t,e){this.visible&&(t.save(),this._setTextStyles(t),this._shouldClearCache()&&this._initDimensions(t),this.drawSelectionBackground(t),e||this.transform(t),this.transformMatrix&&t.transform.apply(t,this.transformMatrix),this.group&&"path-group"===this.group.type&&t.translate(this.left,this.top),this._render(t),t.restore())},_splitTextIntoLines:function(){return this.text.split(this._reNewline)},toObject:function(t){var e=i(this.callSuper("toObject",t),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textAlign:this.textAlign,textBackgroundColor:this.textBackgroundColor,charSpacing:this.charSpacing});return this.includeDefaultValues||this._removeDefaultValues(e),e},toSVG:function(t){this.ctx||(this.ctx=e.util.createCanvasElement().getContext("2d"));var i=this._createBaseSVGMarkup(),r=this._getSVGLeftTopOffsets(this.ctx),n=this._getSVGTextAndBg(r.textTop,r.textLeft);return this._wrapSVGTextAndBg(i,n),t?t(i.join("")):i.join("")},_getSVGLeftTopOffsets:function(t){var e=this._getHeightOfLine(t,0),i=-this.width/2,r=0;return{textLeft:i+(this.group&&"path-group"===this.group.type?this.left:0),textTop:r+(this.group&&"path-group"===this.group.type?-this.top:0),lineTop:e}},_wrapSVGTextAndBg:function(t,e){var i=!0,r=this.getSvgFilter(),n=""===r?"":' style="'+r+'"';t.push("\t\n",e.textBgRects.join(""),"\t\t\n',e.textSpans.join(""),"\t\t\n","\t\n")},_getSVGTextAndBg:function(t,e){var i=[],r=[],n=0;this._setSVGBg(r);for(var s=0,o=this._textLines.length;s",e.util.string.escapeXml(this._textLines[t]),"\n")},_setSVGTextLineJustifed:function(t,i,r,o){var a=e.util.createCanvasElement().getContext("2d");this._setTextStyles(a);var h,c,l=this._textLines[t],u=l.split(/\s+/),f=this._getWidthOfWords(a,u.join("")),d=this.width-f,g=u.length-1,p=g>0?d/g:0,v=this._getFillAttributes(this.fill);for(o+=this._getLineLeftOffset(this._getLineWidth(a,t)),t=0,c=u.length;t",e.util.string.escapeXml(h),"\n"),o+=this._getWidthOfWords(a,h)+p},_setSVGTextLineBg:function(t,e,i,r,o){t.push("\t\t\n')},_setSVGBg:function(t){this.backgroundColor&&t.push("\t\t\n')},_getFillAttributes:function(t){var i=t&&"string"==typeof t?new e.Color(t):"";return i&&i.getSource()&&1!==i.getAlpha()?'opacity="'+i.getAlpha()+'" fill="'+i.setAlpha(1).toRgb()+'"':'fill="'+t+'"'},_set:function(t,e){this.callSuper("_set",t,e),t in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),e.Text.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x y dx dy font-family font-style font-weight font-size text-decoration text-anchor".split(" ")),e.Text.DEFAULT_SVG_FONT_SIZE=16,e.Text.fromElement=function(t,i){if(!t)return null;var r=e.parseAttributes(t,e.Text.ATTRIBUTE_NAMES);i=e.util.object.extend(i?e.util.object.clone(i):{},r),i.top=i.top||0,i.left=i.left||0,"dx"in r&&(i.left+=r.dx),"dy"in r&&(i.top+=r.dy),"fontSize"in i||(i.fontSize=e.Text.DEFAULT_SVG_FONT_SIZE),i.originX||(i.originX="left");var n="";"textContent"in t?n=t.textContent:"firstChild"in t&&null!==t.firstChild&&"data"in t.firstChild&&null!==t.firstChild.data&&(n=t.firstChild.data),n=n.replace(/^\s+|\s+$|\n+/g,"").replace(/\s+/g," ");var s=new e.Text(n,i),o=s.getHeight()/s.height,a=(s.height+s.strokeWidth)*s.lineHeight-s.height,h=a*o,c=s.getHeight()+h,l=0;return"left"===s.originX&&(l=s.getWidth()/2),"right"===s.originX&&(l=-s.getWidth()/2),s.set({left:s.getLeft()+l,top:s.getTop()-c/2+s.fontSize*(.18+s._fontSizeFraction)/s.lineHeight}),s},e.Text.fromObject=function(t){return new e.Text(t.text,r(t))},e.util.createAccessors(e.Text)}("undefined"!=typeof exports?exports:this),function(){var t=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,_reSpace:/\s|\n/,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,__widthOfSpace:[],initialize:function(t,e){this.styles=e?e.styles||{}:{},this.callSuper("initialize",t,e),this.initBehavior()},_clearCache:function(){this.callSuper("_clearCache"),this.__widthOfSpace=[]},isEmptyStyles:function(){if(!this.styles)return!0;var t=this.styles;for(var e in t)for(var i in t[e])for(var r in t[e][i])return!1;return!0},setSelectionStart:function(t){t=Math.max(t,0),this._updateAndFire("selectionStart",t)},setSelectionEnd:function(t){t=Math.min(t,this.text.length),this._updateAndFire("selectionEnd",t)},_updateAndFire:function(t,e){this[t]!==e&&(this._fireSelectionChanged(),this[t]=e),this._updateTextarea()},_fireSelectionChanged:function(){this.fire("selection:changed"),this.canvas&&this.canvas.fire("text:selection:changed",{target:this})},getSelectionStyles:function(t,e){if(2===arguments.length){for(var i=[],r=t;r0?a:0,lineLeft:r},this.cursorOffsetCache=i,this.cursorOffsetCache},renderCursor:function(t,e){var i=this.get2DCursorLocation(),r=i.lineIndex,n=i.charIndex,s=this.getCurrentCharFontSize(r,n),o=0===r&&0===n?this._getLineLeftOffset(this._getLineWidth(e,r)):t.leftOffset,a=this.scaleX*this.canvas.getZoom(),h=this.cursorWidth/a;e.fillStyle=this.getCurrentCharColor(r,n),e.globalAlpha=this.__isMousedown?1:this._currentCursorOpacity,e.fillRect(t.left+o-h/2,t.top+t.topOffset,h,s)},renderSelection:function(t,e,i){i.fillStyle=this.selectionColor;for(var r=this.get2DCursorLocation(this.selectionStart),n=this.get2DCursorLocation(this.selectionEnd),s=r.lineIndex,o=n.lineIndex,a=s;a<=o;a++){var h=this._getLineLeftOffset(this._getLineWidth(i,a))||0,c=this._getHeightOfLine(this.ctx,a),l=0,u=0,f=this._textLines[a];if(a===s){for(var d=0,g=f.length;d=r.charIndex&&(a!==o||ds&&a1)&&(c/=this.lineHeight),i.fillRect(e.left+h,e.top+e.topOffset,u>0?u:0,c),e.topOffset+=l}},_renderChars:function(t,e,i,r,n,s,o){if(this.isEmptyStyles())return this._renderCharsFast(t,e,i,r,n);o=o||0;var a,h,c=this._getHeightOfLine(e,s),l="";e.save(),n-=c/this.lineHeight*this._fontSizeFraction;for(var u=o,f=i.length+o;u<=f;u++)a=a||this.getCurrentCharStyle(s,u),h=this.getCurrentCharStyle(s,u+1),(this._hasStyleChanged(a,h)||u===f)&&(this._renderChar(t,e,s,u-1,l,r,n,c),l="",a=h),l+=i[u-o];e.restore()},_renderCharsFast:function(t,e,i,r,n){"fillText"===t&&this.fill&&this.callSuper("_renderChars",t,e,i,r,n),"strokeText"===t&&(this.stroke&&this.strokeWidth>0||this.skipFillStrokeCheck)&&this.callSuper("_renderChars",t,e,i,r,n)},_renderChar:function(t,e,i,r,n,s,o,a){var h,c,l,u,f,d,g,p,v,b=this._getStyleDeclaration(i,r);if(b?(c=this._getHeightOfChar(e,n,i,r),u=b.stroke,l=b.fill,d=b.textDecoration):c=this.fontSize,u=(u||this.stroke)&&"strokeText"===t,l=(l||this.fill)&&"fillText"===t,b&&e.save(),h=this._applyCharStylesGetWidth(e,n,i,r,b||null),d=d||this.textDecoration,b&&b.textBackgroundColor&&this._removeShadow(e),0!==this.charSpacing){p=this._getWidthOfCharSpacing(),g=n.split(""),h=0;for(var m,y=0,_=g.length;y<_;y++)m=g[y],l&&e.fillText(m,s+h,o),u&&e.strokeText(m,s+h,o),v=e.measureText(m).width+p,h+=v>0?v:0}else l&&e.fillText(n,s,o),u&&e.strokeText(n,s,o);(d||""!==d)&&(f=this._fontSizeFraction*a/this.lineHeight,this._renderCharDecoration(e,d,s,o,f,h,c)),b&&e.restore(),e.translate(h,0)},_hasStyleChanged:function(t,e){return t.fill!==e.fill||t.fontSize!==e.fontSize||t.textBackgroundColor!==e.textBackgroundColor||t.textDecoration!==e.textDecoration||t.fontFamily!==e.fontFamily||t.fontWeight!==e.fontWeight||t.fontStyle!==e.fontStyle||t.stroke!==e.stroke||t.strokeWidth!==e.strokeWidth},_renderCharDecoration:function(t,e,i,r,n,s,o){if(e){var a,h,c=o/15,l={underline:r+o/10,"line-through":r-o*(this._fontSizeFraction+this._fontSizeMult-1)+c,overline:r-(this._fontSizeMult-this._fontSizeFraction)*o},u=["underline","line-through","overline"];for(a=0;a-1&&t.fillRect(i,l[h],s,c)}},_renderTextLine:function(t,e,i,r,n,s){this.isEmptyStyles()||(n+=this.fontSize*(this._fontSizeFraction+.03)),this.callSuper("_renderTextLine",t,e,i,r,n,s)},_renderTextDecoration:function(t){if(this.isEmptyStyles())return this.callSuper("_renderTextDecoration",t)},_renderTextLinesBackground:function(t){this.callSuper("_renderTextLinesBackground",t);for(var e,i,r,n,s,o,a=0,h=this._getLeftOffset(),c=this._getTopOffset(),l=0,u=this._textLines.length;l0?n:0},_getHeightOfChar:function(t,e,i){var r=this._getStyleDeclaration(e,i);return r&&r.fontSize?r.fontSize:this.fontSize},_getWidthOfCharsAt:function(t,e,i){var r,n,s=0;for(r=0;r0?i:0},_getWidthOfSpace:function(t,e){if(this.__widthOfSpace[e])return this.__widthOfSpace[e];var i=this._textLines[e],r=this._getWidthOfWords(t,i,e,0),n=this.width-r,s=i.length-i.replace(this._reSpacesAndTabs,"").length,o=Math.max(n/s,t.measureText(" ").width);return this.__widthOfSpace[e]=o,o},_getWidthOfWords:function(t,e,i,r){for(var n=0,s=0;sr&&(r=o)}return this.__lineHeights[e]=r*this.lineHeight*this._fontSizeMult,this.__lineHeights[e]},_getTextHeight:function(t){for(var e,i=0,r=0,n=this._textLines.length;r-1;)e++,i--;return t-e},findWordBoundaryRight:function(t){var e=0,i=t;if(this._reSpace.test(this.text.charAt(i)))for(;this._reSpace.test(this.text.charAt(i));)e++,i++;for(;/\S/.test(this.text.charAt(i))&&i-1;)e++,i--;return t-e},findLineBoundaryRight:function(t){for(var e=0,i=t;!/\n/.test(this.text.charAt(i))&&i0&&ithis.__selectionStartOnMouseDown?(this.selectionStart=this.__selectionStartOnMouseDown,this.selectionEnd=e):(this.selectionStart=e,this.selectionEnd=this.__selectionStartOnMouseDown),this.selectionStart===i&&this.selectionEnd===r||(this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()))}},_setEditingProps:function(){this.hoverCursor="text",this.canvas&&(this.canvas.defaultCursor=this.canvas.moveCursor="text"),this.borderColor=this.editingBorderColor,this.hasControls=this.selectable=!1,this.lockMovementX=this.lockMovementY=!0},_updateTextarea:function(){if(this.hiddenTextarea&&!this.inCompositionMode&&(this.cursorOffsetCache={},this.hiddenTextarea.value=this.text,this.hiddenTextarea.selectionStart=this.selectionStart,this.hiddenTextarea.selectionEnd=this.selectionEnd,this.selectionStart===this.selectionEnd)){var t=this._calcTextareaPosition();this.hiddenTextarea.style.left=t.left,this.hiddenTextarea.style.top=t.top,this.hiddenTextarea.style.fontSize=t.fontSize}},_calcTextareaPosition:function(){if(!this.canvas)return{x:1,y:1};var t=this.text.split(""),e=this._getCursorBoundaries(t,"cursor"),i=this.get2DCursorLocation(),r=i.lineIndex,n=i.charIndex,s=this.getCurrentCharFontSize(r,n),o=0===r&&0===n?this._getLineLeftOffset(this._getLineWidth(this.ctx,r)):e.leftOffset,a=this.calcTransformMatrix(),h={x:e.left+o,y:e.top+e.topOffset+s},c=this.canvas.upperCanvasEl,l=c.width-s,u=c.height-s;return h=fabric.util.transformPoint(h,a),h=fabric.util.transformPoint(h,this.canvas.viewportTransform),h.x<0&&(h.x=0),h.x>l&&(h.x=l),h.y<0&&(h.y=0),h.y>u&&(h.y=u),{left:h.x+"px",top:h.y+"px",fontSize:s}},_saveEditingProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,defaultCursor:this.canvas&&this.canvas.defaultCursor,moveCursor:this.canvas&&this.canvas.moveCursor}},_restoreEditingProps:function(){this._savedProps&&(this.hoverCursor=this._savedProps.overCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY,this.canvas&&(this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor))},exitEditing:function(){var t=this._textBeforeEdit!==this.text;return this.selected=!1,this.isEditing=!1,this.selectable=!0,this.selectionEnd=this.selectionStart,this.hiddenTextarea&&this.canvas&&this.hiddenTextarea.parentNode.removeChild(this.hiddenTextarea),this.hiddenTextarea=null,this.abortCursorAnimation(),this._restoreEditingProps(),this._currentCursorOpacity=0,this.fire("editing:exited"),t&&this.fire("modified"),this.canvas&&(this.canvas.off("mouse:move",this.mouseMoveHandler),this.canvas.fire("text:editing:exited",{target:this}),t&&this.canvas.fire("object:modified",{target:this})),this},_removeExtraneousStyles:function(){for(var t in this.styles)this._textLines[t]||delete this.styles[t]},_removeCharsFromTo:function(t,e){for(;e!==t;)this._removeSingleCharAndStyle(t+1),e--;this.selectionStart=t,this.selectionEnd=t},_removeSingleCharAndStyle:function(t){var e="\n"===this.text[t-1],i=e?t:t-1;this.removeStyleObject(e,i),this.text=this.text.slice(0,t-1)+this.text.slice(t),this._textLines=this._splitTextIntoLines()},insertChars:function(t,e){var i;if(this.selectionEnd-this.selectionStart>1&&this._removeCharsFromTo(this.selectionStart,this.selectionEnd),!e&&this.isEmptyStyles())return void this.insertChar(t,!1);for(var r=0,n=t.length;r=i&&(s[parseInt(o,10)-i]=this.styles[e][o],delete this.styles[e][o]);this.styles[e+1]=s}this._forceClearCache=!0},insertCharStyleObject:function(e,i,r){var n=this.styles[e],s=t(n);0!==i||r||(i=1);for(var o in s){var a=parseInt(o,10);a>=i&&(n[a+1]=s[a],s[a-1]||delete n[a])}this.styles[e][i]=r||t(n[i-1]),this._forceClearCache=!0},insertStyleObjects:function(t,e,i){var r=this.get2DCursorLocation(),n=r.lineIndex,s=r.charIndex;this._getLineStyle(n)||this._setLineStyle(n,{}),"\n"===t?this.insertNewlineStyleObject(n,s,e):this.insertCharStyleObject(n,s,i)},shiftLineStyles:function(e,i){ +var r=t(this.styles);for(var n in this.styles){var s=parseInt(n,10);s>e&&(this.styles[s+i]=r[s],r[s-i]||delete this.styles[s])}},removeStyleObject:function(t,e){var i=this.get2DCursorLocation(e),r=i.lineIndex,n=i.charIndex;this._removeStyleObject(t,i,r,n)},_getTextOnPreviousLine:function(t){return this._textLines[t-1]},_removeStyleObject:function(e,i,r,n){if(e){var s=this._getTextOnPreviousLine(i.lineIndex),o=s?s.length:0;this.styles[r-1]||(this.styles[r-1]={});for(n in this.styles[r])this.styles[r-1][parseInt(n,10)+o]=this.styles[r][n];this.shiftLineStyles(i.lineIndex,-1)}else{var a=this.styles[r];a&&delete a[n];var h=t(a);for(var c in h){var l=parseInt(c,10);l>=n&&0!==l&&(a[l-1]=h[l],delete a[l])}}},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(t){this.__newClickTime=+new Date;var e=this.canvas.getPointer(t.e);this.isTripleClick(e)?(this.fire("tripleclick",t),this._stopEvent(t.e)):this.isDoubleClick(e)&&(this.fire("dblclick",t),this._stopEvent(t.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=e,this.__lastIsEditing=this.isEditing,this.__lastSelected=this.selected},isDoubleClick:function(t){return this.__newClickTime-this.__lastClickTime<500&&this.__lastPointer.x===t.x&&this.__lastPointer.y===t.y&&this.__lastIsEditing},isTripleClick:function(t){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===t.x&&this.__lastPointer.y===t.y},_stopEvent:function(t){t.preventDefault&&t.preventDefault(),t.stopPropagation&&t.stopPropagation()},initCursorSelectionHandlers:function(){this.initSelectedHandler(),this.initMousedownHandler(),this.initMouseupHandler(),this.initClicks()},initClicks:function(){this.on("dblclick",function(t){this.selectWord(this.getSelectionStartFromPointer(t.e))}),this.on("tripleclick",function(t){this.selectLine(this.getSelectionStartFromPointer(t.e))})},initMousedownHandler:function(){this.on("mousedown",function(t){if(this.editable){var e=this.canvas.getPointer(t.e);this.__mousedownX=e.x,this.__mousedownY=e.y,this.__isMousedown=!0,this.selected&&this.setCursorByClick(t.e),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.selectionStart===this.selectionEnd&&this.abortCursorAnimation(),this.renderCursorOrSelection())}})},_isObjectMoved:function(t){var e=this.canvas.getPointer(t);return this.__mousedownX!==e.x||this.__mousedownY!==e.y},initMouseupHandler:function(){this.on("mouseup",function(t){this.__isMousedown=!1,this.editable&&!this._isObjectMoved(t.e)&&(this.__lastSelected&&!this.__corner&&(this.enterEditing(t.e),this.selectionStart===this.selectionEnd?this.initDelayedCursor(!0):this.renderCursorOrSelection()),this.selected=!0)})},setCursorByClick:function(t){var e=this.getSelectionStartFromPointer(t);t.shiftKey?es?0:1,h=r+a;return this.flipX&&(h=n-h),h>this.text.length&&(h=this.text.length),h}}),fabric.util.object.extend(fabric.IText.prototype,{initHiddenTextarea:function(){this.hiddenTextarea=fabric.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off");var t=this._calcTextareaPosition();this.hiddenTextarea.style.cssText="position: absolute; top: "+t.top+"; left: "+t.left+"; opacity: 0; width: 0px; height: 0px; z-index: -999;",fabric.document.body.appendChild(this.hiddenTextarea),fabric.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this)),fabric.util.addListener(this.hiddenTextarea,"keyup",this.onKeyUp.bind(this)),fabric.util.addListener(this.hiddenTextarea,"input",this.onInput.bind(this)),fabric.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this)),fabric.util.addListener(this.hiddenTextarea,"cut",this.cut.bind(this)),fabric.util.addListener(this.hiddenTextarea,"paste",this.paste.bind(this)),fabric.util.addListener(this.hiddenTextarea,"compositionstart",this.onCompositionStart.bind(this)),fabric.util.addListener(this.hiddenTextarea,"compositionupdate",this.onCompositionUpdate.bind(this)),fabric.util.addListener(this.hiddenTextarea,"compositionend",this.onCompositionEnd.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"},_ctrlKeysMapUp:{67:"copy",88:"cut"},_ctrlKeysMapDown:{65:"selectAll"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(t){if(this.isEditing){if(t.keyCode in this._keysMap)this[this._keysMap[t.keyCode]](t);else{if(!(t.keyCode in this._ctrlKeysMapDown&&(t.ctrlKey||t.metaKey)))return;this[this._ctrlKeysMapDown[t.keyCode]](t)}t.stopImmediatePropagation(),t.preventDefault(),this.canvas&&this.canvas.renderAll()}},onKeyUp:function(t){return!this.isEditing||this._copyDone?void(this._copyDone=!1):void(t.keyCode in this._ctrlKeysMapUp&&(t.ctrlKey||t.metaKey)&&(this[this._ctrlKeysMapUp[t.keyCode]](t),t.stopImmediatePropagation(),t.preventDefault(),this.canvas&&this.canvas.renderAll()))},onInput:function(t){if(this.isEditing&&!this.inCompositionMode){var e,i,r,n=this.selectionStart||0,s=this.selectionEnd||0,o=this.text.length,a=this.hiddenTextarea.value.length;a>o?(r="left"===this._selectionDirection?s:n,e=a-o,i=this.hiddenTextarea.value.slice(r,r+e)):(e=a-o+s-n,i=this.hiddenTextarea.value.slice(n,n+e)),this.insertChars(i),t.stopPropagation()}},onCompositionStart:function(){this.inCompositionMode=!0,this.prevCompositionLength=0,this.compositionStart=this.selectionStart},onCompositionEnd:function(){this.inCompositionMode=!1},onCompositionUpdate:function(t){var e=t.data;this.selectionStart=this.compositionStart,this.selectionEnd=this.selectionEnd===this.selectionStart?this.compositionStart+this.prevCompositionLength:this.selectionEnd,this.insertChars(e,!1),this.prevCompositionLength=e.length},forwardDelete:function(t){if(this.selectionStart===this.selectionEnd){if(this.selectionStart===this.text.length)return;this.moveCursorRight(t)}this.removeChars(t)},copy:function(t){if(this.selectionStart!==this.selectionEnd){var e=this.getSelectedText(),i=this._getClipboardData(t);i&&i.setData("text",e),fabric.copiedText=e,fabric.copiedTextStyle=this.getSelectionStyles(this.selectionStart,this.selectionEnd),t.stopImmediatePropagation(),t.preventDefault(),this._copyDone=!0}},paste:function(t){var e=null,i=this._getClipboardData(t),r=!0;i?(e=i.getData("text").replace(/\r/g,""),fabric.copiedTextStyle&&fabric.copiedText===e||(r=!1)):e=fabric.copiedText,e&&this.insertChars(e,r),t.stopImmediatePropagation(),t.preventDefault()},cut:function(t){this.selectionStart!==this.selectionEnd&&(this.copy(t),this.removeChars(t))},_getClipboardData:function(t){return t&&t.clipboardData||fabric.window.clipboardData},getDownCursorOffset:function(t,e){var i,r,n=e?this.selectionEnd:this.selectionStart,s=this.get2DCursorLocation(n),o=s.lineIndex,a=this._textLines[o].slice(0,s.charIndex),h=this._textLines[o].slice(s.charIndex),c=this._textLines[o+1]||"";if(o===this._textLines.length-1||t.metaKey||34===t.keyCode)return this.text.length-n;var l=this._getLineWidth(this.ctx,o);r=this._getLineLeftOffset(l);for(var u=r,f=0,d=a.length;fi){r=!0;var d=a-f,g=a,p=Math.abs(d-i),v=Math.abs(g-i);h=v=this.text.length&&this.selectionEnd>=this.text.length||this._moveCursorUpOrDown("Down",t)},moveCursorDownWithoutShift:function(t){return this._selectionDirection="right",this.selectionEnd=this.selectionEnd+t,this.selectionStart=this.selectionEnd,0!==t},swapSelectionPoints:function(){var t=this.selectionEnd;this.selectionEnd=this.selectionStart,this.selectionStart=t},moveCursorDownWithShift:function(t){return this.selectionEnd===this.selectionStart&&(this._selectionDirection="right"),"right"===this._selectionDirection?this.selectionEnd+=t:this.selectionStart+=t,this.selectionEndthis.text.length&&(this.selectionEnd=this.text.length),0!==t},getUpCursorOffset:function(t,e){var i=e?this.selectionEnd:this.selectionStart,r=this.get2DCursorLocation(i),n=r.lineIndex;if(0===n||t.metaKey||33===t.keyCode)return i;for(var s,o=this._textLines[n].slice(0,r.charIndex),a=this._textLines[n-1]||"",h=this._getLineWidth(this.ctx,r.lineIndex),c=this._getLineLeftOffset(h),l=c,u=0,f=o.length;ui){r=!0;var d=a-f,g=a,p=Math.abs(d-i),v=Math.abs(g-i);h=v=this.text.length&&this.selectionEnd>=this.text.length||this._moveCursorLeftOrRight("Right",t)},_moveCursorLeftOrRight:function(t,e){var i="moveCursor"+t+"With";this._currentCursorOpacity=1,i+=e.shiftKey?"Shift":"outShift",this[i](e)&&(this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorRightWithShift:function(t){return"left"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveRight(t,"selectionStart"):this.selectionEnd!==this.text.length?(this._selectionDirection="right",this._moveRight(t,"selectionEnd")):void 0},moveCursorRightWithoutShift:function(t){var e=!0;return this._selectionDirection="right",this.selectionStart===this.selectionEnd?(e=this._moveRight(t,"selectionStart"),this.selectionEnd=this.selectionStart):this.selectionStart=this.selectionEnd,e},removeChars:function(t){this.selectionStart===this.selectionEnd?this._removeCharsNearCursor(t):this._removeCharsFromTo(this.selectionStart,this.selectionEnd),this.setSelectionEnd(this.selectionStart),this._removeExtraneousStyles(),this.canvas&&this.canvas.renderAll(),this.setCoords(),this.fire("changed"),this.canvas&&this.canvas.fire("text:changed",{target:this})},_removeCharsNearCursor:function(t){if(0!==this.selectionStart)if(t.metaKey){var e=this.findLineBoundaryLeft(this.selectionStart);this._removeCharsFromTo(e,this.selectionStart),this.setSelectionStart(e)}else if(t.altKey){var i=this.findWordBoundaryLeft(this.selectionStart);this._removeCharsFromTo(i,this.selectionStart),this.setSelectionStart(i)}else this._removeSingleCharAndStyle(this.selectionStart),this.setSelectionStart(this.selectionStart-1)}}),function(){var t=fabric.util.toFixed,e=fabric.Object.NUM_FRACTION_DIGITS;fabric.util.object.extend(fabric.IText.prototype,{_setSVGTextLineText:function(t,e,i,r,n,s){this._getLineStyle(t)?this._setSVGTextLineChars(t,e,i,r,s):fabric.Text.prototype._setSVGTextLineText.call(this,t,e,i,r,n)},_setSVGTextLineChars:function(t,e,i,r,n){for(var s=this._textLines[t],o=0,a=this._getLineLeftOffset(this._getLineWidth(this.ctx,t))-this.width/2,h=this._getSVGLineTopOffset(t),c=this._getHeightOfLine(this.ctx,t),l=0,u=s.length;l\n'].join("")},_createTextCharSpan:function(i,r,n,s,o){var a=this.getSvgStyles.call(fabric.util.object.extend({visible:!0,fill:this.fill,stroke:this.stroke,type:"text",getSvgFilter:fabric.Object.prototype.getSvgFilter},r));return['\t\t\t',fabric.util.string.escapeXml(i),"\n"].join("")}})}(),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.clone;e.Textbox=e.util.createClass(e.IText,e.Observable,{type:"textbox",minWidth:20,dynamicMinWidth:0,__cachedLines:null,lockScalingY:!0,lockScalingFlip:!0,initialize:function(t,i){this.ctx=e.util.createCanvasElement().getContext("2d"),this.callSuper("initialize",t,i),this.setControlsVisibility(e.Textbox.getTextboxControlVisibility()),this._dimensionAffectingProps.width=!0},_initDimensions:function(t){this.__skipDimension||(t||(t=e.util.createCanvasElement().getContext("2d"),this._setTextStyles(t)),this.dynamicMinWidth=0,this._textLines=this._splitTextIntoLines(),this.dynamicMinWidth>this.width&&this._set("width",this.dynamicMinWidth),this._clearCache(),this.height=this._getTextHeight(t))},_generateStyleMap:function(){for(var t=0,e=0,i=0,r={},n=0;n=this.width&&!d?(n.push(s),s="",r=l,d=!0):r+=g,d||(s+=c),s+=a,u=this._measureText(t,c,i,h),h++,d=!1,l>f&&(f=l);return p&&n.push(s),f>this.dynamicMinWidth&&(this.dynamicMinWidth=f-g),n},_splitTextIntoLines:function(){var t=this.textAlign;this.ctx.save(),this._setTextStyles(this.ctx),this.textAlign="left";var e=this._wrapText(this.ctx,this.text);return this.textAlign=t,this.ctx.restore(),this._textLines=e,this._styleMap=this._generateStyleMap(),e},setOnGroup:function(t,e){"scaleX"===t&&(this.set("scaleX",Math.abs(1/e)),this.set("width",this.get("width")*e/("undefined"==typeof this.__oldScaleX?1:this.__oldScaleX)),this.__oldScaleX=e)},get2DCursorLocation:function(t){"undefined"==typeof t&&(t=this.selectionStart);for(var e=this._textLines.length,i=0,r=0;r=h.getMinWidth()?(h.set("width",c),!0):void 0},fabric.Group.prototype._refreshControlsVisibility=function(){if("undefined"!=typeof fabric.Textbox)for(var t=this._objects.length;t--;)if(this._objects[t]instanceof fabric.Textbox)return void this.setControlsVisibility(fabric.Textbox.getTextboxControlVisibility())};var e=fabric.util.object.clone;fabric.util.object.extend(fabric.Textbox.prototype,{_removeExtraneousStyles:function(){for(var t in this._styleMap)this._textLines[t]||delete this.styles[this._styleMap[t].line]},insertCharStyleObject:function(t,e,i){var r=this._styleMap[t];t=r.line,e=r.offset+e,fabric.IText.prototype.insertCharStyleObject.apply(this,[t,e,i])},insertNewlineStyleObject:function(t,e,i){var r=this._styleMap[t];t=r.line,e=r.offset+e,fabric.IText.prototype.insertNewlineStyleObject.apply(this,[t,e,i])},shiftLineStyles:function(t,i){var r=e(this.styles),n=this._styleMap[t];t=n.line;for(var s in this.styles){var o=parseInt(s,10);o>t&&(this.styles[o+i]=r[o],r[o-i]||delete this.styles[o])}},_getTextOnPreviousLine:function(t){for(var e=this._textLines[t-1];this._styleMap[t-2]&&this._styleMap[t-2].line===this._styleMap[t-1].line;)e=this._textLines[t-2]+e,t--;return e},removeStyleObject:function(t,e){var i=this.get2DCursorLocation(e),r=this._styleMap[i.lineIndex],n=r.line,s=r.offset+i.charIndex;this._removeStyleObject(t,i,n,s)}})}(),function(){var t=fabric.IText.prototype._getNewSelectionStartFromOffset;fabric.IText.prototype._getNewSelectionStartFromOffset=function(e,i,r,n,s){n=t.call(this,e,i,r,n,s);for(var o=0,a=0,h=0;h=n));h++)"\n"!==this.text[o+a]&&" "!==this.text[o+a]||a++;return n-h+a}}(),function(){function request(t,e,i){var r=URL.parse(t);r.port||(r.port=0===r.protocol.indexOf("https:")?443:80);var n=0===r.protocol.indexOf("https:")?HTTPS:HTTP,s=n.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(t){var r="";e&&t.setEncoding(e),t.on("end",function(){i(r)}),t.on("data",function(e){200===t.statusCode&&(r+=e)})});s.on("error",function(t){t.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(t.message),i(null)}),s.end()}function requestFs(t,e){var i=require("fs");i.readFile(t,function(t,i){if(t)throw fabric.log(t),t;e(i)})}if("undefined"==typeof document||"undefined"==typeof window){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(t,e,i){function r(r){r?(n.src=new Buffer(r,"binary"),n._src=t,e&&e.call(i,n)):(n=null,e&&e.call(i,null,!0))}var n=new Image;t&&(t instanceof Buffer||0===t.indexOf("data"))?(n.src=n._src=t,e&&e.call(i,n)):t&&0!==t.indexOf("http")?requestFs(t,r):t?request(t,"binary",r):e&&e.call(i,t)},fabric.loadSVGFromURL=function(t,e,i){t=t.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),0!==t.indexOf("http")?requestFs(t,function(t){fabric.loadSVGFromString(t.toString(),e,i)}):request(t,"",function(t){fabric.loadSVGFromString(t,e,i)})},fabric.loadSVGFromString=function(t,e,i){var r=(new DOMParser).parseFromString(t);fabric.parseSVGDocument(r.documentElement,function(t,i){e&&e(t,i)},i)},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.createCanvasForNode=function(t,e,i,r){r=r||i;var n=fabric.document.createElement("canvas"),s=new Canvas(t||600,e||600,r),o=new Canvas(t||600,e||600,r);n.style={},n.width=s.width,n.height=s.height;var a=fabric.Canvas||fabric.StaticCanvas,h=new a(n,i);return h.contextContainer=s.getContext("2d"),h.nodeCanvas=s,h.contextCache=o.getContext("2d"),h.nodeCacheCanvas=o,h.Font=Canvas.Font,h},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(t){return this.nodeCanvas.createJPEGStream(t)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(t,e){return origSetWidth.call(this,t,e),this.nodeCanvas.width=t,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(t,e){return origSetHeight.call(this,t,e),this.nodeCanvas.height=t,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 0e9a09d591be578a8daf6a6b0002fffd3515b46d..1b8630ff105e432c5618f444fd92ff2594cb141d 100644 GIT binary patch delta 60327 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 delta 60352 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 0 ? width : 0; } } else { ctx[method](chars, left, top); @@ -9917,7 +9921,7 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass({ additionalSpace = charCount * this._getWidthOfCharSpacing(); width += additionalSpace; } - return width; + return width > 0 ? width : 0; }, _getLeftOffset: function() { return -this.width / 2; @@ -10044,12 +10048,13 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass({ return 0; }, _measureLine: function(ctx, lineIndex) { - var line = this._textLines[lineIndex], width = ctx.measureText(line).width, additionalSpace = 0, charCount; + var line = this._textLines[lineIndex], width = ctx.measureText(line).width, additionalSpace = 0, charCount, finalWidth; if (this.charSpacing !== 0) { charCount = line.split("").length; additionalSpace = (charCount - 1) * this._getWidthOfCharSpacing(); } - return width + additionalSpace; + finalWidth = width + additionalSpace; + return finalWidth > 0 ? finalWidth : 0; }, _renderTextDecoration: function(ctx) { if (!this.textDecoration) { @@ -10467,7 +10472,7 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass({ } boundaries = { top: topOffset, - left: leftOffset, + left: leftOffset > 0 ? leftOffset : 0, lineLeft: lineLeftOffset }; this.cursorOffsetCache = boundaries; @@ -10510,7 +10515,7 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass({ if (this.lineHeight < 1 || i === endLine && this.lineHeight > 1) { lineHeight /= this.lineHeight; } - ctx.fillRect(boundaries.left + lineOffset, boundaries.top + boundaries.topOffset, boxWidth, lineHeight); + ctx.fillRect(boundaries.left + lineOffset, boundaries.top + boundaries.topOffset, boxWidth > 0 ? boxWidth : 0, lineHeight); boundaries.topOffset += realLineHeight; } }, @@ -10543,7 +10548,7 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass({ } }, _renderChar: function(method, ctx, lineIndex, i, _char, left, top, lineHeight) { - var charWidth, charHeight, shouldFill, shouldStroke, decl = this._getStyleDeclaration(lineIndex, i), offset, textDecoration, chars; + var charWidth, charHeight, shouldFill, shouldStroke, decl = this._getStyleDeclaration(lineIndex, i), offset, textDecoration, chars, additionalSpace, _charWidth; if (decl) { charHeight = this._getHeightOfChar(ctx, _char, lineIndex, i); shouldStroke = decl.stroke; @@ -10561,13 +10566,15 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass({ this._removeShadow(ctx); } if (this.charSpacing !== 0) { + additionalSpace = this._getWidthOfCharSpacing(); chars = _char.split(""); charWidth = 0; for (var j = 0, len = chars.length, char; j < len; j++) { char = chars[j]; shouldFill && ctx.fillText(char, left + charWidth, top); shouldStroke && ctx.strokeText(char, left + charWidth, top); - charWidth += ctx.measureText(char).width + this._getWidthOfCharSpacing(); + _charWidth = ctx.measureText(char).width + additionalSpace; + charWidth += _charWidth > 0 ? _charWidth : 0; } } else { shouldFill && ctx.fillText(_char, left, top); @@ -10719,7 +10726,7 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass({ width += this._getWidthOfCharSpacing(); } ctx.restore(); - return width; + return width > 0 ? width : 0; }, _getHeightOfChar: function(ctx, lineIndex, charIndex) { var style = this._getStyleDeclaration(lineIndex, charIndex); @@ -10740,7 +10747,7 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass({ width -= this._getWidthOfCharSpacing(); } this._isMeasuring = false; - return width; + return width > 0 ? width : 0; }, _getWidthOfSpace: function(ctx, lineIndex) { if (this.__widthOfSpace[lineIndex]) { @@ -12047,7 +12054,7 @@ fabric.util.object.extend(fabric.IText.prototype, { line += infix; } line += word; - infixWidth = this._measureText(ctx, infix, lineIndex, offset) + additionalSpace; + infixWidth = this._measureText(ctx, infix, lineIndex, offset); offset++; lineJustStarted = false; if (wordWidth > largestWordWidth) {