From 23093e1f81e1051cb2e4d7d40c046fd209b74d43 Mon Sep 17 00:00:00 2001 From: Asturur Date: Mon, 24 Apr 2017 09:52:17 +0200 Subject: [PATCH] v1711 --- CHANGELOG.md | 4 ++++ HEADER.js | 2 +- dist/fabric.js | 48 +++++++++++++++++++++++++++++++++++++++++++++++- dist/fabric.min.js | 10 +++++----- dist/fabric.min.js.gz | Bin 70354 -> 70364 bytes dist/fabric.require.js | 29 ++++++++++++++++++++++++++++- package.json | 2 +- 7 files changed, 86 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b136265d0..4edb01afa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +**Version 1.7.11** + +- Hotfix: restore path-groups ability to render [#3877](https://github.com/kangax/fabric.js/pull/3877) + **Version 1.7.10** - Fix: correct svg export for radial gradients [#3807](https://github.com/kangax/fabric.js/pull/3807) diff --git a/HEADER.js b/HEADER.js index 33eb499c6..0fc093312 100644 --- a/HEADER.js +++ b/HEADER.js @@ -1,6 +1,6 @@ /*! Fabric.js Copyright 2008-2015, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "1.7.10" }; +var fabric = fabric || { version: "1.7.11" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; } diff --git a/dist/fabric.js b/dist/fabric.js index 2d9d9894f..b6d2cee48 100644 --- a/dist/fabric.js +++ b/dist/fabric.js @@ -1,7 +1,7 @@ /* build: `node build.js modules=ALL exclude=json,gestures minifier=uglifyjs` */ /*! Fabric.js Copyright 2008-2015, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "1.7.10" }; +var fabric = fabric || { version: "1.7.11" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; } @@ -17896,6 +17896,52 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot }, /** + * Decide if the object should cache or not. + * objectCaching is a global flag, wins over everything + * needsItsOwnCache should be used when the object drawing method requires + * a cache step. None of the fabric classes requires it. + * Generally you do not cache objects in groups because the group outside is cached. + * @return {Boolean} + */ + shouldCache: function() { + var parentCache = this.objectCaching && (!this.group || this.needsItsOwnCache || !this.group.isCaching()); + this.caching = parentCache; + if (parentCache) { + for (var i = 0, len = this.paths.length; i < len; i++) { + if (this.paths[i].willDrawShadow()) { + this.caching = false; + return false; + } + } + } + return parentCache; + }, + + /** + * Check if this object or a child object will cast a shadow + * @return {Boolean} + */ + willDrawShadow: function() { + if (this.shadow) { + return true; + } + for (var i = 0, len = this.paths.length; i < len; i++) { + if (this.paths[i].willDrawShadow()) { + return true; + } + } + return false; + }, + + /** + * Check if this group or its parent group are caching, recursively up + * @return {Boolean} + */ + isCaching: function() { + return this.caching || this.group && this.group.isCaching(); + }, + + /** * Check if cache is dirty */ isCacheDirty: function() { diff --git a/dist/fabric.min.js b/dist/fabric.min.js index 31b40e2fa..20c989df9 100644 --- a/dist/fabric.min.js +++ b/dist/fabric.min.js @@ -1,9 +1,9 @@ -var fabric=fabric||{version:"1.7.10"};"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?P-=2*f:1===c&&P<0&&(P+=2*f);for(var I=Math.ceil(Math.abs(P/f*2)),E=[],L=P/I,F=8/3*Math.sin(L/4)*Math.sin(L/4)/Math.sin(L/2),B=A+L,R=0;R=n?s-n:2*Math.PI-(n-s)}function r(t,e,i,r,n,s,h,c){var l=a.call(arguments);if(o[l])return o[l];var u,f,d,g,p,v,b,m,y=Math.sqrt,_=Math.min,x=Math.max,C=Math.abs,S=[],w=[[],[]];f=6*t-12*i+6*n,u=-3*t+9*i-9*n+3*h,d=3*i-3*t;for(var O=0;O<2;++O)if(O>0&&(f=6*e-12*r+6*s,u=-3*e+9*r-9*s+3*c,d=3*r-3*e),C(u)<1e-12){if(C(f)<1e-12)continue;g=-d/f,0=e})}function i(t,e){return n(t,e,function(t,e){return t>>0;if(0===i)return-1;var r=0;if(arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:0!==r&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r)))),r>=i)return-1;for(var n=r>=0?r:Math.max(i-Math.abs(r),0);n>>0;i>>0;r>>0;i>>0;i>>0;n>>0,r=0;if(arguments.length>1)e=arguments[1];else for(;;){if(r in this){e=this[r++];break}if(++r>=i)throw new TypeError}for(;r/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:t,capitalize:e,escapeXml:i}}(),function(){var t=Array.prototype.slice,e=Function.prototype.apply,i=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var n,s=this,o=t.call(arguments,1);return n=o.length?function(){return e.call(s,this instanceof i?this:r,o.concat(t.call(arguments)))}:function(){return e.call(s,this instanceof i?this:r,arguments)},i.prototype=this.prototype,n.prototype=new i,n})}(),function(){function t(){}function e(t){for(var e=null,i=this;i.constructor.superclass;){var n=i.constructor.superclass.prototype[t];if(i[t]!==n){e=n;break}i=i.constructor.superclass.prototype}return e?arguments.length>1?e.apply(this,r.call(arguments,1)):e.call(this):console.log("tried to callSuper "+t+", method not found in prototype chain",this)}function i(){function i(){this.initialize.apply(this,arguments)}var s=null,a=r.call(arguments,0);"function"==typeof a[0]&&(s=a.shift()),i.superclass=s,i.subclasses=[],s&&(t.prototype=s.prototype,i.prototype=new t,s.subclasses.push(i));for(var h=0,c=a.length;h-1?t.prototype[r]=function(t){return function(){var r=this.constructor.superclass;this.constructor.superclass=i;var n=e[t].apply(this,arguments);if(this.constructor.superclass=r,"initialize"!==t)return n}}(r):t.prototype[r]=e[r],s&&(e.toString!==Object.prototype.toString&&(t.prototype.toString=e.toString),e.valueOf!==Object.prototype.valueOf&&(t.prototype.valueOf=e.valueOf))};fabric.util.createClass=i}(),function(){function t(t){var e,i,r=Array.prototype.slice.call(arguments,1),n=r.length;for(i=0;i-1?s(t,e.match(/opacity:\s*(\d?\.?\d*)/)[1]):t;for(var r in e)if("opacity"===r)s(t,e[r]);else{var n="float"===r||"cssFloat"===r?"undefined"==typeof i.styleFloat?"cssFloat":"styleFloat":r;i[n]=e[r]}return t}var e=fabric.document.createElement("div"),i="string"==typeof e.style.opacity,r="string"==typeof e.style.filter,n=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(t){return t};i?s=function(t,e){return t.style.opacity=e,t}:r&&(s=function(t,e){var i=t.style;return t.currentStyle&&!t.currentStyle.hasLayout&&(i.zoom=1),n.test(i.filter)?(e=e>=.9999?"":"alpha(opacity="+100*e+")",i.filter=i.filter.replace(n,e)):i.filter+=" alpha(opacity="+100*e+")",t}),fabric.util.setStyle=t}(),function(){function t(t){return"string"==typeof t?fabric.document.getElementById(t):t}function e(t,e){var i=fabric.document.createElement(t);for(var r in e)"class"===r?i.className=e[r]:"for"===r?i.htmlFor=e[r]:i.setAttribute(r,e[r]);return i}function i(t,e){t&&(" "+t.className+" ").indexOf(" "+e+" ")===-1&&(t.className+=(t.className?" ":"")+e)}function r(t,i,r){return"string"==typeof i&&(i=e(i,r)),t.parentNode&&t.parentNode.replaceChild(i,t),i.appendChild(t),i}function n(t){for(var e=0,i=0,r=fabric.document.documentElement,n=fabric.document.body||{scrollLeft:0,scrollTop:0};t&&(t.parentNode||t.host)&&(t=t.parentNode||t.host,t===fabric.document?(e=n.scrollLeft||r.scrollLeft||0,i=n.scrollTop||r.scrollTop||0):(e+=t.scrollLeft||0,i+=t.scrollTop||0),1!==t.nodeType||"fixed"!==fabric.util.getElementStyle(t,"position")););return{left:e,top:i}}function s(t){var e,i,r=t&&t.ownerDocument,s={left:0,top:0},o={left:0,top:0},a={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!r)return o;for(var h in a)o[a[h]]+=parseInt(c(t,h),10)||0;return e=r.documentElement,"undefined"!=typeof t.getBoundingClientRect&&(s=t.getBoundingClientRect()),i=n(t),{left:s.left+i.left-(e.clientLeft||0)+o.left,top:s.top+i.top-(e.clientTop||0)+o.top}}var o,a=Array.prototype.slice,h=function(t){return a.call(t,0)};try{o=h(fabric.document.childNodes)instanceof Array}catch(t){}o||(h=function(t){for(var e=new Array(t.length),i=t.length;i--;)e[i]=t[i];return e});var c;c=fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle?function(t,e){var i=fabric.document.defaultView.getComputedStyle(t,null);return i?i[e]:void 0}:function(t,e){var i=t.style[e];return!i&&t.currentStyle&&(i=t.currentStyle[e]),i},function(){function t(t){return"undefined"!=typeof t.onselectstart&&(t.onselectstart=fabric.util.falseFunction),r?t.style[r]="none":"string"==typeof t.unselectable&&(t.unselectable="on"),t}function e(t){return"undefined"!=typeof t.onselectstart&&(t.onselectstart=null),r?t.style[r]="":"string"==typeof t.unselectable&&(t.unselectable=""),t}var i=fabric.document.documentElement.style,r="userSelect"in i?"userSelect":"MozUserSelect"in i?"MozUserSelect":"WebkitUserSelect"in i?"WebkitUserSelect":"KhtmlUserSelect"in i?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=t,fabric.util.makeElementSelectable=e}(),function(){function t(t,e){var i=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),n=!0;r.onload=r.onreadystatechange=function(t){if(n){if("string"==typeof this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState)return;n=!1,e(t||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=t,i.appendChild(r)}fabric.util.getScript=t}(),fabric.util.getById=t,fabric.util.toArray=h,fabric.util.makeElement=e,fabric.util.addClass=i,fabric.util.wrapElement=r,fabric.util.getScrollLeftTop=n,fabric.util.getElementOffset=s,fabric.util.getElementStyle=c}(),function(){function t(t,e){return t+(/\?/.test(t)?"&":"?")+e}function e(){}function i(i,n){n||(n={});var s=n.method?n.method.toUpperCase():"GET",o=n.onComplete||function(){},a=r(),h=n.body||n.parameters;return a.onreadystatechange=function(){4===a.readyState&&(o(a),a.onreadystatechange=e)},"GET"===s&&(h=null,"string"==typeof n.parameters&&(i=t(i,n.parameters))),a.open(s,i,!0),"POST"!==s&&"PUT"!==s||a.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),a.send(h),a}var r=function(){for(var t=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}],e=t.length;e--;)try{var i=t[e]();if(i)return t[e]}catch(t){}}();fabric.util.request=i}(),fabric.log=function(){},fabric.warn=function(){},"undefined"!=typeof console&&["log","warn"].forEach(function(t){"undefined"!=typeof console[t]&&"function"==typeof console[t].apply&&(fabric[t]=function(){return console[t].apply(console,arguments)})}),function(){function t(t){e(function(i){t||(t={});var r,n=i||+new Date,s=t.duration||500,o=n+s,a=t.onChange||function(){},h=t.abort||function(){return!1},c=t.easing||function(t,e,i,r){return-i*Math.cos(t/r*(Math.PI/2))+i+e},l="startValue"in t?t.startValue:0,u="endValue"in t?t.endValue:100,f=t.byValue||u-l;t.onStart&&t.onStart(),function i(u){r=u||+new Date;var d=r>o?s:r-n;return h()?void(t.onComplete&&t.onComplete()):(a(c(d,l,f,s)),r>o?void(t.onComplete&&t.onComplete()):void e(i))}(n)})}function e(){return i.apply(fabric.window,arguments)}var i=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(t){fabric.window.setTimeout(t,1e3/60)};fabric.util.animate=t,fabric.util.requestAnimFrame=e}(),function(){function t(t,e,i){var r="rgba("+parseInt(t[0]+i*(e[0]-t[0]),10)+","+parseInt(t[1]+i*(e[1]-t[1]),10)+","+parseInt(t[2]+i*(e[2]-t[2]),10);return r+=","+(t&&e?parseFloat(t[3]+i*(e[3]-t[3])):1),r+=")"}function e(e,i,r,n){var s=new fabric.Color(e).getSource(),o=new fabric.Color(i).getSource();n=n||{},fabric.util.animate(fabric.util.object.extend(n,{duration:r||500,startValue:s,endValue:o,byValue:o,easing:function(e,i,r,s){var o=n.colorEasing?n.colorEasing(e,s):1-Math.cos(e/s*(Math.PI/2));return t(i,r,o)}}))}fabric.util.animateColor=e}(),function(){function t(t,e,i,r){return ta?a:o),1===o&&1===a&&0===h&&0===c&&0===f&&0===d)return _;if((f||d)&&(x=" translate("+y(f)+" "+y(d)+") "),r=x+" matrix("+o+" 0 0 "+a+" "+h*o+" "+c*a+") ", +var fabric=fabric||{version:"1.7.11"};"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?P-=2*f:1===c&&P<0&&(P+=2*f);for(var I=Math.ceil(Math.abs(P/f*2)),E=[],L=P/I,F=8/3*Math.sin(L/4)*Math.sin(L/4)/Math.sin(L/2),B=A+L,R=0;R=n?s-n:2*Math.PI-(n-s)}function r(t,e,i,r,n,s,h,c){var l=a.call(arguments);if(o[l])return o[l];var u,f,d,g,p,v,b,m,y=Math.sqrt,_=Math.min,x=Math.max,C=Math.abs,S=[],w=[[],[]];f=6*t-12*i+6*n,u=-3*t+9*i-9*n+3*h,d=3*i-3*t;for(var O=0;O<2;++O)if(O>0&&(f=6*e-12*r+6*s,u=-3*e+9*r-9*s+3*c,d=3*r-3*e),C(u)<1e-12){if(C(f)<1e-12)continue;g=-d/f,0=e})}function i(t,e){return n(t,e,function(t,e){return t>>0;if(0===i)return-1;var r=0;if(arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:0!==r&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r)))),r>=i)return-1;for(var n=r>=0?r:Math.max(i-Math.abs(r),0);n>>0;i>>0;r>>0;i>>0;i>>0;n>>0,r=0;if(arguments.length>1)e=arguments[1];else for(;;){if(r in this){e=this[r++];break}if(++r>=i)throw new TypeError}for(;r/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:t,capitalize:e,escapeXml:i}}(),function(){var t=Array.prototype.slice,e=Function.prototype.apply,i=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var n,s=this,o=t.call(arguments,1);return n=o.length?function(){return e.call(s,this instanceof i?this:r,o.concat(t.call(arguments)))}:function(){return e.call(s,this instanceof i?this:r,arguments)},i.prototype=this.prototype,n.prototype=new i,n})}(),function(){function t(){}function e(t){for(var e=null,i=this;i.constructor.superclass;){var n=i.constructor.superclass.prototype[t];if(i[t]!==n){e=n;break}i=i.constructor.superclass.prototype}return e?arguments.length>1?e.apply(this,r.call(arguments,1)):e.call(this):console.log("tried to callSuper "+t+", method not found in prototype chain",this)}function i(){function i(){this.initialize.apply(this,arguments)}var s=null,a=r.call(arguments,0);"function"==typeof a[0]&&(s=a.shift()),i.superclass=s,i.subclasses=[],s&&(t.prototype=s.prototype,i.prototype=new t,s.subclasses.push(i));for(var h=0,c=a.length;h-1?t.prototype[r]=function(t){return function(){var r=this.constructor.superclass;this.constructor.superclass=i;var n=e[t].apply(this,arguments);if(this.constructor.superclass=r,"initialize"!==t)return n}}(r):t.prototype[r]=e[r],s&&(e.toString!==Object.prototype.toString&&(t.prototype.toString=e.toString),e.valueOf!==Object.prototype.valueOf&&(t.prototype.valueOf=e.valueOf))};fabric.util.createClass=i}(),function(){function t(t){var e,i,r=Array.prototype.slice.call(arguments,1),n=r.length;for(i=0;i-1?s(t,e.match(/opacity:\s*(\d?\.?\d*)/)[1]):t;for(var r in e)if("opacity"===r)s(t,e[r]);else{var n="float"===r||"cssFloat"===r?"undefined"==typeof i.styleFloat?"cssFloat":"styleFloat":r;i[n]=e[r]}return t}var e=fabric.document.createElement("div"),i="string"==typeof e.style.opacity,r="string"==typeof e.style.filter,n=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(t){return t};i?s=function(t,e){return t.style.opacity=e,t}:r&&(s=function(t,e){var i=t.style;return t.currentStyle&&!t.currentStyle.hasLayout&&(i.zoom=1),n.test(i.filter)?(e=e>=.9999?"":"alpha(opacity="+100*e+")",i.filter=i.filter.replace(n,e)):i.filter+=" alpha(opacity="+100*e+")",t}),fabric.util.setStyle=t}(),function(){function t(t){return"string"==typeof t?fabric.document.getElementById(t):t}function e(t,e){var i=fabric.document.createElement(t);for(var r in e)"class"===r?i.className=e[r]:"for"===r?i.htmlFor=e[r]:i.setAttribute(r,e[r]);return i}function i(t,e){t&&(" "+t.className+" ").indexOf(" "+e+" ")===-1&&(t.className+=(t.className?" ":"")+e)}function r(t,i,r){return"string"==typeof i&&(i=e(i,r)),t.parentNode&&t.parentNode.replaceChild(i,t),i.appendChild(t),i}function n(t){for(var e=0,i=0,r=fabric.document.documentElement,n=fabric.document.body||{scrollLeft:0,scrollTop:0};t&&(t.parentNode||t.host)&&(t=t.parentNode||t.host,t===fabric.document?(e=n.scrollLeft||r.scrollLeft||0,i=n.scrollTop||r.scrollTop||0):(e+=t.scrollLeft||0,i+=t.scrollTop||0),1!==t.nodeType||"fixed"!==fabric.util.getElementStyle(t,"position")););return{left:e,top:i}}function s(t){var e,i,r=t&&t.ownerDocument,s={left:0,top:0},o={left:0,top:0},a={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!r)return o;for(var h in a)o[a[h]]+=parseInt(c(t,h),10)||0;return e=r.documentElement,"undefined"!=typeof t.getBoundingClientRect&&(s=t.getBoundingClientRect()),i=n(t),{left:s.left+i.left-(e.clientLeft||0)+o.left,top:s.top+i.top-(e.clientTop||0)+o.top}}var o,a=Array.prototype.slice,h=function(t){return a.call(t,0)};try{o=h(fabric.document.childNodes)instanceof Array}catch(t){}o||(h=function(t){for(var e=new Array(t.length),i=t.length;i--;)e[i]=t[i];return e});var c;c=fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle?function(t,e){var i=fabric.document.defaultView.getComputedStyle(t,null);return i?i[e]:void 0}:function(t,e){var i=t.style[e];return!i&&t.currentStyle&&(i=t.currentStyle[e]),i},function(){function t(t){return"undefined"!=typeof t.onselectstart&&(t.onselectstart=fabric.util.falseFunction),r?t.style[r]="none":"string"==typeof t.unselectable&&(t.unselectable="on"),t}function e(t){return"undefined"!=typeof t.onselectstart&&(t.onselectstart=null),r?t.style[r]="":"string"==typeof t.unselectable&&(t.unselectable=""),t}var i=fabric.document.documentElement.style,r="userSelect"in i?"userSelect":"MozUserSelect"in i?"MozUserSelect":"WebkitUserSelect"in i?"WebkitUserSelect":"KhtmlUserSelect"in i?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=t,fabric.util.makeElementSelectable=e}(),function(){function t(t,e){var i=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),n=!0;r.onload=r.onreadystatechange=function(t){if(n){if("string"==typeof this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState)return;n=!1,e(t||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=t,i.appendChild(r)}fabric.util.getScript=t}(),fabric.util.getById=t,fabric.util.toArray=h,fabric.util.makeElement=e,fabric.util.addClass=i,fabric.util.wrapElement=r,fabric.util.getScrollLeftTop=n,fabric.util.getElementOffset=s,fabric.util.getElementStyle=c}(),function(){function t(t,e){return t+(/\?/.test(t)?"&":"?")+e}function e(){}function i(i,n){n||(n={});var s=n.method?n.method.toUpperCase():"GET",o=n.onComplete||function(){},a=r(),h=n.body||n.parameters;return a.onreadystatechange=function(){4===a.readyState&&(o(a),a.onreadystatechange=e)},"GET"===s&&(h=null,"string"==typeof n.parameters&&(i=t(i,n.parameters))),a.open(s,i,!0),"POST"!==s&&"PUT"!==s||a.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),a.send(h),a}var r=function(){for(var t=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}],e=t.length;e--;)try{var i=t[e]();if(i)return t[e]}catch(t){}}();fabric.util.request=i}(),fabric.log=function(){},fabric.warn=function(){},"undefined"!=typeof console&&["log","warn"].forEach(function(t){"undefined"!=typeof console[t]&&"function"==typeof console[t].apply&&(fabric[t]=function(){return console[t].apply(console,arguments)})}),function(){function t(t){e(function(i){t||(t={});var r,n=i||+new Date,s=t.duration||500,o=n+s,a=t.onChange||function(){},h=t.abort||function(){return!1},c=t.easing||function(t,e,i,r){return-i*Math.cos(t/r*(Math.PI/2))+i+e},l="startValue"in t?t.startValue:0,u="endValue"in t?t.endValue:100,f=t.byValue||u-l;t.onStart&&t.onStart(),function i(u){r=u||+new Date;var d=r>o?s:r-n;return h()?void(t.onComplete&&t.onComplete()):(a(c(d,l,f,s)),r>o?void(t.onComplete&&t.onComplete()):void e(i))}(n)})}function e(){return i.apply(fabric.window,arguments)}var i=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(t){fabric.window.setTimeout(t,1e3/60)};fabric.util.animate=t,fabric.util.requestAnimFrame=e}(),function(){function t(t,e,i){var r="rgba("+parseInt(t[0]+i*(e[0]-t[0]),10)+","+parseInt(t[1]+i*(e[1]-t[1]),10)+","+parseInt(t[2]+i*(e[2]-t[2]),10);return r+=","+(t&&e?parseFloat(t[3]+i*(e[3]-t[3])):1),r+=")"}function e(e,i,r,n){var s=new fabric.Color(e).getSource(),o=new fabric.Color(i).getSource();n=n||{},fabric.util.animate(fabric.util.object.extend(n,{duration:r||500,startValue:s,endValue:o,byValue:o,easing:function(e,i,r,s){var o=n.colorEasing?n.colorEasing(e,s):1-Math.cos(e/s*(Math.PI/2));return t(i,r,o)}}))}fabric.util.animateColor=e}(),function(){function t(t,e,i,r){return ta?a:o),1===o&&1===a&&0===h&&0===c&&0===f&&0===d)return _;if((f||d)&&(x=" translate("+y(f)+" "+y(d)+") "),r=x+" matrix("+o+" 0 0 "+a+" "+h*o+" "+c*a+") ", "svg"===t.nodeName){for(n=t.ownerDocument.createElement("g");t.firstChild;)n.appendChild(t.firstChild);t.appendChild(n)}else n=t,r=n.getAttribute("transform")+r;return n.setAttribute("transform",r),_}function g(t,e){for(;t&&(t=t.parentNode);)if(t.nodeName&&e.test(t.nodeName.replace("svg:",""))&&!t.getAttribute("instantiated_by_use"))return!0;return!1}var p=t.fabric||(t.fabric={}),v=p.util.object.extend,b=p.util.object.clone,m=p.util.toFixed,y=p.util.parseUnit,_=p.util.multiplyTransformMatrices,x=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/i,C=/^(symbol|image|marker|pattern|view|svg)$/i,S=/^(?:pattern|defs|symbol|metadata|clipPath|mask)$/i,w=/^(symbol|g|a|svg)$/i,O={cx:"left",x:"left",r:"radius",cy:"top",y:"top",display:"visible",visibility:"visible",transform:"transformMatrix","fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration","text-anchor":"originX",opacity:"opacity"},T={stroke:"strokeOpacity",fill:"fillOpacity"};p.cssRules={},p.gradientDefs={},p.parseTransformAttribute=function(){function t(t,e){var i=Math.cos(e[0]),r=Math.sin(e[0]),n=0,s=0;3===e.length&&(n=e[1],s=e[2]),t[0]=i,t[1]=r,t[2]=-r,t[3]=i,t[4]=n-(i*n-r*s),t[5]=s-(r*n+i*s)}function e(t,e){var i=e[0],r=2===e.length?e[1]:e[0];t[0]=i,t[3]=r}function i(t,e,i){t[i]=Math.tan(p.util.degreesToRadians(e[0]))}function r(t,e){t[4]=e[0],2===e.length&&(t[5]=e[1])}var n=[1,0,0,1,0,0],s=p.reNum,o="(?:\\s+,?\\s*|,\\s*)",a="(?:(skewX)\\s*\\(\\s*("+s+")\\s*\\))",h="(?:(skewY)\\s*\\(\\s*("+s+")\\s*\\))",c="(?:(rotate)\\s*\\(\\s*("+s+")(?:"+o+"("+s+")"+o+"("+s+"))?\\s*\\))",l="(?:(scale)\\s*\\(\\s*("+s+")(?:"+o+"("+s+"))?\\s*\\))",u="(?:(translate)\\s*\\(\\s*("+s+")(?:"+o+"("+s+"))?\\s*\\))",f="(?:(matrix)\\s*\\(\\s*("+s+")"+o+"("+s+")"+o+"("+s+")"+o+"("+s+")"+o+"("+s+")"+o+"("+s+")\\s*\\))",d="(?:"+f+"|"+u+"|"+l+"|"+c+"|"+a+"|"+h+")",g="(?:"+d+"(?:"+o+"*"+d+")*)",v="^\\s*(?:"+g+"?)\\s*$",b=new RegExp(v),m=new RegExp(d,"g");return function(s){var o=n.concat(),a=[];if(!s||s&&!b.test(s))return o;s.replace(m,function(s){var h=new RegExp(d).exec(s).filter(function(t){return!!t}),c=h[1],l=h.slice(2).map(parseFloat);switch(c){case"translate":r(o,l);break;case"rotate":l[0]=p.util.degreesToRadians(l[0]),t(o,l);break;case"scale":e(o,l);break;case"skewX":i(o,l,2);break;case"skewY":i(o,l,1);break;case"matrix":o=l}a.push(o.concat()),o=n.concat()});for(var h=a[0];a.length>1;)a.shift(),h=p.util.multiplyTransformMatrices(h,a[0]);return h}}();var j=new RegExp("^\\s*("+p.reNum+"+)\\s*,?\\s*("+p.reNum+"+)\\s*,?\\s*("+p.reNum+"+)\\s*,?\\s*("+p.reNum+"+)\\s*$");p.parseSVGDocument=function(t,e,i,r){if(t){f(t);var n=p.Object.__uid++,s=d(t),o=p.util.toArray(t.getElementsByTagName("*"));if(s.crossOrigin=r&&r.crossOrigin,s.svgUid=n,0===o.length&&p.isLikelyNode){o=t.selectNodes('//*[name(.)!="svg"]');for(var a=[],h=0,c=o.length;h/i,""))),n&&n.documentElement||e&&e(null),p.parseSVGDocument(n.documentElement,function(t,i){e&&e(t,i)},i,r)}t=t.replace(/^\n\s*/,"").trim(),new p.util.request(t,{method:"get",onComplete:n})},loadSVGFromString:function(t,e,i,r){t=t.trim();var n;if("undefined"!=typeof DOMParser){var s=new DOMParser;s&&s.parseFromString&&(n=s.parseFromString(t,"text/xml"))}else p.window.ActiveXObject&&(n=new ActiveXObject("Microsoft.XMLDOM"),n.async="false",n.loadXML(t.replace(//i,"")));p.parseSVGDocument(n.documentElement,function(t,i){e(t,i)},i,r)}})}("undefined"!=typeof exports?exports:this),fabric.ElementsParser=function(t,e,i,r,n){this.elements=t,this.callback=e,this.options=i,this.reviver=r,this.svgUid=i&&i.svgUid||0,this.parsingOptions=n},fabric.ElementsParser.prototype.parse=function(){this.instances=new Array(this.elements.length),this.numElements=this.elements.length,this.createObjects()},fabric.ElementsParser.prototype.createObjects=function(){for(var t=0,e=this.elements.length;tt.x&&this.y>t.y},gte:function(t){return this.x>=t.x&&this.y>=t.y},lerp:function(t,i){return"undefined"==typeof i&&(i=.5),i=Math.max(Math.min(1,i),0),new e(this.x+(t.x-this.x)*i,this.y+(t.y-this.y)*i)},distanceFrom:function(t){var e=this.x-t.x,i=this.y-t.y;return Math.sqrt(e*e+i*i)},midPointFrom:function(t){return this.lerp(t)},min:function(t){return new e(Math.min(this.x,t.x),Math.min(this.y,t.y))},max:function(t){return new e(Math.max(this.x,t.x),Math.max(this.y,t.y))},toString:function(){return this.x+","+this.y},setXY:function(t,e){return this.x=t,this.y=e,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setFromPoint:function(t){return this.x=t.x,this.y=t.y,this},swap:function(t){var e=this.x,i=this.y;this.x=t.x,this.y=t.y,t.x=e,t.y=i},clone:function(){return new e(this.x,this.y)}}))}("undefined"!=typeof exports?exports:this),function(t){"use strict";function e(t){this.status=t,this.points=[]}var i=t.fabric||(t.fabric={});return i.Intersection?void i.warn("fabric.Intersection is already defined"):(i.Intersection=e,i.Intersection.prototype={constructor:e,appendPoint:function(t){return this.points.push(t),this},appendPoints:function(t){return this.points=this.points.concat(t),this}},i.Intersection.intersectLineLine=function(t,r,n,s){var o,a=(s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x),h=(r.x-t.x)*(t.y-n.y)-(r.y-t.y)*(t.x-n.x),c=(s.y-n.y)*(r.x-t.x)-(s.x-n.x)*(r.y-t.y);if(0!==c){var l=a/c,u=h/c;0<=l&&l<=1&&0<=u&&u<=1?(o=new e("Intersection"),o.appendPoint(new i.Point(t.x+l*(r.x-t.x),t.y+l*(r.y-t.y)))):o=new e}else o=new e(0===a||0===h?"Coincident":"Parallel");return o},i.Intersection.intersectLinePolygon=function(t,i,r){for(var n,s,o,a=new e,h=r.length,c=0;c0&&(a.status="Intersection"),a},i.Intersection.intersectPolygonPolygon=function(t,i){for(var r=new e,n=t.length,s=0;s0&&(r.status="Intersection"),r},void(i.Intersection.intersectPolygonRectangle=function(t,r,n){var s=r.min(n),o=r.max(n),a=new i.Point(o.x,s.y),h=new i.Point(s.x,o.y),c=e.intersectLinePolygon(s,a,t),l=e.intersectLinePolygon(a,o,t),u=e.intersectLinePolygon(o,h,t),f=e.intersectLinePolygon(h,s,t),d=new e;return d.appendPoints(c.points),d.appendPoints(l.points),d.appendPoints(u.points),d.appendPoints(f.points),d.points.length>0&&(d.status="Intersection"),d}))}("undefined"!=typeof exports?exports:this),function(t){"use strict";function e(t){t?this._tryParsingColor(t):this.setSource([0,0,0,1])}function i(t,e,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?t+6*(e-t)*i:i<.5?e:i<2/3?t+(e-t)*(2/3-i)*6:t}var r=t.fabric||(t.fabric={});return r.Color?void r.warn("fabric.Color is already defined."):(r.Color=e,r.Color.prototype={_tryParsingColor:function(t){var i;t in e.colorNameMap&&(t=e.colorNameMap[t]),"transparent"===t&&(i=[255,255,255,0]),i||(i=e.sourceFromHex(t)),i||(i=e.sourceFromRgb(t)),i||(i=e.sourceFromHsl(t)),i||(i=[0,0,0,1]),i&&this.setSource(i)},_rgbToHsl:function(t,e,i){t/=255,e/=255,i/=255;var n,s,o,a=r.util.array.max([t,e,i]),h=r.util.array.min([t,e,i]);if(o=(a+h)/2,a===h)n=s=0;else{var c=a-h;switch(s=o>.5?c/(2-a-h):c/(a+h),a){case t:n=(e-i)/c+(e1?1:s,n){var o=n.split(/\s*;\s*/);""===o[o.length-1]&&o.pop();for(var a=o.length;a--;){var h=o[a].split(/\s*:\s*/),c=h[0].trim(),l=h[1].trim();"stop-color"===c?e=l:"stop-opacity"===c&&(r=l)}}return e||(e=t.getAttribute("stop-color")||"rgb(0,0,0)"),r||(r=t.getAttribute("stop-opacity")),e=new fabric.Color(e),i=e.getAlpha(),r=isNaN(parseFloat(r))?1:parseFloat(r),r*=i,{offset:s,color:e.toRgb(),opacity:r}}function e(t){return{x1:t.getAttribute("x1")||0,y1:t.getAttribute("y1")||0,x2:t.getAttribute("x2")||"100%",y2:t.getAttribute("y2")||0}}function i(t){return{x1:t.getAttribute("fx")||t.getAttribute("cx")||"50%",y1:t.getAttribute("fy")||t.getAttribute("cy")||"50%",r1:0,x2:t.getAttribute("cx")||"50%",y2:t.getAttribute("cy")||"50%",r2:t.getAttribute("r")||"50%"}}function r(t,e,i){var r,n=0,s=1,o="";for(var a in e)"Infinity"===e[a]?e[a]=1:"-Infinity"===e[a]&&(e[a]=0),r=parseFloat(e[a],10),s="string"==typeof e[a]&&/^\d+%$/.test(e[a])?.01:1,"x1"===a||"x2"===a||"r2"===a?(s*="objectBoundingBox"===i?t.width:1,n="objectBoundingBox"===i?t.left||0:0):"y1"!==a&&"y2"!==a||(s*="objectBoundingBox"===i?t.height:1,n="objectBoundingBox"===i?t.top||0:0),e[a]=r*s+n;if("ellipse"===t.type&&null!==e.r2&&"objectBoundingBox"===i&&t.rx!==t.ry){var h=t.ry/t.rx;o=" scale(1, "+h+")",e.y1&&(e.y1/=h),e.y2&&(e.y2/=h)}return o}var n=fabric.util.object.clone;fabric.Gradient=fabric.util.createClass({offsetX:0,offsetY:0,initialize:function(t){t||(t={});var e={};this.id=fabric.Object.__uid++,this.type=t.type||"linear",e={x1:t.coords.x1||0,y1:t.coords.y1||0,x2:t.coords.x2||0,y2:t.coords.y2||0},"radial"===this.type&&(e.r1=t.coords.r1||0,e.r2=t.coords.r2||0),this.coords=e,this.colorStops=t.colorStops.slice(),t.gradientTransform&&(this.gradientTransform=t.gradientTransform),this.offsetX=t.offsetX||this.offsetX,this.offsetY=t.offsetY||this.offsetY},addColorStop:function(t){for(var e in t){var i=new fabric.Color(t[e]);this.colorStops.push({offset:parseFloat(e),color:i.toRgb(),opacity:i.getAlpha()})}return this},toObject:function(t){var e={type:this.type,coords:this.coords,colorStops:this.colorStops,offsetX:this.offsetX,offsetY:this.offsetY,gradientTransform:this.gradientTransform?this.gradientTransform.concat():this.gradientTransform};return fabric.util.populateWithProperties(this,e,t),e},toSVG:function(t){var e,i,r=n(this.coords,!0),s=n(this.colorStops,!0),o=r.r1>r.r2;if(s.sort(function(t,e){return t.offset-e.offset}),!t.group||"path-group"!==t.group.type)for(var a in r)"x1"===a||"x2"===a?r[a]+=this.offsetX-t.width/2:"y1"!==a&&"y2"!==a||(r[a]+=this.offsetY-t.height/2);if(i='id="SVGID_'+this.id+'" gradientUnits="userSpaceOnUse"',this.gradientTransform&&(i+=' gradientTransform="matrix('+this.gradientTransform.join(" ")+')" '),"linear"===this.type?e=["\n']:"radial"===this.type&&(e=["\n']),"radial"===this.type){if(o){s=s.concat(),s.reverse();for(var h=0;h0)for(var l=Math.max(r.r1,r.r2),u=c/l,h=0;h\n')}return e.push("linear"===this.type?"\n":"\n"),e.join("")},toLive:function(t,e){var i,r,n=fabric.util.object.clone(this.coords);if(this.type){if(e.group&&"path-group"===e.group.type)for(r in n)"x1"===r||"x2"===r?n[r]+=-this.offsetX+e.width/2:"y1"!==r&&"y2"!==r||(n[r]+=-this.offsetY+e.height/2);"linear"===this.type?i=t.createLinearGradient(n.x1,n.y1,n.x2,n.y2):"radial"===this.type&&(i=t.createRadialGradient(n.x1,n.y1,n.r1,n.x2,n.y2,n.r2));for(var s=0,o=this.colorStops.length;s\n\n\n'},setOptions:function(t){for(var e in t)this[e]=t[e]},toLive:function(t){var e="function"==typeof this.source?this.source():this.source;if(!e)return"";if("undefined"!=typeof e.src){if(!e.complete)return"";if(0===e.naturalWidth||0===e.naturalHeight)return""}return t.createPattern(e,this.repeat)}})}(),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.toFixed;return e.Shadow?void e.warn("fabric.Shadow is already defined."):(e.Shadow=e.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,initialize:function(t){"string"==typeof t&&(t=this._parseShadow(t));for(var i in t)this[i]=t[i];this.id=e.Object.__uid++},_parseShadow:function(t){var i=t.trim(),r=e.Shadow.reOffsetsAndBlur.exec(i)||[],n=i.replace(e.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)";return{color:n.trim(),offsetX:parseInt(r[1],10)||0,offsetY:parseInt(r[2],10)||0,blur:parseInt(r[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(t){var r=40,n=40,s=e.Object.NUM_FRACTION_DIGITS,o=e.util.rotateVector({x:this.offsetX,y:this.offsetY},e.util.degreesToRadians(-t.angle)),a=20;return t.width&&t.height&&(r=100*i((Math.abs(o.x)+this.blur)/t.width,s)+a,n=100*i((Math.abs(o.y)+this.blur)/t.height,s)+a),t.flipX&&(o.x*=-1),t.flipY&&(o.y*=-1),'\n\t\n\t\n\t\n\t\n\t\n\t\t\n\t\t\n\t\n\n'},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY,affectStroke:this.affectStroke};var t={},i=e.Shadow.prototype;return["color","blur","offsetX","offsetY","affectStroke"].forEach(function(e){this[e]!==i[e]&&(t[e]=this[e])},this),t}}),void(e.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/))}("undefined"!=typeof exports?exports:this),function(){"use strict";if(fabric.StaticCanvas)return void fabric.warn("fabric.StaticCanvas is already defined.");var t=fabric.util.object.extend,e=fabric.util.getElementOffset,i=fabric.util.removeFromArray,r=fabric.util.toFixed,n=fabric.util.transformPoint,s=fabric.util.invertTransform,o=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass(fabric.CommonMethods,{initialize:function(t,e){e||(e={}),this._initStatic(t,e)},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!1,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!1,imageSmoothingEnabled:!0,viewportTransform:fabric.iMatrix.concat(),backgroundVpt:!0,overlayVpt:!0,onBeforeScaleRotate:function(){},enableRetinaScaling:!0,vptCoords:{},skipOffscreen:!1,_initStatic:function(t,e){var i=fabric.StaticCanvas.prototype.renderAll.bind(this);this._objects=[],this._createLowerCanvas(t),this._initOptions(e),this._setImageSmoothing(),this.interactive||this._initRetinaScaling(),e.overlayImage&&this.setOverlayImage(e.overlayImage,i),e.backgroundImage&&this.setBackgroundImage(e.backgroundImage,i),e.backgroundColor&&this.setBackgroundColor(e.backgroundColor,i),e.overlayColor&&this.setOverlayColor(e.overlayColor,i),this.calcOffset()},_isRetinaScaling:function(){return 1!==fabric.devicePixelRatio&&this.enableRetinaScaling},getRetinaScaling:function(){return this._isRetinaScaling()?fabric.devicePixelRatio:1},_initRetinaScaling:function(){this._isRetinaScaling()&&(this.lowerCanvasEl.setAttribute("width",this.width*fabric.devicePixelRatio),this.lowerCanvasEl.setAttribute("height",this.height*fabric.devicePixelRatio),this.contextContainer.scale(fabric.devicePixelRatio,fabric.devicePixelRatio))},calcOffset:function(){return this._offset=e(this.lowerCanvasEl),this},setOverlayImage:function(t,e,i){return this.__setBgOverlayImage("overlayImage",t,e,i)},setBackgroundImage:function(t,e,i){return this.__setBgOverlayImage("backgroundImage",t,e,i)},setOverlayColor:function(t,e){return this.__setBgOverlayColor("overlayColor",t,e)},setBackgroundColor:function(t,e){return this.__setBgOverlayColor("backgroundColor",t,e)},_setImageSmoothing:function(){var t=this.getContext();t.imageSmoothingEnabled=t.imageSmoothingEnabled||t.webkitImageSmoothingEnabled||t.mozImageSmoothingEnabled||t.msImageSmoothingEnabled||t.oImageSmoothingEnabled,t.imageSmoothingEnabled=this.imageSmoothingEnabled},__setBgOverlayImage:function(t,e,i,r){return"string"==typeof e?fabric.util.loadImage(e,function(e){e&&(this[t]=new fabric.Image(e,r)),i&&i(e)},this,r&&r.crossOrigin):(r&&e.setOptions(r),this[t]=e,i&&i(e)),this},__setBgOverlayColor:function(t,e,i){return this[t]=e,this._initGradient(e,t),this._initPattern(e,t,i),this},_createCanvasElement:function(t){var e=fabric.util.createCanvasElement(t);if(e.style||(e.style={}),!e)throw o;if("undefined"==typeof e.getContext)throw o;return e},_initOptions:function(t){this._setOptions(t),this.width=this.width||parseInt(this.lowerCanvasEl.width,10)||0,this.height=this.height||parseInt(this.lowerCanvasEl.height,10)||0,this.lowerCanvasEl.style&&(this.lowerCanvasEl.width=this.width,this.lowerCanvasEl.height=this.height,this.lowerCanvasEl.style.width=this.width+"px",this.lowerCanvasEl.style.height=this.height+"px",this.viewportTransform=this.viewportTransform.slice())},_createLowerCanvas:function(t){this.lowerCanvasEl=fabric.util.getById(t)||this._createCanvasElement(t),fabric.util.addClass(this.lowerCanvasEl,"lower-canvas"),this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(t,e){return this.setDimensions({width:t},e)},setHeight:function(t,e){return this.setDimensions({height:t},e)},setDimensions:function(t,e){var i;e=e||{};for(var r in t)i=t[r],e.cssOnly||(this._setBackstoreDimension(r,t[r]),i+="px"),e.backstoreOnly||this._setCssDimension(r,i);return this._initRetinaScaling(),this._setImageSmoothing(),this.calcOffset(),e.cssOnly||this.renderAll(),this},_setBackstoreDimension:function(t,e){return this.lowerCanvasEl[t]=e,this.upperCanvasEl&&(this.upperCanvasEl[t]=e),this.cacheCanvasEl&&(this.cacheCanvasEl[t]=e),this[t]=e,this},_setCssDimension:function(t,e){return this.lowerCanvasEl.style[t]=e,this.upperCanvasEl&&(this.upperCanvasEl.style[t]=e),this.wrapperEl&&(this.wrapperEl.style[t]=e),this},getZoom:function(){return this.viewportTransform[0]},setViewportTransform:function(t){var e,i=this._activeGroup,r=!1,n=!0;this.viewportTransform=t;for(var s=0,o=this._objects.length;s"),i.join("")},_setSVGPreamble:function(t,e){e.suppressPreamble||t.push('\n','\n')},_setSVGHeader:function(t,e){var i,n=e.width||this.width,s=e.height||this.height,o='viewBox="0 0 '+this.width+" "+this.height+'" ',a=fabric.Object.NUM_FRACTION_DIGITS;e.viewBox?o='viewBox="'+e.viewBox.x+" "+e.viewBox.y+" "+e.viewBox.width+" "+e.viewBox.height+'" ':this.svgViewportTransformation&&(i=this.viewportTransform,o='viewBox="'+r(-i[4]/i[0],a)+" "+r(-i[5]/i[3],a)+" "+r(this.width/i[0],a)+" "+r(this.height/i[3],a)+'" '),t.push("\n',"Created with Fabric.js ",fabric.version,"\n","\n",this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),"\n")},createSVGRefElementsMarkup:function(){var t=this,e=["backgroundColor","overlayColor"].map(function(e){var i=t[e];if(i&&i.toLive)return i.toSVG(t,!1)});return e.join("")},createSVGFontFacesMarkup:function(){for(var t,e,i,r,n,s,o,a="",h={},c=fabric.fontPaths,l=this.getObjects(),u=0,f=l.length;u',"\n",a,"","\n"].join("")),a},_setSVGObjects:function(t,e){for(var i,r=0,n=this.getObjects(),s=n.length;r\n")}else t.push('\n")},sendToBack:function(t){if(!t)return this;var e,r,n,s=this._activeGroup;if(t===s)for(n=s._objects,e=n.length;e--;)r=n[e],i(this._objects,r),this._objects.unshift(r);else i(this._objects,t),this._objects.unshift(t);return this.renderAll&&this.renderAll()},bringToFront:function(t){if(!t)return this;var e,r,n,s=this._activeGroup;if(t===s)for(n=s._objects,e=0;e=0;--n){var s=t.intersectsWithObject(this._objects[n])||t.isContainedWithinObject(this._objects[n])||this._objects[n].isContainedWithinObject(t);if(s){r=n;break}}}else r=e-1;return r},bringForward:function(t,e){if(!t)return this;var r,n,s,o,a,h=this._activeGroup;if(t===h)for(a=h._objects,r=a.length;r--;)n=a[r],s=this._objects.indexOf(n),s!==this._objects.length-1&&(o=s+1,i(this._objects,n),this._objects.splice(o,0,n));else s=this._objects.indexOf(t),s!==this._objects.length-1&&(o=this._findNewUpperIndex(t,s,e),i(this._objects,t),this._objects.splice(o,0,t));return this.renderAll&&this.renderAll(),this},_findNewUpperIndex:function(t,e,i){var r;if(i){r=e;for(var n=e+1;n"}}),t(fabric.StaticCanvas.prototype,fabric.Observable),t(fabric.StaticCanvas.prototype,fabric.Collection),t(fabric.StaticCanvas.prototype,fabric.DataURLExporter),t(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(t){var e=fabric.util.createCanvasElement();if(!e||!e.getContext)return null;var i=e.getContext("2d");if(!i)return null;switch(t){case"getImageData":return"undefined"!=typeof i.getImageData;case"setLineDash":return"undefined"!=typeof i.setLineDash;case"toDataURL":return"undefined"!=typeof e.toDataURL;case"toDataURLWithQuality":try{return e.toDataURL("image/jpeg",0),!0}catch(t){}return!1;default:return null}}}),fabric.StaticCanvas.prototype.toJSON=fabric.StaticCanvas.prototype.toObject}(),fabric.BaseBrush=fabric.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",strokeDashArray:null,setShadow:function(t){return this.shadow=new fabric.Shadow(t),this},_setBrushStyles:function(){var t=this.canvas.contextTop;t.strokeStyle=this.color,t.lineWidth=this.width,t.lineCap=this.strokeLineCap,t.lineJoin=this.strokeLineJoin,this.strokeDashArray&&fabric.StaticCanvas.supports("setLineDash")&&t.setLineDash(this.strokeDashArray)},_setShadow:function(){if(this.shadow){var t=this.canvas.contextTop,e=this.canvas.getZoom();t.shadowColor=this.shadow.color,t.shadowBlur=this.shadow.blur*e,t.shadowOffsetX=this.shadow.offsetX*e,t.shadowOffsetY=this.shadow.offsetY*e}},_resetShadow:function(){var t=this.canvas.contextTop;t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0}}),function(){fabric.PencilBrush=fabric.util.createClass(fabric.BaseBrush,{initialize:function(t){this.canvas=t,this._points=[]},onMouseDown:function(t){this._prepareForDrawing(t),this._captureDrawingPath(t),this._render()},onMouseMove:function(t){this._captureDrawingPath(t),this.canvas.clearContext(this.canvas.contextTop),this._render()},onMouseUp:function(){this._finalizeAndAddPath()},_prepareForDrawing:function(t){var e=new fabric.Point(t.x,t.y);this._reset(),this._addPoint(e),this.canvas.contextTop.moveTo(e.x,e.y)},_addPoint:function(t){this._points.push(t)},_reset:function(){this._points.length=0,this._setBrushStyles(),this._setShadow()},_captureDrawingPath:function(t){var e=new fabric.Point(t.x,t.y);this._addPoint(e)},_render:function(){var t=this.canvas.contextTop,e=this.canvas.viewportTransform,i=this._points[0],r=this._points[1];t.save(),t.transform(e[0],e[1],e[2],e[3],e[4],e[5]),t.beginPath(),2===this._points.length&&i.x===r.x&&i.y===r.y&&(i.x-=.5,r.x+=.5),t.moveTo(i.x,i.y);for(var n=1,s=this._points.length;n0?1:-1,"y"===i&&(s=e.target.skewY,o="top",a="bottom",r="originY"),n[-1]=o,n[1]=a,e.target.flipX&&(c*=-1),e.target.flipY&&(c*=-1),0===s?(e.skewSign=-h*t*c,e[r]=n[-t]):(s=s>0?1:-1,e.skewSign=s,e[r]=n[s*h*c])},_skewObject:function(t,e,i){var r=this._currentTransform,n=r.target,s=!1,o=n.get("lockSkewingX"),a=n.get("lockSkewingY");if(o&&"x"===i||a&&"y"===i)return!1;var h,c,l=n.getCenterPoint(),u=n.toLocalPoint(new fabric.Point(t,e),"center","center")[i],f=n.toLocalPoint(new fabric.Point(r.lastX,r.lastY),"center","center")[i],d=n._getTransformedDimensions();return this._changeSkewTransformOrigin(u-f,r,i),h=n.toLocalPoint(new fabric.Point(t,e),r.originX,r.originY)[i],c=n.translateToOriginPoint(l,r.originX,r.originY),s=this._setObjectSkew(h,r,i,d),r.lastX=t,r.lastY=e,n.setPositionByOrigin(c,r.originX,r.originY),s},_setObjectSkew:function(t,e,i,r){var n,s,o,a,h,c,l,u,f,d=e.target,g=!1,p=e.skewSign;return"x"===i?(a="y",h="Y",c="X",u=0,f=d.skewY):(a="x",h="X",c="Y",u=d.skewX,f=0),o=d._getTransformedDimensions(u,f),l=2*Math.abs(t)-o[i],l<=2?n=0:(n=p*Math.atan(l/d["scale"+c]/(o[a]/d["scale"+h])),n=fabric.util.radiansToDegrees(n)),g=d["skew"+c]!==n,d.set("skew"+c,n),0!==d["skew"+h]&&(s=d._getTransformedDimensions(),n=r[a]/s[a]*d["scale"+h],d.set("scale"+h,n)),g},_scaleObject:function(t,e,i){var r=this._currentTransform,n=r.target,s=n.get("lockScalingX"),o=n.get("lockScalingY"),a=n.get("lockScalingFlip");if(s&&o)return!1;var h=n.translateToOriginPoint(n.getCenterPoint(),r.originX,r.originY),c=n.toLocalPoint(new fabric.Point(t,e),r.originX,r.originY),l=n._getTransformedDimensions(),u=!1;return this._setLocalMouse(c,r),u=this._setObjectScale(c,r,s,o,i,a,l),n.setPositionByOrigin(h,r.originX,r.originY),u},_setObjectScale:function(t,e,i,r,n,s,o){var a,h,c,l,u=e.target,f=!1,d=!1,g=!1;return c=t.x*u.scaleX/o.x,l=t.y*u.scaleY/o.y,a=u.scaleX!==c,h=u.scaleY!==l,s&&c<=0&&cs?t.x<0?t.x+=s:t.x-=s:t.x=0,n(t.y)>s?t.y<0?t.y+=s:t.y-=s:t.y=0},_rotateObject:function(t,e){var n=this._currentTransform;if(n.target.get("lockRotation"))return!1;var s=r(n.ey-n.top,n.ex-n.left),o=r(e-n.top,t-n.left),a=i(o-s+n.theta),h=!0;if(n.target.snapAngle>0){var c=n.target.snapAngle,l=n.target.snapThreshold||c,u=Math.ceil(a/c)*c,f=Math.floor(a/c)*c;Math.abs(a-f)0?0:-i),e.ey-(r>0?0:-r),a,h)),this.selectionLineWidth&&this.selectionBorderColor)if(t.lineWidth=this.selectionLineWidth,t.strokeStyle=this.selectionBorderColor,this.selectionDashArray.length>1&&!s){var c=e.ex+o-(i>0?0:a),l=e.ey+o-(r>0?0:h);t.beginPath(),fabric.util.drawDashedLine(t,c,l,c+a,l,this.selectionDashArray),fabric.util.drawDashedLine(t,c,l+h-1,c+a,l+h-1,this.selectionDashArray),fabric.util.drawDashedLine(t,c,l,c,l+h,this.selectionDashArray),fabric.util.drawDashedLine(t,c+a-1,l,c+a-1,l+h,this.selectionDashArray),t.closePath(),t.stroke()}else fabric.Object.prototype._setLineDash.call(this,t,this.selectionDashArray),t.strokeRect(e.ex+o-(i>0?0:a),e.ey+o-(r>0?0:h),a,h)},findTarget:function(t,e){if(!this.skipTargetFind){var i,r=!0,n=this.getPointer(t,r),s=this.getActiveGroup(),o=this.getActiveObject();if(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",{e:e})),this.fire("mouse:over",{target:t,e:e}),t.fire("mouseover",{e:e}),this._hoveredTarget=t):this._hoveredTarget&&(this.fire("mouse:out",{target:this._hoveredTarget,e:e}),this._hoveredTarget.fire("mouseout",{e:e}),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),e)}else i.addWithUpdate(t);this.fire("selection:created",{target:i,e:e}),i.set("active",!0)},_createActiveGroup:function(t,e){if(this._activeObject&&t!==this._activeObject){var i=this._createGroup(t);i.addWithUpdate(),this.setActiveGroup(i,e),this._activeObject=null,this.fire("selection:created",{target:i,e:e})}t.set("active",!0)},_createGroup:function(t){var e=this.getObjects(),i=e.indexOf(this._activeObject)1&&(e=new fabric.Group(e.reverse(),{canvas:this}),e.addWithUpdate(),this.setActiveGroup(e,t),e.saveCoords(),this.fire("selection:created",{target:e,e:t}),this.renderAll())},_collectObjects:function(){for(var i,r=[],n=this._groupSelector.ex,s=this._groupSelector.ey,o=n+this._groupSelector.left,a=s+this._groupSelector.top,h=new fabric.Point(t(n,o),t(s,a)),c=new fabric.Point(e(n,o),e(s,a)),l=n===o&&s===a,u=this._objects.length;u--&&(i=this._objects[u],!(i&&i.selectable&&i.visible&&(i.intersectsWithRect(h,c)||i.isContainedWithinRect(h,c)||i.containsPoint(h)||i.containsPoint(c))&&(i.set("active",!0),r.push(i),l))););return r},_maybeGroupObjects:function(t){this.selection&&this._groupSelector&&this._groupSelectedObjects(t);var e=this.getActiveGroup();e&&(e.setObjectsCoords().setCoords(),e.isMoving=!1,this.setCursor(this.defaultCursor)),this._groupSelector=null,this._currentTransform=null}})}(),function(){var t=fabric.StaticCanvas.supports("toDataURLWithQuality");fabric.util.object.extend(fabric.StaticCanvas.prototype,{toDataURL:function(t){t||(t={});var e=t.format||"png",i=t.quality||1,r=t.multiplier||1,n={left:t.left||0,top:t.top||0,width:t.width||0,height:t.height||0};return this.__toDataURLWithMultiplier(e,i,n,r)},__toDataURLWithMultiplier:function(t,e,i,r){var n=this.getWidth(),s=this.getHeight(),o=(i.width||this.getWidth())*r,a=(i.height||this.getHeight())*r,h=this.getZoom(),c=h*r,l=this.viewportTransform,u=(l[4]-i.left)*r,f=(l[5]-i.top)*r,d=[c,0,0,c,u,f],g=this.interactive;this.viewportTransform=d,this.interactive&&(this.interactive=!1),n!==o||s!==a?this.setDimensions({width:o,height:a}):this.renderAll();var p=this.__toDataURL(t,e,i);return g&&(this.interactive=g),this.viewportTransform=l,this.setDimensions({width:n,height:s}),p},__toDataURL:function(e,i){var r=this.contextContainer.canvas;"jpg"===e&&(e="jpeg");var n=t?r.toDataURL("image/"+e,i):r.toDataURL("image/"+e);return n},toDataURLWithMultiplier:function(t,e,i){return this.toDataURL({format:t,multiplier:e,quality:i})}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{loadFromDatalessJSON:function(t,e,i){return this.loadFromJSON(t,e,i)},loadFromJSON:function(t,e,i){if(t){var r="string"==typeof t?JSON.parse(t):fabric.util.object.clone(t);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:!0,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()},_createCacheCanvas:function(){this._cacheProperties={},this._cacheCanvas=e.document.createElement("canvas"),this._cacheContext=this._cacheCanvas.getContext("2d"),this._updateCacheCanvas()},_getCacheCanvasDimensions:function(){var t=this.canvas&&this.canvas.getZoom()||1,i=this.getObjectScaling(),r=this._getNonTransformedDimensions(),n=this.canvas&&this.canvas._isRetinaScaling()?e.devicePixelRatio:1,s=i.scaleX*t*n,o=i.scaleY*t*n,a=r.x*s,h=r.y*o;return{width:a+2,height:h+2,zoomX:s,zoomY:o}},_updateCacheCanvas:function(){if(this.noScaleCache&&this.canvas&&this.canvas._currentTransform){var t=this.canvas._currentTransform.action;if("scale"===t.slice(0,5))return!1}var e=this._getCacheCanvasDimensions(),i=e.width,r=e.height,n=e.zoomX,s=e.zoomY;return(i!==this.cacheWidth||r!==this.cacheHeight)&&(this._cacheCanvas.width=Math.ceil(i),this._cacheCanvas.height=Math.ceil(r),this._cacheContext.translate(i/2,r/2),this._cacheContext.scale(n,s),this.cacheWidth=i,this.cacheHeight=r,this.zoomX=n,this.zoomY=s,!0)},setOptions:function(t){this._setOptions(t),this._initGradient(t.fill,"fill"),this._initGradient(t.stroke,"stroke"),this._initClipping(t),this._initPattern(t.fill,"fill"),this._initPattern(t.stroke,"stroke")},transform:function(t,e){this.group&&!this.group._transformDone&&this.group===this.canvas._activeGroup&&this.group.transform(t);var i=e?this._getLeftTopCoords():this.getCenterPoint();t.translate(i.x,i.y),this.angle&&t.rotate(o(this.angle)),t.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1)),this.skewX&&t.transform(1,0,Math.tan(o(this.skewX)),1,0,0),this.skewY&&t.transform(1,Math.tan(o(this.skewY)),0,1,0,0)},toObject:function(t){var i=e.Object.NUM_FRACTION_DIGITS,r={type:this.type,originX:this.originX,originY:this.originY,left:n(this.left,i),top:n(this.top,i),width:n(this.width,i),height:n(this.height,i),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:n(this.strokeWidth,i),strokeDashArray:this.strokeDashArray?this.strokeDashArray.concat():this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeLineJoin:this.strokeLineJoin,strokeMiterLimit:n(this.strokeMiterLimit,i),scaleX:n(this.scaleX,i),scaleY:n(this.scaleY,i),angle:n(this.getAngle(),i),flipX:this.flipX,flipY:this.flipY,opacity:n(this.opacity,i),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,clipTo:this.clipTo&&String(this.clipTo),backgroundColor:this.backgroundColor,fillRule:this.fillRule,globalCompositeOperation:this.globalCompositeOperation,transformMatrix:this.transformMatrix?this.transformMatrix.concat():null,skewX:n(this.skewX,i),skewY:n(this.skewY,i)};return e.util.populateWithProperties(this,r,t),this.includeDefaultValues||(r=this._removeDefaultValues(r)),r},toDatalessObject:function(t){return this.toObject(t)},_removeDefaultValues:function(t){var i=e.util.getKlass(t.type).prototype,r=i.stateProperties;return r.forEach(function(e){t[e]===i[e]&&delete t[e];var r="[object Array]"===Object.prototype.toString.call(t[e])&&"[object Array]"===Object.prototype.toString.call(i[e]);r&&0===t[e].length&&0===i[e].length&&delete t[e]}),t},toString:function(){return"#"},getObjectScaling:function(){var t=this.scaleX,e=this.scaleY;if(this.group){var i=this.group.getObjectScaling();t*=i.scaleX,e*=i.scaleY}return{scaleX:t,scaleY:e}},_set:function(t,i){var r="scaleX"===t||"scaleY"===t;return r&&(i=this._constrainScale(i)),"scaleX"===t&&i<0?(this.flipX=!this.flipX,i*=-1):"scaleY"===t&&i<0?(this.flipY=!this.flipY,i*=-1):"shadow"!==t||!i||i instanceof e.Shadow?"dirty"===t&&this.group&&this.group.set("dirty",i):i=new e.Shadow(i),this[t]=i,this.cacheProperties.indexOf(t)>-1&&(this.group&&this.group.set("dirty",!0),this.dirty=!0),this.group&&this.stateProperties.indexOf(t)>-1&&this.group.set("dirty",!0),"width"!==t&&"height"!==t||(this.minScaleLimit=Math.min(.1,1/Math.max(this.width,this.height))),this},setOnGroup:function(){},setSourcePath:function(t){return this.sourcePath=t,this},getViewportTransform:function(){return this.canvas&&this.canvas.viewportTransform?this.canvas.viewportTransform:e.iMatrix.concat()},render:function(t,i){0===this.width&&0===this.height||!this.visible||this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(t.save(),this._setupCompositeOperation(t),this.drawSelectionBackground(t),i||this.transform(t),this._setOpacity(t),this._setShadow(t),this.transformMatrix&&t.transform.apply(t,this.transformMatrix),this.clipTo&&e.util.clipContext(this,t),this.shouldCache()?(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.drawObject(t,i),i&&this.objectCaching&&this.statefullCache&&this.saveState({propertySet:"cacheProperties"})),this.clipTo&&t.restore(),t.restore())},shouldCache:function(){return this.objectCaching&&(!this.group||this.needsItsOwnCache||!this.group.isCaching())},willDrawShadow:function(){return!!this.shadow},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){if(this.active&&(!this.group||this.group===this.canvas.getActiveGroup())){var i,r=this.getViewportTransform(),n=this.calcTransformMatrix();n=e.util.multiplyTransformMatrices(r,n),i=e.util.qrDecompose(n),t.save(),t.translate(i.translateX,i.translateY),t.lineWidth=1*this.borderScaleFactor,this.group||(t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1),this.group&&this.group===this.canvas.getActiveGroup()?(t.rotate(o(i.angle)),this.drawBordersInGroup(t,i)):(t.rotate(o(this.angle)),this.drawBorders(t)),this.drawControls(t),t.restore()}},_setShadow:function(t){if(this.shadow){var i=this.canvas&&this.canvas.viewportTransform[0]||1,r=this.canvas&&this.canvas.viewportTransform[3]||1,n=this.getObjectScaling();this.canvas&&this.canvas._isRetinaScaling()&&(i*=e.devicePixelRatio,r*=e.devicePixelRatio),t.shadowColor=this.shadow.color,t.shadowBlur=this.shadow.blur*(i+r)*(n.scaleX+n.scaleY)/4,t.shadowOffsetX=this.shadow.offsetX*i*n.scaleX,t.shadowOffsetY=this.shadow.offsetY*r*n.scaleY}},_removeShadow:function(t){this.shadow&&(t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0)},_applyPatternGradientTransform:function(t,e){if(e.toLive){var i=e.gradientTransform||e.patternTransform;i&&t.transform.apply(t,i);var r=-this.width/2+e.offsetX||0,n=-this.height/2+e.offsetY||0;t.translate(r,n)}},_renderFill:function(t){this.fill&&(t.save(),this._applyPatternGradientTransform(t,this.fill),"evenodd"===this.fillRule?t.fill("evenodd"):t.fill(),t.restore())},_renderStroke:function(t){this.stroke&&0!==this.strokeWidth&&(this.shadow&&!this.shadow.affectStroke&&this._removeShadow(t),t.save(),this._setLineDash(t,this.strokeDashArray,this._renderDashedStroke),this._applyPatternGradientTransform(t,this.stroke),t.stroke(),t.restore())},clone:function(t,i){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(i),t):new e.Object(this.toObject(i))},cloneAsImage:function(t,i){var r=this.toDataURL(i);return e.util.loadImage(r,function(i){t&&t(new e.Image(i))}),this},toDataURL:function(t){t||(t={});var i=e.util.createCanvasElement(),r=this.getBoundingRect();i.width=r.width,i.height=r.height,e.util.wrapElement(i,"div");var n=new e.StaticCanvas(i,{enableRetinaScaling:t.enableRetinaScaling});"jpg"===t.format&&(t.format="jpeg"),"jpeg"===t.format&&(n.backgroundColor="#fff");var s={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set("active",!1),this.setPositionByOrigin(new e.Point(n.getWidth()/2,n.getHeight()/2),"center","center");var o=this.canvas;n.add(this);var a=n.toDataURL(t);return this.set(s).setCoords(),this.canvas=o,n.dispose(),n=null,a},isType:function(t){return this.type===t},complexity:function(){return 1},toJSON:function(t){return this.toObject(t)},setGradient:function(t,i){i||(i={});var r={colorStops:[]};return r.type=i.type||(i.r1||i.r2?"radial":"linear"),r.coords={x1:i.x1,y1:i.y1,x2:i.x2,y2:i.y2},(i.r1||i.r2)&&(r.coords.r1=i.r1,r.coords.r2=i.r2),r.gradientTransform=i.gradientTransform,e.Gradient.prototype.addColorStop.call(r,i.colorStops),this.set(t,e.Gradient.forObject(this,r))},setPatternFill:function(t){return this.set("fill",new e.Pattern(t))},setShadow:function(t){return this.set("shadow",t?new e.Shadow(t):null)},setColor:function(t){return this.set("fill",t),this},setAngle:function(t){var e=("center"!==this.originX||"center"!==this.originY)&&this.centeredRotation;return e&&this._setOriginToCenter(),this.set("angle",t),e&&this._resetOrigin(),this},centerH:function(){return this.canvas&&this.canvas.centerObjectH(this),this},viewportCenterH:function(){return this.canvas&&this.canvas.viewportCenterObjectH(this),this},centerV:function(){return this.canvas&&this.canvas.centerObjectV(this),this},viewportCenterV:function(){return this.canvas&&this.canvas.viewportCenterObjectV(this),this},center:function(){return this.canvas&&this.canvas.centerObject(this),this},viewportCenter:function(){return this.canvas&&this.canvas.viewportCenterObject(this),this},remove:function(){return this.canvas&&this.canvas.remove(this),this},getLocalPointer:function(t,i){i=i||this.canvas.getPointer(t);var r=new e.Point(i.x,i.y),n=this._getLeftTopCoords();return this.angle&&(r=e.util.rotatePoint(r,n,o(-this.angle))),{x:r.x-n.x,y:r.y-n.y}},_setupCompositeOperation:function(t){this.globalCompositeOperation&&(t.globalCompositeOperation=this.globalCompositeOperation)}}),e.util.createAccessors(e.Object),e.Object.prototype.rotate=e.Object.prototype.setAngle,i(e.Object.prototype,e.Observable),e.Object.NUM_FRACTION_DIGITS=2,e.Object._fromObject=function(t,i,n,s,o){var a=e[t];if(i=r(i,!0),!s){var h=o?new a(i[o],i):new a(i);return n&&n(h),h}e.util.enlivenPatterns([i.fill,i.stroke],function(t){"undefined"!=typeof t[0]&&(i.fill=t[0]),"undefined"!=typeof t[1]&&(i.stroke=t[1]);var e=o?new a(i[o],i):new a(i);n&&n(e)})},e.Object.__uid=0)}("undefined"!=typeof exports?exports:this),function(){var t=fabric.util.degreesToRadians,e={left:-.5,center:0,right:.5},i={top:-.5,center:0,bottom:.5};fabric.util.object.extend(fabric.Object.prototype,{translateToGivenOrigin:function(t,r,n,s,o){var a,h,c,l=t.x,u=t.y;return"string"==typeof r?r=e[r]:r-=.5,"string"==typeof s?s=e[s]:s-=.5,a=s-r,"string"==typeof n?n=i[n]:n-=.5,"string"==typeof o?o=i[o]:o-=.5,h=o-n,(a||h)&&(c=this._getTransformedDimensions(),l=t.x+a*c.x,u=t.y+h*c.y),new fabric.Point(l,u)},translateToCenterPoint:function(e,i,r){var n=this.translateToGivenOrigin(e,i,r,"center","center");return this.angle?fabric.util.rotatePoint(n,e,t(this.angle)):n},translateToOriginPoint:function(e,i,r){var n=this.translateToGivenOrigin(e,"center","center",i,r);return this.angle?fabric.util.rotatePoint(n,e,t(this.angle)):n},getCenterPoint:function(){var t=new fabric.Point(this.left,this.top); return this.translateToCenterPoint(t,this.originX,this.originY)},getPointByOrigin:function(t,e){var i=this.getCenterPoint();return this.translateToOriginPoint(i,t,e)},toLocalPoint:function(e,i,r){var n,s,o=this.getCenterPoint();return n="undefined"!=typeof i&&"undefined"!=typeof r?this.translateToGivenOrigin(o,"center","center",i,r):new fabric.Point(this.left,this.top),s=new fabric.Point(e.x,e.y),this.angle&&(s=fabric.util.rotatePoint(s,o,-t(this.angle))),s.subtractEquals(n)},setPositionByOrigin:function(t,e,i){var r=this.translateToCenterPoint(t,e,i),n=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",n.x),this.set("top",n.y)},adjustPosition:function(i){var r,n,s=t(this.angle),o=this.getWidth(),a=Math.cos(s)*o,h=Math.sin(s)*o;r="string"==typeof this.originX?e[this.originX]:this.originX-.5,n="string"==typeof i?e[i]:i-.5,this.left+=a*(n-r),this.top+=h*(n-r),this.setCoords(),this.originX=i},_setOriginToCenter:function(){this._originalOriginX=this.originX,this._originalOriginY=this.originY;var t=this.getCenterPoint();this.originX="center",this.originY="center",this.left=t.x,this.top=t.y},_resetOrigin:function(){var t=this.translateToOriginPoint(this.getCenterPoint(),this._originalOriginX,this._originalOriginY);this.originX=this._originalOriginX,this.originY=this._originalOriginY,this.left=t.x,this.top=t.y,this._originalOriginX=null,this._originalOriginY=null},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","top")},onDeselect:function(){}})}(),function(){function t(t){return[new fabric.Point(t.tl.x,t.tl.y),new fabric.Point(t.tr.x,t.tr.y),new fabric.Point(t.br.x,t.br.y),new fabric.Point(t.bl.x,t.bl.y)]}var e=fabric.util.degreesToRadians,i=fabric.util.multiplyTransformMatrices;fabric.util.object.extend(fabric.Object.prototype,{oCoords:null,aCoords:null,getCoords:function(e,i){this.oCoords||this.setCoords();var r=e?this.aCoords:this.oCoords;return t(i?this.calcCoords(e):r)},intersectsWithRect:function(t,e,i,r){var n=this.getCoords(i,r),s=fabric.Intersection.intersectPolygonRectangle(n,t,e);return"Intersection"===s.status},intersectsWithObject:function(t,e,i){var r=fabric.Intersection.intersectPolygonPolygon(this.getCoords(e,i),t.getCoords(e,i));return"Intersection"===r.status||t.isContainedWithinObject(this,e,i)||this.isContainedWithinObject(t,e,i)},isContainedWithinObject:function(t,e,i){for(var r=this.getCoords(e,i),n=0,s=t._getImageLines(i?t.calcCoords(e):e?t.aCoords:t.oCoords);n<4;n++)if(!t.containsPoint(r[n],s))return!1;return!0},isContainedWithinRect:function(t,e,i,r){var n=this.getBoundingRect(i,r);return n.left>=t.x&&n.left+n.width<=e.x&&n.top>=t.y&&n.top+n.height<=e.y},containsPoint:function(t,e,i,r){var e=e||this._getImageLines(r?this.calcCoords(i):i?this.aCoords:this.oCoords),n=this._findCrossPoints(t,e);return 0!==n&&n%2===1},isOnScreen:function(t){if(!this.canvas)return!1;for(var e,i=this.canvas.vptCoords.tl,r=this.canvas.vptCoords.br,n=this.getCoords(!0,t),s=0;s<4;s++)if(e=n[s],e.x<=r.x&&e.x>=i.x&&e.y<=r.y&&e.y>=i.y)return!0;if(this.intersectsWithRect(i,r,!0))return!0;var o={x:(i.x+r.x)/2,y:(i.y+r.y)/2};return!!this.containsPoint(o,null,!0)},_getImageLines:function(t){return{topline:{o:t.tl,d:t.tr},rightline:{o:t.tr,d:t.br},bottomline:{o:t.br,d:t.bl},leftline:{o:t.bl,d:t.tl}}},_findCrossPoints:function(t,e){var i,r,n,s,o,a,h=0;for(var c in e)if(a=e[c],!(a.o.y=t.y&&a.d.y>=t.y||(a.o.x===a.d.x&&a.o.x>=t.x?o=a.o.x:(i=0,r=(a.d.y-a.o.y)/(a.d.x-a.o.x),n=t.y-i*t.x,s=a.o.y-r*a.o.x,o=-(n-s)/(i-r)),o>=t.x&&(h+=1),2!==h)))break;return h},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(t,e){var i=this.getCoords(t,e);return fabric.util.makeBoundingBoxFromPoints(i)},getWidth:function(){return this._getTransformedDimensions().x},getHeight:function(){return this._getTransformedDimensions().y},_constrainScale:function(t){return Math.abs(t)0?Math.atan(o/s):0,l=s/Math.cos(c)/2,u=Math.cos(c+i)*l,f=Math.sin(c+i)*l,d=this.getCenterPoint(),g=t?d:fabric.util.transformPoint(d,r),p=new fabric.Point(g.x-u,g.y-f),v=new fabric.Point(p.x+s*h,p.y+s*a),b=new fabric.Point(p.x-o*a,p.y+o*h),m=new fabric.Point(g.x+u,g.y+f);if(!t)var y=new fabric.Point((p.x+b.x)/2,(p.y+b.y)/2),_=new fabric.Point((v.x+p.x)/2,(v.y+p.y)/2),x=new fabric.Point((m.x+v.x)/2,(m.y+v.y)/2),C=new fabric.Point((m.x+b.x)/2,(m.y+b.y)/2),S=new fabric.Point(_.x+a*this.rotatingPointOffset,_.y-h*this.rotatingPointOffset);var g={tl:p,tr:v,br:m,bl:b};return t||(g.ml=y,g.mt=_,g.mr=x,g.mb=C,g.mtr=S),g},setCoords:function(t,e){return this.oCoords=this.calcCoords(t),e||(this.aCoords=this.calcCoords(!0)),t||this._setCornerCoords&&this._setCornerCoords(),this},_calcRotateMatrix:function(){if(this.angle){var t=e(this.angle),i=Math.cos(t),r=Math.sin(t);return 6.123233995736766e-17!==i&&i!==-1.8369701987210297e-16||(i=0),[i,r,-r,i,0,0]}return fabric.iMatrix.concat()},calcTransformMatrix:function(t){var e=this.getCenterPoint(),r=[1,0,0,1,e.x,e.y],n=this._calcRotateMatrix(),s=this._calcDimensionsTransformMatrix(this.skewX,this.skewY,!0),o=this.group&&!t?this.group.calcTransformMatrix():fabric.iMatrix.concat();return o=i(o,r),o=i(o,n),o=i(o,s)},_calcDimensionsTransformMatrix:function(t,r,n){var s=[1,0,Math.tan(e(t)),1],o=[1,Math.tan(e(r)),0,1],a=this.scaleX*(n&&this.flipX?-1:1),h=this.scaleY*(n&&this.flipY?-1:1),c=[a,0,0,h],l=i(c,s,!0);return i(l,o,!0)},_getNonTransformedDimensions:function(){var t=this.strokeWidth,e=this.width+t,i=this.height+t;return{x:e,y:i}},_getTransformedDimensions:function(t,e){"undefined"==typeof t&&(t=this.skewX),"undefined"==typeof e&&(e=this.skewY);var i,r,n=this._getNonTransformedDimensions(),s=n.x/2,o=n.y/2,a=[{x:-s,y:-o},{x:s,y:-o},{x:-s,y:o},{x:s,y:o}],h=this._calcDimensionsTransformMatrix(t,e,!1);for(i=0;i\n'),t?t(e.join("")):e.join("")}}),i.Line.ATTRIBUTE_NAMES=i.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),i.Line.fromElement=function(t,e){e=e||{};var n=i.parseAttributes(t,i.Line.ATTRIBUTE_NAMES),s=[n.x1||0,n.y1||0,n.x2||0,n.y2||0];return e.originX="left",e.originY="top",new i.Line(s,r(n,e))},i.Line.fromObject=function(t,e,r){function s(t){delete t.points,e&&e(t)}var o=n(t,!0);o.points=[t.x1,t.y1,t.x2,t.y2];var a=i.Object._fromObject("Line",o,s,r,"points");return a&&delete a.points,a}}("undefined"!=typeof exports?exports:this),function(t){"use strict";function e(t){return"radius"in t&&t.radius>=0}var i=t.fabric||(t.fabric={}),r=Math.PI,n=i.util.object.extend;if(i.Circle)return void i.warn("fabric.Circle is already defined.");var s=i.Object.prototype.cacheProperties.concat();s.push("radius"),i.Circle=i.util.createClass(i.Object,{type:"circle",radius:0,startAngle:0,endAngle:2*r,cacheProperties:s,initialize:function(t){this.callSuper("initialize",t),this.set("radius",t&&t.radius||0)},_set:function(t,e){return this.callSuper("_set",t,e),"radius"===t&&this.setRadius(e),this},toObject:function(t){return this.callSuper("toObject",["radius","startAngle","endAngle"].concat(t))},toSVG:function(t){var e=this._createBaseSVGMarkup(),i=0,n=0,s=(this.endAngle-this.startAngle)%(2*r);if(0===s)this.group&&"path-group"===this.group.type&&(i=this.left+this.radius,n=this.top+this.radius),e.push("\n');else{var o=Math.cos(this.startAngle)*this.radius,a=Math.sin(this.startAngle)*this.radius,h=Math.cos(this.endAngle)*this.radius,c=Math.sin(this.endAngle)*this.radius,l=s>r?"1":"0";e.push('\n')}return t?t(e.join("")):e.join("")},_render:function(t,e){t.beginPath(),t.arc(e?this.left+this.radius:0,e?this.top+this.radius:0,this.radius,this.startAngle,this.endAngle,!1),this._renderFill(t),this._renderStroke(t)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(t){return this.radius=t,this.set("width",2*t).set("height",2*t)}}),i.Circle.ATTRIBUTE_NAMES=i.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),i.Circle.fromElement=function(t,r){r||(r={});var s=i.parseAttributes(t,i.Circle.ATTRIBUTE_NAMES);if(!e(s))throw new Error("value of `r` attribute is required and can not be negative");s.left=s.left||0,s.top=s.top||0;var o=new i.Circle(n(s,r));return o.left-=o.radius,o.top-=o.radius,o},i.Circle.fromObject=function(t,e,r){return i.Object._fromObject("Circle",t,e,r)}}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={});return e.Triangle?void e.warn("fabric.Triangle is already defined"):(e.Triangle=e.util.createClass(e.Object,{type:"triangle",initialize:function(t){this.callSuper("initialize",t),this.set("width",t&&t.width||100).set("height",t&&t.height||100)},_render:function(t){var e=this.width/2,i=this.height/2;t.beginPath(),t.moveTo(-e,i),t.lineTo(0,-i),t.lineTo(e,i),t.closePath(),this._renderFill(t),this._renderStroke(t)},_renderDashedStroke:function(t){var i=this.width/2,r=this.height/2;t.beginPath(),e.util.drawDashedLine(t,-i,r,0,-r,this.strokeDashArray),e.util.drawDashedLine(t,0,-r,i,r,this.strokeDashArray),e.util.drawDashedLine(t,i,r,-i,r,this.strokeDashArray),t.closePath()},toSVG:function(t){var e=this._createBaseSVGMarkup(),i=this.width/2,r=this.height/2,n=[-i+" "+r,"0 "+-r,i+" "+r].join(",");return e.push("'),t?t(e.join("")):e.join("")}}),void(e.Triangle.fromObject=function(t,i,r){return e.Object._fromObject("Triangle",t,i,r)}))}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=2*Math.PI,r=e.util.object.extend;if(e.Ellipse)return void e.warn("fabric.Ellipse is already defined.");var n=e.Object.prototype.cacheProperties.concat();n.push("rx","ry"),e.Ellipse=e.util.createClass(e.Object,{type:"ellipse",rx:0,ry:0,cacheProperties:n,initialize:function(t){this.callSuper("initialize",t),this.set("rx",t&&t.rx||0),this.set("ry",t&&t.ry||0)},_set:function(t,e){switch(this.callSuper("_set",t,e),t){case"rx":this.rx=e,this.set("width",2*e);break;case"ry":this.ry=e,this.set("height",2*e)}return this},getRx:function(){return this.get("rx")*this.get("scaleX")},getRy:function(){return this.get("ry")*this.get("scaleY")},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},toSVG:function(t){var e=this._createBaseSVGMarkup(),i=0,r=0;return this.group&&"path-group"===this.group.type&&(i=this.left+this.rx,r=this.top+this.ry),e.push("\n'),t?t(e.join("")):e.join("")},_render:function(t,e){t.beginPath(),t.save(),t.transform(1,0,0,this.ry/this.rx,0,0),t.arc(e?this.left+this.rx:0,e?(this.top+this.ry)*this.rx/this.ry:0,this.rx,0,i,!1),t.restore(),this._renderFill(t),this._renderStroke(t)}}),e.Ellipse.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),e.Ellipse.fromElement=function(t,i){i||(i={});var n=e.parseAttributes(t,e.Ellipse.ATTRIBUTE_NAMES);n.left=n.left||0,n.top=n.top||0;var s=new e.Ellipse(r(n,i));return s.top-=s.ry,s.left-=s.rx,s},e.Ellipse.fromObject=function(t,i,r){return e.Object._fromObject("Ellipse",t,i,r)}}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend;if(e.Rect)return void e.warn("fabric.Rect is already defined");var r=e.Object.prototype.stateProperties.concat();r.push("rx","ry");var n=e.Object.prototype.cacheProperties.concat();n.push("rx","ry"),e.Rect=e.util.createClass(e.Object,{stateProperties:r,type:"rect",rx:0,ry:0,cacheProperties:n,initialize:function(t){this.callSuper("initialize",t),this._initRxRy()},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(t,e){if(1===this.width&&1===this.height)return void t.fillRect(-.5,-.5,1,1);var i=this.rx?Math.min(this.rx,this.width/2):0,r=this.ry?Math.min(this.ry,this.height/2):0,n=this.width,s=this.height,o=e?this.left:-this.width/2,a=e?this.top:-this.height/2,h=0!==i||0!==r,c=.4477152502;t.beginPath(),t.moveTo(o+i,a),t.lineTo(o+n-i,a),h&&t.bezierCurveTo(o+n-c*i,a,o+n,a+c*r,o+n,a+r),t.lineTo(o+n,a+s-r),h&&t.bezierCurveTo(o+n,a+s-c*r,o+n-c*i,a+s,o+n-i,a+s),t.lineTo(o+i,a+s),h&&t.bezierCurveTo(o+c*i,a+s,o,a+s-c*r,o,a+s-r),t.lineTo(o,a+r),h&&t.bezierCurveTo(o,a+c*r,o+c*i,a,o+i,a),t.closePath(),this._renderFill(t),this._renderStroke(t)},_renderDashedStroke:function(t){var i=-this.width/2,r=-this.height/2,n=this.width,s=this.height;t.beginPath(),e.util.drawDashedLine(t,i,r,i+n,r,this.strokeDashArray),e.util.drawDashedLine(t,i+n,r,i+n,r+s,this.strokeDashArray),e.util.drawDashedLine(t,i+n,r+s,i,r+s,this.strokeDashArray),e.util.drawDashedLine(t,i,r+s,i,r,this.strokeDashArray),t.closePath()},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},toSVG:function(t){var e=this._createBaseSVGMarkup(),i=this.left,r=this.top;return this.group&&"path-group"===this.group.type||(i=-this.width/2,r=-this.height/2),e.push("\n'),t?t(e.join("")):e.join("")}}),e.Rect.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),e.Rect.fromElement=function(t,r){if(!t)return null;r=r||{};var n=e.parseAttributes(t,e.Rect.ATTRIBUTE_NAMES);n.left=n.left||0,n.top=n.top||0;var s=new e.Rect(i(r?e.util.object.clone(r):{},n));return s.visible=s.visible&&s.width>0&&s.height>0,s},e.Rect.fromObject=function(t,i,r){return e.Object._fromObject("Rect",t,i,r)}}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.util.array.min,n=e.util.array.max,s=e.util.toFixed,o=e.Object.NUM_FRACTION_DIGITS;if(e.Polyline)return void e.warn("fabric.Polyline is already defined");var a=e.Object.prototype.cacheProperties.concat();a.push("points"),e.Polyline=e.util.createClass(e.Object,{type:"polyline",points:null,minX:0,minY:0,cacheProperties:a,initialize:function(t,e){e=e||{},this.points=t||[],this.callSuper("initialize",e),this._calcDimensions(),"top"in e||(this.top=this.minY),"left"in e||(this.left=this.minX),this.pathOffset={x:this.minX+this.width/2,y:this.minY+this.height/2}},_calcDimensions:function(){var t=this.points,e=r(t,"x"),i=r(t,"y"),s=n(t,"x"),o=n(t,"y");this.width=s-e||0,this.height=o-i||0,this.minX=e||0,this.minY=i||0},toObject:function(t){return i(this.callSuper("toObject",t),{points:this.points.concat()})},toSVG:function(t){var e,i,r=[],n=this._createBaseSVGMarkup();this.group&&"path-group"===this.group.type||(e=this.pathOffset.x,i=this.pathOffset.y);for(var a=0,h=this.points.length;a\n'),t?t(n.join("")):n.join("")},commonRender:function(t,e){var i,r=this.points.length,n=e?0:this.pathOffset.x,s=e?0:this.pathOffset.y;if(!r||isNaN(this.points[r-1].y))return!1;t.beginPath(),t.moveTo(this.points[0].x-n,this.points[0].y-s);for(var o=0;o"},toObject:function(t){var e=n(this.callSuper("toObject",["sourcePath","pathOffset"].concat(t)),{path:this.path.map(function(t){return t.slice()}),top:this.top,left:this.left});return e},toDatalessObject:function(t){var e=this.toObject(t);return this.sourcePath&&(e.path=this.sourcePath),delete e.sourcePath,e},toSVG:function(t){for(var e=[],i=this._createBaseSVGMarkup(),r="",n=0,s=this.path.length;n\n"),t?t(i.join("")):i.join("")},complexity:function(){return this.path.length},_parsePath:function(){for(var t,e,i,r,n,s=[],o=[],c=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:e[-+]?\d+)?)/gi,l=0,u=this.path.length;lp)for(var b=1,m=n.length;b\n");for(var s=0,o=e.length;s\n"),t?t(n.join("")):n.join("")},toString:function(){return"#"},isSameColor:function(){var t=this.getObjects()[0].get("fill")||"";return"string"==typeof t&&(t=t.toLowerCase(),this.getObjects().every(function(e){var i=e.get("fill")||"";return"string"==typeof i&&i.toLowerCase()===t}))},complexity:function(){return this.paths.reduce(function(t,e){return t+(e&&e.complexity?e.complexity():0)},0)},getObjects:function(){return this.paths}}),e.PathGroup.fromObject=function(t,i){var r=t.paths;delete t.paths,"string"==typeof r?e.loadSVGFromURL(r,function(n){var s=r,o=e.util.groupSVGElements(n,t,s);t.paths=r,i(o)}):e.util.enlivenObjects(r,function(n){var s=new e.PathGroup(n,t);t.paths=r,i(s)})},void(e.PathGroup.async=!0))}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.util.array.min,n=e.util.array.max;if(!e.Group){var s={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};e.Group=e.util.createClass(e.Object,e.Collection,{type:"group",strokeWidth:0,subTargetCheck:!1,initialize:function(t,e,i){e=e||{},this._objects=[],i&&this.callSuper("initialize",e),this._objects=t||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;e.originX&&(this.originX=e.originX),e.originY&&(this.originY=e.originY),i?this._updateObjectsCoords(!0):(this._calcBounds(),this._updateObjectsCoords(),this.callSuper("initialize",e)),this.setCoords(),this.saveCoords()},_updateObjectsCoords:function(t){for(var e=this.getCenterPoint(),i=this._objects.length;i--;)this._updateObjectCoords(this._objects[i],e,t)},_updateObjectCoords:function(t,e,i){if(t.__origHasControls=t.hasControls,t.hasControls=!1,!i){var r=t.getLeft(),n=t.getTop(),s=!0,o=!0;t.set({left:r-e.x,top:n-e.y}),t.setCoords(s,o)}},toString:function(){return"#"},addWithUpdate:function(t){return this._restoreObjectsState(),e.util.resetObjectTransform(this),t&&(this._objects.push(t),t.group=this,t._set("canvas",this.canvas)),this.forEachObject(this._setObjectActive,this),this._calcBounds(),this._updateObjectsCoords(),this.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})},toDatalessObject:function(t){var e=this.getObjects().map(function(e){var i=e.includeDefaultValues;e.includeDefaultValues=e.group.includeDefaultValues;var r=e.toDatalessObject(t);return e.includeDefaultValues=i,r});return i(this.callSuper("toDatalessObject",t),{objects:e})},render:function(t){this._transformDone=!0,this.callSuper("render",t),this._transformDone=!1},shouldCache:function(){var t=this.objectCaching&&(!this.group||this.needsItsOwnCache||!this.group.isCaching());if(this.caching=t,t)for(var e=0,i=this._objects.length;e\n');for(var i=0,r=this._objects.length;i\n"),t?t(e.join("")):e.join("")},get:function(t){if(t in s){if(this[t])return this[t];for(var e=0,i=this._objects.length;e\n',"\n"),this.stroke||this.strokeDashArray){var o=this.fill;this.fill=null,e.push("\n'),this.fill=o}return e.push("\n"),t?t(e.join("")):e.join("")},getSrc:function(t){var e=t?this._element:this._originalElement;return e?fabric.isLikelyNode?e._src:e.src:this.src||""},setSrc:function(t,e,i){fabric.util.loadImage(t,function(t){return this.setElement(t,e,i)},this,i&&i.crossOrigin)},toString:function(){return'#'},applyFilters:function(t,e,i,r){if(e=e||this.filters,i=i||this._originalElement){var n,s,o=fabric.util.createImage(),a=this.canvas?this.canvas.getRetinaScaling():fabric.devicePixelRatio,h=this.minimumScaleTrigger/a,c=this;if(0===e.length)return this._element=i,t&&t(this),i;var l=fabric.util.createCanvasElement();return l.width=i.width,l.height=i.height,l.getContext("2d").drawImage(i,0,0,i.width,i.height),e.forEach(function(t){t&&(r?(n=c.scaleX0?90*Math.round((t-1)/90):90*Math.round(t/90)},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(t){t=t||{};var e=function(){},i=t.onComplete||e,r=t.onChange||e,n=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(t){n.setAngle(t),r()},onComplete:function(){n.setCoords(),i()},onStart:function(){n.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(t){return t.straighten(),this.renderAll(),this},fxStraightenObject:function(t){return t.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.BaseFilter=fabric.util.createClass({type:"BaseFilter",initialize:function(t){t&&this.setOptions(t)},setOptions:function(t){for(var e in t)this[e]=t[e]},toObject:function(){return{type:this.type}},toJSON:function(){return this.toObject()}}),fabric.Image.filters.BaseFilter.fromObject=function(t,e){var i=new fabric.Image.filters[t.type](t);return e&&e(i),i},function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.Image.filters,n=e.util.createClass;r.Brightness=n(r.BaseFilter,{type:"Brightness",initialize:function(t){t=t||{},this.brightness=t.brightness||0},applyTo:function(t){for(var e=t.getContext("2d"),i=e.getImageData(0,0,t.width,t.height),r=i.data,n=this.brightness,s=0,o=r.length;sb||o<0||o>v||(h=4*(a*v+o),c=l[S*d+w],e+=p[h]*c,i+=p[h+1]*c,r+=p[h+2]*c,n+=p[h+3]*c);y[s]=e,y[s+1]=i,y[s+2]=r,y[s+3]=n+_*(255-n)}u.putImageData(m,0,0)},toObject:function(){return i(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),e.Image.filters.Convolute.fromObject=e.Image.filters.BaseFilter.fromObject}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.Image.filters,n=e.util.createClass;r.GradientTransparency=n(r.BaseFilter,{type:"GradientTransparency",initialize:function(t){t=t||{},this.threshold=t.threshold||100},applyTo:function(t){for(var e=t.getContext("2d"),i=e.getImageData(0,0,t.width,t.height),r=i.data,n=this.threshold,s=r.length,o=0,a=r.length;o-1?t.channel:0},applyTo:function(t){if(this.mask){var i,r=t.getContext("2d"),n=r.getImageData(0,0,t.width,t.height),s=n.data,o=this.mask.getElement(),a=e.util.createCanvasElement(),h=this.channel,c=n.width*n.height*4;a.width=t.width,a.height=t.height,a.getContext("2d").drawImage(o,0,0,t.width,t.height);var l=a.getContext("2d").getImageData(0,0,t.width,t.height),u=l.data;for(i=0;ic&&i>c&&r>c&&l(e-i)i&&(l=2,f=-1),a>n&&(u=2,d=-1),h=c.getImageData(0,0,i,n),t.width=o(s,i),t.height=o(a,n),c.putImageData(h,0,0);!g||!p;)i=v,n=b,s*ft)return 0;if(e*=Math.PI,s(e)<1e-16)return 1;var i=e/t;return h(e)*h(i)/e/i}}function f(t){var h,c,u,d,g,k,M,D,A,P,I;for(T.x=(t+.5)*y,j.x=r(T.x),h=0;h=e)){P=r(1e3*s(c-T.x)),O[P]||(O[P]={});for(var E=j.y-w;E<=j.y+w;E++)E<0||E>=o||(I=r(1e3*s(E-T.y)),O[P][I]||(O[P][I]=m(n(i(P*x,2)+i(I*C,2))/1e3)),u=O[P][I],u>0&&(d=4*(E*e+c),g+=u,k+=u*v[d],M+=u*v[d+1],D+=u*v[d+2],A+=u*v[d+3]))}d=4*(h*a+t),b[d]=k/g,b[d+1]=M/g,b[d+2]=D/g,b[d+3]=A/g}return++t1&&L<-1||(x=2*L*L*L-3*L*L+1,x>0&&(E=4*(I+M*e),j+=x*p[E+3],S+=x,p[E+3]<255&&(x=x*p[E+3]/250),w+=x*p[E],O+=x*p[E+1],T+=x*p[E+2],C+=x))}b[_]=w/C,b[_+1]=O/C,b[_+2]=T/C,b[_+3]=j/S}return v},toObject:function(){return{type:this.type,scaleX:this.scaleX,scaleY:this.scaleY,resizeType:this.resizeType,lanczosLobes:this.lanczosLobes}}}),e.Image.filters.Resize.fromObject=e.Image.filters.BaseFilter.fromObject}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.Image.filters,n=e.util.createClass;r.ColorMatrix=n(r.BaseFilter,{type:"ColorMatrix",initialize:function(t){t||(t={}),this.matrix=t.matrix||[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0]},applyTo:function(t){var e,i,r,n,s,o=t.getContext("2d"),a=o.getImageData(0,0,t.width,t.height),h=a.data,c=h.length,l=this.matrix;for(e=0;e'},_getCacheCanvasDimensions:function(){var t=this.callSuper("_getCacheCanvasDimensions"),e=2*this.fontSize;return t.width+=e*t.zoomX,t.height+=e*t.zoomY,t},_render:function(t){this._setTextStyles(t),this.group&&"path-group"===this.group.type&&t.translate(this.left,this.top),this._renderTextLinesBackground(t),this._renderText(t),this._renderTextDecoration(t)},_renderText:function(t){this._renderTextFill(t),this._renderTextStroke(t)},_setTextStyles:function(t){t.textBaseline="alphabetic",t.font=this._getFontDeclaration()},_getTextHeight:function(){return this._getHeightOfSingleLine()+(this._textLines.length-1)*this._getHeightOfLine()},_getTextWidth:function(t){for(var e=this._getLineWidth(t,0),i=1,r=this._textLines.length;ie&&(e=n)}return e},_renderChars:function(t,e,i,r,n){var s,o,a=t.slice(0,-4);if(this[a].toLive){var h=-this.width/2+this[a].offsetX||0,c=-this.height/2+this[a].offsetY||0;e.save(),e.translate(h,c),r-=h,n-=c}if(0!==this.charSpacing){var l=this._getWidthOfCharSpacing();i=i.split("");for(var u=0,f=i.length;u0?o:0}else e[t](i,r,n);this[a].toLive&&e.restore()},_renderTextLine:function(t,e,i,r,n,s){n-=this.fontSize*this._fontSizeFraction;var o=this._getLineWidth(e,s);if("justify"!==this.textAlign||this.width0?u/f:0,g=0,p=0,v=h.length;p0?n:0},_getLeftOffset:function(){return-this.width/2},_getTopOffset:function(){return-this.height/2},isEmptyStyles:function(){return!0},_renderTextCommon:function(t,e){for(var i=0,r=this._getLeftOffset(),n=this._getTopOffset(),s=0,o=this._textLines.length;s0&&(r=this._getLineLeftOffset(i),t.fillRect(this._getLeftOffset()+r,this._getTopOffset()+n,i,e/this.lineHeight)),n+=e;t.fillStyle=s,this._removeShadow(t)}},_getLineLeftOffset:function(t){return"center"===this.textAlign?(this.width-t)/2:"right"===this.textAlign?this.width-t:0},_clearCache:function(){this.__lineWidths=[],this.__lineHeights=[]},_shouldClearDimensionCache:function(){var t=this._forceClearCache;return t||(t=this.hasStateChanged("_dimensionAffectingProps")),t&&(this.saveState({propertySet:"_dimensionAffectingProps"}),this.dirty=!0),t},_getLineWidth:function(t,e){if(this.__lineWidths[e])return this.__lineWidths[e]===-1?this.width:this.__lineWidths[e];var i,r,n=this._textLines[e];return i=""===n?0:this._measureLine(t,e),this.__lineWidths[e]=i,i&&"justify"===this.textAlign&&(r=n.split(/\s+/),r.length>1&&(this.__lineWidths[e]=-1)),i},_getWidthOfCharSpacing:function(){return 0!==this.charSpacing?this.fontSize*this.charSpacing/1e3:0},_measureLine:function(t,e){var i,r,n=this._textLines[e],s=t.measureText(n).width,o=0;return 0!==this.charSpacing&&(i=n.split("").length,o=(i-1)*this._getWidthOfCharSpacing()),r=s+o,r>0?r:0},_renderTextDecoration:function(t){function e(e){var n,s,o,a,h,c,l,u=0;for(n=0,s=r._textLines.length;n-1&&n.push(.85),this.textDecoration.indexOf("line-through")>-1&&n.push(.43),this.textDecoration.indexOf("overline")>-1&&n.push(-.12),n.length>0&&e(n)}},_getFontDeclaration:function(){return[e.isLikelyNode?this.fontWeight:this.fontStyle,e.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",e.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(t,e){this.visible&&(this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(this._shouldClearDimensionCache()&&(this._setTextStyles(t),this._initDimensions(t)),this.callSuper("render",t,e)))},_splitTextIntoLines:function(){return this.text.split(this._reNewline)},toObject:function(t){var e=["text","fontSize","fontWeight","fontFamily","fontStyle","lineHeight","textDecoration","textAlign","textBackgroundColor","charSpacing"].concat(t);return this.callSuper("toObject",e)},toSVG:function(t){this.ctx||(this.ctx=e.util.createCanvasElement().getContext("2d"));var i=this._createBaseSVGMarkup(),r=this._getSVGLeftTopOffsets(this.ctx),n=this._getSVGTextAndBg(r.textTop,r.textLeft);return this._wrapSVGTextAndBg(i,n),t?t(i.join("")):i.join("")},_getSVGLeftTopOffsets:function(t){var e=this._getHeightOfLine(t,0),i=-this.width/2,r=0;return{textLeft:i+(this.group&&"path-group"===this.group.type?this.left:0),textTop:r+(this.group&&"path-group"===this.group.type?-this.top:0),lineTop:e}},_wrapSVGTextAndBg:function(t,e){var i=!0,r=this.getSvgFilter(),n=""===r?"":' style="'+r+'"';t.push("\t\n",e.textBgRects.join(""),"\t\t\n',e.textSpans.join(""),"\t\t\n","\t\n")},_getSVGTextAndBg:function(t,e){var i=[],r=[],n=0;this._setSVGBg(r);for(var s=0,o=this._textLines.length;s",e.util.string.escapeXml(this._textLines[t]),"\n")},_setSVGTextLineJustifed:function(t,n,s,o){var a=e.util.createCanvasElement().getContext("2d");this._setTextStyles(a);var h,c,l=this._textLines[t],u=l.split(/\s+/),f=this._getWidthOfWords(a,u.join("")),d=this.width-f,g=u.length-1,p=g>0?d/g:0,v=this._getFillAttributes(this.fill);for(o+=this._getLineLeftOffset(this._getLineWidth(a,t)),t=0,c=u.length;t",e.util.string.escapeXml(h),"\n"),o+=this._getWidthOfWords(a,h)+p},_setSVGTextLineBg:function(t,e,n,s,o){t.push("\t\t\n')},_setSVGBg:function(t){this.backgroundColor&&t.push("\t\t\n')},_getFillAttributes:function(t){var i=t&&"string"==typeof t?new e.Color(t):"";return i&&i.getSource()&&1!==i.getAlpha()?'opacity="'+i.getAlpha()+'" fill="'+i.setAlpha(1).toRgb()+'"':'fill="'+t+'"'},_set:function(t,e){this.callSuper("_set",t,e),this._dimensionAffectingProps.indexOf(t)>-1&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),e.Text.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x y dx dy font-family font-style font-weight font-size text-decoration text-anchor".split(" ")),e.Text.DEFAULT_SVG_FONT_SIZE=16,e.Text.fromElement=function(t,i){if(!t)return null;var r=e.parseAttributes(t,e.Text.ATTRIBUTE_NAMES);i=e.util.object.extend(i?e.util.object.clone(i):{},r),i.top=i.top||0,i.left=i.left||0,"dx"in r&&(i.left+=r.dx),"dy"in r&&(i.top+=r.dy),"fontSize"in i||(i.fontSize=e.Text.DEFAULT_SVG_FONT_SIZE),i.originX||(i.originX="left");var n="";"textContent"in t?n=t.textContent:"firstChild"in t&&null!==t.firstChild&&"data"in t.firstChild&&null!==t.firstChild.data&&(n=t.firstChild.data),n=n.replace(/^\s+|\s+$|\n+/g,"").replace(/\s+/g," ");var s=new e.Text(n,i),o=s.getHeight()/s.height,a=(s.height+s.strokeWidth)*s.lineHeight-s.height,h=a*o,c=s.getHeight()+h,l=0;return"left"===s.originX&&(l=s.getWidth()/2),"right"===s.originX&&(l=-s.getWidth()/2),s.set({left:s.getLeft()+l,top:s.getTop()-c/2+s.fontSize*(.18+s._fontSizeFraction)/s.lineHeight}),s},e.Text.fromObject=function(t,i,r){return e.Object._fromObject("Text",t,i,r,"text")},e.util.createAccessors(e.Text)}("undefined"!=typeof exports?exports:this),function(){var t=fabric.util.object.clone;fabric.IText=fabric.util.createClass(fabric.Text,fabric.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"#333",cursorDelay:1e3,cursorDuration:600,styles:null,caching:!0,_reSpace:/\s|\n/,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,__widthOfSpace:[],initialize:function(t,e){this.styles=e?e.styles||{}:{},this.callSuper("initialize",t,e),this.initBehavior()},_clearCache:function(){this.callSuper("_clearCache"),this.__widthOfSpace=[]},isEmptyStyles:function(){if(!this.styles)return!0;var t=this.styles;for(var e in t)for(var i in t[e])for(var r in t[e][i])return!1;return!0},setSelectionStart:function(t){t=Math.max(t,0),this._updateAndFire("selectionStart",t)},setSelectionEnd:function(t){t=Math.min(t,this.text.length),this._updateAndFire("selectionEnd",t)},_updateAndFire:function(t,e){this[t]!==e&&(this._fireSelectionChanged(),this[t]=e),this._updateTextarea()},_fireSelectionChanged:function(){this.fire("selection:changed"),this.canvas&&this.canvas.fire("text:selection:changed",{target:this})},getSelectionStyles:function(t,e){if(2===arguments.length){for(var i=[],r=t;r0?a:0,lineLeft:r},this.cursorOffsetCache=i,this.cursorOffsetCache},renderCursor:function(t,e){var i=this.get2DCursorLocation(),r=i.lineIndex,n=i.charIndex,s=this.getCurrentCharFontSize(r,n),o=t.leftOffset,a=this.scaleX*this.canvas.getZoom(),h=this.cursorWidth/a;e.fillStyle=this.getCurrentCharColor(r,n),e.globalAlpha=this.__isMousedown?1:this._currentCursorOpacity,e.fillRect(t.left+o-h/2,t.top+t.topOffset,h,s)},renderSelection:function(t,e,i){i.fillStyle=this.selectionColor;for(var r=this.get2DCursorLocation(this.selectionStart),n=this.get2DCursorLocation(this.selectionEnd),s=r.lineIndex,o=n.lineIndex,a=s;a<=o;a++){var h=this._getLineLeftOffset(this._getLineWidth(i,a))||0,c=this._getHeightOfLine(this.ctx,a),l=0,u=0,f=this._textLines[a];if(a===s){for(var d=0,g=f.length;d=r.charIndex&&(a!==o||ds&&a1)&&(c/=this.lineHeight),i.fillRect(e.left+h,e.top+e.topOffset,u>0?u:0,c),e.topOffset+=l}},_renderChars:function(t,e,i,r,n,s,o){if(this.isEmptyStyles())return this._renderCharsFast(t,e,i,r,n);o=o||0;var a,h,c=this._getHeightOfLine(e,s),l="";e.save(),n-=c/this.lineHeight*this._fontSizeFraction;for(var u=o,f=i.length+o;u<=f;u++)a=a||this.getCurrentCharStyle(s,u),h=this.getCurrentCharStyle(s,u+1),(this._hasStyleChanged(a,h)||u===f)&&(this._renderChar(t,e,s,u-1,l,r,n,c),l="",a=h),l+=i[u-o];e.restore()},_renderCharsFast:function(t,e,i,r,n){"fillText"===t&&this.fill&&this.callSuper("_renderChars",t,e,i,r,n),"strokeText"===t&&(this.stroke&&this.strokeWidth>0||this.skipFillStrokeCheck)&&this.callSuper("_renderChars",t,e,i,r,n)},_renderChar:function(t,e,i,r,n,s,o,a){var h,c,l,u,f,d,g,p,v,b=this._getStyleDeclaration(i,r);if(b?(c=this._getHeightOfChar(e,n,i,r),u=b.stroke,l=b.fill,d=b.textDecoration):c=this.fontSize,u=(u||this.stroke)&&"strokeText"===t,l=(l||this.fill)&&"fillText"===t,b&&e.save(),h=this._applyCharStylesGetWidth(e,n,i,r,b||null),d=d||this.textDecoration,b&&b.textBackgroundColor&&this._removeShadow(e),0!==this.charSpacing){p=this._getWidthOfCharSpacing(),g=n.split(""),h=0;for(var m,y=0,_=g.length;y<_;y++)m=g[y],l&&e.fillText(m,s+h,o),u&&e.strokeText(m,s+h,o),v=e.measureText(m).width+p,h+=v>0?v:0}else l&&e.fillText(n,s,o),u&&e.strokeText(n,s,o);(d||""!==d)&&(f=this._fontSizeFraction*a/this.lineHeight,this._renderCharDecoration(e,d,s,o,f,h,c)),b&&e.restore(),e.translate(h,0)},_hasStyleChanged:function(t,e){return t.fill!==e.fill||t.fontSize!==e.fontSize||t.textBackgroundColor!==e.textBackgroundColor||t.textDecoration!==e.textDecoration||t.fontFamily!==e.fontFamily||t.fontWeight!==e.fontWeight||t.fontStyle!==e.fontStyle||t.stroke!==e.stroke||t.strokeWidth!==e.strokeWidth},_renderCharDecoration:function(t,e,i,r,n,s,o){if(e){var a,h,c=o/15,l={underline:r+o/10,"line-through":r-o*(this._fontSizeFraction+this._fontSizeMult-1)+c,overline:r-(this._fontSizeMult-this._fontSizeFraction)*o},u=["underline","line-through","overline"];for(a=0;a-1&&t.fillRect(i,l[h],s,c)}},_renderTextLine:function(t,e,i,r,n,s){this.isEmptyStyles()||(n+=this.fontSize*(this._fontSizeFraction+.03)),this.callSuper("_renderTextLine",t,e,i,r,n,s)},_renderTextDecoration:function(t){if(this.isEmptyStyles())return this.callSuper("_renderTextDecoration",t)},_renderTextLinesBackground:function(t){this.callSuper("_renderTextLinesBackground",t);var e,i,r,n,s,o,a,h,c,l,u=0,f=this._getLeftOffset(),d=this._getTopOffset(),g="";t.save();for(var p=0,v=this._textLines.length;p0?n:0},_getHeightOfChar:function(t,e,i){var r=this._getStyleDeclaration(e,i);return r&&r.fontSize?r.fontSize:this.fontSize},_getWidthOfCharsAt:function(t,e,i){var r,n,s=0;for(r=0;r0?i:0},_getWidthOfSpace:function(t,e){if(this.__widthOfSpace[e])return this.__widthOfSpace[e];var i=this._textLines[e],r=this._getWidthOfWords(t,i,e,0),n=this.width-r,s=i.length-i.replace(this._reSpacesAndTabs,"").length,o=Math.max(n/s,t.measureText(" ").width);return this.__widthOfSpace[e]=o,o},_getWidthOfWords:function(t,e,i,r){for(var n=0,s=0;sr&&(r=o)}return this.__lineHeights[e]=r*this.lineHeight*this._fontSizeMult,this.__lineHeights[e]},_getTextHeight:function(t){for(var e,i=0,r=0,n=this._textLines.length;r-1;)e++,i--;return t-e},findWordBoundaryRight:function(t){var e=0,i=t;if(this._reSpace.test(this.text.charAt(i)))for(;this._reSpace.test(this.text.charAt(i));)e++,i++;for(;/\S/.test(this.text.charAt(i))&&i-1;)e++,i--;return t-e},findLineBoundaryRight:function(t){for(var e=0,i=t;!/\n/.test(this.text.charAt(i))&&i0&&ithis.__selectionStartOnMouseDown?(this.selectionStart=this.__selectionStartOnMouseDown,this.selectionEnd=e):(this.selectionStart=e,this.selectionEnd=this.__selectionStartOnMouseDown),this.selectionStart===i&&this.selectionEnd===r||(this.restartCursorIfNeeded(),this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()))}},_setEditingProps:function(){this.hoverCursor="text",this.canvas&&(this.canvas.defaultCursor=this.canvas.moveCursor="text"),this.borderColor=this.editingBorderColor,this.hasControls=this.selectable=!1,this.lockMovementX=this.lockMovementY=!0},_updateTextarea:function(){if(this.hiddenTextarea&&!this.inCompositionMode&&(this.cursorOffsetCache={},this.hiddenTextarea.value=this.text,this.hiddenTextarea.selectionStart=this.selectionStart,this.hiddenTextarea.selectionEnd=this.selectionEnd,this.selectionStart===this.selectionEnd)){var t=this._calcTextareaPosition();this.hiddenTextarea.style.left=t.left,this.hiddenTextarea.style.top=t.top,this.hiddenTextarea.style.fontSize=t.fontSize}},_calcTextareaPosition:function(){if(!this.canvas)return{x:1,y:1};var t=this.text.split(""),e=this._getCursorBoundaries(t,"cursor"),i=this.get2DCursorLocation(),r=i.lineIndex,n=i.charIndex,s=this.getCurrentCharFontSize(r,n),o=e.leftOffset,a=this.calcTransformMatrix(),h={x:e.left+o,y:e.top+e.topOffset+s},c=this.canvas.upperCanvasEl,l=c.width-s,u=c.height-s;return h=fabric.util.transformPoint(h,a),h=fabric.util.transformPoint(h,this.canvas.viewportTransform),h.x<0&&(h.x=0),h.x>l&&(h.x=l),h.y<0&&(h.y=0),h.y>u&&(h.y=u),h.x+=this.canvas._offset.left,h.y+=this.canvas._offset.top,{left:h.x+"px",top:h.y+"px",fontSize:s}},_saveEditingProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,defaultCursor:this.canvas&&this.canvas.defaultCursor,moveCursor:this.canvas&&this.canvas.moveCursor}},_restoreEditingProps:function(){this._savedProps&&(this.hoverCursor=this._savedProps.overCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY,this.canvas&&(this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor))},exitEditing:function(){var t=this._textBeforeEdit!==this.text;return this.selected=!1,this.isEditing=!1,this.selectable=!0,this.selectionEnd=this.selectionStart,this.hiddenTextarea&&(this.hiddenTextarea.blur&&this.hiddenTextarea.blur(),this.canvas&&this.hiddenTextarea.parentNode.removeChild(this.hiddenTextarea),this.hiddenTextarea=null),this.abortCursorAnimation(),this._restoreEditingProps(),this._currentCursorOpacity=0,this.fire("editing:exited"),t&&this.fire("modified"),this.canvas&&(this.canvas.off("mouse:move",this.mouseMoveHandler),this.canvas.fire("text:editing:exited",{target:this}),t&&this.canvas.fire("object:modified",{target:this})),this},_removeExtraneousStyles:function(){for(var t in this.styles)this._textLines[t]||delete this.styles[t]},_removeCharsFromTo:function(t,e){for(;e!==t;)this._removeSingleCharAndStyle(t+1),e--;this.selectionStart=t,this.selectionEnd=t},_removeSingleCharAndStyle:function(t){var e="\n"===this.text[t-1],i=e?t:t-1;this.removeStyleObject(e,i),this.text=this.text.slice(0,t-1)+this.text.slice(t),this._textLines=this._splitTextIntoLines()},insertChars:function(t,e){var i;if(this.selectionEnd-this.selectionStart>1&&this._removeCharsFromTo(this.selectionStart,this.selectionEnd),!e&&this.isEmptyStyles())return void this.insertChar(t,!1);for(var r=0,n=t.length;r=i&&(o=!0,s[h-i]=this.styles[e][a],delete this.styles[e][a])}o&&(this.styles[e+1]=s)}this._forceClearCache=!0},insertCharStyleObject:function(e,i,r){var n=this.styles[e],s=t(n);0!==i||r||(i=1);for(var o in s){var a=parseInt(o,10);a>=i&&(n[a+1]=s[a],s[a-1]||delete n[a])}var h=r||t(n[i-1]);h&&(this.styles[e][i]=h),this._forceClearCache=!0},insertStyleObjects:function(t,e,i){var r=this.get2DCursorLocation(),n=r.lineIndex,s=r.charIndex;this._getLineStyle(n)||this._setLineStyle(n,{}),"\n"===t?this.insertNewlineStyleObject(n,s,e):this.insertCharStyleObject(n,s,i)},shiftLineStyles:function(e,i){var r=t(this.styles);for(var n in r){var s=parseInt(n,10);s<=e&&delete r[s]}for(var n in this.styles){var s=parseInt(n,10);s>e&&(this.styles[s+i]=r[s],r[s-i]||delete this.styles[s])}},removeStyleObject:function(t,e){var i=this.get2DCursorLocation(e),r=i.lineIndex,n=i.charIndex;this._removeStyleObject(t,i,r,n)},_getTextOnPreviousLine:function(t){return this._textLines[t-1]},_removeStyleObject:function(e,i,r,n){if(e){var s=this._getTextOnPreviousLine(i.lineIndex),o=s?s.length:0;this.styles[r-1]||(this.styles[r-1]={});for(n in this.styles[r])this.styles[r-1][parseInt(n,10)+o]=this.styles[r][n];this.shiftLineStyles(i.lineIndex,-1)}else{var a=this.styles[r];a&&delete a[n];var h=t(a);for(var c in h){var l=parseInt(c,10);l>=n&&0!==l&&(a[l-1]=h[l],delete a[l])}}},insertNewline:function(){this.insertChars("\n")},setSelectionStartEndWithShift:function(t,e,i){i<=t?(e===t?this._selectionDirection="left":"right"===this._selectionDirection&&(this._selectionDirection="left",this.selectionEnd=t),this.selectionStart=i):i>t&&it?this.selectionStart=t:this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd>t?this.selectionEnd=t:this.selectionEnd<0&&(this.selectionEnd=0)}})}(),fabric.util.object.extend(fabric.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+new Date,this.__lastLastClickTime=+new Date,this.__lastPointer={},this.on("mousedown",this.onMouseDown.bind(this))},onMouseDown:function(t){this.__newClickTime=+new Date;var e=this.canvas.getPointer(t.e);this.isTripleClick(e)?(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="white-space: nowrap; position: absolute; top: "+t.top+"; left: "+t.left+"; opacity: 0; width: 1px; height: 1px; z-index: -999;",fabric.document.body.appendChild(this.hiddenTextarea),fabric.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this)),fabric.util.addListener(this.hiddenTextarea,"keyup",this.onKeyUp.bind(this)),fabric.util.addListener(this.hiddenTextarea,"input",this.onInput.bind(this)),fabric.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this)),fabric.util.addListener(this.hiddenTextarea,"cut",this.cut.bind(this)),fabric.util.addListener(this.hiddenTextarea,"paste",this.paste.bind(this)),fabric.util.addListener(this.hiddenTextarea,"compositionstart",this.onCompositionStart.bind(this)),fabric.util.addListener(this.hiddenTextarea,"compositionupdate",this.onCompositionUpdate.bind(this)),fabric.util.addListener(this.hiddenTextarea,"compositionend",this.onCompositionEnd.bind(this)),!this._clickHandlerInitialized&&this.canvas&&(fabric.util.addListener(this.canvas.upperCanvasEl,"click",this.onClick.bind(this)),this._clickHandlerInitialized=!0)},_keysMap:{8:"removeChars",9:"exitEditing",27:"exitEditing",13:"insertNewline",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorRight",36:"moveCursorLeft",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown",46:"forwardDelete"},_ctrlKeysMapUp:{67:"copy",88:"cut"},_ctrlKeysMapDown:{65:"selectAll"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(t){if(this.isEditing){if(t.keyCode in this._keysMap)this[this._keysMap[t.keyCode]](t);else{if(!(t.keyCode in this._ctrlKeysMapDown&&(t.ctrlKey||t.metaKey)))return;this[this._ctrlKeysMapDown[t.keyCode]](t)}t.stopImmediatePropagation(),t.preventDefault(),t.keyCode>=33&&t.keyCode<=40?(this.clearContextTop(),this.renderCursorOrSelection()):this.canvas&&this.canvas.renderAll()}},onKeyUp:function(t){return!this.isEditing||this._copyDone?void(this._copyDone=!1):void(t.keyCode in this._ctrlKeysMapUp&&(t.ctrlKey||t.metaKey)&&(this[this._ctrlKeysMapUp[t.keyCode]](t),t.stopImmediatePropagation(),t.preventDefault(),this.canvas&&this.canvas.renderAll()))},onInput:function(t){if(this.isEditing&&!this.inCompositionMode){var e,i,r,n=this.selectionStart||0,s=this.selectionEnd||0,o=this.text.length,a=this.hiddenTextarea.value.length;a>o?(r="left"===this._selectionDirection?s:n,e=a-o,i=this.hiddenTextarea.value.slice(r,r+e)):(e=a-o+s-n,i=this.hiddenTextarea.value.slice(n,n+e)),this.insertChars(i),t.stopPropagation()}},onCompositionStart:function(){this.inCompositionMode=!0,this.prevCompositionLength=0,this.compositionStart=this.selectionStart},onCompositionEnd:function(){this.inCompositionMode=!1},onCompositionUpdate:function(t){var e=t.data;this.selectionStart=this.compositionStart,this.selectionEnd=this.selectionEnd===this.selectionStart?this.compositionStart+this.prevCompositionLength:this.selectionEnd,this.insertChars(e,!1),this.prevCompositionLength=e.length},forwardDelete:function(t){if(this.selectionStart===this.selectionEnd){if(this.selectionStart===this.text.length)return;this.moveCursorRight(t)}this.removeChars(t)},copy:function(t){if(this.selectionStart!==this.selectionEnd){var e=this.getSelectedText(),i=this._getClipboardData(t);i&&i.setData("text",e),fabric.copiedText=e,fabric.copiedTextStyle=this.getSelectionStyles(this.selectionStart,this.selectionEnd),t.stopImmediatePropagation(),t.preventDefault(),this._copyDone=!0}},paste:function(t){var e=null,i=this._getClipboardData(t),r=!0;i?(e=i.getData("text").replace(/\r/g,""),fabric.copiedTextStyle&&fabric.copiedText===e||(r=!1)):e=fabric.copiedText,e&&this.insertChars(e,r),t.stopImmediatePropagation(),t.preventDefault()},cut:function(t){this.selectionStart!==this.selectionEnd&&(this.copy(t),this.removeChars(t))},_getClipboardData:function(t){return t&&t.clipboardData||fabric.window.clipboardData},_getWidthBeforeCursor:function(t,e){for(var i,r=this._textLines[t].slice(0,e),n=this._getLineWidth(this.ctx,t),s=this._getLineLeftOffset(n),o=0,a=r.length;oe){i=!0;var f=o-u,d=o,g=Math.abs(f-e),p=Math.abs(d-e);a=p=this.text.length&&this.selectionEnd>=this.text.length||this._moveCursorUpOrDown("Down",t)},moveCursorUp:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorUpOrDown("Up",t)},_moveCursorUpOrDown:function(t,e){var i="get"+t+"CursorOffset",r=this[i](e,"right"===this._selectionDirection);e.shiftKey?this.moveCursorWithShift(r):this.moveCursorWithoutShift(r),0!==r&&(this.setSelectionInBoundaries(),this.abortCursorAnimation(),this._currentCursorOpacity=1,this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorWithShift:function(t){var e="left"===this._selectionDirection?this.selectionStart+t:this.selectionEnd+t;return this.setSelectionStartEndWithShift(this.selectionStart,this.selectionEnd,e),0!==t},moveCursorWithoutShift:function(t){return t<0?(this.selectionStart+=t,this.selectionEnd=this.selectionStart):(this.selectionEnd+=t,this.selectionStart=this.selectionEnd),0!==t},moveCursorLeft:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorLeftOrRight("Left",t)},_move:function(t,e,i){var r;if(t.altKey)r=this["findWordBoundary"+i](this[e]);else{if(!t.metaKey&&35!==t.keyCode&&36!==t.keyCode)return this[e]+="Left"===i?-1:1,!0;r=this["findLineBoundary"+i](this[e])}if(void 0!==typeof r&&this[e]!==r)return this[e]=r,!0},_moveLeft:function(t,e){return this._move(t,e,"Left")},_moveRight:function(t,e){return this._move(t,e,"Right")},moveCursorLeftWithoutShift:function(t){var e=!0;return this._selectionDirection="left",this.selectionEnd===this.selectionStart&&0!==this.selectionStart&&(e=this._moveLeft(t,"selectionStart")),this.selectionEnd=this.selectionStart,e},moveCursorLeftWithShift:function(t){return"right"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveLeft(t,"selectionEnd"):0!==this.selectionStart?(this._selectionDirection="left",this._moveLeft(t,"selectionStart")):void 0},moveCursorRight:function(t){this.selectionStart>=this.text.length&&this.selectionEnd>=this.text.length||this._moveCursorLeftOrRight("Right",t)},_moveCursorLeftOrRight:function(t,e){var i="moveCursor"+t+"With";this._currentCursorOpacity=1,i+=e.shiftKey?"Shift":"outShift",this[i](e)&&(this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorRightWithShift:function(t){return"left"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveRight(t,"selectionStart"):this.selectionEnd!==this.text.length?(this._selectionDirection="right",this._moveRight(t,"selectionEnd")):void 0},moveCursorRightWithoutShift:function(t){var e=!0;return this._selectionDirection="right",this.selectionStart===this.selectionEnd?(e=this._moveRight(t,"selectionStart"),this.selectionEnd=this.selectionStart):this.selectionStart=this.selectionEnd,e},removeChars:function(t){this.selectionStart===this.selectionEnd?this._removeCharsNearCursor(t):this._removeCharsFromTo(this.selectionStart,this.selectionEnd),this.set("dirty",!0),this.setSelectionEnd(this.selectionStart),this._removeExtraneousStyles(),this.canvas&&this.canvas.renderAll(),this.setCoords(),this.fire("changed"),this.canvas&&this.canvas.fire("text:changed",{target:this})},_removeCharsNearCursor:function(t){if(0!==this.selectionStart)if(t.metaKey){var e=this.findLineBoundaryLeft(this.selectionStart);this._removeCharsFromTo(e,this.selectionStart),this.setSelectionStart(e)}else if(t.altKey){var i=this.findWordBoundaryLeft(this.selectionStart);this._removeCharsFromTo(i,this.selectionStart),this.setSelectionStart(i)}else this._removeSingleCharAndStyle(this.selectionStart),this.setSelectionStart(this.selectionStart-1)}}),function(){var t=fabric.util.toFixed,e=fabric.Object.NUM_FRACTION_DIGITS;fabric.util.object.extend(fabric.IText.prototype,{_setSVGTextLineText:function(t,e,i,r,n,s){this._getLineStyle(t)?this._setSVGTextLineChars(t,e,i,r,s):fabric.Text.prototype._setSVGTextLineText.call(this,t,e,i,r,n)},_setSVGTextLineChars:function(t,e,i,r,n){for(var s=this._textLines[t],o=0,a=this._getLineLeftOffset(this._getLineWidth(this.ctx,t))-this.width/2,h=this._getSVGLineTopOffset(t),c=this._getHeightOfLine(this.ctx,t),l=0,u=s.length;l\n'].join("")},_createTextCharSpan:function(i,r,n,s,o){var a=this.getSvgStyles.call(fabric.util.object.extend({visible:!0,fill:this.fill,stroke:this.stroke,type:"text",getSvgFilter:fabric.Object.prototype.getSvgFilter},r));return['\t\t\t',fabric.util.string.escapeXml(i),"\n"].join("")}})}(),function(t){"use strict";var e=t.fabric||(t.fabric={});e.Textbox=e.util.createClass(e.IText,e.Observable,{type:"textbox",minWidth:20,dynamicMinWidth:2,__cachedLines:null,lockScalingY:!0,lockScalingFlip:!0,noScaleCache:!1,initialize:function(t,i){this.callSuper("initialize",t,i),this.setControlsVisibility(e.Textbox.getTextboxControlVisibility()),this.ctx=this.objectCaching?this._cacheContext:e.util.createCanvasElement().getContext("2d"),this._dimensionAffectingProps.push("width")},_initDimensions:function(t){this.__skipDimension||(t||(t=e.util.createCanvasElement().getContext("2d"),this._setTextStyles(t),this.clearContextTop()),this.dynamicMinWidth=0,this._textLines=this._splitTextIntoLines(t),this.dynamicMinWidth>this.width&&this._set("width",this.dynamicMinWidth),this._clearCache(),this.height=this._getTextHeight(t))},_generateStyleMap:function(){for(var t=0,e=0,i=0,r={},n=0;n0?(e=0,i++,t++):" "===this.text[i]&&n>0&&(e++,i++),r[n]={line:t,offset:e},i+=this._textLines[n].length,e+=this._textLines[n].length;return r},_getStyleDeclaration:function(t,e,i){if(this._styleMap){var r=this._styleMap[t];if(!r)return i?{}:null;t=r.line,e=r.offset+e}return this.callSuper("_getStyleDeclaration",t,e,i)},_setStyleDeclaration:function(t,e,i){var r=this._styleMap[t];t=r.line,e=r.offset+e,this.styles[t][e]=i},_deleteStyleDeclaration:function(t,e){var i=this._styleMap[t];t=i.line,e=i.offset+e,delete this.styles[t][e]},_getLineStyle:function(t){var e=this._styleMap[t];return this.styles[e.line]},_setLineStyle:function(t,e){var i=this._styleMap[t];this.styles[i.line]=e},_deleteLineStyle:function(t){var e=this._styleMap[t];delete this.styles[e.line]},_wrapText:function(t,e){var i,r=e.split(this._reNewline),n=[];for(i=0;i=this.width&&!d?(n.push(s),s="",r=l,d=!0):r+=g,d||(s+=c),s+=a,u=this._measureText(t,c,i,h),h++,d=!1,l>f&&(f=l);return p&&n.push(s),f>this.dynamicMinWidth&&(this.dynamicMinWidth=f-g),n},_splitTextIntoLines:function(t){t=t||this.ctx;var e=this.textAlign;this._styleMap=null,t.save(),this._setTextStyles(t),this.textAlign="left";var i=this._wrapText(t,this.text);return this.textAlign=e,t.restore(),this._textLines=i,this._styleMap=this._generateStyleMap(),i},setOnGroup:function(t,e){"scaleX"===t&&(this.set("scaleX",Math.abs(1/e)),this.set("width",this.get("width")*e/("undefined"==typeof this.__oldScaleX?1:this.__oldScaleX)),this.__oldScaleX=e)},get2DCursorLocation:function(t){"undefined"==typeof t&&(t=this.selectionStart);for(var e=this._textLines.length,i=0,r=0;r=h.getMinWidth()?(h.set("width",c),!0):void 0},fabric.Group.prototype._refreshControlsVisibility=function(){if("undefined"!=typeof fabric.Textbox)for(var t=this._objects.length;t--;)if(this._objects[t]instanceof fabric.Textbox)return void this.setControlsVisibility(fabric.Textbox.getTextboxControlVisibility())},fabric.util.object.extend(fabric.Textbox.prototype,{_removeExtraneousStyles:function(){for(var t in this._styleMap)this._textLines[t]||delete this.styles[this._styleMap[t].line]},insertCharStyleObject:function(t,e,i){var r=this._styleMap[t];t=r.line,e=r.offset+e,fabric.IText.prototype.insertCharStyleObject.apply(this,[t,e,i])},insertNewlineStyleObject:function(t,e,i){var r=this._styleMap[t];t=r.line,e=r.offset+e,fabric.IText.prototype.insertNewlineStyleObject.apply(this,[t,e,i])},shiftLineStyles:function(t,e){var i=this._styleMap[t];t=i.line,fabric.IText.prototype.shiftLineStyles.call(this,t,e)},_getTextOnPreviousLine:function(t){for(var e=this._textLines[t-1];this._styleMap[t-2]&&this._styleMap[t-2].line===this._styleMap[t-1].line;)e=this._textLines[t-2]+e,t--;return e},removeStyleObject:function(t,e){var i=this.get2DCursorLocation(e),r=this._styleMap[i.lineIndex],n=r.line,s=r.offset+i.charIndex;this._removeStyleObject(t,i,n,s)}})}(),function(){var t=fabric.IText.prototype._getNewSelectionStartFromOffset;fabric.IText.prototype._getNewSelectionStartFromOffset=function(e,i,r,n,s){n=t.call(this,e,i,r,n,s);for(var o=0,a=0,h=0;h=n));h++)"\n"!==this.text[o+a]&&" "!==this.text[o+a]||a++;return n-h+a}}(),function(){function request(t,e,i){var r=URL.parse(t);r.port||(r.port=0===r.protocol.indexOf("https:")?443:80);var n=0===r.protocol.indexOf("https:")?HTTPS:HTTP,s=n.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(t){var r="";e&&t.setEncoding(e),t.on("end",function(){i(r)}),t.on("data",function(e){200===t.statusCode&&(r+=e)})});s.on("error",function(t){t.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(t.message),i(null)}),s.end()}function requestFs(t,e){var i=require("fs");i.readFile(t,function(t,i){if(t)throw fabric.log(t),t;e(i)})}if("undefined"==typeof document||"undefined"==typeof window){var DOMParser=require("xmldom").DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(t,e,i){function r(r){r?(n.src=new Buffer(r,"binary"),n._src=t,e&&e.call(i,n)):(n=null,e&&e.call(i,null,!0))}var n=new Image;t&&(t instanceof Buffer||0===t.indexOf("data"))?(n.src=n._src=t,e&&e.call(i,n)):t&&0!==t.indexOf("http")?requestFs(t,r):t?request(t,"binary",r):e&&e.call(i,t)},fabric.loadSVGFromURL=function(t,e,i){t=t.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),0!==t.indexOf("http")?requestFs(t,function(t){fabric.loadSVGFromString(t.toString(),e,i)}):request(t,"",function(t){fabric.loadSVGFromString(t,e,i)})},fabric.loadSVGFromString=function(t,e,i){var r=(new DOMParser).parseFromString(t);fabric.parseSVGDocument(r.documentElement,function(t,i){e&&e(t,i)},i)},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.createCanvasForNode=function(t,e,i,r){r=r||i;var n=fabric.document.createElement("canvas"),s=new Canvas(t||600,e||600,r),o=new Canvas(t||600,e||600,r);n.style={},n.width=s.width,n.height=s.height,i=i||{},i.nodeCanvas=s,i.nodeCacheCanvas=o;var a=fabric.Canvas||fabric.StaticCanvas,h=new a(n,i);return h.nodeCanvas=s,h.nodeCacheCanvas=o,h.contextContainer=s.getContext("2d"),h.contextCache=o.getContext("2d"),h.Font=Canvas.Font,h};var originaInitStatic=fabric.StaticCanvas.prototype._initStatic;fabric.StaticCanvas.prototype._initStatic=function(t,e){t=t||fabric.document.createElement("canvas"),this.nodeCanvas=new Canvas(t.width,t.height),this.nodeCacheCanvas=new Canvas(t.width,t.height),originaInitStatic.call(this,t,e),this.contextContainer=this.nodeCanvas.getContext("2d"),this.contextCache=this.nodeCacheCanvas.getContext("2d"),this.Font=Canvas.Font},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(t){return this.nodeCanvas.createJPEGStream(t)},fabric.StaticCanvas.prototype._initRetinaScaling=function(){if(this._isRetinaScaling())return this.lowerCanvasEl.setAttribute("width",this.width*fabric.devicePixelRatio),this.lowerCanvasEl.setAttribute("height",this.height*fabric.devicePixelRatio),this.nodeCanvas.width=this.width*fabric.devicePixelRatio,this.nodeCanvas.height=this.height*fabric.devicePixelRatio,this.contextContainer.scale(fabric.devicePixelRatio,fabric.devicePixelRatio),this},fabric.Canvas&&(fabric.Canvas.prototype._initRetinaScaling=fabric.StaticCanvas.prototype._initRetinaScaling);var origSetBackstoreDimension=fabric.StaticCanvas.prototype._setBackstoreDimension;fabric.StaticCanvas.prototype._setBackstoreDimension=function(t,e){return origSetBackstoreDimension.call(this,t,e),this.nodeCanvas[t]=e,this},fabric.Canvas&&(fabric.Canvas.prototype._setBackstoreDimension=fabric.StaticCanvas.prototype._setBackstoreDimension)}}(); \ No newline at end of file +d=0),t.beginPath();for(var g=0,p=this.path.length;g"},toObject:function(t){var e=n(this.callSuper("toObject",["sourcePath","pathOffset"].concat(t)),{path:this.path.map(function(t){return t.slice()}),top:this.top,left:this.left});return e},toDatalessObject:function(t){var e=this.toObject(t);return this.sourcePath&&(e.path=this.sourcePath),delete e.sourcePath,e},toSVG:function(t){for(var e=[],i=this._createBaseSVGMarkup(),r="",n=0,s=this.path.length;n\n"),t?t(i.join("")):i.join("")},complexity:function(){return this.path.length},_parsePath:function(){for(var t,e,i,r,n,s=[],o=[],c=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:e[-+]?\d+)?)/gi,l=0,u=this.path.length;lp)for(var b=1,m=n.length;b\n");for(var s=0,o=e.length;s\n"),t?t(n.join("")):n.join("")},toString:function(){return"#"},isSameColor:function(){var t=this.getObjects()[0].get("fill")||"";return"string"==typeof t&&(t=t.toLowerCase(),this.getObjects().every(function(e){var i=e.get("fill")||"";return"string"==typeof i&&i.toLowerCase()===t}))},complexity:function(){return this.paths.reduce(function(t,e){return t+(e&&e.complexity?e.complexity():0)},0)},getObjects:function(){return this.paths}}),e.PathGroup.fromObject=function(t,i){var r=t.paths;delete t.paths,"string"==typeof r?e.loadSVGFromURL(r,function(n){var s=r,o=e.util.groupSVGElements(n,t,s);t.paths=r,i(o)}):e.util.enlivenObjects(r,function(n){var s=new e.PathGroup(n,t);t.paths=r,i(s)})},void(e.PathGroup.async=!0))}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.util.array.min,n=e.util.array.max;if(!e.Group){var s={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};e.Group=e.util.createClass(e.Object,e.Collection,{type:"group",strokeWidth:0,subTargetCheck:!1,initialize:function(t,e,i){e=e||{},this._objects=[],i&&this.callSuper("initialize",e),this._objects=t||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;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})},toDatalessObject:function(t){var e=this.getObjects().map(function(e){var i=e.includeDefaultValues;e.includeDefaultValues=e.group.includeDefaultValues;var r=e.toDatalessObject(t);return e.includeDefaultValues=i,r});return i(this.callSuper("toDatalessObject",t),{objects:e})},render:function(t){this._transformDone=!0,this.callSuper("render",t),this._transformDone=!1},shouldCache:function(){var t=this.objectCaching&&(!this.group||this.needsItsOwnCache||!this.group.isCaching());if(this.caching=t,t)for(var e=0,i=this._objects.length;e\n');for(var i=0,r=this._objects.length;i\n"),t?t(e.join("")):e.join("")},get:function(t){if(t in s){if(this[t])return this[t];for(var e=0,i=this._objects.length;e\n',"\n"),this.stroke||this.strokeDashArray){var o=this.fill;this.fill=null,e.push("\n'),this.fill=o}return e.push("\n"),t?t(e.join("")):e.join("")},getSrc:function(t){var e=t?this._element:this._originalElement;return e?fabric.isLikelyNode?e._src:e.src:this.src||""},setSrc:function(t,e,i){fabric.util.loadImage(t,function(t){return this.setElement(t,e,i)},this,i&&i.crossOrigin)},toString:function(){return'#'},applyFilters:function(t,e,i,r){if(e=e||this.filters,i=i||this._originalElement){var n,s,o=fabric.util.createImage(),a=this.canvas?this.canvas.getRetinaScaling():fabric.devicePixelRatio,h=this.minimumScaleTrigger/a,c=this;if(0===e.length)return this._element=i,t&&t(this),i;var l=fabric.util.createCanvasElement();return l.width=i.width,l.height=i.height,l.getContext("2d").drawImage(i,0,0,i.width,i.height),e.forEach(function(t){t&&(r?(n=c.scaleX0?90*Math.round((t-1)/90):90*Math.round(t/90)},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(t){t=t||{};var e=function(){},i=t.onComplete||e,r=t.onChange||e,n=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(t){n.setAngle(t),r()},onComplete:function(){n.setCoords(),i()},onStart:function(){n.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(t){return t.straighten(),this.renderAll(),this},fxStraightenObject:function(t){return t.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.BaseFilter=fabric.util.createClass({type:"BaseFilter",initialize:function(t){t&&this.setOptions(t)},setOptions:function(t){for(var e in t)this[e]=t[e]},toObject:function(){return{type:this.type}},toJSON:function(){return this.toObject()}}),fabric.Image.filters.BaseFilter.fromObject=function(t,e){var i=new fabric.Image.filters[t.type](t);return e&&e(i),i},function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.Image.filters,n=e.util.createClass;r.Brightness=n(r.BaseFilter,{type:"Brightness",initialize:function(t){t=t||{},this.brightness=t.brightness||0},applyTo:function(t){for(var e=t.getContext("2d"),i=e.getImageData(0,0,t.width,t.height),r=i.data,n=this.brightness,s=0,o=r.length;sb||o<0||o>v||(h=4*(a*v+o),c=l[S*d+w],e+=p[h]*c,i+=p[h+1]*c,r+=p[h+2]*c,n+=p[h+3]*c);y[s]=e,y[s+1]=i,y[s+2]=r,y[s+3]=n+_*(255-n)}u.putImageData(m,0,0)},toObject:function(){return i(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),e.Image.filters.Convolute.fromObject=e.Image.filters.BaseFilter.fromObject}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.Image.filters,n=e.util.createClass;r.GradientTransparency=n(r.BaseFilter,{type:"GradientTransparency",initialize:function(t){t=t||{},this.threshold=t.threshold||100},applyTo:function(t){for(var e=t.getContext("2d"),i=e.getImageData(0,0,t.width,t.height),r=i.data,n=this.threshold,s=r.length,o=0,a=r.length;o-1?t.channel:0},applyTo:function(t){if(this.mask){var i,r=t.getContext("2d"),n=r.getImageData(0,0,t.width,t.height),s=n.data,o=this.mask.getElement(),a=e.util.createCanvasElement(),h=this.channel,c=n.width*n.height*4;a.width=t.width,a.height=t.height,a.getContext("2d").drawImage(o,0,0,t.width,t.height);var l=a.getContext("2d").getImageData(0,0,t.width,t.height),u=l.data;for(i=0;ic&&i>c&&r>c&&l(e-i)i&&(l=2,f=-1),a>n&&(u=2,d=-1),h=c.getImageData(0,0,i,n),t.width=o(s,i),t.height=o(a,n),c.putImageData(h,0,0);!g||!p;)i=v,n=b,s*ft)return 0;if(e*=Math.PI,s(e)<1e-16)return 1;var i=e/t;return h(e)*h(i)/e/i}}function f(t){var h,c,u,d,g,k,M,D,A,P,I;for(T.x=(t+.5)*y,j.x=r(T.x),h=0;h=e)){P=r(1e3*s(c-T.x)),O[P]||(O[P]={});for(var E=j.y-w;E<=j.y+w;E++)E<0||E>=o||(I=r(1e3*s(E-T.y)),O[P][I]||(O[P][I]=m(n(i(P*x,2)+i(I*C,2))/1e3)),u=O[P][I],u>0&&(d=4*(E*e+c),g+=u,k+=u*v[d],M+=u*v[d+1],D+=u*v[d+2],A+=u*v[d+3]))}d=4*(h*a+t),b[d]=k/g,b[d+1]=M/g,b[d+2]=D/g,b[d+3]=A/g}return++t1&&L<-1||(x=2*L*L*L-3*L*L+1,x>0&&(E=4*(I+M*e),j+=x*p[E+3],S+=x,p[E+3]<255&&(x=x*p[E+3]/250),w+=x*p[E],O+=x*p[E+1],T+=x*p[E+2],C+=x))}b[_]=w/C,b[_+1]=O/C,b[_+2]=T/C,b[_+3]=j/S}return v},toObject:function(){return{type:this.type,scaleX:this.scaleX,scaleY:this.scaleY,resizeType:this.resizeType,lanczosLobes:this.lanczosLobes}}}),e.Image.filters.Resize.fromObject=e.Image.filters.BaseFilter.fromObject}("undefined"!=typeof exports?exports:this),function(t){"use strict";var e=t.fabric||(t.fabric={}),i=e.util.object.extend,r=e.Image.filters,n=e.util.createClass;r.ColorMatrix=n(r.BaseFilter,{type:"ColorMatrix",initialize:function(t){t||(t={}),this.matrix=t.matrix||[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0]},applyTo:function(t){var e,i,r,n,s,o=t.getContext("2d"),a=o.getImageData(0,0,t.width,t.height),h=a.data,c=h.length,l=this.matrix;for(e=0;e'},_getCacheCanvasDimensions:function(){var t=this.callSuper("_getCacheCanvasDimensions"),e=2*this.fontSize;return t.width+=e*t.zoomX,t.height+=e*t.zoomY,t},_render:function(t){this._setTextStyles(t),this.group&&"path-group"===this.group.type&&t.translate(this.left,this.top),this._renderTextLinesBackground(t),this._renderText(t),this._renderTextDecoration(t)},_renderText:function(t){this._renderTextFill(t),this._renderTextStroke(t)},_setTextStyles:function(t){t.textBaseline="alphabetic",t.font=this._getFontDeclaration()},_getTextHeight:function(){return this._getHeightOfSingleLine()+(this._textLines.length-1)*this._getHeightOfLine()},_getTextWidth:function(t){for(var e=this._getLineWidth(t,0),i=1,r=this._textLines.length;ie&&(e=n)}return e},_renderChars:function(t,e,i,r,n){var s,o,a=t.slice(0,-4);if(this[a].toLive){var h=-this.width/2+this[a].offsetX||0,c=-this.height/2+this[a].offsetY||0;e.save(),e.translate(h,c),r-=h,n-=c}if(0!==this.charSpacing){var l=this._getWidthOfCharSpacing();i=i.split("");for(var u=0,f=i.length;u0?o:0}else e[t](i,r,n);this[a].toLive&&e.restore()},_renderTextLine:function(t,e,i,r,n,s){n-=this.fontSize*this._fontSizeFraction;var o=this._getLineWidth(e,s);if("justify"!==this.textAlign||this.width0?u/f:0,g=0,p=0,v=h.length;p0?n:0},_getLeftOffset:function(){return-this.width/2},_getTopOffset:function(){return-this.height/2},isEmptyStyles:function(){return!0},_renderTextCommon:function(t,e){for(var i=0,r=this._getLeftOffset(),n=this._getTopOffset(),s=0,o=this._textLines.length;s0&&(r=this._getLineLeftOffset(i),t.fillRect(this._getLeftOffset()+r,this._getTopOffset()+n,i,e/this.lineHeight)),n+=e;t.fillStyle=s,this._removeShadow(t)}},_getLineLeftOffset:function(t){return"center"===this.textAlign?(this.width-t)/2:"right"===this.textAlign?this.width-t:0},_clearCache:function(){this.__lineWidths=[],this.__lineHeights=[]},_shouldClearDimensionCache:function(){var t=this._forceClearCache;return t||(t=this.hasStateChanged("_dimensionAffectingProps")),t&&(this.saveState({propertySet:"_dimensionAffectingProps"}),this.dirty=!0),t},_getLineWidth:function(t,e){if(this.__lineWidths[e])return this.__lineWidths[e]===-1?this.width:this.__lineWidths[e];var i,r,n=this._textLines[e];return i=""===n?0:this._measureLine(t,e),this.__lineWidths[e]=i,i&&"justify"===this.textAlign&&(r=n.split(/\s+/),r.length>1&&(this.__lineWidths[e]=-1)),i},_getWidthOfCharSpacing:function(){return 0!==this.charSpacing?this.fontSize*this.charSpacing/1e3:0},_measureLine:function(t,e){var i,r,n=this._textLines[e],s=t.measureText(n).width,o=0;return 0!==this.charSpacing&&(i=n.split("").length,o=(i-1)*this._getWidthOfCharSpacing()),r=s+o,r>0?r:0},_renderTextDecoration:function(t){function e(e){var n,s,o,a,h,c,l,u=0;for(n=0,s=r._textLines.length;n-1&&n.push(.85),this.textDecoration.indexOf("line-through")>-1&&n.push(.43),this.textDecoration.indexOf("overline")>-1&&n.push(-.12),n.length>0&&e(n)}},_getFontDeclaration:function(){return[e.isLikelyNode?this.fontWeight:this.fontStyle,e.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",e.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(t,e){this.visible&&(this.canvas&&this.canvas.skipOffscreen&&!this.group&&!this.isOnScreen()||(this._shouldClearDimensionCache()&&(this._setTextStyles(t),this._initDimensions(t)),this.callSuper("render",t,e)))},_splitTextIntoLines:function(){return this.text.split(this._reNewline)},toObject:function(t){var e=["text","fontSize","fontWeight","fontFamily","fontStyle","lineHeight","textDecoration","textAlign","textBackgroundColor","charSpacing"].concat(t);return this.callSuper("toObject",e)},toSVG:function(t){this.ctx||(this.ctx=e.util.createCanvasElement().getContext("2d"));var i=this._createBaseSVGMarkup(),r=this._getSVGLeftTopOffsets(this.ctx),n=this._getSVGTextAndBg(r.textTop,r.textLeft);return this._wrapSVGTextAndBg(i,n),t?t(i.join("")):i.join("")},_getSVGLeftTopOffsets:function(t){var e=this._getHeightOfLine(t,0),i=-this.width/2,r=0;return{textLeft:i+(this.group&&"path-group"===this.group.type?this.left:0),textTop:r+(this.group&&"path-group"===this.group.type?-this.top:0),lineTop:e}},_wrapSVGTextAndBg:function(t,e){var i=!0,r=this.getSvgFilter(),n=""===r?"":' style="'+r+'"';t.push("\t\n",e.textBgRects.join(""),"\t\t\n',e.textSpans.join(""),"\t\t\n","\t\n")},_getSVGTextAndBg:function(t,e){var i=[],r=[],n=0;this._setSVGBg(r);for(var s=0,o=this._textLines.length;s",e.util.string.escapeXml(this._textLines[t]),"\n")},_setSVGTextLineJustifed:function(t,n,s,o){var a=e.util.createCanvasElement().getContext("2d");this._setTextStyles(a);var h,c,l=this._textLines[t],u=l.split(/\s+/),f=this._getWidthOfWords(a,u.join("")),d=this.width-f,g=u.length-1,p=g>0?d/g:0,v=this._getFillAttributes(this.fill);for(o+=this._getLineLeftOffset(this._getLineWidth(a,t)),t=0,c=u.length;t",e.util.string.escapeXml(h),"\n"),o+=this._getWidthOfWords(a,h)+p},_setSVGTextLineBg:function(t,e,n,s,o){t.push("\t\t\n')},_setSVGBg:function(t){this.backgroundColor&&t.push("\t\t\n')},_getFillAttributes:function(t){var i=t&&"string"==typeof t?new e.Color(t):"";return i&&i.getSource()&&1!==i.getAlpha()?'opacity="'+i.getAlpha()+'" fill="'+i.setAlpha(1).toRgb()+'"':'fill="'+t+'"'},_set:function(t,e){this.callSuper("_set",t,e),this._dimensionAffectingProps.indexOf(t)>-1&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),e.Text.ATTRIBUTE_NAMES=e.SHARED_ATTRIBUTES.concat("x y dx dy font-family font-style font-weight font-size text-decoration text-anchor".split(" ")),e.Text.DEFAULT_SVG_FONT_SIZE=16,e.Text.fromElement=function(t,i){if(!t)return null;var r=e.parseAttributes(t,e.Text.ATTRIBUTE_NAMES);i=e.util.object.extend(i?e.util.object.clone(i):{},r),i.top=i.top||0,i.left=i.left||0,"dx"in r&&(i.left+=r.dx),"dy"in r&&(i.top+=r.dy),"fontSize"in i||(i.fontSize=e.Text.DEFAULT_SVG_FONT_SIZE),i.originX||(i.originX="left");var n="";"textContent"in t?n=t.textContent:"firstChild"in t&&null!==t.firstChild&&"data"in t.firstChild&&null!==t.firstChild.data&&(n=t.firstChild.data),n=n.replace(/^\s+|\s+$|\n+/g,"").replace(/\s+/g," ");var s=new e.Text(n,i),o=s.getHeight()/s.height,a=(s.height+s.strokeWidth)*s.lineHeight-s.height,h=a*o,c=s.getHeight()+h,l=0;return"left"===s.originX&&(l=s.getWidth()/2),"right"===s.originX&&(l=-s.getWidth()/2),s.set({left:s.getLeft()+l,top:s.getTop()-c/2+s.fontSize*(.18+s._fontSizeFraction)/s.lineHeight}),s},e.Text.fromObject=function(t,i,r){return e.Object._fromObject("Text",t,i,r,"text")},e.util.createAccessors(e.Text)}("undefined"!=typeof exports?exports:this),function(){var t=fabric.util.object.clone;fabric.IText=fabric.util.createClass(fabric.Text,fabric.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"#333",cursorDelay:1e3,cursorDuration:600,styles:null,caching:!0,_reSpace:/\s|\n/,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,__widthOfSpace:[],initialize:function(t,e){this.styles=e?e.styles||{}:{},this.callSuper("initialize",t,e),this.initBehavior()},_clearCache:function(){this.callSuper("_clearCache"),this.__widthOfSpace=[]},isEmptyStyles:function(){if(!this.styles)return!0;var t=this.styles;for(var e in t)for(var i in t[e])for(var r in t[e][i])return!1;return!0},setSelectionStart:function(t){t=Math.max(t,0),this._updateAndFire("selectionStart",t)},setSelectionEnd:function(t){t=Math.min(t,this.text.length),this._updateAndFire("selectionEnd",t)},_updateAndFire:function(t,e){this[t]!==e&&(this._fireSelectionChanged(),this[t]=e),this._updateTextarea()},_fireSelectionChanged:function(){this.fire("selection:changed"),this.canvas&&this.canvas.fire("text:selection:changed",{target:this})},getSelectionStyles:function(t,e){if(2===arguments.length){for(var i=[],r=t;r0?a:0,lineLeft:r},this.cursorOffsetCache=i,this.cursorOffsetCache},renderCursor:function(t,e){var i=this.get2DCursorLocation(),r=i.lineIndex,n=i.charIndex,s=this.getCurrentCharFontSize(r,n),o=t.leftOffset,a=this.scaleX*this.canvas.getZoom(),h=this.cursorWidth/a;e.fillStyle=this.getCurrentCharColor(r,n),e.globalAlpha=this.__isMousedown?1:this._currentCursorOpacity,e.fillRect(t.left+o-h/2,t.top+t.topOffset,h,s)},renderSelection:function(t,e,i){i.fillStyle=this.selectionColor;for(var r=this.get2DCursorLocation(this.selectionStart),n=this.get2DCursorLocation(this.selectionEnd),s=r.lineIndex,o=n.lineIndex,a=s;a<=o;a++){var h=this._getLineLeftOffset(this._getLineWidth(i,a))||0,c=this._getHeightOfLine(this.ctx,a),l=0,u=0,f=this._textLines[a];if(a===s){for(var d=0,g=f.length;d=r.charIndex&&(a!==o||ds&&a1)&&(c/=this.lineHeight),i.fillRect(e.left+h,e.top+e.topOffset,u>0?u:0,c),e.topOffset+=l}},_renderChars:function(t,e,i,r,n,s,o){if(this.isEmptyStyles())return this._renderCharsFast(t,e,i,r,n);o=o||0;var a,h,c=this._getHeightOfLine(e,s),l="";e.save(),n-=c/this.lineHeight*this._fontSizeFraction;for(var u=o,f=i.length+o;u<=f;u++)a=a||this.getCurrentCharStyle(s,u),h=this.getCurrentCharStyle(s,u+1),(this._hasStyleChanged(a,h)||u===f)&&(this._renderChar(t,e,s,u-1,l,r,n,c),l="",a=h),l+=i[u-o];e.restore()},_renderCharsFast:function(t,e,i,r,n){"fillText"===t&&this.fill&&this.callSuper("_renderChars",t,e,i,r,n),"strokeText"===t&&(this.stroke&&this.strokeWidth>0||this.skipFillStrokeCheck)&&this.callSuper("_renderChars",t,e,i,r,n)},_renderChar:function(t,e,i,r,n,s,o,a){var h,c,l,u,f,d,g,p,v,b=this._getStyleDeclaration(i,r);if(b?(c=this._getHeightOfChar(e,n,i,r),u=b.stroke,l=b.fill,d=b.textDecoration):c=this.fontSize,u=(u||this.stroke)&&"strokeText"===t,l=(l||this.fill)&&"fillText"===t,b&&e.save(),h=this._applyCharStylesGetWidth(e,n,i,r,b||null),d=d||this.textDecoration,b&&b.textBackgroundColor&&this._removeShadow(e),0!==this.charSpacing){p=this._getWidthOfCharSpacing(),g=n.split(""),h=0;for(var m,y=0,_=g.length;y<_;y++)m=g[y],l&&e.fillText(m,s+h,o),u&&e.strokeText(m,s+h,o),v=e.measureText(m).width+p,h+=v>0?v:0}else l&&e.fillText(n,s,o),u&&e.strokeText(n,s,o);(d||""!==d)&&(f=this._fontSizeFraction*a/this.lineHeight,this._renderCharDecoration(e,d,s,o,f,h,c)),b&&e.restore(),e.translate(h,0)},_hasStyleChanged:function(t,e){return t.fill!==e.fill||t.fontSize!==e.fontSize||t.textBackgroundColor!==e.textBackgroundColor||t.textDecoration!==e.textDecoration||t.fontFamily!==e.fontFamily||t.fontWeight!==e.fontWeight||t.fontStyle!==e.fontStyle||t.stroke!==e.stroke||t.strokeWidth!==e.strokeWidth},_renderCharDecoration:function(t,e,i,r,n,s,o){if(e){var a,h,c=o/15,l={underline:r+o/10,"line-through":r-o*(this._fontSizeFraction+this._fontSizeMult-1)+c,overline:r-(this._fontSizeMult-this._fontSizeFraction)*o},u=["underline","line-through","overline"];for(a=0;a-1&&t.fillRect(i,l[h],s,c)}},_renderTextLine:function(t,e,i,r,n,s){this.isEmptyStyles()||(n+=this.fontSize*(this._fontSizeFraction+.03)),this.callSuper("_renderTextLine",t,e,i,r,n,s)},_renderTextDecoration:function(t){if(this.isEmptyStyles())return this.callSuper("_renderTextDecoration",t)},_renderTextLinesBackground:function(t){this.callSuper("_renderTextLinesBackground",t);var e,i,r,n,s,o,a,h,c,l,u=0,f=this._getLeftOffset(),d=this._getTopOffset(),g="";t.save();for(var p=0,v=this._textLines.length;p0?n:0},_getHeightOfChar:function(t,e,i){var r=this._getStyleDeclaration(e,i);return r&&r.fontSize?r.fontSize:this.fontSize},_getWidthOfCharsAt:function(t,e,i){var r,n,s=0;for(r=0;r0?i:0},_getWidthOfSpace:function(t,e){if(this.__widthOfSpace[e])return this.__widthOfSpace[e];var i=this._textLines[e],r=this._getWidthOfWords(t,i,e,0),n=this.width-r,s=i.length-i.replace(this._reSpacesAndTabs,"").length,o=Math.max(n/s,t.measureText(" ").width);return this.__widthOfSpace[e]=o,o},_getWidthOfWords:function(t,e,i,r){for(var n=0,s=0;sr&&(r=o); +}return this.__lineHeights[e]=r*this.lineHeight*this._fontSizeMult,this.__lineHeights[e]},_getTextHeight:function(t){for(var e,i=0,r=0,n=this._textLines.length;r-1;)e++,i--;return t-e},findWordBoundaryRight:function(t){var e=0,i=t;if(this._reSpace.test(this.text.charAt(i)))for(;this._reSpace.test(this.text.charAt(i));)e++,i++;for(;/\S/.test(this.text.charAt(i))&&i-1;)e++,i--;return t-e},findLineBoundaryRight:function(t){for(var e=0,i=t;!/\n/.test(this.text.charAt(i))&&i0&&ithis.__selectionStartOnMouseDown?(this.selectionStart=this.__selectionStartOnMouseDown,this.selectionEnd=e):(this.selectionStart=e,this.selectionEnd=this.__selectionStartOnMouseDown),this.selectionStart===i&&this.selectionEnd===r||(this.restartCursorIfNeeded(),this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()))}},_setEditingProps:function(){this.hoverCursor="text",this.canvas&&(this.canvas.defaultCursor=this.canvas.moveCursor="text"),this.borderColor=this.editingBorderColor,this.hasControls=this.selectable=!1,this.lockMovementX=this.lockMovementY=!0},_updateTextarea:function(){if(this.hiddenTextarea&&!this.inCompositionMode&&(this.cursorOffsetCache={},this.hiddenTextarea.value=this.text,this.hiddenTextarea.selectionStart=this.selectionStart,this.hiddenTextarea.selectionEnd=this.selectionEnd,this.selectionStart===this.selectionEnd)){var t=this._calcTextareaPosition();this.hiddenTextarea.style.left=t.left,this.hiddenTextarea.style.top=t.top,this.hiddenTextarea.style.fontSize=t.fontSize}},_calcTextareaPosition:function(){if(!this.canvas)return{x:1,y:1};var t=this.text.split(""),e=this._getCursorBoundaries(t,"cursor"),i=this.get2DCursorLocation(),r=i.lineIndex,n=i.charIndex,s=this.getCurrentCharFontSize(r,n),o=e.leftOffset,a=this.calcTransformMatrix(),h={x:e.left+o,y:e.top+e.topOffset+s},c=this.canvas.upperCanvasEl,l=c.width-s,u=c.height-s;return h=fabric.util.transformPoint(h,a),h=fabric.util.transformPoint(h,this.canvas.viewportTransform),h.x<0&&(h.x=0),h.x>l&&(h.x=l),h.y<0&&(h.y=0),h.y>u&&(h.y=u),h.x+=this.canvas._offset.left,h.y+=this.canvas._offset.top,{left:h.x+"px",top:h.y+"px",fontSize:s}},_saveEditingProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,defaultCursor:this.canvas&&this.canvas.defaultCursor,moveCursor:this.canvas&&this.canvas.moveCursor}},_restoreEditingProps:function(){this._savedProps&&(this.hoverCursor=this._savedProps.overCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY,this.canvas&&(this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor))},exitEditing:function(){var t=this._textBeforeEdit!==this.text;return this.selected=!1,this.isEditing=!1,this.selectable=!0,this.selectionEnd=this.selectionStart,this.hiddenTextarea&&(this.hiddenTextarea.blur&&this.hiddenTextarea.blur(),this.canvas&&this.hiddenTextarea.parentNode.removeChild(this.hiddenTextarea),this.hiddenTextarea=null),this.abortCursorAnimation(),this._restoreEditingProps(),this._currentCursorOpacity=0,this.fire("editing:exited"),t&&this.fire("modified"),this.canvas&&(this.canvas.off("mouse:move",this.mouseMoveHandler),this.canvas.fire("text:editing:exited",{target:this}),t&&this.canvas.fire("object:modified",{target:this})),this},_removeExtraneousStyles:function(){for(var t in this.styles)this._textLines[t]||delete this.styles[t]},_removeCharsFromTo:function(t,e){for(;e!==t;)this._removeSingleCharAndStyle(t+1),e--;this.selectionStart=t,this.selectionEnd=t},_removeSingleCharAndStyle:function(t){var e="\n"===this.text[t-1],i=e?t:t-1;this.removeStyleObject(e,i),this.text=this.text.slice(0,t-1)+this.text.slice(t),this._textLines=this._splitTextIntoLines()},insertChars:function(t,e){var i;if(this.selectionEnd-this.selectionStart>1&&this._removeCharsFromTo(this.selectionStart,this.selectionEnd),!e&&this.isEmptyStyles())return void this.insertChar(t,!1);for(var r=0,n=t.length;r=i&&(o=!0,s[h-i]=this.styles[e][a],delete this.styles[e][a])}o&&(this.styles[e+1]=s)}this._forceClearCache=!0},insertCharStyleObject:function(e,i,r){var n=this.styles[e],s=t(n);0!==i||r||(i=1);for(var o in s){var a=parseInt(o,10);a>=i&&(n[a+1]=s[a],s[a-1]||delete n[a])}var h=r||t(n[i-1]);h&&(this.styles[e][i]=h),this._forceClearCache=!0},insertStyleObjects:function(t,e,i){var r=this.get2DCursorLocation(),n=r.lineIndex,s=r.charIndex;this._getLineStyle(n)||this._setLineStyle(n,{}),"\n"===t?this.insertNewlineStyleObject(n,s,e):this.insertCharStyleObject(n,s,i)},shiftLineStyles:function(e,i){var r=t(this.styles);for(var n in r){var s=parseInt(n,10);s<=e&&delete r[s]}for(var n in this.styles){var s=parseInt(n,10);s>e&&(this.styles[s+i]=r[s],r[s-i]||delete this.styles[s])}},removeStyleObject:function(t,e){var i=this.get2DCursorLocation(e),r=i.lineIndex,n=i.charIndex;this._removeStyleObject(t,i,r,n)},_getTextOnPreviousLine:function(t){return this._textLines[t-1]},_removeStyleObject:function(e,i,r,n){if(e){var s=this._getTextOnPreviousLine(i.lineIndex),o=s?s.length:0;this.styles[r-1]||(this.styles[r-1]={});for(n in this.styles[r])this.styles[r-1][parseInt(n,10)+o]=this.styles[r][n];this.shiftLineStyles(i.lineIndex,-1)}else{var a=this.styles[r];a&&delete a[n];var h=t(a);for(var c in h){var l=parseInt(c,10);l>=n&&0!==l&&(a[l-1]=h[l],delete a[l])}}},insertNewline:function(){this.insertChars("\n")},setSelectionStartEndWithShift:function(t,e,i){i<=t?(e===t?this._selectionDirection="left":"right"===this._selectionDirection&&(this._selectionDirection="left",this.selectionEnd=t),this.selectionStart=i):i>t&&it?this.selectionStart=t:this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd>t?this.selectionEnd=t:this.selectionEnd<0&&(this.selectionEnd=0)}})}(),fabric.util.object.extend(fabric.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+new Date,this.__lastLastClickTime=+new Date,this.__lastPointer={},this.on("mousedown",this.onMouseDown.bind(this))},onMouseDown:function(t){this.__newClickTime=+new Date;var e=this.canvas.getPointer(t.e);this.isTripleClick(e)?(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="white-space: nowrap; position: absolute; top: "+t.top+"; left: "+t.left+"; opacity: 0; width: 1px; height: 1px; z-index: -999;",fabric.document.body.appendChild(this.hiddenTextarea),fabric.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this)),fabric.util.addListener(this.hiddenTextarea,"keyup",this.onKeyUp.bind(this)),fabric.util.addListener(this.hiddenTextarea,"input",this.onInput.bind(this)),fabric.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this)),fabric.util.addListener(this.hiddenTextarea,"cut",this.cut.bind(this)),fabric.util.addListener(this.hiddenTextarea,"paste",this.paste.bind(this)),fabric.util.addListener(this.hiddenTextarea,"compositionstart",this.onCompositionStart.bind(this)),fabric.util.addListener(this.hiddenTextarea,"compositionupdate",this.onCompositionUpdate.bind(this)),fabric.util.addListener(this.hiddenTextarea,"compositionend",this.onCompositionEnd.bind(this)),!this._clickHandlerInitialized&&this.canvas&&(fabric.util.addListener(this.canvas.upperCanvasEl,"click",this.onClick.bind(this)),this._clickHandlerInitialized=!0)},_keysMap:{8:"removeChars",9:"exitEditing",27:"exitEditing",13:"insertNewline",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorRight",36:"moveCursorLeft",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown",46:"forwardDelete"},_ctrlKeysMapUp:{67:"copy",88:"cut"},_ctrlKeysMapDown:{65:"selectAll"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(t){if(this.isEditing){if(t.keyCode in this._keysMap)this[this._keysMap[t.keyCode]](t);else{if(!(t.keyCode in this._ctrlKeysMapDown&&(t.ctrlKey||t.metaKey)))return;this[this._ctrlKeysMapDown[t.keyCode]](t)}t.stopImmediatePropagation(),t.preventDefault(),t.keyCode>=33&&t.keyCode<=40?(this.clearContextTop(),this.renderCursorOrSelection()):this.canvas&&this.canvas.renderAll()}},onKeyUp:function(t){return!this.isEditing||this._copyDone?void(this._copyDone=!1):void(t.keyCode in this._ctrlKeysMapUp&&(t.ctrlKey||t.metaKey)&&(this[this._ctrlKeysMapUp[t.keyCode]](t),t.stopImmediatePropagation(),t.preventDefault(),this.canvas&&this.canvas.renderAll()))},onInput:function(t){if(this.isEditing&&!this.inCompositionMode){var e,i,r,n=this.selectionStart||0,s=this.selectionEnd||0,o=this.text.length,a=this.hiddenTextarea.value.length;a>o?(r="left"===this._selectionDirection?s:n,e=a-o,i=this.hiddenTextarea.value.slice(r,r+e)):(e=a-o+s-n,i=this.hiddenTextarea.value.slice(n,n+e)),this.insertChars(i),t.stopPropagation()}},onCompositionStart:function(){this.inCompositionMode=!0,this.prevCompositionLength=0,this.compositionStart=this.selectionStart},onCompositionEnd:function(){this.inCompositionMode=!1},onCompositionUpdate:function(t){var e=t.data;this.selectionStart=this.compositionStart,this.selectionEnd=this.selectionEnd===this.selectionStart?this.compositionStart+this.prevCompositionLength:this.selectionEnd,this.insertChars(e,!1),this.prevCompositionLength=e.length},forwardDelete:function(t){if(this.selectionStart===this.selectionEnd){if(this.selectionStart===this.text.length)return;this.moveCursorRight(t)}this.removeChars(t)},copy:function(t){if(this.selectionStart!==this.selectionEnd){var e=this.getSelectedText(),i=this._getClipboardData(t);i&&i.setData("text",e),fabric.copiedText=e,fabric.copiedTextStyle=this.getSelectionStyles(this.selectionStart,this.selectionEnd),t.stopImmediatePropagation(),t.preventDefault(),this._copyDone=!0}},paste:function(t){var e=null,i=this._getClipboardData(t),r=!0;i?(e=i.getData("text").replace(/\r/g,""),fabric.copiedTextStyle&&fabric.copiedText===e||(r=!1)):e=fabric.copiedText,e&&this.insertChars(e,r),t.stopImmediatePropagation(),t.preventDefault()},cut:function(t){this.selectionStart!==this.selectionEnd&&(this.copy(t),this.removeChars(t))},_getClipboardData:function(t){return t&&t.clipboardData||fabric.window.clipboardData},_getWidthBeforeCursor:function(t,e){for(var i,r=this._textLines[t].slice(0,e),n=this._getLineWidth(this.ctx,t),s=this._getLineLeftOffset(n),o=0,a=r.length;oe){i=!0;var f=o-u,d=o,g=Math.abs(f-e),p=Math.abs(d-e);a=p=this.text.length&&this.selectionEnd>=this.text.length||this._moveCursorUpOrDown("Down",t)},moveCursorUp:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorUpOrDown("Up",t)},_moveCursorUpOrDown:function(t,e){var i="get"+t+"CursorOffset",r=this[i](e,"right"===this._selectionDirection);e.shiftKey?this.moveCursorWithShift(r):this.moveCursorWithoutShift(r),0!==r&&(this.setSelectionInBoundaries(),this.abortCursorAnimation(),this._currentCursorOpacity=1,this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorWithShift:function(t){var e="left"===this._selectionDirection?this.selectionStart+t:this.selectionEnd+t;return this.setSelectionStartEndWithShift(this.selectionStart,this.selectionEnd,e),0!==t},moveCursorWithoutShift:function(t){return t<0?(this.selectionStart+=t,this.selectionEnd=this.selectionStart):(this.selectionEnd+=t,this.selectionStart=this.selectionEnd),0!==t},moveCursorLeft:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorLeftOrRight("Left",t)},_move:function(t,e,i){var r;if(t.altKey)r=this["findWordBoundary"+i](this[e]);else{if(!t.metaKey&&35!==t.keyCode&&36!==t.keyCode)return this[e]+="Left"===i?-1:1,!0;r=this["findLineBoundary"+i](this[e])}if(void 0!==typeof r&&this[e]!==r)return this[e]=r,!0},_moveLeft:function(t,e){return this._move(t,e,"Left")},_moveRight:function(t,e){return this._move(t,e,"Right")},moveCursorLeftWithoutShift:function(t){var e=!0;return this._selectionDirection="left",this.selectionEnd===this.selectionStart&&0!==this.selectionStart&&(e=this._moveLeft(t,"selectionStart")),this.selectionEnd=this.selectionStart,e},moveCursorLeftWithShift:function(t){return"right"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveLeft(t,"selectionEnd"):0!==this.selectionStart?(this._selectionDirection="left",this._moveLeft(t,"selectionStart")):void 0},moveCursorRight:function(t){this.selectionStart>=this.text.length&&this.selectionEnd>=this.text.length||this._moveCursorLeftOrRight("Right",t)},_moveCursorLeftOrRight:function(t,e){var i="moveCursor"+t+"With";this._currentCursorOpacity=1,i+=e.shiftKey?"Shift":"outShift",this[i](e)&&(this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorRightWithShift:function(t){return"left"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveRight(t,"selectionStart"):this.selectionEnd!==this.text.length?(this._selectionDirection="right",this._moveRight(t,"selectionEnd")):void 0},moveCursorRightWithoutShift:function(t){var e=!0;return this._selectionDirection="right",this.selectionStart===this.selectionEnd?(e=this._moveRight(t,"selectionStart"),this.selectionEnd=this.selectionStart):this.selectionStart=this.selectionEnd,e},removeChars:function(t){this.selectionStart===this.selectionEnd?this._removeCharsNearCursor(t):this._removeCharsFromTo(this.selectionStart,this.selectionEnd),this.set("dirty",!0),this.setSelectionEnd(this.selectionStart),this._removeExtraneousStyles(),this.canvas&&this.canvas.renderAll(),this.setCoords(),this.fire("changed"),this.canvas&&this.canvas.fire("text:changed",{target:this})},_removeCharsNearCursor:function(t){if(0!==this.selectionStart)if(t.metaKey){var e=this.findLineBoundaryLeft(this.selectionStart);this._removeCharsFromTo(e,this.selectionStart),this.setSelectionStart(e)}else if(t.altKey){var i=this.findWordBoundaryLeft(this.selectionStart);this._removeCharsFromTo(i,this.selectionStart),this.setSelectionStart(i)}else this._removeSingleCharAndStyle(this.selectionStart),this.setSelectionStart(this.selectionStart-1)}}),function(){var t=fabric.util.toFixed,e=fabric.Object.NUM_FRACTION_DIGITS;fabric.util.object.extend(fabric.IText.prototype,{_setSVGTextLineText:function(t,e,i,r,n,s){this._getLineStyle(t)?this._setSVGTextLineChars(t,e,i,r,s):fabric.Text.prototype._setSVGTextLineText.call(this,t,e,i,r,n)},_setSVGTextLineChars:function(t,e,i,r,n){for(var s=this._textLines[t],o=0,a=this._getLineLeftOffset(this._getLineWidth(this.ctx,t))-this.width/2,h=this._getSVGLineTopOffset(t),c=this._getHeightOfLine(this.ctx,t),l=0,u=s.length;l\n'].join("")},_createTextCharSpan:function(i,r,n,s,o){var a=this.getSvgStyles.call(fabric.util.object.extend({visible:!0,fill:this.fill,stroke:this.stroke,type:"text",getSvgFilter:fabric.Object.prototype.getSvgFilter},r));return['\t\t\t',fabric.util.string.escapeXml(i),"\n"].join("")}})}(),function(t){"use strict";var e=t.fabric||(t.fabric={});e.Textbox=e.util.createClass(e.IText,e.Observable,{type:"textbox",minWidth:20,dynamicMinWidth:2,__cachedLines:null,lockScalingY:!0,lockScalingFlip:!0,noScaleCache:!1,initialize:function(t,i){this.callSuper("initialize",t,i),this.setControlsVisibility(e.Textbox.getTextboxControlVisibility()),this.ctx=this.objectCaching?this._cacheContext:e.util.createCanvasElement().getContext("2d"),this._dimensionAffectingProps.push("width")},_initDimensions:function(t){this.__skipDimension||(t||(t=e.util.createCanvasElement().getContext("2d"),this._setTextStyles(t),this.clearContextTop()),this.dynamicMinWidth=0,this._textLines=this._splitTextIntoLines(t),this.dynamicMinWidth>this.width&&this._set("width",this.dynamicMinWidth),this._clearCache(),this.height=this._getTextHeight(t))},_generateStyleMap:function(){for(var t=0,e=0,i=0,r={},n=0;n0?(e=0,i++,t++):" "===this.text[i]&&n>0&&(e++,i++),r[n]={line:t,offset:e},i+=this._textLines[n].length,e+=this._textLines[n].length;return r},_getStyleDeclaration:function(t,e,i){if(this._styleMap){var r=this._styleMap[t];if(!r)return i?{}:null;t=r.line,e=r.offset+e}return this.callSuper("_getStyleDeclaration",t,e,i)},_setStyleDeclaration:function(t,e,i){var r=this._styleMap[t];t=r.line,e=r.offset+e,this.styles[t][e]=i},_deleteStyleDeclaration:function(t,e){var i=this._styleMap[t];t=i.line,e=i.offset+e,delete this.styles[t][e]},_getLineStyle:function(t){var e=this._styleMap[t];return this.styles[e.line]},_setLineStyle:function(t,e){var i=this._styleMap[t];this.styles[i.line]=e},_deleteLineStyle:function(t){var e=this._styleMap[t];delete this.styles[e.line]},_wrapText:function(t,e){var i,r=e.split(this._reNewline),n=[];for(i=0;i=this.width&&!d?(n.push(s),s="",r=l,d=!0):r+=g,d||(s+=c),s+=a,u=this._measureText(t,c,i,h),h++,d=!1,l>f&&(f=l);return p&&n.push(s),f>this.dynamicMinWidth&&(this.dynamicMinWidth=f-g),n},_splitTextIntoLines:function(t){t=t||this.ctx;var e=this.textAlign;this._styleMap=null,t.save(),this._setTextStyles(t),this.textAlign="left";var i=this._wrapText(t,this.text);return this.textAlign=e,t.restore(),this._textLines=i,this._styleMap=this._generateStyleMap(),i},setOnGroup:function(t,e){"scaleX"===t&&(this.set("scaleX",Math.abs(1/e)),this.set("width",this.get("width")*e/("undefined"==typeof this.__oldScaleX?1:this.__oldScaleX)),this.__oldScaleX=e)},get2DCursorLocation:function(t){"undefined"==typeof t&&(t=this.selectionStart);for(var e=this._textLines.length,i=0,r=0;r=h.getMinWidth()?(h.set("width",c),!0):void 0},fabric.Group.prototype._refreshControlsVisibility=function(){if("undefined"!=typeof fabric.Textbox)for(var t=this._objects.length;t--;)if(this._objects[t]instanceof fabric.Textbox)return void this.setControlsVisibility(fabric.Textbox.getTextboxControlVisibility())},fabric.util.object.extend(fabric.Textbox.prototype,{_removeExtraneousStyles:function(){for(var t in this._styleMap)this._textLines[t]||delete this.styles[this._styleMap[t].line]},insertCharStyleObject:function(t,e,i){var r=this._styleMap[t];t=r.line,e=r.offset+e,fabric.IText.prototype.insertCharStyleObject.apply(this,[t,e,i])},insertNewlineStyleObject:function(t,e,i){var r=this._styleMap[t];t=r.line,e=r.offset+e,fabric.IText.prototype.insertNewlineStyleObject.apply(this,[t,e,i])},shiftLineStyles:function(t,e){var i=this._styleMap[t];t=i.line,fabric.IText.prototype.shiftLineStyles.call(this,t,e)},_getTextOnPreviousLine:function(t){for(var e=this._textLines[t-1];this._styleMap[t-2]&&this._styleMap[t-2].line===this._styleMap[t-1].line;)e=this._textLines[t-2]+e, +t--;return e},removeStyleObject:function(t,e){var i=this.get2DCursorLocation(e),r=this._styleMap[i.lineIndex],n=r.line,s=r.offset+i.charIndex;this._removeStyleObject(t,i,n,s)}})}(),function(){var t=fabric.IText.prototype._getNewSelectionStartFromOffset;fabric.IText.prototype._getNewSelectionStartFromOffset=function(e,i,r,n,s){n=t.call(this,e,i,r,n,s);for(var o=0,a=0,h=0;h=n));h++)"\n"!==this.text[o+a]&&" "!==this.text[o+a]||a++;return n-h+a}}(),function(){function request(t,e,i){var r=URL.parse(t);r.port||(r.port=0===r.protocol.indexOf("https:")?443:80);var n=0===r.protocol.indexOf("https:")?HTTPS:HTTP,s=n.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(t){var r="";e&&t.setEncoding(e),t.on("end",function(){i(r)}),t.on("data",function(e){200===t.statusCode&&(r+=e)})});s.on("error",function(t){t.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(t.message),i(null)}),s.end()}function requestFs(t,e){var i=require("fs");i.readFile(t,function(t,i){if(t)throw fabric.log(t),t;e(i)})}if("undefined"==typeof document||"undefined"==typeof window){var DOMParser=require("xmldom").DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(t,e,i){function r(r){r?(n.src=new Buffer(r,"binary"),n._src=t,e&&e.call(i,n)):(n=null,e&&e.call(i,null,!0))}var n=new Image;t&&(t instanceof Buffer||0===t.indexOf("data"))?(n.src=n._src=t,e&&e.call(i,n)):t&&0!==t.indexOf("http")?requestFs(t,r):t?request(t,"binary",r):e&&e.call(i,t)},fabric.loadSVGFromURL=function(t,e,i){t=t.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),0!==t.indexOf("http")?requestFs(t,function(t){fabric.loadSVGFromString(t.toString(),e,i)}):request(t,"",function(t){fabric.loadSVGFromString(t,e,i)})},fabric.loadSVGFromString=function(t,e,i){var r=(new DOMParser).parseFromString(t);fabric.parseSVGDocument(r.documentElement,function(t,i){e&&e(t,i)},i)},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.createCanvasForNode=function(t,e,i,r){r=r||i;var n=fabric.document.createElement("canvas"),s=new Canvas(t||600,e||600,r),o=new Canvas(t||600,e||600,r);n.style={},n.width=s.width,n.height=s.height,i=i||{},i.nodeCanvas=s,i.nodeCacheCanvas=o;var a=fabric.Canvas||fabric.StaticCanvas,h=new a(n,i);return h.nodeCanvas=s,h.nodeCacheCanvas=o,h.contextContainer=s.getContext("2d"),h.contextCache=o.getContext("2d"),h.Font=Canvas.Font,h};var originaInitStatic=fabric.StaticCanvas.prototype._initStatic;fabric.StaticCanvas.prototype._initStatic=function(t,e){t=t||fabric.document.createElement("canvas"),this.nodeCanvas=new Canvas(t.width,t.height),this.nodeCacheCanvas=new Canvas(t.width,t.height),originaInitStatic.call(this,t,e),this.contextContainer=this.nodeCanvas.getContext("2d"),this.contextCache=this.nodeCacheCanvas.getContext("2d"),this.Font=Canvas.Font},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(t){return this.nodeCanvas.createJPEGStream(t)},fabric.StaticCanvas.prototype._initRetinaScaling=function(){if(this._isRetinaScaling())return this.lowerCanvasEl.setAttribute("width",this.width*fabric.devicePixelRatio),this.lowerCanvasEl.setAttribute("height",this.height*fabric.devicePixelRatio),this.nodeCanvas.width=this.width*fabric.devicePixelRatio,this.nodeCanvas.height=this.height*fabric.devicePixelRatio,this.contextContainer.scale(fabric.devicePixelRatio,fabric.devicePixelRatio),this},fabric.Canvas&&(fabric.Canvas.prototype._initRetinaScaling=fabric.StaticCanvas.prototype._initRetinaScaling);var origSetBackstoreDimension=fabric.StaticCanvas.prototype._setBackstoreDimension;fabric.StaticCanvas.prototype._setBackstoreDimension=function(t,e){return origSetBackstoreDimension.call(this,t,e),this.nodeCanvas[t]=e,this},fabric.Canvas&&(fabric.Canvas.prototype._setBackstoreDimension=fabric.StaticCanvas.prototype._setBackstoreDimension)}}(); \ No newline at end of file diff --git a/dist/fabric.min.js.gz b/dist/fabric.min.js.gz index ee5138bc9af6e0446004ddc619c21dde549386eb..012bfd4984d953c2ec5b868d8d99f0167715a64a 100644 GIT binary patch delta 44191 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 L!`sW}N%;c+^bx)J delta 44131 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", "contributors": [ {