From 7cc16fb080fceb8efc5125bbb982a0263fae9a57 Mon Sep 17 00:00:00 2001 From: Andrea Bogazzi Date: Sat, 22 Jul 2017 22:37:58 +0200 Subject: [PATCH] v1717 (#4122) --- CHANGELOG.md | 10 ++++++ HEADER.js | 2 +- dist/fabric.js | 73 ++++++++++++++++++++++++++++++----------- dist/fabric.min.js | 18 +++++----- dist/fabric.min.js.gz | Bin 71150 -> 71334 bytes dist/fabric.require.js | 65 ++++++++++++++++++++++++++---------- package.json | 2 +- 7 files changed, 121 insertions(+), 49 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 22c3481428d..afbb64a957c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ +**Version 1.7.17** + +- Change: swapped style white-space:nowrap with attribute wrap="off" since the style rule was creating problems in browsers like ie11 and safari. [#4119](https://github.com/kangax/fabric.js/pull/4119) +- Fix: Remove an object from activeGroup if removed from canvas [#4120](https://github.com/kangax/fabric.js/pull/4120) +- Fix: avoid bringFroward, sendBackwards to swap objects in active selections [#4119](https://github.com/kangax/fabric.js/pull/4119) +- Fix: avoid disposing canvas on mouse event to throw error [#4119](https://github.com/kangax/fabric.js/pull/4119) +- Fix: make svg respect white spaces [#4119](https://github.com/kangax/fabric.js/pull/4119) +- Fix: avoid exporting bgImage and overlayImage if excludeFromExport = true [#4119](https://github.com/kangax/fabric.js/pull/4119) +- Fix: Avoid group fromObject mutating original data [#4111](https://github.com/kangax/fabric.js/pull/4111) + **Version 1.7.16** - Improvement: Add information to onChange and onComplete animation function [#4068](https://github.com/kangax/fabric.js/pull/4068) diff --git a/HEADER.js b/HEADER.js index d12921ddd52..9ef6b818238 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.16" }; +var fabric = fabric || { version: "1.7.17" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; } diff --git a/dist/fabric.js b/dist/fabric.js index 8fc210b88b9..30b4a3f3d07 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.16" }; +var fabric = fabric || { version: "1.7.17" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; } @@ -2112,17 +2112,20 @@ fabric.CommonMethods = { /** @ignore */ addListener = function (element, eventName, handler, options) { // since ie10 or ie9 can use addEventListener but they do not support options, i need to check - element.addEventListener(eventName, handler, shouldUseAttachEventDetachEvent ? false : options); + element && element.addEventListener(eventName, handler, shouldUseAttachEventDetachEvent ? false : options); }; /** @ignore */ removeListener = function (element, eventName, handler, options) { - element.removeEventListener(eventName, handler, shouldUseAttachEventDetachEvent ? false : options); + element && element.removeEventListener(eventName, handler, shouldUseAttachEventDetachEvent ? false : options); }; } else if (shouldUseAttachEventDetachEvent) { /** @ignore */ addListener = function (element, eventName, handler) { + if (!element) { + return; + } var uid = getUniqueId(element); setElement(uid, element); if (!listeners[uid]) { @@ -2138,6 +2141,9 @@ fabric.CommonMethods = { }; /** @ignore */ removeListener = function (element, eventName, handler) { + if (!element) { + return; + } var uid = getUniqueId(element), listener; if (listeners[uid] && listeners[uid][eventName]) { for (var i = 0, len = listeners[uid][eventName].length; i < len; i++) { @@ -2153,6 +2159,9 @@ fabric.CommonMethods = { else { /** @ignore */ addListener = function (element, eventName, handler) { + if (!element) { + return; + } var uid = getUniqueId(element); if (!handlers[uid]) { handlers[uid] = { }; @@ -2169,6 +2178,9 @@ fabric.CommonMethods = { }; /** @ignore */ removeListener = function (element, eventName, handler) { + if (!element) { + return; + } var uid = getUniqueId(element); if (handlers[uid] && handlers[uid][eventName]) { var handlersForEvent = handlers[uid][eventName]; @@ -7303,7 +7315,7 @@ fabric.ElementsParser.prototype.checkIfDone = function() { * @private */ __serializeBgOverlay: function(methodName, propertiesToInclude) { - var data = { }; + var data = { }, bgImage = this.backgroundImage, overlay = this.overlayImage; if (this.backgroundColor) { data.background = this.backgroundColor.toObject @@ -7316,11 +7328,11 @@ fabric.ElementsParser.prototype.checkIfDone = function() { ? this.overlayColor.toObject(propertiesToInclude) : this.overlayColor; } - if (this.backgroundImage) { - data.backgroundImage = this._toObject(this.backgroundImage, methodName, propertiesToInclude); + if (bgImage && !bgImage.excludeFromExport) { + data.backgroundImage = this._toObject(bgImage, methodName, propertiesToInclude); } - if (this.overlayImage) { - data.overlayImage = this._toObject(this.overlayImage, methodName, propertiesToInclude); + if (overlay && !overlay.excludeFromExport) { + data.overlayImage = this._toObject(overlay, methodName, propertiesToInclude); } return data; @@ -7658,19 +7670,21 @@ fabric.ElementsParser.prototype.checkIfDone = function() { if (!object) { return this; } + var activeGroup = this._activeGroup, - i, obj, idx, newIdx, objs; + i, obj, idx, newIdx, objs, objsMoved = 0; if (object === activeGroup) { objs = activeGroup._objects; for (i = 0; i < objs.length; i++) { obj = objs[i]; idx = this._objects.indexOf(obj); - if (idx !== 0) { + if (idx > 0 + objsMoved) { newIdx = idx - 1; removeFromArray(this._objects, obj); this._objects.splice(newIdx, 0, obj); } + objsMoved++; } } else { @@ -7726,19 +7740,21 @@ fabric.ElementsParser.prototype.checkIfDone = function() { if (!object) { return this; } + var activeGroup = this._activeGroup, - i, obj, idx, newIdx, objs; + i, obj, idx, newIdx, objs, objsMoved = 0; if (object === activeGroup) { objs = activeGroup._objects; for (i = objs.length; i--;) { obj = objs[i]; idx = this._objects.indexOf(obj); - if (idx !== this._objects.length - 1) { + if (idx < this._objects.length - 1 - objsMoved) { newIdx = idx + 1; removeFromArray(this._objects, obj); this._objects.splice(newIdx, 0, obj); } + objsMoved++; } } else { @@ -10187,7 +10203,7 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab * @chainable */ dispose: function () { - this.callSuper('dispose'); + fabric.StaticCanvas.prototype.dispose.call(this); var wrapper = this.wrapperEl; this.removeListeners(); wrapper.removeChild(this.upperCanvasEl); @@ -13578,7 +13594,12 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.Stati * @chainable */ remove: function() { - this.canvas && this.canvas.remove(this); + if (this.canvas) { + if (this.group && this.group === this.canvas._activeGroup) { + this.group.remove(this); + } + this.canvas.remove(this); + } return this; }, @@ -18930,8 +18951,9 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot */ fabric.Group.fromObject = function(object, callback) { fabric.util.enlivenObjects(object.objects, function(enlivenedObjects) { - delete object.objects; - callback && callback(new fabric.Group(enlivenedObjects, object, true)); + var options = fabric.util.object.clone(object, true); + delete options.objects; + callback && callback(new fabric.Group(enlivenedObjects, options, true)); }); }; @@ -22759,7 +22781,7 @@ fabric.Image.filters.BaseFilter.fromObject = function(object, callback) { '\t\n', textAndBg.textBgRects.join(''), - '\t\t\n' ].join(''); - } + }, }); })(); /* _TO_SVG_END_ */ diff --git a/dist/fabric.min.js b/dist/fabric.min.js index 7bdab56413b..4b3193e465d 100644 --- a/dist/fabric.min.js +++ b/dist/fabric.min.js @@ -1,9 +1,9 @@ -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 +var fabric=fabric||{version:"1.7.17"};"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?P-=2*f:1===c&&P<0&&(P+=2*f);for(var E=Math.ceil(Math.abs(P/f*2)),I=[],L=P/E,F=8/3*Math.sin(L/4)*Math.sin(L/4)/Math.sin(L/2),B=A+L,R=0;R=n?s-n:2*Math.PI-(n-s)}function r(t,e,i,r,n,s,h,c){var l=a.call(arguments);if(o[l])return o[l];var u,f,d,g,p,v,b,m,y=Math.sqrt,_=Math.min,x=Math.max,C=Math.abs,S=[],w=[[],[]];f=6*t-12*i+6*n,u=-3*t+9*i-9*n+3*h,d=3*i-3*t;for(var O=0;O<2;++O)if(O>0&&(f=6*e-12*r+6*s,u=-3*e+9*r-9*s+3*c,d=3*r-3*e),C(u)<1e-12){if(C(f)<1e-12)continue;g=-d/f,0=e})}function i(t,e){return n(t,e,function(t,e){return t>>0;if(0===i)return-1;var r=0;if(arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:0!==r&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r)))),r>=i)return-1;for(var n=r>=0?r:Math.max(i-Math.abs(r),0);n>>0;i>>0;r>>0;i>>0;i>>0;n>>0,r=0;if(arguments.length>1)e=arguments[1];else for(;;){if(r in this){e=this[r++];break}if(++r>=i)throw new TypeError}for(;r/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:t,capitalize:e,escapeXml:i}}(),function(){var t=Array.prototype.slice,e=Function.prototype.apply,i=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var n,s=this,o=t.call(arguments,1);return n=o.length?function(){return e.call(s,this instanceof i?this:r,o.concat(t.call(arguments)))}:function(){return e.call(s,this instanceof i?this:r,arguments)},i.prototype=this.prototype,n.prototype=new i,n})}(),function(){function t(){}function e(t){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;e0+c&&(o=s-1,i(this._objects,n),this._objects.splice(o,0,n)),c++;else s=this._objects.indexOf(t),0!==s&&(o=this._findNewLowerIndex(t,s,e),i(this._objects,t),this._objects.splice(o,0,t));return this.renderAll&&this.renderAll(),this},_findNewLowerIndex:function(t,e,i){var r;if(i){r=e;for(var n=e-1;n>=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,c=0;if(t===h)for(a=h._objects,r=a.length;r--;)n=a[r],s=this._objects.indexOf(n),s"}}),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.group&&this.group===this.canvas._activeGroup&&this.group.remove(this),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,A,P,E;for(T.x=(t+.5)*y,j.x=r(T.x),h=0;h=e)){P=r(1e3*s(c-T.x)),O[P]||(O[P]={});for(var I=j.y-w;I<=j.y+w;I++)I<0||I>=o||(E=r(1e3*s(I-T.y)),O[P][E]||(O[P][E]=m(n(i(P*x,2)+i(E*C,2))/1e3)),u=O[P][E],u>0&&(d=4*(I*e+c),g+=u,k+=u*v[d],M+=u*v[d+1],D+=u*v[d+2],A+=u*v[d+3]))}d=4*(h*a+t),b[d]=k/g,b[d+1]=M/g,b[d+2]=D/g,b[d+3]=A/g}return++t1&&L<-1||(x=2*L*L*L-3*L*L+1,x>0&&(I=4*(E+M*e),j+=x*p[I+3],S+=x,p[I+3]<255&&(x=x*p[I+3]/250),w+=x*p[I],O+=x*p[I+1],T+=x*p[I+2],C+=x))}b[_]=w/C,b[_+1]=O/C,b[_+2]=T/C,b[_+3]=j/S}return v},toObject:function(){return{type:this.type,scaleX:this.scaleX,scaleY:this.scaleY,resizeType:this.resizeType,lanczosLobes:this.lanczosLobes}}}),e.Image.filters.Resize.fromObject=e.Image.filters.BaseFilter.fromObject}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.Image.filters,n=e.util.createClass;r.ColorMatrix=n(r.BaseFilter,{type:"ColorMatrix",initialize:function(t){t||(t={}),this.matrix=t.matrix||[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0]},applyTo:function(t){var e,i,r,n,s,o=t.getContext("2d"),a=o.getImageData(0,0,t.width,t.height),h=a.data,c=h.length,l=this.matrix;for(e=0;e'},_getCacheCanvasDimensions:function(){var t=this.callSuper("_getCacheCanvasDimensions"),e=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")},getSvgStyles:function(t){var i=e.Object.prototype.getSvgStyles.call(this,t);return i+" white-space: pre;"},_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"),this.hiddenTextarea.setAttribute("autocorrect","off"),this.hiddenTextarea.setAttribute("autocomplete","off"),this.hiddenTextarea.setAttribute("spellcheck","false"),this.hiddenTextarea.setAttribute("data-fabric-hiddentextarea",""),this.hiddenTextarea.setAttribute("wrap","off");var t=this._calcTextareaPosition();this.hiddenTextarea.style.cssText="position: absolute; top: "+t.top+"; left: "+t.left+"; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px; line-height: 1px; paddingーtop: "+t.fontSize+";",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 c2b1c322dab22c5a837ca1143a61b190291b2f34..1948d682b77a8988e8fc900889be116927cb7f43 100644 GIT binary patch delta 64401 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 delta 64186 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 0 + objsMoved) { newIdx = idx - 1; removeFromArray(this._objects, obj); this._objects.splice(newIdx, 0, obj); } + objsMoved++; } } else { idx = this._objects.indexOf(object); @@ -3897,17 +3910,18 @@ fabric.ElementsParser.prototype.checkIfDone = function() { if (!object) { return this; } - var activeGroup = this._activeGroup, i, obj, idx, newIdx, objs; + var activeGroup = this._activeGroup, i, obj, idx, newIdx, objs, objsMoved = 0; if (object === activeGroup) { objs = activeGroup._objects; for (i = objs.length; i--; ) { obj = objs[i]; idx = this._objects.indexOf(obj); - if (idx !== this._objects.length - 1) { + if (idx < this._objects.length - 1 - objsMoved) { newIdx = idx + 1; removeFromArray(this._objects, obj); this._objects.splice(newIdx, 0, obj); } + objsMoved++; } } else { idx = this._objects.indexOf(object); @@ -5146,7 +5160,7 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, { return this; }, dispose: function() { - this.callSuper("dispose"); + fabric.StaticCanvas.prototype.dispose.call(this); var wrapper = this.wrapperEl; this.removeListeners(); wrapper.removeChild(this.upperCanvasEl); @@ -6601,7 +6615,12 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, { return this; }, remove: function() { - this.canvas && this.canvas.remove(this); + if (this.canvas) { + if (this.group && this.group === this.canvas._activeGroup) { + this.group.remove(this); + } + this.canvas.remove(this); + } return this; }, getLocalPointer: function(e, pointer) { @@ -9165,8 +9184,9 @@ fabric.util.object.extend(fabric.Object.prototype, { }); fabric.Group.fromObject = function(object, callback) { fabric.util.enlivenObjects(object.objects, function(enlivenedObjects) { - delete object.objects; - callback && callback(new fabric.Group(enlivenedObjects, object, true)); + var options = fabric.util.object.clone(object, true); + delete options.objects; + callback && callback(new fabric.Group(enlivenedObjects, options, true)); }); }; fabric.Group.async = true; @@ -10709,7 +10729,11 @@ fabric.Image.filters.BaseFilter.fromObject = function(object, callback) { }, _wrapSVGTextAndBg: function(markup, textAndBg) { var noShadow = true, filter = this.getSvgFilter(), style = filter === "" ? "" : ' style="' + filter + '"'; - markup.push("\t\n", textAndBg.textBgRects.join(""), "\t\t\n', textAndBg.textSpans.join(""), "\t\t\n", "\t\n"); + markup.push("\t\n", textAndBg.textBgRects.join(""), '\t\t\n', textAndBg.textSpans.join(""), "\t\t\n", "\t\n"); + }, + getSvgStyles: function(skipShadow) { + var svgStyle = fabric.Object.prototype.getSvgStyles.call(this, skipShadow); + return svgStyle + " white-space: pre;"; }, _getSVGTextAndBg: function(textTopOffset, textLeftOffset) { var textSpans = [], textBgRects = [], height = 0; @@ -12133,8 +12157,13 @@ fabric.util.object.extend(fabric.IText.prototype, { initHiddenTextarea: function() { this.hiddenTextarea = fabric.document.createElement("textarea"); this.hiddenTextarea.setAttribute("autocapitalize", "off"); + this.hiddenTextarea.setAttribute("autocorrect", "off"); + this.hiddenTextarea.setAttribute("autocomplete", "off"); + this.hiddenTextarea.setAttribute("spellcheck", "false"); + this.hiddenTextarea.setAttribute("data-fabric-hiddentextarea", ""); + this.hiddenTextarea.setAttribute("wrap", "off"); var style = this._calcTextareaPosition(); - this.hiddenTextarea.style.cssText = "white-space: nowrap; position: absolute; top: " + style.top + "; left: " + style.left + "; opacity: 0; width: 1px; height: 1px; z-index: -999;"; + this.hiddenTextarea.style.cssText = "position: absolute; top: " + style.top + "; left: " + style.left + "; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px;" + " line-height: 1px; paddingーtop: " + style.fontSize + ";"; 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)); diff --git a/package.json b/package.json index 42339208b39..0d6c69300dc 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.16", + "version": "1.7.17", "author": "Juriy Zaytsev ", "contributors": [ {