From 96c842418e22c3f0c978d67b89a6aa34e4e2bfa0 Mon Sep 17 00:00:00 2001 From: Andrea Bogazzi Date: Thu, 16 Feb 2017 17:24:39 -0500 Subject: [PATCH] build v176 (#3707) --- fabric.js | 5 ++++- fabric.min.js | 14 +++++++------- fabric.min.js.gz | Bin 69696 -> 69708 bytes fabric.require.js | 5 ++++- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/fabric.js b/fabric.js index 51d7165ee93..8cef518b47c 100644 --- a/fabric.js +++ b/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.5" }; +var fabric = fabric || { version: "1.7.6" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; } @@ -12690,6 +12690,9 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.Stati } this.clipTo && fabric.util.clipContext(this, ctx); if (this.objectCaching && (!this.group || this.needsItsOwnCache)) { + if (!this._cacheCanvas) { + this._createCacheCanvas(); + } if (this.isCacheDirty(noTransform)) { this.statefullCache && this.saveState({ propertySet: 'cacheProperties' }); this.drawObject(this._cacheContext, noTransform); diff --git a/fabric.min.js b/fabric.min.js index be11d3ba553..26439d5980b 100644 --- a/fabric.min.js +++ b/fabric.min.js @@ -1,9 +1,9 @@ -var fabric=fabric||{version:"1.7.5"};"undefined"!=typeof exports&&(exports.fabric=fabric),"undefined"!=typeof document&&"undefined"!=typeof window?(fabric.document=document,fabric.window=window,window.fabric=fabric):(fabric.document=require("jsdom").jsdom(decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E")),fabric.document.createWindow?fabric.window=fabric.document.createWindow():fabric.window=fabric.document.parentWindow),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode="undefined"!=typeof Buffer&&"undefined"==typeof window,fabric.SHARED_ATTRIBUTES=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","id"],fabric.DPI=96,fabric.reNum="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:e[-+]?\\d+)?)",fabric.fontPaths={},fabric.iMatrix=[1,0,0,1,0,0],fabric.charWidthsCache={},fabric.devicePixelRatio=fabric.window.devicePixelRatio||fabric.window.webkitDevicePixelRatio||fabric.window.mozDevicePixelRatio||1,function(){function t(t,e){if(this.__eventListeners[t]){var i=this.__eventListeners[t];e?i[i.indexOf(e)]=!1:fabric.util.array.fill(i,!1)}}function e(t,e){if(this.__eventListeners||(this.__eventListeners={}),1===arguments.length)for(var i in t)this.on(i,t[i]);else this.__eventListeners[t]||(this.__eventListeners[t]=[]),this.__eventListeners[t].push(e);return this}function i(e,i){if(this.__eventListeners){if(0===arguments.length)for(e in this.__eventListeners)t.call(this,e);else if(1===arguments.length&&"object"==typeof arguments[0])for(var r in e)t.call(this,r,e[r]);else t.call(this,e,i);return this}}function r(t,e){if(this.__eventListeners){var i=this.__eventListeners[t];if(i){for(var r=0,n=i.length;r-1},complexity:function(){return this.getObjects().reduce(function(t,e){return t+=e.complexity?e.complexity():0},0)}},fabric.CommonMethods={_setOptions:function(t){for(var e in t)this.set(e,t[e])},_initGradient:function(t,e){!t||!t.colorStops||t instanceof fabric.Gradient||this.set(e,new fabric.Gradient(t))},_initPattern:function(t,e,i){!t||!t.source||t instanceof fabric.Pattern?i&&i():this.set(e,new fabric.Pattern(t,i))},_initClipping:function(t){if(t.clipTo&&"string"==typeof t.clipTo){var e=fabric.util.getFunctionBody(t.clipTo);"undefined"!=typeof e&&(this.clipTo=new Function("ctx",e))}},_setObject:function(t){for(var e in t)this._set(e,t[e])},set:function(t,e){return"object"==typeof t?this._setObject(t):"function"==typeof e&&"clipTo"!==t?this._set(t,e(this.get(t))):this._set(t,e),this},_set:function(t,e){this[t]=e},toggle:function(t){var e=this.get(t);return"boolean"==typeof e&&this.set(t,!e),this},get:function(t){return this[t]}},function(t){var e=Math.sqrt,i=Math.atan2,r=Math.pow,n=Math.abs,s=Math.PI/180;fabric.util={removeFromArray:function(t,e){var i=t.indexOf(e);return i!==-1&&t.splice(i,1),t},getRandomInt:function(t,e){return Math.floor(Math.random()*(e-t+1))+t},degreesToRadians:function(t){return t*s},radiansToDegrees:function(t){return t/s},rotatePoint:function(t,e,i){t.subtractEquals(e);var r=fabric.util.rotateVector(t,i);return new fabric.Point(r.x,r.y).addEquals(e)},rotateVector:function(t,e){var i=Math.sin(e),r=Math.cos(e),n=t.x*r-t.y*i,s=t.x*i+t.y*r;return{x:n,y:s}},transformPoint:function(t,e,i){return i?new fabric.Point(e[0]*t.x+e[2]*t.y,e[1]*t.x+e[3]*t.y):new fabric.Point(e[0]*t.x+e[2]*t.y+e[4],e[1]*t.x+e[3]*t.y+e[5])},makeBoundingBoxFromPoints:function(t){var e=[t[0].x,t[1].x,t[2].x,t[3].x],i=fabric.util.array.min(e),r=fabric.util.array.max(e),n=Math.abs(i-r),s=[t[0].y,t[1].y,t[2].y,t[3].y],o=fabric.util.array.min(s),a=fabric.util.array.max(s),h=Math.abs(o-a);return{left:i,top:o,width:n,height:h}},invertTransform:function(t){var e=1/(t[0]*t[3]-t[1]*t[2]),i=[e*t[3],-e*t[1],-e*t[2],e*t[0]],r=fabric.util.transformPoint({x:t[4],y:t[5]},i,!0);return i[4]=-r.x,i[5]=-r.y,i},toFixed:function(t,e){return parseFloat(Number(t).toFixed(e))},parseUnit:function(t,e){var i=/\D{0,2}$/.exec(t),r=parseFloat(t);switch(e||(e=fabric.Text.DEFAULT_SVG_FONT_SIZE),i[0]){case"mm":return r*fabric.DPI/25.4;case"cm":return r*fabric.DPI/2.54;case"in":return r*fabric.DPI;case"pt":return r*fabric.DPI/72;case"pc":return r*fabric.DPI/72*12;case"em":return r*e;default:return r}},falseFunction:function(){return!1},getKlass:function(t,e){return t=fabric.util.string.camelize(t.charAt(0).toUpperCase()+t.slice(1)),fabric.util.resolveNamespace(e)[t]},resolveNamespace:function(e){if(!e)return fabric;var i,r=e.split("."),n=r.length,s=t||fabric.window;for(i=0;ir;)r+=a[d++%f],r>l&&(r=l),t[g?"lineTo":"moveTo"](r,0),g=!g;t.restore()},createCanvasElement:function(t){return t||(t=fabric.document.createElement("canvas")),t.getContext||"undefined"==typeof G_vmlCanvasManager||G_vmlCanvasManager.initElement(t),t},createImage:function(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")},createAccessors:function(t){var e,i,r,n,s,o=t.prototype;for(e=o.stateProperties.length;e--;)i=o.stateProperties[e],r=i.charAt(0).toUpperCase()+i.slice(1),n="set"+r,s="get"+r,o[s]||(o[s]=function(t){return new Function('return this.get("'+t+'")')}(i)),o[n]||(o[n]=function(t){return new Function("value",'return this.set("'+t+'", value)')}(i))},clipContext:function(t,e){e.save(),e.beginPath(),t.clipTo(e),e.clip()},multiplyTransformMatrices:function(t,e,i){return[t[0]*e[0]+t[2]*e[1],t[1]*e[0]+t[3]*e[1],t[0]*e[2]+t[2]*e[3],t[1]*e[2]+t[3]*e[3],i?0:t[0]*e[4]+t[2]*e[5]+t[4],i?0:t[1]*e[4]+t[3]*e[5]+t[5]]},qrDecompose:function(t){var n=i(t[1],t[0]),o=r(t[0],2)+r(t[1],2),a=e(o),h=(t[0]*t[3]-t[2]*t[1])/a,c=i(t[0]*t[2]+t[1]*t[3],o);return{angle:n/s,scaleX:a,scaleY:h,skewX:c/s,skewY:0,translateX:t[4],translateY:t[5]}},customTransformMatrix:function(t,e,i){var r=[1,0,n(Math.tan(i*s)),1],o=[n(t),0,0,n(e)];return fabric.util.multiplyTransformMatrices(o,r,!0)},resetObjectTransform:function(t){t.scaleX=1,t.scaleY=1,t.skewX=0,t.skewY=0,t.flipX=!1,t.flipY=!1,t.setAngle(0)},getFunctionBody:function(t){return(String(t).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]},isTransparent:function(t,e,i,r){r>0&&(e>r?e-=r:e=0,i>r?i-=r:i=0);var n,s,o=!0,a=t.getImageData(e,i,2*r||1,2*r||1),h=a.data.length;for(n=3;n0?D-=2*f:1===c&&D<0&&(D+=2*f);for(var E=Math.ceil(Math.abs(D/f*2)),I=[],L=D/E,F=8/3*Math.sin(L/4)*Math.sin(L/4)/Math.sin(L/2),B=A+L,R=0;R=n?s-n:2*Math.PI-(n-s)}function r(t,e,i,r,n,s,h,c){var l=a.call(arguments);if(o[l])return o[l];var u,f,d,g,p,v,b,m,_=Math.sqrt,y=Math.min,x=Math.max,C=Math.abs,S=[],w=[[],[]];f=6*t-12*i+6*n,u=-3*t+9*i-9*n+3*h,d=3*i-3*t;for(var O=0;O<2;++O)if(O>0&&(f=6*e-12*r+6*s,u=-3*e+9*r-9*s+3*c,d=3*r-3*e),C(u)<1e-12){if(C(f)<1e-12)continue;g=-d/f,0=e})}function i(t,e){return n(t,e,function(t,e){return t>>0;if(0===i)return-1;var r=0;if(arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:0!==r&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r)))),r>=i)return-1;for(var n=r>=0?r:Math.max(i-Math.abs(r),0);n>>0;i>>0;r>>0;i>>0;i>>0;n>>0,r=0;if(arguments.length>1)e=arguments[1];else for(;;){if(r in this){e=this[r++];break}if(++r>=i)throw new TypeError}for(;r/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:t,capitalize:e,escapeXml:i}}(),function(){var t=Array.prototype.slice,e=Function.prototype.apply,i=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var n,s=this,o=t.call(arguments,1);return n=o.length?function(){return e.call(s,this instanceof i?this:r,o.concat(t.call(arguments)))}:function(){return e.call(s,this instanceof i?this:r,arguments)},i.prototype=this.prototype,n.prototype=new i,n})}(),function(){function t(){}function e(t){var e=this.constructor.superclass.prototype[t];return arguments.length>1?e.apply(this,r.call(arguments,1)):e.call(this)}function i(){function i(){this.initialize.apply(this,arguments)}var s=null,a=r.call(arguments,0);"function"==typeof a[0]&&(s=a.shift()),i.superclass=s,i.subclasses=[],s&&(t.prototype=s.prototype,i.prototype=new t,s.subclasses.push(i));for(var h=0,c=a.length;h-1?t.prototype[r]=function(t){return function(){var r=this.constructor.superclass;this.constructor.superclass=i;var n=e[t].apply(this,arguments);if(this.constructor.superclass=r,"initialize"!==t)return n}}(r):t.prototype[r]=e[r],s&&(e.toString!==Object.prototype.toString&&(t.prototype.toString=e.toString),e.valueOf!==Object.prototype.valueOf&&(t.prototype.valueOf=e.valueOf))};fabric.util.createClass=i}(),function(){function t(t){var e,i,r=Array.prototype.slice.call(arguments,1),n=r.length;for(i=0;i-1?s(t,e.match(/opacity:\s*(\d?\.?\d*)/)[1]):t;for(var r in e)if("opacity"===r)s(t,e[r]);else{var n="float"===r||"cssFloat"===r?"undefined"==typeof i.styleFloat?"cssFloat":"styleFloat":r;i[n]=e[r]}return t}var e=fabric.document.createElement("div"),i="string"==typeof e.style.opacity,r="string"==typeof e.style.filter,n=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(t){return t};i?s=function(t,e){return t.style.opacity=e,t}:r&&(s=function(t,e){var i=t.style;return t.currentStyle&&!t.currentStyle.hasLayout&&(i.zoom=1),n.test(i.filter)?(e=e>=.9999?"":"alpha(opacity="+100*e+")",i.filter=i.filter.replace(n,e)):i.filter+=" alpha(opacity="+100*e+")",t}),fabric.util.setStyle=t}(),function(){function t(t){return"string"==typeof t?fabric.document.getElementById(t):t}function e(t,e){var i=fabric.document.createElement(t);for(var r in e)"class"===r?i.className=e[r]:"for"===r?i.htmlFor=e[r]:i.setAttribute(r,e[r]);return i}function i(t,e){t&&(" "+t.className+" ").indexOf(" "+e+" ")===-1&&(t.className+=(t.className?" ":"")+e)}function r(t,i,r){return"string"==typeof i&&(i=e(i,r)),t.parentNode&&t.parentNode.replaceChild(i,t),i.appendChild(t),i}function n(t){for(var e=0,i=0,r=fabric.document.documentElement,n=fabric.document.body||{scrollLeft:0,scrollTop:0};t&&(t.parentNode||t.host)&&(t=t.parentNode||t.host,t===fabric.document?(e=n.scrollLeft||r.scrollLeft||0,i=n.scrollTop||r.scrollTop||0):(e+=t.scrollLeft||0,i+=t.scrollTop||0),1!==t.nodeType||"fixed"!==fabric.util.getElementStyle(t,"position")););return{left:e,top:i}}function s(t){var e,i,r=t&&t.ownerDocument,s={left:0,top:0},o={left:0,top:0},a={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!r)return o;for(var h in a)o[a[h]]+=parseInt(c(t,h),10)||0;return e=r.documentElement,"undefined"!=typeof t.getBoundingClientRect&&(s=t.getBoundingClientRect()),i=n(t),{left:s.left+i.left-(e.clientLeft||0)+o.left,top:s.top+i.top-(e.clientTop||0)+o.top}}var o,a=Array.prototype.slice,h=function(t){return a.call(t,0)};try{o=h(fabric.document.childNodes)instanceof Array}catch(t){}o||(h=function(t){for(var e=new Array(t.length),i=t.length;i--;)e[i]=t[i];return e});var c;c=fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle?function(t,e){var i=fabric.document.defaultView.getComputedStyle(t,null);return i?i[e]:void 0}:function(t,e){var i=t.style[e];return!i&&t.currentStyle&&(i=t.currentStyle[e]),i},function(){function t(t){return"undefined"!=typeof t.onselectstart&&(t.onselectstart=fabric.util.falseFunction),r?t.style[r]="none":"string"==typeof t.unselectable&&(t.unselectable="on"),t}function e(t){return"undefined"!=typeof t.onselectstart&&(t.onselectstart=null),r?t.style[r]="":"string"==typeof t.unselectable&&(t.unselectable=""),t}var i=fabric.document.documentElement.style,r="userSelect"in i?"userSelect":"MozUserSelect"in i?"MozUserSelect":"WebkitUserSelect"in i?"WebkitUserSelect":"KhtmlUserSelect"in i?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=t,fabric.util.makeElementSelectable=e}(),function(){function t(t,e){var i=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),n=!0;r.onload=r.onreadystatechange=function(t){if(n){if("string"==typeof this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState)return;n=!1,e(t||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=t,i.appendChild(r)}fabric.util.getScript=t}(),fabric.util.getById=t,fabric.util.toArray=h,fabric.util.makeElement=e,fabric.util.addClass=i,fabric.util.wrapElement=r,fabric.util.getScrollLeftTop=n,fabric.util.getElementOffset=s,fabric.util.getElementStyle=c}(),function(){function t(t,e){return t+(/\?/.test(t)?"&":"?")+e}function e(){}function i(i,n){n||(n={});var s=n.method?n.method.toUpperCase():"GET",o=n.onComplete||function(){},a=r(),h=n.body||n.parameters;return a.onreadystatechange=function(){4===a.readyState&&(o(a),a.onreadystatechange=e)},"GET"===s&&(h=null,"string"==typeof n.parameters&&(i=t(i,n.parameters))),a.open(s,i,!0),"POST"!==s&&"PUT"!==s||a.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),a.send(h),a}var r=function(){for(var t=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}],e=t.length;e--;)try{var i=t[e]();if(i)return t[e]}catch(t){}}();fabric.util.request=i}(),fabric.log=function(){},fabric.warn=function(){},"undefined"!=typeof console&&["log","warn"].forEach(function(t){"undefined"!=typeof console[t]&&"function"==typeof console[t].apply&&(fabric[t]=function(){return console[t].apply(console,arguments)})}),function(){function t(t){e(function(i){t||(t={});var r,n=i||+new Date,s=t.duration||500,o=n+s,a=t.onChange||function(){},h=t.abort||function(){return!1},c=t.easing||function(t,e,i,r){return-i*Math.cos(t/r*(Math.PI/2))+i+e},l="startValue"in t?t.startValue:0,u="endValue"in t?t.endValue:100,f=t.byValue||u-l;t.onStart&&t.onStart(),function i(u){r=u||+new Date;var d=r>o?s:r-n;return h()?void(t.onComplete&&t.onComplete()):(a(c(d,l,f,s)),r>o?void(t.onComplete&&t.onComplete()):void e(i))}(n)})}function e(){return i.apply(fabric.window,arguments)}var i=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(t){fabric.window.setTimeout(t,1e3/60)};fabric.util.animate=t,fabric.util.requestAnimFrame=e}(),function(){function t(t,e,i){var r="rgba("+parseInt(t[0]+i*(e[0]-t[0]),10)+","+parseInt(t[1]+i*(e[1]-t[1]),10)+","+parseInt(t[2]+i*(e[2]-t[2]),10);return r+=","+(t&&e?parseFloat(t[3]+i*(e[3]-t[3])):1),r+=")"}function e(e,i,r,n){var s=new fabric.Color(e).getSource(),o=new fabric.Color(i).getSource();n=n||{},fabric.util.animate(fabric.util.object.extend(n,{duration:r||500,startValue:s,endValue:o,byValue:o,easing:function(e,i,r,s){var o=n.colorEasing?n.colorEasing(e,s):1-Math.cos(e/s*(Math.PI/2));return t(i,r,o)}}))}fabric.util.animateColor=e}(),function(){function t(t,e,i,r){return ta?a:o),1===o&&1===a&&0===h&&0===c&&0===f&&0===d)return y;if((f||d)&&(x=" translate("+_(f)+" "+_(d)+") "),r=x+" matrix("+o+" 0 0 "+a+" "+h*o+" "+c*a+") ","svg"===t.nodeName){for(n=t.ownerDocument.createElement("g");t.firstChild;)n.appendChild(t.firstChild);t.appendChild(n)}else n=t,r=n.getAttribute("transform")+r;return n.setAttribute("transform",r),y}function g(t,e){for(;t&&(t=t.parentNode);)if(t.nodeName&&e.test(t.nodeName.replace("svg:",""))&&!t.getAttribute("instantiated_by_use"))return!0; +var fabric=fabric||{version:"1.7.6"};"undefined"!=typeof exports&&(exports.fabric=fabric),"undefined"!=typeof document&&"undefined"!=typeof window?(fabric.document=document,fabric.window=window,window.fabric=fabric):(fabric.document=require("jsdom").jsdom(decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E")),fabric.document.createWindow?fabric.window=fabric.document.createWindow():fabric.window=fabric.document.parentWindow),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode="undefined"!=typeof Buffer&&"undefined"==typeof window,fabric.SHARED_ATTRIBUTES=["display","transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","id"],fabric.DPI=96,fabric.reNum="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:e[-+]?\\d+)?)",fabric.fontPaths={},fabric.iMatrix=[1,0,0,1,0,0],fabric.charWidthsCache={},fabric.devicePixelRatio=fabric.window.devicePixelRatio||fabric.window.webkitDevicePixelRatio||fabric.window.mozDevicePixelRatio||1,function(){function t(t,e){if(this.__eventListeners[t]){var i=this.__eventListeners[t];e?i[i.indexOf(e)]=!1:fabric.util.array.fill(i,!1)}}function e(t,e){if(this.__eventListeners||(this.__eventListeners={}),1===arguments.length)for(var i in t)this.on(i,t[i]);else this.__eventListeners[t]||(this.__eventListeners[t]=[]),this.__eventListeners[t].push(e);return this}function i(e,i){if(this.__eventListeners){if(0===arguments.length)for(e in this.__eventListeners)t.call(this,e);else if(1===arguments.length&&"object"==typeof arguments[0])for(var r in e)t.call(this,r,e[r]);else t.call(this,e,i);return this}}function r(t,e){if(this.__eventListeners){var i=this.__eventListeners[t];if(i){for(var r=0,n=i.length;r-1},complexity:function(){return this.getObjects().reduce(function(t,e){return t+=e.complexity?e.complexity():0},0)}},fabric.CommonMethods={_setOptions:function(t){for(var e in t)this.set(e,t[e])},_initGradient:function(t,e){!t||!t.colorStops||t instanceof fabric.Gradient||this.set(e,new fabric.Gradient(t))},_initPattern:function(t,e,i){!t||!t.source||t instanceof fabric.Pattern?i&&i():this.set(e,new fabric.Pattern(t,i))},_initClipping:function(t){if(t.clipTo&&"string"==typeof t.clipTo){var e=fabric.util.getFunctionBody(t.clipTo);"undefined"!=typeof e&&(this.clipTo=new Function("ctx",e))}},_setObject:function(t){for(var e in t)this._set(e,t[e])},set:function(t,e){return"object"==typeof t?this._setObject(t):"function"==typeof e&&"clipTo"!==t?this._set(t,e(this.get(t))):this._set(t,e),this},_set:function(t,e){this[t]=e},toggle:function(t){var e=this.get(t);return"boolean"==typeof e&&this.set(t,!e),this},get:function(t){return this[t]}},function(t){var e=Math.sqrt,i=Math.atan2,r=Math.pow,n=Math.abs,s=Math.PI/180;fabric.util={removeFromArray:function(t,e){var i=t.indexOf(e);return i!==-1&&t.splice(i,1),t},getRandomInt:function(t,e){return Math.floor(Math.random()*(e-t+1))+t},degreesToRadians:function(t){return t*s},radiansToDegrees:function(t){return t/s},rotatePoint:function(t,e,i){t.subtractEquals(e);var r=fabric.util.rotateVector(t,i);return new fabric.Point(r.x,r.y).addEquals(e)},rotateVector:function(t,e){var i=Math.sin(e),r=Math.cos(e),n=t.x*r-t.y*i,s=t.x*i+t.y*r;return{x:n,y:s}},transformPoint:function(t,e,i){return i?new fabric.Point(e[0]*t.x+e[2]*t.y,e[1]*t.x+e[3]*t.y):new fabric.Point(e[0]*t.x+e[2]*t.y+e[4],e[1]*t.x+e[3]*t.y+e[5])},makeBoundingBoxFromPoints:function(t){var e=[t[0].x,t[1].x,t[2].x,t[3].x],i=fabric.util.array.min(e),r=fabric.util.array.max(e),n=Math.abs(i-r),s=[t[0].y,t[1].y,t[2].y,t[3].y],o=fabric.util.array.min(s),a=fabric.util.array.max(s),h=Math.abs(o-a);return{left:i,top:o,width:n,height:h}},invertTransform:function(t){var e=1/(t[0]*t[3]-t[1]*t[2]),i=[e*t[3],-e*t[1],-e*t[2],e*t[0]],r=fabric.util.transformPoint({x:t[4],y:t[5]},i,!0);return i[4]=-r.x,i[5]=-r.y,i},toFixed:function(t,e){return parseFloat(Number(t).toFixed(e))},parseUnit:function(t,e){var i=/\D{0,2}$/.exec(t),r=parseFloat(t);switch(e||(e=fabric.Text.DEFAULT_SVG_FONT_SIZE),i[0]){case"mm":return r*fabric.DPI/25.4;case"cm":return r*fabric.DPI/2.54;case"in":return r*fabric.DPI;case"pt":return r*fabric.DPI/72;case"pc":return r*fabric.DPI/72*12;case"em":return r*e;default:return r}},falseFunction:function(){return!1},getKlass:function(t,e){return t=fabric.util.string.camelize(t.charAt(0).toUpperCase()+t.slice(1)),fabric.util.resolveNamespace(e)[t]},resolveNamespace:function(e){if(!e)return fabric;var i,r=e.split("."),n=r.length,s=t||fabric.window;for(i=0;ir;)r+=a[d++%f],r>l&&(r=l),t[g?"lineTo":"moveTo"](r,0),g=!g;t.restore()},createCanvasElement:function(t){return t||(t=fabric.document.createElement("canvas")),t.getContext||"undefined"==typeof G_vmlCanvasManager||G_vmlCanvasManager.initElement(t),t},createImage:function(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")},createAccessors:function(t){var e,i,r,n,s,o=t.prototype;for(e=o.stateProperties.length;e--;)i=o.stateProperties[e],r=i.charAt(0).toUpperCase()+i.slice(1),n="set"+r,s="get"+r,o[s]||(o[s]=function(t){return new Function('return this.get("'+t+'")')}(i)),o[n]||(o[n]=function(t){return new Function("value",'return this.set("'+t+'", value)')}(i))},clipContext:function(t,e){e.save(),e.beginPath(),t.clipTo(e),e.clip()},multiplyTransformMatrices:function(t,e,i){return[t[0]*e[0]+t[2]*e[1],t[1]*e[0]+t[3]*e[1],t[0]*e[2]+t[2]*e[3],t[1]*e[2]+t[3]*e[3],i?0:t[0]*e[4]+t[2]*e[5]+t[4],i?0:t[1]*e[4]+t[3]*e[5]+t[5]]},qrDecompose:function(t){var n=i(t[1],t[0]),o=r(t[0],2)+r(t[1],2),a=e(o),h=(t[0]*t[3]-t[2]*t[1])/a,c=i(t[0]*t[2]+t[1]*t[3],o);return{angle:n/s,scaleX:a,scaleY:h,skewX:c/s,skewY:0,translateX:t[4],translateY:t[5]}},customTransformMatrix:function(t,e,i){var r=[1,0,n(Math.tan(i*s)),1],o=[n(t),0,0,n(e)];return fabric.util.multiplyTransformMatrices(o,r,!0)},resetObjectTransform:function(t){t.scaleX=1,t.scaleY=1,t.skewX=0,t.skewY=0,t.flipX=!1,t.flipY=!1,t.setAngle(0)},getFunctionBody:function(t){return(String(t).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]},isTransparent:function(t,e,i,r){r>0&&(e>r?e-=r:e=0,i>r?i-=r:i=0);var n,s,o=!0,a=t.getImageData(e,i,2*r||1,2*r||1),h=a.data.length;for(n=3;n0?D-=2*f:1===c&&D<0&&(D+=2*f);for(var E=Math.ceil(Math.abs(D/f*2)),I=[],L=D/E,F=8/3*Math.sin(L/4)*Math.sin(L/4)/Math.sin(L/2),B=A+L,R=0;R=n?s-n:2*Math.PI-(n-s)}function r(t,e,i,r,n,s,h,c){var l=a.call(arguments);if(o[l])return o[l];var u,f,d,g,p,v,b,m,_=Math.sqrt,y=Math.min,x=Math.max,C=Math.abs,S=[],w=[[],[]];f=6*t-12*i+6*n,u=-3*t+9*i-9*n+3*h,d=3*i-3*t;for(var O=0;O<2;++O)if(O>0&&(f=6*e-12*r+6*s,u=-3*e+9*r-9*s+3*c,d=3*r-3*e),C(u)<1e-12){if(C(f)<1e-12)continue;g=-d/f,0=e})}function i(t,e){return n(t,e,function(t,e){return t>>0;if(0===i)return-1;var r=0;if(arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:0!==r&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r)))),r>=i)return-1;for(var n=r>=0?r:Math.max(i-Math.abs(r),0);n>>0;i>>0;r>>0;i>>0;i>>0;n>>0,r=0;if(arguments.length>1)e=arguments[1];else for(;;){if(r in this){e=this[r++];break}if(++r>=i)throw new TypeError}for(;r/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:t,capitalize:e,escapeXml:i}}(),function(){var t=Array.prototype.slice,e=Function.prototype.apply,i=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var n,s=this,o=t.call(arguments,1);return n=o.length?function(){return e.call(s,this instanceof i?this:r,o.concat(t.call(arguments)))}:function(){return e.call(s,this instanceof i?this:r,arguments)},i.prototype=this.prototype,n.prototype=new i,n})}(),function(){function t(){}function e(t){var e=this.constructor.superclass.prototype[t];return arguments.length>1?e.apply(this,r.call(arguments,1)):e.call(this)}function i(){function i(){this.initialize.apply(this,arguments)}var s=null,a=r.call(arguments,0);"function"==typeof a[0]&&(s=a.shift()),i.superclass=s,i.subclasses=[],s&&(t.prototype=s.prototype,i.prototype=new t,s.subclasses.push(i));for(var h=0,c=a.length;h-1?t.prototype[r]=function(t){return function(){var r=this.constructor.superclass;this.constructor.superclass=i;var n=e[t].apply(this,arguments);if(this.constructor.superclass=r,"initialize"!==t)return n}}(r):t.prototype[r]=e[r],s&&(e.toString!==Object.prototype.toString&&(t.prototype.toString=e.toString),e.valueOf!==Object.prototype.valueOf&&(t.prototype.valueOf=e.valueOf))};fabric.util.createClass=i}(),function(){function t(t){var e,i,r=Array.prototype.slice.call(arguments,1),n=r.length;for(i=0;i-1?s(t,e.match(/opacity:\s*(\d?\.?\d*)/)[1]):t;for(var r in e)if("opacity"===r)s(t,e[r]);else{var n="float"===r||"cssFloat"===r?"undefined"==typeof i.styleFloat?"cssFloat":"styleFloat":r;i[n]=e[r]}return t}var e=fabric.document.createElement("div"),i="string"==typeof e.style.opacity,r="string"==typeof e.style.filter,n=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(t){return t};i?s=function(t,e){return t.style.opacity=e,t}:r&&(s=function(t,e){var i=t.style;return t.currentStyle&&!t.currentStyle.hasLayout&&(i.zoom=1),n.test(i.filter)?(e=e>=.9999?"":"alpha(opacity="+100*e+")",i.filter=i.filter.replace(n,e)):i.filter+=" alpha(opacity="+100*e+")",t}),fabric.util.setStyle=t}(),function(){function t(t){return"string"==typeof t?fabric.document.getElementById(t):t}function e(t,e){var i=fabric.document.createElement(t);for(var r in e)"class"===r?i.className=e[r]:"for"===r?i.htmlFor=e[r]:i.setAttribute(r,e[r]);return i}function i(t,e){t&&(" "+t.className+" ").indexOf(" "+e+" ")===-1&&(t.className+=(t.className?" ":"")+e)}function r(t,i,r){return"string"==typeof i&&(i=e(i,r)),t.parentNode&&t.parentNode.replaceChild(i,t),i.appendChild(t),i}function n(t){for(var e=0,i=0,r=fabric.document.documentElement,n=fabric.document.body||{scrollLeft:0,scrollTop:0};t&&(t.parentNode||t.host)&&(t=t.parentNode||t.host,t===fabric.document?(e=n.scrollLeft||r.scrollLeft||0,i=n.scrollTop||r.scrollTop||0):(e+=t.scrollLeft||0,i+=t.scrollTop||0),1!==t.nodeType||"fixed"!==fabric.util.getElementStyle(t,"position")););return{left:e,top:i}}function s(t){var e,i,r=t&&t.ownerDocument,s={left:0,top:0},o={left:0,top:0},a={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!r)return o;for(var h in a)o[a[h]]+=parseInt(c(t,h),10)||0;return e=r.documentElement,"undefined"!=typeof t.getBoundingClientRect&&(s=t.getBoundingClientRect()),i=n(t),{left:s.left+i.left-(e.clientLeft||0)+o.left,top:s.top+i.top-(e.clientTop||0)+o.top}}var o,a=Array.prototype.slice,h=function(t){return a.call(t,0)};try{o=h(fabric.document.childNodes)instanceof Array}catch(t){}o||(h=function(t){for(var e=new Array(t.length),i=t.length;i--;)e[i]=t[i];return e});var c;c=fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle?function(t,e){var i=fabric.document.defaultView.getComputedStyle(t,null);return i?i[e]:void 0}:function(t,e){var i=t.style[e];return!i&&t.currentStyle&&(i=t.currentStyle[e]),i},function(){function t(t){return"undefined"!=typeof t.onselectstart&&(t.onselectstart=fabric.util.falseFunction),r?t.style[r]="none":"string"==typeof t.unselectable&&(t.unselectable="on"),t}function e(t){return"undefined"!=typeof t.onselectstart&&(t.onselectstart=null),r?t.style[r]="":"string"==typeof t.unselectable&&(t.unselectable=""),t}var i=fabric.document.documentElement.style,r="userSelect"in i?"userSelect":"MozUserSelect"in i?"MozUserSelect":"WebkitUserSelect"in i?"WebkitUserSelect":"KhtmlUserSelect"in i?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=t,fabric.util.makeElementSelectable=e}(),function(){function t(t,e){var i=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),n=!0;r.onload=r.onreadystatechange=function(t){if(n){if("string"==typeof this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState)return;n=!1,e(t||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=t,i.appendChild(r)}fabric.util.getScript=t}(),fabric.util.getById=t,fabric.util.toArray=h,fabric.util.makeElement=e,fabric.util.addClass=i,fabric.util.wrapElement=r,fabric.util.getScrollLeftTop=n,fabric.util.getElementOffset=s,fabric.util.getElementStyle=c}(),function(){function t(t,e){return t+(/\?/.test(t)?"&":"?")+e}function e(){}function i(i,n){n||(n={});var s=n.method?n.method.toUpperCase():"GET",o=n.onComplete||function(){},a=r(),h=n.body||n.parameters;return a.onreadystatechange=function(){4===a.readyState&&(o(a),a.onreadystatechange=e)},"GET"===s&&(h=null,"string"==typeof n.parameters&&(i=t(i,n.parameters))),a.open(s,i,!0),"POST"!==s&&"PUT"!==s||a.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),a.send(h),a}var r=function(){for(var t=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}],e=t.length;e--;)try{var i=t[e]();if(i)return t[e]}catch(t){}}();fabric.util.request=i}(),fabric.log=function(){},fabric.warn=function(){},"undefined"!=typeof console&&["log","warn"].forEach(function(t){"undefined"!=typeof console[t]&&"function"==typeof console[t].apply&&(fabric[t]=function(){return console[t].apply(console,arguments)})}),function(){function t(t){e(function(i){t||(t={});var r,n=i||+new Date,s=t.duration||500,o=n+s,a=t.onChange||function(){},h=t.abort||function(){return!1},c=t.easing||function(t,e,i,r){return-i*Math.cos(t/r*(Math.PI/2))+i+e},l="startValue"in t?t.startValue:0,u="endValue"in t?t.endValue:100,f=t.byValue||u-l;t.onStart&&t.onStart(),function i(u){r=u||+new Date;var d=r>o?s:r-n;return h()?void(t.onComplete&&t.onComplete()):(a(c(d,l,f,s)),r>o?void(t.onComplete&&t.onComplete()):void e(i))}(n)})}function e(){return i.apply(fabric.window,arguments)}var i=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(t){fabric.window.setTimeout(t,1e3/60)};fabric.util.animate=t,fabric.util.requestAnimFrame=e}(),function(){function t(t,e,i){var r="rgba("+parseInt(t[0]+i*(e[0]-t[0]),10)+","+parseInt(t[1]+i*(e[1]-t[1]),10)+","+parseInt(t[2]+i*(e[2]-t[2]),10);return r+=","+(t&&e?parseFloat(t[3]+i*(e[3]-t[3])):1),r+=")"}function e(e,i,r,n){var s=new fabric.Color(e).getSource(),o=new fabric.Color(i).getSource();n=n||{},fabric.util.animate(fabric.util.object.extend(n,{duration:r||500,startValue:s,endValue:o,byValue:o,easing:function(e,i,r,s){var o=n.colorEasing?n.colorEasing(e,s):1-Math.cos(e/s*(Math.PI/2));return t(i,r,o)}}))}fabric.util.animateColor=e}(),function(){function t(t,e,i,r){return ta?a:o),1===o&&1===a&&0===h&&0===c&&0===f&&0===d)return y;if((f||d)&&(x=" translate("+_(f)+" "+_(d)+") "),r=x+" matrix("+o+" 0 0 "+a+" "+h*o+" "+c*a+") ","svg"===t.nodeName){for(n=t.ownerDocument.createElement("g");t.firstChild;)n.appendChild(t.firstChild);t.appendChild(n)}else n=t,r=n.getAttribute("transform")+r;return n.setAttribute("transform",r),y}function g(t,e){for(;t&&(t=t.parentNode);)if(t.nodeName&&e.test(t.nodeName.replace("svg:",""))&&!t.getAttribute("instantiated_by_use"))return!0; return!1}var p=t.fabric||(t.fabric={}),v=p.util.object.extend,b=p.util.object.clone,m=p.util.toFixed,_=p.util.parseUnit,y=p.util.multiplyTransformMatrices,x=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/i,C=/^(symbol|image|marker|pattern|view|svg)$/i,S=/^(?:pattern|defs|symbol|metadata|clipPath|mask)$/i,w=/^(symbol|g|a|svg)$/i,O={cx:"left",x:"left",r:"radius",cy:"top",y:"top",display:"visible",visibility:"visible",transform:"transformMatrix","fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration","text-anchor":"originX"},T={stroke:"strokeOpacity",fill:"fillOpacity"};p.cssRules={},p.gradientDefs={},p.parseTransformAttribute=function(){function t(t,e){var i=Math.cos(e[0]),r=Math.sin(e[0]),n=0,s=0;3===e.length&&(n=e[1],s=e[2]),t[0]=i,t[1]=r,t[2]=-r,t[3]=i,t[4]=n-(i*n-r*s),t[5]=s-(r*n+i*s)}function e(t,e){var i=e[0],r=2===e.length?e[1]:e[0];t[0]=i,t[3]=r}function i(t,e,i){t[i]=Math.tan(p.util.degreesToRadians(e[0]))}function r(t,e){t[4]=e[0],2===e.length&&(t[5]=e[1])}var n=[1,0,0,1,0,0],s=p.reNum,o="(?:\\s+,?\\s*|,\\s*)",a="(?:(skewX)\\s*\\(\\s*("+s+")\\s*\\))",h="(?:(skewY)\\s*\\(\\s*("+s+")\\s*\\))",c="(?:(rotate)\\s*\\(\\s*("+s+")(?:"+o+"("+s+")"+o+"("+s+"))?\\s*\\))",l="(?:(scale)\\s*\\(\\s*("+s+")(?:"+o+"("+s+"))?\\s*\\))",u="(?:(translate)\\s*\\(\\s*("+s+")(?:"+o+"("+s+"))?\\s*\\))",f="(?:(matrix)\\s*\\(\\s*("+s+")"+o+"("+s+")"+o+"("+s+")"+o+"("+s+")"+o+"("+s+")"+o+"("+s+")\\s*\\))",d="(?:"+f+"|"+u+"|"+l+"|"+c+"|"+a+"|"+h+")",g="(?:"+d+"(?:"+o+"*"+d+")*)",v="^\\s*(?:"+g+"?)\\s*$",b=new RegExp(v),m=new RegExp(d,"g");return function(s){var o=n.concat(),a=[];if(!s||s&&!b.test(s))return o;s.replace(m,function(s){var h=new RegExp(d).exec(s).filter(function(t){return!!t}),c=h[1],l=h.slice(2).map(parseFloat);switch(c){case"translate":r(o,l);break;case"rotate":l[0]=p.util.degreesToRadians(l[0]),t(o,l);break;case"scale":e(o,l);break;case"skewX":i(o,l,2);break;case"skewY":i(o,l,1);break;case"matrix":o=l}a.push(o.concat()),o=n.concat()});for(var h=a[0];a.length>1;)a.shift(),h=p.util.multiplyTransformMatrices(h,a[0]);return h}}();var j=new RegExp("^\\s*("+p.reNum+"+)\\s*,?\\s*("+p.reNum+"+)\\s*,?\\s*("+p.reNum+"+)\\s*,?\\s*("+p.reNum+"+)\\s*$");p.parseSVGDocument=function(t,e,i){if(t){f(t);var r=p.Object.__uid++,n=d(t),s=p.util.toArray(t.getElementsByTagName("*"));if(n.svgUid=r,0===s.length&&p.isLikelyNode){s=t.selectNodes('//*[name(.)!="svg"]');for(var o=[],a=0,h=s.length;a/i,""))),r&&r.documentElement||e&&e(null),p.parseSVGDocument(r.documentElement,function(t,i){e&&e(t,i)},i)}t=t.replace(/^\n\s*/,"").trim(),new p.util.request(t,{method:"get",onComplete:r})},loadSVGFromString:function(t,e,i){t=t.trim();var r;if("undefined"!=typeof DOMParser){var n=new DOMParser;n&&n.parseFromString&&(r=n.parseFromString(t,"text/xml"))}else p.window.ActiveXObject&&(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(t.replace(//i,"")));p.parseSVGDocument(r.documentElement,function(t,i){e(t,i)},i)}})}("undefined"!=typeof exports?exports:this),fabric.ElementsParser=function(t,e,i,r){this.elements=t,this.callback=e,this.options=i,this.reviver=r,this.svgUid=i&&i.svgUid||0},fabric.ElementsParser.prototype.parse=function(){this.instances=new Array(this.elements.length),this.numElements=this.elements.length,this.createObjects()},fabric.ElementsParser.prototype.createObjects=function(){for(var t=0,e=this.elements.length;tt.x&&this.y>t.y},gte:function(t){return this.x>=t.x&&this.y>=t.y},lerp:function(t,i){return"undefined"==typeof i&&(i=.5),i=Math.max(Math.min(1,i),0),new e(this.x+(t.x-this.x)*i,this.y+(t.y-this.y)*i)},distanceFrom:function(t){var e=this.x-t.x,i=this.y-t.y;return Math.sqrt(e*e+i*i)},midPointFrom:function(t){return this.lerp(t)},min:function(t){return new e(Math.min(this.x,t.x),Math.min(this.y,t.y))},max:function(t){return new e(Math.max(this.x,t.x),Math.max(this.y,t.y))},toString:function(){return this.x+","+this.y},setXY:function(t,e){return this.x=t,this.y=e,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setFromPoint:function(t){return this.x=t.x,this.y=t.y,this},swap:function(t){var e=this.x,i=this.y;this.x=t.x,this.y=t.y,t.x=e,t.y=i},clone:function(){return new e(this.x,this.y)}}))}("undefined"!=typeof exports?exports:this),function(t){"use strict";function e(t){this.status=t,this.points=[]}var i=t.fabric||(t.fabric={});return i.Intersection?void i.warn("fabric.Intersection is already defined"):(i.Intersection=e,i.Intersection.prototype={constructor:e,appendPoint:function(t){return this.points.push(t),this},appendPoints:function(t){return this.points=this.points.concat(t),this}},i.Intersection.intersectLineLine=function(t,r,n,s){var o,a=(s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x),h=(r.x-t.x)*(t.y-n.y)-(r.y-t.y)*(t.x-n.x),c=(s.y-n.y)*(r.x-t.x)-(s.x-n.x)*(r.y-t.y);if(0!==c){var l=a/c,u=h/c;0<=l&&l<=1&&0<=u&&u<=1?(o=new e("Intersection"),o.appendPoint(new i.Point(t.x+l*(r.x-t.x),t.y+l*(r.y-t.y)))):o=new e}else o=new e(0===a||0===h?"Coincident":"Parallel");return o},i.Intersection.intersectLinePolygon=function(t,i,r){for(var n,s,o,a=new e,h=r.length,c=0;c0&&(a.status="Intersection"),a},i.Intersection.intersectPolygonPolygon=function(t,i){for(var r=new e,n=t.length,s=0;s0&&(r.status="Intersection"),r},void(i.Intersection.intersectPolygonRectangle=function(t,r,n){var s=r.min(n),o=r.max(n),a=new i.Point(o.x,s.y),h=new i.Point(s.x,o.y),c=e.intersectLinePolygon(s,a,t),l=e.intersectLinePolygon(a,o,t),u=e.intersectLinePolygon(o,h,t),f=e.intersectLinePolygon(h,s,t),d=new e;return d.appendPoints(c.points),d.appendPoints(l.points),d.appendPoints(u.points),d.appendPoints(f.points),d.points.length>0&&(d.status="Intersection"),d}))}("undefined"!=typeof exports?exports:this),function(t){"use strict";function e(t){t?this._tryParsingColor(t):this.setSource([0,0,0,1])}function i(t,e,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?t+6*(e-t)*i:i<.5?e:i<2/3?t+(e-t)*(2/3-i)*6:t}var r=t.fabric||(t.fabric={});return r.Color?void r.warn("fabric.Color is already defined."):(r.Color=e,r.Color.prototype={_tryParsingColor:function(t){var i;t in e.colorNameMap&&(t=e.colorNameMap[t]),"transparent"===t&&(i=[255,255,255,0]),i||(i=e.sourceFromHex(t)),i||(i=e.sourceFromRgb(t)),i||(i=e.sourceFromHsl(t)),i||(i=[0,0,0,1]),i&&this.setSource(i)},_rgbToHsl:function(t,e,i){t/=255,e/=255,i/=255;var n,s,o,a=r.util.array.max([t,e,i]),h=r.util.array.min([t,e,i]);if(o=(a+h)/2,a===h)n=s=0;else{var c=a-h;switch(s=o>.5?c/(2-a-h):c/(a+h),a){case t:n=(e-i)/c+(e1?1:s,n){var o=n.split(/\s*;\s*/);""===o[o.length-1]&&o.pop();for(var a=o.length;a--;){var h=o[a].split(/\s*:\s*/),c=h[0].trim(),l=h[1].trim();"stop-color"===c?e=l:"stop-opacity"===c&&(r=l)}}return e||(e=t.getAttribute("stop-color")||"rgb(0,0,0)"),r||(r=t.getAttribute("stop-opacity")),e=new fabric.Color(e),i=e.getAlpha(),r=isNaN(parseFloat(r))?1:parseFloat(r),r*=i,{offset:s,color:e.toRgb(),opacity:r}}function e(t){return{x1:t.getAttribute("x1")||0,y1:t.getAttribute("y1")||0,x2:t.getAttribute("x2")||"100%",y2:t.getAttribute("y2")||0}}function i(t){return{x1:t.getAttribute("fx")||t.getAttribute("cx")||"50%",y1:t.getAttribute("fy")||t.getAttribute("cy")||"50%",r1:0,x2:t.getAttribute("cx")||"50%",y2:t.getAttribute("cy")||"50%",r2:t.getAttribute("r")||"50%"}}function r(t,e,i){var r,n=0,s=1,o="";for(var a in e)"Infinity"===e[a]?e[a]=1:"-Infinity"===e[a]&&(e[a]=0),r=parseFloat(e[a],10),s="string"==typeof e[a]&&/^\d+%$/.test(e[a])?.01:1,"x1"===a||"x2"===a||"r2"===a?(s*="objectBoundingBox"===i?t.width:1,n="objectBoundingBox"===i?t.left||0:0):"y1"!==a&&"y2"!==a||(s*="objectBoundingBox"===i?t.height:1,n="objectBoundingBox"===i?t.top||0:0),e[a]=r*s+n;if("ellipse"===t.type&&null!==e.r2&&"objectBoundingBox"===i&&t.rx!==t.ry){var h=t.ry/t.rx;o=" scale(1, "+h+")",e.y1&&(e.y1/=h),e.y2&&(e.y2/=h)}return o}fabric.Gradient=fabric.util.createClass({offsetX:0,offsetY:0,initialize:function(t){t||(t={});var e={};this.id=fabric.Object.__uid++,this.type=t.type||"linear",e={x1:t.coords.x1||0,y1:t.coords.y1||0,x2:t.coords.x2||0,y2:t.coords.y2||0},"radial"===this.type&&(e.r1=t.coords.r1||0,e.r2=t.coords.r2||0),this.coords=e,this.colorStops=t.colorStops.slice(),t.gradientTransform&&(this.gradientTransform=t.gradientTransform),this.offsetX=t.offsetX||this.offsetX,this.offsetY=t.offsetY||this.offsetY},addColorStop:function(t){for(var e in t){var i=new fabric.Color(t[e]);this.colorStops.push({offset:e,color:i.toRgb(),opacity:i.getAlpha()})}return this},toObject:function(t){var e={type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY,gradientTransform:this.gradientTransform?this.gradientTransform.concat():this.gradientTransform};return fabric.util.populateWithProperties(this,e,t),e},toSVG:function(t){var e,i,r=fabric.util.object.clone(this.coords);if(this.colorStops.sort(function(t,e){return t.offset-e.offset}),!t.group||"path-group"!==t.group.type)for(var n in r)"x1"===n||"x2"===n||"r2"===n?r[n]+=this.offsetX-t.width/2:"y1"!==n&&"y2"!==n||(r[n]+=this.offsetY-t.height/2);i='id="SVGID_'+this.id+'" gradientUnits="userSpaceOnUse"',this.gradientTransform&&(i+=' gradientTransform="matrix('+this.gradientTransform.join(" ")+')" '),"linear"===this.type?e=["\n']:"radial"===this.type&&(e=["\n']);for(var s=0;s\n');return e.push("linear"===this.type?"\n":"\n"),e.join("")},toLive:function(t,e){var i,r,n=fabric.util.object.clone(this.coords);if(this.type){if(e.group&&"path-group"===e.group.type)for(r in n)"x1"===r||"x2"===r?n[r]+=-this.offsetX+e.width/2:"y1"!==r&&"y2"!==r||(n[r]+=-this.offsetY+e.height/2);"linear"===this.type?i=t.createLinearGradient(n.x1,n.y1,n.x2,n.y2):"radial"===this.type&&(i=t.createRadialGradient(n.x1,n.y1,n.r1,n.x2,n.y2,n.r2));for(var s=0,o=this.colorStops.length;s\n\n\n'},setOptions:function(t){for(var e in t)this[e]=t[e]},toLive:function(t){var e="function"==typeof this.source?this.source():this.source;if(!e)return"";if("undefined"!=typeof e.src){if(!e.complete)return"";if(0===e.naturalWidth||0===e.naturalHeight)return""}return t.createPattern(e,this.repeat)}})}(),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.toFixed;return e.Shadow?void e.warn("fabric.Shadow is already defined."):(e.Shadow=e.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,initialize:function(t){"string"==typeof t&&(t=this._parseShadow(t));for(var i in t)this[i]=t[i];this.id=e.Object.__uid++},_parseShadow:function(t){var i=t.trim(),r=e.Shadow.reOffsetsAndBlur.exec(i)||[],n=i.replace(e.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)";return{color:n.trim(),offsetX:parseInt(r[1],10)||0,offsetY:parseInt(r[2],10)||0,blur:parseInt(r[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(t){var r=40,n=40,s=e.Object.NUM_FRACTION_DIGITS,o=e.util.rotateVector({x:this.offsetX,y:this.offsetY},e.util.degreesToRadians(-t.angle)),a=20;return t.width&&t.height&&(r=100*i((Math.abs(o.x)+this.blur)/t.width,s)+a,n=100*i((Math.abs(o.y)+this.blur)/t.height,s)+a),t.flipX&&(o.x*=-1),t.flipY&&(o.y*=-1),'\n\t\n\t\n\t\n\t\n\t\n\t\t\n\t\t\n\t\n\n'},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY,affectStroke:this.affectStroke};var t={},i=e.Shadow.prototype;return["color","blur","offsetX","offsetY","affectStroke"].forEach(function(e){this[e]!==i[e]&&(t[e]=this[e])},this),t}}),void(e.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/))}("undefined"!=typeof exports?exports:this),function(){"use strict";if(fabric.StaticCanvas)return void fabric.warn("fabric.StaticCanvas is already defined.");var t=fabric.util.object.extend,e=fabric.util.getElementOffset,i=fabric.util.removeFromArray,r=fabric.util.toFixed,n=fabric.util.transformPoint,s=fabric.util.invertTransform,o=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass(fabric.CommonMethods,{initialize:function(t,e){e||(e={}),this._initStatic(t,e)},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!1,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!1,imageSmoothingEnabled:!0,viewportTransform:fabric.iMatrix.concat(),backgroundVpt:!0,overlayVpt:!0,onBeforeScaleRotate:function(){},enableRetinaScaling:!0,vptCoords:{},_initStatic:function(t,e){var i=fabric.StaticCanvas.prototype.renderAll.bind(this);this._objects=[],this._createLowerCanvas(t),this._initOptions(e),this._setImageSmoothing(),this.interactive||this._initRetinaScaling(),e.overlayImage&&this.setOverlayImage(e.overlayImage,i),e.backgroundImage&&this.setBackgroundImage(e.backgroundImage,i),e.backgroundColor&&this.setBackgroundColor(e.backgroundColor,i),e.overlayColor&&this.setOverlayColor(e.overlayColor,i),this.calcOffset()},_isRetinaScaling:function(){return 1!==fabric.devicePixelRatio&&this.enableRetinaScaling},getRetinaScaling:function(){return this._isRetinaScaling()?fabric.devicePixelRatio:1},_initRetinaScaling:function(){this._isRetinaScaling()&&(this.lowerCanvasEl.setAttribute("width",this.width*fabric.devicePixelRatio),this.lowerCanvasEl.setAttribute("height",this.height*fabric.devicePixelRatio),this.contextContainer.scale(fabric.devicePixelRatio,fabric.devicePixelRatio))},calcOffset:function(){return this._offset=e(this.lowerCanvasEl),this},setOverlayImage:function(t,e,i){return this.__setBgOverlayImage("overlayImage",t,e,i)},setBackgroundImage:function(t,e,i){return this.__setBgOverlayImage("backgroundImage",t,e,i)},setOverlayColor:function(t,e){return this.__setBgOverlayColor("overlayColor",t,e)},setBackgroundColor:function(t,e){return this.__setBgOverlayColor("backgroundColor",t,e)},_setImageSmoothing:function(){var t=this.getContext();t.imageSmoothingEnabled=t.imageSmoothingEnabled||t.webkitImageSmoothingEnabled||t.mozImageSmoothingEnabled||t.msImageSmoothingEnabled||t.oImageSmoothingEnabled,t.imageSmoothingEnabled=this.imageSmoothingEnabled},__setBgOverlayImage:function(t,e,i,r){return"string"==typeof e?fabric.util.loadImage(e,function(e){e&&(this[t]=new fabric.Image(e,r)),i&&i(e)},this,r&&r.crossOrigin):(r&&e.setOptions(r),this[t]=e,i&&i(e)),this},__setBgOverlayColor:function(t,e,i){return this[t]=e,this._initGradient(e,t),this._initPattern(e,t,i),this},_createCanvasElement:function(t){var e=fabric.util.createCanvasElement(t);if(e.style||(e.style={}),!e)throw o;if("undefined"==typeof e.getContext)throw o;return e},_initOptions:function(t){this._setOptions(t),this.width=this.width||parseInt(this.lowerCanvasEl.width,10)||0,this.height=this.height||parseInt(this.lowerCanvasEl.height,10)||0,this.lowerCanvasEl.style&&(this.lowerCanvasEl.width=this.width,this.lowerCanvasEl.height=this.height,this.lowerCanvasEl.style.width=this.width+"px",this.lowerCanvasEl.style.height=this.height+"px",this.viewportTransform=this.viewportTransform.slice())},_createLowerCanvas:function(t){this.lowerCanvasEl=fabric.util.getById(t)||this._createCanvasElement(t),fabric.util.addClass(this.lowerCanvasEl,"lower-canvas"),this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(t,e){return this.setDimensions({width:t},e)},setHeight:function(t,e){return this.setDimensions({height:t},e)},setDimensions:function(t,e){var i;e=e||{};for(var r in t)i=t[r],e.cssOnly||(this._setBackstoreDimension(r,t[r]),i+="px"),e.backstoreOnly||this._setCssDimension(r,i);return this._initRetinaScaling(),this._setImageSmoothing(),this.calcOffset(),e.cssOnly||this.renderAll(),this},_setBackstoreDimension:function(t,e){return this.lowerCanvasEl[t]=e,this.upperCanvasEl&&(this.upperCanvasEl[t]=e),this.cacheCanvasEl&&(this.cacheCanvasEl[t]=e),this[t]=e,this},_setCssDimension:function(t,e){return this.lowerCanvasEl.style[t]=e,this.upperCanvasEl&&(this.upperCanvasEl.style[t]=e),this.wrapperEl&&(this.wrapperEl.style[t]=e),this},getZoom:function(){return this.viewportTransform[0]},setViewportTransform:function(t){var e,i=this._activeGroup,r=!1,n=!0;this.viewportTransform=t;for(var s=0,o=this._objects.length;s"),i.join("")},_setSVGPreamble:function(t,e){e.suppressPreamble||t.push('\n','\n')},_setSVGHeader:function(t,e){var i,n=e.width||this.width,s=e.height||this.height,o='viewBox="0 0 '+this.width+" "+this.height+'" ',a=fabric.Object.NUM_FRACTION_DIGITS;e.viewBox?o='viewBox="'+e.viewBox.x+" "+e.viewBox.y+" "+e.viewBox.width+" "+e.viewBox.height+'" ':this.svgViewportTransformation&&(i=this.viewportTransform,o='viewBox="'+r(-i[4]/i[0],a)+" "+r(-i[5]/i[3],a)+" "+r(this.width/i[0],a)+" "+r(this.height/i[3],a)+'" '),t.push("\n',"Created with Fabric.js ",fabric.version,"\n","\n",this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),"\n")},createSVGRefElementsMarkup:function(){var t=this,e=["backgroundColor","overlayColor"].map(function(e){var i=t[e];if(i&&i.toLive)return i.toSVG(t,!1)});return e.join("")},createSVGFontFacesMarkup:function(){for(var t,e,i,r,n,s,o,a="",h={},c=fabric.fontPaths,l=this.getObjects(),u=0,f=l.length;u',"\n",a,"","\n"].join("")),a},_setSVGObjects:function(t,e){for(var i,r=0,n=this.getObjects(),s=n.length;r\n")}else t.push('\n")},sendToBack:function(t){if(!t)return this;var e,r,n,s=this._activeGroup;if(t===s)for(n=s._objects,e=n.length;e--;)r=n[e],i(this._objects,r),this._objects.unshift(r);else i(this._objects,t),this._objects.unshift(t);return this.renderAll&&this.renderAll()},bringToFront:function(t){if(!t)return this;var e,r,n,s=this._activeGroup;if(t===s)for(n=s._objects,e=0;e=0;--n){var s=t.intersectsWithObject(this._objects[n])||t.isContainedWithinObject(this._objects[n])||this._objects[n].isContainedWithinObject(t);if(s){r=n;break}}}else r=e-1;return r},bringForward:function(t,e){if(!t)return this;var r,n,s,o,a,h=this._activeGroup;if(t===h)for(a=h._objects,r=a.length;r--;)n=a[r],s=this._objects.indexOf(n),s!==this._objects.length-1&&(o=s+1,i(this._objects,n),this._objects.splice(o,0,n));else s=this._objects.indexOf(t),s!==this._objects.length-1&&(o=this._findNewUpperIndex(t,s,e),i(this._objects,t),this._objects.splice(o,0,t));return this.renderAll&&this.renderAll(),this},_findNewUpperIndex:function(t,e,i){var r;if(i){r=e;for(var n=e+1;n"}}),t(fabric.StaticCanvas.prototype,fabric.Observable),t(fabric.StaticCanvas.prototype,fabric.Collection),t(fabric.StaticCanvas.prototype,fabric.DataURLExporter),t(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(t){var e=fabric.util.createCanvasElement();if(!e||!e.getContext)return null;var i=e.getContext("2d");if(!i)return null;switch(t){case"getImageData":return"undefined"!=typeof i.getImageData;case"setLineDash":return"undefined"!=typeof i.setLineDash;case"toDataURL":return"undefined"!=typeof e.toDataURL;case"toDataURLWithQuality":try{return e.toDataURL("image/jpeg",0),!0}catch(t){}return!1;default:return null}}}),fabric.StaticCanvas.prototype.toJSON=fabric.StaticCanvas.prototype.toObject}(),fabric.BaseBrush=fabric.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",strokeDashArray:null,setShadow:function(t){return this.shadow=new fabric.Shadow(t),this},_setBrushStyles:function(){var t=this.canvas.contextTop;t.strokeStyle=this.color,t.lineWidth=this.width,t.lineCap=this.strokeLineCap,t.lineJoin=this.strokeLineJoin,this.strokeDashArray&&fabric.StaticCanvas.supports("setLineDash")&&t.setLineDash(this.strokeDashArray)},_setShadow:function(){if(this.shadow){var t=this.canvas.contextTop,e=this.canvas.getZoom();t.shadowColor=this.shadow.color,t.shadowBlur=this.shadow.blur*e,t.shadowOffsetX=this.shadow.offsetX*e,t.shadowOffsetY=this.shadow.offsetY*e}},_resetShadow:function(){var t=this.canvas.contextTop;t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0}}),function(){fabric.PencilBrush=fabric.util.createClass(fabric.BaseBrush,{initialize:function(t){this.canvas=t,this._points=[]},onMouseDown:function(t){this._prepareForDrawing(t),this._captureDrawingPath(t),this._render()},onMouseMove:function(t){this._captureDrawingPath(t),this.canvas.clearContext(this.canvas.contextTop),this._render()},onMouseUp:function(){this._finalizeAndAddPath()},_prepareForDrawing:function(t){var e=new fabric.Point(t.x,t.y);this._reset(),this._addPoint(e),this.canvas.contextTop.moveTo(e.x,e.y)},_addPoint:function(t){this._points.push(t)},_reset:function(){this._points.length=0,this._setBrushStyles(),this._setShadow()},_captureDrawingPath:function(t){var e=new fabric.Point(t.x,t.y);this._addPoint(e)},_render:function(){var t=this.canvas.contextTop,e=this.canvas.viewportTransform,i=this._points[0],r=this._points[1];t.save(),t.transform(e[0],e[1],e[2],e[3],e[4],e[5]),t.beginPath(),2===this._points.length&&i.x===r.x&&i.y===r.y&&(i.x-=.5,r.x+=.5),t.moveTo(i.x,i.y);for(var n=1,s=this._points.length;n0?1:-1,"y"===i&&(s=e.target.skewY,o="top",a="bottom",r="originY"),n[-1]=o,n[1]=a,e.target.flipX&&(c*=-1),e.target.flipY&&(c*=-1),0===s?(e.skewSign=-h*t*c,e[r]=n[-t]):(s=s>0?1:-1,e.skewSign=s,e[r]=n[s*h*c])},_skewObject:function(t,e,i){var r=this._currentTransform,n=r.target,s=!1,o=n.get("lockSkewingX"),a=n.get("lockSkewingY");if(o&&"x"===i||a&&"y"===i)return!1;var h,c,l=n.getCenterPoint(),u=n.toLocalPoint(new fabric.Point(t,e),"center","center")[i],f=n.toLocalPoint(new fabric.Point(r.lastX,r.lastY),"center","center")[i],d=n._getTransformedDimensions();return this._changeSkewTransformOrigin(u-f,r,i),h=n.toLocalPoint(new fabric.Point(t,e),r.originX,r.originY)[i],c=n.translateToOriginPoint(l,r.originX,r.originY),s=this._setObjectSkew(h,r,i,d),r.lastX=t,r.lastY=e,n.setPositionByOrigin(c,r.originX,r.originY),s},_setObjectSkew:function(t,e,i,r){var n,s,o,a,h,c,l,u,f,d=e.target,g=!1,p=e.skewSign;return"x"===i?(a="y",h="Y",c="X",u=0,f=d.skewY):(a="x",h="X",c="Y",u=d.skewX,f=0),o=d._getTransformedDimensions(u,f),l=2*Math.abs(t)-o[i],l<=2?n=0:(n=p*Math.atan(l/d["scale"+c]/(o[a]/d["scale"+h])),n=fabric.util.radiansToDegrees(n)),g=d["skew"+c]!==n,d.set("skew"+c,n),0!==d["skew"+h]&&(s=d._getTransformedDimensions(),n=r[a]/s[a]*d["scale"+h],d.set("scale"+h,n)),g},_scaleObject:function(t,e,i){var r=this._currentTransform,n=r.target,s=n.get("lockScalingX"),o=n.get("lockScalingY"),a=n.get("lockScalingFlip");if(s&&o)return!1;var h=n.translateToOriginPoint(n.getCenterPoint(),r.originX,r.originY),c=n.toLocalPoint(new fabric.Point(t,e),r.originX,r.originY),l=n._getTransformedDimensions(),u=!1;return this._setLocalMouse(c,r),u=this._setObjectScale(c,r,s,o,i,a,l),n.setPositionByOrigin(h,r.originX,r.originY),u},_setObjectScale:function(t,e,i,r,n,s,o){var a,h,c,l,u=e.target,f=!1,d=!1,g=!1;return c=t.x*u.scaleX/o.x,l=t.y*u.scaleY/o.y,a=u.scaleX!==c,h=u.scaleY!==l,s&&c<=0&&cs?t.x<0?t.x+=s:t.x-=s:t.x=0,n(t.y)>s?t.y<0?t.y+=s:t.y-=s:t.y=0},_rotateObject:function(t,e){var n=this._currentTransform;if(n.target.get("lockRotation"))return!1;var s=r(n.ey-n.top,n.ex-n.left),o=r(e-n.top,t-n.left),a=i(o-s+n.theta),h=!0;if(a<0&&(a=360+a),a%=360,n.target.snapAngle>0){var c=n.target.snapAngle,l=n.target.snapThreshold||c,u=Math.ceil(a/c)*c,f=Math.floor(a/c)*c;Math.abs(a-f)0?0:-i),e.ey-(r>0?0:-r),a,h)),this.selectionLineWidth&&this.selectionBorderColor)if(t.lineWidth=this.selectionLineWidth,t.strokeStyle=this.selectionBorderColor,this.selectionDashArray.length>1&&!s){var c=e.ex+o-(i>0?0:a),l=e.ey+o-(r>0?0:h);t.beginPath(),fabric.util.drawDashedLine(t,c,l,c+a,l,this.selectionDashArray),fabric.util.drawDashedLine(t,c,l+h-1,c+a,l+h-1,this.selectionDashArray),fabric.util.drawDashedLine(t,c,l,c,l+h,this.selectionDashArray),fabric.util.drawDashedLine(t,c+a-1,l,c+a-1,l+h,this.selectionDashArray),t.closePath(),t.stroke()}else fabric.Object.prototype._setLineDash.call(this,t,this.selectionDashArray),t.strokeRect(e.ex+o-(i>0?0:a),e.ey+o-(r>0?0:h),a,h)},findTarget:function(t,e){if(!this.skipTargetFind){var i,r=!0,n=this.getPointer(t,r),s=this.getActiveGroup(),o=this.getActiveObject();if(s&&!e&&s===this._searchPossibleTargets([s],n))return this._fireOverOutEvents(s,t),s;if(o&&o._findTargetCorner(n))return this._fireOverOutEvents(o,t),o;if(o&&o===this._searchPossibleTargets([o],n)){if(!this.preserveObjectStacking)return this._fireOverOutEvents(o,t),o;i=o}this.targets=[];var a=this._searchPossibleTargets(this._objects,n);return t[this.altSelectionKey]&&a&&i&&a!==i&&(a=i),this._fireOverOutEvents(a,t),a}},_fireOverOutEvents:function(t,e){t?this._hoveredTarget!==t&&(this._hoveredTarget&&(this.fire("mouse:out",{target:this._hoveredTarget,e:e}),this._hoveredTarget.fire("mouseout")),this.fire("mouse:over",{target:t,e:e}),t.fire("mouseover"),this._hoveredTarget=t):this._hoveredTarget&&(this.fire("mouse:out",{target:this._hoveredTarget,e:e}),this._hoveredTarget.fire("mouseout"),this._hoveredTarget=null)},_checkTarget:function(t,e){if(e&&e.visible&&e.evented&&this.containsPoint(null,e,t)){if(!this.perPixelTargetFind&&!e.perPixelTargetFind||e.isEditing)return!0;var i=this.isTargetTransparent(e,t.x,t.y);if(!i)return!0}},_searchPossibleTargets:function(t,e){for(var i,r,n,s=t.length;s--;)if(this._checkTarget(e,t[s])){i=t[s],"group"===i.type&&i.subTargetCheck&&(r=this._normalizePointer(i,e),n=this._searchPossibleTargets(i._objects,r),n&&this.targets.push(n));break}return i},restorePointerVpt:function(t){return fabric.util.transformPoint(t,fabric.util.invertTransform(this.viewportTransform))},getPointer:function(e,i,r){r||(r=this.upperCanvasEl);var n,s=t(e),o=r.getBoundingClientRect(),a=o.width||0,h=o.height||0;return a&&h||("top"in o&&"bottom"in o&&(h=Math.abs(o.top-o.bottom)),"right"in o&&"left"in o&&(a=Math.abs(o.right-o.left))),this.calcOffset(),s.x=s.x-this._offset.left,s.y=s.y-this._offset.top,i||(s=this.restorePointerVpt(s)),n=0===a||0===h?{width:1,height:1}:{width:r.width/a,height:r.height/h},{x:s.x*n.width,y:s.y*n.height}},_createUpperCanvas:function(){var t=this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/,"");this.upperCanvasEl=this._createCanvasElement(),fabric.util.addClass(this.upperCanvasEl,"upper-canvas "+t),this.wrapperEl.appendChild(this.upperCanvasEl),this._copyCanvasStyle(this.lowerCanvasEl,this.upperCanvasEl),this._applyCanvasStyle(this.upperCanvasEl),this.contextTop=this.upperCanvasEl.getContext("2d")},_createCacheCanvas:function(){this.cacheCanvasEl=this._createCanvasElement(),this.cacheCanvasEl.setAttribute("width",this.width),this.cacheCanvasEl.setAttribute("height",this.height),this.contextCache=this.cacheCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=fabric.util.wrapElement(this.lowerCanvasEl,"div",{class:this.containerClass}),fabric.util.setStyle(this.wrapperEl,{width:this.getWidth()+"px",height:this.getHeight()+"px",position:"relative"}),fabric.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(t){var e=this.getWidth()||t.width,i=this.getHeight()||t.height;fabric.util.setStyle(t,{position:"absolute",width:e+"px",height:i+"px",left:0,top:0,"touch-action":"none"}),t.width=e,t.height=i,fabric.util.makeElementUnselectable(t)},_copyCanvasStyle:function(t,e){e.style.cssText=t.style.cssText},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},_setActiveObject:function(t){var e=this._activeObject;e&&(e.set("active",!1),t!==e&&e.onDeselect&&"function"==typeof e.onDeselect&&e.onDeselect()),this._activeObject=t,t.set("active",!0)},setActiveObject:function(t,e){var i=this.getActiveObject();return i&&i!==t&&i.fire("deselected",{e:e}),this._setActiveObject(t),this.renderAll(),this.fire("object:selected",{target:t,e:e}),t.fire("selected",{e:e}),this},getActiveObject:function(){return this._activeObject},_onObjectRemoved:function(t){this.getActiveObject()===t&&(this.fire("before:selection:cleared",{target:t}),this._discardActiveObject(),this.fire("selection:cleared",{target:t}),t.fire("deselected")),this._hoveredTarget===t&&(this._hoveredTarget=null),this.callSuper("_onObjectRemoved",t)},_discardActiveObject:function(){var t=this._activeObject;t&&(t.set("active",!1),t.onDeselect&&"function"==typeof t.onDeselect&&t.onDeselect()),this._activeObject=null},discardActiveObject:function(t){var e=this._activeObject;return e&&(this.fire("before:selection:cleared",{target:e,e:t}),this._discardActiveObject(),this.fire("selection:cleared",{e:t}),e.fire("deselected",{e:t})),this},_setActiveGroup:function(t){this._activeGroup=t,t&&t.set("active",!0)},setActiveGroup:function(t,e){return this._setActiveGroup(t),t&&(this.fire("object:selected",{target:t,e:e}),t.fire("selected",{e:e})),this},getActiveGroup:function(){return this._activeGroup},_discardActiveGroup:function(){var t=this.getActiveGroup();t&&t.destroy(),this.setActiveGroup(null)},discardActiveGroup:function(t){var e=this.getActiveGroup();return e&&(this.fire("before:selection:cleared",{e:t,target:e}),this._discardActiveGroup(),this.fire("selection:cleared",{e:t})),this},deactivateAll:function(){for(var t,e=this.getObjects(),i=0,r=e.length;i1)){var r=this._groupSelector;r?(i=this.getPointer(t,!0),r.left=i.x-r.ex,r.top=i.y-r.ey,this.renderTop()):this._currentTransform?this._transformObject(t):(e=this.findTarget(t),this._setCursorFromEvent(t,e)),this._handleEvent(t,"move",e?e:null)}},__onMouseWheel:function(t){this._handleEvent(t,"wheel")},_transformObject:function(t){var e=this.getPointer(t),i=this._currentTransform;i.reset=!1,i.target.isMoving=!0,i.shiftKey=t.shiftKey,i.altKey=t[this.centeredKey],this._beforeScaleTransform(t,i),this._performTransformAction(t,i,e),i.actionPerformed&&this.renderAll()},_performTransformAction:function(t,e,i){var r=i.x,n=i.y,s=e.target,o=e.action,a=!1;"rotate"===o?(a=this._rotateObject(r,n))&&this._fire("rotating",s,t):"scale"===o?(a=this._onScale(t,e,r,n))&&this._fire("scaling",s,t):"scaleX"===o?(a=this._scaleObject(r,n,"x"))&&this._fire("scaling",s,t):"scaleY"===o?(a=this._scaleObject(r,n,"y"))&&this._fire("scaling",s,t):"skewX"===o?(a=this._skewObject(r,n,"x"))&&this._fire("skewing",s,t):"skewY"===o?(a=this._skewObject(r,n,"y"))&&this._fire("skewing",s,t):(a=this._translateObject(r,n),a&&(this._fire("moving",s,t),this.setCursor(s.moveCursor||this.moveCursor))),e.actionPerformed=e.actionPerformed||a},_fire:function(t,e,i){this.fire("object:"+t,{target:e,e:i}),e.fire(t,{e:i})},_beforeScaleTransform:function(t,e){if("scale"===e.action||"scaleX"===e.action||"scaleY"===e.action){var i=this._shouldCenterTransform(e.target);(i&&("center"!==e.originX||"center"!==e.originY)||!i&&"center"===e.originX&&"center"===e.originY)&&(this._resetCurrentTransform(),e.reset=!0)}},_onScale:function(t,e,i,r){return!t[this.uniScaleKey]&&!this.uniScaleTransform||e.target.get("lockUniScaling")?(e.reset||"scale"!==e.currentAction||this._resetCurrentTransform(),e.currentAction="scaleEqually",this._scaleObject(i,r,"equally")):(e.currentAction="scale",this._scaleObject(i,r))},_setCursorFromEvent:function(t,e){if(!e||!e.selectable)return this.setCursor(this.defaultCursor),!1;var i=e.hoverCursor||this.hoverCursor,r=this.getActiveGroup(),n=e._findTargetCorner&&(!r||!r.contains(e))&&e._findTargetCorner(this.getPointer(t,!0));return n?this._setCornerCursor(n,e,t):this.setCursor(i),!0},_setCornerCursor:function(e,i,r){if(e in t)this.setCursor(this._getRotatedCornerCursor(e,i,r));else{if("mtr"!==e||!i.hasRotatingPoint)return this.setCursor(this.defaultCursor),!1;this.setCursor(this.rotationCursor)}},_getRotatedCornerCursor:function(e,i,r){var n=Math.round(i.getAngle()%360/45);return n<0&&(n+=8),n+=t[e],r[this.altActionKey]&&t[e]%2===0&&(n+=2),n%=8,this.cursorMap[n]}})}(),function(){var t=Math.min,e=Math.max;fabric.util.object.extend(fabric.Canvas.prototype,{_shouldGroup:function(t,e){var i=this.getActiveObject();return t[this.selectionKey]&&e&&e.selectable&&(this.getActiveGroup()||i&&i!==e)&&this.selection},_handleGrouping:function(t,e){var i=this.getActiveGroup();(e!==i||(e=this.findTarget(t,!0)))&&(i?this._updateActiveGroup(e,t):this._createActiveGroup(e,t),this._activeGroup&&this._activeGroup.saveCoords())},_updateActiveGroup:function(t,e){var i=this.getActiveGroup();if(i.contains(t)){if(i.removeWithUpdate(t),t.set("active",!1),1===i.size())return this.discardActiveGroup(e),void this.setActiveObject(i.item(0))}else i.addWithUpdate(t);this.fire("selection:created",{target:i,e:e}),i.set("active",!0)},_createActiveGroup:function(t,e){if(this._activeObject&&t!==this._activeObject){var i=this._createGroup(t);i.addWithUpdate(),this.setActiveGroup(i),this._activeObject=null,this.fire("selection:created",{target:i,e:e})}t.set("active",!0)},_createGroup:function(t){var e=this.getObjects(),i=e.indexOf(this._activeObject)1&&(e=new fabric.Group(e.reverse(),{canvas:this}),e.addWithUpdate(),this.setActiveGroup(e,t),e.saveCoords(),this.fire("selection:created",{target:e}),this.renderAll())},_collectObjects:function(){for(var i,r=[],n=this._groupSelector.ex,s=this._groupSelector.ey,o=n+this._groupSelector.left,a=s+this._groupSelector.top,h=new fabric.Point(t(n,o),t(s,a)),c=new fabric.Point(e(n,o),e(s,a)),l=n===o&&s===a,u=this._objects.length;u--&&(i=this._objects[u],!(i&&i.selectable&&i.visible&&(i.intersectsWithRect(h,c)||i.isContainedWithinRect(h,c)||i.containsPoint(h)||i.containsPoint(c))&&(i.set("active",!0),r.push(i),l))););return r},_maybeGroupObjects:function(t){this.selection&&this._groupSelector&&this._groupSelectedObjects(t);var e=this.getActiveGroup();e&&(e.setObjectsCoords().setCoords(),e.isMoving=!1,this.setCursor(this.defaultCursor)),this._groupSelector=null,this._currentTransform=null}})}(),function(){var t=fabric.StaticCanvas.supports("toDataURLWithQuality");fabric.util.object.extend(fabric.StaticCanvas.prototype,{toDataURL:function(t){t||(t={});var e=t.format||"png",i=t.quality||1,r=t.multiplier||1,n={left:t.left||0,top:t.top||0,width:t.width||0,height:t.height||0};return this.__toDataURLWithMultiplier(e,i,n,r)},__toDataURLWithMultiplier:function(t,e,i,r){var n=this.getWidth(),s=this.getHeight(),o=(i.width||this.getWidth())*r,a=(i.height||this.getHeight())*r,h=this.getZoom(),c=h*r,l=this.viewportTransform,u=(l[4]-i.left)*r,f=(l[5]-i.top)*r,d=[c,0,0,c,u,f],g=this.interactive;this.viewportTransform=d,this.interactive&&(this.interactive=!1),n!==o||s!==a?this.setDimensions({width:o,height:a}):this.renderAll();var p=this.__toDataURL(t,e,i);return g&&(this.interactive=g),this.viewportTransform=l,this.setDimensions({width:n,height:s}),p},__toDataURL:function(e,i){var r=this.contextContainer.canvas;"jpg"===e&&(e="jpeg");var n=t?r.toDataURL("image/"+e,i):r.toDataURL("image/"+e);return n},toDataURLWithMultiplier:function(t,e,i){return this.toDataURL({format:t,multiplier:e,quality:i})}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{loadFromDatalessJSON:function(t,e,i){return this.loadFromJSON(t,e,i)},loadFromJSON:function(t,e,i){if(t){var r="string"==typeof t?JSON.parse(t):fabric.util.object.clone(t);this.clear();var n=this;return this._enlivenObjects(r.objects,function(){n._setBgOverlay(r,function(){delete r.objects,delete r.backgroundImage,delete r.overlayImage,delete r.background,delete r.overlay,n._setOptions(r),e&&e()})},i),this}},_setBgOverlay:function(t,e){var i=this,r={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(!(t.backgroundImage||t.overlayImage||t.background||t.overlay))return void(e&&e());var n=function(){r.backgroundImage&&r.overlayImage&&r.backgroundColor&&r.overlayColor&&(i.renderAll(),e&&e())};this.__setBgOverlay("backgroundImage",t.backgroundImage,r,n),this.__setBgOverlay("overlayImage",t.overlayImage,r,n),this.__setBgOverlay("backgroundColor",t.background,r,n),this.__setBgOverlay("overlayColor",t.overlay,r,n)},__setBgOverlay:function(t,e,i,r){var n=this;return e?void("backgroundImage"===t||"overlayImage"===t?fabric.util.enlivenObjects([e],function(e){n[t]=e[0],i[t]=!0,r&&r()}):this["set"+fabric.util.string.capitalize(t,!0)](e,function(){i[t]=!0,r&&r()})):(i[t]=!0,void(r&&r()))},_enlivenObjects:function(t,e,i){var r=this;if(!t||0===t.length)return void(e&&e());var n=this.renderOnAddRemove;this.renderOnAddRemove=!1,fabric.util.enlivenObjects(t,function(t){t.forEach(function(t,e){r.insertAt(t,e)}),r.renderOnAddRemove=n,e&&e()},null,i)},_toDataURL:function(t,e){this.clone(function(i){e(i.toDataURL(t))})},_toDataURLWithMultiplier:function(t,e,i){this.clone(function(r){i(r.toDataURLWithMultiplier(t,e))})},clone:function(t,e){var i=JSON.stringify(this.toJSON(e));this.cloneWithoutData(function(e){e.loadFromJSON(i,function(){t&&t(e)})})},cloneWithoutData:function(t){var e=fabric.document.createElement("canvas");e.width=this.getWidth(),e.height=this.getHeight();var i=new fabric.Canvas(e);i.clipTo=this.clipTo,this.backgroundImage?(i.setBackgroundImage(this.backgroundImage.src,function(){i.renderAll(),t&&t(i)}),i.backgroundImageOpacity=this.backgroundImageOpacity,i.backgroundImageStretch=this.backgroundImageStretch):t&&t(i)}}),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.util.object.clone,n=e.util.toFixed,s=e.util.string.capitalize,o=e.util.degreesToRadians,a=e.StaticCanvas.supports("setLineDash"),h=!e.isLikelyNode;e.Object||(e.Object=e.util.createClass(e.CommonMethods,{type:"object",originX:"left",originY:"top",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,opacity:1,angle:0,skewX:0,skewY:0,cornerSize:13,transparentCorners:!0,hoverCursor:null,moveCursor:null,padding:0,borderColor:"rgba(102,153,255,0.75)",borderDashArray:null,cornerColor:"rgba(102,153,255,0.5)",cornerStrokeColor:null,cornerStyle:"rect",cornerDashArray:null,centeredScaling:!1,centeredRotation:!0,fill:"rgb(0,0,0)",fillRule:"nonzero",globalCompositeOperation:"source-over",backgroundColor:"",selectionBackgroundColor:"",stroke:null,strokeWidth:1,strokeDashArray:null,strokeLineCap:"butt",strokeLineJoin:"miter",strokeMiterLimit:10,shadow:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,transformMatrix:null,minScaleLimit:.01,selectable:!0,evented:!0,visible:!0,hasControls:!0,hasBorders:!0,hasRotatingPoint:!0,rotatingPointOffset:40,perPixelTargetFind:!1,includeDefaultValues:!0,clipTo:null,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockUniScaling:!1,lockSkewingX:!1,lockSkewingY:!1,lockScalingFlip:!1,excludeFromExport:!1,objectCaching:h,statefullCache:!1,noScaleCache:!0,dirty:!1,needsItsOwnCache:!1,stateProperties:"top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeLineJoin strokeMiterLimit angle opacity fill fillRule globalCompositeOperation shadow clipTo visible backgroundColor skewX skewY".split(" "),cacheProperties:"fill stroke strokeWidth strokeDashArray width height stroke strokeWidth strokeDashArray strokeLineCap strokeLineJoin strokeMiterLimit fillRule backgroundColor".split(" "),initialize:function(t){t=t||{},t&&this.setOptions(t),this.objectCaching&&(this._createCacheCanvas(),this.setupState({propertySet:"cacheProperties"}))},_createCacheCanvas:function(){this._cacheCanvas=e.document.createElement("canvas"),this._cacheContext=this._cacheCanvas.getContext("2d"),this._updateCacheCanvas()},_getCacheCanvasDimensions:function(){var t=this.canvas&&this.canvas.getZoom()||1,i=this.getObjectScaling(),r=this._getNonTransformedDimensions(),n=this.canvas&&this.canvas._isRetinaScaling()?e.devicePixelRatio:1,s=i.scaleX*t*n,o=i.scaleY*t*n,a=r.x*s,h=r.y*o;return{width:Math.ceil(a)+2,height:Math.ceil(h)+2,zoomX:s,zoomY:o}},_updateCacheCanvas:function(){if(this.noScaleCache&&this.canvas&&this.canvas._currentTransform){var t=this.canvas._currentTransform.action;if("scale"===t.slice(0,5))return!1}var e=this._getCacheCanvasDimensions(),i=e.width,r=e.height,n=e.zoomX,s=e.zoomY;return(i!==this.cacheWidth||r!==this.cacheHeight)&&(this._cacheCanvas.width=i,this._cacheCanvas.height=r,this._cacheContext.translate(i/2,r/2),this._cacheContext.scale(n,s),this.cacheWidth=i,this.cacheHeight=r,this.zoomX=n,this.zoomY=s,!0)},setOptions:function(t){this._setOptions(t),this._initGradient(t.fill,"fill"),this._initGradient(t.stroke,"stroke"),this._initClipping(t),this._initPattern(t.fill,"fill"),this._initPattern(t.stroke,"stroke")},transform:function(t,e){this.group&&!this.group._transformDone&&this.group===this.canvas._activeGroup&&this.group.transform(t);var i=e?this._getLeftTopCoords():this.getCenterPoint();t.translate(i.x,i.y),this.angle&&t.rotate(o(this.angle)),t.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1)),this.skewX&&t.transform(1,0,Math.tan(o(this.skewX)),1,0,0),this.skewY&&t.transform(1,Math.tan(o(this.skewY)),0,1,0,0)},toObject:function(t){var i=e.Object.NUM_FRACTION_DIGITS,r={type:this.type,originX:this.originX,originY:this.originY,left:n(this.left,i),top:n(this.top,i),width:n(this.width,i),height:n(this.height,i),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:n(this.strokeWidth,i),strokeDashArray:this.strokeDashArray?this.strokeDashArray.concat():this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeLineJoin:this.strokeLineJoin,strokeMiterLimit:n(this.strokeMiterLimit,i),scaleX:n(this.scaleX,i),scaleY:n(this.scaleY,i),angle:n(this.getAngle(),i),flipX:this.flipX,flipY:this.flipY,opacity:n(this.opacity,i),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,clipTo:this.clipTo&&String(this.clipTo),backgroundColor:this.backgroundColor,fillRule:this.fillRule,globalCompositeOperation:this.globalCompositeOperation,transformMatrix:this.transformMatrix?this.transformMatrix.concat():null,skewX:n(this.skewX,i),skewY:n(this.skewY,i)};return e.util.populateWithProperties(this,r,t),this.includeDefaultValues||(r=this._removeDefaultValues(r)),r},toDatalessObject:function(t){return this.toObject(t)},_removeDefaultValues:function(t){var i=e.util.getKlass(t.type).prototype,r=i.stateProperties;return r.forEach(function(e){t[e]===i[e]&&delete t[e];var r="[object Array]"===Object.prototype.toString.call(t[e])&&"[object Array]"===Object.prototype.toString.call(i[e]);r&&0===t[e].length&&0===i[e].length&&delete t[e]}),t},toString:function(){return"#"},getObjectScaling:function(){var t=this.scaleX,e=this.scaleY;if(this.group){var i=this.group.getObjectScaling();t*=i.scaleX,e*=i.scaleY}return{scaleX:t,scaleY:e}},_set:function(t,i){var r="scaleX"===t||"scaleY"===t;return r&&(i=this._constrainScale(i)),"scaleX"===t&&i<0?(this.flipX=!this.flipX,i*=-1):"scaleY"===t&&i<0?(this.flipY=!this.flipY,i*=-1):"shadow"!==t||!i||i instanceof e.Shadow?"dirty"===t&&this.group&&this.group.set("dirty",i):i=new e.Shadow(i),this[t]=i,this.cacheProperties.indexOf(t)>-1&&(this.group&&this.group.set("dirty",!0),this.dirty=!0),"width"!==t&&"height"!==t||(this.minScaleLimit=Math.min(.1,1/Math.max(this.width,this.height))),this},setOnGroup:function(){},setSourcePath:function(t){return this.sourcePath=t,this},getViewportTransform:function(){return this.canvas&&this.canvas.viewportTransform?this.canvas.viewportTransform:e.iMatrix.concat()},render:function(t,i){0===this.width&&0===this.height||!this.visible||(t.save(),this._setupCompositeOperation(t),this.drawSelectionBackground(t),i||this.transform(t),this._setOpacity(t),this._setShadow(t),this.transformMatrix&&t.transform.apply(t,this.transformMatrix),this.clipTo&&e.util.clipContext(this,t),!this.objectCaching||this.group&&!this.needsItsOwnCache?(this.drawObject(t,i),i&&this.objectCaching&&this.statefullCache&&this.saveState({propertySet:"cacheProperties"})):(this.isCacheDirty(i)&&(this.statefullCache&&this.saveState({propertySet:"cacheProperties"}),this.drawObject(this._cacheContext,i),this.dirty=!1),this.drawCacheOnCanvas(t)),this.clipTo&&t.restore(),t.restore())},drawObject:function(t,e){this._renderBackground(t),this._setStrokeStyles(t),this._setFillStyles(t),this._render(t,e)},drawCacheOnCanvas:function(t){t.scale(1/this.zoomX,1/this.zoomY),t.drawImage(this._cacheCanvas,-this.cacheWidth/2,-this.cacheHeight/2)},isCacheDirty:function(t){if(!t&&this._updateCacheCanvas())return!0;if(this.dirty||this.statefullCache&&this.hasStateChanged("cacheProperties")){if(!t){var e=this.cacheWidth/this.zoomX,i=this.cacheHeight/this.zoomY;this._cacheContext.clearRect(-e/2,-i/2,e,i)}return!0}return!1},_renderBackground:function(t){if(this.backgroundColor){var e=this._getNonTransformedDimensions();t.fillStyle=this.backgroundColor,t.fillRect(-e.x/2,-e.y/2,e.x,e.y),this._removeShadow(t)}},_setOpacity:function(t){t.globalAlpha*=this.opacity},_setStrokeStyles:function(t){this.stroke&&(t.lineWidth=this.strokeWidth,t.lineCap=this.strokeLineCap,t.lineJoin=this.strokeLineJoin,t.miterLimit=this.strokeMiterLimit,t.strokeStyle=this.stroke.toLive?this.stroke.toLive(t,this):this.stroke)},_setFillStyles:function(t){this.fill&&(t.fillStyle=this.fill.toLive?this.fill.toLive(t,this):this.fill)},_setLineDash:function(t,e,i){e&&(1&e.length&&e.push.apply(e,e),a?t.setLineDash(e):i&&i(t))},_renderControls:function(t,i){if(!(!this.active||i||this.group&&this.group!==this.canvas.getActiveGroup())){var r,n=this.getViewportTransform(),s=this.calcTransformMatrix();s=e.util.multiplyTransformMatrices(n,s),r=e.util.qrDecompose(s),t.save(),t.translate(r.translateX,r.translateY),t.lineWidth=1*this.borderScaleFactor,this.group||(t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1),this.group&&this.group===this.canvas.getActiveGroup()?(t.rotate(o(r.angle)),this.drawBordersInGroup(t,r)):(t.rotate(o(this.angle)),this.drawBorders(t)),this.drawControls(t),t.restore()}},_setShadow:function(t){if(this.shadow){var i=this.canvas&&this.canvas.viewportTransform[0]||1,r=this.canvas&&this.canvas.viewportTransform[3]||1,n=this.getObjectScaling();this.canvas&&this.canvas._isRetinaScaling()&&(i*=e.devicePixelRatio,r*=e.devicePixelRatio),t.shadowColor=this.shadow.color,t.shadowBlur=this.shadow.blur*(i+r)*(n.scaleX+n.scaleY)/4,t.shadowOffsetX=this.shadow.offsetX*i*n.scaleX,t.shadowOffsetY=this.shadow.offsetY*r*n.scaleY}},_removeShadow:function(t){this.shadow&&(t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0)},_applyPatternGradientTransform:function(t,e){if(e.toLive){var i=e.gradientTransform||e.patternTransform;i&&t.transform.apply(t,i);var r=-this.width/2+e.offsetX||0,n=-this.height/2+e.offsetY||0;t.translate(r,n)}},_renderFill:function(t){this.fill&&(t.save(),this._applyPatternGradientTransform(t,this.fill),"evenodd"===this.fillRule?t.fill("evenodd"):t.fill(),t.restore())},_renderStroke:function(t){this.stroke&&0!==this.strokeWidth&&(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(t),t.save(),this._setLineDash(t,this.strokeDashArray,this._renderDashedStroke),this._applyPatternGradientTransform(t,this.stroke),t.stroke(),t.restore())},clone:function(t,i){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(i),t):new e.Object(this.toObject(i))},cloneAsImage:function(t,i){var r=this.toDataURL(i);return e.util.loadImage(r,function(i){t&&t(new e.Image(i))}),this},toDataURL:function(t){t||(t={});var i=e.util.createCanvasElement(),r=this.getBoundingRect();i.width=r.width,i.height=r.height,e.util.wrapElement(i,"div");var n=new e.StaticCanvas(i,{enableRetinaScaling:t.enableRetinaScaling});"jpg"===t.format&&(t.format="jpeg"),"jpeg"===t.format&&(n.backgroundColor="#fff");var s={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set("active",!1),this.setPositionByOrigin(new e.Point(n.getWidth()/2,n.getHeight()/2),"center","center");var o=this.canvas;n.add(this);var a=n.toDataURL(t);return this.set(s).setCoords(),this.canvas=o,n.dispose(),n=null,a},isType:function(t){return this.type===t},complexity:function(){return 1},toJSON:function(t){return this.toObject(t)},setGradient:function(t,i){i||(i={});var r={colorStops:[]};return r.type=i.type||(i.r1||i.r2?"radial":"linear"),r.coords={x1:i.x1,y1:i.y1,x2:i.x2,y2:i.y2},(i.r1||i.r2)&&(r.coords.r1=i.r1,r.coords.r2=i.r2),r.gradientTransform=i.gradientTransform,e.Gradient.prototype.addColorStop.call(r,i.colorStops),this.set(t,e.Gradient.forObject(this,r))},setPatternFill:function(t){return this.set("fill",new e.Pattern(t))},setShadow:function(t){return this.set("shadow",t?new e.Shadow(t):null)},setColor:function(t){return this.set("fill",t),this},setAngle:function(t){var e=("center"!==this.originX||"center"!==this.originY)&&this.centeredRotation;return e&&this._setOriginToCenter(),this.set("angle",t),e&&this._resetOrigin(),this},centerH:function(){return this.canvas&&this.canvas.centerObjectH(this),this},viewportCenterH:function(){return this.canvas&&this.canvas.viewportCenterObjectH(this),this},centerV:function(){return this.canvas&&this.canvas.centerObjectV(this),this},viewportCenterV:function(){return this.canvas&&this.canvas.viewportCenterObjectV(this),this},center:function(){return this.canvas&&this.canvas.centerObject(this),this},viewportCenter:function(){return this.canvas&&this.canvas.viewportCenterObject(this),this},remove:function(){return this.canvas&&this.canvas.remove(this),this},getLocalPointer:function(t,i){i=i||this.canvas.getPointer(t);var r=new e.Point(i.x,i.y),n=this._getLeftTopCoords();return this.angle&&(r=e.util.rotatePoint(r,n,o(-this.angle))),{x:r.x-n.x,y:r.y-n.y}},_setupCompositeOperation:function(t){this.globalCompositeOperation&&(t.globalCompositeOperation=this.globalCompositeOperation)}}),e.util.createAccessors(e.Object),e.Object.prototype.rotate=e.Object.prototype.setAngle,i(e.Object.prototype,e.Observable),e.Object.NUM_FRACTION_DIGITS=2,e.Object._fromObject=function(t,i,n,s,o){var a=e[t];if(i=r(i,!0),!s){var h=o?new a(i[o],i):new a(i);return n&&n(h),h}e.util.enlivenPatterns([i.fill,i.stroke],function(t){i.fill=t[0],i.stroke=t[1];var e=o?new a(i[o],i):new a(i);n&&n(e)})},e.Object.__uid=0)}("undefined"!=typeof exports?exports:this),function(){var t=fabric.util.degreesToRadians,e={left:-.5,center:0,right:.5},i={top:-.5,center:0,bottom:.5};fabric.util.object.extend(fabric.Object.prototype,{translateToGivenOrigin:function(t,r,n,s,o){var a,h,c,l=t.x,u=t.y;return"string"==typeof r?r=e[r]:r-=.5,"string"==typeof s?s=e[s]:s-=.5,a=s-r,"string"==typeof n?n=i[n]:n-=.5,"string"==typeof o?o=i[o]:o-=.5,h=o-n,(a||h)&&(c=this._getTransformedDimensions(),l=t.x+a*c.x,u=t.y+h*c.y),new fabric.Point(l,u)},translateToCenterPoint:function(e,i,r){var n=this.translateToGivenOrigin(e,i,r,"center","center");return this.angle?fabric.util.rotatePoint(n,e,t(this.angle)):n},translateToOriginPoint:function(e,i,r){var n=this.translateToGivenOrigin(e,"center","center",i,r);return this.angle?fabric.util.rotatePoint(n,e,t(this.angle)):n},getCenterPoint:function(){var t=new fabric.Point(this.left,this.top);return this.translateToCenterPoint(t,this.originX,this.originY)},getPointByOrigin:function(t,e){var i=this.getCenterPoint();return this.translateToOriginPoint(i,t,e)},toLocalPoint:function(e,i,r){var n,s,o=this.getCenterPoint();return n="undefined"!=typeof i&&"undefined"!=typeof r?this.translateToGivenOrigin(o,"center","center",i,r):new fabric.Point(this.left,this.top),s=new fabric.Point(e.x,e.y),this.angle&&(s=fabric.util.rotatePoint(s,o,-t(this.angle))),s.subtractEquals(n)},setPositionByOrigin:function(t,e,i){var r=this.translateToCenterPoint(t,e,i),n=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",n.x),this.set("top",n.y)},adjustPosition:function(i){var r,n,s=t(this.angle),o=this.getWidth(),a=Math.cos(s)*o,h=Math.sin(s)*o;r="string"==typeof this.originX?e[this.originX]:this.originX-.5,n="string"==typeof i?e[i]:i-.5,this.left+=a*(n-r),this.top+=h*(n-r),this.setCoords(),this.originX=i},_setOriginToCenter:function(){this._originalOriginX=this.originX,this._originalOriginY=this.originY;var t=this.getCenterPoint();this.originX="center",this.originY="center",this.left=t.x,this.top=t.y},_resetOrigin:function(){var t=this.translateToOriginPoint(this.getCenterPoint(),this._originalOriginX,this._originalOriginY);this.originX=this._originalOriginX, -this.originY=this._originalOriginY,this.left=t.x,this.top=t.y,this._originalOriginX=null,this._originalOriginY=null},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","top")}})}(),function(){function t(t){return[new fabric.Point(t.tl.x,t.tl.y),new fabric.Point(t.tr.x,t.tr.y),new fabric.Point(t.br.x,t.br.y),new fabric.Point(t.bl.x,t.bl.y)]}var e=fabric.util.degreesToRadians,i=fabric.util.multiplyTransformMatrices;fabric.util.object.extend(fabric.Object.prototype,{oCoords:null,aCoords:null,getCoords:function(e,i){this.oCoords||this.setCoords();var r=e?this.aCoords:this.oCoords;return t(i?this.calcCoords(e):r)},intersectsWithRect:function(t,e,i,r){var n=this.getCoords(i,r),s=fabric.Intersection.intersectPolygonRectangle(n,t,e);return"Intersection"===s.status},intersectsWithObject:function(t,e,i){var r=fabric.Intersection.intersectPolygonPolygon(this.getCoords(e,i),t.getCoords(e,i));return"Intersection"===r.status||t.isContainedWithinObject(this,e,i)||this.isContainedWithinObject(t,e,i)},isContainedWithinObject:function(t,e,i){for(var r=this.getCoords(e,i),n=0,s=t._getImageLines(i?t.calcCoords(e):e?t.aCoords:t.oCoords);n<4;n++)if(!t.containsPoint(r[n],s))return!1;return!0},isContainedWithinRect:function(t,e,i,r){var n=this.getBoundingRect(i,r);return n.left>=t.x&&n.left+n.width<=e.x&&n.top>=t.y&&n.top+n.height<=e.y},containsPoint:function(t,e,i,r){var e=e||this._getImageLines(r?this.calcCoords(i):i?this.aCoords:this.oCoords),n=this._findCrossPoints(t,e);return 0!==n&&n%2===1},isOnScreen:function(t){if(!this.canvas)return!1;for(var e,i=this.canvas.vptCoords.tl,r=this.canvas.vptCoords.br,n=this.getCoords(!0,t),s=0;s<4;s++)if(e=n[s],e.x<=r.x&&e.x>=i.x&&e.y<=r.y&&e.y>=i.y)return!0;return!1},_getImageLines:function(t){return{topline:{o:t.tl,d:t.tr},rightline:{o:t.tr,d:t.br},bottomline:{o:t.br,d:t.bl},leftline:{o:t.bl,d:t.tl}}},_findCrossPoints:function(t,e){var i,r,n,s,o,a,h=0;for(var c in e)if(a=e[c],!(a.o.y=t.y&&a.d.y>=t.y||(a.o.x===a.d.x&&a.o.x>=t.x?o=a.o.x:(i=0,r=(a.d.y-a.o.y)/(a.d.x-a.o.x),n=t.y-i*t.x,s=a.o.y-r*a.o.x,o=-(n-s)/(i-r)),o>=t.x&&(h+=1),2!==h)))break;return h},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(t,e){var i=this.getCoords(t,e);return fabric.util.makeBoundingBoxFromPoints(i)},getWidth:function(){return this._getTransformedDimensions().x},getHeight:function(){return this._getTransformedDimensions().y},_constrainScale:function(t){return Math.abs(t)0?Math.atan(o/s):0,l=s/Math.cos(c)/2,u=Math.cos(c+i)*l,f=Math.sin(c+i)*l,d=this.getCenterPoint(),g=t?d:fabric.util.transformPoint(d,r),p=new fabric.Point(g.x-u,g.y-f),v=new fabric.Point(p.x+s*h,p.y+s*a),b=new fabric.Point(p.x-o*a,p.y+o*h),m=new fabric.Point(g.x+u,g.y+f);if(!t)var _=new fabric.Point((p.x+b.x)/2,(p.y+b.y)/2),y=new fabric.Point((v.x+p.x)/2,(v.y+p.y)/2),x=new fabric.Point((m.x+v.x)/2,(m.y+v.y)/2),C=new fabric.Point((m.x+b.x)/2,(m.y+b.y)/2),S=new fabric.Point(y.x+a*this.rotatingPointOffset,y.y-h*this.rotatingPointOffset);var g={tl:p,tr:v,br:m,bl:b};return t||(g.ml=_,g.mt=y,g.mr=x,g.mb=C,g.mtr=S),g},setCoords:function(t,e){return this.oCoords=this.calcCoords(t),e||(this.aCoords=this.calcCoords(!0)),t||this._setCornerCoords&&this._setCornerCoords(),this},_calcRotateMatrix:function(){if(this.angle){var t=e(this.angle),i=Math.cos(t),r=Math.sin(t);return[i,r,-r,i,0,0]}return fabric.iMatrix.concat()},calcTransformMatrix:function(t){var e=this.getCenterPoint(),r=[1,0,0,1,e.x,e.y],n=this._calcRotateMatrix(),s=this._calcDimensionsTransformMatrix(this.skewX,this.skewY,!0),o=this.group&&!t?this.group.calcTransformMatrix():fabric.iMatrix.concat();return o=i(o,r),o=i(o,n),o=i(o,s)},_calcDimensionsTransformMatrix:function(t,r,n){var s=[1,0,Math.tan(e(t)),1],o=[1,Math.tan(e(r)),0,1],a=this.scaleX*(n&&this.flipX?-1:1),h=this.scaleY*(n&&this.flipY?-1:1),c=[a,0,0,h],l=i(c,s,!0);return i(l,o,!0)},_getNonTransformedDimensions:function(){var t=this.strokeWidth,e=this.width+t,i=this.height+t;return{x:e,y:i}},_getTransformedDimensions:function(t,e){"undefined"==typeof t&&(t=this.skewX),"undefined"==typeof e&&(e=this.skewY);var i,r,n=this._getNonTransformedDimensions(),s=n.x/2,o=n.y/2,a=[{x:-s,y:-o},{x:s,y:-o},{x:-s,y:o},{x:s,y:o}],h=this._calcDimensionsTransformMatrix(t,e,!1);for(i=0;i\n'),t?t(e.join("")):e.join("")}}),i.Line.ATTRIBUTE_NAMES=i.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),i.Line.fromElement=function(t,e){e=e||{};var n=i.parseAttributes(t,i.Line.ATTRIBUTE_NAMES),s=[n.x1||0,n.y1||0,n.x2||0,n.y2||0];return e.originX="left",e.originY="top",new i.Line(s,r(n,e))},i.Line.fromObject=function(t,e,r){function s(t){delete t.points,e&&e(t)}var o=n(t,!0);o.points=[t.x1,t.y1,t.x2,t.y2];var a=i.Object._fromObject("Line",o,s,r,"points");return a&&delete a.points,a}}("undefined"!=typeof exports?exports:this),function(t){"use strict";function e(t){return"radius"in t&&t.radius>=0}var i=t.fabric||(t.fabric={}),r=Math.PI,n=i.util.object.extend;if(i.Circle)return void i.warn("fabric.Circle is already defined.");var s=i.Object.prototype.cacheProperties.concat();s.push("radius"),i.Circle=i.util.createClass(i.Object,{type:"circle",radius:0,startAngle:0,endAngle:2*r,cacheProperties:s,initialize:function(t){this.callSuper("initialize",t),this.set("radius",t&&t.radius||0)},_set:function(t,e){return this.callSuper("_set",t,e),"radius"===t&&this.setRadius(e),this},toObject:function(t){return this.callSuper("toObject",["radius","startAngle","endAngle"].concat(t))},toSVG:function(t){var e=this._createBaseSVGMarkup(),i=0,n=0,s=(this.endAngle-this.startAngle)%(2*r);if(0===s)this.group&&"path-group"===this.group.type&&(i=this.left+this.radius,n=this.top+this.radius),e.push("\n');else{var o=Math.cos(this.startAngle)*this.radius,a=Math.sin(this.startAngle)*this.radius,h=Math.cos(this.endAngle)*this.radius,c=Math.sin(this.endAngle)*this.radius,l=s>r?"1":"0";e.push('\n')}return t?t(e.join("")):e.join("")},_render:function(t,e){t.beginPath(),t.arc(e?this.left+this.radius:0,e?this.top+this.radius:0,this.radius,this.startAngle,this.endAngle,!1),this._renderFill(t),this._renderStroke(t)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(t){return this.radius=t,this.set("width",2*t).set("height",2*t)}}),i.Circle.ATTRIBUTE_NAMES=i.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),i.Circle.fromElement=function(t,r){r||(r={});var s=i.parseAttributes(t,i.Circle.ATTRIBUTE_NAMES);if(!e(s))throw new Error("value of `r` attribute is required and can not be negative");s.left=s.left||0,s.top=s.top||0;var o=new i.Circle(n(s,r));return o.left-=o.radius,o.top-=o.radius,o},i.Circle.fromObject=function(t,e,r){return i.Object._fromObject("Circle",t,e,r)}}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={});return e.Triangle?void e.warn("fabric.Triangle is already defined"):(e.Triangle=e.util.createClass(e.Object,{type:"triangle",initialize:function(t){this.callSuper("initialize",t),this.set("width",t&&t.width||100).set("height",t&&t.height||100)},_render:function(t){var e=this.width/2,i=this.height/2;t.beginPath(),t.moveTo(-e,i),t.lineTo(0,-i),t.lineTo(e,i),t.closePath(),this._renderFill(t),this._renderStroke(t)},_renderDashedStroke:function(t){var i=this.width/2,r=this.height/2;t.beginPath(),e.util.drawDashedLine(t,-i,r,0,-r,this.strokeDashArray),e.util.drawDashedLine(t,0,-r,i,r,this.strokeDashArray),e.util.drawDashedLine(t,i,r,-i,r,this.strokeDashArray),t.closePath()},toSVG:function(t){var e=this._createBaseSVGMarkup(),i=this.width/2,r=this.height/2,n=[-i+" "+r,"0 "+-r,i+" "+r].join(",");return e.push("'),t?t(e.join("")):e.join("")}}),void(e.Triangle.fromObject=function(t,i,r){return e.Object._fromObject("Triangle",t,i,r)}))}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=2*Math.PI,r=e.util.object.extend;if(e.Ellipse)return void e.warn("fabric.Ellipse is already defined.");var n=e.Object.prototype.cacheProperties.concat();n.push("rx","ry"),e.Ellipse=e.util.createClass(e.Object,{type:"ellipse",rx:0,ry:0,cacheProperties:n,initialize:function(t){this.callSuper("initialize",t),this.set("rx",t&&t.rx||0),this.set("ry",t&&t.ry||0)},_set:function(t,e){switch(this.callSuper("_set",t,e),t){case"rx":this.rx=e,this.set("width",2*e);break;case"ry":this.ry=e,this.set("height",2*e)}return this},getRx:function(){return this.get("rx")*this.get("scaleX")},getRy:function(){return this.get("ry")*this.get("scaleY")},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},toSVG:function(t){var e=this._createBaseSVGMarkup(),i=0,r=0;return this.group&&"path-group"===this.group.type&&(i=this.left+this.rx,r=this.top+this.ry),e.push("\n'),t?t(e.join("")):e.join("")},_render:function(t,e){t.beginPath(),t.save(),t.transform(1,0,0,this.ry/this.rx,0,0),t.arc(e?this.left+this.rx:0,e?(this.top+this.ry)*this.rx/this.ry:0,this.rx,0,i,!1),t.restore(),this._renderFill(t),this._renderStroke(t)}}),e.Ellipse.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),e.Ellipse.fromElement=function(t,i){i||(i={});var n=e.parseAttributes(t,e.Ellipse.ATTRIBUTE_NAMES);n.left=n.left||0,n.top=n.top||0;var s=new e.Ellipse(r(n,i));return s.top-=s.ry,s.left-=s.rx,s},e.Ellipse.fromObject=function(t,i,r){return e.Object._fromObject("Ellipse",t,i,r)}}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend;if(e.Rect)return void e.warn("fabric.Rect is already defined");var r=e.Object.prototype.stateProperties.concat();r.push("rx","ry"),e.Rect=e.util.createClass(e.Object,{stateProperties:r,type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(t){this.callSuper("initialize",t),this._initRxRy()},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(t,e){if(1===this.width&&1===this.height)return void t.fillRect(-.5,-.5,1,1);var i=this.rx?Math.min(this.rx,this.width/2):0,r=this.ry?Math.min(this.ry,this.height/2):0,n=this.width,s=this.height,o=e?this.left:-this.width/2,a=e?this.top:-this.height/2,h=0!==i||0!==r,c=.4477152502;t.beginPath(),t.moveTo(o+i,a),t.lineTo(o+n-i,a),h&&t.bezierCurveTo(o+n-c*i,a,o+n,a+c*r,o+n,a+r),t.lineTo(o+n,a+s-r),h&&t.bezierCurveTo(o+n,a+s-c*r,o+n-c*i,a+s,o+n-i,a+s),t.lineTo(o+i,a+s),h&&t.bezierCurveTo(o+c*i,a+s,o,a+s-c*r,o,a+s-r),t.lineTo(o,a+r),h&&t.bezierCurveTo(o,a+c*r,o+c*i,a,o+i,a),t.closePath(),this._renderFill(t),this._renderStroke(t)},_renderDashedStroke:function(t){var i=-this.width/2,r=-this.height/2,n=this.width,s=this.height;t.beginPath(),e.util.drawDashedLine(t,i,r,i+n,r,this.strokeDashArray),e.util.drawDashedLine(t,i+n,r,i+n,r+s,this.strokeDashArray),e.util.drawDashedLine(t,i+n,r+s,i,r+s,this.strokeDashArray),e.util.drawDashedLine(t,i,r+s,i,r,this.strokeDashArray),t.closePath()},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},toSVG:function(t){var e=this._createBaseSVGMarkup(),i=this.left,r=this.top;return this.group&&"path-group"===this.group.type||(i=-this.width/2,r=-this.height/2),e.push("\n'),t?t(e.join("")):e.join("")}}),e.Rect.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),e.Rect.fromElement=function(t,r){if(!t)return null;r=r||{};var n=e.parseAttributes(t,e.Rect.ATTRIBUTE_NAMES);n.left=n.left||0,n.top=n.top||0;var s=new e.Rect(i(r?e.util.object.clone(r):{},n));return s.visible=s.visible&&s.width>0&&s.height>0,s},e.Rect.fromObject=function(t,i,r){return e.Object._fromObject("Rect",t,i,r)}}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.util.array.min,n=e.util.array.max,s=e.util.toFixed;if(e.Polyline)return void e.warn("fabric.Polyline is already defined");var o=e.Object.prototype.cacheProperties.concat();o.push("points"),e.Polyline=e.util.createClass(e.Object,{type:"polyline",points:null,minX:0,minY:0,cacheProperties:o,initialize:function(t,e){e=e||{},this.points=t||[],this.callSuper("initialize",e),this._calcDimensions(),"top"in e||(this.top=this.minY),"left"in e||(this.left=this.minX),this.pathOffset={x:this.minX+this.width/2,y:this.minY+this.height/2}},_calcDimensions:function(){var t=this.points,e=r(t,"x"),i=r(t,"y"),s=n(t,"x"),o=n(t,"y");this.width=s-e||0,this.height=o-i||0,this.minX=e||0,this.minY=i||0},toObject:function(t){return i(this.callSuper("toObject",t),{points:this.points.concat()})},toSVG:function(t){for(var e,i=[],r=this._createBaseSVGMarkup(),n=0,o=this.points.length;n\n'),t?t(r.join("")):r.join("")},commonRender:function(t,e){var i,r=this.points.length,n=e?0:this.pathOffset.x,s=e?0:this.pathOffset.y;if(!r||isNaN(this.points[r-1].y))return!1;t.beginPath(),t.moveTo(this.points[0].x-n,this.points[0].y-s);for(var o=0;o"},toObject:function(t){var e=n(this.callSuper("toObject",["sourcePath","pathOffset"].concat(t)),{path:this.path.map(function(t){return t.slice()}),top:this.top,left:this.left});return e},toDatalessObject:function(t){var e=this.toObject(t);return this.sourcePath&&(e.path=this.sourcePath),delete e.sourcePath,e},toSVG:function(t){for(var e=[],i=this._createBaseSVGMarkup(),r="",n=0,s=this.path.length;n\n"),t?t(i.join("")):i.join("")},complexity:function(){return this.path.length},_parsePath:function(){for(var t,e,i,r,n,s=[],o=[],c=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:e[-+]?\d+)?)/gi,l=0,u=this.path.length;lp)for(var b=1,m=n.length;b\n");for(var s=0,o=e.length;s\n"),t?t(n.join("")):n.join("")},toString:function(){return"#"},isSameColor:function(){var t=this.getObjects()[0].get("fill")||"";return"string"==typeof t&&(t=t.toLowerCase(),this.getObjects().every(function(e){var i=e.get("fill")||"";return"string"==typeof i&&i.toLowerCase()===t}))},complexity:function(){return this.paths.reduce(function(t,e){return t+(e&&e.complexity?e.complexity():0)},0)},getObjects:function(){return this.paths}}),e.PathGroup.fromObject=function(t,i){var r=t.paths;delete t.paths,"string"==typeof orignalPaths?e.loadSVGFromURL(r,function(n){var s=r,o=e.util.groupSVGElements(n,t,s);t.paths=r,i(o)}):e.util.enlivenObjects(r,function(n){var s=new e.PathGroup(n,t);t.paths=r,i(s)})},void(e.PathGroup.async=!0))}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.util.array.min,n=e.util.array.max;if(!e.Group){var s={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};e.Group=e.util.createClass(e.Object,e.Collection,{type:"group",strokeWidth:0,subTargetCheck:!1,initialize:function(t,e,i){e=e||{},this._objects=[],i&&this.callSuper("initialize",e),this._objects=t||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},e.originX&&(this.originX=e.originX),e.originY&&(this.originY=e.originY),i?this._updateObjectsCoords(!0):(this._calcBounds(),this._updateObjectsCoords(),this.callSuper("initialize",e)),this.setCoords(),this.saveCoords()},_updateObjectsCoords:function(t){for(var e=this.getCenterPoint(),i=this._objects.length;i--;)this._updateObjectCoords(this._objects[i],e,t)},_updateObjectCoords:function(t,e,i){if(t.__origHasControls=t.hasControls,t.hasControls=!1,!i){var r=t.getLeft(),n=t.getTop(),s=!0,o=!0;t.set({left:r-e.x,top:n-e.y}),t.setCoords(s,o)}},toString:function(){return"#"},addWithUpdate:function(t){return this._restoreObjectsState(),e.util.resetObjectTransform(this),t&&(this._objects.push(t),t.group=this,t._set("canvas",this.canvas)),this.forEachObject(this._setObjectActive,this),this._calcBounds(),this._updateObjectsCoords(),this.dirty=!0,this},_setObjectActive:function(t){t.set("active",!0),t.group=this},removeWithUpdate:function(t){return this._restoreObjectsState(),e.util.resetObjectTransform(this),this.forEachObject(this._setObjectActive,this),this.remove(t),this._calcBounds(),this._updateObjectsCoords(),this.dirty=!0,this},_onObjectAdded:function(t){this.dirty=!0,t.group=this,t._set("canvas",this.canvas)},_onObjectRemoved:function(t){this.dirty=!0,delete t.group,t.set("active",!1)},delegatedProperties:{fill:!0,stroke:!0,strokeWidth:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textAlign:!0,backgroundColor:!0},_set:function(t,e){var i=this._objects.length;if(this.delegatedProperties[t]||"canvas"===t)for(;i--;)this._objects[i].set(t,e);else for(;i--;)this._objects[i].setOnGroup(t,e);this.callSuper("_set",t,e)},toObject:function(t){var e=this.getObjects().map(function(e){var i=e.includeDefaultValues;e.includeDefaultValues=e.group.includeDefaultValues;var r=e.toObject(t);return e.includeDefaultValues=i,r});return i(this.callSuper("toObject",t),{objects:e})},render:function(t){this._transformDone=!0,this.callSuper("render",t),this._transformDone=!1},drawObject:function(t){for(var e=0,i=this._objects.length;e\n');for(var i=0,r=this._objects.length;i\n"),t?t(e.join("")):e.join("")},get:function(t){if(t in s){if(this[t])return this[t];for(var e=0,i=this._objects.length;e\n',"\n"),this.stroke||this.strokeDashArray){var o=this.fill;this.fill=null,e.push("\n'),this.fill=o}return e.push("\n"),t?t(e.join("")):e.join("")},getSrc:function(t){var e=t?this._element:this._originalElement;return e?fabric.isLikelyNode?e._src:e.src:this.src||""},setSrc:function(t,e,i){fabric.util.loadImage(t,function(t){return this.setElement(t,e,i)},this,i&&i.crossOrigin)},toString:function(){return'#'},applyFilters:function(t,e,i,r){if(e=e||this.filters,i=i||this._originalElement){var n,s,o=fabric.util.createImage(),a=this.canvas?this.canvas.getRetinaScaling():fabric.devicePixelRatio,h=this.minimumScaleTrigger/a,c=this;if(0===e.length)return this._element=i,t&&t(this),i;var l=fabric.util.createCanvasElement();return l.width=i.width,l.height=i.height,l.getContext("2d").drawImage(i,0,0,i.width,i.height),e.forEach(function(t){t&&(r?(n=c.scaleX0?90*Math.round((t-1)/90):90*Math.round(t/90)},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(t){t=t||{};var e=function(){},i=t.onComplete||e,r=t.onChange||e,n=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(t){n.setAngle(t),r()},onComplete:function(){n.setCoords(),i()},onStart:function(){n.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(t){return t.straighten(),this.renderAll(),this},fxStraightenObject:function(t){return t.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.BaseFilter=fabric.util.createClass({type:"BaseFilter",initialize:function(t){t&&this.setOptions(t)},setOptions:function(t){for(var e in t)this[e]=t[e]},toObject:function(){return{type:this.type}},toJSON:function(){return this.toObject()}}),fabric.Image.filters.BaseFilter.fromObject=function(t,e){var i=new fabric.Image.filters[t.type](t);return e&&e(i),i},function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.Image.filters,n=e.util.createClass;r.Brightness=n(r.BaseFilter,{type:"Brightness",initialize:function(t){t=t||{},this.brightness=t.brightness||0},applyTo:function(t){for(var e=t.getContext("2d"),i=e.getImageData(0,0,t.width,t.height),r=i.data,n=this.brightness,s=0,o=r.length;sb||o<0||o>v||(h=4*(a*v+o),c=l[S*d+w],e+=p[h]*c,i+=p[h+1]*c,r+=p[h+2]*c,n+=p[h+3]*c);_[s]=e,_[s+1]=i,_[s+2]=r,_[s+3]=n+y*(255-n)}u.putImageData(m,0,0)},toObject:function(){return i(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),e.Image.filters.Convolute.fromObject=e.Image.filters.BaseFilter.fromObject}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.Image.filters,n=e.util.createClass;r.GradientTransparency=n(r.BaseFilter,{type:"GradientTransparency",initialize:function(t){t=t||{},this.threshold=t.threshold||100},applyTo:function(t){for(var e=t.getContext("2d"),i=e.getImageData(0,0,t.width,t.height),r=i.data,n=this.threshold,s=r.length,o=0,a=r.length;o-1?t.channel:0},applyTo:function(t){if(this.mask){var i,r=t.getContext("2d"),n=r.getImageData(0,0,t.width,t.height),s=n.data,o=this.mask.getElement(),a=e.util.createCanvasElement(),h=this.channel,c=n.width*n.height*4;a.width=t.width,a.height=t.height,a.getContext("2d").drawImage(o,0,0,t.width,t.height);var l=a.getContext("2d").getImageData(0,0,t.width,t.height),u=l.data;for(i=0;ic&&i>c&&r>c&&l(e-i)i&&(l=2,f=-1),a>n&&(u=2,d=-1),h=c.getImageData(0,0,i,n),t.width=o(s,i),t.height=o(a,n),c.putImageData(h,0,0);!g||!p;)i=v,n=b,s*ft)return 0;if(e*=Math.PI,s(e)<1e-16)return 1;var i=e/t;return h(e)*h(i)/e/i}}function f(t){var h,c,u,d,g,k,M,P,A,D,E;for(T.x=(t+.5)*_,j.x=r(T.x),h=0;h=e)){D=r(1e3*s(c-T.x)),O[D]||(O[D]={});for(var I=j.y-w;I<=j.y+w;I++)I<0||I>=o||(E=r(1e3*s(I-T.y)),O[D][E]||(O[D][E]=m(n(i(D*x,2)+i(E*C,2))/1e3)),u=O[D][E],u>0&&(d=4*(I*e+c),g+=u,k+=u*v[d],M+=u*v[d+1],P+=u*v[d+2],A+=u*v[d+3]))}d=4*(h*a+t),b[d]=k/g,b[d+1]=M/g,b[d+2]=P/g,b[d+3]=A/g}return++t1&&L<-1||(x=2*L*L*L-3*L*L+1,x>0&&(I=4*(E+M*e),j+=x*p[I+3],S+=x,p[I+3]<255&&(x=x*p[I+3]/250),w+=x*p[I],O+=x*p[I+1],T+=x*p[I+2],C+=x))}b[y]=w/C,b[y+1]=O/C,b[y+2]=T/C,b[y+3]=j/S}return v},toObject:function(){return{type:this.type,scaleX:this.scaleX,scaleY:this.scaleY,resizeType:this.resizeType,lanczosLobes:this.lanczosLobes}}}),e.Image.filters.Resize.fromObject=e.Image.filters.BaseFilter.fromObject}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.Image.filters,n=e.util.createClass;r.ColorMatrix=n(r.BaseFilter,{type:"ColorMatrix",initialize:function(t){t||(t={}),this.matrix=t.matrix||[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0]},applyTo:function(t){var e,i,r,n,s,o=t.getContext("2d"),a=o.getImageData(0,0,t.width,t.height),h=a.data,c=h.length,l=this.matrix;for(e=0;e'},_getCacheCanvasDimensions:function(){var t=this.callSuper("_getCacheCanvasDimensions"),e=2*Math.ceil(this.fontSize);return t.width+=e,t.height+=e,t},_render:function(t){this._setTextStyles(t),this.group&&"path-group"===this.group.type&&t.translate(this.left,this.top),this._renderTextLinesBackground(t),this._renderText(t),this._renderTextDecoration(t)},_renderText:function(t){this._renderTextFill(t),this._renderTextStroke(t)},_setTextStyles:function(t){t.textBaseline="alphabetic",t.font=this._getFontDeclaration()},_getTextHeight:function(){return this._getHeightOfSingleLine()+(this._textLines.length-1)*this._getHeightOfLine()},_getTextWidth:function(t){for(var e=this._getLineWidth(t,0),i=1,r=this._textLines.length;ie&&(e=n)}return e},_renderChars:function(t,e,i,r,n){var s,o,a=t.slice(0,-4);if(this[a].toLive){var h=-this.width/2+this[a].offsetX||0,c=-this.height/2+this[a].offsetY||0;e.save(),e.translate(h,c),r-=h,n-=c}if(0!==this.charSpacing){var l=this._getWidthOfCharSpacing();i=i.split("");for(var u=0,f=i.length;u0?o:0}else e[t](i,r,n);this[a].toLive&&e.restore()},_renderTextLine:function(t,e,i,r,n,s){n-=this.fontSize*this._fontSizeFraction;var o=this._getLineWidth(e,s);if("justify"!==this.textAlign||this.width0?u/f:0,g=0,p=0,v=h.length;p0?n:0},_getLeftOffset:function(){return-this.width/2},_getTopOffset:function(){return-this.height/2},isEmptyStyles:function(){return!0},_renderTextCommon:function(t,e){for(var i=0,r=this._getLeftOffset(),n=this._getTopOffset(),s=0,o=this._textLines.length;s0&&(r=this._getLineLeftOffset(i),t.fillRect(this._getLeftOffset()+r,this._getTopOffset()+n,i,e/this.lineHeight)),n+=e;t.fillStyle=s,this._removeShadow(t)}},_getLineLeftOffset:function(t){return"center"===this.textAlign?(this.width-t)/2:"right"===this.textAlign?this.width-t:0},_clearCache:function(){this.__lineWidths=[],this.__lineHeights=[]},_shouldClearDimensionCache:function(){var t=this._forceClearCache;return t||(t=this.hasStateChanged("_dimensionAffectingProps")),t&&(this.saveState({propertySet:"_dimensionAffectingProps"}),this.dirty=!0),t},_getLineWidth:function(t,e){if(this.__lineWidths[e])return this.__lineWidths[e]===-1?this.width:this.__lineWidths[e];var i,r,n=this._textLines[e];return i=""===n?0:this._measureLine(t,e),this.__lineWidths[e]=i,i&&"justify"===this.textAlign&&(r=n.split(/\s+/),r.length>1&&(this.__lineWidths[e]=-1)),i},_getWidthOfCharSpacing:function(){return 0!==this.charSpacing?this.fontSize*this.charSpacing/1e3:0},_measureLine:function(t,e){var i,r,n=this._textLines[e],s=t.measureText(n).width,o=0;return 0!==this.charSpacing&&(i=n.split("").length,o=(i-1)*this._getWidthOfCharSpacing()),r=s+o,r>0?r:0},_renderTextDecoration:function(t){function e(e){var n,s,o,a,h,c,l,u=0;for(n=0,s=r._textLines.length;n-1&&n.push(.85),this.textDecoration.indexOf("line-through")>-1&&n.push(.43),this.textDecoration.indexOf("overline")>-1&&n.push(-.12),n.length>0&&e(n)}},_getFontDeclaration:function(){return[e.isLikelyNode?this.fontWeight:this.fontStyle,e.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",e.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(t,e){this.visible&&(this._shouldClearDimensionCache()&&(this._setTextStyles(t),this._initDimensions(t)),this.callSuper("render",t,e))},_splitTextIntoLines:function(){return this.text.split(this._reNewline)},toObject:function(t){var e=["text","fontSize","fontWeight","fontFamily","fontStyle","lineHeight","textDecoration","textAlign","textBackgroundColor","charSpacing"].concat(t);return this.callSuper("toObject",e)},toSVG:function(t){this.ctx||(this.ctx=e.util.createCanvasElement().getContext("2d"));var i=this._createBaseSVGMarkup(),r=this._getSVGLeftTopOffsets(this.ctx),n=this._getSVGTextAndBg(r.textTop,r.textLeft);return this._wrapSVGTextAndBg(i,n),t?t(i.join("")):i.join("")},_getSVGLeftTopOffsets:function(t){var e=this._getHeightOfLine(t,0),i=-this.width/2,r=0;return{textLeft:i+(this.group&&"path-group"===this.group.type?this.left:0),textTop:r+(this.group&&"path-group"===this.group.type?-this.top:0),lineTop:e}},_wrapSVGTextAndBg:function(t,e){var i=!0,r=this.getSvgFilter(),n=""===r?"":' style="'+r+'"';t.push("\t\n",e.textBgRects.join(""),"\t\t\n',e.textSpans.join(""),"\t\t\n","\t\n")},_getSVGTextAndBg:function(t,e){var i=[],r=[],n=0;this._setSVGBg(r);for(var s=0,o=this._textLines.length;s",e.util.string.escapeXml(this._textLines[t]),"\n")},_setSVGTextLineJustifed:function(t,n,s,o){var a=e.util.createCanvasElement().getContext("2d");this._setTextStyles(a);var h,c,l=this._textLines[t],u=l.split(/\s+/),f=this._getWidthOfWords(a,u.join("")),d=this.width-f,g=u.length-1,p=g>0?d/g:0,v=this._getFillAttributes(this.fill);for(o+=this._getLineLeftOffset(this._getLineWidth(a,t)),t=0,c=u.length;t",e.util.string.escapeXml(h),"\n"),o+=this._getWidthOfWords(a,h)+p},_setSVGTextLineBg:function(t,e,n,s,o){t.push("\t\t\n')},_setSVGBg:function(t){this.backgroundColor&&t.push("\t\t\n')},_getFillAttributes:function(t){var i=t&&"string"==typeof t?new e.Color(t):"";return i&&i.getSource()&&1!==i.getAlpha()?'opacity="'+i.getAlpha()+'" fill="'+i.setAlpha(1).toRgb()+'"':'fill="'+t+'"'},_set:function(t,e){this.callSuper("_set",t,e),this._dimensionAffectingProps.indexOf(t)>-1&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),e.Text.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x y dx dy font-family font-style font-weight font-size text-decoration text-anchor".split(" ")),e.Text.DEFAULT_SVG_FONT_SIZE=16,e.Text.fromElement=function(t,i){if(!t)return null;var r=e.parseAttributes(t,e.Text.ATTRIBUTE_NAMES);i=e.util.object.extend(i?e.util.object.clone(i):{},r),i.top=i.top||0,i.left=i.left||0,"dx"in r&&(i.left+=r.dx),"dy"in r&&(i.top+=r.dy),"fontSize"in i||(i.fontSize=e.Text.DEFAULT_SVG_FONT_SIZE),i.originX||(i.originX="left");var n="";"textContent"in t?n=t.textContent:"firstChild"in t&&null!==t.firstChild&&"data"in t.firstChild&&null!==t.firstChild.data&&(n=t.firstChild.data),n=n.replace(/^\s+|\s+$|\n+/g,"").replace(/\s+/g," ");var s=new e.Text(n,i),o=s.getHeight()/s.height,a=(s.height+s.strokeWidth)*s.lineHeight-s.height,h=a*o,c=s.getHeight()+h,l=0;return"left"===s.originX&&(l=s.getWidth()/2),"right"===s.originX&&(l=-s.getWidth()/2),s.set({left:s.getLeft()+l,top:s.getTop()-c/2+s.fontSize*(.18+s._fontSizeFraction)/s.lineHeight}),s},e.Text.fromObject=function(t,i,r){return e.Object._fromObject("Text",t,i,r,"text")},e.util.createAccessors(e.Text)}("undefined"!=typeof exports?exports:this),function(){var t=fabric.util.object.clone;fabric.IText=fabric.util.createClass(fabric.Text,fabric.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"#333",cursorDelay:1e3,cursorDuration:600,styles:null,caching:!0,_reSpace:/\s|\n/,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,__widthOfSpace:[],initialize:function(t,e){this.styles=e?e.styles||{}:{},this.callSuper("initialize",t,e),this.initBehavior()},_clearCache:function(){this.callSuper("_clearCache"),this.__widthOfSpace=[]},isEmptyStyles:function(){if(!this.styles)return!0;var t=this.styles;for(var e in t)for(var i in t[e])for(var r in t[e][i])return!1;return!0},setSelectionStart:function(t){t=Math.max(t,0),this._updateAndFire("selectionStart",t)},setSelectionEnd:function(t){t=Math.min(t,this.text.length),this._updateAndFire("selectionEnd",t)},_updateAndFire:function(t,e){this[t]!==e&&(this._fireSelectionChanged(),this[t]=e),this._updateTextarea()},_fireSelectionChanged:function(){this.fire("selection:changed"),this.canvas&&this.canvas.fire("text:selection:changed",{target:this})},getSelectionStyles:function(t,e){if(2===arguments.length){for(var i=[],r=t;r0?a:0,lineLeft:r},this.cursorOffsetCache=i,this.cursorOffsetCache},renderCursor:function(t,e){var i=this.get2DCursorLocation(),r=i.lineIndex,n=i.charIndex,s=this.getCurrentCharFontSize(r,n),o=0===r&&0===n?this._getLineLeftOffset(this._getLineWidth(e,r)):t.leftOffset,a=this.scaleX*this.canvas.getZoom(),h=this.cursorWidth/a;e.fillStyle=this.getCurrentCharColor(r,n),e.globalAlpha=this.__isMousedown?1:this._currentCursorOpacity,e.fillRect(t.left+o-h/2,t.top+t.topOffset,h,s)},renderSelection:function(t,e,i){i.fillStyle=this.selectionColor;for(var r=this.get2DCursorLocation(this.selectionStart),n=this.get2DCursorLocation(this.selectionEnd),s=r.lineIndex,o=n.lineIndex,a=s;a<=o;a++){var h=this._getLineLeftOffset(this._getLineWidth(i,a))||0,c=this._getHeightOfLine(this.ctx,a),l=0,u=0,f=this._textLines[a];if(a===s){for(var d=0,g=f.length;d=r.charIndex&&(a!==o||ds&&a1)&&(c/=this.lineHeight),i.fillRect(e.left+h,e.top+e.topOffset,u>0?u:0,c),e.topOffset+=l}},_renderChars:function(t,e,i,r,n,s,o){if(this.isEmptyStyles())return this._renderCharsFast(t,e,i,r,n);o=o||0;var a,h,c=this._getHeightOfLine(e,s),l="";e.save(),n-=c/this.lineHeight*this._fontSizeFraction;for(var u=o,f=i.length+o;u<=f;u++)a=a||this.getCurrentCharStyle(s,u),h=this.getCurrentCharStyle(s,u+1),(this._hasStyleChanged(a,h)||u===f)&&(this._renderChar(t,e,s,u-1,l,r,n,c),l="",a=h),l+=i[u-o];e.restore()},_renderCharsFast:function(t,e,i,r,n){"fillText"===t&&this.fill&&this.callSuper("_renderChars",t,e,i,r,n),"strokeText"===t&&(this.stroke&&this.strokeWidth>0||this.skipFillStrokeCheck)&&this.callSuper("_renderChars",t,e,i,r,n)},_renderChar:function(t,e,i,r,n,s,o,a){var h,c,l,u,f,d,g,p,v,b=this._getStyleDeclaration(i,r);if(b?(c=this._getHeightOfChar(e,n,i,r),u=b.stroke,l=b.fill,d=b.textDecoration):c=this.fontSize,u=(u||this.stroke)&&"strokeText"===t,l=(l||this.fill)&&"fillText"===t,b&&e.save(),h=this._applyCharStylesGetWidth(e,n,i,r,b||null),d=d||this.textDecoration,b&&b.textBackgroundColor&&this._removeShadow(e),0!==this.charSpacing){p=this._getWidthOfCharSpacing(),g=n.split(""),h=0;for(var m,_=0,y=g.length;_0?v:0}else l&&e.fillText(n,s,o),u&&e.strokeText(n,s,o);(d||""!==d)&&(f=this._fontSizeFraction*a/this.lineHeight,this._renderCharDecoration(e,d,s,o,f,h,c)),b&&e.restore(),e.translate(h,0)},_hasStyleChanged:function(t,e){return t.fill!==e.fill||t.fontSize!==e.fontSize||t.textBackgroundColor!==e.textBackgroundColor||t.textDecoration!==e.textDecoration||t.fontFamily!==e.fontFamily||t.fontWeight!==e.fontWeight||t.fontStyle!==e.fontStyle||t.stroke!==e.stroke||t.strokeWidth!==e.strokeWidth},_renderCharDecoration:function(t,e,i,r,n,s,o){if(e){var a,h,c=o/15,l={underline:r+o/10,"line-through":r-o*(this._fontSizeFraction+this._fontSizeMult-1)+c,overline:r-(this._fontSizeMult-this._fontSizeFraction)*o},u=["underline","line-through","overline"];for(a=0;a-1&&t.fillRect(i,l[h],s,c)}},_renderTextLine:function(t,e,i,r,n,s){this.isEmptyStyles()||(n+=this.fontSize*(this._fontSizeFraction+.03)),this.callSuper("_renderTextLine",t,e,i,r,n,s)},_renderTextDecoration:function(t){if(this.isEmptyStyles())return this.callSuper("_renderTextDecoration",t)},_renderTextLinesBackground:function(t){this.callSuper("_renderTextLinesBackground",t);var e,i,r,n,s,o,a,h,c,l,u=0,f=this._getLeftOffset(),d=this._getTopOffset(),g="";t.save();for(var p=0,v=this._textLines.length;p0?n:0},_getHeightOfChar:function(t,e,i){var r=this._getStyleDeclaration(e,i);return r&&r.fontSize?r.fontSize:this.fontSize},_getWidthOfCharsAt:function(t,e,i){var r,n,s=0;for(r=0;r0?i:0},_getWidthOfSpace:function(t,e){if(this.__widthOfSpace[e])return this.__widthOfSpace[e];var i=this._textLines[e],r=this._getWidthOfWords(t,i,e,0),n=this.width-r,s=i.length-i.replace(this._reSpacesAndTabs,"").length,o=Math.max(n/s,t.measureText(" ").width);return this.__widthOfSpace[e]=o,o},_getWidthOfWords:function(t,e,i,r){for(var n=0,s=0;sr&&(r=o)}return this.__lineHeights[e]=r*this.lineHeight*this._fontSizeMult,this.__lineHeights[e]},_getTextHeight:function(t){for(var e,i=0,r=0,n=this._textLines.length;r-1;)e++,i--;return t-e},findWordBoundaryRight:function(t){var e=0,i=t;if(this._reSpace.test(this.text.charAt(i)))for(;this._reSpace.test(this.text.charAt(i));)e++,i++;for(;/\S/.test(this.text.charAt(i))&&i-1;)e++,i--;return t-e},findLineBoundaryRight:function(t){for(var e=0,i=t;!/\n/.test(this.text.charAt(i))&&i0&&ithis.__selectionStartOnMouseDown?(this.selectionStart=this.__selectionStartOnMouseDown,this.selectionEnd=e):(this.selectionStart=e,this.selectionEnd=this.__selectionStartOnMouseDown),this.selectionStart===i&&this.selectionEnd===r||(this.restartCursorIfNeeded(),this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()))}},_setEditingProps:function(){this.hoverCursor="text",this.canvas&&(this.canvas.defaultCursor=this.canvas.moveCursor="text"),this.borderColor=this.editingBorderColor,this.hasControls=this.selectable=!1,this.lockMovementX=this.lockMovementY=!0},_updateTextarea:function(){if(this.hiddenTextarea&&!this.inCompositionMode&&(this.cursorOffsetCache={},this.hiddenTextarea.value=this.text,this.hiddenTextarea.selectionStart=this.selectionStart,this.hiddenTextarea.selectionEnd=this.selectionEnd,this.selectionStart===this.selectionEnd)){var t=this._calcTextareaPosition();this.hiddenTextarea.style.left=t.left,this.hiddenTextarea.style.top=t.top,this.hiddenTextarea.style.fontSize=t.fontSize}},_calcTextareaPosition:function(){if(!this.canvas)return{x:1,y:1};var t=this.text.split(""),e=this._getCursorBoundaries(t,"cursor"),i=this.get2DCursorLocation(),r=i.lineIndex,n=i.charIndex,s=this.getCurrentCharFontSize(r,n),o=0===r&&0===n?this._getLineLeftOffset(this._getLineWidth(this.ctx,r)):e.leftOffset,a=this.calcTransformMatrix(),h={x:e.left+o,y:e.top+e.topOffset+s},c=this.canvas.upperCanvasEl,l=c.width-s,u=c.height-s;return h=fabric.util.transformPoint(h,a),h=fabric.util.transformPoint(h,this.canvas.viewportTransform),h.x<0&&(h.x=0),h.x>l&&(h.x=l),h.y<0&&(h.y=0),h.y>u&&(h.y=u),h.x+=this.canvas._offset.left,h.y+=this.canvas._offset.top,{left:h.x+"px",top:h.y+"px",fontSize:s}},_saveEditingProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,defaultCursor:this.canvas&&this.canvas.defaultCursor,moveCursor:this.canvas&&this.canvas.moveCursor}},_restoreEditingProps:function(){this._savedProps&&(this.hoverCursor=this._savedProps.overCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY,this.canvas&&(this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor))},exitEditing:function(){var t=this._textBeforeEdit!==this.text;return this.selected=!1,this.isEditing=!1,this.selectable=!0,this.selectionEnd=this.selectionStart,this.hiddenTextarea&&(this.hiddenTextarea.blur&&this.hiddenTextarea.blur(),this.canvas&&this.hiddenTextarea.parentNode.removeChild(this.hiddenTextarea),this.hiddenTextarea=null),this.abortCursorAnimation(),this._restoreEditingProps(),this._currentCursorOpacity=0,this.fire("editing:exited"),t&&this.fire("modified"),this.canvas&&(this.canvas.off("mouse:move",this.mouseMoveHandler),this.canvas.fire("text:editing:exited",{target:this}),t&&this.canvas.fire("object:modified",{target:this})),this},_removeExtraneousStyles:function(){for(var t in this.styles)this._textLines[t]||delete this.styles[t]},_removeCharsFromTo:function(t,e){for(;e!==t;)this._removeSingleCharAndStyle(t+1),e--;this.selectionStart=t,this.selectionEnd=t},_removeSingleCharAndStyle:function(t){var e="\n"===this.text[t-1],i=e?t:t-1;this.removeStyleObject(e,i),this.text=this.text.slice(0,t-1)+this.text.slice(t),this._textLines=this._splitTextIntoLines()},insertChars:function(t,e){var i;if(this.selectionEnd-this.selectionStart>1&&this._removeCharsFromTo(this.selectionStart,this.selectionEnd),!e&&this.isEmptyStyles())return void this.insertChar(t,!1);for(var r=0,n=t.length;r=i&&(s[parseInt(o,10)-i]=this.styles[e][o],delete this.styles[e][o]);this.styles[e+1]=s}this._forceClearCache=!0},insertCharStyleObject:function(e,i,r){var n=this.styles[e],s=t(n);0!==i||r||(i=1);for(var o in s){var a=parseInt(o,10);a>=i&&(n[a+1]=s[a],s[a-1]||delete n[a])}this.styles[e][i]=r||t(n[i-1]),this._forceClearCache=!0},insertStyleObjects:function(t,e,i){var r=this.get2DCursorLocation(),n=r.lineIndex,s=r.charIndex;this._getLineStyle(n)||this._setLineStyle(n,{}),"\n"===t?this.insertNewlineStyleObject(n,s,e):this.insertCharStyleObject(n,s,i)},shiftLineStyles:function(e,i){var r=t(this.styles);for(var n in this.styles){var s=parseInt(n,10);s>e&&(this.styles[s+i]=r[s],r[s-i]||delete this.styles[s])}},removeStyleObject:function(t,e){var i=this.get2DCursorLocation(e),r=i.lineIndex,n=i.charIndex;this._removeStyleObject(t,i,r,n)},_getTextOnPreviousLine:function(t){return this._textLines[t-1]},_removeStyleObject:function(e,i,r,n){if(e){var s=this._getTextOnPreviousLine(i.lineIndex),o=s?s.length:0;this.styles[r-1]||(this.styles[r-1]={});for(n in this.styles[r])this.styles[r-1][parseInt(n,10)+o]=this.styles[r][n];this.shiftLineStyles(i.lineIndex,-1)}else{var a=this.styles[r];a&&delete a[n];var h=t(a);for(var c in h){var l=parseInt(c,10);l>=n&&0!==l&&(a[l-1]=h[l],delete a[l])}}},insertNewline:function(){this.insertChars("\n")},setSelectionStartEndWithShift:function(t,e,i){i<=t?(e===t?this._selectionDirection="left":"right"===this._selectionDirection&&(this._selectionDirection="left",this.selectionEnd=t),this.selectionStart=i):i>t&&it?this.selectionStart=t:this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd>t?this.selectionEnd=t:this.selectionEnd<0&&(this.selectionEnd=0)}})}(),fabric.util.object.extend(fabric.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+new Date,this.__lastLastClickTime=+new Date,this.__lastPointer={},this.on("mousedown",this.onMouseDown.bind(this))},onMouseDown:function(t){this.__newClickTime=+new Date;var e=this.canvas.getPointer(t.e);this.isTripleClick(e)?(this.fire("tripleclick",t),this._stopEvent(t.e)):this.isDoubleClick(e)&&(this.fire("dblclick",t),this._stopEvent(t.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=e,this.__lastIsEditing=this.isEditing,this.__lastSelected=this.selected},isDoubleClick:function(t){return this.__newClickTime-this.__lastClickTime<500&&this.__lastPointer.x===t.x&&this.__lastPointer.y===t.y&&this.__lastIsEditing},isTripleClick:function(t){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===t.x&&this.__lastPointer.y===t.y},_stopEvent:function(t){t.preventDefault&&t.preventDefault(),t.stopPropagation&&t.stopPropagation()},initCursorSelectionHandlers:function(){this.initMousedownHandler(),this.initMouseupHandler(),this.initClicks()},initClicks:function(){this.on("dblclick",function(t){this.selectWord(this.getSelectionStartFromPointer(t.e))}),this.on("tripleclick",function(t){this.selectLine(this.getSelectionStartFromPointer(t.e))})},initMousedownHandler:function(){this.on("mousedown",function(t){if(this.editable){var e=this.canvas.getPointer(t.e);this.__mousedownX=e.x,this.__mousedownY=e.y,this.__isMousedown=!0,this.selected&&this.setCursorByClick(t.e),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.selectionStart===this.selectionEnd&&this.abortCursorAnimation(),this.renderCursorOrSelection())}})},_isObjectMoved:function(t){var e=this.canvas.getPointer(t);return this.__mousedownX!==e.x||this.__mousedownY!==e.y},initMouseupHandler:function(){this.on("mouseup",function(t){this.__isMousedown=!1,this.editable&&!this._isObjectMoved(t.e)&&(this.__lastSelected&&!this.__corner&&(this.enterEditing(t.e),this.selectionStart===this.selectionEnd?this.initDelayedCursor(!0):this.renderCursorOrSelection()),this.selected=!0)})},setCursorByClick:function(t){var e=this.getSelectionStartFromPointer(t),i=this.selectionStart,r=this.selectionEnd;t.shiftKey?this.setSelectionStartEndWithShift(i,r,e):(this.selectionStart=e,this.selectionEnd=e),this.isEditing&&(this._fireSelectionChanged(),this._updateTextarea())},getSelectionStartFromPointer:function(t){for(var e,i,r=this.getLocalPointer(t),n=0,s=0,o=0,a=0,h=0,c=this._textLines.length;hs?0:1,h=r+a;return this.flipX&&(h=n-h),h>this.text.length&&(h=this.text.length),h}}),fabric.util.object.extend(fabric.IText.prototype,{initHiddenTextarea:function(){this.hiddenTextarea=fabric.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off");var t=this._calcTextareaPosition();this.hiddenTextarea.style.cssText="position: absolute; top: "+t.top+"; left: "+t.left+"; opacity: 0; width: 0px; height: 0px; z-index: -999;",fabric.document.body.appendChild(this.hiddenTextarea),fabric.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this)),fabric.util.addListener(this.hiddenTextarea,"keyup",this.onKeyUp.bind(this)),fabric.util.addListener(this.hiddenTextarea,"input",this.onInput.bind(this)),fabric.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this)),fabric.util.addListener(this.hiddenTextarea,"cut",this.cut.bind(this)),fabric.util.addListener(this.hiddenTextarea,"paste",this.paste.bind(this)),fabric.util.addListener(this.hiddenTextarea,"compositionstart",this.onCompositionStart.bind(this)),fabric.util.addListener(this.hiddenTextarea,"compositionupdate",this.onCompositionUpdate.bind(this)),fabric.util.addListener(this.hiddenTextarea,"compositionend",this.onCompositionEnd.bind(this)),!this._clickHandlerInitialized&&this.canvas&&(fabric.util.addListener(this.canvas.upperCanvasEl,"click",this.onClick.bind(this)),this._clickHandlerInitialized=!0)},_keysMap:{8:"removeChars",9:"exitEditing",27:"exitEditing",13:"insertNewline",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorRight",36:"moveCursorLeft",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown",46:"forwardDelete"},_ctrlKeysMapUp:{67:"copy",88:"cut"},_ctrlKeysMapDown:{65:"selectAll"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(t){if(this.isEditing){if(t.keyCode in this._keysMap)this[this._keysMap[t.keyCode]](t);else{if(!(t.keyCode in this._ctrlKeysMapDown&&(t.ctrlKey||t.metaKey)))return;this[this._ctrlKeysMapDown[t.keyCode]](t)}t.stopImmediatePropagation(),t.preventDefault(),t.keyCode>=33&&t.keyCode<=40?(this.clearContextTop(),this.renderCursorOrSelection()):this.canvas&&this.canvas.renderAll()}},onKeyUp:function(t){return!this.isEditing||this._copyDone?void(this._copyDone=!1):void(t.keyCode in this._ctrlKeysMapUp&&(t.ctrlKey||t.metaKey)&&(this[this._ctrlKeysMapUp[t.keyCode]](t),t.stopImmediatePropagation(),t.preventDefault(),this.canvas&&this.canvas.renderAll()))},onInput:function(t){if(this.isEditing&&!this.inCompositionMode){var e,i,r,n=this.selectionStart||0,s=this.selectionEnd||0,o=this.text.length,a=this.hiddenTextarea.value.length;a>o?(r="left"===this._selectionDirection?s:n,e=a-o,i=this.hiddenTextarea.value.slice(r,r+e)):(e=a-o+s-n,i=this.hiddenTextarea.value.slice(n,n+e)),this.insertChars(i),t.stopPropagation()}},onCompositionStart:function(){this.inCompositionMode=!0,this.prevCompositionLength=0,this.compositionStart=this.selectionStart},onCompositionEnd:function(){this.inCompositionMode=!1},onCompositionUpdate:function(t){var e=t.data;this.selectionStart=this.compositionStart,this.selectionEnd=this.selectionEnd===this.selectionStart?this.compositionStart+this.prevCompositionLength:this.selectionEnd,this.insertChars(e,!1),this.prevCompositionLength=e.length},forwardDelete:function(t){if(this.selectionStart===this.selectionEnd){if(this.selectionStart===this.text.length)return;this.moveCursorRight(t)}this.removeChars(t)},copy:function(t){if(this.selectionStart!==this.selectionEnd){var e=this.getSelectedText(),i=this._getClipboardData(t);i&&i.setData("text",e),fabric.copiedText=e,fabric.copiedTextStyle=this.getSelectionStyles(this.selectionStart,this.selectionEnd),t.stopImmediatePropagation(),t.preventDefault(),this._copyDone=!0}},paste:function(t){var e=null,i=this._getClipboardData(t),r=!0;i?(e=i.getData("text").replace(/\r/g,""),fabric.copiedTextStyle&&fabric.copiedText===e||(r=!1)):e=fabric.copiedText,e&&this.insertChars(e,r),t.stopImmediatePropagation(),t.preventDefault()},cut:function(t){this.selectionStart!==this.selectionEnd&&(this.copy(t),this.removeChars(t))},_getClipboardData:function(t){return t&&t.clipboardData||fabric.window.clipboardData},_getWidthBeforeCursor:function(t,e){for(var i,r=this._textLines[t].slice(0,e),n=this._getLineWidth(this.ctx,t),s=this._getLineLeftOffset(n),o=0,a=r.length;oe){i=!0;var f=o-u,d=o,g=Math.abs(f-e),p=Math.abs(d-e);a=p=this.text.length&&this.selectionEnd>=this.text.length||this._moveCursorUpOrDown("Down",t)},moveCursorUp:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorUpOrDown("Up",t)},_moveCursorUpOrDown:function(t,e){var i="get"+t+"CursorOffset",r=this[i](e,"right"===this._selectionDirection);e.shiftKey?this.moveCursorWithShift(r):this.moveCursorWithoutShift(r),0!==r&&(this.setSelectionInBoundaries(),this.abortCursorAnimation(),this._currentCursorOpacity=1,this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorWithShift:function(t){var e="left"===this._selectionDirection?this.selectionStart+t:this.selectionEnd+t;return this.setSelectionStartEndWithShift(this.selectionStart,this.selectionEnd,e),0!==t},moveCursorWithoutShift:function(t){return t<0?(this.selectionStart+=t,this.selectionEnd=this.selectionStart):(this.selectionEnd+=t,this.selectionStart=this.selectionEnd),0!==t},moveCursorLeft:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorLeftOrRight("Left",t)},_move:function(t,e,i){var r;if(t.altKey)r=this["findWordBoundary"+i](this[e]);else{if(!t.metaKey&&35!==t.keyCode&&36!==t.keyCode)return this[e]+="Left"===i?-1:1,!0;r=this["findLineBoundary"+i](this[e])}if(void 0!==typeof r&&this[e]!==r)return this[e]=r,!0},_moveLeft:function(t,e){return this._move(t,e,"Left")},_moveRight:function(t,e){return this._move(t,e,"Right")},moveCursorLeftWithoutShift:function(t){var e=!0;return this._selectionDirection="left",this.selectionEnd===this.selectionStart&&0!==this.selectionStart&&(e=this._moveLeft(t,"selectionStart")),this.selectionEnd=this.selectionStart,e},moveCursorLeftWithShift:function(t){return"right"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveLeft(t,"selectionEnd"):0!==this.selectionStart?(this._selectionDirection="left",this._moveLeft(t,"selectionStart")):void 0},moveCursorRight:function(t){this.selectionStart>=this.text.length&&this.selectionEnd>=this.text.length||this._moveCursorLeftOrRight("Right",t)},_moveCursorLeftOrRight:function(t,e){var i="moveCursor"+t+"With";this._currentCursorOpacity=1,i+=e.shiftKey?"Shift":"outShift",this[i](e)&&(this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorRightWithShift:function(t){return"left"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveRight(t,"selectionStart"):this.selectionEnd!==this.text.length?(this._selectionDirection="right",this._moveRight(t,"selectionEnd")):void 0},moveCursorRightWithoutShift:function(t){var e=!0;return this._selectionDirection="right",this.selectionStart===this.selectionEnd?(e=this._moveRight(t,"selectionStart"),this.selectionEnd=this.selectionStart):this.selectionStart=this.selectionEnd,e},removeChars:function(t){this.selectionStart===this.selectionEnd?this._removeCharsNearCursor(t):this._removeCharsFromTo(this.selectionStart,this.selectionEnd),this.set("dirty",!0),this.setSelectionEnd(this.selectionStart),this._removeExtraneousStyles(),this.canvas&&this.canvas.renderAll(),this.setCoords(),this.fire("changed"),this.canvas&&this.canvas.fire("text:changed",{target:this})},_removeCharsNearCursor:function(t){if(0!==this.selectionStart)if(t.metaKey){var e=this.findLineBoundaryLeft(this.selectionStart);this._removeCharsFromTo(e,this.selectionStart),this.setSelectionStart(e)}else if(t.altKey){var i=this.findWordBoundaryLeft(this.selectionStart);this._removeCharsFromTo(i,this.selectionStart),this.setSelectionStart(i)}else this._removeSingleCharAndStyle(this.selectionStart),this.setSelectionStart(this.selectionStart-1)}}),function(){var t=fabric.util.toFixed,e=fabric.Object.NUM_FRACTION_DIGITS;fabric.util.object.extend(fabric.IText.prototype,{_setSVGTextLineText:function(t,e,i,r,n,s){this._getLineStyle(t)?this._setSVGTextLineChars(t,e,i,r,s):fabric.Text.prototype._setSVGTextLineText.call(this,t,e,i,r,n)},_setSVGTextLineChars:function(t,e,i,r,n){for(var s=this._textLines[t],o=0,a=this._getLineLeftOffset(this._getLineWidth(this.ctx,t))-this.width/2,h=this._getSVGLineTopOffset(t),c=this._getHeightOfLine(this.ctx,t),l=0,u=s.length;l\n'].join("")},_createTextCharSpan:function(i,r,n,s,o){var a=this.getSvgStyles.call(fabric.util.object.extend({visible:!0,fill:this.fill,stroke:this.stroke,type:"text",getSvgFilter:fabric.Object.prototype.getSvgFilter},r));return['\t\t\t',fabric.util.string.escapeXml(i),"\n"].join("")}})}(),function(t){"use strict";var e=t.fabric||(t.fabric={});e.Textbox=e.util.createClass(e.IText,e.Observable,{type:"textbox",minWidth:20,dynamicMinWidth:2,__cachedLines:null,lockScalingY:!0,lockScalingFlip:!0,noScaleCache:!1,initialize:function(t,i){this.callSuper("initialize",t,i),this.setControlsVisibility(e.Textbox.getTextboxControlVisibility()),this.ctx=this.objectCaching?this._cacheContext:e.util.createCanvasElement().getContext("2d"),this._dimensionAffectingProps.push("width")},_initDimensions:function(t){this.__skipDimension||(t||(t=e.util.createCanvasElement().getContext("2d"),this._setTextStyles(t),this.clearContextTop()),this.dynamicMinWidth=0,this._textLines=this._splitTextIntoLines(t),this.dynamicMinWidth>this.width&&this._set("width",this.dynamicMinWidth),this._clearCache(),this.height=this._getTextHeight(t))},_generateStyleMap:function(){for(var t=0,e=0,i=0,r={},n=0;n0?(e=0,i++,t++):" "===this.text[i]&&n>0&&(e++,i++),r[n]={line:t,offset:e},i+=this._textLines[n].length,e+=this._textLines[n].length;return r},_getStyleDeclaration:function(t,e,i){if(this._styleMap){var r=this._styleMap[t];if(!r)return i?{}:null;t=r.line,e=r.offset+e}return this.callSuper("_getStyleDeclaration",t,e,i)},_setStyleDeclaration:function(t,e,i){var r=this._styleMap[t];t=r.line,e=r.offset+e,this.styles[t][e]=i},_deleteStyleDeclaration:function(t,e){var i=this._styleMap[t];t=i.line,e=i.offset+e,delete this.styles[t][e]},_getLineStyle:function(t){var e=this._styleMap[t];return this.styles[e.line]},_setLineStyle:function(t,e){var i=this._styleMap[t];this.styles[i.line]=e},_deleteLineStyle:function(t){var e=this._styleMap[t];delete this.styles[e.line]},_wrapText:function(t,e){var i,r=e.split(this._reNewline),n=[];for(i=0;i=this.width&&!d?(n.push(s),s="",r=l,d=!0):r+=g,d||(s+=c),s+=a,u=this._measureText(t,c,i,h),h++,d=!1,l>f&&(f=l);return p&&n.push(s),f>this.dynamicMinWidth&&(this.dynamicMinWidth=f-g),n},_splitTextIntoLines:function(t){t=t||this.ctx;var e=this.textAlign;this._styleMap=null,t.save(),this._setTextStyles(t),this.textAlign="left";var i=this._wrapText(t,this.text);return this.textAlign=e,t.restore(),this._textLines=i,this._styleMap=this._generateStyleMap(),i},setOnGroup:function(t,e){"scaleX"===t&&(this.set("scaleX",Math.abs(1/e)),this.set("width",this.get("width")*e/("undefined"==typeof this.__oldScaleX?1:this.__oldScaleX)),this.__oldScaleX=e)},get2DCursorLocation:function(t){"undefined"==typeof t&&(t=this.selectionStart);for(var e=this._textLines.length,i=0,r=0;r=h.getMinWidth()?(h.set("width",c),!0):void 0},fabric.Group.prototype._refreshControlsVisibility=function(){if("undefined"!=typeof fabric.Textbox)for(var t=this._objects.length;t--;)if(this._objects[t]instanceof fabric.Textbox)return void this.setControlsVisibility(fabric.Textbox.getTextboxControlVisibility())};var e=fabric.util.object.clone;fabric.util.object.extend(fabric.Textbox.prototype,{_removeExtraneousStyles:function(){for(var t in this._styleMap)this._textLines[t]||delete this.styles[this._styleMap[t].line]},insertCharStyleObject:function(t,e,i){var r=this._styleMap[t];t=r.line,e=r.offset+e,fabric.IText.prototype.insertCharStyleObject.apply(this,[t,e,i])},insertNewlineStyleObject:function(t,e,i){var r=this._styleMap[t];t=r.line,e=r.offset+e,fabric.IText.prototype.insertNewlineStyleObject.apply(this,[t,e,i])},shiftLineStyles:function(t,i){var r=e(this.styles),n=this._styleMap[t];t=n.line;for(var s in this.styles){var o=parseInt(s,10);o>t&&(this.styles[o+i]=r[o],r[o-i]||delete this.styles[o])}},_getTextOnPreviousLine:function(t){for(var e=this._textLines[t-1];this._styleMap[t-2]&&this._styleMap[t-2].line===this._styleMap[t-1].line;)e=this._textLines[t-2]+e,t--;return e},removeStyleObject:function(t,e){var i=this.get2DCursorLocation(e),r=this._styleMap[i.lineIndex],n=r.line,s=r.offset+i.charIndex;this._removeStyleObject(t,i,n,s)}})}(),function(){var t=fabric.IText.prototype._getNewSelectionStartFromOffset;fabric.IText.prototype._getNewSelectionStartFromOffset=function(e,i,r,n,s){n=t.call(this,e,i,r,n,s);for(var o=0,a=0,h=0;h=n));h++)"\n"!==this.text[o+a]&&" "!==this.text[o+a]||a++;return n-h+a}}(),function(){function request(t,e,i){var r=URL.parse(t);r.port||(r.port=0===r.protocol.indexOf("https:")?443:80);var n=0===r.protocol.indexOf("https:")?HTTPS:HTTP,s=n.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(t){var r="";e&&t.setEncoding(e),t.on("end",function(){i(r)}),t.on("data",function(e){200===t.statusCode&&(r+=e)})});s.on("error",function(t){t.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(t.message),i(null)}),s.end()}function requestFs(t,e){var i=require("fs");i.readFile(t,function(t,i){if(t)throw fabric.log(t),t;e(i)})}if("undefined"==typeof document||"undefined"==typeof window){var DOMParser=require("xmldom").DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(t,e,i){function r(r){r?(n.src=new Buffer(r,"binary"),n._src=t,e&&e.call(i,n)):(n=null,e&&e.call(i,null,!0))}var n=new Image;t&&(t instanceof Buffer||0===t.indexOf("data"))?(n.src=n._src=t,e&&e.call(i,n)):t&&0!==t.indexOf("http")?requestFs(t,r):t?request(t,"binary",r):e&&e.call(i,t)},fabric.loadSVGFromURL=function(t,e,i){t=t.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),0!==t.indexOf("http")?requestFs(t,function(t){fabric.loadSVGFromString(t.toString(),e,i)}):request(t,"",function(t){fabric.loadSVGFromString(t,e,i)})},fabric.loadSVGFromString=function(t,e,i){var r=(new DOMParser).parseFromString(t);fabric.parseSVGDocument(r.documentElement,function(t,i){e&&e(t,i)},i)},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.createCanvasForNode=function(t,e,i,r){r=r||i;var n=fabric.document.createElement("canvas"),s=new Canvas(t||600,e||600,r),o=new Canvas(t||600,e||600,r);n.style={},n.width=s.width,n.height=s.height,i=i||{},i.nodeCanvas=s,i.nodeCacheCanvas=o;var a=fabric.Canvas||fabric.StaticCanvas,h=new a(n,i);return h.nodeCanvas=s,h.nodeCacheCanvas=o,h.contextContainer=s.getContext("2d"),h.contextCache=o.getContext("2d"),h.Font=Canvas.Font,h};var originaInitStatic=fabric.StaticCanvas.prototype._initStatic;fabric.StaticCanvas.prototype._initStatic=function(t,e){ -t=t||fabric.document.createElement("canvas"),this.nodeCanvas=new Canvas(t.width,t.height),this.nodeCacheCanvas=new Canvas(t.width,t.height),originaInitStatic.call(this,t,e),this.contextContainer=this.nodeCanvas.getContext("2d"),this.contextCache=this.nodeCacheCanvas.getContext("2d"),this.Font=Canvas.Font},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(t){return this.nodeCanvas.createJPEGStream(t)},fabric.StaticCanvas.prototype._initRetinaScaling=function(){if(this._isRetinaScaling())return this.lowerCanvasEl.setAttribute("width",this.width*fabric.devicePixelRatio),this.lowerCanvasEl.setAttribute("height",this.height*fabric.devicePixelRatio),this.nodeCanvas.width=this.width*fabric.devicePixelRatio,this.nodeCanvas.height=this.height*fabric.devicePixelRatio,this.contextContainer.scale(fabric.devicePixelRatio,fabric.devicePixelRatio),this},fabric.Canvas&&(fabric.Canvas.prototype._initRetinaScaling=fabric.StaticCanvas.prototype._initRetinaScaling);var origSetBackstoreDimension=fabric.StaticCanvas.prototype._setBackstoreDimension;fabric.StaticCanvas.prototype._setBackstoreDimension=function(t,e){return origSetBackstoreDimension.call(this,t,e),this.nodeCanvas[t]=e,this},fabric.Canvas&&(fabric.Canvas.prototype._setBackstoreDimension=fabric.StaticCanvas.prototype._setBackstoreDimension)}}(); \ No newline at end of file +}});for(var a in fabric.StaticCanvas)"prototype"!==a&&(fabric.Canvas[a]=fabric.StaticCanvas[a]);fabric.isTouchSupported&&(fabric.Canvas.prototype._setCursorFromEvent=function(){}),fabric.Element=fabric.Canvas}(),function(){var t={mt:0,tr:1,mr:2,br:3,mb:4,bl:5,ml:6,tl:7},e=fabric.util.addListener,i=fabric.util.removeListener;fabric.util.object.extend(fabric.Canvas.prototype,{cursorMap:["n-resize","ne-resize","e-resize","se-resize","s-resize","sw-resize","w-resize","nw-resize"],_initEventListeners:function(){this._bindEvents(),e(fabric.window,"resize",this._onResize),e(this.upperCanvasEl,"mousedown",this._onMouseDown),e(this.upperCanvasEl,"mousemove",this._onMouseMove),e(this.upperCanvasEl,"mouseout",this._onMouseOut),e(this.upperCanvasEl,"mouseenter",this._onMouseEnter),e(this.upperCanvasEl,"wheel",this._onMouseWheel),e(this.upperCanvasEl,"contextmenu",this._onContextMenu),e(this.upperCanvasEl,"touchstart",this._onMouseDown,{passive:!1}),e(this.upperCanvasEl,"touchmove",this._onMouseMove,{passive:!1}),"undefined"!=typeof eventjs&&"add"in eventjs&&(eventjs.add(this.upperCanvasEl,"gesture",this._onGesture),eventjs.add(this.upperCanvasEl,"drag",this._onDrag),eventjs.add(this.upperCanvasEl,"orientation",this._onOrientationChange),eventjs.add(this.upperCanvasEl,"shake",this._onShake),eventjs.add(this.upperCanvasEl,"longpress",this._onLongPress))},_bindEvents:function(){this._onMouseDown=this._onMouseDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),this._onMouseUp=this._onMouseUp.bind(this),this._onResize=this._onResize.bind(this),this._onGesture=this._onGesture.bind(this),this._onDrag=this._onDrag.bind(this),this._onShake=this._onShake.bind(this),this._onLongPress=this._onLongPress.bind(this),this._onOrientationChange=this._onOrientationChange.bind(this),this._onMouseWheel=this._onMouseWheel.bind(this),this._onMouseOut=this._onMouseOut.bind(this),this._onMouseEnter=this._onMouseEnter.bind(this),this._onContextMenu=this._onContextMenu.bind(this)},removeListeners:function(){i(fabric.window,"resize",this._onResize),i(this.upperCanvasEl,"mousedown",this._onMouseDown),i(this.upperCanvasEl,"mousemove",this._onMouseMove),i(this.upperCanvasEl,"mouseout",this._onMouseOut),i(this.upperCanvasEl,"mouseenter",this._onMouseEnter),i(this.upperCanvasEl,"wheel",this._onMouseWheel),i(this.upperCanvasEl,"contextmenu",this._onContextMenu),i(this.upperCanvasEl,"touchstart",this._onMouseDown),i(this.upperCanvasEl,"touchmove",this._onMouseMove),"undefined"!=typeof eventjs&&"remove"in eventjs&&(eventjs.remove(this.upperCanvasEl,"gesture",this._onGesture),eventjs.remove(this.upperCanvasEl,"drag",this._onDrag),eventjs.remove(this.upperCanvasEl,"orientation",this._onOrientationChange),eventjs.remove(this.upperCanvasEl,"shake",this._onShake),eventjs.remove(this.upperCanvasEl,"longpress",this._onLongPress))},_onGesture:function(t,e){this.__onTransformGesture&&this.__onTransformGesture(t,e)},_onDrag:function(t,e){this.__onDrag&&this.__onDrag(t,e)},_onMouseWheel:function(t){this.__onMouseWheel(t)},_onMouseOut:function(t){var e=this._hoveredTarget;this.fire("mouse:out",{target:e,e:t}),this._hoveredTarget=null,e&&e.fire("mouseout",{e:t})},_onMouseEnter:function(t){this.findTarget(t)||(this.fire("mouse:over",{target:null,e:t}),this._hoveredTarget=null)},_onOrientationChange:function(t,e){this.__onOrientationChange&&this.__onOrientationChange(t,e)},_onShake:function(t,e){this.__onShake&&this.__onShake(t,e)},_onLongPress:function(t,e){this.__onLongPress&&this.__onLongPress(t,e)},_onContextMenu:function(t){return this.stopContextMenu&&(t.stopPropagation(),t.preventDefault()),!1},_onMouseDown:function(t){this.__onMouseDown(t),e(fabric.document,"touchend",this._onMouseUp,{passive:!1}),e(fabric.document,"touchmove",this._onMouseMove,{passive:!1}),i(this.upperCanvasEl,"mousemove",this._onMouseMove),i(this.upperCanvasEl,"touchmove",this._onMouseMove),"touchstart"===t.type?i(this.upperCanvasEl,"mousedown",this._onMouseDown):(e(fabric.document,"mouseup",this._onMouseUp),e(fabric.document,"mousemove",this._onMouseMove))},_onMouseUp:function(t){if(this.__onMouseUp(t),i(fabric.document,"mouseup",this._onMouseUp),i(fabric.document,"touchend",this._onMouseUp),i(fabric.document,"mousemove",this._onMouseMove),i(fabric.document,"touchmove",this._onMouseMove),e(this.upperCanvasEl,"mousemove",this._onMouseMove),e(this.upperCanvasEl,"touchmove",this._onMouseMove,{passive:!1}),"touchend"===t.type){var r=this;setTimeout(function(){e(r.upperCanvasEl,"mousedown",r._onMouseDown)},400)}},_onMouseMove:function(t){!this.allowTouchScrolling&&t.preventDefault&&t.preventDefault(),this.__onMouseMove(t)},_onResize:function(){this.calcOffset()},_shouldRender:function(t,e){var i=this.getActiveGroup()||this.getActiveObject();return(!i||!i.isEditing||t!==i)&&!!(t&&(t.isMoving||t!==i)||!t&&i||!t&&!i&&!this._groupSelector||e&&this._previousPointer&&this.selection&&(e.x!==this._previousPointer.x||e.y!==this._previousPointer.y))},__onMouseUp:function(t){var e,i=!0,r=this._currentTransform,n=this._groupSelector,s=!n||0===n.left&&0===n.top;if(this.isDrawingMode&&this._isCurrentlyDrawing)return void this._onMouseUpInDrawingMode(t);r&&(this._finalizeCurrentTransform(),i=!r.actionPerformed),e=i?this.findTarget(t,!0):r.target;var o=this._shouldRender(e,this.getPointer(t));e||!s?this._maybeGroupObjects(t):(this._groupSelector=null,this._currentTransform=null),e&&(e.isMoving=!1),this._handleCursorAndEvent(t,e,"up"),e&&(e.__corner=0),o&&this.renderAll()},_handleCursorAndEvent:function(t,e,i){this._setCursorFromEvent(t,e),this._handleEvent(t,i,e?e:null)},_handleEvent:function(t,e,i){var r="undefined"==typeof i?this.findTarget(t):i,n=this.targets||[],s={e:t,target:r,subTargets:n};this.fire("mouse:"+e,s),r&&r.fire("mouse"+e,s);for(var o=0;o1)){var r=this._groupSelector;r?(i=this.getPointer(t,!0),r.left=i.x-r.ex,r.top=i.y-r.ey,this.renderTop()):this._currentTransform?this._transformObject(t):(e=this.findTarget(t),this._setCursorFromEvent(t,e)),this._handleEvent(t,"move",e?e:null)}},__onMouseWheel:function(t){this._handleEvent(t,"wheel")},_transformObject:function(t){var e=this.getPointer(t),i=this._currentTransform;i.reset=!1,i.target.isMoving=!0,i.shiftKey=t.shiftKey,i.altKey=t[this.centeredKey],this._beforeScaleTransform(t,i),this._performTransformAction(t,i,e),i.actionPerformed&&this.renderAll()},_performTransformAction:function(t,e,i){var r=i.x,n=i.y,s=e.target,o=e.action,a=!1;"rotate"===o?(a=this._rotateObject(r,n))&&this._fire("rotating",s,t):"scale"===o?(a=this._onScale(t,e,r,n))&&this._fire("scaling",s,t):"scaleX"===o?(a=this._scaleObject(r,n,"x"))&&this._fire("scaling",s,t):"scaleY"===o?(a=this._scaleObject(r,n,"y"))&&this._fire("scaling",s,t):"skewX"===o?(a=this._skewObject(r,n,"x"))&&this._fire("skewing",s,t):"skewY"===o?(a=this._skewObject(r,n,"y"))&&this._fire("skewing",s,t):(a=this._translateObject(r,n),a&&(this._fire("moving",s,t),this.setCursor(s.moveCursor||this.moveCursor))),e.actionPerformed=e.actionPerformed||a},_fire:function(t,e,i){this.fire("object:"+t,{target:e,e:i}),e.fire(t,{e:i})},_beforeScaleTransform:function(t,e){if("scale"===e.action||"scaleX"===e.action||"scaleY"===e.action){var i=this._shouldCenterTransform(e.target);(i&&("center"!==e.originX||"center"!==e.originY)||!i&&"center"===e.originX&&"center"===e.originY)&&(this._resetCurrentTransform(),e.reset=!0)}},_onScale:function(t,e,i,r){return!t[this.uniScaleKey]&&!this.uniScaleTransform||e.target.get("lockUniScaling")?(e.reset||"scale"!==e.currentAction||this._resetCurrentTransform(),e.currentAction="scaleEqually",this._scaleObject(i,r,"equally")):(e.currentAction="scale",this._scaleObject(i,r))},_setCursorFromEvent:function(t,e){if(!e||!e.selectable)return this.setCursor(this.defaultCursor),!1;var i=e.hoverCursor||this.hoverCursor,r=this.getActiveGroup(),n=e._findTargetCorner&&(!r||!r.contains(e))&&e._findTargetCorner(this.getPointer(t,!0));return n?this._setCornerCursor(n,e,t):this.setCursor(i),!0},_setCornerCursor:function(e,i,r){if(e in t)this.setCursor(this._getRotatedCornerCursor(e,i,r));else{if("mtr"!==e||!i.hasRotatingPoint)return this.setCursor(this.defaultCursor),!1;this.setCursor(this.rotationCursor)}},_getRotatedCornerCursor:function(e,i,r){var n=Math.round(i.getAngle()%360/45);return n<0&&(n+=8),n+=t[e],r[this.altActionKey]&&t[e]%2===0&&(n+=2),n%=8,this.cursorMap[n]}})}(),function(){var t=Math.min,e=Math.max;fabric.util.object.extend(fabric.Canvas.prototype,{_shouldGroup:function(t,e){var i=this.getActiveObject();return t[this.selectionKey]&&e&&e.selectable&&(this.getActiveGroup()||i&&i!==e)&&this.selection},_handleGrouping:function(t,e){var i=this.getActiveGroup();(e!==i||(e=this.findTarget(t,!0)))&&(i?this._updateActiveGroup(e,t):this._createActiveGroup(e,t),this._activeGroup&&this._activeGroup.saveCoords())},_updateActiveGroup:function(t,e){var i=this.getActiveGroup();if(i.contains(t)){if(i.removeWithUpdate(t),t.set("active",!1),1===i.size())return this.discardActiveGroup(e),void this.setActiveObject(i.item(0))}else i.addWithUpdate(t);this.fire("selection:created",{target:i,e:e}),i.set("active",!0)},_createActiveGroup:function(t,e){if(this._activeObject&&t!==this._activeObject){var i=this._createGroup(t);i.addWithUpdate(),this.setActiveGroup(i),this._activeObject=null,this.fire("selection:created",{target:i,e:e})}t.set("active",!0)},_createGroup:function(t){var e=this.getObjects(),i=e.indexOf(this._activeObject)1&&(e=new fabric.Group(e.reverse(),{canvas:this}),e.addWithUpdate(),this.setActiveGroup(e,t),e.saveCoords(),this.fire("selection:created",{target:e}),this.renderAll())},_collectObjects:function(){for(var i,r=[],n=this._groupSelector.ex,s=this._groupSelector.ey,o=n+this._groupSelector.left,a=s+this._groupSelector.top,h=new fabric.Point(t(n,o),t(s,a)),c=new fabric.Point(e(n,o),e(s,a)),l=n===o&&s===a,u=this._objects.length;u--&&(i=this._objects[u],!(i&&i.selectable&&i.visible&&(i.intersectsWithRect(h,c)||i.isContainedWithinRect(h,c)||i.containsPoint(h)||i.containsPoint(c))&&(i.set("active",!0),r.push(i),l))););return r},_maybeGroupObjects:function(t){this.selection&&this._groupSelector&&this._groupSelectedObjects(t);var e=this.getActiveGroup();e&&(e.setObjectsCoords().setCoords(),e.isMoving=!1,this.setCursor(this.defaultCursor)),this._groupSelector=null,this._currentTransform=null}})}(),function(){var t=fabric.StaticCanvas.supports("toDataURLWithQuality");fabric.util.object.extend(fabric.StaticCanvas.prototype,{toDataURL:function(t){t||(t={});var e=t.format||"png",i=t.quality||1,r=t.multiplier||1,n={left:t.left||0,top:t.top||0,width:t.width||0,height:t.height||0};return this.__toDataURLWithMultiplier(e,i,n,r)},__toDataURLWithMultiplier:function(t,e,i,r){var n=this.getWidth(),s=this.getHeight(),o=(i.width||this.getWidth())*r,a=(i.height||this.getHeight())*r,h=this.getZoom(),c=h*r,l=this.viewportTransform,u=(l[4]-i.left)*r,f=(l[5]-i.top)*r,d=[c,0,0,c,u,f],g=this.interactive;this.viewportTransform=d,this.interactive&&(this.interactive=!1),n!==o||s!==a?this.setDimensions({width:o,height:a}):this.renderAll();var p=this.__toDataURL(t,e,i);return g&&(this.interactive=g),this.viewportTransform=l,this.setDimensions({width:n,height:s}),p},__toDataURL:function(e,i){var r=this.contextContainer.canvas;"jpg"===e&&(e="jpeg");var n=t?r.toDataURL("image/"+e,i):r.toDataURL("image/"+e);return n},toDataURLWithMultiplier:function(t,e,i){return this.toDataURL({format:t,multiplier:e,quality:i})}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{loadFromDatalessJSON:function(t,e,i){return this.loadFromJSON(t,e,i)},loadFromJSON:function(t,e,i){if(t){var r="string"==typeof t?JSON.parse(t):fabric.util.object.clone(t);this.clear();var n=this;return this._enlivenObjects(r.objects,function(){n._setBgOverlay(r,function(){delete r.objects,delete r.backgroundImage,delete r.overlayImage,delete r.background,delete r.overlay,n._setOptions(r),e&&e()})},i),this}},_setBgOverlay:function(t,e){var i=this,r={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(!(t.backgroundImage||t.overlayImage||t.background||t.overlay))return void(e&&e());var n=function(){r.backgroundImage&&r.overlayImage&&r.backgroundColor&&r.overlayColor&&(i.renderAll(),e&&e())};this.__setBgOverlay("backgroundImage",t.backgroundImage,r,n),this.__setBgOverlay("overlayImage",t.overlayImage,r,n),this.__setBgOverlay("backgroundColor",t.background,r,n),this.__setBgOverlay("overlayColor",t.overlay,r,n)},__setBgOverlay:function(t,e,i,r){var n=this;return e?void("backgroundImage"===t||"overlayImage"===t?fabric.util.enlivenObjects([e],function(e){n[t]=e[0],i[t]=!0,r&&r()}):this["set"+fabric.util.string.capitalize(t,!0)](e,function(){i[t]=!0,r&&r()})):(i[t]=!0,void(r&&r()))},_enlivenObjects:function(t,e,i){var r=this;if(!t||0===t.length)return void(e&&e());var n=this.renderOnAddRemove;this.renderOnAddRemove=!1,fabric.util.enlivenObjects(t,function(t){t.forEach(function(t,e){r.insertAt(t,e)}),r.renderOnAddRemove=n,e&&e()},null,i)},_toDataURL:function(t,e){this.clone(function(i){e(i.toDataURL(t))})},_toDataURLWithMultiplier:function(t,e,i){this.clone(function(r){i(r.toDataURLWithMultiplier(t,e))})},clone:function(t,e){var i=JSON.stringify(this.toJSON(e));this.cloneWithoutData(function(e){e.loadFromJSON(i,function(){t&&t(e)})})},cloneWithoutData:function(t){var e=fabric.document.createElement("canvas");e.width=this.getWidth(),e.height=this.getHeight();var i=new fabric.Canvas(e);i.clipTo=this.clipTo,this.backgroundImage?(i.setBackgroundImage(this.backgroundImage.src,function(){i.renderAll(),t&&t(i)}),i.backgroundImageOpacity=this.backgroundImageOpacity,i.backgroundImageStretch=this.backgroundImageStretch):t&&t(i)}}),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.util.object.clone,n=e.util.toFixed,s=e.util.string.capitalize,o=e.util.degreesToRadians,a=e.StaticCanvas.supports("setLineDash"),h=!e.isLikelyNode;e.Object||(e.Object=e.util.createClass(e.CommonMethods,{type:"object",originX:"left",originY:"top",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,opacity:1,angle:0,skewX:0,skewY:0,cornerSize:13,transparentCorners:!0,hoverCursor:null,moveCursor:null,padding:0,borderColor:"rgba(102,153,255,0.75)",borderDashArray:null,cornerColor:"rgba(102,153,255,0.5)",cornerStrokeColor:null,cornerStyle:"rect",cornerDashArray:null,centeredScaling:!1,centeredRotation:!0,fill:"rgb(0,0,0)",fillRule:"nonzero",globalCompositeOperation:"source-over",backgroundColor:"",selectionBackgroundColor:"",stroke:null,strokeWidth:1,strokeDashArray:null,strokeLineCap:"butt",strokeLineJoin:"miter",strokeMiterLimit:10,shadow:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,transformMatrix:null,minScaleLimit:.01,selectable:!0,evented:!0,visible:!0,hasControls:!0,hasBorders:!0,hasRotatingPoint:!0,rotatingPointOffset:40,perPixelTargetFind:!1,includeDefaultValues:!0,clipTo:null,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockUniScaling:!1,lockSkewingX:!1,lockSkewingY:!1,lockScalingFlip:!1,excludeFromExport:!1,objectCaching:h,statefullCache:!1,noScaleCache:!0,dirty:!1,needsItsOwnCache:!1,stateProperties:"top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeLineJoin strokeMiterLimit angle opacity fill fillRule globalCompositeOperation shadow clipTo visible backgroundColor skewX skewY".split(" "),cacheProperties:"fill stroke strokeWidth strokeDashArray width height stroke strokeWidth strokeDashArray strokeLineCap strokeLineJoin strokeMiterLimit fillRule backgroundColor".split(" "),initialize:function(t){t=t||{},t&&this.setOptions(t),this.objectCaching&&(this._createCacheCanvas(),this.setupState({propertySet:"cacheProperties"}))},_createCacheCanvas:function(){this._cacheCanvas=e.document.createElement("canvas"),this._cacheContext=this._cacheCanvas.getContext("2d"),this._updateCacheCanvas()},_getCacheCanvasDimensions:function(){var t=this.canvas&&this.canvas.getZoom()||1,i=this.getObjectScaling(),r=this._getNonTransformedDimensions(),n=this.canvas&&this.canvas._isRetinaScaling()?e.devicePixelRatio:1,s=i.scaleX*t*n,o=i.scaleY*t*n,a=r.x*s,h=r.y*o;return{width:Math.ceil(a)+2,height:Math.ceil(h)+2,zoomX:s,zoomY:o}},_updateCacheCanvas:function(){if(this.noScaleCache&&this.canvas&&this.canvas._currentTransform){var t=this.canvas._currentTransform.action;if("scale"===t.slice(0,5))return!1}var e=this._getCacheCanvasDimensions(),i=e.width,r=e.height,n=e.zoomX,s=e.zoomY;return(i!==this.cacheWidth||r!==this.cacheHeight)&&(this._cacheCanvas.width=i,this._cacheCanvas.height=r,this._cacheContext.translate(i/2,r/2),this._cacheContext.scale(n,s),this.cacheWidth=i,this.cacheHeight=r,this.zoomX=n,this.zoomY=s,!0)},setOptions:function(t){this._setOptions(t),this._initGradient(t.fill,"fill"),this._initGradient(t.stroke,"stroke"),this._initClipping(t),this._initPattern(t.fill,"fill"),this._initPattern(t.stroke,"stroke")},transform:function(t,e){this.group&&!this.group._transformDone&&this.group===this.canvas._activeGroup&&this.group.transform(t);var i=e?this._getLeftTopCoords():this.getCenterPoint();t.translate(i.x,i.y),this.angle&&t.rotate(o(this.angle)),t.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1)),this.skewX&&t.transform(1,0,Math.tan(o(this.skewX)),1,0,0),this.skewY&&t.transform(1,Math.tan(o(this.skewY)),0,1,0,0)},toObject:function(t){var i=e.Object.NUM_FRACTION_DIGITS,r={type:this.type,originX:this.originX,originY:this.originY,left:n(this.left,i),top:n(this.top,i),width:n(this.width,i),height:n(this.height,i),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:n(this.strokeWidth,i),strokeDashArray:this.strokeDashArray?this.strokeDashArray.concat():this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeLineJoin:this.strokeLineJoin,strokeMiterLimit:n(this.strokeMiterLimit,i),scaleX:n(this.scaleX,i),scaleY:n(this.scaleY,i),angle:n(this.getAngle(),i),flipX:this.flipX,flipY:this.flipY,opacity:n(this.opacity,i),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,clipTo:this.clipTo&&String(this.clipTo),backgroundColor:this.backgroundColor,fillRule:this.fillRule,globalCompositeOperation:this.globalCompositeOperation,transformMatrix:this.transformMatrix?this.transformMatrix.concat():null,skewX:n(this.skewX,i),skewY:n(this.skewY,i)};return e.util.populateWithProperties(this,r,t),this.includeDefaultValues||(r=this._removeDefaultValues(r)),r},toDatalessObject:function(t){return this.toObject(t)},_removeDefaultValues:function(t){var i=e.util.getKlass(t.type).prototype,r=i.stateProperties;return r.forEach(function(e){t[e]===i[e]&&delete t[e];var r="[object Array]"===Object.prototype.toString.call(t[e])&&"[object Array]"===Object.prototype.toString.call(i[e]);r&&0===t[e].length&&0===i[e].length&&delete t[e]}),t},toString:function(){return"#"},getObjectScaling:function(){var t=this.scaleX,e=this.scaleY;if(this.group){var i=this.group.getObjectScaling();t*=i.scaleX,e*=i.scaleY}return{scaleX:t,scaleY:e}},_set:function(t,i){var r="scaleX"===t||"scaleY"===t;return r&&(i=this._constrainScale(i)),"scaleX"===t&&i<0?(this.flipX=!this.flipX,i*=-1):"scaleY"===t&&i<0?(this.flipY=!this.flipY,i*=-1):"shadow"!==t||!i||i instanceof e.Shadow?"dirty"===t&&this.group&&this.group.set("dirty",i):i=new e.Shadow(i),this[t]=i,this.cacheProperties.indexOf(t)>-1&&(this.group&&this.group.set("dirty",!0),this.dirty=!0),"width"!==t&&"height"!==t||(this.minScaleLimit=Math.min(.1,1/Math.max(this.width,this.height))),this},setOnGroup:function(){},setSourcePath:function(t){return this.sourcePath=t,this},getViewportTransform:function(){return this.canvas&&this.canvas.viewportTransform?this.canvas.viewportTransform:e.iMatrix.concat()},render:function(t,i){0===this.width&&0===this.height||!this.visible||(t.save(),this._setupCompositeOperation(t),this.drawSelectionBackground(t),i||this.transform(t),this._setOpacity(t),this._setShadow(t),this.transformMatrix&&t.transform.apply(t,this.transformMatrix),this.clipTo&&e.util.clipContext(this,t),!this.objectCaching||this.group&&!this.needsItsOwnCache?(this.drawObject(t,i),i&&this.objectCaching&&this.statefullCache&&this.saveState({propertySet:"cacheProperties"})):(this._cacheCanvas||this._createCacheCanvas(),this.isCacheDirty(i)&&(this.statefullCache&&this.saveState({propertySet:"cacheProperties"}),this.drawObject(this._cacheContext,i),this.dirty=!1),this.drawCacheOnCanvas(t)),this.clipTo&&t.restore(),t.restore())},drawObject:function(t,e){this._renderBackground(t),this._setStrokeStyles(t),this._setFillStyles(t),this._render(t,e)},drawCacheOnCanvas:function(t){t.scale(1/this.zoomX,1/this.zoomY),t.drawImage(this._cacheCanvas,-this.cacheWidth/2,-this.cacheHeight/2)},isCacheDirty:function(t){if(!t&&this._updateCacheCanvas())return!0;if(this.dirty||this.statefullCache&&this.hasStateChanged("cacheProperties")){if(!t){var e=this.cacheWidth/this.zoomX,i=this.cacheHeight/this.zoomY;this._cacheContext.clearRect(-e/2,-i/2,e,i)}return!0}return!1},_renderBackground:function(t){if(this.backgroundColor){var e=this._getNonTransformedDimensions();t.fillStyle=this.backgroundColor,t.fillRect(-e.x/2,-e.y/2,e.x,e.y),this._removeShadow(t)}},_setOpacity:function(t){t.globalAlpha*=this.opacity},_setStrokeStyles:function(t){this.stroke&&(t.lineWidth=this.strokeWidth,t.lineCap=this.strokeLineCap,t.lineJoin=this.strokeLineJoin,t.miterLimit=this.strokeMiterLimit,t.strokeStyle=this.stroke.toLive?this.stroke.toLive(t,this):this.stroke)},_setFillStyles:function(t){this.fill&&(t.fillStyle=this.fill.toLive?this.fill.toLive(t,this):this.fill)},_setLineDash:function(t,e,i){e&&(1&e.length&&e.push.apply(e,e),a?t.setLineDash(e):i&&i(t))},_renderControls:function(t,i){if(!(!this.active||i||this.group&&this.group!==this.canvas.getActiveGroup())){var r,n=this.getViewportTransform(),s=this.calcTransformMatrix();s=e.util.multiplyTransformMatrices(n,s),r=e.util.qrDecompose(s),t.save(),t.translate(r.translateX,r.translateY),t.lineWidth=1*this.borderScaleFactor,this.group||(t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1),this.group&&this.group===this.canvas.getActiveGroup()?(t.rotate(o(r.angle)),this.drawBordersInGroup(t,r)):(t.rotate(o(this.angle)),this.drawBorders(t)),this.drawControls(t),t.restore()}},_setShadow:function(t){if(this.shadow){var i=this.canvas&&this.canvas.viewportTransform[0]||1,r=this.canvas&&this.canvas.viewportTransform[3]||1,n=this.getObjectScaling();this.canvas&&this.canvas._isRetinaScaling()&&(i*=e.devicePixelRatio,r*=e.devicePixelRatio),t.shadowColor=this.shadow.color,t.shadowBlur=this.shadow.blur*(i+r)*(n.scaleX+n.scaleY)/4,t.shadowOffsetX=this.shadow.offsetX*i*n.scaleX,t.shadowOffsetY=this.shadow.offsetY*r*n.scaleY}},_removeShadow:function(t){this.shadow&&(t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0)},_applyPatternGradientTransform:function(t,e){if(e.toLive){var i=e.gradientTransform||e.patternTransform;i&&t.transform.apply(t,i);var r=-this.width/2+e.offsetX||0,n=-this.height/2+e.offsetY||0;t.translate(r,n)}},_renderFill:function(t){this.fill&&(t.save(),this._applyPatternGradientTransform(t,this.fill),"evenodd"===this.fillRule?t.fill("evenodd"):t.fill(),t.restore())},_renderStroke:function(t){this.stroke&&0!==this.strokeWidth&&(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(t),t.save(),this._setLineDash(t,this.strokeDashArray,this._renderDashedStroke),this._applyPatternGradientTransform(t,this.stroke),t.stroke(),t.restore())},clone:function(t,i){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(i),t):new e.Object(this.toObject(i))},cloneAsImage:function(t,i){var r=this.toDataURL(i);return e.util.loadImage(r,function(i){t&&t(new e.Image(i))}),this},toDataURL:function(t){t||(t={});var i=e.util.createCanvasElement(),r=this.getBoundingRect();i.width=r.width,i.height=r.height,e.util.wrapElement(i,"div");var n=new e.StaticCanvas(i,{enableRetinaScaling:t.enableRetinaScaling});"jpg"===t.format&&(t.format="jpeg"),"jpeg"===t.format&&(n.backgroundColor="#fff");var s={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set("active",!1),this.setPositionByOrigin(new e.Point(n.getWidth()/2,n.getHeight()/2),"center","center");var o=this.canvas;n.add(this);var a=n.toDataURL(t);return this.set(s).setCoords(),this.canvas=o,n.dispose(),n=null,a},isType:function(t){return this.type===t},complexity:function(){return 1},toJSON:function(t){return this.toObject(t)},setGradient:function(t,i){i||(i={});var r={colorStops:[]};return r.type=i.type||(i.r1||i.r2?"radial":"linear"),r.coords={x1:i.x1,y1:i.y1,x2:i.x2,y2:i.y2},(i.r1||i.r2)&&(r.coords.r1=i.r1,r.coords.r2=i.r2),r.gradientTransform=i.gradientTransform,e.Gradient.prototype.addColorStop.call(r,i.colorStops),this.set(t,e.Gradient.forObject(this,r))},setPatternFill:function(t){return this.set("fill",new e.Pattern(t))},setShadow:function(t){return this.set("shadow",t?new e.Shadow(t):null)},setColor:function(t){return this.set("fill",t),this},setAngle:function(t){var e=("center"!==this.originX||"center"!==this.originY)&&this.centeredRotation;return e&&this._setOriginToCenter(),this.set("angle",t),e&&this._resetOrigin(),this},centerH:function(){return this.canvas&&this.canvas.centerObjectH(this),this},viewportCenterH:function(){return this.canvas&&this.canvas.viewportCenterObjectH(this),this},centerV:function(){return this.canvas&&this.canvas.centerObjectV(this),this},viewportCenterV:function(){return this.canvas&&this.canvas.viewportCenterObjectV(this),this},center:function(){return this.canvas&&this.canvas.centerObject(this),this},viewportCenter:function(){return this.canvas&&this.canvas.viewportCenterObject(this),this},remove:function(){return this.canvas&&this.canvas.remove(this),this},getLocalPointer:function(t,i){i=i||this.canvas.getPointer(t);var r=new e.Point(i.x,i.y),n=this._getLeftTopCoords();return this.angle&&(r=e.util.rotatePoint(r,n,o(-this.angle))),{x:r.x-n.x,y:r.y-n.y}},_setupCompositeOperation:function(t){this.globalCompositeOperation&&(t.globalCompositeOperation=this.globalCompositeOperation)}}),e.util.createAccessors(e.Object),e.Object.prototype.rotate=e.Object.prototype.setAngle,i(e.Object.prototype,e.Observable),e.Object.NUM_FRACTION_DIGITS=2,e.Object._fromObject=function(t,i,n,s,o){var a=e[t];if(i=r(i,!0),!s){var h=o?new a(i[o],i):new a(i);return n&&n(h),h}e.util.enlivenPatterns([i.fill,i.stroke],function(t){i.fill=t[0],i.stroke=t[1];var e=o?new a(i[o],i):new a(i);n&&n(e)})},e.Object.__uid=0)}("undefined"!=typeof exports?exports:this),function(){var t=fabric.util.degreesToRadians,e={left:-.5,center:0,right:.5},i={top:-.5,center:0,bottom:.5};fabric.util.object.extend(fabric.Object.prototype,{translateToGivenOrigin:function(t,r,n,s,o){var a,h,c,l=t.x,u=t.y;return"string"==typeof r?r=e[r]:r-=.5,"string"==typeof s?s=e[s]:s-=.5,a=s-r,"string"==typeof n?n=i[n]:n-=.5,"string"==typeof o?o=i[o]:o-=.5,h=o-n,(a||h)&&(c=this._getTransformedDimensions(),l=t.x+a*c.x,u=t.y+h*c.y),new fabric.Point(l,u)},translateToCenterPoint:function(e,i,r){var n=this.translateToGivenOrigin(e,i,r,"center","center");return this.angle?fabric.util.rotatePoint(n,e,t(this.angle)):n},translateToOriginPoint:function(e,i,r){var n=this.translateToGivenOrigin(e,"center","center",i,r);return this.angle?fabric.util.rotatePoint(n,e,t(this.angle)):n},getCenterPoint:function(){var t=new fabric.Point(this.left,this.top);return this.translateToCenterPoint(t,this.originX,this.originY)},getPointByOrigin:function(t,e){var i=this.getCenterPoint();return this.translateToOriginPoint(i,t,e)},toLocalPoint:function(e,i,r){var n,s,o=this.getCenterPoint();return n="undefined"!=typeof i&&"undefined"!=typeof r?this.translateToGivenOrigin(o,"center","center",i,r):new fabric.Point(this.left,this.top),s=new fabric.Point(e.x,e.y),this.angle&&(s=fabric.util.rotatePoint(s,o,-t(this.angle))),s.subtractEquals(n)},setPositionByOrigin:function(t,e,i){var r=this.translateToCenterPoint(t,e,i),n=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",n.x),this.set("top",n.y)},adjustPosition:function(i){var r,n,s=t(this.angle),o=this.getWidth(),a=Math.cos(s)*o,h=Math.sin(s)*o;r="string"==typeof this.originX?e[this.originX]:this.originX-.5,n="string"==typeof i?e[i]:i-.5,this.left+=a*(n-r),this.top+=h*(n-r),this.setCoords(),this.originX=i},_setOriginToCenter:function(){this._originalOriginX=this.originX,this._originalOriginY=this.originY;var t=this.getCenterPoint();this.originX="center",this.originY="center",this.left=t.x,this.top=t.y},_resetOrigin:function(){var t=this.translateToOriginPoint(this.getCenterPoint(),this._originalOriginX,this._originalOriginY); +this.originX=this._originalOriginX,this.originY=this._originalOriginY,this.left=t.x,this.top=t.y,this._originalOriginX=null,this._originalOriginY=null},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","top")}})}(),function(){function t(t){return[new fabric.Point(t.tl.x,t.tl.y),new fabric.Point(t.tr.x,t.tr.y),new fabric.Point(t.br.x,t.br.y),new fabric.Point(t.bl.x,t.bl.y)]}var e=fabric.util.degreesToRadians,i=fabric.util.multiplyTransformMatrices;fabric.util.object.extend(fabric.Object.prototype,{oCoords:null,aCoords:null,getCoords:function(e,i){this.oCoords||this.setCoords();var r=e?this.aCoords:this.oCoords;return t(i?this.calcCoords(e):r)},intersectsWithRect:function(t,e,i,r){var n=this.getCoords(i,r),s=fabric.Intersection.intersectPolygonRectangle(n,t,e);return"Intersection"===s.status},intersectsWithObject:function(t,e,i){var r=fabric.Intersection.intersectPolygonPolygon(this.getCoords(e,i),t.getCoords(e,i));return"Intersection"===r.status||t.isContainedWithinObject(this,e,i)||this.isContainedWithinObject(t,e,i)},isContainedWithinObject:function(t,e,i){for(var r=this.getCoords(e,i),n=0,s=t._getImageLines(i?t.calcCoords(e):e?t.aCoords:t.oCoords);n<4;n++)if(!t.containsPoint(r[n],s))return!1;return!0},isContainedWithinRect:function(t,e,i,r){var n=this.getBoundingRect(i,r);return n.left>=t.x&&n.left+n.width<=e.x&&n.top>=t.y&&n.top+n.height<=e.y},containsPoint:function(t,e,i,r){var e=e||this._getImageLines(r?this.calcCoords(i):i?this.aCoords:this.oCoords),n=this._findCrossPoints(t,e);return 0!==n&&n%2===1},isOnScreen:function(t){if(!this.canvas)return!1;for(var e,i=this.canvas.vptCoords.tl,r=this.canvas.vptCoords.br,n=this.getCoords(!0,t),s=0;s<4;s++)if(e=n[s],e.x<=r.x&&e.x>=i.x&&e.y<=r.y&&e.y>=i.y)return!0;return!1},_getImageLines:function(t){return{topline:{o:t.tl,d:t.tr},rightline:{o:t.tr,d:t.br},bottomline:{o:t.br,d:t.bl},leftline:{o:t.bl,d:t.tl}}},_findCrossPoints:function(t,e){var i,r,n,s,o,a,h=0;for(var c in e)if(a=e[c],!(a.o.y=t.y&&a.d.y>=t.y||(a.o.x===a.d.x&&a.o.x>=t.x?o=a.o.x:(i=0,r=(a.d.y-a.o.y)/(a.d.x-a.o.x),n=t.y-i*t.x,s=a.o.y-r*a.o.x,o=-(n-s)/(i-r)),o>=t.x&&(h+=1),2!==h)))break;return h},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(t,e){var i=this.getCoords(t,e);return fabric.util.makeBoundingBoxFromPoints(i)},getWidth:function(){return this._getTransformedDimensions().x},getHeight:function(){return this._getTransformedDimensions().y},_constrainScale:function(t){return Math.abs(t)0?Math.atan(o/s):0,l=s/Math.cos(c)/2,u=Math.cos(c+i)*l,f=Math.sin(c+i)*l,d=this.getCenterPoint(),g=t?d:fabric.util.transformPoint(d,r),p=new fabric.Point(g.x-u,g.y-f),v=new fabric.Point(p.x+s*h,p.y+s*a),b=new fabric.Point(p.x-o*a,p.y+o*h),m=new fabric.Point(g.x+u,g.y+f);if(!t)var _=new fabric.Point((p.x+b.x)/2,(p.y+b.y)/2),y=new fabric.Point((v.x+p.x)/2,(v.y+p.y)/2),x=new fabric.Point((m.x+v.x)/2,(m.y+v.y)/2),C=new fabric.Point((m.x+b.x)/2,(m.y+b.y)/2),S=new fabric.Point(y.x+a*this.rotatingPointOffset,y.y-h*this.rotatingPointOffset);var g={tl:p,tr:v,br:m,bl:b};return t||(g.ml=_,g.mt=y,g.mr=x,g.mb=C,g.mtr=S),g},setCoords:function(t,e){return this.oCoords=this.calcCoords(t),e||(this.aCoords=this.calcCoords(!0)),t||this._setCornerCoords&&this._setCornerCoords(),this},_calcRotateMatrix:function(){if(this.angle){var t=e(this.angle),i=Math.cos(t),r=Math.sin(t);return[i,r,-r,i,0,0]}return fabric.iMatrix.concat()},calcTransformMatrix:function(t){var e=this.getCenterPoint(),r=[1,0,0,1,e.x,e.y],n=this._calcRotateMatrix(),s=this._calcDimensionsTransformMatrix(this.skewX,this.skewY,!0),o=this.group&&!t?this.group.calcTransformMatrix():fabric.iMatrix.concat();return o=i(o,r),o=i(o,n),o=i(o,s)},_calcDimensionsTransformMatrix:function(t,r,n){var s=[1,0,Math.tan(e(t)),1],o=[1,Math.tan(e(r)),0,1],a=this.scaleX*(n&&this.flipX?-1:1),h=this.scaleY*(n&&this.flipY?-1:1),c=[a,0,0,h],l=i(c,s,!0);return i(l,o,!0)},_getNonTransformedDimensions:function(){var t=this.strokeWidth,e=this.width+t,i=this.height+t;return{x:e,y:i}},_getTransformedDimensions:function(t,e){"undefined"==typeof t&&(t=this.skewX),"undefined"==typeof e&&(e=this.skewY);var i,r,n=this._getNonTransformedDimensions(),s=n.x/2,o=n.y/2,a=[{x:-s,y:-o},{x:s,y:-o},{x:-s,y:o},{x:s,y:o}],h=this._calcDimensionsTransformMatrix(t,e,!1);for(i=0;i\n'),t?t(e.join("")):e.join("")}}),i.Line.ATTRIBUTE_NAMES=i.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),i.Line.fromElement=function(t,e){e=e||{};var n=i.parseAttributes(t,i.Line.ATTRIBUTE_NAMES),s=[n.x1||0,n.y1||0,n.x2||0,n.y2||0];return e.originX="left",e.originY="top",new i.Line(s,r(n,e))},i.Line.fromObject=function(t,e,r){function s(t){delete t.points,e&&e(t)}var o=n(t,!0);o.points=[t.x1,t.y1,t.x2,t.y2];var a=i.Object._fromObject("Line",o,s,r,"points");return a&&delete a.points,a}}("undefined"!=typeof exports?exports:this),function(t){"use strict";function e(t){return"radius"in t&&t.radius>=0}var i=t.fabric||(t.fabric={}),r=Math.PI,n=i.util.object.extend;if(i.Circle)return void i.warn("fabric.Circle is already defined.");var s=i.Object.prototype.cacheProperties.concat();s.push("radius"),i.Circle=i.util.createClass(i.Object,{type:"circle",radius:0,startAngle:0,endAngle:2*r,cacheProperties:s,initialize:function(t){this.callSuper("initialize",t),this.set("radius",t&&t.radius||0)},_set:function(t,e){return this.callSuper("_set",t,e),"radius"===t&&this.setRadius(e),this},toObject:function(t){return this.callSuper("toObject",["radius","startAngle","endAngle"].concat(t))},toSVG:function(t){var e=this._createBaseSVGMarkup(),i=0,n=0,s=(this.endAngle-this.startAngle)%(2*r);if(0===s)this.group&&"path-group"===this.group.type&&(i=this.left+this.radius,n=this.top+this.radius),e.push("\n');else{var o=Math.cos(this.startAngle)*this.radius,a=Math.sin(this.startAngle)*this.radius,h=Math.cos(this.endAngle)*this.radius,c=Math.sin(this.endAngle)*this.radius,l=s>r?"1":"0";e.push('\n')}return t?t(e.join("")):e.join("")},_render:function(t,e){t.beginPath(),t.arc(e?this.left+this.radius:0,e?this.top+this.radius:0,this.radius,this.startAngle,this.endAngle,!1),this._renderFill(t),this._renderStroke(t)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(t){return this.radius=t,this.set("width",2*t).set("height",2*t)}}),i.Circle.ATTRIBUTE_NAMES=i.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),i.Circle.fromElement=function(t,r){r||(r={});var s=i.parseAttributes(t,i.Circle.ATTRIBUTE_NAMES);if(!e(s))throw new Error("value of `r` attribute is required and can not be negative");s.left=s.left||0,s.top=s.top||0;var o=new i.Circle(n(s,r));return o.left-=o.radius,o.top-=o.radius,o},i.Circle.fromObject=function(t,e,r){return i.Object._fromObject("Circle",t,e,r)}}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={});return e.Triangle?void e.warn("fabric.Triangle is already defined"):(e.Triangle=e.util.createClass(e.Object,{type:"triangle",initialize:function(t){this.callSuper("initialize",t),this.set("width",t&&t.width||100).set("height",t&&t.height||100)},_render:function(t){var e=this.width/2,i=this.height/2;t.beginPath(),t.moveTo(-e,i),t.lineTo(0,-i),t.lineTo(e,i),t.closePath(),this._renderFill(t),this._renderStroke(t)},_renderDashedStroke:function(t){var i=this.width/2,r=this.height/2;t.beginPath(),e.util.drawDashedLine(t,-i,r,0,-r,this.strokeDashArray),e.util.drawDashedLine(t,0,-r,i,r,this.strokeDashArray),e.util.drawDashedLine(t,i,r,-i,r,this.strokeDashArray),t.closePath()},toSVG:function(t){var e=this._createBaseSVGMarkup(),i=this.width/2,r=this.height/2,n=[-i+" "+r,"0 "+-r,i+" "+r].join(",");return e.push("'),t?t(e.join("")):e.join("")}}),void(e.Triangle.fromObject=function(t,i,r){return e.Object._fromObject("Triangle",t,i,r)}))}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=2*Math.PI,r=e.util.object.extend;if(e.Ellipse)return void e.warn("fabric.Ellipse is already defined.");var n=e.Object.prototype.cacheProperties.concat();n.push("rx","ry"),e.Ellipse=e.util.createClass(e.Object,{type:"ellipse",rx:0,ry:0,cacheProperties:n,initialize:function(t){this.callSuper("initialize",t),this.set("rx",t&&t.rx||0),this.set("ry",t&&t.ry||0)},_set:function(t,e){switch(this.callSuper("_set",t,e),t){case"rx":this.rx=e,this.set("width",2*e);break;case"ry":this.ry=e,this.set("height",2*e)}return this},getRx:function(){return this.get("rx")*this.get("scaleX")},getRy:function(){return this.get("ry")*this.get("scaleY")},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},toSVG:function(t){var e=this._createBaseSVGMarkup(),i=0,r=0;return this.group&&"path-group"===this.group.type&&(i=this.left+this.rx,r=this.top+this.ry),e.push("\n'),t?t(e.join("")):e.join("")},_render:function(t,e){t.beginPath(),t.save(),t.transform(1,0,0,this.ry/this.rx,0,0),t.arc(e?this.left+this.rx:0,e?(this.top+this.ry)*this.rx/this.ry:0,this.rx,0,i,!1),t.restore(),this._renderFill(t),this._renderStroke(t)}}),e.Ellipse.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),e.Ellipse.fromElement=function(t,i){i||(i={});var n=e.parseAttributes(t,e.Ellipse.ATTRIBUTE_NAMES);n.left=n.left||0,n.top=n.top||0;var s=new e.Ellipse(r(n,i));return s.top-=s.ry,s.left-=s.rx,s},e.Ellipse.fromObject=function(t,i,r){return e.Object._fromObject("Ellipse",t,i,r)}}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend;if(e.Rect)return void e.warn("fabric.Rect is already defined");var r=e.Object.prototype.stateProperties.concat();r.push("rx","ry"),e.Rect=e.util.createClass(e.Object,{stateProperties:r,type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(t){this.callSuper("initialize",t),this._initRxRy()},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(t,e){if(1===this.width&&1===this.height)return void t.fillRect(-.5,-.5,1,1);var i=this.rx?Math.min(this.rx,this.width/2):0,r=this.ry?Math.min(this.ry,this.height/2):0,n=this.width,s=this.height,o=e?this.left:-this.width/2,a=e?this.top:-this.height/2,h=0!==i||0!==r,c=.4477152502;t.beginPath(),t.moveTo(o+i,a),t.lineTo(o+n-i,a),h&&t.bezierCurveTo(o+n-c*i,a,o+n,a+c*r,o+n,a+r),t.lineTo(o+n,a+s-r),h&&t.bezierCurveTo(o+n,a+s-c*r,o+n-c*i,a+s,o+n-i,a+s),t.lineTo(o+i,a+s),h&&t.bezierCurveTo(o+c*i,a+s,o,a+s-c*r,o,a+s-r),t.lineTo(o,a+r),h&&t.bezierCurveTo(o,a+c*r,o+c*i,a,o+i,a),t.closePath(),this._renderFill(t),this._renderStroke(t)},_renderDashedStroke:function(t){var i=-this.width/2,r=-this.height/2,n=this.width,s=this.height;t.beginPath(),e.util.drawDashedLine(t,i,r,i+n,r,this.strokeDashArray),e.util.drawDashedLine(t,i+n,r,i+n,r+s,this.strokeDashArray),e.util.drawDashedLine(t,i+n,r+s,i,r+s,this.strokeDashArray),e.util.drawDashedLine(t,i,r+s,i,r,this.strokeDashArray),t.closePath()},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},toSVG:function(t){var e=this._createBaseSVGMarkup(),i=this.left,r=this.top;return this.group&&"path-group"===this.group.type||(i=-this.width/2,r=-this.height/2),e.push("\n'),t?t(e.join("")):e.join("")}}),e.Rect.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),e.Rect.fromElement=function(t,r){if(!t)return null;r=r||{};var n=e.parseAttributes(t,e.Rect.ATTRIBUTE_NAMES);n.left=n.left||0,n.top=n.top||0;var s=new e.Rect(i(r?e.util.object.clone(r):{},n));return s.visible=s.visible&&s.width>0&&s.height>0,s},e.Rect.fromObject=function(t,i,r){return e.Object._fromObject("Rect",t,i,r)}}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.util.array.min,n=e.util.array.max,s=e.util.toFixed;if(e.Polyline)return void e.warn("fabric.Polyline is already defined");var o=e.Object.prototype.cacheProperties.concat();o.push("points"),e.Polyline=e.util.createClass(e.Object,{type:"polyline",points:null,minX:0,minY:0,cacheProperties:o,initialize:function(t,e){e=e||{},this.points=t||[],this.callSuper("initialize",e),this._calcDimensions(),"top"in e||(this.top=this.minY),"left"in e||(this.left=this.minX),this.pathOffset={x:this.minX+this.width/2,y:this.minY+this.height/2}},_calcDimensions:function(){var t=this.points,e=r(t,"x"),i=r(t,"y"),s=n(t,"x"),o=n(t,"y");this.width=s-e||0,this.height=o-i||0,this.minX=e||0,this.minY=i||0},toObject:function(t){return i(this.callSuper("toObject",t),{points:this.points.concat()})},toSVG:function(t){for(var e,i=[],r=this._createBaseSVGMarkup(),n=0,o=this.points.length;n\n'),t?t(r.join("")):r.join("")},commonRender:function(t,e){var i,r=this.points.length,n=e?0:this.pathOffset.x,s=e?0:this.pathOffset.y;if(!r||isNaN(this.points[r-1].y))return!1;t.beginPath(),t.moveTo(this.points[0].x-n,this.points[0].y-s);for(var o=0;o"},toObject:function(t){var e=n(this.callSuper("toObject",["sourcePath","pathOffset"].concat(t)),{path:this.path.map(function(t){return t.slice()}),top:this.top,left:this.left});return e},toDatalessObject:function(t){var e=this.toObject(t);return this.sourcePath&&(e.path=this.sourcePath),delete e.sourcePath,e},toSVG:function(t){for(var e=[],i=this._createBaseSVGMarkup(),r="",n=0,s=this.path.length;n\n"),t?t(i.join("")):i.join("")},complexity:function(){return this.path.length},_parsePath:function(){for(var t,e,i,r,n,s=[],o=[],c=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:e[-+]?\d+)?)/gi,l=0,u=this.path.length;lp)for(var b=1,m=n.length;b\n");for(var s=0,o=e.length;s\n"),t?t(n.join("")):n.join("")},toString:function(){return"#"},isSameColor:function(){var t=this.getObjects()[0].get("fill")||"";return"string"==typeof t&&(t=t.toLowerCase(),this.getObjects().every(function(e){var i=e.get("fill")||"";return"string"==typeof i&&i.toLowerCase()===t}))},complexity:function(){return this.paths.reduce(function(t,e){return t+(e&&e.complexity?e.complexity():0)},0)},getObjects:function(){return this.paths}}),e.PathGroup.fromObject=function(t,i){var r=t.paths;delete t.paths,"string"==typeof orignalPaths?e.loadSVGFromURL(r,function(n){var s=r,o=e.util.groupSVGElements(n,t,s);t.paths=r,i(o)}):e.util.enlivenObjects(r,function(n){var s=new e.PathGroup(n,t);t.paths=r,i(s)})},void(e.PathGroup.async=!0))}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.util.array.min,n=e.util.array.max;if(!e.Group){var s={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};e.Group=e.util.createClass(e.Object,e.Collection,{type:"group",strokeWidth:0,subTargetCheck:!1,initialize:function(t,e,i){e=e||{},this._objects=[],i&&this.callSuper("initialize",e),this._objects=t||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},e.originX&&(this.originX=e.originX),e.originY&&(this.originY=e.originY),i?this._updateObjectsCoords(!0):(this._calcBounds(),this._updateObjectsCoords(),this.callSuper("initialize",e)),this.setCoords(),this.saveCoords()},_updateObjectsCoords:function(t){for(var e=this.getCenterPoint(),i=this._objects.length;i--;)this._updateObjectCoords(this._objects[i],e,t)},_updateObjectCoords:function(t,e,i){if(t.__origHasControls=t.hasControls,t.hasControls=!1,!i){var r=t.getLeft(),n=t.getTop(),s=!0,o=!0;t.set({left:r-e.x,top:n-e.y}),t.setCoords(s,o)}},toString:function(){return"#"},addWithUpdate:function(t){return this._restoreObjectsState(),e.util.resetObjectTransform(this),t&&(this._objects.push(t),t.group=this,t._set("canvas",this.canvas)),this.forEachObject(this._setObjectActive,this),this._calcBounds(),this._updateObjectsCoords(),this.dirty=!0,this},_setObjectActive:function(t){t.set("active",!0),t.group=this},removeWithUpdate:function(t){return this._restoreObjectsState(),e.util.resetObjectTransform(this),this.forEachObject(this._setObjectActive,this),this.remove(t),this._calcBounds(),this._updateObjectsCoords(),this.dirty=!0,this},_onObjectAdded:function(t){this.dirty=!0,t.group=this,t._set("canvas",this.canvas)},_onObjectRemoved:function(t){this.dirty=!0,delete t.group,t.set("active",!1)},delegatedProperties:{fill:!0,stroke:!0,strokeWidth:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textAlign:!0,backgroundColor:!0},_set:function(t,e){var i=this._objects.length;if(this.delegatedProperties[t]||"canvas"===t)for(;i--;)this._objects[i].set(t,e);else for(;i--;)this._objects[i].setOnGroup(t,e);this.callSuper("_set",t,e)},toObject:function(t){var e=this.getObjects().map(function(e){var i=e.includeDefaultValues;e.includeDefaultValues=e.group.includeDefaultValues;var r=e.toObject(t);return e.includeDefaultValues=i,r});return i(this.callSuper("toObject",t),{objects:e})},render:function(t){this._transformDone=!0,this.callSuper("render",t),this._transformDone=!1},drawObject:function(t){for(var e=0,i=this._objects.length;e\n');for(var i=0,r=this._objects.length;i\n"),t?t(e.join("")):e.join("")},get:function(t){if(t in s){if(this[t])return this[t];for(var e=0,i=this._objects.length;e\n',"\n"),this.stroke||this.strokeDashArray){var o=this.fill;this.fill=null,e.push("\n'),this.fill=o}return e.push("\n"),t?t(e.join("")):e.join("")},getSrc:function(t){var e=t?this._element:this._originalElement;return e?fabric.isLikelyNode?e._src:e.src:this.src||""},setSrc:function(t,e,i){fabric.util.loadImage(t,function(t){return this.setElement(t,e,i)},this,i&&i.crossOrigin)},toString:function(){return'#'},applyFilters:function(t,e,i,r){if(e=e||this.filters,i=i||this._originalElement){var n,s,o=fabric.util.createImage(),a=this.canvas?this.canvas.getRetinaScaling():fabric.devicePixelRatio,h=this.minimumScaleTrigger/a,c=this;if(0===e.length)return this._element=i,t&&t(this),i;var l=fabric.util.createCanvasElement();return l.width=i.width,l.height=i.height,l.getContext("2d").drawImage(i,0,0,i.width,i.height),e.forEach(function(t){t&&(r?(n=c.scaleX0?90*Math.round((t-1)/90):90*Math.round(t/90)},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(t){t=t||{};var e=function(){},i=t.onComplete||e,r=t.onChange||e,n=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(t){n.setAngle(t),r()},onComplete:function(){n.setCoords(),i()},onStart:function(){n.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(t){return t.straighten(),this.renderAll(),this},fxStraightenObject:function(t){return t.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.BaseFilter=fabric.util.createClass({type:"BaseFilter",initialize:function(t){t&&this.setOptions(t)},setOptions:function(t){for(var e in t)this[e]=t[e]},toObject:function(){return{type:this.type}},toJSON:function(){return this.toObject()}}),fabric.Image.filters.BaseFilter.fromObject=function(t,e){var i=new fabric.Image.filters[t.type](t);return e&&e(i),i},function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.Image.filters,n=e.util.createClass;r.Brightness=n(r.BaseFilter,{type:"Brightness",initialize:function(t){t=t||{},this.brightness=t.brightness||0},applyTo:function(t){for(var e=t.getContext("2d"),i=e.getImageData(0,0,t.width,t.height),r=i.data,n=this.brightness,s=0,o=r.length;sb||o<0||o>v||(h=4*(a*v+o),c=l[S*d+w],e+=p[h]*c,i+=p[h+1]*c,r+=p[h+2]*c,n+=p[h+3]*c);_[s]=e,_[s+1]=i,_[s+2]=r,_[s+3]=n+y*(255-n)}u.putImageData(m,0,0)},toObject:function(){return i(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),e.Image.filters.Convolute.fromObject=e.Image.filters.BaseFilter.fromObject}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.Image.filters,n=e.util.createClass;r.GradientTransparency=n(r.BaseFilter,{type:"GradientTransparency",initialize:function(t){t=t||{},this.threshold=t.threshold||100},applyTo:function(t){for(var e=t.getContext("2d"),i=e.getImageData(0,0,t.width,t.height),r=i.data,n=this.threshold,s=r.length,o=0,a=r.length;o-1?t.channel:0},applyTo:function(t){if(this.mask){var i,r=t.getContext("2d"),n=r.getImageData(0,0,t.width,t.height),s=n.data,o=this.mask.getElement(),a=e.util.createCanvasElement(),h=this.channel,c=n.width*n.height*4;a.width=t.width,a.height=t.height,a.getContext("2d").drawImage(o,0,0,t.width,t.height);var l=a.getContext("2d").getImageData(0,0,t.width,t.height),u=l.data;for(i=0;ic&&i>c&&r>c&&l(e-i)i&&(l=2,f=-1),a>n&&(u=2,d=-1),h=c.getImageData(0,0,i,n),t.width=o(s,i),t.height=o(a,n),c.putImageData(h,0,0);!g||!p;)i=v,n=b,s*ft)return 0;if(e*=Math.PI,s(e)<1e-16)return 1;var i=e/t;return h(e)*h(i)/e/i}}function f(t){var h,c,u,d,g,k,M,P,A,D,E;for(T.x=(t+.5)*_,j.x=r(T.x),h=0;h=e)){D=r(1e3*s(c-T.x)),O[D]||(O[D]={});for(var I=j.y-w;I<=j.y+w;I++)I<0||I>=o||(E=r(1e3*s(I-T.y)),O[D][E]||(O[D][E]=m(n(i(D*x,2)+i(E*C,2))/1e3)),u=O[D][E],u>0&&(d=4*(I*e+c),g+=u,k+=u*v[d],M+=u*v[d+1],P+=u*v[d+2],A+=u*v[d+3]))}d=4*(h*a+t),b[d]=k/g,b[d+1]=M/g,b[d+2]=P/g,b[d+3]=A/g}return++t1&&L<-1||(x=2*L*L*L-3*L*L+1,x>0&&(I=4*(E+M*e),j+=x*p[I+3],S+=x,p[I+3]<255&&(x=x*p[I+3]/250),w+=x*p[I],O+=x*p[I+1],T+=x*p[I+2],C+=x))}b[y]=w/C,b[y+1]=O/C,b[y+2]=T/C,b[y+3]=j/S}return v},toObject:function(){return{type:this.type,scaleX:this.scaleX,scaleY:this.scaleY,resizeType:this.resizeType,lanczosLobes:this.lanczosLobes}}}),e.Image.filters.Resize.fromObject=e.Image.filters.BaseFilter.fromObject}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.Image.filters,n=e.util.createClass;r.ColorMatrix=n(r.BaseFilter,{type:"ColorMatrix",initialize:function(t){t||(t={}),this.matrix=t.matrix||[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0]},applyTo:function(t){var e,i,r,n,s,o=t.getContext("2d"),a=o.getImageData(0,0,t.width,t.height),h=a.data,c=h.length,l=this.matrix;for(e=0;e'},_getCacheCanvasDimensions:function(){var t=this.callSuper("_getCacheCanvasDimensions"),e=2*Math.ceil(this.fontSize);return t.width+=e,t.height+=e,t},_render:function(t){this._setTextStyles(t),this.group&&"path-group"===this.group.type&&t.translate(this.left,this.top),this._renderTextLinesBackground(t),this._renderText(t),this._renderTextDecoration(t)},_renderText:function(t){this._renderTextFill(t),this._renderTextStroke(t)},_setTextStyles:function(t){t.textBaseline="alphabetic",t.font=this._getFontDeclaration()},_getTextHeight:function(){return this._getHeightOfSingleLine()+(this._textLines.length-1)*this._getHeightOfLine()},_getTextWidth:function(t){for(var e=this._getLineWidth(t,0),i=1,r=this._textLines.length;ie&&(e=n)}return e},_renderChars:function(t,e,i,r,n){var s,o,a=t.slice(0,-4);if(this[a].toLive){var h=-this.width/2+this[a].offsetX||0,c=-this.height/2+this[a].offsetY||0;e.save(),e.translate(h,c),r-=h,n-=c}if(0!==this.charSpacing){var l=this._getWidthOfCharSpacing();i=i.split("");for(var u=0,f=i.length;u0?o:0}else e[t](i,r,n);this[a].toLive&&e.restore()},_renderTextLine:function(t,e,i,r,n,s){n-=this.fontSize*this._fontSizeFraction;var o=this._getLineWidth(e,s);if("justify"!==this.textAlign||this.width0?u/f:0,g=0,p=0,v=h.length;p0?n:0},_getLeftOffset:function(){return-this.width/2},_getTopOffset:function(){return-this.height/2},isEmptyStyles:function(){return!0},_renderTextCommon:function(t,e){for(var i=0,r=this._getLeftOffset(),n=this._getTopOffset(),s=0,o=this._textLines.length;s0&&(r=this._getLineLeftOffset(i),t.fillRect(this._getLeftOffset()+r,this._getTopOffset()+n,i,e/this.lineHeight)),n+=e;t.fillStyle=s,this._removeShadow(t)}},_getLineLeftOffset:function(t){return"center"===this.textAlign?(this.width-t)/2:"right"===this.textAlign?this.width-t:0},_clearCache:function(){this.__lineWidths=[],this.__lineHeights=[]},_shouldClearDimensionCache:function(){var t=this._forceClearCache;return t||(t=this.hasStateChanged("_dimensionAffectingProps")),t&&(this.saveState({propertySet:"_dimensionAffectingProps"}),this.dirty=!0),t},_getLineWidth:function(t,e){if(this.__lineWidths[e])return this.__lineWidths[e]===-1?this.width:this.__lineWidths[e];var i,r,n=this._textLines[e];return i=""===n?0:this._measureLine(t,e),this.__lineWidths[e]=i,i&&"justify"===this.textAlign&&(r=n.split(/\s+/),r.length>1&&(this.__lineWidths[e]=-1)),i},_getWidthOfCharSpacing:function(){return 0!==this.charSpacing?this.fontSize*this.charSpacing/1e3:0},_measureLine:function(t,e){var i,r,n=this._textLines[e],s=t.measureText(n).width,o=0;return 0!==this.charSpacing&&(i=n.split("").length,o=(i-1)*this._getWidthOfCharSpacing()),r=s+o,r>0?r:0},_renderTextDecoration:function(t){function e(e){var n,s,o,a,h,c,l,u=0;for(n=0,s=r._textLines.length;n-1&&n.push(.85),this.textDecoration.indexOf("line-through")>-1&&n.push(.43),this.textDecoration.indexOf("overline")>-1&&n.push(-.12),n.length>0&&e(n)}},_getFontDeclaration:function(){return[e.isLikelyNode?this.fontWeight:this.fontStyle,e.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",e.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(t,e){this.visible&&(this._shouldClearDimensionCache()&&(this._setTextStyles(t),this._initDimensions(t)),this.callSuper("render",t,e))},_splitTextIntoLines:function(){return this.text.split(this._reNewline)},toObject:function(t){var e=["text","fontSize","fontWeight","fontFamily","fontStyle","lineHeight","textDecoration","textAlign","textBackgroundColor","charSpacing"].concat(t);return this.callSuper("toObject",e)},toSVG:function(t){this.ctx||(this.ctx=e.util.createCanvasElement().getContext("2d"));var i=this._createBaseSVGMarkup(),r=this._getSVGLeftTopOffsets(this.ctx),n=this._getSVGTextAndBg(r.textTop,r.textLeft);return this._wrapSVGTextAndBg(i,n),t?t(i.join("")):i.join("")},_getSVGLeftTopOffsets:function(t){var e=this._getHeightOfLine(t,0),i=-this.width/2,r=0;return{textLeft:i+(this.group&&"path-group"===this.group.type?this.left:0),textTop:r+(this.group&&"path-group"===this.group.type?-this.top:0),lineTop:e}},_wrapSVGTextAndBg:function(t,e){var i=!0,r=this.getSvgFilter(),n=""===r?"":' style="'+r+'"';t.push("\t\n",e.textBgRects.join(""),"\t\t\n',e.textSpans.join(""),"\t\t\n","\t\n")},_getSVGTextAndBg:function(t,e){var i=[],r=[],n=0;this._setSVGBg(r);for(var s=0,o=this._textLines.length;s",e.util.string.escapeXml(this._textLines[t]),"\n")},_setSVGTextLineJustifed:function(t,n,s,o){var a=e.util.createCanvasElement().getContext("2d");this._setTextStyles(a);var h,c,l=this._textLines[t],u=l.split(/\s+/),f=this._getWidthOfWords(a,u.join("")),d=this.width-f,g=u.length-1,p=g>0?d/g:0,v=this._getFillAttributes(this.fill);for(o+=this._getLineLeftOffset(this._getLineWidth(a,t)),t=0,c=u.length;t",e.util.string.escapeXml(h),"\n"),o+=this._getWidthOfWords(a,h)+p},_setSVGTextLineBg:function(t,e,n,s,o){t.push("\t\t\n')},_setSVGBg:function(t){this.backgroundColor&&t.push("\t\t\n')},_getFillAttributes:function(t){var i=t&&"string"==typeof t?new e.Color(t):"";return i&&i.getSource()&&1!==i.getAlpha()?'opacity="'+i.getAlpha()+'" fill="'+i.setAlpha(1).toRgb()+'"':'fill="'+t+'"'},_set:function(t,e){this.callSuper("_set",t,e),this._dimensionAffectingProps.indexOf(t)>-1&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),e.Text.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x y dx dy font-family font-style font-weight font-size text-decoration text-anchor".split(" ")),e.Text.DEFAULT_SVG_FONT_SIZE=16,e.Text.fromElement=function(t,i){if(!t)return null;var r=e.parseAttributes(t,e.Text.ATTRIBUTE_NAMES);i=e.util.object.extend(i?e.util.object.clone(i):{},r),i.top=i.top||0,i.left=i.left||0,"dx"in r&&(i.left+=r.dx),"dy"in r&&(i.top+=r.dy),"fontSize"in i||(i.fontSize=e.Text.DEFAULT_SVG_FONT_SIZE),i.originX||(i.originX="left");var n="";"textContent"in t?n=t.textContent:"firstChild"in t&&null!==t.firstChild&&"data"in t.firstChild&&null!==t.firstChild.data&&(n=t.firstChild.data),n=n.replace(/^\s+|\s+$|\n+/g,"").replace(/\s+/g," ");var s=new e.Text(n,i),o=s.getHeight()/s.height,a=(s.height+s.strokeWidth)*s.lineHeight-s.height,h=a*o,c=s.getHeight()+h,l=0;return"left"===s.originX&&(l=s.getWidth()/2),"right"===s.originX&&(l=-s.getWidth()/2),s.set({left:s.getLeft()+l,top:s.getTop()-c/2+s.fontSize*(.18+s._fontSizeFraction)/s.lineHeight}),s},e.Text.fromObject=function(t,i,r){return e.Object._fromObject("Text",t,i,r,"text")},e.util.createAccessors(e.Text)}("undefined"!=typeof exports?exports:this),function(){var t=fabric.util.object.clone;fabric.IText=fabric.util.createClass(fabric.Text,fabric.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"#333",cursorDelay:1e3,cursorDuration:600,styles:null,caching:!0,_reSpace:/\s|\n/,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,__widthOfSpace:[],initialize:function(t,e){this.styles=e?e.styles||{}:{},this.callSuper("initialize",t,e),this.initBehavior()},_clearCache:function(){this.callSuper("_clearCache"),this.__widthOfSpace=[]},isEmptyStyles:function(){if(!this.styles)return!0;var t=this.styles;for(var e in t)for(var i in t[e])for(var r in t[e][i])return!1;return!0},setSelectionStart:function(t){t=Math.max(t,0),this._updateAndFire("selectionStart",t)},setSelectionEnd:function(t){t=Math.min(t,this.text.length),this._updateAndFire("selectionEnd",t)},_updateAndFire:function(t,e){this[t]!==e&&(this._fireSelectionChanged(),this[t]=e),this._updateTextarea()},_fireSelectionChanged:function(){this.fire("selection:changed"),this.canvas&&this.canvas.fire("text:selection:changed",{target:this})},getSelectionStyles:function(t,e){if(2===arguments.length){for(var i=[],r=t;r0?a:0,lineLeft:r},this.cursorOffsetCache=i,this.cursorOffsetCache},renderCursor:function(t,e){var i=this.get2DCursorLocation(),r=i.lineIndex,n=i.charIndex,s=this.getCurrentCharFontSize(r,n),o=0===r&&0===n?this._getLineLeftOffset(this._getLineWidth(e,r)):t.leftOffset,a=this.scaleX*this.canvas.getZoom(),h=this.cursorWidth/a;e.fillStyle=this.getCurrentCharColor(r,n),e.globalAlpha=this.__isMousedown?1:this._currentCursorOpacity,e.fillRect(t.left+o-h/2,t.top+t.topOffset,h,s)},renderSelection:function(t,e,i){i.fillStyle=this.selectionColor;for(var r=this.get2DCursorLocation(this.selectionStart),n=this.get2DCursorLocation(this.selectionEnd),s=r.lineIndex,o=n.lineIndex,a=s;a<=o;a++){var h=this._getLineLeftOffset(this._getLineWidth(i,a))||0,c=this._getHeightOfLine(this.ctx,a),l=0,u=0,f=this._textLines[a];if(a===s){for(var d=0,g=f.length;d=r.charIndex&&(a!==o||ds&&a1)&&(c/=this.lineHeight),i.fillRect(e.left+h,e.top+e.topOffset,u>0?u:0,c),e.topOffset+=l}},_renderChars:function(t,e,i,r,n,s,o){if(this.isEmptyStyles())return this._renderCharsFast(t,e,i,r,n);o=o||0;var a,h,c=this._getHeightOfLine(e,s),l="";e.save(),n-=c/this.lineHeight*this._fontSizeFraction;for(var u=o,f=i.length+o;u<=f;u++)a=a||this.getCurrentCharStyle(s,u),h=this.getCurrentCharStyle(s,u+1),(this._hasStyleChanged(a,h)||u===f)&&(this._renderChar(t,e,s,u-1,l,r,n,c),l="",a=h),l+=i[u-o];e.restore()},_renderCharsFast:function(t,e,i,r,n){"fillText"===t&&this.fill&&this.callSuper("_renderChars",t,e,i,r,n),"strokeText"===t&&(this.stroke&&this.strokeWidth>0||this.skipFillStrokeCheck)&&this.callSuper("_renderChars",t,e,i,r,n)},_renderChar:function(t,e,i,r,n,s,o,a){var h,c,l,u,f,d,g,p,v,b=this._getStyleDeclaration(i,r);if(b?(c=this._getHeightOfChar(e,n,i,r),u=b.stroke,l=b.fill,d=b.textDecoration):c=this.fontSize,u=(u||this.stroke)&&"strokeText"===t,l=(l||this.fill)&&"fillText"===t,b&&e.save(),h=this._applyCharStylesGetWidth(e,n,i,r,b||null),d=d||this.textDecoration,b&&b.textBackgroundColor&&this._removeShadow(e),0!==this.charSpacing){p=this._getWidthOfCharSpacing(),g=n.split(""),h=0;for(var m,_=0,y=g.length;_0?v:0}else l&&e.fillText(n,s,o),u&&e.strokeText(n,s,o);(d||""!==d)&&(f=this._fontSizeFraction*a/this.lineHeight,this._renderCharDecoration(e,d,s,o,f,h,c)),b&&e.restore(),e.translate(h,0)},_hasStyleChanged:function(t,e){return t.fill!==e.fill||t.fontSize!==e.fontSize||t.textBackgroundColor!==e.textBackgroundColor||t.textDecoration!==e.textDecoration||t.fontFamily!==e.fontFamily||t.fontWeight!==e.fontWeight||t.fontStyle!==e.fontStyle||t.stroke!==e.stroke||t.strokeWidth!==e.strokeWidth},_renderCharDecoration:function(t,e,i,r,n,s,o){if(e){var a,h,c=o/15,l={underline:r+o/10,"line-through":r-o*(this._fontSizeFraction+this._fontSizeMult-1)+c,overline:r-(this._fontSizeMult-this._fontSizeFraction)*o},u=["underline","line-through","overline"];for(a=0;a-1&&t.fillRect(i,l[h],s,c)}},_renderTextLine:function(t,e,i,r,n,s){this.isEmptyStyles()||(n+=this.fontSize*(this._fontSizeFraction+.03)),this.callSuper("_renderTextLine",t,e,i,r,n,s)},_renderTextDecoration:function(t){if(this.isEmptyStyles())return this.callSuper("_renderTextDecoration",t)},_renderTextLinesBackground:function(t){this.callSuper("_renderTextLinesBackground",t);var e,i,r,n,s,o,a,h,c,l,u=0,f=this._getLeftOffset(),d=this._getTopOffset(),g="";t.save();for(var p=0,v=this._textLines.length;p0?n:0},_getHeightOfChar:function(t,e,i){var r=this._getStyleDeclaration(e,i);return r&&r.fontSize?r.fontSize:this.fontSize},_getWidthOfCharsAt:function(t,e,i){var r,n,s=0;for(r=0;r0?i:0},_getWidthOfSpace:function(t,e){if(this.__widthOfSpace[e])return this.__widthOfSpace[e];var i=this._textLines[e],r=this._getWidthOfWords(t,i,e,0),n=this.width-r,s=i.length-i.replace(this._reSpacesAndTabs,"").length,o=Math.max(n/s,t.measureText(" ").width);return this.__widthOfSpace[e]=o,o},_getWidthOfWords:function(t,e,i,r){for(var n=0,s=0;sr&&(r=o)}return this.__lineHeights[e]=r*this.lineHeight*this._fontSizeMult,this.__lineHeights[e]},_getTextHeight:function(t){for(var e,i=0,r=0,n=this._textLines.length;r-1;)e++,i--;return t-e},findWordBoundaryRight:function(t){var e=0,i=t;if(this._reSpace.test(this.text.charAt(i)))for(;this._reSpace.test(this.text.charAt(i));)e++,i++;for(;/\S/.test(this.text.charAt(i))&&i-1;)e++,i--;return t-e},findLineBoundaryRight:function(t){for(var e=0,i=t;!/\n/.test(this.text.charAt(i))&&i0&&ithis.__selectionStartOnMouseDown?(this.selectionStart=this.__selectionStartOnMouseDown,this.selectionEnd=e):(this.selectionStart=e,this.selectionEnd=this.__selectionStartOnMouseDown),this.selectionStart===i&&this.selectionEnd===r||(this.restartCursorIfNeeded(),this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()))}},_setEditingProps:function(){this.hoverCursor="text",this.canvas&&(this.canvas.defaultCursor=this.canvas.moveCursor="text"),this.borderColor=this.editingBorderColor,this.hasControls=this.selectable=!1,this.lockMovementX=this.lockMovementY=!0},_updateTextarea:function(){if(this.hiddenTextarea&&!this.inCompositionMode&&(this.cursorOffsetCache={},this.hiddenTextarea.value=this.text,this.hiddenTextarea.selectionStart=this.selectionStart,this.hiddenTextarea.selectionEnd=this.selectionEnd,this.selectionStart===this.selectionEnd)){var t=this._calcTextareaPosition();this.hiddenTextarea.style.left=t.left,this.hiddenTextarea.style.top=t.top,this.hiddenTextarea.style.fontSize=t.fontSize}},_calcTextareaPosition:function(){if(!this.canvas)return{x:1,y:1};var t=this.text.split(""),e=this._getCursorBoundaries(t,"cursor"),i=this.get2DCursorLocation(),r=i.lineIndex,n=i.charIndex,s=this.getCurrentCharFontSize(r,n),o=0===r&&0===n?this._getLineLeftOffset(this._getLineWidth(this.ctx,r)):e.leftOffset,a=this.calcTransformMatrix(),h={x:e.left+o,y:e.top+e.topOffset+s},c=this.canvas.upperCanvasEl,l=c.width-s,u=c.height-s;return h=fabric.util.transformPoint(h,a),h=fabric.util.transformPoint(h,this.canvas.viewportTransform),h.x<0&&(h.x=0),h.x>l&&(h.x=l),h.y<0&&(h.y=0),h.y>u&&(h.y=u),h.x+=this.canvas._offset.left,h.y+=this.canvas._offset.top,{left:h.x+"px",top:h.y+"px",fontSize:s}},_saveEditingProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,defaultCursor:this.canvas&&this.canvas.defaultCursor,moveCursor:this.canvas&&this.canvas.moveCursor}},_restoreEditingProps:function(){this._savedProps&&(this.hoverCursor=this._savedProps.overCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY,this.canvas&&(this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor))},exitEditing:function(){var t=this._textBeforeEdit!==this.text;return this.selected=!1,this.isEditing=!1,this.selectable=!0,this.selectionEnd=this.selectionStart,this.hiddenTextarea&&(this.hiddenTextarea.blur&&this.hiddenTextarea.blur(),this.canvas&&this.hiddenTextarea.parentNode.removeChild(this.hiddenTextarea),this.hiddenTextarea=null),this.abortCursorAnimation(),this._restoreEditingProps(),this._currentCursorOpacity=0,this.fire("editing:exited"),t&&this.fire("modified"),this.canvas&&(this.canvas.off("mouse:move",this.mouseMoveHandler),this.canvas.fire("text:editing:exited",{target:this}),t&&this.canvas.fire("object:modified",{target:this})),this},_removeExtraneousStyles:function(){for(var t in this.styles)this._textLines[t]||delete this.styles[t]},_removeCharsFromTo:function(t,e){for(;e!==t;)this._removeSingleCharAndStyle(t+1),e--;this.selectionStart=t,this.selectionEnd=t},_removeSingleCharAndStyle:function(t){var e="\n"===this.text[t-1],i=e?t:t-1;this.removeStyleObject(e,i),this.text=this.text.slice(0,t-1)+this.text.slice(t),this._textLines=this._splitTextIntoLines()},insertChars:function(t,e){var i;if(this.selectionEnd-this.selectionStart>1&&this._removeCharsFromTo(this.selectionStart,this.selectionEnd),!e&&this.isEmptyStyles())return void this.insertChar(t,!1);for(var r=0,n=t.length;r=i&&(s[parseInt(o,10)-i]=this.styles[e][o],delete this.styles[e][o]);this.styles[e+1]=s}this._forceClearCache=!0},insertCharStyleObject:function(e,i,r){var n=this.styles[e],s=t(n);0!==i||r||(i=1);for(var o in s){var a=parseInt(o,10);a>=i&&(n[a+1]=s[a],s[a-1]||delete n[a])}this.styles[e][i]=r||t(n[i-1]),this._forceClearCache=!0},insertStyleObjects:function(t,e,i){var r=this.get2DCursorLocation(),n=r.lineIndex,s=r.charIndex;this._getLineStyle(n)||this._setLineStyle(n,{}),"\n"===t?this.insertNewlineStyleObject(n,s,e):this.insertCharStyleObject(n,s,i)},shiftLineStyles:function(e,i){var r=t(this.styles);for(var n in this.styles){var s=parseInt(n,10);s>e&&(this.styles[s+i]=r[s],r[s-i]||delete this.styles[s])}},removeStyleObject:function(t,e){var i=this.get2DCursorLocation(e),r=i.lineIndex,n=i.charIndex;this._removeStyleObject(t,i,r,n)},_getTextOnPreviousLine:function(t){return this._textLines[t-1]},_removeStyleObject:function(e,i,r,n){if(e){var s=this._getTextOnPreviousLine(i.lineIndex),o=s?s.length:0;this.styles[r-1]||(this.styles[r-1]={});for(n in this.styles[r])this.styles[r-1][parseInt(n,10)+o]=this.styles[r][n];this.shiftLineStyles(i.lineIndex,-1)}else{var a=this.styles[r];a&&delete a[n];var h=t(a);for(var c in h){var l=parseInt(c,10);l>=n&&0!==l&&(a[l-1]=h[l],delete a[l])}}},insertNewline:function(){this.insertChars("\n")},setSelectionStartEndWithShift:function(t,e,i){i<=t?(e===t?this._selectionDirection="left":"right"===this._selectionDirection&&(this._selectionDirection="left",this.selectionEnd=t),this.selectionStart=i):i>t&&it?this.selectionStart=t:this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd>t?this.selectionEnd=t:this.selectionEnd<0&&(this.selectionEnd=0)}})}(),fabric.util.object.extend(fabric.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+new Date,this.__lastLastClickTime=+new Date,this.__lastPointer={},this.on("mousedown",this.onMouseDown.bind(this))},onMouseDown:function(t){this.__newClickTime=+new Date;var e=this.canvas.getPointer(t.e);this.isTripleClick(e)?(this.fire("tripleclick",t),this._stopEvent(t.e)):this.isDoubleClick(e)&&(this.fire("dblclick",t),this._stopEvent(t.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=e,this.__lastIsEditing=this.isEditing,this.__lastSelected=this.selected},isDoubleClick:function(t){return this.__newClickTime-this.__lastClickTime<500&&this.__lastPointer.x===t.x&&this.__lastPointer.y===t.y&&this.__lastIsEditing},isTripleClick:function(t){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===t.x&&this.__lastPointer.y===t.y},_stopEvent:function(t){t.preventDefault&&t.preventDefault(),t.stopPropagation&&t.stopPropagation()},initCursorSelectionHandlers:function(){this.initMousedownHandler(),this.initMouseupHandler(),this.initClicks()},initClicks:function(){this.on("dblclick",function(t){this.selectWord(this.getSelectionStartFromPointer(t.e))}),this.on("tripleclick",function(t){this.selectLine(this.getSelectionStartFromPointer(t.e))})},initMousedownHandler:function(){this.on("mousedown",function(t){if(this.editable){var e=this.canvas.getPointer(t.e);this.__mousedownX=e.x,this.__mousedownY=e.y,this.__isMousedown=!0,this.selected&&this.setCursorByClick(t.e),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.selectionStart===this.selectionEnd&&this.abortCursorAnimation(),this.renderCursorOrSelection())}})},_isObjectMoved:function(t){var e=this.canvas.getPointer(t);return this.__mousedownX!==e.x||this.__mousedownY!==e.y},initMouseupHandler:function(){this.on("mouseup",function(t){this.__isMousedown=!1,this.editable&&!this._isObjectMoved(t.e)&&(this.__lastSelected&&!this.__corner&&(this.enterEditing(t.e),this.selectionStart===this.selectionEnd?this.initDelayedCursor(!0):this.renderCursorOrSelection()),this.selected=!0)})},setCursorByClick:function(t){var e=this.getSelectionStartFromPointer(t),i=this.selectionStart,r=this.selectionEnd;t.shiftKey?this.setSelectionStartEndWithShift(i,r,e):(this.selectionStart=e,this.selectionEnd=e),this.isEditing&&(this._fireSelectionChanged(),this._updateTextarea())},getSelectionStartFromPointer:function(t){for(var e,i,r=this.getLocalPointer(t),n=0,s=0,o=0,a=0,h=0,c=this._textLines.length;hs?0:1,h=r+a;return this.flipX&&(h=n-h),h>this.text.length&&(h=this.text.length),h}}),fabric.util.object.extend(fabric.IText.prototype,{initHiddenTextarea:function(){this.hiddenTextarea=fabric.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off");var t=this._calcTextareaPosition();this.hiddenTextarea.style.cssText="position: absolute; top: "+t.top+"; left: "+t.left+"; opacity: 0; width: 0px; height: 0px; z-index: -999;",fabric.document.body.appendChild(this.hiddenTextarea),fabric.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this)),fabric.util.addListener(this.hiddenTextarea,"keyup",this.onKeyUp.bind(this)),fabric.util.addListener(this.hiddenTextarea,"input",this.onInput.bind(this)),fabric.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this)),fabric.util.addListener(this.hiddenTextarea,"cut",this.cut.bind(this)),fabric.util.addListener(this.hiddenTextarea,"paste",this.paste.bind(this)),fabric.util.addListener(this.hiddenTextarea,"compositionstart",this.onCompositionStart.bind(this)),fabric.util.addListener(this.hiddenTextarea,"compositionupdate",this.onCompositionUpdate.bind(this)),fabric.util.addListener(this.hiddenTextarea,"compositionend",this.onCompositionEnd.bind(this)),!this._clickHandlerInitialized&&this.canvas&&(fabric.util.addListener(this.canvas.upperCanvasEl,"click",this.onClick.bind(this)),this._clickHandlerInitialized=!0)},_keysMap:{8:"removeChars",9:"exitEditing",27:"exitEditing",13:"insertNewline",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorRight",36:"moveCursorLeft",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown",46:"forwardDelete"},_ctrlKeysMapUp:{67:"copy",88:"cut"},_ctrlKeysMapDown:{65:"selectAll"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(t){if(this.isEditing){if(t.keyCode in this._keysMap)this[this._keysMap[t.keyCode]](t);else{if(!(t.keyCode in this._ctrlKeysMapDown&&(t.ctrlKey||t.metaKey)))return;this[this._ctrlKeysMapDown[t.keyCode]](t)}t.stopImmediatePropagation(),t.preventDefault(),t.keyCode>=33&&t.keyCode<=40?(this.clearContextTop(),this.renderCursorOrSelection()):this.canvas&&this.canvas.renderAll()}},onKeyUp:function(t){return!this.isEditing||this._copyDone?void(this._copyDone=!1):void(t.keyCode in this._ctrlKeysMapUp&&(t.ctrlKey||t.metaKey)&&(this[this._ctrlKeysMapUp[t.keyCode]](t),t.stopImmediatePropagation(),t.preventDefault(),this.canvas&&this.canvas.renderAll()))},onInput:function(t){if(this.isEditing&&!this.inCompositionMode){var e,i,r,n=this.selectionStart||0,s=this.selectionEnd||0,o=this.text.length,a=this.hiddenTextarea.value.length;a>o?(r="left"===this._selectionDirection?s:n,e=a-o,i=this.hiddenTextarea.value.slice(r,r+e)):(e=a-o+s-n,i=this.hiddenTextarea.value.slice(n,n+e)),this.insertChars(i),t.stopPropagation()}},onCompositionStart:function(){this.inCompositionMode=!0,this.prevCompositionLength=0,this.compositionStart=this.selectionStart},onCompositionEnd:function(){this.inCompositionMode=!1},onCompositionUpdate:function(t){var e=t.data;this.selectionStart=this.compositionStart,this.selectionEnd=this.selectionEnd===this.selectionStart?this.compositionStart+this.prevCompositionLength:this.selectionEnd,this.insertChars(e,!1),this.prevCompositionLength=e.length},forwardDelete:function(t){if(this.selectionStart===this.selectionEnd){if(this.selectionStart===this.text.length)return;this.moveCursorRight(t)}this.removeChars(t)},copy:function(t){if(this.selectionStart!==this.selectionEnd){var e=this.getSelectedText(),i=this._getClipboardData(t);i&&i.setData("text",e),fabric.copiedText=e,fabric.copiedTextStyle=this.getSelectionStyles(this.selectionStart,this.selectionEnd),t.stopImmediatePropagation(),t.preventDefault(),this._copyDone=!0}},paste:function(t){var e=null,i=this._getClipboardData(t),r=!0;i?(e=i.getData("text").replace(/\r/g,""),fabric.copiedTextStyle&&fabric.copiedText===e||(r=!1)):e=fabric.copiedText,e&&this.insertChars(e,r),t.stopImmediatePropagation(),t.preventDefault()},cut:function(t){this.selectionStart!==this.selectionEnd&&(this.copy(t),this.removeChars(t))},_getClipboardData:function(t){return t&&t.clipboardData||fabric.window.clipboardData},_getWidthBeforeCursor:function(t,e){for(var i,r=this._textLines[t].slice(0,e),n=this._getLineWidth(this.ctx,t),s=this._getLineLeftOffset(n),o=0,a=r.length;oe){i=!0;var f=o-u,d=o,g=Math.abs(f-e),p=Math.abs(d-e);a=p=this.text.length&&this.selectionEnd>=this.text.length||this._moveCursorUpOrDown("Down",t)},moveCursorUp:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorUpOrDown("Up",t)},_moveCursorUpOrDown:function(t,e){var i="get"+t+"CursorOffset",r=this[i](e,"right"===this._selectionDirection);e.shiftKey?this.moveCursorWithShift(r):this.moveCursorWithoutShift(r),0!==r&&(this.setSelectionInBoundaries(),this.abortCursorAnimation(),this._currentCursorOpacity=1,this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorWithShift:function(t){var e="left"===this._selectionDirection?this.selectionStart+t:this.selectionEnd+t;return this.setSelectionStartEndWithShift(this.selectionStart,this.selectionEnd,e),0!==t},moveCursorWithoutShift:function(t){return t<0?(this.selectionStart+=t,this.selectionEnd=this.selectionStart):(this.selectionEnd+=t,this.selectionStart=this.selectionEnd),0!==t},moveCursorLeft:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorLeftOrRight("Left",t)},_move:function(t,e,i){var r;if(t.altKey)r=this["findWordBoundary"+i](this[e]);else{if(!t.metaKey&&35!==t.keyCode&&36!==t.keyCode)return this[e]+="Left"===i?-1:1,!0;r=this["findLineBoundary"+i](this[e])}if(void 0!==typeof r&&this[e]!==r)return this[e]=r,!0},_moveLeft:function(t,e){return this._move(t,e,"Left")},_moveRight:function(t,e){return this._move(t,e,"Right")},moveCursorLeftWithoutShift:function(t){var e=!0;return this._selectionDirection="left",this.selectionEnd===this.selectionStart&&0!==this.selectionStart&&(e=this._moveLeft(t,"selectionStart")),this.selectionEnd=this.selectionStart,e},moveCursorLeftWithShift:function(t){return"right"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveLeft(t,"selectionEnd"):0!==this.selectionStart?(this._selectionDirection="left",this._moveLeft(t,"selectionStart")):void 0},moveCursorRight:function(t){this.selectionStart>=this.text.length&&this.selectionEnd>=this.text.length||this._moveCursorLeftOrRight("Right",t)},_moveCursorLeftOrRight:function(t,e){var i="moveCursor"+t+"With";this._currentCursorOpacity=1,i+=e.shiftKey?"Shift":"outShift",this[i](e)&&(this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorRightWithShift:function(t){return"left"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveRight(t,"selectionStart"):this.selectionEnd!==this.text.length?(this._selectionDirection="right",this._moveRight(t,"selectionEnd")):void 0},moveCursorRightWithoutShift:function(t){var e=!0;return this._selectionDirection="right",this.selectionStart===this.selectionEnd?(e=this._moveRight(t,"selectionStart"),this.selectionEnd=this.selectionStart):this.selectionStart=this.selectionEnd,e},removeChars:function(t){this.selectionStart===this.selectionEnd?this._removeCharsNearCursor(t):this._removeCharsFromTo(this.selectionStart,this.selectionEnd),this.set("dirty",!0),this.setSelectionEnd(this.selectionStart),this._removeExtraneousStyles(),this.canvas&&this.canvas.renderAll(),this.setCoords(),this.fire("changed"),this.canvas&&this.canvas.fire("text:changed",{target:this})},_removeCharsNearCursor:function(t){if(0!==this.selectionStart)if(t.metaKey){var e=this.findLineBoundaryLeft(this.selectionStart);this._removeCharsFromTo(e,this.selectionStart),this.setSelectionStart(e)}else if(t.altKey){var i=this.findWordBoundaryLeft(this.selectionStart);this._removeCharsFromTo(i,this.selectionStart),this.setSelectionStart(i)}else this._removeSingleCharAndStyle(this.selectionStart),this.setSelectionStart(this.selectionStart-1)}}),function(){var t=fabric.util.toFixed,e=fabric.Object.NUM_FRACTION_DIGITS;fabric.util.object.extend(fabric.IText.prototype,{_setSVGTextLineText:function(t,e,i,r,n,s){this._getLineStyle(t)?this._setSVGTextLineChars(t,e,i,r,s):fabric.Text.prototype._setSVGTextLineText.call(this,t,e,i,r,n)},_setSVGTextLineChars:function(t,e,i,r,n){for(var s=this._textLines[t],o=0,a=this._getLineLeftOffset(this._getLineWidth(this.ctx,t))-this.width/2,h=this._getSVGLineTopOffset(t),c=this._getHeightOfLine(this.ctx,t),l=0,u=s.length;l\n'].join("")},_createTextCharSpan:function(i,r,n,s,o){var a=this.getSvgStyles.call(fabric.util.object.extend({visible:!0,fill:this.fill,stroke:this.stroke,type:"text",getSvgFilter:fabric.Object.prototype.getSvgFilter},r));return['\t\t\t',fabric.util.string.escapeXml(i),"\n"].join("")}})}(),function(t){"use strict";var e=t.fabric||(t.fabric={});e.Textbox=e.util.createClass(e.IText,e.Observable,{type:"textbox",minWidth:20,dynamicMinWidth:2,__cachedLines:null,lockScalingY:!0,lockScalingFlip:!0,noScaleCache:!1,initialize:function(t,i){this.callSuper("initialize",t,i),this.setControlsVisibility(e.Textbox.getTextboxControlVisibility()),this.ctx=this.objectCaching?this._cacheContext:e.util.createCanvasElement().getContext("2d"),this._dimensionAffectingProps.push("width")},_initDimensions:function(t){this.__skipDimension||(t||(t=e.util.createCanvasElement().getContext("2d"),this._setTextStyles(t),this.clearContextTop()),this.dynamicMinWidth=0,this._textLines=this._splitTextIntoLines(t),this.dynamicMinWidth>this.width&&this._set("width",this.dynamicMinWidth),this._clearCache(),this.height=this._getTextHeight(t))},_generateStyleMap:function(){for(var t=0,e=0,i=0,r={},n=0;n0?(e=0,i++,t++):" "===this.text[i]&&n>0&&(e++,i++),r[n]={line:t,offset:e},i+=this._textLines[n].length,e+=this._textLines[n].length;return r},_getStyleDeclaration:function(t,e,i){if(this._styleMap){var r=this._styleMap[t];if(!r)return i?{}:null;t=r.line,e=r.offset+e}return this.callSuper("_getStyleDeclaration",t,e,i)},_setStyleDeclaration:function(t,e,i){var r=this._styleMap[t];t=r.line,e=r.offset+e,this.styles[t][e]=i},_deleteStyleDeclaration:function(t,e){var i=this._styleMap[t];t=i.line,e=i.offset+e,delete this.styles[t][e]},_getLineStyle:function(t){var e=this._styleMap[t];return this.styles[e.line]},_setLineStyle:function(t,e){var i=this._styleMap[t];this.styles[i.line]=e},_deleteLineStyle:function(t){var e=this._styleMap[t];delete this.styles[e.line]},_wrapText:function(t,e){var i,r=e.split(this._reNewline),n=[];for(i=0;i=this.width&&!d?(n.push(s),s="",r=l,d=!0):r+=g,d||(s+=c),s+=a,u=this._measureText(t,c,i,h),h++,d=!1,l>f&&(f=l);return p&&n.push(s),f>this.dynamicMinWidth&&(this.dynamicMinWidth=f-g),n},_splitTextIntoLines:function(t){t=t||this.ctx;var e=this.textAlign;this._styleMap=null,t.save(),this._setTextStyles(t),this.textAlign="left";var i=this._wrapText(t,this.text);return this.textAlign=e,t.restore(),this._textLines=i,this._styleMap=this._generateStyleMap(),i},setOnGroup:function(t,e){"scaleX"===t&&(this.set("scaleX",Math.abs(1/e)),this.set("width",this.get("width")*e/("undefined"==typeof this.__oldScaleX?1:this.__oldScaleX)),this.__oldScaleX=e)},get2DCursorLocation:function(t){"undefined"==typeof t&&(t=this.selectionStart);for(var e=this._textLines.length,i=0,r=0;r=h.getMinWidth()?(h.set("width",c),!0):void 0},fabric.Group.prototype._refreshControlsVisibility=function(){if("undefined"!=typeof fabric.Textbox)for(var t=this._objects.length;t--;)if(this._objects[t]instanceof fabric.Textbox)return void this.setControlsVisibility(fabric.Textbox.getTextboxControlVisibility())};var e=fabric.util.object.clone;fabric.util.object.extend(fabric.Textbox.prototype,{_removeExtraneousStyles:function(){for(var t in this._styleMap)this._textLines[t]||delete this.styles[this._styleMap[t].line]},insertCharStyleObject:function(t,e,i){var r=this._styleMap[t];t=r.line,e=r.offset+e,fabric.IText.prototype.insertCharStyleObject.apply(this,[t,e,i])},insertNewlineStyleObject:function(t,e,i){var r=this._styleMap[t];t=r.line,e=r.offset+e,fabric.IText.prototype.insertNewlineStyleObject.apply(this,[t,e,i])},shiftLineStyles:function(t,i){var r=e(this.styles),n=this._styleMap[t];t=n.line;for(var s in this.styles){var o=parseInt(s,10);o>t&&(this.styles[o+i]=r[o],r[o-i]||delete this.styles[o])}},_getTextOnPreviousLine:function(t){for(var e=this._textLines[t-1];this._styleMap[t-2]&&this._styleMap[t-2].line===this._styleMap[t-1].line;)e=this._textLines[t-2]+e,t--;return e},removeStyleObject:function(t,e){var i=this.get2DCursorLocation(e),r=this._styleMap[i.lineIndex],n=r.line,s=r.offset+i.charIndex;this._removeStyleObject(t,i,n,s)}})}(),function(){var t=fabric.IText.prototype._getNewSelectionStartFromOffset;fabric.IText.prototype._getNewSelectionStartFromOffset=function(e,i,r,n,s){n=t.call(this,e,i,r,n,s);for(var o=0,a=0,h=0;h=n));h++)"\n"!==this.text[o+a]&&" "!==this.text[o+a]||a++;return n-h+a}}(),function(){function request(t,e,i){var r=URL.parse(t);r.port||(r.port=0===r.protocol.indexOf("https:")?443:80);var n=0===r.protocol.indexOf("https:")?HTTPS:HTTP,s=n.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(t){var r="";e&&t.setEncoding(e),t.on("end",function(){i(r)}),t.on("data",function(e){200===t.statusCode&&(r+=e)})});s.on("error",function(t){t.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(t.message),i(null)}),s.end()}function requestFs(t,e){var i=require("fs");i.readFile(t,function(t,i){if(t)throw fabric.log(t),t;e(i)})}if("undefined"==typeof document||"undefined"==typeof window){var DOMParser=require("xmldom").DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(t,e,i){function r(r){r?(n.src=new Buffer(r,"binary"),n._src=t,e&&e.call(i,n)):(n=null,e&&e.call(i,null,!0))}var n=new Image;t&&(t instanceof Buffer||0===t.indexOf("data"))?(n.src=n._src=t,e&&e.call(i,n)):t&&0!==t.indexOf("http")?requestFs(t,r):t?request(t,"binary",r):e&&e.call(i,t)},fabric.loadSVGFromURL=function(t,e,i){t=t.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),0!==t.indexOf("http")?requestFs(t,function(t){fabric.loadSVGFromString(t.toString(),e,i)}):request(t,"",function(t){fabric.loadSVGFromString(t,e,i)})},fabric.loadSVGFromString=function(t,e,i){var r=(new DOMParser).parseFromString(t);fabric.parseSVGDocument(r.documentElement,function(t,i){e&&e(t,i)},i)},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.createCanvasForNode=function(t,e,i,r){r=r||i;var n=fabric.document.createElement("canvas"),s=new Canvas(t||600,e||600,r),o=new Canvas(t||600,e||600,r);n.style={},n.width=s.width,n.height=s.height,i=i||{},i.nodeCanvas=s,i.nodeCacheCanvas=o;var a=fabric.Canvas||fabric.StaticCanvas,h=new a(n,i);return h.nodeCanvas=s,h.nodeCacheCanvas=o,h.contextContainer=s.getContext("2d"),h.contextCache=o.getContext("2d"),h.Font=Canvas.Font, +h};var originaInitStatic=fabric.StaticCanvas.prototype._initStatic;fabric.StaticCanvas.prototype._initStatic=function(t,e){t=t||fabric.document.createElement("canvas"),this.nodeCanvas=new Canvas(t.width,t.height),this.nodeCacheCanvas=new Canvas(t.width,t.height),originaInitStatic.call(this,t,e),this.contextContainer=this.nodeCanvas.getContext("2d"),this.contextCache=this.nodeCacheCanvas.getContext("2d"),this.Font=Canvas.Font},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(t){return this.nodeCanvas.createJPEGStream(t)},fabric.StaticCanvas.prototype._initRetinaScaling=function(){if(this._isRetinaScaling())return this.lowerCanvasEl.setAttribute("width",this.width*fabric.devicePixelRatio),this.lowerCanvasEl.setAttribute("height",this.height*fabric.devicePixelRatio),this.nodeCanvas.width=this.width*fabric.devicePixelRatio,this.nodeCanvas.height=this.height*fabric.devicePixelRatio,this.contextContainer.scale(fabric.devicePixelRatio,fabric.devicePixelRatio),this},fabric.Canvas&&(fabric.Canvas.prototype._initRetinaScaling=fabric.StaticCanvas.prototype._initRetinaScaling);var origSetBackstoreDimension=fabric.StaticCanvas.prototype._setBackstoreDimension;fabric.StaticCanvas.prototype._setBackstoreDimension=function(t,e){return origSetBackstoreDimension.call(this,t,e),this.nodeCanvas[t]=e,this},fabric.Canvas&&(fabric.Canvas.prototype._setBackstoreDimension=fabric.StaticCanvas.prototype._setBackstoreDimension)}}(); \ No newline at end of file diff --git a/fabric.min.js.gz b/fabric.min.js.gz index c529fd8da3450357e3060e42aa1dacbde0d8594d..3f3b841f3fd2b1f29b7202a3821c1a6403d7d8b9 100644 GIT binary patch delta 65332 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%0A+gN_~X1zkv|M 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

XcG9Tx- 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 delta 65268 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