From ccdcb8a09c230d7fef458bfd1f97cad2bd94f39d Mon Sep 17 00:00:00 2001 From: Andrea Bogazzi Date: Tue, 4 Jul 2017 00:28:49 +0200 Subject: [PATCH 1/2] change animation (#4068) * change animation * added params to object.animate --- src/mixins/animation.mixin.js | 8 ++++---- src/util/animate.js | 20 ++++++++++++++------ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/mixins/animation.mixin.js b/src/mixins/animation.mixin.js index a5e2d37fb..92954e77f 100644 --- a/src/mixins/animation.mixin.js +++ b/src/mixins/animation.mixin.js @@ -201,7 +201,7 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot abort: options.abort && function() { return options.abort.call(_this); }, - onChange: function(value) { + onChange: function(value, valueProgress, timeProgress) { if (propPair) { _this[propPair[0]][propPair[1]] = value; } @@ -211,15 +211,15 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot if (skipCallbacks) { return; } - options.onChange && options.onChange(); + options.onChange && options.onChange(value, valueProgress, timeProgress); }, - onComplete: function() { + onComplete: function(value, valueProgress, timeProgress) { if (skipCallbacks) { return; } _this.setCoords(); - options.onComplete && options.onComplete(); + options.onComplete && options.onComplete(value, valueProgress, timeProgress); } }); } diff --git a/src/util/animate.js b/src/util/animate.js index 7d2c0d16f..e13fc8ae9 100644 --- a/src/util/animate.js +++ b/src/util/animate.js @@ -1,5 +1,9 @@ (function() { + function noop() { + return false; + } + /** * Changes value from one to another within certain period of time, invoking callbacks as value is being changed. * @memberOf fabric.util @@ -20,8 +24,9 @@ var start = timestamp || +new Date(), duration = options.duration || 500, finish = start + duration, time, - onChange = options.onChange || function() { }, - abort = options.abort || function() { return false; }, + onChange = options.onChange || noop, + abort = options.abort || noop, + onComplete = options.onComplete || noop, easing = options.easing || function(t, b, c, d) {return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;}, startValue = 'startValue' in options ? options.startValue : 0, endValue = 'endValue' in options ? options.endValue : 100, @@ -30,13 +35,16 @@ options.onStart && options.onStart(); (function tick(ticktime) { - time = ticktime || +new Date(); - var currentTime = time > finish ? duration : (time - start); if (abort()) { - options.onComplete && options.onComplete(); + onComplete(endValue, 1, 1); return; } - onChange(easing(currentTime, startValue, byValue, duration)); + time = ticktime || +new Date(); + var currentTime = time > finish ? duration : (time - start), + timePerc = currentTime / duration, + current = easing(currentTime, startValue, byValue, duration), + valuePerc = Math.abs((current - startValue) / byValue); + onChange(current, valuePerc, timePerc); if (time > finish) { options.onComplete && options.onComplete(); return; From 722787adbd1c49afa6c2a886bffd7d8978caadf4 Mon Sep 17 00:00:00 2001 From: Asturur Date: Sun, 9 Jul 2017 00:34:51 +0200 Subject: [PATCH 2/2] upgrade v1716 --- CHANGELOG.md | 7 +++++ HEADER.js | 2 +- ISSUE_TEMPLATE.md | 2 +- README.md | 1 + dist/fabric.js | 75 ++++++++++++++++++++++++++++++++----------------- dist/fabric.min.js | 18 ++++++------ dist/fabric.min.js.gz | Bin 71069 -> 71150 bytes dist/fabric.require.js | 64 ++++++++++++++++++++++++++--------------- package.json | 2 +- 9 files changed, 110 insertions(+), 61 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e6051345d..22c348142 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +**Version 1.7.16** + +- Improvement: Add information to onChange and onComplete animation function [#4068](https://github.com/kangax/fabric.js/pull/4068) +- Improvement: avoid multiplying identity matrices in calcTransformMatrix function +- Fix: ativeGroup did not destroy correctly if a toObject was happening +- Improvement: Pass the event to object:modified when available. [#4061](https://github.com/kangax/fabric.js/pull/4061) + **Version 1.7.15** - Improvement: Made iText keymap public. [#4053](https://github.com/kangax/fabric.js/pull/4053) diff --git a/HEADER.js b/HEADER.js index 42f7c87a5..d12921ddd 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.15" }; +var fabric = fabric || { version: "1.7.16" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; } diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md index a322d8220..f4befb379 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.14 +1.7.16 ## Test Case http://jsfiddle.net/fabricjs/Da7SP/ diff --git a/README.md b/README.md index 8d8c88373..961223590 100644 --- a/README.md +++ b/README.md @@ -274,6 +274,7 @@ Get help in Fabric's IRC channel — irc://irc.freenode.net/#fabric.js - [Maxim "hakunin" Chernyak](http://twitter.com/hakunin) for ideas, and help with various parts of the library throughout its life - [Sergey Nisnevich](http://nisnya.com) for help with geometry logic - [Stefan Kienzle](https://twitter.com/kienzle_s) for help with bugs, features, documentation, github issues +- [Shutterstock](http://www.shutterstock.com) for the resources used and the time spent using and improving the library. - [And all the other GitHub contributors](https://github.com/kangax/fabric.js/graphs/contributors) ### MIT License diff --git a/dist/fabric.js b/dist/fabric.js index 023a92b7b..8fc210b88 100644 --- a/dist/fabric.js +++ b/dist/fabric.js @@ -1,7 +1,7 @@ /* build: `node build.js modules=ALL exclude=json,gestures minifier=uglifyjs` */ /*! Fabric.js Copyright 2008-2015, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "1.7.15" }; +var fabric = fabric || { version: "1.7.16" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; } @@ -2736,6 +2736,10 @@ if (typeof console !== 'undefined') { (function() { + function noop() { + return false; + } + /** * Changes value from one to another within certain period of time, invoking callbacks as value is being changed. * @memberOf fabric.util @@ -2756,8 +2760,9 @@ if (typeof console !== 'undefined') { var start = timestamp || +new Date(), duration = options.duration || 500, finish = start + duration, time, - onChange = options.onChange || function() { }, - abort = options.abort || function() { return false; }, + onChange = options.onChange || noop, + abort = options.abort || noop, + onComplete = options.onComplete || noop, easing = options.easing || function(t, b, c, d) {return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;}, startValue = 'startValue' in options ? options.startValue : 0, endValue = 'endValue' in options ? options.endValue : 100, @@ -2766,13 +2771,16 @@ if (typeof console !== 'undefined') { options.onStart && options.onStart(); (function tick(ticktime) { - time = ticktime || +new Date(); - var currentTime = time > finish ? duration : (time - start); if (abort()) { - options.onComplete && options.onComplete(); + onComplete(endValue, 1, 1); return; } - onChange(easing(currentTime, startValue, byValue, duration)); + time = ticktime || +new Date(); + var currentTime = time > finish ? duration : (time - start), + timePerc = currentTime / duration, + current = easing(currentTime, startValue, byValue, duration), + valuePerc = Math.abs((current - startValue) / byValue); + onChange(current, valuePerc, timePerc); if (time > finish) { options.onComplete && options.onComplete(); return; @@ -10253,10 +10261,10 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab * @returns the original values of instance which were changed */ _realizeGroupTransformOnObject: function(instance) { - var layoutProps = ['angle', 'flipX', 'flipY', 'height', 'left', 'scaleX', 'scaleY', 'top', 'width']; if (instance.group && instance.group === this.getActiveGroup()) { //Copy all the positionally relevant properties across now - var originalValues = {}; + var originalValues = {}, + layoutProps = ['angle', 'flipX', 'flipY', 'left', 'scaleX', 'scaleY', 'skewX', 'skewY', 'top']; layoutProps.forEach(function(prop) { originalValues[prop] = instance[prop]; }); @@ -10663,7 +10671,7 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab isClick = (!groupSelector || (groupSelector.left === 0 && groupSelector.top === 0)); if (transform) { - this._finalizeCurrentTransform(); + this._finalizeCurrentTransform(e); searchTarget = !transform.actionPerformed; } @@ -10718,8 +10726,9 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab /** * @private + * @param {Event} e send the mouse event that generate the finalize down, so it can be used in the event */ - _finalizeCurrentTransform: function() { + _finalizeCurrentTransform: function(e) { var transform = this._currentTransform, target = transform.target; @@ -10732,8 +10741,8 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab this._restoreOriginXY(target); if (transform.actionPerformed || (this.stateful && target.hasStateChanged())) { - this.fire('object:modified', { target: target }); - target.fire('modified'); + this.fire('object:modified', { target: target, e: e }); + target.fire('modified', { e: e }); } }, @@ -14394,23 +14403,37 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.Stati calcTransformMatrix: function(skipGroup) { var center = this.getCenterPoint(), translateMatrix = [1, 0, 0, 1, center.x, center.y], - rotateMatrix = this._calcRotateMatrix(), + rotateMatrix, dimensionMatrix = this._calcDimensionsTransformMatrix(this.skewX, this.skewY, true), - matrix = this.group && !skipGroup ? this.group.calcTransformMatrix() : fabric.iMatrix.concat(); - matrix = multiplyMatrices(matrix, translateMatrix); - matrix = multiplyMatrices(matrix, rotateMatrix); + matrix; + if (this.group && !skipGroup) { + matrix = multiplyMatrices(this.group.calcTransformMatrix(), translateMatrix); + } + else { + matrix = translateMatrix; + } + if (this.angle) { + rotateMatrix = this._calcRotateMatrix(); + matrix = multiplyMatrices(matrix, rotateMatrix); + } matrix = multiplyMatrices(matrix, dimensionMatrix); return matrix; }, _calcDimensionsTransformMatrix: function(skewX, skewY, flipping) { - var skewMatrixX = [1, 0, Math.tan(degreesToRadians(skewX)), 1], - skewMatrixY = [1, Math.tan(degreesToRadians(skewY)), 0, 1], + var skewMatrix, scaleX = this.scaleX * (flipping && this.flipX ? -1 : 1), scaleY = this.scaleY * (flipping && this.flipY ? -1 : 1), - scaleMatrix = [scaleX, 0, 0, scaleY], - m = multiplyMatrices(scaleMatrix, skewMatrixX, true); - return multiplyMatrices(m, skewMatrixY, true); + scaleMatrix = [scaleX, 0, 0, scaleY, 0, 0]; + if (skewX) { + skewMatrix = [1, 0, Math.tan(degreesToRadians(skewX)), 1]; + scaleMatrix = multiplyMatrices(scaleMatrix, skewMatrix, true); + } + if (skewY) { + skewMatrix = [1, Math.tan(degreesToRadians(skewY)), 0, 1]; + scaleMatrix = multiplyMatrices(scaleMatrix, skewMatrix, true); + } + return scaleMatrix; }, /* @@ -15414,7 +15437,7 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot abort: options.abort && function() { return options.abort.call(_this); }, - onChange: function(value) { + onChange: function(value, valueProgress, timeProgress) { if (propPair) { _this[propPair[0]][propPair[1]] = value; } @@ -15424,15 +15447,15 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot if (skipCallbacks) { return; } - options.onChange && options.onChange(); + options.onChange && options.onChange(value, valueProgress, timeProgress); }, - onComplete: function() { + onComplete: function(value, valueProgress, timeProgress) { if (skipCallbacks) { return; } _this.setCoords(); - options.onComplete && options.onComplete(); + options.onComplete && options.onComplete(value, valueProgress, timeProgress); } }); } diff --git a/dist/fabric.min.js b/dist/fabric.min.js index 174e27c67..7bdab5641 100644 --- a/dist/fabric.min.js +++ b/dist/fabric.min.js @@ -1,9 +1,9 @@ -var fabric=fabric||{version:"1.7.15"};"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.canvasModule="canvas",fabric.perfLimitSizeTotal=2097152,fabric.maxCacheSideLimit=4096,fabric.minCacheSideLimit=256,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?A-=2*f:1===c&&A<0&&(A+=2*f);for(var E=Math.ceil(Math.abs(A/f*2)),I=[],L=A/E,F=8/3*Math.sin(L/4)*Math.sin(L/4)/Math.sin(L/2),B=P+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){for(var e=null,i=this;i.constructor.superclass;){var n=i.constructor.superclass.prototype[t];if(i[t]!==n){e=n;break}i=i.constructor.superclass.prototype}return e?arguments.length>1?e.apply(this,r.call(arguments,1)):e.call(this):console.log("tried to callSuper "+t+", method not found in prototype chain",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,r){if(t){f(t);var n=p.Object.__uid++,s=d(t),o=p.util.toArray(t.getElementsByTagName("*"));if(s.crossOrigin=r&&r.crossOrigin,s.svgUid=n,0===o.length&&p.isLikelyNode){o=t.selectNodes('//*[name(.)!="svg"]');for(var a=[],h=0,c=o.length;h/i,""))),n&&n.documentElement||e&&e(null),p.parseSVGDocument(n.documentElement,function(t,i){e&&e(t,i)},i,r)}t=t.replace(/^\n\s*/,"").trim(),new p.util.request(t,{method:"get",onComplete:n})},loadSVGFromString:function(t,e,i,r){t=t.trim();var n;if("undefined"!=typeof DOMParser){var s=new DOMParser;s&&s.parseFromString&&(n=s.parseFromString(t,"text/xml"))}else p.window.ActiveXObject&&(n=new ActiveXObject("Microsoft.XMLDOM"),n.async="false",n.loadXML(t.replace(//i,"")));p.parseSVGDocument(n.documentElement,function(t,i){e(t,i)},i,r)}})}("undefined"!=typeof exports?exports:this),fabric.ElementsParser=function(t,e,i,r,n){this.elements=t,this.callback=e,this.options=i,this.reviver=r,this.svgUid=i&&i.svgUid||0,this.parsingOptions=n},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}var n=fabric.util.object.clone;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:parseFloat(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=n(this.coords,!0),s=n(this.colorStops,!0),o=r.r1>r.r2;if(s.sort(function(t,e){return t.offset-e.offset}),!t.group||"path-group"!==t.group.type)for(var a in r)"x1"===a||"x2"===a?r[a]+=this.offsetX-t.width/2:"y1"!==a&&"y2"!==a||(r[a]+=this.offsetY-t.height/2);if(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']),"radial"===this.type){if(o){s=s.concat(),s.reverse();for(var h=0;h0)for(var l=Math.max(r.r1,r.r2),u=c/l,h=0;h\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:{},skipOffscreen:!1,_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(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(this.targets=[],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}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){var i,r,n=this._hoveredTarget;n!==t&&(i={e:e,target:t,previousTarget:this._hoveredTarget},r={e:e,target:this._hoveredTarget,nextTarget:t},this._hoveredTarget=t),t?n!==t&&(n&&(this.fire("mouse:out",r),n.fire("mouseout",r)),this.fire("mouse:over",i),t.fire("mouseover",i)):n&&(this.fire("mouse:out",r),n.fire("mouseout",r))},_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.upperCanvasEl.className="":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.fire("object:selected",{target:t,e:e}),t.fire("selected",{e:e}),this.renderAll(),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)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(t,i,r){if(t in e)this.setCursor(this._getRotatedCornerCursor(t,i,r));else{if("mtr"!==t||!i.hasRotatingPoint)return this.setCursor(this.defaultCursor),!1;this.setCursor(this.rotationCursor)}},_getRotatedCornerCursor:function(t,i,r){var n=Math.round(i.getAngle()%360/45);return n<0&&(n+=8),n+=e[t],r[this.altActionKey]&&e[t]%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),e)}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,e),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,e:t}),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),n=this,s=this.renderOnAddRemove;return this.renderOnAddRemove=!1,this._enlivenObjects(r.objects,function(t){n.clear(),n._setBgOverlay(r,function(){t.forEach(function(t,e){n.insertAt(t,e)}),n.renderOnAddRemove=s,delete r.objects,delete r.backgroundImage,delete r.overlayImage,delete r.background,delete r.overlay,n._setOptions(r),n.renderAll(),e&&e()})},i),this}},_setBgOverlay:function(t,e){var i={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(!(t.backgroundImage||t.overlayImage||t.background||t.overlay))return void(e&&e());var r=function(){i.backgroundImage&&i.overlayImage&&i.backgroundColor&&i.overlayColor&&e&&e()};this.__setBgOverlay("backgroundImage",t.backgroundImage,i,r),this.__setBgOverlay("overlayImage",t.overlayImage,i,r),this.__setBgOverlay("backgroundColor",t.background,i,r),this.__setBgOverlay("overlayColor",t.overlay,i,r)},__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){return t&&0!==t.length?void fabric.util.enlivenObjects(t,function(t){e&&e(t)},null,i):void(e&&e([]))},_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,c=2;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:!0,stateProperties:"top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeLineJoin strokeMiterLimit angle opacity fill globalCompositeOperation shadow clipTo visible backgroundColor skewX skewY fillRule".split(" "),cacheProperties:"fill stroke strokeWidth strokeDashArray width height strokeLineCap strokeLineJoin strokeMiterLimit backgroundColor".split(" "),initialize:function(t){t=t||{},t&&this.setOptions(t)},_createCacheCanvas:function(){this._cacheProperties={},this._cacheCanvas=e.document.createElement("canvas"),this._cacheContext=this._cacheCanvas.getContext("2d"),this._updateCacheCanvas()},_limitCacheSize:function(t){var i=e.perfLimitSizeTotal,r=e.cacheSideLimit,n=t.width,s=t.height,o=n/s,a=e.util.limitDimsByArea(o,i,r),h=e.util.capValue,c=e.maxCacheSideLimit,l=e.minCacheSideLimit,u=h(l,a.x,c),f=h(l,a.y,c);return n>u?(t.zoomX/=n/u,t.width=u):nf?(t.zoomY/=s/f,t.height=f):sg||s>p,b=(n<.9*g||s<.9*p)&&g>r&&p>r;d=v||b,v&&(u=.1*n&-2,f=.1*s&-2)}return!!l&&(d?(this._cacheCanvas.width=Math.max(Math.ceil(n)+u,r),this._cacheCanvas.height=Math.max(Math.ceil(s)+f,r),this.cacheTranslationX=(n+u)/2,this.cacheTranslationY=(s+f)/2):(this._cacheContext.setTransform(1,0,0,1,0,0),this._cacheContext.clearRect(0,0,this._cacheCanvas.width,this._cacheCanvas.height)),this.cacheWidth=n,this.cacheHeight=s,this._cacheContext.translate(this.cacheTranslationX,this.cacheTranslationY),this._cacheContext.scale(o,a),this.zoomX=o,this.zoomY=a,!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),this.group&&this.stateProperties.indexOf(t)>-1&&this.group.set("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()},isNotVisible:function(){return 0===this.opacity||0===this.width&&0===this.height||!this.visible},render:function(t,i){this.isNotVisible()||this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(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.shouldCache(i)?(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.dirty=!1,this.drawObject(t,i),i&&this.objectCaching&&this.statefullCache&&this.saveState({propertySet:"cacheProperties"})),this.clipTo&&t.restore(),t.restore())},needsItsOwnCache:function(){return!1},shouldCache:function(t){return!t&&this.objectCaching&&(!this.group||this.needsItsOwnCache()||!this.group.isCaching())},willDrawShadow:function(){return!!this.shadow&&(0!==this.shadow.offsetX||0!==this.shadow.offsetY)},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.cacheTranslationX,-this.cacheTranslationY)},isCacheDirty:function(t){if(this.isNotVisible())return!1;if(this._cacheCanvas&&!t&&this._updateCacheCanvas())return!0;if(this.dirty||this.statefullCache&&this.hasStateChanged("cacheProperties")){if(this._cacheCanvas&&!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){if(this.active&&(!this.group||this.group===this.canvas.getActiveGroup())){var i,r=this.getViewportTransform(),n=this.calcTransformMatrix();n=e.util.multiplyTransformMatrices(r,n),i=e.util.qrDecompose(n),t.save(),t.translate(i.translateX,i.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(i.angle)),this.drawBordersInGroup(t,i)):(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")},onDeselect:function(){}})}(),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;if(this.intersectsWithRect(i,r,!0))return!0;var o={x:(i.x+r.x)/2,y:(i.y+r.y)/2};return!!this.containsPoint(o,null,!0)},_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 6.123233995736766e-17!==i&&i!==-1.8369701987210297e-16||(i=0),[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");var n=e.Object.prototype.cacheProperties.concat();n.push("rx","ry"),e.Rect=e.util.createClass(e.Object,{stateProperties:r,type:"rect",rx:0,ry:0,cacheProperties:n,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,o=e.Object.NUM_FRACTION_DIGITS;if(e.Polyline)return void e.warn("fabric.Polyline is already defined");var a=e.Object.prototype.cacheProperties.concat();a.push("points"),e.Polyline=e.util.createClass(e.Object,{type:"polyline",points:null,minX:0,minY:0,cacheProperties:a,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){var e=[],i=0,r=0,n=this._createBaseSVGMarkup();this.group&&"path-group"===this.group.type||(i=this.pathOffset.x,r=this.pathOffset.y);for(var a=0,h=this.points.length;a\n'),t?t(n.join("")):n.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,cacheProperties:[],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;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.setCoords(),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.setCoords(),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})},toDatalessObject:function(t){var e=this.getObjects().map(function(e){var i=e.includeDefaultValues;e.includeDefaultValues=e.group.includeDefaultValues;var r=e.toDatalessObject(t);return e.includeDefaultValues=i,r});return i(this.callSuper("toDatalessObject",t),{objects:e})},render:function(t){this._transformDone=!0,this.callSuper("render",t),this._transformDone=!1},shouldCache:function(){var t=this.objectCaching&&(!this.group||this.needsItsOwnCache()||!this.group.isCaching());if(this.caching=t,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,D,P,A,E;for(T.x=(t+.5)*y,j.x=r(T.x),h=0;h=e)){A=r(1e3*s(c-T.x)),O[A]||(O[A]={});for(var I=j.y-w;I<=j.y+w;I++)I<0||I>=o||(E=r(1e3*s(I-T.y)),O[A][E]||(O[A][E]=m(n(i(A*x,2)+i(E*C,2))/1e3)),u=O[A][E],u>0&&(d=4*(I*e+c),g+=u,k+=u*v[d],M+=u*v[d+1],D+=u*v[d+2],P+=u*v[d+3]))}d=4*(h*a+t),b[d]=k/g,b[d+1]=M/g,b[d+2]=D/g,b[d+3]=P/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=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.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(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||t(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 r){var s=parseInt(n,10);s<=e&&delete r[s]}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,t.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&&(!t.e.button||1===t.e.button)){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)||t.e.button&&1!==t.e.button||(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="white-space: nowrap; position: absolute; top: "+t.top+"; left: "+t.left+"; opacity: 0; width: 1px; height: 1px; 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 +var fabric=fabric||{version:"1.7.16"};"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.canvasModule="canvas",fabric.perfLimitSizeTotal=2097152,fabric.maxCacheSideLimit=4096,fabric.minCacheSideLimit=256,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?A-=2*f:1===c&&A<0&&(A+=2*f);for(var E=Math.ceil(Math.abs(A/f*2)),I=[],L=A/E,F=8/3*Math.sin(L/4)*Math.sin(L/4)/Math.sin(L/2),B=P+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){for(var e=null,i=this;i.constructor.superclass;){var n=i.constructor.superclass.prototype[t];if(i[t]!==n){e=n;break}i=i.constructor.superclass.prototype}return e?arguments.length>1?e.apply(this,r.call(arguments,1)):e.call(this):console.log("tried to callSuper "+t+", method not found in prototype chain",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(){return!1}function e(e){i(function(r){e||(e={});var n,s=r||+new Date,o=e.duration||500,a=s+o,h=e.onChange||t,c=e.abort||t,l=e.onComplete||t,u=e.easing||function(t,e,i,r){return-i*Math.cos(t/r*(Math.PI/2))+i+e},f="startValue"in e?e.startValue:0,d="endValue"in e?e.endValue:100,g=e.byValue||d-f;e.onStart&&e.onStart(),function t(r){if(c())return void l(d,1,1);n=r||+new Date;var p=n>a?o:n-s,v=p/o,b=u(p,f,g,o),m=Math.abs((b-f)/g);return h(b,m,v),n>a?void(e.onComplete&&e.onComplete()):void i(t)}(s)})}function i(){return r.apply(fabric.window,arguments)}var r=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=e,fabric.util.requestAnimFrame=i}(),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,r){if(t){f(t);var n=p.Object.__uid++,s=d(t),o=p.util.toArray(t.getElementsByTagName("*"));if(s.crossOrigin=r&&r.crossOrigin,s.svgUid=n,0===o.length&&p.isLikelyNode){o=t.selectNodes('//*[name(.)!="svg"]');for(var a=[],h=0,c=o.length;h/i,""))),n&&n.documentElement||e&&e(null),p.parseSVGDocument(n.documentElement,function(t,i){e&&e(t,i)},i,r)}t=t.replace(/^\n\s*/,"").trim(),new p.util.request(t,{method:"get",onComplete:n})},loadSVGFromString:function(t,e,i,r){t=t.trim();var n;if("undefined"!=typeof DOMParser){var s=new DOMParser;s&&s.parseFromString&&(n=s.parseFromString(t,"text/xml"))}else p.window.ActiveXObject&&(n=new ActiveXObject("Microsoft.XMLDOM"),n.async="false",n.loadXML(t.replace(//i,"")));p.parseSVGDocument(n.documentElement,function(t,i){e(t,i)},i,r)}})}("undefined"!=typeof exports?exports:this),fabric.ElementsParser=function(t,e,i,r,n){this.elements=t,this.callback=e,this.options=i,this.reviver=r,this.svgUid=i&&i.svgUid||0,this.parsingOptions=n},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}var n=fabric.util.object.clone;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:parseFloat(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=n(this.coords,!0),s=n(this.colorStops,!0),o=r.r1>r.r2;if(s.sort(function(t,e){return t.offset-e.offset}),!t.group||"path-group"!==t.group.type)for(var a in r)"x1"===a||"x2"===a?r[a]+=this.offsetX-t.width/2:"y1"!==a&&"y2"!==a||(r[a]+=this.offsetY-t.height/2);if(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']),"radial"===this.type){if(o){s=s.concat(),s.reverse();for(var h=0;h0)for(var l=Math.max(r.r1,r.r2),u=c/l,h=0;h\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:{},skipOffscreen:!1,_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(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(this.targets=[],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}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){var i,r,n=this._hoveredTarget;n!==t&&(i={e:e,target:t,previousTarget:this._hoveredTarget},r={e:e,target:this._hoveredTarget,nextTarget:t},this._hoveredTarget=t),t?n!==t&&(n&&(this.fire("mouse:out",r),n.fire("mouseout",r)),this.fire("mouse:over",i),t.fire("mouseover",i)):n&&(this.fire("mouse:out",r),n.fire("mouseout",r))},_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.upperCanvasEl.className="":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.fire("object:selected",{target:t,e:e}),t.fire("selected",{e:e}),this.renderAll(),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)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(t,i,r){if(t in e)this.setCursor(this._getRotatedCornerCursor(t,i,r));else{if("mtr"!==t||!i.hasRotatingPoint)return this.setCursor(this.defaultCursor),!1;this.setCursor(this.rotationCursor)}},_getRotatedCornerCursor:function(t,i,r){var n=Math.round(i.getAngle()%360/45);return n<0&&(n+=8),n+=e[t],r[this.altActionKey]&&e[t]%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),e)}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,e),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,e:t}),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),n=this,s=this.renderOnAddRemove;return this.renderOnAddRemove=!1,this._enlivenObjects(r.objects,function(t){n.clear(),n._setBgOverlay(r,function(){t.forEach(function(t,e){n.insertAt(t,e)}),n.renderOnAddRemove=s,delete r.objects,delete r.backgroundImage,delete r.overlayImage,delete r.background,delete r.overlay,n._setOptions(r),n.renderAll(),e&&e()})},i),this}},_setBgOverlay:function(t,e){var i={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(!(t.backgroundImage||t.overlayImage||t.background||t.overlay))return void(e&&e());var r=function(){i.backgroundImage&&i.overlayImage&&i.backgroundColor&&i.overlayColor&&e&&e()};this.__setBgOverlay("backgroundImage",t.backgroundImage,i,r),this.__setBgOverlay("overlayImage",t.overlayImage,i,r),this.__setBgOverlay("backgroundColor",t.background,i,r),this.__setBgOverlay("overlayColor",t.overlay,i,r)},__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){return t&&0!==t.length?void fabric.util.enlivenObjects(t,function(t){e&&e(t)},null,i):void(e&&e([]))},_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,c=2;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:!0,stateProperties:"top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeLineJoin strokeMiterLimit angle opacity fill globalCompositeOperation shadow clipTo visible backgroundColor skewX skewY fillRule".split(" "),cacheProperties:"fill stroke strokeWidth strokeDashArray width height strokeLineCap strokeLineJoin strokeMiterLimit backgroundColor".split(" "),initialize:function(t){t=t||{},t&&this.setOptions(t)},_createCacheCanvas:function(){this._cacheProperties={},this._cacheCanvas=e.document.createElement("canvas"),this._cacheContext=this._cacheCanvas.getContext("2d"),this._updateCacheCanvas()},_limitCacheSize:function(t){var i=e.perfLimitSizeTotal,r=e.cacheSideLimit,n=t.width,s=t.height,o=n/s,a=e.util.limitDimsByArea(o,i,r),h=e.util.capValue,c=e.maxCacheSideLimit,l=e.minCacheSideLimit,u=h(l,a.x,c),f=h(l,a.y,c);return n>u?(t.zoomX/=n/u,t.width=u):nf?(t.zoomY/=s/f,t.height=f):sg||s>p,b=(n<.9*g||s<.9*p)&&g>r&&p>r;d=v||b,v&&(u=.1*n&-2,f=.1*s&-2)}return!!l&&(d?(this._cacheCanvas.width=Math.max(Math.ceil(n)+u,r),this._cacheCanvas.height=Math.max(Math.ceil(s)+f,r),this.cacheTranslationX=(n+u)/2,this.cacheTranslationY=(s+f)/2):(this._cacheContext.setTransform(1,0,0,1,0,0),this._cacheContext.clearRect(0,0,this._cacheCanvas.width,this._cacheCanvas.height)),this.cacheWidth=n,this.cacheHeight=s,this._cacheContext.translate(this.cacheTranslationX,this.cacheTranslationY),this._cacheContext.scale(o,a),this.zoomX=o,this.zoomY=a,!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),this.group&&this.stateProperties.indexOf(t)>-1&&this.group.set("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()},isNotVisible:function(){return 0===this.opacity||0===this.width&&0===this.height||!this.visible},render:function(t,i){this.isNotVisible()||this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(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.shouldCache(i)?(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.dirty=!1,this.drawObject(t,i),i&&this.objectCaching&&this.statefullCache&&this.saveState({propertySet:"cacheProperties"})),this.clipTo&&t.restore(),t.restore())},needsItsOwnCache:function(){return!1},shouldCache:function(t){return!t&&this.objectCaching&&(!this.group||this.needsItsOwnCache()||!this.group.isCaching())},willDrawShadow:function(){return!!this.shadow&&(0!==this.shadow.offsetX||0!==this.shadow.offsetY)},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.cacheTranslationX,-this.cacheTranslationY)},isCacheDirty:function(t){if(this.isNotVisible())return!1;if(this._cacheCanvas&&!t&&this._updateCacheCanvas())return!0;if(this.dirty||this.statefullCache&&this.hasStateChanged("cacheProperties")){if(this._cacheCanvas&&!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){if(this.active&&(!this.group||this.group===this.canvas.getActiveGroup())){var i,r=this.getViewportTransform(),n=this.calcTransformMatrix();n=e.util.multiplyTransformMatrices(r,n),i=e.util.qrDecompose(n),t.save(),t.translate(i.translateX,i.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(i.angle)),this.drawBordersInGroup(t,i)):(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")},onDeselect:function(){}})}(),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;if(this.intersectsWithRect(i,r,!0))return!0;var o={x:(i.x+r.x)/2,y:(i.y+r.y)/2};return!!this.containsPoint(o,null,!0)},_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 6.123233995736766e-17!==i&&i!==-1.8369701987210297e-16||(i=0),[i,r,-r,i,0,0]}return fabric.iMatrix.concat()},calcTransformMatrix:function(t){var e,r,n=this.getCenterPoint(),s=[1,0,0,1,n.x,n.y],o=this._calcDimensionsTransformMatrix(this.skewX,this.skewY,!0);return r=this.group&&!t?i(this.group.calcTransformMatrix(),s):s,this.angle&&(e=this._calcRotateMatrix(),r=i(r,e)),r=i(r,o)},_calcDimensionsTransformMatrix:function(t,r,n){var s,o=this.scaleX*(n&&this.flipX?-1:1),a=this.scaleY*(n&&this.flipY?-1:1),h=[o,0,0,a,0,0];return t&&(s=[1,0,Math.tan(e(t)),1],h=i(h,s,!0)),r&&(s=[1,Math.tan(e(r)),0,1],h=i(h,s,!0)),h},_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");var n=e.Object.prototype.cacheProperties.concat();n.push("rx","ry"),e.Rect=e.util.createClass(e.Object,{stateProperties:r,type:"rect",rx:0,ry:0,cacheProperties:n,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,o=e.Object.NUM_FRACTION_DIGITS;if(e.Polyline)return void e.warn("fabric.Polyline is already defined");var a=e.Object.prototype.cacheProperties.concat();a.push("points"),e.Polyline=e.util.createClass(e.Object,{type:"polyline",points:null,minX:0,minY:0,cacheProperties:a,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){var e=[],i=0,r=0,n=this._createBaseSVGMarkup();this.group&&"path-group"===this.group.type||(i=this.pathOffset.x,r=this.pathOffset.y);for(var a=0,h=this.points.length;a\n'),t?t(n.join("")):n.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,cacheProperties:[],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;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.setCoords(),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.setCoords(),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})},toDatalessObject:function(t){var e=this.getObjects().map(function(e){var i=e.includeDefaultValues;e.includeDefaultValues=e.group.includeDefaultValues;var r=e.toDatalessObject(t);return e.includeDefaultValues=i,r});return i(this.callSuper("toDatalessObject",t),{objects:e})},render:function(t){this._transformDone=!0,this.callSuper("render",t),this._transformDone=!1},shouldCache:function(){var t=this.objectCaching&&(!this.group||this.needsItsOwnCache()||!this.group.isCaching());if(this.caching=t,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,D,P,A,E;for(T.x=(t+.5)*y,j.x=r(T.x),h=0;h=e)){A=r(1e3*s(c-T.x)),O[A]||(O[A]={});for(var I=j.y-w;I<=j.y+w;I++)I<0||I>=o||(E=r(1e3*s(I-T.y)),O[A][E]||(O[A][E]=m(n(i(A*x,2)+i(E*C,2))/1e3)),u=O[A][E],u>0&&(d=4*(I*e+c),g+=u,k+=u*v[d],M+=u*v[d+1],D+=u*v[d+2],P+=u*v[d+3]))}d=4*(h*a+t),b[d]=k/g,b[d+1]=M/g,b[d+2]=D/g,b[d+3]=P/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=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.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(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||t(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 r){var s=parseInt(n,10);s<=e&&delete r[s]}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,t.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&&(!t.e.button||1===t.e.button)){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)||t.e.button&&1!==t.e.button||(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="white-space: nowrap; position: absolute; top: "+t.top+"; left: "+t.left+"; opacity: 0; width: 1px; height: 1px; 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 b458e07df8e9044bfb90c3a0b933d0af8e9db436..c2b1c322dab22c5a837ca1143a61b190291b2f34 100644 GIT binary patch delta 70114 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%0ANKND@viFOjN|7q7*91prR>NlwvF_ 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 delta 69975 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
2%kR1W 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 finish ? duration : time - start; if (abort()) { - options.onComplete && options.onComplete(); + onComplete(endValue, 1, 1); return; } - onChange(easing(currentTime, startValue, byValue, duration)); + time = ticktime || +new Date(); + var currentTime = time > finish ? duration : time - start, timePerc = currentTime / duration, current = easing(currentTime, startValue, byValue, duration), valuePerc = Math.abs((current - startValue) / byValue); + onChange(current, valuePerc, timePerc); if (time > finish) { options.onComplete && options.onComplete(); return; @@ -5185,9 +5186,8 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, { return object; }, _realizeGroupTransformOnObject: function(instance) { - var layoutProps = [ "angle", "flipX", "flipY", "height", "left", "scaleX", "scaleY", "top", "width" ]; if (instance.group && instance.group === this.getActiveGroup()) { - var originalValues = {}; + var originalValues = {}, layoutProps = [ "angle", "flipX", "flipY", "left", "scaleX", "scaleY", "skewX", "skewY", "top" ]; layoutProps.forEach(function(prop) { originalValues[prop] = instance[prop]; }); @@ -5417,7 +5417,7 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, { } var searchTarget = true, transform = this._currentTransform, groupSelector = this._groupSelector, isClick = !groupSelector || groupSelector.left === 0 && groupSelector.top === 0; if (transform) { - this._finalizeCurrentTransform(); + this._finalizeCurrentTransform(e); searchTarget = !transform.actionPerformed; } target = searchTarget ? this.findTarget(e, true) : transform.target; @@ -5450,7 +5450,7 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, { targets[i].fire("mouse" + eventType, options); } }, - _finalizeCurrentTransform: function() { + _finalizeCurrentTransform: function(e) { var transform = this._currentTransform, target = transform.target; if (target._scaling) { target._scaling = false; @@ -5459,9 +5459,12 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, { this._restoreOriginXY(target); if (transform.actionPerformed || this.stateful && target.hasStateChanged()) { this.fire("object:modified", { - target: target + target: target, + e: e + }); + target.fire("modified", { + e: e }); - target.fire("modified"); } }, _restoreOriginXY: function(target) { @@ -6965,15 +6968,30 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, { return fabric.iMatrix.concat(); }, calcTransformMatrix: function(skipGroup) { - var center = this.getCenterPoint(), translateMatrix = [ 1, 0, 0, 1, center.x, center.y ], rotateMatrix = this._calcRotateMatrix(), dimensionMatrix = this._calcDimensionsTransformMatrix(this.skewX, this.skewY, true), matrix = this.group && !skipGroup ? this.group.calcTransformMatrix() : fabric.iMatrix.concat(); - matrix = multiplyMatrices(matrix, translateMatrix); - matrix = multiplyMatrices(matrix, rotateMatrix); + var center = this.getCenterPoint(), translateMatrix = [ 1, 0, 0, 1, center.x, center.y ], rotateMatrix, dimensionMatrix = this._calcDimensionsTransformMatrix(this.skewX, this.skewY, true), matrix; + if (this.group && !skipGroup) { + matrix = multiplyMatrices(this.group.calcTransformMatrix(), translateMatrix); + } else { + matrix = translateMatrix; + } + if (this.angle) { + rotateMatrix = this._calcRotateMatrix(); + matrix = multiplyMatrices(matrix, rotateMatrix); + } matrix = multiplyMatrices(matrix, dimensionMatrix); return matrix; }, _calcDimensionsTransformMatrix: function(skewX, skewY, flipping) { - var skewMatrixX = [ 1, 0, Math.tan(degreesToRadians(skewX)), 1 ], skewMatrixY = [ 1, Math.tan(degreesToRadians(skewY)), 0, 1 ], scaleX = this.scaleX * (flipping && this.flipX ? -1 : 1), scaleY = this.scaleY * (flipping && this.flipY ? -1 : 1), scaleMatrix = [ scaleX, 0, 0, scaleY ], m = multiplyMatrices(scaleMatrix, skewMatrixX, true); - return multiplyMatrices(m, skewMatrixY, true); + var skewMatrix, scaleX = this.scaleX * (flipping && this.flipX ? -1 : 1), scaleY = this.scaleY * (flipping && this.flipY ? -1 : 1), scaleMatrix = [ scaleX, 0, 0, scaleY, 0, 0 ]; + if (skewX) { + skewMatrix = [ 1, 0, Math.tan(degreesToRadians(skewX)), 1 ]; + scaleMatrix = multiplyMatrices(scaleMatrix, skewMatrix, true); + } + if (skewY) { + skewMatrix = [ 1, Math.tan(degreesToRadians(skewY)), 0, 1 ]; + scaleMatrix = multiplyMatrices(scaleMatrix, skewMatrix, true); + } + return scaleMatrix; }, _getNonTransformedDimensions: function() { var strokeWidth = this.strokeWidth, w = this.width + strokeWidth, h = this.height + strokeWidth; @@ -7477,7 +7495,7 @@ fabric.util.object.extend(fabric.Object.prototype, { abort: options.abort && function() { return options.abort.call(_this); }, - onChange: function(value) { + onChange: function(value, valueProgress, timeProgress) { if (propPair) { _this[propPair[0]][propPair[1]] = value; } else { @@ -7486,14 +7504,14 @@ fabric.util.object.extend(fabric.Object.prototype, { if (skipCallbacks) { return; } - options.onChange && options.onChange(); + options.onChange && options.onChange(value, valueProgress, timeProgress); }, - onComplete: function() { + onComplete: function(value, valueProgress, timeProgress) { if (skipCallbacks) { return; } _this.setCoords(); - options.onComplete && options.onComplete(); + options.onComplete && options.onComplete(value, valueProgress, timeProgress); } }); } diff --git a/package.json b/package.json index a9dc9ffc9..42339208b 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.15", + "version": "1.7.16", "author": "Juriy Zaytsev ", "contributors": [ {