From 920c56ce529ed56a4e79a13bbfb19cec8f1bce20 Mon Sep 17 00:00:00 2001 From: Andrea Bogazzi Date: Mon, 27 Feb 2017 02:34:04 +0100 Subject: [PATCH] v177 (#3748) --- CHANGELOG.md | 11 ++++ HEADER.js | 2 +- ISSUE_TEMPLATE.md | 2 +- dist/fabric.js | 134 ++++++++++++++++++++--------------------- dist/fabric.min.js | 18 +++--- dist/fabric.min.js.gz | Bin 69708 -> 69740 bytes dist/fabric.require.js | 110 ++++++++++++++++++--------------- package.json | 2 +- 8 files changed, 151 insertions(+), 128 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2253a678..929d6f9c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,14 @@ +**Version 1.7.7** + +- Fix for opacity parsing in svg with nested opacities [#3747] (https://github.com/kangax/fabric.js/pull/3747) +- Fix text initialization and boundingrect [#3745] (https://github.com/kangax/fabric.js/pull/3745) +- Fix line bounding box [#3742] (https://github.com/kangax/fabric.js/pull/3742) +- Improvement: do not pollute style object while typing if not necessary [#3743](https://github.com/kangax/fabric.js/pull/3743) +- fix for broken prototype chain when restoring a dataless object on fill an stroke [#3735](https://github.com/kangax/fabric.js/pull/3735) +- fix for deselected event not fired on mouse actions [#3716](https://github.com/kangax/fabric.js/pull/3716) +- fix for blurriness introduced on 1.7.3 [#3721](https://github.com/kangax/fabric.js/pull/3721) + + **Version 1.7.6** - Fix: make the cacheCanvas created on the fly if not available [#3705](https://github.com/kangax/fabric.js/pull/3705) diff --git a/HEADER.js b/HEADER.js index 7c40bf7c..14b3a02c 100644 --- a/HEADER.js +++ b/HEADER.js @@ -1,6 +1,6 @@ /*! Fabric.js Copyright 2008-2015, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "1.7.6" }; +var fabric = fabric || { version: "1.7.7" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; } diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md index 34993e15..09d30880 100644 --- a/ISSUE_TEMPLATE.md +++ b/ISSUE_TEMPLATE.md @@ -25,7 +25,7 @@ Remove the template from below and provide thoughtful commentary *and code sampl ## Version -1.7.6 +1.7.7 ## Test Case http://jsfiddle.net/fabricjs/Da7SP/ diff --git a/dist/fabric.js b/dist/fabric.js index 8cef518b..e283b3c2 100644 --- a/dist/fabric.js +++ b/dist/fabric.js @@ -3242,7 +3242,8 @@ if (typeof console !== 'undefined') { 'stroke-opacity': 'strokeOpacity', 'stroke-width': 'strokeWidth', 'text-decoration': 'textDecoration', - 'text-anchor': 'originX' + 'text-anchor': 'originX', + opacity: 'opacity' }, colorAttributes = { @@ -3294,6 +3295,12 @@ if (typeof console !== 'undefined') { value = false; } } + else if (attr === 'opacity') { + value = parseFloat(value); + if (parentAttributes && typeof parentAttributes.opacity !== 'undefined') { + value *= parentAttributes.opacity; + } + } else if (attr === 'originX' /* text-anchor */) { value = value === 'start' ? 'left' : value === 'end' ? 'right' : 'center'; } @@ -3512,8 +3519,8 @@ if (typeof console !== 'undefined') { style.replace(/;\s*$/, '').split(';').forEach(function (chunk) { var pair = chunk.split(':'); - attr = normalizeAttr(pair[0].trim().toLowerCase()); - value = normalizeValue(attr, pair[1].trim()); + attr = pair[0].trim().toLowerCase(); + value = pair[1].trim(); oStyle[attr] = value; }); @@ -3529,8 +3536,8 @@ if (typeof console !== 'undefined') { continue; } - attr = normalizeAttr(prop.toLowerCase()); - value = normalizeValue(attr, style[prop]); + attr = prop.toLowerCase(); + value = style[prop]; oStyle[attr] = value; } @@ -3959,23 +3966,27 @@ if (typeof console !== 'undefined') { var ownAttributes = attributes.reduce(function(memo, attr) { value = element.getAttribute(attr); - if (value) { - attr = normalizeAttr(attr); - value = normalizeValue(attr, value, parentAttributes, fontSize); - + if (value) { // eslint-disable-line memo[attr] = value; } return memo; }, { }); - // add values parsed from style, which take precedence over attributes // (see: http://www.w3.org/TR/SVG/styling.html#UsingPresentationAttributes) ownAttributes = extend(ownAttributes, extend(getGlobalStylesForElement(element, svgUid), fabric.parseStyleAttribute(element))); - if (ownAttributes.font) { - fabric.parseFontDeclaration(ownAttributes.font, ownAttributes); + + var normalizedAttr, normalizedValue, normalizedStyle = {}; + for (var attr in ownAttributes) { + normalizedAttr = normalizeAttr(attr); + normalizedValue = normalizeValue(normalizedAttr, ownAttributes[attr], parentAttributes, fontSize); + normalizedStyle[normalizedAttr] = normalizedValue; } - return _setStrokeFillOpacity(extend(parentAttributes, ownAttributes)); + if (normalizedStyle && normalizedStyle.font) { + fabric.parseFontDeclaration(normalizedStyle.font, normalizedStyle); + } + var mergedAttrs = extend(parentAttributes, normalizedStyle); + return reAllowedParents.test(element.nodeName) ? mergedAttrs : _setStrokeFillOpacity(mergedAttrs); }, /** @@ -4085,8 +4096,8 @@ if (typeof console !== 'undefined') { for (var i = 0, len = propertyValuePairs.length; i < len; i++) { var pair = propertyValuePairs[i].split(/\s*:\s*/), - property = normalizeAttr(pair[0]), - value = normalizeValue(property, pair[1], pair[0]); + property = pair[0], + value = pair[1]; ruleObj[property] = value; } rule = match[1]; @@ -10678,10 +10689,13 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab this._beforeTransform(e, target); this._setupCurrentTransform(e, target); } - - if (target !== this.getActiveGroup() && target !== this.getActiveObject()) { + var activeObject = this.getActiveObject(); + if (target !== this.getActiveGroup() && target !== activeObject) { this.deactivateAll(); - target.selectable && this.setActiveObject(target, e); + if (target.selectable) { + activeObject && activeObject.fire('deselected', { e: e }); + this.setActiveObject(target, e); + } } } this._handleEvent(e, 'down', target ? target : null); @@ -12414,8 +12428,8 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.Stati width = dim.x * zoomX, height = dim.y * zoomY; return { - width: Math.ceil(width) + 2, - height: Math.ceil(height) + 2, + width: width + 2, + height: height + 2, zoomX: zoomX, zoomY: zoomY }; @@ -12439,8 +12453,8 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.Stati zoomX = dims.zoomX, zoomY = dims.zoomY; if (width !== this.cacheWidth || height !== this.cacheHeight) { - this._cacheCanvas.width = width; - this._cacheCanvas.height = height; + this._cacheCanvas.width = Math.ceil(width); + this._cacheCanvas.height = Math.ceil(height); this._cacheContext.translate(width / 2, height / 2); this._cacheContext.scale(zoomX, zoomY); this.cacheWidth = width; @@ -13356,8 +13370,12 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.Stati object = clone(object, true); if (forceAsync) { fabric.util.enlivenPatterns([object.fill, object.stroke], function(patterns) { - object.fill = patterns[0]; - object.stroke = patterns[1]; + if (typeof patterns[0] !== 'undefined') { + object.fill = patterns[0]; + } + if (typeof patterns[1] !== 'undefined') { + object.stroke = patterns[1]; + } var instance = extraParam ? new klass(object[extraParam], object) : new klass(object); callback && callback(instance); }); @@ -15305,10 +15323,11 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot // Line coords are distances from left-top of canvas to origin of line. // To render line in a path-group, we need to translate them to // distances from center of path-group to center of line. - var cp = this.getCenterPoint(); + var cp = this.getCenterPoint(), + offset = this.strokeWidth / 2; ctx.translate( - cp.x - this.strokeWidth / 2, - cp.y - this.strokeWidth / 2 + cp.x - (this.strokeLineCap === 'butt' && this.height === 0 ? 0 : offset), + cp.y - (this.strokeLineCap === 'butt' && this.width === 0 ? 0 : offset) ); } @@ -15360,10 +15379,10 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot _getNonTransformedDimensions: function() { var dim = this.callSuper('_getNonTransformedDimensions'); if (this.strokeLineCap === 'butt') { - if (dim.x === 0) { + if (this.width === 0) { dim.y -= this.strokeWidth; } - if (dim.y === 0) { + if (this.height === 0) { dim.x -= this.strokeWidth; } } @@ -17897,7 +17916,7 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot var originalPaths = object.paths; delete object.paths; // remove this pattern from 2.0 accepts only object - if (typeof orignalPaths === 'string') { + if (typeof originalPaths === 'string') { fabric.loadSVGFromURL(originalPaths, function (elements) { var pathUrl = originalPaths; var pathGroup = fabric.util.groupSVGElements(elements, object, pathUrl); @@ -21736,6 +21755,7 @@ fabric.Image.filters.BaseFilter.fromObject = function(object, callback) { this.callSuper('initialize', options); this.__skipDimension = false; this._initDimensions(); + this.setCoords(); this.setupState({ propertySet: '_dimensionAffectingProps' }); }, @@ -21781,9 +21801,9 @@ fabric.Image.filters.BaseFilter.fromObject = function(object, callback) { */ _getCacheCanvasDimensions: function() { var dim = this.callSuper('_getCacheCanvasDimensions'); - var fontSize = Math.ceil(this.fontSize) * 2; - dim.width += fontSize; - dim.height += fontSize; + var fontSize = this.fontSize * 2; + dim.width += fontSize * dim.zoomX; + dim.height += fontSize * dim.zoomY; return dim; }, @@ -23138,9 +23158,7 @@ fabric.Image.filters.BaseFilter.fromObject = function(object, callback) { lineIndex = cursorLocation.lineIndex, charIndex = cursorLocation.charIndex, charHeight = this.getCurrentCharFontSize(lineIndex, charIndex), - leftOffset = (lineIndex === 0 && charIndex === 0) - ? this._getLineLeftOffset(this._getLineWidth(ctx, lineIndex)) - : boundaries.leftOffset, + leftOffset = boundaries.leftOffset, multiplier = this.scaleX * this.canvas.getZoom(), cursorWidth = this.cursorWidth / multiplier; @@ -24261,9 +24279,7 @@ fabric.Image.filters.BaseFilter.fromObject = function(object, callback) { lineIndex = cursorLocation.lineIndex, charIndex = cursorLocation.charIndex, charHeight = this.getCurrentCharFontSize(lineIndex, charIndex), - leftOffset = (lineIndex === 0 && charIndex === 0) - ? this._getLineLeftOffset(this._getLineWidth(this.ctx, lineIndex)) - : boundaries.leftOffset, + leftOffset = boundaries.leftOffset, m = this.calcTransformMatrix(), p = { x: boundaries.left + leftOffset, @@ -24467,10 +24483,6 @@ fabric.Image.filters.BaseFilter.fromObject = function(object, callback) { this.shiftLineStyles(lineIndex, +1); - if (!this.styles[lineIndex + 1]) { - this.styles[lineIndex + 1] = {}; - } - var currentCharStyle = {}, newLineStyles = {}; @@ -24480,21 +24492,24 @@ fabric.Image.filters.BaseFilter.fromObject = function(object, callback) { // if there's nothing after cursor, // we clone current char style onto the next (otherwise empty) line - if (isEndOfLine) { + if (isEndOfLine && currentCharStyle) { newLineStyles[0] = clone(currentCharStyle); this.styles[lineIndex + 1] = newLineStyles; } // otherwise we clone styles of all chars // after cursor onto the next line, from the beginning else { + var somethingAdded = false; for (var index in this.styles[lineIndex]) { - if (parseInt(index, 10) >= charIndex) { - newLineStyles[parseInt(index, 10) - charIndex] = this.styles[lineIndex][index]; + var numIndex = parseInt(index, 10); + if (numIndex >= charIndex) { + somethingAdded = true; + newLineStyles[numIndex - charIndex] = this.styles[lineIndex][index]; // remove lines from the previous line since they're on a new line now delete this.styles[lineIndex][index]; } } - this.styles[lineIndex + 1] = newLineStyles; + somethingAdded && (this.styles[lineIndex + 1] = newLineStyles); } this._forceClearCache = true; }, @@ -24528,9 +24543,8 @@ fabric.Image.filters.BaseFilter.fromObject = function(object, callback) { } } } - - this.styles[lineIndex][charIndex] = - style || clone(currentLineStyles[charIndex - 1]); + var newStyle = style || currentLineStyles[charIndex - 1]; + newStyle && (this.styles[lineIndex][charIndex] = newStyle); this._forceClearCache = true; }, @@ -26225,8 +26239,6 @@ fabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.protot } }; - var clone = fabric.util.object.clone; - fabric.util.object.extend(fabric.Textbox.prototype, /** @lends fabric.IText.prototype */ { /** * @private @@ -26278,24 +26290,10 @@ fabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.protot */ shiftLineStyles: function(lineIndex, offset) { // shift all line styles by 1 upward - var clonedStyles = clone(this.styles), - map = this._styleMap[lineIndex]; - + var map = this._styleMap[lineIndex]; // adjust line index lineIndex = map.line; - - for (var line in this.styles) { - var numericLine = parseInt(line, 10); - - if (numericLine > lineIndex) { - this.styles[numericLine + offset] = clonedStyles[numericLine]; - - if (!clonedStyles[numericLine - offset]) { - delete this.styles[numericLine]; - } - } - } - //TODO: evaluate if delete old style lines with offset -1 + fabric.IText.prototype.shiftLineStyles.call(this, lineIndex, offset); }, /** diff --git a/dist/fabric.min.js b/dist/fabric.min.js index 26439d59..93da7d21 100644 --- a/dist/fabric.min.js +++ b/dist/fabric.min.js @@ -1,9 +1,9 @@ -var fabric=fabric||{version:"1.7.6"};"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(decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E")),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.iMatrix=[1,0,0,1,0,0],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)}},fabric.CommonMethods={_setOptions:function(t){for(var e in t)this.set(e,t[e])},_initGradient:function(t,e){!t||!t.colorStops||t instanceof fabric.Gradient||this.set(e,new fabric.Gradient(t))},_initPattern:function(t,e,i){!t||!t.source||t instanceof fabric.Pattern?i&&i():this.set(e,new fabric.Pattern(t,i))},_initClipping:function(t){if(t.clipTo&&"string"==typeof t.clipTo){var e=fabric.util.getFunctionBody(t.clipTo);"undefined"!=typeof e&&(this.clipTo=new Function("ctx",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,e){this[t]=e},toggle:function(t){var e=this.get(t);return"boolean"==typeof e&&this.set(t,!e),this},get:function(t){return this[t]}},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;var i,r=e.split("."),n=r.length,s=t||fabric.window;for(i=0;ir;)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){var e,i,r,n,s,o=t.prototype;for(e=o.stateProperties.length;e--;)i=o.stateProperties[e],r=i.charAt(0).toUpperCase()+i.slice(1),n="set"+r,s="get"+r,o[s]||(o[s]=function(t){return new Function('return this.get("'+t+'")')}(i)),o[n]||(o[n]=function(t){return new Function("value",'return this.set("'+t+'", value)')}(i))},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);var n,s,o=!0,a=t.getImageData(e,i,2*r||1,2*r||1),h=a.data.length;for(n=3;n0?D-=2*f:1===c&&D<0&&(D+=2*f);for(var E=Math.ceil(Math.abs(D/f*2)),I=[],L=D/E,F=8/3*Math.sin(L/4)*Math.sin(L/4)/Math.sin(L/2),B=A+L,R=0;R=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,_=Math.sqrt,y=Math.min,x=Math.max,C=Math.abs,S=[],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),C(u)<1e-12){if(C(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){var r="rgba("+parseInt(t[0]+i*(e[0]-t[0]),10)+","+parseInt(t[1]+i*(e[1]-t[1]),10)+","+parseInt(t[2]+i*(e[2]-t[2]),10);return r+=","+(t&&e?parseFloat(t[3]+i*(e[3]-t[3])):1),r+=")"}function e(e,i,r,n){var s=new fabric.Color(e).getSource(),o=new fabric.Color(i).getSource();n=n||{},fabric.util.animate(fabric.util.object.extend(n,{duration:r||500,startValue:s,endValue:o,byValue:o,easing:function(e,i,r,s){var o=n.colorEasing?n.colorEasing(e,s):1-Math.cos(e/s*(Math.PI/2));return t(i,r,o)}}))}fabric.util.animateColor=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)&&(x=" translate("+_(f)+" "+_(d)+") "),r=x+" matrix("+o+" 0 0 "+a+" "+h*o+" "+c*a+") ","svg"===t.nodeName){for(n=t.ownerDocument.createElement("g");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,e){for(;t&&(t=t.parentNode);)if(t.nodeName&&e.test(t.nodeName.replace("svg:",""))&&!t.getAttribute("instantiated_by_use"))return!0; -return!1}var p=t.fabric||(t.fabric={}),v=p.util.object.extend,b=p.util.object.clone,m=p.util.toFixed,_=p.util.parseUnit,y=p.util.multiplyTransformMatrices,x=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/i,C=/^(symbol|image|marker|pattern|view|svg)$/i,S=/^(?:pattern|defs|symbol|metadata|clipPath|mask)$/i,w=/^(symbol|g|a|svg)$/i,O={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"},T={stroke:"strokeOpacity",fill:"fillOpacity"};p.cssRules={},p.gradientDefs={},p.parseTransformAttribute=function(){function t(t,e){var i=Math.cos(e[0]),r=Math.sin(e[0]),n=0,s=0;3===e.length&&(n=e[1],s=e[2]),t[0]=i,t[1]=r,t[2]=-r,t[3]=i,t[4]=n-(i*n-r*s),t[5]=s-(r*n+i*s)}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,i){t[i]=Math.tan(p.util.degreesToRadians(e[0]))}function r(t,e){t[4]=e[0],2===e.length&&(t[5]=e[1])}var n=[1,0,0,1,0,0],s=p.reNum,o="(?:\\s+,?\\s*|,\\s*)",a="(?:(skewX)\\s*\\(\\s*("+s+")\\s*\\))",h="(?:(skewY)\\s*\\(\\s*("+s+")\\s*\\))",c="(?:(rotate)\\s*\\(\\s*("+s+")(?:"+o+"("+s+")"+o+"("+s+"))?\\s*\\))",l="(?:(scale)\\s*\\(\\s*("+s+")(?:"+o+"("+s+"))?\\s*\\))",u="(?:(translate)\\s*\\(\\s*("+s+")(?:"+o+"("+s+"))?\\s*\\))",f="(?:(matrix)\\s*\\(\\s*("+s+")"+o+"("+s+")"+o+"("+s+")"+o+"("+s+")"+o+"("+s+")"+o+"("+s+")\\s*\\))",d="(?:"+f+"|"+u+"|"+l+"|"+c+"|"+a+"|"+h+")",g="(?:"+d+"(?:"+o+"*"+d+")*)",v="^\\s*(?:"+g+"?)\\s*$",b=new RegExp(v),m=new RegExp(d,"g");return function(s){var o=n.concat(),a=[];if(!s||s&&!b.test(s))return o;s.replace(m,function(s){var h=new RegExp(d).exec(s).filter(function(t){return!!t}),c=h[1],l=h.slice(2).map(parseFloat);switch(c){case"translate":r(o,l);break;case"rotate":l[0]=p.util.degreesToRadians(l[0]),t(o,l);break;case"scale":e(o,l);break;case"skewX":i(o,l,2);break;case"skewY":i(o,l,1);break;case"matrix":o=l}a.push(o.concat()),o=n.concat()});for(var h=a[0];a.length>1;)a.shift(),h=p.util.multiplyTransformMatrices(h,a[0]);return h}}();var j=new RegExp("^\\s*("+p.reNum+"+)\\s*,?\\s*("+p.reNum+"+)\\s*,?\\s*("+p.reNum+"+)\\s*,?\\s*("+p.reNum+"+)\\s*$");p.parseSVGDocument=function(t,e,i){if(t){f(t);var r=p.Object.__uid++,n=d(t),s=p.util.toArray(t.getElementsByTagName("*"));if(n.svgUid=r,0===s.length&&p.isLikelyNode){s=t.selectNodes('//*[name(.)!="svg"]');for(var o=[],a=0,h=s.length;a/i,""))),r&&r.documentElement||e&&e(null),p.parseSVGDocument(r.documentElement,function(t,i){e&&e(t,i)},i)}t=t.replace(/^\n\s*/,"").trim(),new p.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 p.window.ActiveXObject&&(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(t.replace(//i,"")));p.parseSVGDocument(r.documentElement,function(t,i){e(t,i)},i)}})}("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(t){var e={type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY,gradientTransform:this.gradientTransform?this.gradientTransform.concat():this.gradientTransform};return fabric.util.populateWithProperties(this,e,t),e},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'},setOptions:function(t){for(var e in t)this[e]=t[e]},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=fabric.util.transformPoint,s=fabric.util.invertTransform,o=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass(fabric.CommonMethods,{initialize:function(t,e){e||(e={}),this._initStatic(t,e)},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!1,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!1,imageSmoothingEnabled:!0,viewportTransform:fabric.iMatrix.concat(),backgroundVpt:!0,overlayVpt:!0,onBeforeScaleRotate:function(){},enableRetinaScaling:!0,vptCoords:{},_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){return this[t]=e,this._initGradient(e,t),this._initPattern(e,t,i),this},_createCanvasElement:function(t){var e=fabric.util.createCanvasElement(t);if(e.style||(e.style={}),!e)throw o;if("undefined"==typeof e.getContext)throw o;return e},_initOptions:function(t){this._setOptions(t),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(t),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 this.viewportTransform[0]},setViewportTransform:function(t){var e,i=this._activeGroup,r=!1,n=!0;this.viewportTransform=t;for(var s=0,o=this._objects.length;s"),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","\n",this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),"\n")},createSVGRefElementsMarkup:function(){var t=this,e=["backgroundColor","overlayColor"].map(function(e){var i=t[e];if(i&&i.toLive)return i.toSVG(t,!1)});return e.join("")},createSVGFontFacesMarkup:function(){for(var t,e,i,r,n,s,o,a="",h={},c=fabric.fontPaths,l=this.getObjects(),u=0,f=l.length;u',"\n",a,"","\n"].join("")),a},_setSVGObjects:function(t,e){for(var i,r=0,n=this.getObjects(),s=n.length;r\n")}else t.push('\n")},sendToBack:function(t){if(!t)return this;var e,r,n,s=this._activeGroup;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._activeGroup;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._activeGroup;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,e=this.canvas.getZoom();t.shadowColor=this.shadow.color,t.shadowBlur=this.shadow.blur*e,t.shadowOffsetX=this.shadow.offsetX*e,t.shadowOffsetY=this.shadow.offsetY*e}},_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&&cs?t.x<0?t.x+=s:t.x-=s:t.x=0,n(t.y)>s?t.y<0?t.y+=s:t.y-=s: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),h=!0;if(a<0&&(a=360+a),a%=360,n.target.snapAngle>0){var c=n.target.snapAngle,l=n.target.snapThreshold||c,u=Math.ceil(a/c)*c,f=Math.floor(a/c)*c;Math.abs(a-f)0?0:-i),e.ey-(r>0?0:-r),a,h)),this.selectionLineWidth&&this.selectionBorderColor)if(t.lineWidth=this.selectionLineWidth,t.strokeStyle=this.selectionBorderColor,this.selectionDashArray.length>1&&!s){var c=e.ex+o-(i>0?0:a),l=e.ey+o-(r>0?0:h);t.beginPath(),fabric.util.drawDashedLine(t,c,l,c+a,l,this.selectionDashArray),fabric.util.drawDashedLine(t,c,l+h-1,c+a,l+h-1,this.selectionDashArray),fabric.util.drawDashedLine(t,c,l,c,l+h,this.selectionDashArray),fabric.util.drawDashedLine(t,c+a-1,l,c+a-1,l+h,this.selectionDashArray),t.closePath(),t.stroke()}else fabric.Object.prototype._setLineDash.call(this,t,this.selectionDashArray),t.strokeRect(e.ex+o-(i>0?0:a),e.ey+o-(r>0?0:h),a,h)},findTarget:function(t,e){if(!this.skipTargetFind){var i,r=!0,n=this.getPointer(t,r),s=this.getActiveGroup(),o=this.getActiveObject();if(s&&!e&&s===this._searchPossibleTargets([s],n))return this._fireOverOutEvents(s,t),s;if(o&&o._findTargetCorner(n))return this._fireOverOutEvents(o,t),o;if(o&&o===this._searchPossibleTargets([o],n)){if(!this.preserveObjectStacking)return this._fireOverOutEvents(o,t),o;i=o}this.targets=[];var a=this._searchPossibleTargets(this._objects,n);return t[this.altSelectionKey]&&a&&i&&a!==i&&(a=i),this._fireOverOutEvents(a,t),a}},_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,"touch-action":"none"}),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){var e=this._activeObject;e&&(e.set("active",!1),t!==e&&e.onDeselect&&"function"==typeof e.onDeselect&&e.onDeselect()),this._activeObject=t,t.set("active",!0)},setActiveObject:function(t,e){var i=this.getActiveObject();return i&&i!==t&&i.fire("deselected",{e:e}),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._hoveredTarget===t&&(this._hoveredTarget=null),this.callSuper("_onObjectRemoved",t)},_discardActiveObject:function(){var t=this._activeObject;t&&(t.set("active",!1),t.onDeselect&&"function"==typeof t.onDeselect&&t.onDeselect()),this._activeObject=null},discardActiveObject:function(t){var e=this._activeObject;return e&&(this.fire("before:selection:cleared",{target:e,e:t}),this._discardActiveObject(),this.fire("selection:cleared",{e:t}),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 e&&(this.fire("before:selection:cleared",{e:t,target:e}),this._discardActiveGroup(),this.fire("selection:cleared",{e:t})),this},deactivateAll:function(){for(var t,e=this.getObjects(),i=0,r=e.length;i1)){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._handleEvent(t,"wheel")},_transformObject:function(t){var e=this.getPointer(t),i=this._currentTransform;i.reset=!1,i.target.isMoving=!0,i.shiftKey=t.shiftKey,i.altKey=t[this.centeredKey],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=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||!e.selectable)return this.setCursor(this.defaultCursor),!1;var i=e.hoverCursor||this.hoverCursor,r=this.getActiveGroup(),n=e._findTargetCorner&&(!r||!r.contains(e))&&e._findTargetCorner(this.getPointer(t,!0));return n?this._setCornerCursor(n,e,t):this.setCursor(i),!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}})}(),function(){var t=fabric.StaticCanvas.supports("toDataURLWithQuality");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||0,top:t.top||0,width:t.width||0,height:t.height||0};return this.__toDataURLWithMultiplier(e,i,n,r)},__toDataURLWithMultiplier:function(t,e,i,r){var n=this.getWidth(),s=this.getHeight(),o=(i.width||this.getWidth())*r,a=(i.height||this.getHeight())*r,h=this.getZoom(),c=h*r,l=this.viewportTransform,u=(l[4]-i.left)*r,f=(l[5]-i.top)*r,d=[c,0,0,c,u,f],g=this.interactive;this.viewportTransform=d,this.interactive&&(this.interactive=!1),n!==o||s!==a?this.setDimensions({width:o,height:a}):this.renderAll();var p=this.__toDataURL(t,e,i);return g&&(this.interactive=g),this.viewportTransform=l,this.setDimensions({width:n,height:s}),p},__toDataURL:function(e,i){var r=this.contextContainer.canvas;"jpg"===e&&(e="jpeg");var n=t?r.toDataURL("image/"+e,i):r.toDataURL("image/"+e);return n},toDataURLWithMultiplier:function(t,e,i){return this.toDataURL({format:t,multiplier:e,quality:i})}})}(),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,n._setOptions(r),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)},__setBgOverlay:function(t,e,i,r){var n=this;return e?void("backgroundImage"===t||"overlayImage"===t?fabric.util.enlivenObjects([e],function(e){n[t]=e[0],i[t]=!0,r&&r()}):this["set"+fabric.util.string.capitalize(t,!0)](e,function(){i[t]=!0,r&&r()})):(i[t]=!0,void(r&&r()))},_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.object.clone,n=e.util.toFixed,s=e.util.string.capitalize,o=e.util.degreesToRadians,a=e.StaticCanvas.supports("setLineDash"),h=!e.isLikelyNode;e.Object||(e.Object=e.util.createClass(e.CommonMethods,{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,objectCaching:h,statefullCache:!1,noScaleCache:!0,dirty:!1,needsItsOwnCache:!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 skewX skewY".split(" "),cacheProperties:"fill stroke strokeWidth strokeDashArray width height stroke strokeWidth strokeDashArray strokeLineCap strokeLineJoin strokeMiterLimit fillRule backgroundColor".split(" "),initialize:function(t){t=t||{},t&&this.setOptions(t),this.objectCaching&&(this._createCacheCanvas(),this.setupState({propertySet:"cacheProperties"}))},_createCacheCanvas:function(){this._cacheCanvas=e.document.createElement("canvas"),this._cacheContext=this._cacheCanvas.getContext("2d"),this._updateCacheCanvas()},_getCacheCanvasDimensions:function(){var t=this.canvas&&this.canvas.getZoom()||1,i=this.getObjectScaling(),r=this._getNonTransformedDimensions(),n=this.canvas&&this.canvas._isRetinaScaling()?e.devicePixelRatio:1,s=i.scaleX*t*n,o=i.scaleY*t*n,a=r.x*s,h=r.y*o;return{width:Math.ceil(a)+2,height:Math.ceil(h)+2,zoomX:s,zoomY:o}},_updateCacheCanvas:function(){if(this.noScaleCache&&this.canvas&&this.canvas._currentTransform){var t=this.canvas._currentTransform.action;if("scale"===t.slice(0,5))return!1}var e=this._getCacheCanvasDimensions(),i=e.width,r=e.height,n=e.zoomX,s=e.zoomY;return(i!==this.cacheWidth||r!==this.cacheHeight)&&(this._cacheCanvas.width=i,this._cacheCanvas.height=r,this._cacheContext.translate(i/2,r/2),this._cacheContext.scale(n,s),this.cacheWidth=i,this.cacheHeight=r,this.zoomX=n,this.zoomY=s,!0)},setOptions:function(t){this._setOptions(t),this._initGradient(t.fill,"fill"),this._initGradient(t.stroke,"stroke"),this._initClipping(t),this._initPattern(t.fill,"fill"),this._initPattern(t.stroke,"stroke")},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),this.angle&&t.rotate(o(this.angle)),t.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1)),this.skewX&&t.transform(1,0,Math.tan(o(this.skewX)),1,0,0),this.skewY&&t.transform(1,Math.tan(o(this.skewY)),0,1,0,0)},toObject:function(t){var i=e.Object.NUM_FRACTION_DIGITS,r={type:this.type,originX:this.originX,originY:this.originY,left:n(this.left,i),top:n(this.top,i),width:n(this.width,i),height:n(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:n(this.strokeWidth,i),strokeDashArray:this.strokeDashArray?this.strokeDashArray.concat():this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeLineJoin:this.strokeLineJoin,strokeMiterLimit:n(this.strokeMiterLimit,i),scaleX:n(this.scaleX,i),scaleY:n(this.scaleY,i),angle:n(this.getAngle(),i),flipX:this.flipX,flipY:this.flipY,opacity:n(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():null,skewX:n(this.skewX,i),skewY:n(this.skewY,i)};return e.util.populateWithProperties(this,r,t),this.includeDefaultValues||(r=this._removeDefaultValues(r)),r},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"#"},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}},_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?"dirty"===t&&this.group&&this.group.set("dirty",i):i=new e.Shadow(i),this[t]=i,this.cacheProperties.indexOf(t)>-1&&(this.group&&this.group.set("dirty",!0),this.dirty=!0),"width"!==t&&"height"!==t||(this.minScaleLimit=Math.min(.1,1/Math.max(this.width,this.height))),this},setOnGroup:function(){},setSourcePath:function(t){return this.sourcePath=t,this},getViewportTransform:function(){return this.canvas&&this.canvas.viewportTransform?this.canvas.viewportTransform:e.iMatrix.concat()},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._setOpacity(t),this._setShadow(t),this.transformMatrix&&t.transform.apply(t,this.transformMatrix),this.clipTo&&e.util.clipContext(this,t),!this.objectCaching||this.group&&!this.needsItsOwnCache?(this.drawObject(t,i),i&&this.objectCaching&&this.statefullCache&&this.saveState({propertySet:"cacheProperties"})):(this._cacheCanvas||this._createCacheCanvas(),this.isCacheDirty(i)&&(this.statefullCache&&this.saveState({propertySet:"cacheProperties"}),this.drawObject(this._cacheContext,i),this.dirty=!1),this.drawCacheOnCanvas(t)),this.clipTo&&t.restore(),t.restore())},drawObject:function(t,e){this._renderBackground(t),this._setStrokeStyles(t),this._setFillStyles(t),this._render(t,e)},drawCacheOnCanvas:function(t){t.scale(1/this.zoomX,1/this.zoomY),t.drawImage(this._cacheCanvas,-this.cacheWidth/2,-this.cacheHeight/2)},isCacheDirty:function(t){if(!t&&this._updateCacheCanvas())return!0;if(this.dirty||this.statefullCache&&this.hasStateChanged("cacheProperties")){if(!t){var e=this.cacheWidth/this.zoomX,i=this.cacheHeight/this.zoomY;this._cacheContext.clearRect(-e/2,-i/2,e,i)}return!0}return!1},_renderBackground:function(t){if(this.backgroundColor){var e=this._getNonTransformedDimensions();t.fillStyle=this.backgroundColor,t.fillRect(-e.x/2,-e.y/2,e.x,e.y),this._removeShadow(t)}},_setOpacity:function(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),a?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(),s=this.calcTransformMatrix();s=e.util.multiplyTransformMatrices(n,s),r=e.util.qrDecompose(s),t.save(),t.translate(r.translateX,r.translateY),t.lineWidth=1*this.borderScaleFactor,this.group||(t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1),this.group&&this.group===this.canvas.getActiveGroup()?(t.rotate(o(r.angle)),this.drawBordersInGroup(t,r)):(t.rotate(o(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)},_applyPatternGradientTransform:function(t,e){if(e.toLive){var i=e.gradientTransform||e.patternTransform;i&&t.transform.apply(t,i);var r=-this.width/2+e.offsetX||0,n=-this.height/2+e.offsetY||0;t.translate(r,n)}},_renderFill:function(t){this.fill&&(t.save(),this._applyPatternGradientTransform(t,this.fill),"evenodd"===this.fillRule?t.fill("evenodd"):t.fill(),t.restore())},_renderStroke:function(t){this.stroke&&0!==this.strokeWidth&&(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(t),t.save(),this._setLineDash(t,this.strokeDashArray,this._renderDashedStroke),this._applyPatternGradientTransform(t,this.stroke),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 1},toJSON:function(t){return this.toObject(t)},setGradient:function(t,i){i||(i={});var r={colorStops:[]};return 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),r.gradientTransform=i.gradientTransform,e.Gradient.prototype.addColorStop.call(r,i.colorStops),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,o(-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._fromObject=function(t,i,n,s,o){var a=e[t];if(i=r(i,!0),!s){var h=o?new a(i[o],i):new a(i);return n&&n(h),h}e.util.enlivenPatterns([i.fill,i.stroke],function(t){i.fill=t[0],i.stroke=t[1];var e=o?new a(i[o],i):new a(i);n&&n(e)})},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,aCoords:null,getCoords:function(e,i){this.oCoords||this.setCoords();var r=e?this.aCoords:this.oCoords;return t(i?this.calcCoords(e):r)},intersectsWithRect:function(t,e,i,r){var n=this.getCoords(i,r),s=fabric.Intersection.intersectPolygonRectangle(n,t,e);return"Intersection"===s.status},intersectsWithObject:function(t,e,i){var r=fabric.Intersection.intersectPolygonPolygon(this.getCoords(e,i),t.getCoords(e,i));return"Intersection"===r.status||t.isContainedWithinObject(this,e,i)||this.isContainedWithinObject(t,e,i)},isContainedWithinObject:function(t,e,i){for(var r=this.getCoords(e,i),n=0,s=t._getImageLines(i?t.calcCoords(e):e?t.aCoords:t.oCoords);n<4;n++)if(!t.containsPoint(r[n],s))return!1;return!0},isContainedWithinRect:function(t,e,i,r){var n=this.getBoundingRect(i,r);return n.left>=t.x&&n.left+n.width<=e.x&&n.top>=t.y&&n.top+n.height<=e.y},containsPoint:function(t,e,i,r){var e=e||this._getImageLines(r?this.calcCoords(i):i?this.aCoords:this.oCoords),n=this._findCrossPoints(t,e);return 0!==n&&n%2===1},isOnScreen:function(t){if(!this.canvas)return!1;for(var e,i=this.canvas.vptCoords.tl,r=this.canvas.vptCoords.br,n=this.getCoords(!0,t),s=0;s<4;s++)if(e=n[s],e.x<=r.x&&e.x>=i.x&&e.y<=r.y&&e.y>=i.y)return!0;return!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=0;for(var c in e)if(a=e[c],!(a.o.y=t.y&&a.d.y>=t.y||(a.o.x===a.d.x&&a.o.x>=t.x?o=a.o.x:(i=0,r=(a.d.y-a.o.y)/(a.d.x-a.o.x),n=t.y-i*t.x,s=a.o.y-r*a.o.x,o=-(n-s)/(i-r)),o>=t.x&&(h+=1),2!==h)))break;return h},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(t,e){var i=this.getCoords(t,e);return fabric.util.makeBoundingBoxFromPoints(i)},getWidth:function(){return this._getTransformedDimensions().x},getHeight:function(){return this._getTransformedDimensions().y},_constrainScale:function(t){return Math.abs(t)0?Math.atan(o/s):0,l=s/Math.cos(c)/2,u=Math.cos(c+i)*l,f=Math.sin(c+i)*l,d=this.getCenterPoint(),g=t?d:fabric.util.transformPoint(d,r),p=new fabric.Point(g.x-u,g.y-f),v=new fabric.Point(p.x+s*h,p.y+s*a),b=new fabric.Point(p.x-o*a,p.y+o*h),m=new fabric.Point(g.x+u,g.y+f);if(!t)var _=new fabric.Point((p.x+b.x)/2,(p.y+b.y)/2),y=new fabric.Point((v.x+p.x)/2,(v.y+p.y)/2),x=new fabric.Point((m.x+v.x)/2,(m.y+v.y)/2),C=new fabric.Point((m.x+b.x)/2,(m.y+b.y)/2),S=new fabric.Point(y.x+a*this.rotatingPointOffset,y.y-h*this.rotatingPointOffset);var g={tl:p,tr:v,br:m,bl:b};return t||(g.ml=_,g.mt=y,g.mr=x,g.mb=C,g.mtr=S),g},setCoords:function(t,e){return this.oCoords=this.calcCoords(t),e||(this.aCoords=this.calcCoords(!0)),t||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 fabric.iMatrix.concat()},calcTransformMatrix:function(t){var e=this.getCenterPoint(),r=[1,0,0,1,e.x,e.y],n=this._calcRotateMatrix(),s=this._calcDimensionsTransformMatrix(this.skewX,this.skewY,!0),o=this.group&&!t?this.group.calcTransformMatrix():fabric.iMatrix.concat();return o=i(o,r),o=i(o,n),o=i(o,s)},_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)},_getNonTransformedDimensions:function(){var t=this.strokeWidth,e=this.width+t,i=this.height+t;return{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("")}}),i.Line.ATTRIBUTE_NAMES=i.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),i.Line.fromElement=function(t,e){e=e||{};var n=i.parseAttributes(t,i.Line.ATTRIBUTE_NAMES),s=[n.x1||0,n.y1||0,n.x2||0,n.y2||0];return e.originX="left",e.originY="top",new i.Line(s,r(n,e))},i.Line.fromObject=function(t,e,r){function s(t){delete t.points,e&&e(t)}var o=n(t,!0);o.points=[t.x1,t.y1,t.x2,t.y2];var a=i.Object._fromObject("Line",o,s,r,"points");return a&&delete a.points,a}}("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;if(i.Circle)return void i.warn("fabric.Circle is already defined.");var s=i.Object.prototype.cacheProperties.concat();s.push("radius"),i.Circle=i.util.createClass(i.Object,{type:"circle",radius:0,startAngle:0,endAngle:2*r,cacheProperties:s,initialize:function(t){this.callSuper("initialize",t),this.set("radius",t&&t.radius||0)},_set:function(t,e){return this.callSuper("_set",t,e),"radius"===t&&this.setRadius(e),this},toObject:function(t){return this.callSuper("toObject",["radius","startAngle","endAngle"].concat(t))},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)}}),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},i.Circle.fromObject=function(t,e,r){return i.Object._fromObject("Circle",t,e,r)}}("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){this.callSuper("initialize",t),this.set("width",t&&t.width||100).set("height",t&&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("")}}),void(e.Triangle.fromObject=function(t,i,r){return e.Object._fromObject("Triangle",t,i,r)}))}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=2*Math.PI,r=e.util.object.extend;if(e.Ellipse)return void e.warn("fabric.Ellipse is already defined.");var n=e.Object.prototype.cacheProperties.concat();n.push("rx","ry"),e.Ellipse=e.util.createClass(e.Object,{type:"ellipse",rx:0,ry:0,cacheProperties:n,initialize:function(t){this.callSuper("initialize",t),this.set("rx",t&&t.rx||0),this.set("ry",t&&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 this.callSuper("toObject",["rx","ry"].concat(t))},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)}}),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},e.Ellipse.fromObject=function(t,i,r){return e.Object._fromObject("Ellipse",t,i,r)}}("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"),e.Rect=e.util.createClass(e.Object,{stateProperties:r,type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(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){return this.callSuper("toObject",["rx","ry"].concat(t))},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("")}}),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,i,r){return e.Object._fromObject("Rect",t,i,r)}}("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.toFixed;if(e.Polyline)return void e.warn("fabric.Polyline is already defined");var o=e.Object.prototype.cacheProperties.concat();o.push("points"),e.Polyline=e.util.createClass(e.Object,{type:"polyline",points:null,minX:0,minY:0,cacheProperties:o,initialize:function(t,e){e=e||{},this.points=t||[],this.callSuper("initialize",e),this._calcDimensions(),"top"in e||(this.top=this.minY),"left"in e||(this.left=this.minX),this.pathOffset={x:this.minX+this.width/2,y:this.minY+this.height/2}},_calcDimensions:function(){var t=this.points,e=r(t,"x"),i=r(t,"y"),s=n(t,"x"),o=n(t,"y");this.width=s-e||0,this.height=o-i||0,this.minX=e||0,this.minY=i||0},toObject:function(t){return i(this.callSuper("toObject",t),{points:this.points.concat()})},toSVG:function(t){for(var e,i=[],r=this._createBaseSVGMarkup(),n=0,o=this.points.length;n\n'),t?t(r.join("")):r.join("")},commonRender:function(t,e){var i,r=this.points.length,n=e?0:this.pathOffset.x,s=e?0:this.pathOffset.y;if(!r||isNaN(this.points[r-1].y))return!1;t.beginPath(),t.moveTo(this.points[0].x-n,this.points[0].y-s);for(var o=0;o"},toObject:function(t){var e=n(this.callSuper("toObject",["sourcePath","pathOffset"].concat(t)),{path:this.path.map(function(t){return t.slice()}),top:this.top,left:this.left});return 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){var r=t.paths;delete t.paths,"string"==typeof orignalPaths?e.loadSVGFromURL(r,function(n){var s=r,o=e.util.groupSVGElements(n,t,s);t.paths=r,i(o)}):e.util.enlivenObjects(r,function(n){var s=new e.PathGroup(n,t);t.paths=r,i(s)})},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;if(!e.Group){var s={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.getCenterPoint(),i=this._objects.length;i--;)this._updateObjectCoords(this._objects[i],e,t)},_updateObjectCoords:function(t,e,i){if(t.__origHasControls=t.hasControls,t.hasControls=!1,!i){var r=t.getLeft(),n=t.getTop(),s=!0,o=!0;t.set({left:r-e.x,top:n-e.y}),t.setCoords(s,o)}},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.dirty=!0,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.dirty=!0,this},_onObjectAdded:function(t){this.dirty=!0,t.group=this,t._set("canvas",this.canvas)},_onObjectRemoved:function(t){this.dirty=!0,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){var e=this.getObjects().map(function(e){var i=e.includeDefaultValues;e.includeDefaultValues=e.group.includeDefaultValues;var r=e.toObject(t);return e.includeDefaultValues=i,r});return i(this.callSuper("toObject",t),{objects:e})},render:function(t){this._transformDone=!0,this.callSuper("render",t),this._transformDone=!1},drawObject:function(t){for(var e=0,i=this._objects.length;e\n');for(var i=0,r=this._objects.length;i\n"),t?t(e.join("")):e.join("")},get:function(t){if(t in s){if(this[t])return this[t];for(var e=0,i=this._objects.length;e\n',"\n"),this.stroke||this.strokeDashArray){var o=this.fill;this.fill=null,e.push("\n'),this.fill=o}return e.push("\n"),t?t(e.join("")):e.join("")},getSrc:function(t){var e=t?this._element:this._originalElement;return e?fabric.isLikelyNode?e._src:e.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'#'},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()}}),fabric.Image.filters.BaseFilter.fromObject=function(t,e){var i=new fabric.Image.filters[t.type](t);return e&&e(i),i},function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.Image.filters,n=e.util.createClass;r.Brightness=n(r.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[S*d+w],e+=p[h]*c,i+=p[h+1]*c,r+=p[h+2]*c,n+=p[h+3]*c);_[s]=e,_[s+1]=i,_[s+2]=r,_[s+3]=n+y*(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=e.Image.filters.BaseFilter.fromObject}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.Image.filters,n=e.util.createClass;r.GradientTransparency=n(r.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,k,M,P,A,D,E;for(T.x=(t+.5)*_,j.x=r(T.x),h=0;h=e)){D=r(1e3*s(c-T.x)),O[D]||(O[D]={});for(var I=j.y-w;I<=j.y+w;I++)I<0||I>=o||(E=r(1e3*s(I-T.y)),O[D][E]||(O[D][E]=m(n(i(D*x,2)+i(E*C,2))/1e3)),u=O[D][E],u>0&&(d=4*(I*e+c),g+=u,k+=u*v[d],M+=u*v[d+1],P+=u*v[d+2],A+=u*v[d+3]))}d=4*(h*a+t),b[d]=k/g,b[d+1]=M/g,b[d+2]=P/g,b[d+3]=A/g}return++t1&&L<-1||(x=2*L*L*L-3*L*L+1,x>0&&(I=4*(E+M*e),j+=x*p[I+3],S+=x,p[I+3]<255&&(x=x*p[I+3]/250),w+=x*p[I],O+=x*p[I+1],T+=x*p[I+2],C+=x))}b[y]=w/C,b[y+1]=O/C,b[y+2]=T/C,b[y+3]=j/S}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=e.Image.filters.BaseFilter.fromObject}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.Image.filters,n=e.util.createClass;r.ColorMatrix=n(r.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'},_getCacheCanvasDimensions:function(){var t=this.callSuper("_getCacheCanvasDimensions"),e=2*Math.ceil(this.fontSize);return t.width+=e,t.height+=e,t},_render:function(t){this._setTextStyles(t),this.group&&"path-group"===this.group.type&&t.translate(this.left,this.top),this._renderTextLinesBackground(t),this._renderText(t),this._renderTextDecoration(t)},_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},_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;t.fillStyle=s,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=[]},_shouldClearDimensionCache:function(){var t=this._forceClearCache;return t||(t=this.hasStateChanged("_dimensionAffectingProps")),t&&(this.saveState({propertySet:"_dimensionAffectingProps"}),this.dirty=!0),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",e.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(t,e){this.visible&&(this._shouldClearDimensionCache()&&(this._setTextStyles(t),this._initDimensions(t)),this.callSuper("render",t,e))},_splitTextIntoLines:function(){return this.text.split(this._reNewline)},toObject:function(t){var e=["text","fontSize","fontWeight","fontFamily","fontStyle","lineHeight","textDecoration","textAlign","textBackgroundColor","charSpacing"].concat(t);return this.callSuper("toObject",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,n,s,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,n,s,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),this._dimensionAffectingProps.indexOf(t)>-1&&(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,i,r){return e.Object._fromObject("Text",t,i,r,"text")},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,_=0,y=g.length;_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);var e,i,r,n,s,o,a,h,c,l,u=0,f=this._getLeftOffset(),d=this._getTopOffset(),g="";t.save();for(var p=0,v=this._textLines.length;p0?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.restartCursorIfNeeded(),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),h.x+=this.canvas._offset.left,h.y+=this.canvas._offset.top,{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.hiddenTextarea.blur&&this.hiddenTextarea.blur(),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")},setSelectionStartEndWithShift:function(t,e,i){i<=t?(e===t?this._selectionDirection="left":"right"===this._selectionDirection&&(this._selectionDirection="left",this.selectionEnd=t),this.selectionStart=i):i>t&&it?this.selectionStart=t:this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd>t?this.selectionEnd=t:this.selectionEnd<0&&(this.selectionEnd=0)}})}(),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.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),i=this.selectionStart,r=this.selectionEnd;t.shiftKey?this.setSelectionStartEndWithShift(i,r,e):(this.selectionStart=e,this.selectionEnd=e),this.isEditing&&(this._fireSelectionChanged(),this._updateTextarea())},getSelectionStartFromPointer:function(t){for(var e,i,r=this.getLocalPointer(t),n=0,s=0,o=0,a=0,h=0,c=this._textLines.length;hs?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(),t.keyCode>=33&&t.keyCode<=40?(this.clearContextTop(),this.renderCursorOrSelection()):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},_getWidthBeforeCursor:function(t,e){for(var i,r=this._textLines[t].slice(0,e),n=this._getLineWidth(this.ctx,t),s=this._getLineLeftOffset(n),o=0,a=r.length;oe){i=!0;var f=o-u,d=o,g=Math.abs(f-e),p=Math.abs(d-e);a=p=this.text.length&&this.selectionEnd>=this.text.length||this._moveCursorUpOrDown("Down",t)},moveCursorUp:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorUpOrDown("Up",t)},_moveCursorUpOrDown:function(t,e){var i="get"+t+"CursorOffset",r=this[i](e,"right"===this._selectionDirection);e.shiftKey?this.moveCursorWithShift(r):this.moveCursorWithoutShift(r),0!==r&&(this.setSelectionInBoundaries(),this.abortCursorAnimation(),this._currentCursorOpacity=1,this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorWithShift:function(t){var e="left"===this._selectionDirection?this.selectionStart+t:this.selectionEnd+t;return this.setSelectionStartEndWithShift(this.selectionStart,this.selectionEnd,e),0!==t},moveCursorWithoutShift:function(t){return t<0?(this.selectionStart+=t,this.selectionEnd=this.selectionStart):(this.selectionEnd+=t,this.selectionStart=this.selectionEnd),0!==t},moveCursorLeft:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorLeftOrRight("Left",t)},_move:function(t,e,i){var r;if(t.altKey)r=this["findWordBoundary"+i](this[e]);else{if(!t.metaKey&&35!==t.keyCode&&36!==t.keyCode)return this[e]+="Left"===i?-1:1,!0;r=this["findLineBoundary"+i](this[e])}if(void 0!==typeof r&&this[e]!==r)return this[e]=r,!0},_moveLeft:function(t,e){return this._move(t,e,"Left")},_moveRight:function(t,e){return this._move(t,e,"Right")},moveCursorLeftWithoutShift:function(t){var e=!0;return this._selectionDirection="left",this.selectionEnd===this.selectionStart&&0!==this.selectionStart&&(e=this._moveLeft(t,"selectionStart")),this.selectionEnd=this.selectionStart,e},moveCursorLeftWithShift:function(t){return"right"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveLeft(t,"selectionEnd"):0!==this.selectionStart?(this._selectionDirection="left",this._moveLeft(t,"selectionStart")):void 0},moveCursorRight:function(t){this.selectionStart>=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.set("dirty",!0),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={});e.Textbox=e.util.createClass(e.IText,e.Observable,{type:"textbox",minWidth:20,dynamicMinWidth:2,__cachedLines:null,lockScalingY:!0,lockScalingFlip:!0,noScaleCache:!1,initialize:function(t,i){this.callSuper("initialize",t,i),this.setControlsVisibility(e.Textbox.getTextboxControlVisibility()),this.ctx=this.objectCaching?this._cacheContext:e.util.createCanvasElement().getContext("2d"),this._dimensionAffectingProps.push("width")},_initDimensions:function(t){this.__skipDimension||(t||(t=e.util.createCanvasElement().getContext("2d"),this._setTextStyles(t),this.clearContextTop()),this.dynamicMinWidth=0,this._textLines=this._splitTextIntoLines(t),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;n0?(e=0,i++,t++):" "===this.text[i]&&n>0&&(e++,i++),r[n]={line:t,offset:e},i+=this._textLines[n].length,e+=this._textLines[n].length;return r},_getStyleDeclaration:function(t,e,i){if(this._styleMap){var r=this._styleMap[t];if(!r)return i?{}:null;t=r.line,e=r.offset+e}return this.callSuper("_getStyleDeclaration",t,e,i)},_setStyleDeclaration:function(t,e,i){var r=this._styleMap[t];t=r.line,e=r.offset+e,this.styles[t][e]=i},_deleteStyleDeclaration:function(t,e){var i=this._styleMap[t];t=i.line,e=i.offset+e,delete this.styles[t][e]},_getLineStyle:function(t){var e=this._styleMap[t];return this.styles[e.line]},_setLineStyle:function(t,e){var i=this._styleMap[t];this.styles[i.line]=e},_deleteLineStyle:function(t){var e=this._styleMap[t];delete this.styles[e.line]},_wrapText:function(t,e){var i,r=e.split(this._reNewline),n=[];for(i=0;i=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(t){t=t||this.ctx;var e=this.textAlign;this._styleMap=null,t.save(),this._setTextStyles(t),this.textAlign="left";var i=this._wrapText(t,this.text);return this.textAlign=e,t.restore(),this._textLines=i,this._styleMap=this._generateStyleMap(),i},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,i=i||{},i.nodeCanvas=s,i.nodeCacheCanvas=o;var a=fabric.Canvas||fabric.StaticCanvas,h=new a(n,i);return h.nodeCanvas=s,h.nodeCacheCanvas=o,h.contextContainer=s.getContext("2d"),h.contextCache=o.getContext("2d"),h.Font=Canvas.Font, -h};var originaInitStatic=fabric.StaticCanvas.prototype._initStatic;fabric.StaticCanvas.prototype._initStatic=function(t,e){t=t||fabric.document.createElement("canvas"),this.nodeCanvas=new Canvas(t.width,t.height),this.nodeCacheCanvas=new Canvas(t.width,t.height),originaInitStatic.call(this,t,e),this.contextContainer=this.nodeCanvas.getContext("2d"),this.contextCache=this.nodeCacheCanvas.getContext("2d"),this.Font=Canvas.Font},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(t){return this.nodeCanvas.createJPEGStream(t)},fabric.StaticCanvas.prototype._initRetinaScaling=function(){if(this._isRetinaScaling())return this.lowerCanvasEl.setAttribute("width",this.width*fabric.devicePixelRatio),this.lowerCanvasEl.setAttribute("height",this.height*fabric.devicePixelRatio),this.nodeCanvas.width=this.width*fabric.devicePixelRatio,this.nodeCanvas.height=this.height*fabric.devicePixelRatio,this.contextContainer.scale(fabric.devicePixelRatio,fabric.devicePixelRatio),this},fabric.Canvas&&(fabric.Canvas.prototype._initRetinaScaling=fabric.StaticCanvas.prototype._initRetinaScaling);var origSetBackstoreDimension=fabric.StaticCanvas.prototype._setBackstoreDimension;fabric.StaticCanvas.prototype._setBackstoreDimension=function(t,e){return origSetBackstoreDimension.call(this,t,e),this.nodeCanvas[t]=e,this},fabric.Canvas&&(fabric.Canvas.prototype._setBackstoreDimension=fabric.StaticCanvas.prototype._setBackstoreDimension)}}(); \ No newline at end of file +var fabric=fabric||{version:"1.7.6"};"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(decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E")),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.iMatrix=[1,0,0,1,0,0],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)}},fabric.CommonMethods={_setOptions:function(t){for(var e in t)this.set(e,t[e])},_initGradient:function(t,e){!t||!t.colorStops||t instanceof fabric.Gradient||this.set(e,new fabric.Gradient(t))},_initPattern:function(t,e,i){!t||!t.source||t instanceof fabric.Pattern?i&&i():this.set(e,new fabric.Pattern(t,i))},_initClipping:function(t){if(t.clipTo&&"string"==typeof t.clipTo){var e=fabric.util.getFunctionBody(t.clipTo);"undefined"!=typeof e&&(this.clipTo=new Function("ctx",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,e){this[t]=e},toggle:function(t){var e=this.get(t);return"boolean"==typeof e&&this.set(t,!e),this},get:function(t){return this[t]}},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;var i,r=e.split("."),n=r.length,s=t||fabric.window;for(i=0;ir;)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){var e,i,r,n,s,o=t.prototype;for(e=o.stateProperties.length;e--;)i=o.stateProperties[e],r=i.charAt(0).toUpperCase()+i.slice(1),n="set"+r,s="get"+r,o[s]||(o[s]=function(t){return new Function('return this.get("'+t+'")')}(i)),o[n]||(o[n]=function(t){return new Function("value",'return this.set("'+t+'", value)')}(i))},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);var n,s,o=!0,a=t.getImageData(e,i,2*r||1,2*r||1),h=a.data.length;for(n=3;n0?D-=2*f:1===c&&D<0&&(D+=2*f);for(var E=Math.ceil(Math.abs(D/f*2)),I=[],L=D/E,F=8/3*Math.sin(L/4)*Math.sin(L/4)/Math.sin(L/2),B=A+L,R=0;R=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,C=Math.abs,S=[],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),C(u)<1e-12){if(C(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){var r="rgba("+parseInt(t[0]+i*(e[0]-t[0]),10)+","+parseInt(t[1]+i*(e[1]-t[1]),10)+","+parseInt(t[2]+i*(e[2]-t[2]),10);return r+=","+(t&&e?parseFloat(t[3]+i*(e[3]-t[3])):1),r+=")"}function e(e,i,r,n){var s=new fabric.Color(e).getSource(),o=new fabric.Color(i).getSource();n=n||{},fabric.util.animate(fabric.util.object.extend(n,{duration:r||500,startValue:s,endValue:o,byValue:o,easing:function(e,i,r,s){var o=n.colorEasing?n.colorEasing(e,s):1-Math.cos(e/s*(Math.PI/2));return t(i,r,o)}}))}fabric.util.animateColor=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 _;if((f||d)&&(x=" translate("+y(f)+" "+y(d)+") "),r=x+" matrix("+o+" 0 0 "+a+" "+h*o+" "+c*a+") ","svg"===t.nodeName){for(n=t.ownerDocument.createElement("g");t.firstChild;)n.appendChild(t.firstChild);t.appendChild(n)}else n=t,r=n.getAttribute("transform")+r;return n.setAttribute("transform",r), +_}function g(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}var p=t.fabric||(t.fabric={}),v=p.util.object.extend,b=p.util.object.clone,m=p.util.toFixed,y=p.util.parseUnit,_=p.util.multiplyTransformMatrices,x=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/i,C=/^(symbol|image|marker|pattern|view|svg)$/i,S=/^(?:pattern|defs|symbol|metadata|clipPath|mask)$/i,w=/^(symbol|g|a|svg)$/i,O={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",opacity:"opacity"},T={stroke:"strokeOpacity",fill:"fillOpacity"};p.cssRules={},p.gradientDefs={},p.parseTransformAttribute=function(){function t(t,e){var i=Math.cos(e[0]),r=Math.sin(e[0]),n=0,s=0;3===e.length&&(n=e[1],s=e[2]),t[0]=i,t[1]=r,t[2]=-r,t[3]=i,t[4]=n-(i*n-r*s),t[5]=s-(r*n+i*s)}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,i){t[i]=Math.tan(p.util.degreesToRadians(e[0]))}function r(t,e){t[4]=e[0],2===e.length&&(t[5]=e[1])}var n=[1,0,0,1,0,0],s=p.reNum,o="(?:\\s+,?\\s*|,\\s*)",a="(?:(skewX)\\s*\\(\\s*("+s+")\\s*\\))",h="(?:(skewY)\\s*\\(\\s*("+s+")\\s*\\))",c="(?:(rotate)\\s*\\(\\s*("+s+")(?:"+o+"("+s+")"+o+"("+s+"))?\\s*\\))",l="(?:(scale)\\s*\\(\\s*("+s+")(?:"+o+"("+s+"))?\\s*\\))",u="(?:(translate)\\s*\\(\\s*("+s+")(?:"+o+"("+s+"))?\\s*\\))",f="(?:(matrix)\\s*\\(\\s*("+s+")"+o+"("+s+")"+o+"("+s+")"+o+"("+s+")"+o+"("+s+")"+o+"("+s+")\\s*\\))",d="(?:"+f+"|"+u+"|"+l+"|"+c+"|"+a+"|"+h+")",g="(?:"+d+"(?:"+o+"*"+d+")*)",v="^\\s*(?:"+g+"?)\\s*$",b=new RegExp(v),m=new RegExp(d,"g");return function(s){var o=n.concat(),a=[];if(!s||s&&!b.test(s))return o;s.replace(m,function(s){var h=new RegExp(d).exec(s).filter(function(t){return!!t}),c=h[1],l=h.slice(2).map(parseFloat);switch(c){case"translate":r(o,l);break;case"rotate":l[0]=p.util.degreesToRadians(l[0]),t(o,l);break;case"scale":e(o,l);break;case"skewX":i(o,l,2);break;case"skewY":i(o,l,1);break;case"matrix":o=l}a.push(o.concat()),o=n.concat()});for(var h=a[0];a.length>1;)a.shift(),h=p.util.multiplyTransformMatrices(h,a[0]);return h}}();var j=new RegExp("^\\s*("+p.reNum+"+)\\s*,?\\s*("+p.reNum+"+)\\s*,?\\s*("+p.reNum+"+)\\s*,?\\s*("+p.reNum+"+)\\s*$");p.parseSVGDocument=function(t,e,i){if(t){f(t);var r=p.Object.__uid++,n=d(t),s=p.util.toArray(t.getElementsByTagName("*"));if(n.svgUid=r,0===s.length&&p.isLikelyNode){s=t.selectNodes('//*[name(.)!="svg"]');for(var o=[],a=0,h=s.length;a/i,""))),r&&r.documentElement||e&&e(null),p.parseSVGDocument(r.documentElement,function(t,i){e&&e(t,i)},i)}t=t.replace(/^\n\s*/,"").trim(),new p.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 p.window.ActiveXObject&&(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(t.replace(//i,"")));p.parseSVGDocument(r.documentElement,function(t,i){e(t,i)},i)}})}("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(t){var e={type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY,gradientTransform:this.gradientTransform?this.gradientTransform.concat():this.gradientTransform};return fabric.util.populateWithProperties(this,e,t),e},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'},setOptions:function(t){for(var e in t)this[e]=t[e]},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=fabric.util.transformPoint,s=fabric.util.invertTransform,o=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass(fabric.CommonMethods,{initialize:function(t,e){e||(e={}),this._initStatic(t,e)},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!1,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!1,imageSmoothingEnabled:!0,viewportTransform:fabric.iMatrix.concat(),backgroundVpt:!0,overlayVpt:!0,onBeforeScaleRotate:function(){},enableRetinaScaling:!0,vptCoords:{},_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){return this[t]=e,this._initGradient(e,t),this._initPattern(e,t,i),this},_createCanvasElement:function(t){var e=fabric.util.createCanvasElement(t);if(e.style||(e.style={}),!e)throw o;if("undefined"==typeof e.getContext)throw o;return e},_initOptions:function(t){this._setOptions(t),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(t),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 this.viewportTransform[0]},setViewportTransform:function(t){var e,i=this._activeGroup,r=!1,n=!0;this.viewportTransform=t;for(var s=0,o=this._objects.length;s"),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","\n",this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),"\n")},createSVGRefElementsMarkup:function(){var t=this,e=["backgroundColor","overlayColor"].map(function(e){var i=t[e];if(i&&i.toLive)return i.toSVG(t,!1)});return e.join("")},createSVGFontFacesMarkup:function(){for(var t,e,i,r,n,s,o,a="",h={},c=fabric.fontPaths,l=this.getObjects(),u=0,f=l.length;u',"\n",a,"","\n"].join("")),a},_setSVGObjects:function(t,e){for(var i,r=0,n=this.getObjects(),s=n.length;r\n")}else t.push('\n")},sendToBack:function(t){if(!t)return this;var e,r,n,s=this._activeGroup;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._activeGroup;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._activeGroup;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,e=this.canvas.getZoom();t.shadowColor=this.shadow.color,t.shadowBlur=this.shadow.blur*e,t.shadowOffsetX=this.shadow.offsetX*e,t.shadowOffsetY=this.shadow.offsetY*e}},_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&&cs?t.x<0?t.x+=s:t.x-=s:t.x=0,n(t.y)>s?t.y<0?t.y+=s:t.y-=s: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),h=!0;if(a<0&&(a=360+a),a%=360,n.target.snapAngle>0){var c=n.target.snapAngle,l=n.target.snapThreshold||c,u=Math.ceil(a/c)*c,f=Math.floor(a/c)*c;Math.abs(a-f)0?0:-i),e.ey-(r>0?0:-r),a,h)),this.selectionLineWidth&&this.selectionBorderColor)if(t.lineWidth=this.selectionLineWidth,t.strokeStyle=this.selectionBorderColor,this.selectionDashArray.length>1&&!s){var c=e.ex+o-(i>0?0:a),l=e.ey+o-(r>0?0:h);t.beginPath(),fabric.util.drawDashedLine(t,c,l,c+a,l,this.selectionDashArray),fabric.util.drawDashedLine(t,c,l+h-1,c+a,l+h-1,this.selectionDashArray),fabric.util.drawDashedLine(t,c,l,c,l+h,this.selectionDashArray),fabric.util.drawDashedLine(t,c+a-1,l,c+a-1,l+h,this.selectionDashArray),t.closePath(),t.stroke()}else fabric.Object.prototype._setLineDash.call(this,t,this.selectionDashArray),t.strokeRect(e.ex+o-(i>0?0:a),e.ey+o-(r>0?0:h),a,h)},findTarget:function(t,e){if(!this.skipTargetFind){var i,r=!0,n=this.getPointer(t,r),s=this.getActiveGroup(),o=this.getActiveObject();if(s&&!e&&s===this._searchPossibleTargets([s],n))return this._fireOverOutEvents(s,t),s;if(o&&o._findTargetCorner(n))return this._fireOverOutEvents(o,t),o;if(o&&o===this._searchPossibleTargets([o],n)){if(!this.preserveObjectStacking)return this._fireOverOutEvents(o,t),o;i=o}this.targets=[];var a=this._searchPossibleTargets(this._objects,n);return t[this.altSelectionKey]&&a&&i&&a!==i&&(a=i),this._fireOverOutEvents(a,t),a}},_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,"touch-action":"none"}),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){var e=this._activeObject;e&&(e.set("active",!1),t!==e&&e.onDeselect&&"function"==typeof e.onDeselect&&e.onDeselect()),this._activeObject=t,t.set("active",!0)},setActiveObject:function(t,e){var i=this.getActiveObject();return i&&i!==t&&i.fire("deselected",{e:e}),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._hoveredTarget===t&&(this._hoveredTarget=null),this.callSuper("_onObjectRemoved",t)},_discardActiveObject:function(){var t=this._activeObject;t&&(t.set("active",!1),t.onDeselect&&"function"==typeof t.onDeselect&&t.onDeselect()),this._activeObject=null},discardActiveObject:function(t){var e=this._activeObject;return e&&(this.fire("before:selection:cleared",{target:e,e:t}),this._discardActiveObject(),this.fire("selection:cleared",{e:t}),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 e&&(this.fire("before:selection:cleared",{e:t,target:e}),this._discardActiveGroup(),this.fire("selection:cleared",{e:t})),this},deactivateAll:function(){for(var t,e=this.getObjects(),i=0,r=e.length;i1)){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._handleEvent(t,"wheel")},_transformObject:function(t){var e=this.getPointer(t),i=this._currentTransform;i.reset=!1,i.target.isMoving=!0,i.shiftKey=t.shiftKey,i.altKey=t[this.centeredKey],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=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||!e.selectable)return this.setCursor(this.defaultCursor),!1;var i=e.hoverCursor||this.hoverCursor,r=this.getActiveGroup(),n=e._findTargetCorner&&(!r||!r.contains(e))&&e._findTargetCorner(this.getPointer(t,!0));return n?this._setCornerCursor(n,e,t):this.setCursor(i),!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}})}(),function(){var t=fabric.StaticCanvas.supports("toDataURLWithQuality");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||0,top:t.top||0,width:t.width||0,height:t.height||0};return this.__toDataURLWithMultiplier(e,i,n,r)},__toDataURLWithMultiplier:function(t,e,i,r){var n=this.getWidth(),s=this.getHeight(),o=(i.width||this.getWidth())*r,a=(i.height||this.getHeight())*r,h=this.getZoom(),c=h*r,l=this.viewportTransform,u=(l[4]-i.left)*r,f=(l[5]-i.top)*r,d=[c,0,0,c,u,f],g=this.interactive;this.viewportTransform=d,this.interactive&&(this.interactive=!1),n!==o||s!==a?this.setDimensions({width:o,height:a}):this.renderAll();var p=this.__toDataURL(t,e,i);return g&&(this.interactive=g),this.viewportTransform=l,this.setDimensions({width:n,height:s}),p},__toDataURL:function(e,i){var r=this.contextContainer.canvas;"jpg"===e&&(e="jpeg");var n=t?r.toDataURL("image/"+e,i):r.toDataURL("image/"+e);return n},toDataURLWithMultiplier:function(t,e,i){return this.toDataURL({format:t,multiplier:e,quality:i})}})}(),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,n._setOptions(r),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)},__setBgOverlay:function(t,e,i,r){var n=this;return e?void("backgroundImage"===t||"overlayImage"===t?fabric.util.enlivenObjects([e],function(e){n[t]=e[0],i[t]=!0,r&&r()}):this["set"+fabric.util.string.capitalize(t,!0)](e,function(){i[t]=!0,r&&r()})):(i[t]=!0,void(r&&r()))},_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.object.clone,n=e.util.toFixed,s=e.util.string.capitalize,o=e.util.degreesToRadians,a=e.StaticCanvas.supports("setLineDash"),h=!e.isLikelyNode;e.Object||(e.Object=e.util.createClass(e.CommonMethods,{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,objectCaching:h,statefullCache:!1,noScaleCache:!0,dirty:!1,needsItsOwnCache:!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 skewX skewY".split(" "),cacheProperties:"fill stroke strokeWidth strokeDashArray width height stroke strokeWidth strokeDashArray strokeLineCap strokeLineJoin strokeMiterLimit fillRule backgroundColor".split(" "),initialize:function(t){t=t||{},t&&this.setOptions(t),this.objectCaching&&(this._createCacheCanvas(),this.setupState({propertySet:"cacheProperties"}))},_createCacheCanvas:function(){this._cacheCanvas=e.document.createElement("canvas"),this._cacheContext=this._cacheCanvas.getContext("2d"),this._updateCacheCanvas()},_getCacheCanvasDimensions:function(){var t=this.canvas&&this.canvas.getZoom()||1,i=this.getObjectScaling(),r=this._getNonTransformedDimensions(),n=this.canvas&&this.canvas._isRetinaScaling()?e.devicePixelRatio:1,s=i.scaleX*t*n,o=i.scaleY*t*n,a=r.x*s,h=r.y*o;return{width:a+2,height:h+2,zoomX:s,zoomY:o}},_updateCacheCanvas:function(){if(this.noScaleCache&&this.canvas&&this.canvas._currentTransform){var t=this.canvas._currentTransform.action;if("scale"===t.slice(0,5))return!1}var e=this._getCacheCanvasDimensions(),i=e.width,r=e.height,n=e.zoomX,s=e.zoomY;return(i!==this.cacheWidth||r!==this.cacheHeight)&&(this._cacheCanvas.width=Math.ceil(i),this._cacheCanvas.height=Math.ceil(r),this._cacheContext.translate(i/2,r/2),this._cacheContext.scale(n,s),this.cacheWidth=i,this.cacheHeight=r,this.zoomX=n,this.zoomY=s,!0)},setOptions:function(t){this._setOptions(t),this._initGradient(t.fill,"fill"),this._initGradient(t.stroke,"stroke"),this._initClipping(t),this._initPattern(t.fill,"fill"),this._initPattern(t.stroke,"stroke")},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),this.angle&&t.rotate(o(this.angle)),t.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1)),this.skewX&&t.transform(1,0,Math.tan(o(this.skewX)),1,0,0),this.skewY&&t.transform(1,Math.tan(o(this.skewY)),0,1,0,0)},toObject:function(t){var i=e.Object.NUM_FRACTION_DIGITS,r={type:this.type,originX:this.originX,originY:this.originY,left:n(this.left,i),top:n(this.top,i),width:n(this.width,i),height:n(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:n(this.strokeWidth,i),strokeDashArray:this.strokeDashArray?this.strokeDashArray.concat():this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeLineJoin:this.strokeLineJoin,strokeMiterLimit:n(this.strokeMiterLimit,i),scaleX:n(this.scaleX,i),scaleY:n(this.scaleY,i),angle:n(this.getAngle(),i),flipX:this.flipX,flipY:this.flipY,opacity:n(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():null,skewX:n(this.skewX,i),skewY:n(this.skewY,i)};return e.util.populateWithProperties(this,r,t),this.includeDefaultValues||(r=this._removeDefaultValues(r)),r},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"#"},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}},_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?"dirty"===t&&this.group&&this.group.set("dirty",i):i=new e.Shadow(i),this[t]=i,this.cacheProperties.indexOf(t)>-1&&(this.group&&this.group.set("dirty",!0),this.dirty=!0),"width"!==t&&"height"!==t||(this.minScaleLimit=Math.min(.1,1/Math.max(this.width,this.height))),this},setOnGroup:function(){},setSourcePath:function(t){return this.sourcePath=t,this},getViewportTransform:function(){return this.canvas&&this.canvas.viewportTransform?this.canvas.viewportTransform:e.iMatrix.concat()},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._setOpacity(t),this._setShadow(t),this.transformMatrix&&t.transform.apply(t,this.transformMatrix),this.clipTo&&e.util.clipContext(this,t),!this.objectCaching||this.group&&!this.needsItsOwnCache?(this.drawObject(t,i),i&&this.objectCaching&&this.statefullCache&&this.saveState({propertySet:"cacheProperties"})):(this._cacheCanvas||this._createCacheCanvas(),this.isCacheDirty(i)&&(this.statefullCache&&this.saveState({propertySet:"cacheProperties"}),this.drawObject(this._cacheContext,i),this.dirty=!1),this.drawCacheOnCanvas(t)),this.clipTo&&t.restore(),t.restore())},drawObject:function(t,e){this._renderBackground(t),this._setStrokeStyles(t),this._setFillStyles(t),this._render(t,e)},drawCacheOnCanvas:function(t){t.scale(1/this.zoomX,1/this.zoomY),t.drawImage(this._cacheCanvas,-this.cacheWidth/2,-this.cacheHeight/2)},isCacheDirty:function(t){if(!t&&this._updateCacheCanvas())return!0;if(this.dirty||this.statefullCache&&this.hasStateChanged("cacheProperties")){if(!t){var e=this.cacheWidth/this.zoomX,i=this.cacheHeight/this.zoomY;this._cacheContext.clearRect(-e/2,-i/2,e,i)}return!0}return!1},_renderBackground:function(t){if(this.backgroundColor){var e=this._getNonTransformedDimensions();t.fillStyle=this.backgroundColor,t.fillRect(-e.x/2,-e.y/2,e.x,e.y),this._removeShadow(t)}},_setOpacity:function(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),a?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(),s=this.calcTransformMatrix();s=e.util.multiplyTransformMatrices(n,s),r=e.util.qrDecompose(s),t.save(),t.translate(r.translateX,r.translateY),t.lineWidth=1*this.borderScaleFactor,this.group||(t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1),this.group&&this.group===this.canvas.getActiveGroup()?(t.rotate(o(r.angle)),this.drawBordersInGroup(t,r)):(t.rotate(o(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)},_applyPatternGradientTransform:function(t,e){if(e.toLive){var i=e.gradientTransform||e.patternTransform;i&&t.transform.apply(t,i);var r=-this.width/2+e.offsetX||0,n=-this.height/2+e.offsetY||0;t.translate(r,n)}},_renderFill:function(t){this.fill&&(t.save(),this._applyPatternGradientTransform(t,this.fill),"evenodd"===this.fillRule?t.fill("evenodd"):t.fill(),t.restore())},_renderStroke:function(t){this.stroke&&0!==this.strokeWidth&&(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(t),t.save(),this._setLineDash(t,this.strokeDashArray,this._renderDashedStroke),this._applyPatternGradientTransform(t,this.stroke),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 1},toJSON:function(t){return this.toObject(t)},setGradient:function(t,i){i||(i={});var r={colorStops:[]};return 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),r.gradientTransform=i.gradientTransform,e.Gradient.prototype.addColorStop.call(r,i.colorStops),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,o(-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._fromObject=function(t,i,n,s,o){var a=e[t];if(i=r(i,!0),!s){var h=o?new a(i[o],i):new a(i);return n&&n(h),h}e.util.enlivenPatterns([i.fill,i.stroke],function(t){"undefined"!=typeof t[0]&&(i.fill=t[0]),"undefined"!=typeof t[1]&&(i.stroke=t[1]);var e=o?new a(i[o],i):new a(i);n&&n(e)})},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,aCoords:null,getCoords:function(e,i){this.oCoords||this.setCoords();var r=e?this.aCoords:this.oCoords;return t(i?this.calcCoords(e):r)},intersectsWithRect:function(t,e,i,r){var n=this.getCoords(i,r),s=fabric.Intersection.intersectPolygonRectangle(n,t,e);return"Intersection"===s.status},intersectsWithObject:function(t,e,i){var r=fabric.Intersection.intersectPolygonPolygon(this.getCoords(e,i),t.getCoords(e,i));return"Intersection"===r.status||t.isContainedWithinObject(this,e,i)||this.isContainedWithinObject(t,e,i)},isContainedWithinObject:function(t,e,i){for(var r=this.getCoords(e,i),n=0,s=t._getImageLines(i?t.calcCoords(e):e?t.aCoords:t.oCoords);n<4;n++)if(!t.containsPoint(r[n],s))return!1;return!0},isContainedWithinRect:function(t,e,i,r){var n=this.getBoundingRect(i,r);return n.left>=t.x&&n.left+n.width<=e.x&&n.top>=t.y&&n.top+n.height<=e.y},containsPoint:function(t,e,i,r){var e=e||this._getImageLines(r?this.calcCoords(i):i?this.aCoords:this.oCoords),n=this._findCrossPoints(t,e);return 0!==n&&n%2===1},isOnScreen:function(t){if(!this.canvas)return!1;for(var e,i=this.canvas.vptCoords.tl,r=this.canvas.vptCoords.br,n=this.getCoords(!0,t),s=0;s<4;s++)if(e=n[s],e.x<=r.x&&e.x>=i.x&&e.y<=r.y&&e.y>=i.y)return!0;return!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=0;for(var c in e)if(a=e[c],!(a.o.y=t.y&&a.d.y>=t.y||(a.o.x===a.d.x&&a.o.x>=t.x?o=a.o.x:(i=0,r=(a.d.y-a.o.y)/(a.d.x-a.o.x),n=t.y-i*t.x,s=a.o.y-r*a.o.x,o=-(n-s)/(i-r)),o>=t.x&&(h+=1),2!==h)))break;return h},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(t,e){var i=this.getCoords(t,e);return fabric.util.makeBoundingBoxFromPoints(i)},getWidth:function(){return this._getTransformedDimensions().x},getHeight:function(){return this._getTransformedDimensions().y},_constrainScale:function(t){return Math.abs(t)0?Math.atan(o/s):0,l=s/Math.cos(c)/2,u=Math.cos(c+i)*l,f=Math.sin(c+i)*l,d=this.getCenterPoint(),g=t?d:fabric.util.transformPoint(d,r),p=new fabric.Point(g.x-u,g.y-f),v=new fabric.Point(p.x+s*h,p.y+s*a),b=new fabric.Point(p.x-o*a,p.y+o*h),m=new fabric.Point(g.x+u,g.y+f);if(!t)var y=new fabric.Point((p.x+b.x)/2,(p.y+b.y)/2),_=new fabric.Point((v.x+p.x)/2,(v.y+p.y)/2),x=new fabric.Point((m.x+v.x)/2,(m.y+v.y)/2),C=new fabric.Point((m.x+b.x)/2,(m.y+b.y)/2),S=new fabric.Point(_.x+a*this.rotatingPointOffset,_.y-h*this.rotatingPointOffset);var g={tl:p,tr:v,br:m,bl:b};return t||(g.ml=y,g.mt=_,g.mr=x,g.mb=C,g.mtr=S),g},setCoords:function(t,e){return this.oCoords=this.calcCoords(t),e||(this.aCoords=this.calcCoords(!0)),t||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 fabric.iMatrix.concat()},calcTransformMatrix:function(t){var e=this.getCenterPoint(),r=[1,0,0,1,e.x,e.y],n=this._calcRotateMatrix(),s=this._calcDimensionsTransformMatrix(this.skewX,this.skewY,!0),o=this.group&&!t?this.group.calcTransformMatrix():fabric.iMatrix.concat();return o=i(o,r),o=i(o,n),o=i(o,s)},_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)},_getNonTransformedDimensions:function(){var t=this.strokeWidth,e=this.width+t,i=this.height+t;return{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("")}}),i.Line.ATTRIBUTE_NAMES=i.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),i.Line.fromElement=function(t,e){e=e||{};var n=i.parseAttributes(t,i.Line.ATTRIBUTE_NAMES),s=[n.x1||0,n.y1||0,n.x2||0,n.y2||0];return e.originX="left",e.originY="top",new i.Line(s,r(n,e))},i.Line.fromObject=function(t,e,r){function s(t){delete t.points,e&&e(t)}var o=n(t,!0);o.points=[t.x1,t.y1,t.x2,t.y2];var a=i.Object._fromObject("Line",o,s,r,"points");return a&&delete a.points,a}}("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;if(i.Circle)return void i.warn("fabric.Circle is already defined.");var s=i.Object.prototype.cacheProperties.concat();s.push("radius"),i.Circle=i.util.createClass(i.Object,{type:"circle",radius:0,startAngle:0,endAngle:2*r,cacheProperties:s,initialize:function(t){this.callSuper("initialize",t),this.set("radius",t&&t.radius||0)},_set:function(t,e){return this.callSuper("_set",t,e),"radius"===t&&this.setRadius(e),this},toObject:function(t){return this.callSuper("toObject",["radius","startAngle","endAngle"].concat(t))},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)}}),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},i.Circle.fromObject=function(t,e,r){return i.Object._fromObject("Circle",t,e,r)}}("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){this.callSuper("initialize",t),this.set("width",t&&t.width||100).set("height",t&&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("")}}),void(e.Triangle.fromObject=function(t,i,r){return e.Object._fromObject("Triangle",t,i,r)}))}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=2*Math.PI,r=e.util.object.extend;if(e.Ellipse)return void e.warn("fabric.Ellipse is already defined.");var n=e.Object.prototype.cacheProperties.concat();n.push("rx","ry"),e.Ellipse=e.util.createClass(e.Object,{type:"ellipse",rx:0,ry:0,cacheProperties:n,initialize:function(t){this.callSuper("initialize",t),this.set("rx",t&&t.rx||0),this.set("ry",t&&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 this.callSuper("toObject",["rx","ry"].concat(t))},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)}}),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},e.Ellipse.fromObject=function(t,i,r){return e.Object._fromObject("Ellipse",t,i,r)}}("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"),e.Rect=e.util.createClass(e.Object,{stateProperties:r,type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(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){return this.callSuper("toObject",["rx","ry"].concat(t))},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("")}}),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,i,r){return e.Object._fromObject("Rect",t,i,r)}}("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.toFixed;if(e.Polyline)return void e.warn("fabric.Polyline is already defined");var o=e.Object.prototype.cacheProperties.concat();o.push("points"),e.Polyline=e.util.createClass(e.Object,{type:"polyline",points:null,minX:0,minY:0,cacheProperties:o,initialize:function(t,e){e=e||{},this.points=t||[],this.callSuper("initialize",e),this._calcDimensions(),"top"in e||(this.top=this.minY),"left"in e||(this.left=this.minX),this.pathOffset={x:this.minX+this.width/2,y:this.minY+this.height/2}},_calcDimensions:function(){var t=this.points,e=r(t,"x"),i=r(t,"y"),s=n(t,"x"),o=n(t,"y");this.width=s-e||0,this.height=o-i||0,this.minX=e||0,this.minY=i||0},toObject:function(t){return i(this.callSuper("toObject",t),{points:this.points.concat()})},toSVG:function(t){for(var e,i=[],r=this._createBaseSVGMarkup(),n=0,o=this.points.length;n\n'),t?t(r.join("")):r.join("")},commonRender:function(t,e){var i,r=this.points.length,n=e?0:this.pathOffset.x,s=e?0:this.pathOffset.y;if(!r||isNaN(this.points[r-1].y))return!1;t.beginPath(),t.moveTo(this.points[0].x-n,this.points[0].y-s);for(var o=0;o"},toObject:function(t){var e=n(this.callSuper("toObject",["sourcePath","pathOffset"].concat(t)),{path:this.path.map(function(t){return t.slice()}),top:this.top,left:this.left});return 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){var r=t.paths;delete t.paths,"string"==typeof r?e.loadSVGFromURL(r,function(n){var s=r,o=e.util.groupSVGElements(n,t,s);t.paths=r,i(o)}):e.util.enlivenObjects(r,function(n){var s=new e.PathGroup(n,t);t.paths=r,i(s)})},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;if(!e.Group){var s={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.getCenterPoint(),i=this._objects.length;i--;)this._updateObjectCoords(this._objects[i],e,t)},_updateObjectCoords:function(t,e,i){if(t.__origHasControls=t.hasControls,t.hasControls=!1,!i){var r=t.getLeft(),n=t.getTop(),s=!0,o=!0;t.set({left:r-e.x,top:n-e.y}),t.setCoords(s,o)}},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.dirty=!0,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.dirty=!0,this},_onObjectAdded:function(t){this.dirty=!0,t.group=this,t._set("canvas",this.canvas)},_onObjectRemoved:function(t){this.dirty=!0,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){var e=this.getObjects().map(function(e){var i=e.includeDefaultValues;e.includeDefaultValues=e.group.includeDefaultValues;var r=e.toObject(t);return e.includeDefaultValues=i,r});return i(this.callSuper("toObject",t),{objects:e})},render:function(t){this._transformDone=!0,this.callSuper("render",t),this._transformDone=!1},drawObject:function(t){for(var e=0,i=this._objects.length;e\n');for(var i=0,r=this._objects.length;i\n"),t?t(e.join("")):e.join("")},get:function(t){if(t in s){if(this[t])return this[t];for(var e=0,i=this._objects.length;e\n',"\n"),this.stroke||this.strokeDashArray){var o=this.fill;this.fill=null,e.push("\n'),this.fill=o}return e.push("\n"),t?t(e.join("")):e.join("")},getSrc:function(t){var e=t?this._element:this._originalElement;return e?fabric.isLikelyNode?e._src:e.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'#'},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()}}),fabric.Image.filters.BaseFilter.fromObject=function(t,e){var i=new fabric.Image.filters[t.type](t);return e&&e(i),i},function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.Image.filters,n=e.util.createClass;r.Brightness=n(r.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[S*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=e.Image.filters.BaseFilter.fromObject}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.Image.filters,n=e.util.createClass;r.GradientTransparency=n(r.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,k,M,P,A,D,E;for(T.x=(t+.5)*y,j.x=r(T.x),h=0;h=e)){D=r(1e3*s(c-T.x)),O[D]||(O[D]={});for(var I=j.y-w;I<=j.y+w;I++)I<0||I>=o||(E=r(1e3*s(I-T.y)),O[D][E]||(O[D][E]=m(n(i(D*x,2)+i(E*C,2))/1e3)),u=O[D][E],u>0&&(d=4*(I*e+c),g+=u,k+=u*v[d],M+=u*v[d+1],P+=u*v[d+2],A+=u*v[d+3]))}d=4*(h*a+t),b[d]=k/g,b[d+1]=M/g,b[d+2]=P/g,b[d+3]=A/g}return++t1&&L<-1||(x=2*L*L*L-3*L*L+1,x>0&&(I=4*(E+M*e),j+=x*p[I+3],S+=x,p[I+3]<255&&(x=x*p[I+3]/250),w+=x*p[I],O+=x*p[I+1],T+=x*p[I+2],C+=x))}b[_]=w/C,b[_+1]=O/C,b[_+2]=T/C,b[_+3]=j/S}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=e.Image.filters.BaseFilter.fromObject}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.Image.filters,n=e.util.createClass;r.ColorMatrix=n(r.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'},_getCacheCanvasDimensions:function(){var t=this.callSuper("_getCacheCanvasDimensions"),e=2*this.fontSize;return t.width+=e*t.zoomX,t.height+=e*t.zoomY,t},_render:function(t){this._setTextStyles(t),this.group&&"path-group"===this.group.type&&t.translate(this.left,this.top),this._renderTextLinesBackground(t),this._renderText(t),this._renderTextDecoration(t)},_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},_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;t.fillStyle=s,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=[]},_shouldClearDimensionCache:function(){var t=this._forceClearCache;return t||(t=this.hasStateChanged("_dimensionAffectingProps")),t&&(this.saveState({propertySet:"_dimensionAffectingProps"}),this.dirty=!0),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",e.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(t,e){this.visible&&(this._shouldClearDimensionCache()&&(this._setTextStyles(t),this._initDimensions(t)),this.callSuper("render",t,e))},_splitTextIntoLines:function(){return this.text.split(this._reNewline)},toObject:function(t){var e=["text","fontSize","fontWeight","fontFamily","fontStyle","lineHeight","textDecoration","textAlign","textBackgroundColor","charSpacing"].concat(t);return this.callSuper("toObject",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,n,s,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,n,s,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),this._dimensionAffectingProps.indexOf(t)>-1&&(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,i,r){return e.Object._fromObject("Text",t,i,r,"text")},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=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);var e,i,r,n,s,o,a,h,c,l,u=0,f=this._getLeftOffset(),d=this._getTopOffset(),g="";t.save();for(var p=0,v=this._textLines.length;p0?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.restartCursorIfNeeded(),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=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),h.x+=this.canvas._offset.left,h.y+=this.canvas._offset.top,{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.hiddenTextarea.blur&&this.hiddenTextarea.blur(),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&&(o=!0,s[h-i]=this.styles[e][a],delete this.styles[e][a])}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])}var h=r||n[i-1];h&&(this.styles[e][i]=h),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")},setSelectionStartEndWithShift:function(t,e,i){i<=t?(e===t?this._selectionDirection="left":"right"===this._selectionDirection&&(this._selectionDirection="left",this.selectionEnd=t),this.selectionStart=i):i>t&&it?this.selectionStart=t:this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd>t?this.selectionEnd=t:this.selectionEnd<0&&(this.selectionEnd=0)}})}(),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.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),i=this.selectionStart,r=this.selectionEnd;t.shiftKey?this.setSelectionStartEndWithShift(i,r,e):(this.selectionStart=e,this.selectionEnd=e),this.isEditing&&(this._fireSelectionChanged(),this._updateTextarea())},getSelectionStartFromPointer:function(t){for(var e,i,r=this.getLocalPointer(t),n=0,s=0,o=0,a=0,h=0,c=this._textLines.length;hs?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(),t.keyCode>=33&&t.keyCode<=40?(this.clearContextTop(),this.renderCursorOrSelection()):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},_getWidthBeforeCursor:function(t,e){for(var i,r=this._textLines[t].slice(0,e),n=this._getLineWidth(this.ctx,t),s=this._getLineLeftOffset(n),o=0,a=r.length;oe){i=!0;var f=o-u,d=o,g=Math.abs(f-e),p=Math.abs(d-e);a=p=this.text.length&&this.selectionEnd>=this.text.length||this._moveCursorUpOrDown("Down",t)},moveCursorUp:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorUpOrDown("Up",t)},_moveCursorUpOrDown:function(t,e){var i="get"+t+"CursorOffset",r=this[i](e,"right"===this._selectionDirection);e.shiftKey?this.moveCursorWithShift(r):this.moveCursorWithoutShift(r),0!==r&&(this.setSelectionInBoundaries(),this.abortCursorAnimation(),this._currentCursorOpacity=1,this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorWithShift:function(t){var e="left"===this._selectionDirection?this.selectionStart+t:this.selectionEnd+t;return this.setSelectionStartEndWithShift(this.selectionStart,this.selectionEnd,e),0!==t},moveCursorWithoutShift:function(t){return t<0?(this.selectionStart+=t,this.selectionEnd=this.selectionStart):(this.selectionEnd+=t,this.selectionStart=this.selectionEnd),0!==t},moveCursorLeft:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorLeftOrRight("Left",t)},_move:function(t,e,i){var r;if(t.altKey)r=this["findWordBoundary"+i](this[e]);else{if(!t.metaKey&&35!==t.keyCode&&36!==t.keyCode)return this[e]+="Left"===i?-1:1,!0;r=this["findLineBoundary"+i](this[e])}if(void 0!==typeof r&&this[e]!==r)return this[e]=r,!0},_moveLeft:function(t,e){return this._move(t,e,"Left")},_moveRight:function(t,e){return this._move(t,e,"Right")},moveCursorLeftWithoutShift:function(t){var e=!0;return this._selectionDirection="left",this.selectionEnd===this.selectionStart&&0!==this.selectionStart&&(e=this._moveLeft(t,"selectionStart")),this.selectionEnd=this.selectionStart,e},moveCursorLeftWithShift:function(t){return"right"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveLeft(t,"selectionEnd"):0!==this.selectionStart?(this._selectionDirection="left",this._moveLeft(t,"selectionStart")):void 0},moveCursorRight:function(t){this.selectionStart>=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.set("dirty",!0),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={});e.Textbox=e.util.createClass(e.IText,e.Observable,{type:"textbox",minWidth:20,dynamicMinWidth:2,__cachedLines:null,lockScalingY:!0,lockScalingFlip:!0,noScaleCache:!1,initialize:function(t,i){this.callSuper("initialize",t,i),this.setControlsVisibility(e.Textbox.getTextboxControlVisibility()),this.ctx=this.objectCaching?this._cacheContext:e.util.createCanvasElement().getContext("2d"),this._dimensionAffectingProps.push("width")},_initDimensions:function(t){this.__skipDimension||(t||(t=e.util.createCanvasElement().getContext("2d"),this._setTextStyles(t),this.clearContextTop()),this.dynamicMinWidth=0,this._textLines=this._splitTextIntoLines(t),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;n0?(e=0,i++,t++):" "===this.text[i]&&n>0&&(e++,i++),r[n]={line:t,offset:e},i+=this._textLines[n].length,e+=this._textLines[n].length;return r},_getStyleDeclaration:function(t,e,i){if(this._styleMap){var r=this._styleMap[t];if(!r)return i?{}:null;t=r.line,e=r.offset+e}return this.callSuper("_getStyleDeclaration",t,e,i)},_setStyleDeclaration:function(t,e,i){var r=this._styleMap[t];t=r.line,e=r.offset+e,this.styles[t][e]=i},_deleteStyleDeclaration:function(t,e){var i=this._styleMap[t];t=i.line,e=i.offset+e,delete this.styles[t][e]},_getLineStyle:function(t){var e=this._styleMap[t];return this.styles[e.line]},_setLineStyle:function(t,e){var i=this._styleMap[t];this.styles[i.line]=e},_deleteLineStyle:function(t){var e=this._styleMap[t];delete this.styles[e.line]},_wrapText:function(t,e){var i,r=e.split(this._reNewline),n=[];for(i=0;i=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(t){t=t||this.ctx;var e=this.textAlign;this._styleMap=null,t.save(),this._setTextStyles(t),this.textAlign="left";var i=this._wrapText(t,this.text);return this.textAlign=e,t.restore(),this._textLines=i,this._styleMap=this._generateStyleMap(),i},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())},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,e){var i=this._styleMap[t];t=i.line,fabric.IText.prototype.shiftLineStyles.call(this,t,e)},_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, +i=i||{},i.nodeCanvas=s,i.nodeCacheCanvas=o;var a=fabric.Canvas||fabric.StaticCanvas,h=new a(n,i);return h.nodeCanvas=s,h.nodeCacheCanvas=o,h.contextContainer=s.getContext("2d"),h.contextCache=o.getContext("2d"),h.Font=Canvas.Font,h};var originaInitStatic=fabric.StaticCanvas.prototype._initStatic;fabric.StaticCanvas.prototype._initStatic=function(t,e){t=t||fabric.document.createElement("canvas"),this.nodeCanvas=new Canvas(t.width,t.height),this.nodeCacheCanvas=new Canvas(t.width,t.height),originaInitStatic.call(this,t,e),this.contextContainer=this.nodeCanvas.getContext("2d"),this.contextCache=this.nodeCacheCanvas.getContext("2d"),this.Font=Canvas.Font},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(t){return this.nodeCanvas.createJPEGStream(t)},fabric.StaticCanvas.prototype._initRetinaScaling=function(){if(this._isRetinaScaling())return this.lowerCanvasEl.setAttribute("width",this.width*fabric.devicePixelRatio),this.lowerCanvasEl.setAttribute("height",this.height*fabric.devicePixelRatio),this.nodeCanvas.width=this.width*fabric.devicePixelRatio,this.nodeCanvas.height=this.height*fabric.devicePixelRatio,this.contextContainer.scale(fabric.devicePixelRatio,fabric.devicePixelRatio),this},fabric.Canvas&&(fabric.Canvas.prototype._initRetinaScaling=fabric.StaticCanvas.prototype._initRetinaScaling);var origSetBackstoreDimension=fabric.StaticCanvas.prototype._setBackstoreDimension;fabric.StaticCanvas.prototype._setBackstoreDimension=function(t,e){return origSetBackstoreDimension.call(this,t,e),this.nodeCanvas[t]=e,this},fabric.Canvas&&(fabric.Canvas.prototype._setBackstoreDimension=fabric.StaticCanvas.prototype._setBackstoreDimension)}}(); \ No newline at end of file diff --git a/dist/fabric.min.js.gz b/dist/fabric.min.js.gz index 3f3b841f3fd2b1f29b7202a3821c1a6403d7d8b9..69fbd1867e9ac6b2d5e09f8f52387a2a77122ba6 100644 GIT binary patch literal 69740 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 literal 69708 zcmV(rK<>XEiwFoRCZ<>b17=}ja%p2OZE0>UYI6Y8y=i;fMzSdU{rwdZW+DS5xZ2Jn zpkQ8GwiBOYM?RLa_)v^4L^eglAiw~iB#y-Yeyge%bYqd^%$$3lcQO{y`&M0DRb5qm z6{LHM;35rYKL5G9yS-v*7ACQ04Z8p6erxSU)+U~_MHsWWweRQKHA@zI>}H*$d3JDM zi?6OxjpNo8nkTc(ipBZCL0#%~7|)aIvCV7f%FMp}a76;o=kp(z|CCzyDwU+{&rO&z z+xjD$Co9Y8(yu*dvt-VG{`BrBS*?>8a@y86PmlIrA0M55{`lsbVSkygqHmtQfk^F( z1#|xO&G2mzxJc$(6>S7WQOj}MQpdWplm$8am5<#V;eA)m!ICeK7V<7`sv-PpHJVM_!Da$X6q=}TCSC+L7Xj;bOqmwFp9)aCs_xxFyG2x zx``Nk7qMBMCSREP=*)v`8Kh}Yq;(?b)ht+>5q~6MT*R!xoTX6+KSf-*jm~vA&zBGk z=hjpX>h;HW{`cR?P|AMVtbEHJdy`IkI)>k~vw8at{-|p1xe+cq4yzwUkw-5i(U)A&s#`!CDDLV>gOQsc@v#W5%K880e`V{10;u{cD zNxr)?)34dZmoR_*K(1Bt&uW%|yV%4t_>67mR(|f~cJ4CgHeA^GGR(T?=j;kV?0uN! zECw7j$*0ck6(Fe4Z%QAraX1OP&@#I@Uf9f;`uhX9F*bP^b!pAJ2qSjr?hl;ZPBqW& zZ~pGCJ{~62aRlgaO#X$l(D_0ku^uVG8-kpsKoA z0Ths2{J~~IU<7BzH+Mm;sp)z-D<=*AztM&Wp|f z3$NA@y9sMMS}mQj`34}(Tw$5J4FFrzH`W6{^Y(XcAI|UsnXOhy{DI}mWDW=Oc?Qj_ zu}*Uw5_*_+Fhf>=jT|;PEXsKphxrd_Fb@HaOQ5%(-`(v4FeOovo&e4T!XSrwfMSkk z2o|C%vNWU?)yM3*oDThw4FXvQAQM+mlV~wZHtCGjw^E%i-`Oi*p8+B}NF z^%@TheSQ$xcW01tn!s@lWG!US;9ewgoXLEhyn=OoD=K;g43DbDsb?Ai+fY||CLjAM zi`&*Lzp-G#ad~MW%XpxE9nX!0gn(BER}~sWZf4aG)bClcXps-PZ1LX0Fnp~P)^1DK z#zhsYAk!pPJFj*L6Oa^OJ2y`*FC%6Ql25W$vp`$cMUq4;F#Dz!K6m$3lb0-S+Qx`f zc5byfU?`T|?9UWHg?|SCa6>??6j%ed7K`|c%+2`c$9KKKcm0tD4*o4a!rrFI>Ln81 zrGX0!uF>o2xD|&{E{~y*jv*S$rvMm>)w{~Z6h)~oizorupwE=D+fK`7oxDA8oHkT5 zXO}5s!2N!LT^KZ=xfY(mJpD9z%}dl~>|w?v2WI>uu!~jN0!Fd90M2!mzxi_$L>Ug0 z(;NEU;WhjMu$QE?N9APbTNvxN)9#I%cDGI!h%{BB>;kW#cBc8NhIkmsrJN;L7FILw z-n7zA-rcrBSWpawZ49NN7q>TF>~1|ELtVv#*N;|FOqG5!An;pIb(>9w_^}0oejsC> zQjFt0Tnav(O{+!W<2mm6Rq%zqN&wve)_RrPAn;K|SmmbbE{>_ zw#bpxPu5=Ik|Y9_ZOOvRW$rC^NdH~|{d+1`ux3gIJv*lvhwgQ9nq=rNQkN4(k!}Zn z2jX`KE78IN)6$%nP+|l8inSMKNanx#k3F&j{HHzTw^ zC?upDN3tx5uGmjdL$(f(3*&TgIlkx(Xa3D5EzPfJ9IK1IGjm1ok}Q%Qve`m{%#dqvJzHwQ{IhScH=4u0ZI=J80Si0 z$2$B>h>aQJB3`Nyc+t3<#Mpwbt%P1jj6+bF@PnmklKSx`igs=h);UVvSd?7a)*DRR z!?LhSdsaK{X6ejvjTWFL+_?9((?`Nco$1ybNC(R~I7ormi(x=XmK~?zWeAfE)nF6A z2)Qhd!YdY6IWReUN}_|kZnqN@EkVcN|9}m5IWE^^N;3%f7LjTnuxBopa|t}HT&7@* zlMiI9U@%LJ2Q3p3+(=gG>xE5I3rU&gr5#}N5_oVY-36RFl8`LutI!3iIRSK%p)er? zj05w6XFbHbQ2WkZIy=WxzyU*Z)Z7U2y}Z*j;T}#*3=@-yiAl|gNpWIgn3zmWi~`;J z=OiaejQEdnEkj{YMI?D+vf}0 zT?4_DU|WE^P9$o>ZQ?kO5EvrMg4bme48RoeUzn768eG2)vL&0phwBMg2Gke)uwr4Hau^T_MX8=m>!VlyQm_tu4aTj3MU@?O$hLRS3OygwO zDdLa3iv;^=V)ucuh7hMI?G1@lM$wCOrF>D-&Ri zJd4+2O`%q(2O7Q{<%qq3G-U|q9I+h*@l}wC)vqP3Q4Zd4@g<4@qe!*jWm=A#@hFLN zIHd3H>V!5woL{XX-t31U2DF;q-Bshd$QsM~b7DL+Ok5+>sJRBijbf{7M%l+M)u1lx znuZjvE-f`nFK08BWl35?z#?wsK;difNNdde1P)x}Nfd-jFl3$1$O)_IuvKB1!^TrN zRHrfkwFNuNYNvoqtV{ltOftN;z#qS6Ee-DeNl6-HTTj|~`-$Z|adx zbrnP#X1PYCSy8FGM;T<@Ft5PD3ot2RQzmx?>s~N8qzG#uU~#4&>3c@s2*fKOm%??l zRpd0?!_8_?3GW#30WIWb+DJIJkcA_@;*~}pX1jv znK)31PgUacDUeKmrmq>w(vqwyZvd2K=dvTP7Jf=Rfje~CDNh(8bHeNd84-hDKo$)$ zIK2QcQz(&Qrj;ZUDio%;mUg5cSh#Y0PB=c>rf~3l3X%fTY6&CxWh0k$zP4oqp&yF1?+= zjsyycXi_Oms^_-=3)86mfh#^g^G_T(plkm1nZ6bPa=)Q`pMQSlpU}WdoI)GhE6Lt! z(5cN&DP)vZ0dh7ynP>9*?X-1vYfsLyvy*AdIotIdy1#-&L#Z=4>Z=&B4z8i=@omKt?{}7ucBY(Fe4Y6 zyhh{(46n6ffY|^gS|7r>g*cCXk$e(d!=9xY1EQjIepsDoDm-9uV}@FxYv zfS^OwhT~~vnJnwzscXeRUSkn9W)lCp&m51(W2dSap1a?v47b?8ae9IYUg!oC1nEOy$%lMEMhs^Ys}%*r}(!!_@8}`GSOK4 zk|5P-R2fK#CR(~PH{wgT0q`I~thkEAd)#=knM!gVzX>WAQg#UhQq)?Y1QVzgB`BLa z?z#|^LFfu#?E)yFtPsCsh#(7L42SlW-&wcvR`+@5vX#P*dyWzK)xM;7ck5@Z%)RlG zR^lG{=dE-1#9y^m?zO*d-E_9Cqs~q1#63oab75Z}_W9UO3(>4S=v?<~$PAog*78r? z1pe&ka{So0mq4e^#+`vTa9TwXDsa?>ngzT0hkxA4TIapQ{o;3yTS;pL2={}(Zv6or z|I+S0Z{_Ys|FZQ*d(DHX`x4MP;!bnYo z2d`iB$FDp7u(j|8BIXd$$m=%7IU`9zzY+7#!pK&${JOVj4Pkq{Lzd>f|GM|aed~YM zd)iVf_rCYcF+)8q1jpAa|7H8V`w8av)8U)ZC!osTO+HQGOnd3Ra@X!9LDdKMqx;sq zaxZY@F&)pH3;y+d3RCgQebx5gk2J9I-?{HfN+p6y6F};2+y!6Ec|D+Jleq#^{HBGv zEWj{VK#7CNv1__4_rj3#uKchSx2`%VtnEd632>NVxE)e>24J{pM=iU9xz?2H(gCPk zP$XtuQ&xyP@>dv%886zH@yY>^J;ylAchLzcZlv|xpKRS5_sBhQSMK@L#VB1FMI9iV z<|r;2@B+t?_X<2lzp%|-`0+UF#NMzac5layJDF2b`%uI&OgnEQs-N&=5~&HtZ<=se zC3g;Bu*T)b{%e;aTmHQYW0)%b8NfJ;E0Gg~%WHoEe<#!FXyJd`$~%K$D{Oz;ih)1t zJZVzVnqxqN}-~RSHz&A6e`M~ zq8U|`Vk|5eux*C}%uc-Qk-d;Xyxk4s4I5qhoq2EJ_75))4lWM|2L~ryf#}lVh~&aw zv=*Ibt$AzXUL5v;AYb|C_5}i<-C49(PR|~;fH~|Rt`82@S_Nx_O32dDvRoY;TxnUZ zoMMxox_`J|0PmbgcJ-tGVe|pnluQ3)@?i?tY0$ZJPyH_~{4a;0;_oF)=u`T=gn7KA z-=%vEG$)h+jQEGh&s6?Y<O{y#=k@*~PCC=R|DukB-dF!h%r7QeX!@ufex zz45j}4~B@1YoeI9<;VeY_K^3cF7Hh>uOd1T9{rc@%N^e%w>y_K{}TKY_#~6i1QDpN zsNcYKQJC;DofRyU*cHX)Y39dB+9&V>#4nIcDAHfT4^Zke_yL3$!4F`&4g7pNbr%Ax z`TwT?ak(9JLU+?CPT~N0{ysp-TvBkChwITLAlb#_atiJFbN<^7U5Xiqn86enNs1YY zn4!w^RKz@0d7g=wXDZKg5%V1LAP@J?5ZKpEiqZ%%%Zze5JGUgnqdTMQcu|=yA#{-> zhMYJ+5HLh8SAnTm!!*n~%*Cm|5|}@c1jAZR!`0!%=nAG`11uHdm-XZdr-AS1>>!|ygS4W< zDUV}11?n#*UifV1ln$du6+AS`r4@Z7Ikph77ixO?Oeq=_<#ZuqesI8L=0e$0>Y|Bo zX8_a2U{+EbzlXngXfYBpj#854*di4+Hj3GO5fr+T<&1i+;+A>0;LtG~UPQFZ&YZB?4LIrdUG2)kzQiM(nK6e7Ccj?Qi>B}lu*YpEo8~ZSs3iZBnN2FvuEjnVOK;1XHLz;ioo#O7f zreo}irQ4dWQT$(JPzSYKJng$F~S)d`0#^%F0B=m-oQ?S!aym1`Z=bd@LgbpoMM z-`pl-GjKH3X23BT8XgfcRAB1da^0>80Pl2kk+R^+4$|9gLJ&2GamSH4V1Y8YGYRWN zMm7UH+nIOjq*mhJqD_RCqJl{Bg?YIP%#9bifP*}?Yd-jkyX_R=XuswnrGwlc|On5j4VrZs0IMm@l`16b=y>Qo*%|i@UOpU#PC-5}dZs3A@W6 zJHC#^4an9`9J-N9RHX@4Do#<=;ZiM>AF~z{tkEO7N)%O!5j%bUc{lxAc9XMs4l_TC zl9=5)>)Hhwfa^L!O^9BnZFik<@3Nk5LE)fro8wuQPRN*)Q?q7<4U~ww2J(te$o4+D zmf1|os;;*O&{69kSgl8vQ^Z;n`{yRfjp!#l^E%0l=tGK*%)Bos@)9F=;#O9>s7=Ea zZ28)FT`j^?S{F6{j?(d)m%z02TuX0K#s8fWO8bjzz4*6M?FCmjSciE)0p_v{g6y|d zCmF3N_UpTGt|5)%V+?cYVKSguCb^A_Hr>sj>c8c)rL0xFs1sgF*I~x1hCv2)WGa!8`w27)C?)=N0TCXIZ-(@#!NG)antHVJ02?xjEpT- zQUjsB;2m~IK&Dr#&57Xt@w5p1N^?MK*62S6z-fvbm~0s?U^aj**M{n66uh7SBUKzc zo3zVmU!VH0H1)ZgX{C#ET%z11oC7nZ)G%5e&PGc(2NFAUgUJ%wD#$v6Bat%!FkheG z$By0^eIfChMo)ohI>GV!(ES}}IqG+4Y-~f=LUoor0JyhOeZ&Kj3eGM|hAoY%*GWPf zZyd_EnkBLGX}t$(e^RnT1ETCCn^h&>cR1% zt|F0Csz=27>I=}{sHzlr#3$)qB0=eh)I(?$!)PjyhQ6a<6PN-VuKDQh_kOp>3OC}o3kuOZQLpl*Ha$1%OIXdEQNFNI)z1N^B+Y7m(c8*L^g$v9V&6q zz!JP03Cjk_WP<5bO+;(zff29iiWC2$IHgeQ5;1~jNy~&O3bZs^(1$z0uUU0%CnKj2 zhveNHR*O+Sxr4KGCP-=kvE^8g@DR5VZNJ`b8j>Rv` zXUEpQ2Q9&iNilP?A>cr?$&}> zDgQb@x7uimibUCHzfwOCRvHr4NN4Ceisp3@GAu1Ad{R|(5rvn4z+^n+Uco{O58Y6mA_CU#PYKzniO)uqm^HO8l#Um>Jj{-Z!OUFyDcZNS?*^eIpbs`GIxs$0Q z^o$u4Nu7~M;M5A5J$JR?+ZG(S?GWf16Q9)#L~JQnbO^8y)_ibq$tB-Tabtr*bP+2t zPj;A$GQ>PGVUkTry|^nds!tjyaMEb2!8^x*)+}|-Eh-@bkyLrhYh_Fy;YymiwVb;B zwdnY*`0$m6c0S=PPe&PIS3VLoe=^ZeVS)kY8yUjpnbUfb64p+Qd5e7!@yS_ zDfx@(*aa58wjYSht#xq8euHf)T1Umx+SXO(&nolh3bzZ#3mN>t_+z&!=IC-MhpnZ^ zT!mYMdzdf7ZZONY5ySP~m$LM|9D@~;Ri(x+%5-O0hK4+C-x?wO7dG+AWeicfbk<2- zIg#R>Wi9(`K0fP?&*m+shbnSFNsdbNcc|3`FqJw~m-1gBwvM$xTO-PFcV|Jb-m37p zPJKD#{ij^xBEM%9(UzBvP#Q+m>`vW08MeAjYRB{N%0hafI)P%|#E4KWttkta^a2v= z1<`sLz-*n_@JEz{FCQmx^81-HZ98X9Pv?s?NZ*aZab|3DO^Rf62Kcai=cUAz*4vkI zI4MM1n-mopPcW9t;c}Td)8$ zSX*|{|f_ zueR^dTZNZbNOV4*_rp-`ly`zf%ovC1uuB27(<1ovEXXXA&@0wk;I}CuB;{7Ao@q

g%B~4h=l@{y9V+C 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 z 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 charIndex) { - newLineStyles[parseInt(index, 10) - charIndex] = this.styles[lineIndex][index]; + var numIndex = parseInt(index, 10); + if (numIndex >= charIndex) { + somethingAdded = true; + newLineStyles[numIndex - charIndex] = this.styles[lineIndex][index]; delete this.styles[lineIndex][index]; } } - this.styles[lineIndex + 1] = newLineStyles; + somethingAdded && (this.styles[lineIndex + 1] = newLineStyles); } this._forceClearCache = true; }, @@ -11626,7 +11648,8 @@ fabric.Image.filters.BaseFilter.fromObject = function(object, callback) { } } } - this.styles[lineIndex][charIndex] = style || clone(currentLineStyles[charIndex - 1]); + var newStyle = style || currentLineStyles[charIndex - 1]; + newStyle && (this.styles[lineIndex][charIndex] = newStyle); this._forceClearCache = true; }, insertStyleObjects: function(_chars, isEndOfLine, styleObject) { @@ -12531,7 +12554,6 @@ fabric.util.object.extend(fabric.IText.prototype, { } } }; - var clone = fabric.util.object.clone; fabric.util.object.extend(fabric.Textbox.prototype, { _removeExtraneousStyles: function() { for (var prop in this._styleMap) { @@ -12553,17 +12575,9 @@ fabric.util.object.extend(fabric.IText.prototype, { fabric.IText.prototype.insertNewlineStyleObject.apply(this, [ lineIndex, charIndex, isEndOfLine ]); }, shiftLineStyles: function(lineIndex, offset) { - var clonedStyles = clone(this.styles), map = this._styleMap[lineIndex]; + var map = this._styleMap[lineIndex]; lineIndex = map.line; - for (var line in this.styles) { - var numericLine = parseInt(line, 10); - if (numericLine > lineIndex) { - this.styles[numericLine + offset] = clonedStyles[numericLine]; - if (!clonedStyles[numericLine - offset]) { - delete this.styles[numericLine]; - } - } - } + fabric.IText.prototype.shiftLineStyles.call(this, lineIndex, offset); }, _getTextOnPreviousLine: function(lIndex) { var textOnPreviousLine = this._textLines[lIndex - 1]; diff --git a/package.json b/package.json index d3dd940a..65dd6e7b 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "fabric", "description": "Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.", "homepage": "http://fabricjs.com/", - "version": "1.7.6", + "version": "1.7.7", "author": "Juriy Zaytsev ", "contributors": [ {