From 56f0bfb9cceaeb999bc27922a7ff6eceeeaa3bee Mon Sep 17 00:00:00 2001 From: kangax Date: Wed, 27 Nov 2013 20:00:33 +0100 Subject: [PATCH] Avoid setting crossOrigin on an image if unspecified. Closes #971 --- dist/all.js | 4 ++-- dist/all.min.js | 14 +++++++------- dist/all.min.js.gz | Bin 52951 -> 52947 bytes dist/all.require.js | 4 ++-- src/util/misc.js | 4 ++-- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/dist/all.js b/dist/all.js index f3b26284..6f30f13b 100644 --- a/dist/all.js +++ b/dist/all.js @@ -476,8 +476,8 @@ fabric.Collection = { // https://github.com/kangax/fabric.js/commit/d0abb90f1cd5c5ef9d2a94d3fb21a22330da3e0a#commitcomment-4513767 // see https://code.google.com/p/chromium/issues/detail?id=315152 // https://bugzilla.mozilla.org/show_bug.cgi?id=935069 - if (url.indexOf('data') !== 0) { - img.crossOrigin = crossOrigin || ''; + if (url.indexOf('data') !== 0 && typeof crossOrigin !== 'undefined') { + img.crossOrigin = crossOrigin; } img.src = url; diff --git a/dist/all.min.js b/dist/all.min.js index 7393bad0..f2fd61fc 100644 --- a/dist/all.min.js +++ b/dist/all.min.js @@ -1,7 +1,7 @@ -/* build: `node build.js modules=ALL exclude=gestures,cufon,json minifier=uglifyjs` *//*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"1.3.12"};typeof exports!="undefined"&&(exports.fabric=fabric),typeof document!="undefined"&&typeof window!="undefined"?(fabric.document=document,fabric.window=window):(fabric.document=require("jsdom").jsdom(""),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined",fabric.SHARED_ATTRIBUTES=["transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width"],function(){function e(e,t){if(!this.__eventListeners[e])return;t?fabric.util.removeFromArray(this.__eventListeners[e],t):this.__eventListeners[e].length=0}function t(e,t){this.__eventListeners||(this.__eventListeners={});if(arguments.length===1)for(var n in e)this.on(n,e[n]);else this.__eventListeners[e]||(this.__eventListeners[e]=[]),this.__eventListeners[e].push(t);return this}function n(t,n){if(!this.__eventListeners)return;if(arguments.length===0)this.__eventListeners={};else if(arguments.length===1&&typeof arguments[0]=="object")for(var r in t)e.call(this,r,t[r]);else e.call(this,t,n);return this}function r(e,t){if(!this.__eventListeners)return;var n=this.__eventListeners[e];if(!n)return;for(var r=0,i=n.length;r-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)}},function(e){var t=Math.sqrt,n=Math.atan2,r=Math.PI/180;fabric.util={removeFromArray:function(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e},getRandomInt:function(e,t){return Math.floor(Math.random()*(t-e+1))+e},degreesToRadians:function(e){return e*r},radiansToDegrees:function(e){return e/r},rotatePoint:function(e,t,n){var r=Math.sin(n),i=Math.cos(n);e.subtractEquals(t);var s=e.x*i-e.y*r,o=e.x*r+e.y*i;return(new fabric.Point(s,o)).addEquals(t)},toFixed:function(e,t){return parseFloat(Number(e).toFixed(t))},falseFunction:function(){return!1},getKlass:function(e,t){return e=fabric.util.string.camelize(e.charAt(0).toUpperCase()+e.slice(1)),fabric.util.resolveNamespace(t)[e]},resolveNamespace:function(t){if(!t)return fabric;var n=t.split("."),r=n.length,i=e||fabric.window;for(var s=0;s1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r},populateWithProperties:function(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),e[d?"lineTo":"moveTo"](r,0),d=!d;e.restore()},createCanvasElement:function(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e},createImage:function(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")},createAccessors:function(e){var t=e.prototype;for(var n=t.stateProperties.length;n--;){var r=t.stateProperties[n],i=r.charAt(0).toUpperCase()+r.slice(1),s="set"+i,o="get"+i;t[o]||(t[o]=function(e){return new Function('return this.get("'+e+'")')}(r)),t[s]||(t[s]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(r))}},clipContext:function(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()},multiplyTransformMatrices:function(e,t){var n=[[e[0],e[2],e[4]],[e[1],e[3],e[5]],[0,0,1]],r=[[t[0],t[2],t[4]],[t[1],t[3],t[5]],[0,0,1]],i=[];for(var s=0;s<3;s++){i[s]=[];for(var o=0;o<3;o++){var u=0;for(var a=0;a<3;a++)u+=n[s][a]*r[a][o];i[s][o]=u}}return[i[0][0],i[1][0],i[0][1],i[1][1],i[0][2],i[1][2]]},getFunctionBody:function(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]},normalizePoints:function(e,t){var n=fabric.util.array.min(e,"x"),r=fabric.util.array.min(e,"y");n=n<0?n:0,r=n<0?r:0;for(var i=0,s=e.length;i0&&(t>r?t-=r:t=0,n>r?n-=r:n=0);var i=!0,s=e.getImageData(t,n,r*2||1,r*2||1);for(var o=3,u=s.data.length;o0&&f===0&&(E-=2*Math.PI);var S=Math.ceil(Math.abs(E/(Math.PI*.5+.001))),x=[];for(var T=0;T1&&(h=Math.sqrt(h),t*=h,n*=h);var p=f/t,d=a/t,v=-a/n,m=f/n;return{x0:p*r+d*i,y0:v*r+m*i,x1:p*s+d*o,y1:v*s+m*o,sin_th:a,cos_th:f}}function o(e,i,s,o,u,a,f,l){r=n.call(arguments);if(t[r])return t[r];var c=l*u,h=-f*a,p=f*u,d=l*a,v=.5*(o-s),m=8/3*Math.sin(v*.5)*Math.sin(v*.5)/Math.sin(v),g=e+Math.cos(s)-m*Math.sin(s),y=i+Math.sin(s)+m*Math.cos(s),b=e+Math.cos(o),w=i+Math.sin(o),E=b+m*Math.sin(o),S=w-m*Math.cos(o);return t[r]=[c*g+h*y,p*g+d*y,c*E+h*S,p*E+d*S,c*b+h*w,p*b+d*w],t[r]}var e={},t={},n=Array.prototype.join,r;fabric.util.drawArc=function(e,t,n,r){var s=r[0],u=r[1],a=r[2],f=r[3],l=r[4],c=r[5],h=r[6],p=i(c,h,s,u,f,l,a,t,n);for(var d=0;d=t})}function r(e,t){return i(e,t,function(e,t){return e>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(t){var n=this.constructor.superclass.prototype[t];return arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this)}function o(){function u(){this.initialize.apply(this,arguments)}var n=null,o=e.call(arguments,0);typeof o[0]=="function"&&(n=o.shift()),u.superclass=n,u.subclasses=[],n&&(i.prototype=n.prototype,u.prototype=new i,n.subclasses.push(u));for(var a=0,f=o.length;a-1?e.prototype[i]=function(e){return function(){var n=this.constructor.superclass;this.constructor.superclass=r;var i=t[e].apply(this,arguments);this.constructor.superclass=n;if(e!=="initialize")return i}}(i):e.prototype[i]=t[i],n&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};fabric.util.createClass=o}(),function(){function t(e){var t=Array.prototype.slice.call(arguments,1),n,r,i=t.length;for(r=0;r-1?s(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if(r==="opacity")s(e,t[r]);else{var i=r==="float"||r==="cssFloat"?typeof n.styleFloat=="undefined"?"cssFloat":"styleFloat":r;n[i]=t[r]}return e}var t=fabric.document.createElement("div"),n=typeof t.style.opacity=="string",r=typeof t.style.filter=="string",i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(e){return e};n?s=function(e,t){return e.style.opacity=t,e}:r&&(s=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+t*100+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+t*100+")",e}),fabric.util.setStyle=e}(),function(){function t(e){return typeof e=="string"?fabric.document.getElementById(e):e}function s(e,t){var n=fabric.document.createElement(e);for(var r in t)r==="class"?n.className=t[r]:r==="for"?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function o(e,t){(" "+e.className+" ").indexOf(" "+t+" ")===-1&&(e.className+=(e.className?" ":"")+t)}function u(e,t,n){return typeof t=="string"&&(t=s(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t}function a(e,t){var n,r,i=0,s=0,o=fabric.document.documentElement,u=fabric.document.body||{scrollLeft:0,scrollTop:0};r=e;while(e&&e.parentNode&&!n)e=e.parentNode,e!==fabric.document&&fabric.util.getElementStyle(e,"position")==="fixed"&&(n=e),e!==fabric.document&&r!==t&&fabric.util.getElementStyle(e,"position")==="absolute"?(i=0,s=0):e===fabric.document?(i=u.scrollLeft||o.scrollLeft||0,s=u.scrollTop||o.scrollTop||0):(i+=e.scrollLeft||0,s+=e.scrollTop||0);return{left:i,top:s}}function f(e){var t,n={left:0,top:0},r=e&&e.ownerDocument,i={left:0,top:0},s,o={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!r)return{left:0,top:0};for(var u in o)i[o[u]]+=parseInt(l(e,u),10)||0;return t=r.documentElement,typeof e.getBoundingClientRect!="undefined"&&(n=e.getBoundingClientRect()),s=fabric.util.getScrollLeftTop(e,null),{left:n.left+s.left-(t.clientLeft||0)+i.left,top:n.top+s.top-(t.clientTop||0)+i.top}}function l(e,t){e.style||(e.style={});if(fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle)return fabric.document.defaultView.getComputedStyle(e,null)[t];var n=e.style[t];return!n&&e.currentStyle&&(n=e.currentStyle[t]),n}var e=Array.prototype.slice,n=function(t){return e.call(t,0)},r;try{r=n(fabric.document.childNodes)instanceof Array}catch(i){}r||(n=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t}),function(){function n(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=fabric.util.falseFunction),t?e.style[t]="none":typeof e.unselectable=="string"&&(e.unselectable="on"),e}function r(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=null),t?e.style[t]="":typeof e.unselectable=="string"&&(e.unselectable=""),e}var e=fabric.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=n,fabric.util.makeElementSelectable=r}(),function(){function e(e,t){var n=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),i=!0;r.onload=r.onreadystatechange=function(e){if(i){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;i=!1,t(e||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=e,n.appendChild(r)}fabric.util.getScript=e}(),fabric.util.getById=t,fabric.util.toArray=n,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getScrollLeftTop=a,fabric.util.getElementOffset=f,fabric.util.getElementStyle=l}(),function(){function e(e,t){return e+(/\?/.test(e)?"&":"?")+t}function n(){}function r(r,i){i||(i={});var s=i.method?i.method.toUpperCase():"GET",o=i.onComplete||function(){},u=t(),a;return u.onreadystatechange=function(){u.readyState===4&&(o(u),u.onreadystatechange=n)},s==="GET"&&(a=null,typeof i.parameters=="string"&&(r=e(r,i.parameters))),u.open(s,r,!0),(s==="POST"||s==="PUT")&&u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),u.send(a),u}var t=function(){var e=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}];for(var t=e.length;t--;)try{var n=e[t]();if(n)return e[t]}catch(r){}}();fabric.util.request=r}(),fabric.log=function(){},fabric.warn=function(){},typeof console!="undefined"&&["log","warn"].forEach(function(e){typeof console[e]!="undefined"&&console[e].apply&&(fabric[e]=function(){return console[e].apply(console,arguments)})}),function(){function e(e){n(function(t){e||(e={});var r=t||+(new Date),i=e.duration||500,s=r+i,o,u=e.onChange||function(){},a=e.abort||function(){return!1},f=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},l="startValue"in e?e.startValue:0,c="endValue"in e?e.endValue:100,h=e.byValue||c-l;e.onStart&&e.onStart(),function p(t){o=t||+(new Date);var c=o>s?i:o-r;if(a()){e.onComplete&&e.onComplete();return}u(f(c,l,h,i));if(o>s){e.onComplete&&e.onComplete();return}n(p)}(r)})}var t=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)},n=function(){return t.apply(fabric.window,arguments)};fabric.util.animate=e,fabric.util.requestAnimFrame=n}(),function(){function e(e,t,n,r){return e','')}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s=t.util.toFixed,o=t.util.multiplyTransformMatrices,u={"fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight",cx:"left",x:"left",r:"radius","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration",cy:"top",y:"top",transform:"transformMatrix"},a={stroke:"strokeOpacity",fill:"fillOpacity"};t.parseTransformAttribute=function(){function e(e,t){var n=t[0];e[0]=Math.cos(n),e[1]=Math.sin(n),e[2]=-Math.sin(n),e[3]=Math.cos(n)}function n(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function r(e,t){e[2]=t[0]}function i(e,t){e[1]=t[0]}function s(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var o=[1,0,0,1,0,0],u="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",a="(?:\\s+,?\\s*|,\\s*)",f="(?:(skewX)\\s*\\(\\s*("+u+")\\s*\\))",l="(?:(skewY)\\s*\\(\\s*("+u+")\\s*\\))",c="(?:(rotate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+")"+a+"("+u+"))?\\s*\\))",h="(?:(scale)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",p="(?:(translate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",d="(?:(matrix)\\s*\\(\\s*("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+"\\s*\\))",v="(?:"+d+"|"+p+"|"+h+"|"+c+"|"+f+"|"+l+")",m="(?:"+v+"(?:"+a+v+")*"+")",g="^\\s*(?:"+m+"?)\\s*$",y=new RegExp(g),b=new RegExp(v,"g");return function(u){var a=o.concat(),f=[];if(!u||u&&!y.test(u))return a;u.replace(b,function(t){var u=(new RegExp(v)).exec(t).filter(function(e){return e!==""&&e!=null}),l=u[1],c=u.slice(2).map(parseFloat);switch(l){case"translate":s(a,c);break;case"rotate":e(a,c);break;case"scale":n(a,c);break;case"skewX":r(a,c);break;case"skewY":i(a,c);break;case"matrix":a=c}f.push(a.concat()),a=o.concat()});var l=f[0];while(f.length>1)f.shift(),l=t.util.multiplyTransformMatrices(l,f[0]);return l}}(),t.parseSVGDocument=function(){function s(e,t){while(e&&(e=e.parentNode))if(t.test(e.nodeName))return!0;return!1}var e=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/,n="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",r=new RegExp("^\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*"+"$");return function(n,o,u){if(!n)return;var a=new Date,f=t.util.toArray(n.getElementsByTagName("*"));if(f.length===0){f=n.selectNodes("//*[name(.)!='svg']");var l=[];for(var c=0,h=f.length;c-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){m.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),m.has(e,function(r){r?m.get(e,function(e){var t=g(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})},loadSVGFromString:function(e,n,r){e=e.trim();var i;if(typeof DOMParser!="undefined"){var s=new DOMParser;s&&s.parseFromString&&(i=s.parseFromString(e,"text/xml"))}else t.window.ActiveXObject&&(i=new ActiveXObject("Microsoft.XMLDOM"),i.async="false",i.loadXML(e.replace(//i,"")));t.parseSVGDocument(i.documentElement,function(e,t){n(e,t)},r)},createSVGFontFacesMarkup:function(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t},createSVGRefElementsMarkup:function(e){var t=[];return y(t,e,"backgroundColor"),y(t,e,"overlayColor"),t.join("")}})}(typeof exports!="undefined"?exports:this),fabric.ElementsParser={parse:function(e,t,n,r){this.elements=e,this.callback=t,this.options=n,this.reviver=r,this.instances=new Array(e.length),this.numElements=e.length,this.createObjects()},createObjects:function(){for(var e=0,t=this.elements.length;ee.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,t){return new n(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},distanceFrom:function(e){var t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)},midPointFrom:function(e){return new n(this.x+(e.x-this.x)/2,this.y+(e.y-this.y)/2)},min:function(e){return new n(Math.min(this.x,e.x),Math.min(this.y,e.y))},max:function(e){return new n(Math.max(this.x,e.x),Math.max(this.y,e.y))},toString:function(){return this.x+","+this.y},setXY:function(e,t){this.x=e,this.y=t},setFromPoint:function(e){this.x=e.x,this.y=e.y},swap:function(e){var t=this.x,n=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=n}}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){this.status=e,this.points=[]}var t=e.fabric||(e.fabric={});if(t.Intersection){t.warn("fabric.Intersection is already defined");return}t.Intersection=n,t.Intersection.prototype={appendPoint:function(e){this.points.push(e)},appendPoints:function(e){this.points=this.points.concat(e)}},t.Intersection.intersectLineLine=function(e,r,i,s){var o,u=(s.x-i.x)*(e.y-i.y)-(s.y-i.y)*(e.x-i.x),a=(r.x-e.x)*(e.y-i.y)-(r.y-e.y)*(e.x-i.x),f=(s.y-i.y)*(r.x-e.x)-(s.x-i.x)*(r.y-e.y);if(f!==0){var l=u/f,c=a/f;0<=l&&l<=1&&0<=c&&c<=1?(o=new n("Intersection"),o.points.push(new t.Point(e.x+l*(r.x-e.x),e.y+l*(r.y-e.y)))):o=new n}else u===0||a===0?o=new n("Coincident"):o=new n("Parallel");return o},t.Intersection.intersectLinePolygon=function(e,t,r){var i=new n,s=r.length;for(var o=0;o0&&(i.status="Intersection"),i},t.Intersection.intersectPolygonPolygon=function(e,t){var r=new n,i=e.length;for(var s=0;s0&&(r.status="Intersection"),r},t.Intersection.intersectPolygonRectangle=function(e,r,i){var s=r.min(i),o=r.max(i),u=new t.Point(o.x,s.y),a=new t.Point(s.x,o.y),f=n.intersectLinePolygon(s,u,e),l=n.intersectLinePolygon(u,o,e),c=n.intersectLinePolygon(o,a,e),h=n.intersectLinePolygon(a,s,e),p=new n;return p.appendPoints(f.points),p.appendPoints(l.points),p.appendPoints(c.points),p.appendPoints(h.points),p.points.length>0&&(p.status="Intersection"),p}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){e?this._tryParsingColor(e):this.setSource([0,0,0,1])}function r(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var t=e.fabric||(e.fabric={});if(t.Color){t.warn("fabric.Color is already defined.");return}t.Color=n,t.Color.prototype={_tryParsingColor:function(e){var t;e in n.colorNameMap&&(e=n.colorNameMap[e]),t=n.sourceFromHex(e),t||(t=n.sourceFromRgb(e)),t||(t=n.sourceFromHsl(e)),t&&this.setSource(t)},_rgbToHsl:function(e,n,r){e/=255,n/=255,r/=255;var i,s,o,u=t.util.array.max([e,n,r]),a=t.util.array.min([e,n,r]);o=(u+a)/2;if(u===a)i=s=0;else{var f=u-a;s=o>.5?f/(2-u-a):f/(u+a);switch(u){case e:i=(n-r)/f+(n']:this.type==="radial"&&(r=["']);for(var i=0;i');return r.push(this.type==="linear"?"":""),r.join("")},toLive:function(e){var t;if(!this.type)return;this.type==="linear"?t=e.createLinearGradient(this.coords.x1,this.coords.y1,this.coords.x2,this.coords.y2):this.type==="radial"&&(t=e.createRadialGradient(this.coords.x1,this.coords.y1,this.coords.r1,this.coords.x2,this.coords.y2,this.coords.r2));for(var n=0,r=this.colorStops.length;n'+''+""},toLive:function(e){var t=typeof this.source=="function"?this.source():this.source;if(typeof t.src!="undefined"){if(!t.complete)return"";if(t.naturalWidth===0||t.naturalHeight===0)return""}return e.createPattern(t,this.repeat)}}),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Shadow){t.warn("fabric.Shadow is already defined.");return}t.Shadow=t.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,initialize:function(e){typeof e=="string"&&(e=this._parseShadow(e));for(var n in e)this[n]=e[n];this.id=t.Object.__uid++},_parseShadow:function(e){var n=e.trim(),r=t.Shadow.reOffsetsAndBlur.exec(n)||[],i=n.replace(t.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)";return{color:i.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(e){var t="SourceAlpha";return e&&(e.fill===this.color||e.stroke===this.color)&&(t="SourceGraphic"),''+''+''+""+""+''+""+""},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY};var e={},n=t.Shadow.prototype;return this.color!==n.color&&(e.color=this.color),this.blur!==n.blur&&(e.blur=this.blur),this.offsetX!==n.offsetX&&(e.offsetX=this.offsetX),this.offsetY!==n.offsetY&&(e.offsetY=this.offsetY),e}}),t.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/}(typeof exports!="undefined"?exports:this),function(){"use strict";if(fabric.StaticCanvas){fabric.warn("fabric.StaticCanvas is already defined.");return}var e=fabric.util.object.extend,t=fabric.util.getElementOffset,n=fabric.util.removeFromArray,r=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass({initialize:function(e,t){t||(t={}),this._initStatic(e,t),fabric.StaticCanvas.activeInstance=this},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!0,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!1,onBeforeScaleRotate:function(){},_initStatic:function(e,t){this._objects=[],this._createLowerCanvas(e),this._initOptions(t),t.overlayImage&&this.setOverlayImage(t.overlayImage,this.renderAll.bind(this)),t.backgroundImage&&this.setBackgroundImage(t.backgroundImage,this.renderAll.bind(this)),t.backgroundColor&&this.setBackgroundColor(t.backgroundColor,this.renderAll.bind(this)),t.overlayColor&&this.setOverlayColor(t.overlayColor,this.renderAll.bind(this)),this.calcOffset()},calcOffset:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(e,t,n){return this.__setBgOverlayImage("overlayImage",e,t,n)},setBackgroundImage:function(e,t,n){return this.__setBgOverlayImage("backgroundImage",e,t,n)},setOverlayColor:function(e,t){return this.__setBgOverlayColor("overlayColor",e,t)},setBackgroundColor:function(e,t){return this.__setBgOverlayColor("backgroundColor",e,t)},__setBgOverlayImage:function(e,t,n,r){return typeof t=="string"?fabric.util.loadImage(t,function(t){this[e]=new fabric.Image(t,r),n&&n()},this):(this[e]=t,n&&n()),this},__setBgOverlayColor:function(e,t,n){if(t.source){var r=this;fabric.util.loadImage(t.source,function(i){r[e]=new fabric.Pattern({source:i,repeat:t.repeat,offsetX:t.offsetX,offsetY:t.offsetY}),n&&n()})}else this[e]=t,n&&n();return this},_createCanvasElement:function(){var e=fabric.document.createElement("canvas");e.style||(e.style={});if(!e)throw r;return this._initCanvasElement(e),e},_initCanvasElement:function(e){fabric.util.createCanvasElement(e);if(typeof e.getContext=="undefined")throw r},_initOptions:function(e){for(var t in e)this[t]=e[t];this.width=parseInt(this.lowerCanvasEl.width,10)||0,this.height=parseInt(this.lowerCanvasEl.height,10)||0;if(!this.lowerCanvasEl.style)return;this.lowerCanvasEl.style.width=this.width+"px",this.lowerCanvasEl.style.height=this.height+"px"},_createLowerCanvas:function(e){this.lowerCanvasEl=fabric.util.getById(e)||this._createCanvasElement(),this._initCanvasElement(this.lowerCanvasEl),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(e){return this._setDimension("width",e)},setHeight:function(e){return this._setDimension("height",e)},setDimensions:function(e){for(var t in e)this._setDimension(t,e[t]);return this},_setDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.lowerCanvasEl.style[e]=t+"px",this.upperCanvasEl&&(this.upperCanvasEl[e]=t,this.upperCanvasEl.style[e]=t+"px"),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t+"px"),this[e]=t,this.calcOffset(),this.renderAll(),this},getElement:function(){return this.lowerCanvasEl},getActiveObject:function(){return null},getActiveGroup:function(){return null},_draw:function(e,t){if(!t)return;if(this.controlsAboveOverlay){var n=t.hasBorders,r=t.hasControls;t.hasBorders=t.hasControls=!1,t.render(e),t.hasBorders=n,t.hasControls=r}else t.render(e)},_onObjectAdded:function(e){this.stateful&&e.setupState(),e.setCoords(),e.canvas=this,this.fire("object:added",{target:e}),e.fire("added")},_onObjectRemoved:function(e){this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this._discardActiveObject(),this.fire("selection:cleared")),this.fire("object:removed",{target:e}),e.fire("removed")},clearContext:function(e){return e.clearRect(0,0,this.width,this.height),this},getContext:function(){return this.contextContainer},clear:function(){return this._objects.length=0,this.discardActiveGroup&&this.discardActiveGroup(),this.discardActiveObject&&this.discardActiveObject(),this.clearContext(this.contextContainer),this.contextTop&&this.clearContext(this.contextTop),this.fire("canvas:cleared"),this.renderAll(),this},renderAll:function(e){var t=this[e===!0&&this.interactive?"contextTop":"contextContainer"],n=this.getActiveGroup();return this.contextTop&&this.selection&&!this._groupSelector&&this.clearContext(this.contextTop),e||this.clearContext(t),this.fire("before:render"),this.clipTo&&fabric.util.clipContext(this,t),this._renderBackground(t),this._renderObjects(t,n),this._renderActiveGroup(t,n),this.clipTo&&t.restore(),this._renderOverlay(t),this.controlsAboveOverlay&&this.interactive&&this.drawControls(t),this.fire("after:render"),this},_renderObjects:function(e,t){for(var n=0,r=this._objects.length;n"),n.join("")},_setSVGPreamble:function(e,t){t.suppressPreamble||e.push('','\n')},_setSVGHeader:function(e,t){e.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),"")},_setSVGObjects:function(e,t){var n=this.getActiveGroup();n&&this.discardActiveGroup();for(var r=0,i=this.getObjects(),s=i.length;r"):this[t]&&t==="overlayColor"&&e.push('")},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e,t){var r=this._objects.indexOf(e);if(r!==0){var i=this._findNewLowerIndex(e,r,t);n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},_findNewLowerIndex:function(e,t,n){var r;if(n){r=t;for(var i=t-1;i>=0;--i){var s=e.intersectsWithObject(this._objects[i])||e.isContainedWithinObject(this._objects[i])||this._objects[i].isContainedWithinObject(e);if(s){r=i;break}}}else r=t-1;return r},bringForward:function(e,t){var r=this._objects.indexOf(e);if(r!==this._objects.length-1){var i=this._findNewUpperIndex(e,r,t);n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},_findNewUpperIndex:function(e,t,n){var r;if(n){r=t;for(var i=t+1;i"}}),e(fabric.StaticCanvas.prototype,fabric.Observable),e(fabric.StaticCanvas.prototype,fabric.Collection),e(fabric.StaticCanvas.prototype,fabric.DataURLExporter),e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(e){var t=fabric.util.createCanvasElement();if(!t||!t.getContext)return null;var n=t.getContext("2d");if(!n)return null;switch(e){case"getImageData":return typeof n.getImageData!="undefined";case"setLineDash":return typeof n.setLineDash!="undefined";case"toDataURL":return typeof t.toDataURL!="undefined";case"toDataURLWithQuality":try{return t.toDataURL("image/jpeg",0),!0}catch(r){}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",setShadow:function(e){return this.shadow=new fabric.Shadow(e),this},_setBrushStyles:function(){var e=this.canvas.contextTop;e.strokeStyle=this.color,e.lineWidth=this.width,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin},_setShadow:function(){if(!this.shadow)return;var e=this.canvas.contextTop;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_resetShadow:function(){var e=this.canvas.contextTop;e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0}}),function(){var e=fabric.util.array.min,t=fabric.util.array.max;fabric.PencilBrush=fabric.util.createClass(fabric.BaseBrush,{initialize:function(e){this.canvas=e,this._points=[]},onMouseDown:function(e){this._prepareForDrawing(e),this._captureDrawingPath(e),this._render()},onMouseMove:function(e){this._captureDrawingPath(e),this.canvas.clearContext(this.canvas.contextTop),this._render()},onMouseUp:function(){this._finalizeAndAddPath()},_prepareForDrawing:function(e){var t=new fabric.Point(e.x,e.y);this._reset(),this._addPoint(t),this.canvas.contextTop.moveTo(t.x,t.y)},_addPoint:function(e){this._points.push(e)},_reset:function(){this._points.length=0,this._setBrushStyles(),this._setShadow()},_captureDrawingPath:function(e){var t=new fabric.Point(e.x,e.y);this._addPoint(t)},_render:function(){var e=this.canvas.contextTop;e.beginPath();var t=this._points[0],n=this._points[1];this._points.length===2&&t.x===n.x&&t.y===n.y&&(t.x-=.5,n.x+=.5),e.moveTo(t.x,t.y);for(var r=1,i=this._points.length;rn.padding?e.x<0?e.x+=n.padding:e.x-=n.padding:e.x=0,i(e.y)>n.padding?e.y<0?e.y+=n.padding:e.y-=n.padding:e.y=0},_rotateObject:function(e,t){var i=this._currentTransform,s=this._offset;if(i.target.get("lockRotation"))return;var o=r(i.ey-i.top-s.top,i.ex-i.left-s.left),u=r(t-i.top-s.top,e-i.left-s.left),a=n(u-o+i.theta);a<0&&(a=360+a),i.target.angle=a},_setCursor:function(e){this.upperCanvasEl.style.cursor=e},_resetObjectTransform:function(e){e.scaleX=1,e.scaleY=1,e.setAngle(0)},_drawSelection:function(){var e=this.contextTop,t=this._groupSelector,n=t.left,r=t.top,o=i(n),u=i(r);e.fillStyle=this.selectionColor,e.fillRect(t.ex-(n>0?0:-n),t.ey-(r>0?0:-r),o,u),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var a=t.ex+s-(n>0?0:o),f=t.ey+s-(r>0?0:u);e.beginPath(),fabric.util.drawDashedLine(e,a,f,a+o,f,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f+u-1,a+o,f+u-1,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f,a,f+u,this.selectionDashArray),fabric.util.drawDashedLine(e,a+o-1,f,a+o-1,f+u,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+s-(n>0?0:o),t.ey+s-(r>0?0:u),o,u)},_isLastRenderedObject:function(e){return this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(e,this._offset)},findTarget:function(e,t){if(this.skipTargetFind)return;if(this._isLastRenderedObject(e))return this.lastRenderedObjectWithControlsAboveOverlay;var n=this.getActiveGroup();return n&&!t&&this.containsPoint(e,n)?n:this._searchPossibleTargets(e)},_searchPossibleTargets:function(e){var t=[],n,r=this.getPointer(e);for(var i=this._objects.length;i--;)if(this._objects[i]&&this._objects[i].visible&&this._objects[i].evented&&this.containsPoint(e,this._objects[i])){if(!this.perPixelTargetFind&&!this._objects[i].perPixelTargetFind){n=this._objects[i],this.relatedTarget=n;break}t[t.length]=this._objects[i]}for(var s=0,o=t.length;s1&&(t=new fabric.Group(t.reverse(),{originX:"center",originY:"center"}),this.setActiveGroup(t,e),t.saveCoords(),this.fire("selection:created",{target:t}),this.renderAll())},_collectObjects:function(){var n=[],r,i=this._groupSelector.ex,s=this._groupSelector.ey,o=i+this._groupSelector.left,u=s+this._groupSelector.top,a=new fabric.Point(e(i,o),e(s,u)),f=new fabric.Point(t(i,o),t(s,u)),l=i===o&&s===u;for(var c=this._objects.length;c--;){r=this._objects[c];if(!r||!r.selectable||!r.visible)continue;if(r.intersectsWithRect(a,f)||r.isContainedWithinRect(a,f)||r.containsPoint(a)||r.containsPoint(f)){r.set("active",!0),n.push(r);if(l)break}}return n},_maybeGroupObjects:function(e){this.selection&&this._groupSelector&&this._groupSelectedObjects(e);var t=this.getActiveGroup();t&&(t.setObjectsCoords().setCoords(),t.isMoving=!1,this._setCursor(this.defaultCursor)),this._groupSelector=null,this._currentTransform=null}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{toDataURL:function(e){e||(e={});var t=e.format||"png",n=e.quality||1,r=e.multiplier||1,i={left:e.left,top:e.top,width:e.width,height:e.height};return r!==1?this.__toDataURLWithMultiplier(t,n,i,r):this.__toDataURL(t,n,i)},__toDataURL:function(e,t,n){this.renderAll(!0);var r=this.upperCanvasEl||this.lowerCanvasEl,i=this.__getCroppedCanvas(r,n);e==="jpg"&&(e="jpeg");var s=fabric.StaticCanvas.supports("toDataURLWithQuality")?(i||r).toDataURL("image/"+e,t):(i||r).toDataURL("image/"+e);return this.contextTop&&this.clearContext(this.contextTop),this.renderAll(),i&&(i=null),s},__getCroppedCanvas:function(e,t){var n,r,i="left"in t||"top"in t||"width"in t||"height"in t;return i&&(n=fabric.util.createCanvasElement(),r=n.getContext("2d"),n.width=t.width||this.width,n.height=t.height||this.height,r.drawImage(e,-t.left||0,-t.top||0)),n},__toDataURLWithMultiplier:function(e,t,n,r){var i=this.getWidth(),s=this.getHeight(),o=i*r,u=s*r,a=this.getActiveObject(),f=this.getActiveGroup(),l=this.contextTop||this.contextContainer;this.setWidth(o).setHeight(u),l.scale(r,r),n.left&&(n.left*=r),n.top&&(n.top*=r),n.width&&(n.width*=r),n.height&&(n.height*=r),f?this._tempRemoveBordersControlsFromGroup(f):a&&this.deactivateAll&&this.deactivateAll(),this.renderAll(!0);var c=this.__toDataURL(e,t,n);return this.width=i,this.height=s,l.scale(1/r,1/r),this.setWidth(i).setHeight(s),f?this._restoreBordersControlsOnGroup(f):a&&this.setActiveObject&&this.setActiveObject(a),this.contextTop&&this.clearContext(this.contextTop),this.renderAll(),c},toDataURLWithMultiplier:function(e,t,n){return this.toDataURL({format:e,multiplier:t,quality:n})},_tempRemoveBordersControlsFromGroup:function(e){e.origHasControls=e.hasControls,e.origBorderColor=e.borderColor,e.hasControls=!0,e.borderColor="rgba(0,0,0,0)",e.forEachObject(function(e){e.origBorderColor=e.borderColor,e.borderColor="rgba(0,0,0,0)"})},_restoreBordersControlsOnGroup:function(e){e.hideControls=e.origHideControls,e.borderColor=e.origBorderColor,e.forEachObject(function(e){e.borderColor=e.origBorderColor,delete e.origBorderColor})}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{loadFromDatalessJSON:function(e,t,n){return this.loadFromJSON(e,t,n)},loadFromJSON:function(e,t,n){if(!e)return;var r=typeof e=="string"?JSON.parse(e):e;this.clear();var i=this;return this._enlivenObjects(r.objects,function(){i._setBgOverlay(r,t)},n),this},_setBgOverlay:function(e,t){var n=this,r={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(!e.backgroundImage&&!e.overlayImage&&!e.background&&!e.overlay){t&&t();return}var i=function(){r.backgroundImage&&r.overlayImage&&r.backgroundColor&&r.overlayColor&&(n.renderAll(),t&&t())};this.__setBgOverlay("backgroundImage",e.backgroundImage,r,i),this.__setBgOverlay("overlayImage",e.overlayImage,r,i),this.__setBgOverlay("backgroundColor",e.background,r,i),this.__setBgOverlay("overlayColor",e.overlay,r,i),i()},__setBgOverlay:function(e,t,n,r){var i=this;if(!t){n[e]=!0;return}e==="backgroundImage"||e==="overlayImage"?fabric.Image.fromObject(t,function(t){i[e]=t,n[e]=!0,r&&r()}):this["set"+fabric.util.string.capitalize(e,!0)](t,function(){n[e]=!0,r&&r()})},_enlivenObjects:function(e,t,n){var r=this;e.length===0&&t&&t();var i=this.renderOnAddRemove;this.renderOnAddRemove=!1,fabric.util.enlivenObjects(e,function(e){e.forEach(function(e,t){r.insertAt(e,t,!0)}),r.renderOnAddRemove=i,t&&t()},null,n)},_toDataURL:function(e,t){this.clone(function(n){t(n.toDataURL(e))})},_toDataURLWithMultiplier:function(e,t,n){this.clone(function(r){n(r.toDataURLWithMultiplier(e,t))})},clone:function(e,t){var n=JSON.stringify(this.toJSON(t));this.cloneWithoutData(function(t){t.loadFromJSON(n,function(){e&&e(t)})})},cloneWithoutData:function(e){var t=fabric.document.createElement("canvas");t.width=this.getWidth(),t.height=this.getHeight();var n=new fabric.Canvas(t);n.clipTo=this.clipTo,this.backgroundImage?(n.setBackgroundImage(this.backgroundImage.src,function(){n.renderAll(),e&&e(n)}),n.backgroundImageOpacity=this.backgroundImageOpacity,n.backgroundImageStretch=this.backgroundImageStretch):e&&e(n)}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.toFixed,i=t.util.string.capitalize,s=t.util.degreesToRadians,o=t.StaticCanvas.supports("setLineDash");if(t.Object)return;t.Object=t.util.createClass({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,cornerSize:12,transparentCorners:!0,hoverCursor:null,padding:0,borderColor:"rgba(102,153,255,0.75)",cornerColor:"rgba(102,153,255,0.5)",centeredScaling:!1,centeredRotation:!0,fill:"rgb(0,0,0)",fillRule:"source-over",backgroundColor:"",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,stateProperties:"top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeLineJoin strokeMiterLimit angle opacity fill fillRule shadow clipTo visible backgroundColor".split(" "),initialize:function(e){e&&this.setOptions(e)},_initGradient:function(e){e.fill&&e.fill.colorStops&&!(e.fill instanceof t.Gradient)&&this.set("fill",new t.Gradient(e.fill))},_initPattern:function(e){e.fill&&e.fill.source&&!(e.fill instanceof t.Pattern)&&this.set("fill",new t.Pattern(e.fill)),e.stroke&&e.stroke.source&&!(e.stroke instanceof t.Pattern)&&this.set("stroke",new t.Pattern(e.stroke))},_initClipping:function(e){if(!e.clipTo||typeof e.clipTo!="string")return;var n=t.util.getFunctionBody(e.clipTo);typeof n!="undefined"&&(this.clipTo=new Function("ctx",n))},setOptions:function(e){for(var t in e)this.set(t,e[t]);this._initGradient(e),this._initPattern(e),this._initClipping(e)},transform:function(e,t){e.globalAlpha=this.opacity;var n=t?this._getLeftTopCoords():this.getCenterPoint();e.translate(n.x,n.y),e.rotate(s(this.angle)),e.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(e){var n=t.Object.NUM_FRACTION_DIGITS,i={type:this.type,originX:this.originX,originY:this.originY,left:r(this.left,n),top:r(this.top,n),width:r(this.width,n),height:r(this.height,n),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:r(this.strokeWidth,n),strokeDashArray:this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeLineJoin:this.strokeLineJoin,strokeMiterLimit:r(this.strokeMiterLimit,n),scaleX:r(this.scaleX,n),scaleY:r(this.scaleY,n),angle:r(this.getAngle(),n),flipX:this.flipX,flipY:this.flipY,opacity:r(this.opacity,n),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,clipTo:this.clipTo&&String(this.clipTo),backgroundColor:this.backgroundColor};return this.includeDefaultValues||(i=this._removeDefaultValues(i)),t.util.populateWithProperties(this,i,e),i},toDatalessObject:function(e){return this.toObject(e)},_removeDefaultValues:function(e){var n=t.util.getKlass(e.type).prototype,r=n.stateProperties;return r.forEach(function(t){e[t]===n[t]&&delete e[t]}),e},toString:function(){return"#"},get:function(e){return this[e]},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"&&e!=="clipTo"?this._set(e,t(this.get(e))):this._set(e,t);return this},_set:function(e,n){var i=e==="scaleX"||e==="scaleY";return i&&(n=this._constrainScale(n)),e==="scaleX"&&n<0?(this.flipX=!this.flipX,n*=-1):e==="scaleY"&&n<0?(this.flipY=!this.flipY,n*=-1):e==="width"||e==="height"?this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2):e==="shadow"&&n&&!(n instanceof t.Shadow)&&(n=new t.Shadow(n)),this[e -]=n,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save(),this._transform(e,n),this._setStrokeStyles(e),this._setFillStyles(e);var r=this.transformMatrix;r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_transform:function(e,t){var n=this.transformMatrix;n&&!this.group&&e.setTransform(n[0],n[1],n[2],n[3],n[4],n[5]),t||this.transform(e)},_setStrokeStyles:function(e){this.stroke&&(e.lineWidth=this.strokeWidth,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,e.strokeStyle=this.stroke.toLive?this.stroke.toLive(e):this.stroke)},_setFillStyles:function(e){this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill)},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_renderFill:function(e){if(!this.fill)return;this.fill.toLive&&(e.save(),e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0)),e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke)return;e.save(),this.strokeDashArray?(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),o?(e.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(e)):this._renderDashedStroke&&this._renderDashedStroke(e),e.stroke()):this._stroke?this._stroke(e):e.stroke(),this._removeShadow(e),e.restore()},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){var n=this.toDataURL();return t.util.loadImage(n,function(n){e&&e(new t.Image(n))}),this},toDataURL:function(e){e||(e={});var n=t.util.createCanvasElement(),r=this.getBoundingRect();n.width=r.width,n.height=r.height,t.util.wrapElement(n,"div");var i=new t.Canvas(n);e.format==="jpg"&&(e.format="jpeg"),e.format==="jpeg"&&(i.backgroundColor="#fff");var s={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set("active",!1),this.setPositionByOrigin(new t.Point(n.width/2,n.height/2),"center","center");var o=this.canvas;i.add(this);var u=i.toDataURL(e);return this.set(s).setCoords(),this.canvas=o,i.dispose(),i=null,u},isType:function(e){return this.type===e},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}return this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){return this.set("fill",new t.Pattern(e))},setShadow:function(e){return this.set("shadow",new t.Shadow(e))},setColor:function(e){return this.set("fill",e),this},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.canvas.centerObject(this),this},remove:function(){return this.canvas.remove(this)},getLocalPointer:function(e,t){t=t||this.canvas.getPointer(e);var n=this.translateToOriginPoint(this.getCenterPoint(),"left","top");return{x:t.x-n.x,y:t.y-n.y}}}),t.util.createAccessors(t.Object),t.Object.prototype.rotate=t.Object.prototype.setAngle,n(t.Object.prototype,t.Observable),t.Object.NUM_FRACTION_DIGITS=2,t.Object.__uid=0}(typeof exports!="undefined"?exports:this),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{translateToCenterPoint:function(t,n,r){var i=t.x,s=t.y,o=this.stroke?this.strokeWidth:0;return n==="left"?i=t.x+(this.getWidth()+o*this.scaleX)/2:n==="right"&&(i=t.x-(this.getWidth()+o*this.scaleX)/2),r==="top"?s=t.y+(this.getHeight()+o*this.scaleY)/2:r==="bottom"&&(s=t.y-(this.getHeight()+o*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},translateToOriginPoint:function(t,n,r){var i=t.x,s=t.y,o=this.stroke?this.strokeWidth:0;return n==="left"?i=t.x-(this.getWidth()+o*this.scaleX)/2:n==="right"&&(i=t.x+(this.getWidth()+o*this.scaleX)/2),r==="top"?s=t.y-(this.getHeight()+o*this.scaleY)/2:r==="bottom"&&(s=t.y+(this.getHeight()+o*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},getCenterPoint:function(){var e=new fabric.Point(this.left,this.top);return this.translateToCenterPoint(e,this.originX,this.originY)},getPointByOrigin:function(e,t){var n=this.getCenterPoint();return this.translateToOriginPoint(n,e,t)},toLocalPoint:function(t,n,r){var i=this.getCenterPoint(),s=this.stroke?this.strokeWidth:0,o,u;return n&&r?(n==="left"?o=i.x-(this.getWidth()+s*this.scaleX)/2:n==="right"?o=i.x+(this.getWidth()+s*this.scaleX)/2:o=i.x,r==="top"?u=i.y-(this.getHeight()+s*this.scaleY)/2:r==="bottom"?u=i.y+(this.getHeight()+s*this.scaleY)/2:u=i.y):(o=this.left,u=this.top),fabric.util.rotatePoint(new fabric.Point(t.x,t.y),i,-e(this.angle)).subtractEquals(new fabric.Point(o,u))},setPositionByOrigin:function(e,t,n){var r=this.translateToCenterPoint(e,t,n),i=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",i.x),this.set("top",i.y)},adjustPosition:function(t){var n=e(this.angle),r=this.getWidth()/2,i=Math.cos(n)*r,s=Math.sin(n)*r,o=this.getWidth(),u=Math.cos(n)*o,a=Math.sin(n)*o;this.originX==="center"&&t==="left"||this.originX==="right"&&t==="center"?(this.left-=i,this.top-=s):this.originX==="left"&&t==="center"||this.originX==="center"&&t==="right"?(this.left+=i,this.top+=s):this.originX==="left"&&t==="right"?(this.left+=u,this.top+=a):this.originX==="right"&&t==="left"&&(this.left-=u,this.top-=a),this.setCoords(),this.originX=t},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","center")}})}(),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{oCoords:null,intersectsWithRect:function(e,t){var n=this.oCoords,r=new fabric.Point(n.tl.x,n.tl.y),i=new fabric.Point(n.tr.x,n.tr.y),s=new fabric.Point(n.bl.x,n.bl.y),o=new fabric.Point(n.br.x,n.br.y),u=fabric.Intersection.intersectPolygonRectangle([r,i,o,s],e,t);return u.status==="Intersection"},intersectsWithObject:function(e){function t(e){return{tl:new fabric.Point(e.tl.x,e.tl.y),tr:new fabric.Point(e.tr.x,e.tr.y),bl:new fabric.Point(e.bl.x,e.bl.y),br:new fabric.Point(e.br.x,e.br.y)}}var n=t(this.oCoords),r=t(e.oCoords),i=fabric.Intersection.intersectPolygonPolygon([n.tl,n.tr,n.br,n.bl],[r.tl,r.tr,r.br,r.bl]);return i.status==="Intersection"},isContainedWithinObject:function(e){var t=e.getBoundingRect(),n=new fabric.Point(t.left,t.top),r=new fabric.Point(t.left+t.width,t.top+t.height);return this.isContainedWithinRect(n,r)},isContainedWithinRect:function(e,t){var n=this.getBoundingRect();return n.left>e.x&&n.left+n.widthe.y&&n.top+n.height=e.y&&f.d.y>=e.y)continue;f.o.x===f.d.x&&f.o.x>=e.x?(o=f.o.x,u=e.y):(n=0,r=(f.d.y-f.o.y)/(f.d.x-f.o.x),i=e.y-n*e.x,s=f.o.y-r*f.o.x,o=-(i-s)/(n-r),u=i+n*o),o>=e.x&&(a+=1);if(a===2)break}return a},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],t=fabric.util.array.min(e),n=fabric.util.array.max(e),r=Math.abs(t-n),i=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],s=fabric.util.array.min(i),o=fabric.util.array.max(i),u=Math.abs(s-o);return{left:t,top:s,width:r,height:u}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(e){return Math.abs(e)1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x:m.x,y:m.y};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords&&this._setCornerCoords(),this}})}(),fabric.util.object.extend(fabric.Object.prototype,{sendToBack:function(){return this.group?fabric.StaticCanvas.prototype.sendToBack.call(this.group,this):this.canvas.sendToBack(this),this},bringToFront:function(){return this.group?fabric.StaticCanvas.prototype.bringToFront.call(this.group,this):this.canvas.bringToFront(this),this},sendBackwards:function(e){return this.group?fabric.StaticCanvas.prototype.sendBackwards.call(this.group,this,e):this.canvas.sendBackwards(this,e),this},bringForward:function(e){return this.group?fabric.StaticCanvas.prototype.bringForward.call(this.group,this,e):this.canvas.bringForward(this,e),this},moveTo:function(e){return this.group?fabric.StaticCanvas.prototype.moveTo.call(this.group,this,e):this.canvas.moveTo(this,e),this}}),fabric.util.object.extend(fabric.Object.prototype,{getSvgStyles:function(){var e=this.fill?this.fill.toLive?"url(#SVGID_"+this.fill.id+")":this.fill:"none",t=this.stroke?this.stroke.toLive?"url(#SVGID_"+this.stroke.id+")":this.stroke:"none",n=this.strokeWidth?this.strokeWidth:"0",r=this.strokeDashArray?this.strokeDashArray.join(" "):"",i=this.strokeLineCap?this.strokeLineCap:"butt",s=this.strokeLineJoin?this.strokeLineJoin:"miter",o=this.strokeMiterLimit?this.strokeMiterLimit:"4",u=typeof this.opacity!="undefined"?this.opacity:"1",a=this.visible?"":" visibility: hidden;",f=this.shadow&&this.type!=="text"?"filter: url(#SVGID_"+this.shadow.id+");":"";return["stroke: ",t,"; ","stroke-width: ",n,"; ","stroke-dasharray: ",r,"; ","stroke-linecap: ",i,"; ","stroke-linejoin: ",s,"; ","stroke-miterlimit: ",o,"; ","fill: ",e,"; ","opacity: ",u,";",f,a].join("")},getSvgTransform:function(){var e=fabric.util.toFixed,t=this.getAngle(),n=this.getCenterPoint(),r=fabric.Object.NUM_FRACTION_DIGITS,i="translate("+e(n.x,r)+" "+e(n.y,r)+")",s=t!==0?" rotate("+e(t,r)+")":"",o=this.scaleX===1&&this.scaleY===1?"":" scale("+e(this.scaleX,r)+" "+e(this.scaleY,r)+")",u=this.flipX?"matrix(-1 0 0 1 0 0) ":"",a=this.flipY?"matrix(1 0 0 -1 0 0)":"";return[i,s,o,u,a].join("")},_createBaseSVGMarkup:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),this.shadow&&e.push(this.shadow.toSVG(this)),e}}),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this.get(e)!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians,n=typeof G_vmlCanvasManager!="undefined";fabric.util.object.extend(fabric.Object.prototype,{_controlsVisibility:null,_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(!this.isControlVisible(a))continue;if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner),o=this._findCrossPoints({x:i,y:s},u);if(o!==0&&o%2===1)return this.__corner=a,a}return!1},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=~~(this.strokeWidth/2)*2;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)-.5,~~(-(u/2)-t-r/2*this.scaleY)-.5,~~(o+n+r*this.scaleX)+1,~~(u+n+r*this.scaleY)+1);if(this.hasRotatingPoint&&this.isControlVisible("mtr")&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;var t=this.cornerSize,n=t/2,r=~~(this.strokeWidth/2),i=-(this.width/2),s=-(this.height/2),o=this.padding/this.scaleX,u=this.padding/this.scaleY,a=n/this.scaleY,f=n/this.scaleX,l=(n-t)/this.scaleX,c=(n-t)/this.scaleY,h=this.height,p=this.width,d=this.transparentCorners?"strokeRect":"fillRect";return e.save(),e.lineWidth=1/Math.max(this.scaleX,this.scaleY),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=e.fillStyle=this.cornerColor,this._drawControl("tl",e,d,i-f-r-o,s-a-r-u),this._drawControl("tr",e,d,i+p-f+r+o,s-a-r-u),this._drawControl("tr",e,d,i-f-r-o,s+h+c+r+u),this._drawControl("br",e,d,i+p+l+r+o,s+h+c+r+u),this.get("lockUniScaling")||(this._drawControl("mt",e,d,i+p/2-f,s-a-r-u),this._drawControl("mb",e,d,i+p/2-f,s+h+c+r+u),this._drawControl("mb",e,d,i+p+l+r+o,s+h/2-a),this._drawControl("ml",e,d,i-f-r-o,s+h/2-a)),this.hasRotatingPoint&&this._drawControl("mtr",e,d,i+p/2-f,this.flipY?s+h+this.rotatingPointOffset/this.scaleY-this.cornerSize/this.scaleX/2+r+u:s-this.rotatingPointOffset/this.scaleY-this.cornerSize/this.scaleY/2-r-u),e.restore(),this},_drawControl:function(e,t,r,i,s){var o=this.cornerSize/this.scaleX,u=this.cornerSize/this.scaleY;this.isControlVisible(e)&&(n||this.transparentCorners||t.clearRect(i,s,o,u),t[r](i,s,o,u))},isControlVisible:function(e){return this._getControlsVisibility()[e]},setControlVisible:function(e,t){return this._getControlsVisibility()[e]=t,this},setControlsVisibility:function(e){e||(e={});for(var t in e)this.setControlVisible(t,e[t]);return this},_getControlsVisibility:function(){return this._controlsVisibility||(this._controlsVisibility={tl:!0,tr:!0,br:!0,bl:!0,ml:!0,mt:!0,mr:!0,mb:!0,mtr:!0}),this._controlsVisibility}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("left"),endValue:this.getCenter().left,duration:this.FX_DURATION,onChange:function(t){e.set("left",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxCenterObjectV:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("top"),endValue:this.getCenter().top,duration:this.FX_DURATION,onChange:function(t){e.set("top",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxRemove:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("opacity"),endValue:0,duration:this.FX_DURATION,onStart:function(){e.set("active",!1)},onChange:function(t){e.set("opacity",t),s.renderAll(),i()},onComplete:function(){s.remove(e),r()}}),this}}),fabric.util.object.extend(fabric.Object.prototype,{animate:function(){if(arguments[0]&&typeof arguments[0]=="object"){var e=[],t,n;for(t in arguments[0])e.push(t);for(var r=0,i=e.length;r'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e)},_set:function(e,t){return this.callSuper("_set",e,t),e==="radius"&&this.setRadius(t),this},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(e){var t=this._createBaseSVGMarkup(),n=this.width/2,r=this.height/2,i=[-n+" "+r,"0 "+ -r,n+" "+r].join(",");return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this._renderFill(e),this._renderStroke(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}var r=t.Object.prototype.stateProperties.concat();r.push("rx","ry","x","y"),t.Rect=t.util.createClass(t.Object,{stateProperties:r,type:"rect",rx:0,ry:0,x:0,y:0,strokeDashArray:null,initialize:function(e){e=e||{},this.callSuper("initialize",e),this._initRxRy(),this.x=e.x||0,this.y=e.y||0},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height,u=this.group&&this.group.type==="path-group";e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y);var a=t!==0||n!==0;e.moveTo(r+t,i),e.lineTo(r+s-t,i),a&&e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),a&&e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),a&&e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),a&&e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){var t=n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,r){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=i(s);var o=new t.Rect(n(r?t.util.object.clone(r):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(e){var t=[],r=this._createBaseSVGMarkup();for(var i=0,s=this.points.length;i'),e?e(r.join("")):r.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),e?e(n.join("")):n.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n"},toObject:function(e){var t=s(this.callSuper("toObject",e),{path:this.path,pathOffset:this.pathOffset});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(e){var t=[],n=this._createBaseSVGMarkup();for(var r=0,i=this.path.length;r',"",""),e?e(n.join("")):n.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n=[],r,i,s=/(-?\.\d+)|(-?\d+(\.\d+)?)/g,o,u;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var r=0,i=t.length;r"),e?e(n.join("")):n.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e,n){typeof e.paths=="string"?t.loadSVGFromURL(e.paths,function(r){var i=e.paths;delete e.paths;var s=t.util.groupSVGElements(r,e,i);n(s)}):t.util.enlivenObjects(e.paths,function(r){delete e.paths,n(new t.PathGroup(r,e))})},t.PathGroup.async=!0}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){this.forEachObject(this._updateObjectCoords,this)},_updateObjectCoords:function(e){var t=e.getLeft(),n=e.getTop();e.set({originalLeft:t,originalTop:n,left:t-this.left,top:n-this.top}),e.setCoords(),e.__origHasControls=e.hasControls,e.hasControls=!1},toString:function(){return"#"},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(this._setObjectActive,this),this._calcBounds(),this._updateObjectsCoords(),this},_setObjectActive:function(e){e.set("active",!0),e.group=this},removeWithUpdate:function(e){return this._moveFlippedObject(e),this._restoreObjectsState(),this.forEachObject(this._setObjectActive,this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e),this.clipTo&&t.util.clipContext(this,e);for(var r=0,i=this._objects.length;r'];for(var n=0,r=this._objects.length;n"),e?e(t.join("")):t.join("")},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','");if(this.stroke||this.strokeDashArray){var n=this.fill;this.fill=null,t.push("'),this.fill=n}return t.push(""),e?e(t.join("")):t.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this._element=this._originalElement,e&&e();return}var t=this._originalElement,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;return n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height,fabric.isLikelyNode?(r.src=n.toBuffer(undefined,fabric.Image.pngCompression),i._element=r,e&&e()):(r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png")),this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e),this._element.crossOrigin=this.crossOrigin},_initFilters:function(e,t){e.filters&&e.filters.length?fabric.util.enlivenObjects(e.filters,function(e){t&&t(e)},"fabric.Image.filters"):t&&t()},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){fabric.Image.prototype._initFilters.call(e,e,function(r){e.filters=r||[];var i=new fabric.Image(n,e);t&&t(i)})},null,e.crossOrigin)},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))},null,n&&n.crossOrigin)},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0,fabric.Image.pngCompression=1}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.BaseFilter=fabric.util.createClass({type:"BaseFilter",toObject:function(){return{type:this.type}},toJSON:function(){return this.toObject()}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend;t.Image.filters.Brightness=t.util.createClass(t.Image.filters.BaseFilter,{type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;sa||C<0||C>u)continue;var k=(N*u+C)*4,L=t[x*i+T];b+=o[k]*L,w+=o[k+1]*L,E+=o[k+2]*L,S+=o[k+3]*L}h[y]=b,h[y+1]=w,h[y+2]=E,h[y+3]=S+p*(255-S)}n.putImageData(c,0,0)},toObject:function(){return n(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),t.Image.filters.Convolute.fromObject=function(e){return new t.Image.filters.Convolute(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend;t.Image.filters.GradientTransparency=t.util.createClass(t.Image.filters.BaseFilter,{type:"GradientTransparency",initialize:function(e){e=e||{},this.threshold=e.threshold||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.threshold,s=r.length;for(var o=0,u=r.length;o-1?e.channel:0},applyTo:function(e){if(!this.mask)return;var n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=r.data,s=this.mask.getElement(),o=t.util.createCanvasElement(),u=this.channel,a,f=r.width*r.height*4;o.width=s.width,o.height=s.height,o.getContext("2d").drawImage(s,0,0,s.width,s.height);var l=o.getContext("2d").getImageData(0,0,s.width,s.height),c=l.data;for(a=0;ao&&f>o&&l>o&&u(a-f)'},_render:function(e){var t=this.group&&this.group.type==="path-group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaNative:function(e){var n=this.text.split(this._reNewline);this.transform(e,t.isLikelyNode),this._setTextStyles(e),this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this.clipTo&&t.util.clipContext(this,e),this._renderTextBackground(e,n),this._translateForTextAlign(e),this._renderText(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this.clipTo&&e.restore(),this._setBoundaries(e,n),this._totalLineHeight=0},_renderText:function(e,t){e.save(),this._setShadow(e),this._renderTextFill(e,t),this._renderTextStroke(e,t),this._removeShadow(e),e.restore()},_translateForTextAlign:function(e){this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0))},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_renderChars:function(e,t,n,r,i){t[e](n,r,i)},_renderTextLine:function(e,t,n,r,i,s){i-=this.fontSize/4;if(this.textAlign!=="justify"){this._renderChars(e,t,n,r,i,s);return}var o=t.measureText(n).width,u=this.width;if(u>o){var a=n.split(/\s+/),f=t.measureText(n.replace(/\s+/g,"")).width,l=u-f,c=a.length-1,h=l/c,p=0;for(var d=0,v=a.length;d-1&&i(this.fontSize*this.lineHeight),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize*this.lineHeight-this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(this.fontSize*this.lineHeight-this.fontSize)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(e,t){if(!this.visible)return;e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){var t=n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textAlign:this.textAlign,path:this.path,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=[],n=this.text.split(this._reNewline),r=this._getSVGLeftTopOffsets(n),i=this._getSVGTextAndBg(r.lineTop,r.textLeft,n),s=this._getSVGShadows(r.lineTop,n);return r.textTop+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,this._wrapSVGTextAndBg(t,i,s,r),e?e(t.join("")):t.join("")},_getSVGLeftTopOffsets:function(e){var t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight;return{textLeft:n,textTop:r,lineTop:t}},_wrapSVGTextAndBg:function(e,t,n,r){e.push('',t.textBgRects.join(""),"',n.join(""),t.textSpans.join(""),"","")},_getSVGShadows:function(e,n){var r=[],s,o,u=1;if(!this.shadow||!this._boundaries)return r;for(s=0,o=n.length;s",t.util.string.escapeXml(n[s]),""),u=1}else u++;return r},_getSVGTextAndBg:function(e,t,n){var r=[],i=[],s=1;this._setSVGBg(i);for(var o=0,u=n.length;o",t.util.string.escapeXml(e),"")},_setSVGTextLineBg:function(e,t,n,r){e.push("')},_setSVGBg:function(e){this.backgroundColor&&this._boundaries&&e.push("')},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),function(){var e=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,_skipFillStrokeCheck:!0,_reSpace:/\s|\n/,_fontSizeFraction:4,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,_charWidthsCache:{},initialize:function(e,t){this.styles=t?t.styles||{}:{},this.callSuper("initialize",e,t),this.initBehavior(),fabric.IText.instances.push(this),this.__lineWidths={},this.__lineHeights={},this.__lineOffsets={}},isEmptyStyles:function(){if(!this.styles)return!0;var e=this.styles;for(var t in e)for(var n in e[t])for(var r in e[t][n])return!1;return!0},setSelectionStart:function(e){this.selectionStart=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionStart=e)},setSelectionEnd:function(e){this.selectionEnd=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionEnd=e)},getSelectionStyles:function(e,t){if(arguments.length===2){var n=[];for(var r=e;r-1&&this._renderCharDecorationAtOffset(e,n,r+this.fontSize/this._fontSizeFraction,i,0,this.fontSize/20),u.indexOf("line-through")>-1&&this._renderCharDecorationAtOffset(e,n,r+this.fontSize/this._fontSizeFraction,i,o/2,a/20),u.indexOf("overline")>-1&&this._renderCharDecorationAtOffset(e,n,r,i,s-this.fontSize/this._fontSizeFraction,this.fontSize/20)},_renderCharDecorationAtOffset:function(e,t,n,r,i,s){e.fillRect(t,n-i,r,s)},_renderTextLine:function(e,t,n,r,i,s){i+=this.fontSize/4,this.callSuper("_renderTextLine",e,t,n,r,i,s)},_renderTextDecoration:function(e,t){if(this.isEmptyStyles())return this.callSuper("_renderTextDecoration",e,t)},_renderTextLinesBackground:function(e,t){if(!this.textBackgroundColor&&!this.styles)return;e.save(),this.textBackgroundColor&&(e.fillStyle=this.textBackgroundColor);var n=0,r=this.fontSize/this._fontSizeFraction;for(var i=0,s=t.length;in&&(n=s)}return n},_getHeightOfLine:function(e,t,n){n=n||this.text.split(this._reNewline);var r=this._getHeightOfChar(e,n[t][0],t,0),i=n[t],s=i.split("");for(var o=1,u=s.length;or&&(r=a)}return r*this.lineHeight},_getTextHeight:function(e,t){var n=0;for(var r=0,i=t.length;r-1)t++,n--;return e-t},findWordBoundaryRight:function(e){var t=0,n=e;if(this._reSpace.test(this.text.charAt(n)))while(this._reSpace.test(this.text.charAt(n)))t++,n++;while(/\S/.test(this.text.charAt(n))&&n-1)t++,n--;return e-t},findLineBoundaryRight:function(e){var t=0,n=e;while(!/\n/.test(this.text.charAt(n))&&n0&&nr;s?this.removeStyleObject(s,n+1):this.removeStyleObject(this.get2DCursorLocation(n).charIndex===0,n)}this.text=this.text.slice(0,e)+this.text.slice(t)},insertChars:function(e){var t=this.text.slice(this.selectionStart,this.selectionStart+1)==="\n";this.text=this.text.slice(0,this.selectionStart)+e+this.text.slice(this.selectionEnd),this.selectionStart===this.selectionEnd?this.insertStyleObjects(e,t,this.copiedStyles):this.selectionEnd-this.selectionStart>1&&console.log("replacing MORE than 1 char"),this.selectionStart+=e.length,this.selectionEnd=this.selectionStart,this.canvas&&this.canvas.renderAll().renderAll(),this.setCoords(),this.fire("text:changed")},insertNewlineStyleObject:function(t,n,r){this.shiftLineStyles(t,1),this.styles[t+1]||(this.styles[t+1]={});var i=this.styles[t][n-1],s={};if(r)s[0]=e(i),this.styles[t+1]=s;else{for(var o in this.styles[t])parseInt(o,10)>=n&&(s[parseInt(o,10)-n]=this.styles[t][o],delete this.styles[t][o]);this.styles[t+1]=s}},insertCharStyleObject:function(t,n,r){var i=this.styles[t],s=e(i);n===0&&!r&&(n=1);for(var o in s){var u=parseInt(o,10);u>=n&&(i[u+1]=s[u])}this.styles[t][n]=r||e(i[n-1])},insertStyleObjects:function(e,t,n){if(this.isEmptyStyles())return;var r=this.get2DCursorLocation(),i=r.lineIndex,s=r.charIndex;this.styles[i]||(this.styles[i]={}),e==="\n"?this.insertNewlineStyleObject(i,s,t):n?this._insertStyles(n):this.insertCharStyleObject(i,s)},_insertStyles:function(e){for(var t=0,n=e.length;tt&&(this.styles[s+n]=r[s])}},removeStyleObject:function(t,n){var r=this.get2DCursorLocation(n),i=r.lineIndex,s=r.charIndex;if(t){var o=this.text.split(this._reNewline),u=o[i-1],a=u.length;this.styles[i-1]||(this.styles[i-1]={});for(s in this.styles[i])this.styles[i-1][parseInt(s,10)+a]=this.styles[i][s];this.shiftLineStyles(i,-1)}else{var f=this.styles[i];if(f){var l=this.selectionStart===this.selectionEnd?-1:0;delete f[s+l]}var c=e(f);for(var h in c){var p=parseInt(h,10);p>=s&&p!==0&&(f[p-1]=c[p],delete f[p])}}},insertNewline:function(){this.insertChars("\n")}})}(),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(e){this.__newClickTime=+(new Date);var t=this.canvas.getPointer(e.e);this.isTripleClick(t)?(this.fire("tripleclick",e),this._stopEvent(e.e)):this.isDoubleClick(t)&&(this.fire("dblclick",e),this._stopEvent(e.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=t},isDoubleClick:function(e){return this.__newClickTime-this.__lastClickTime<500&&this.__lastPointer.x===e.x&&this.__lastPointer.y===e.y},isTripleClick:function(e){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===e.x&&this.__lastPointer.y===e.y},_stopEvent:function(e){e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation()},initCursorSelectionHandlers:function(){this.initSelectedHandler(),this.initMousedownHandler(),this.initMousemoveHandler(),this.initMouseupHandler(),this.initClicks()},initClicks:function(){this.on("dblclick",function(e){this.selectWord(this.getSelectionStartFromPointer(e.e))}),this.on("tripleclick",function(e){this.selectLine(this.getSelectionStartFromPointer(e.e))})},initMousedownHandler:function(){this.on("mousedown",function(e){var t=this.canvas.getPointer(e.e);this.__mousedownX=t.x,this.__mousedownY=t.y,this.__isMousedown=!0,this.hiddenTextarea&&this.canvas&&this.canvas.wrapperEl.appendChild(this.hiddenTextarea),this.isEditing?(this.setCursorByClick(e.e),this.__selectionStartOnMouseDown=this.selectionStart):this.exitEditingOnOthers()})},initMousemoveHandler:function(){this.on("mousemove",function(e){if(!this.__isMousedown||!this.isEditing)return;var t=this.getSelectionStartFromPointer(e.e);t>=this.__selectionStartOnMouseDown?(this.setSelectionStart(this.__selectionStartOnMouseDown),this.setSelectionEnd(t)):(this.setSelectionStart(t),this.setSelectionEnd(this.__selectionStartOnMouseDown))})},_isObjectMoved:function(e){var t=this.canvas.getPointer(e);return this.__mousedownX!==t.x||this.__mousedownY!==t.y},initMouseupHandler:function(){this.on("mouseup",function(e){this.__isMousedown=!1;if(this._isObjectMoved(e.e))return;this.selected&&this.enterEditing()})},setCursorByClick:function(e){var t=this.getSelectionStartFromPointer(e);e.shiftKey?ts?0:1,a=r+u;return this.flipX&&(a=i-a),a>this.text.length&&(a=this.text.length),a}}),fabric.util.object.extend(fabric.IText.prototype,{initKeyHandlers:function(){fabric.util.addListener(fabric.document,"keydown",this.onKeyDown.bind(this)),fabric.util.addListener(fabric.document,"keypress",this.onKeyPress.bind(this))},initHiddenTextarea:function(){this.hiddenTextarea=fabric.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.style.cssText="position: absolute; top: 0; left: -9999px",fabric.document.body.appendChild(this.hiddenTextarea)},_keysMap:{8:"removeChars",13:"insertNewline",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown",46:"forwardDelete"},_ctrlKeysMap:{65:"selectAll",67:"copy",86:"paste",88:"cut"},onKeyDown:function(e){if(!this.isEditing)return;if(e.keyCode in this._keysMap)this[this._keysMap[e.keyCode]](e);else{if(!(e.keyCode in this._ctrlKeysMap&&(e.ctrlKey||e.metaKey)))return;this[this._ctrlKeysMap[e.keyCode]](e)}e.preventDefault(),e.stopPropagation(),this.canvas&&this.canvas.renderAll()},forwardDelete:function(e){this.selectionStart===this.selectionEnd&&this.moveCursorRight(e),this.removeChars(e)},copy:function(){var e=this.getSelectedText();this.copiedText=e,this.copiedStyles=this.getSelectionStyles(this.selectionStart,this.selectionEnd)},paste:function(){this.copiedText&&this.insertChars(this.copiedText)},cut:function(e){this.copy(),this.removeChars(e)},onKeyPress:function(e){if(!this.isEditing||e.metaKey||e.ctrlKey||e.keyCode===8||e.keyCode===13)return;this.insertChars(String.fromCharCode(e.which)),e.preventDefault(),e.stopPropagation()},getDownCursorOffset:function(e,t){var n=t?this.selectionEnd:this.selectionStart,r=this.text.split(this._reNewline),i,s,o=this.text.slice(0,n),u=this.text.slice(n),a=o.slice(o.lastIndexOf("\n")+1),f=u.match(/(.*)\n?/)[1],l=(u.match(/.*\n(.*)\n?/)||{})[1]||"",c=this.get2DCursorLocation(n);if(c.lineIndex===r.length-1||e.metaKey)return this.text.length-n;var h=this._getWidthOfLine(this.ctx,c.lineIndex,r);s=this._getLineLeftOffset(h);var p=s,d=c.lineIndex;for(var v=0,m=a.length;vn){f=!0;var d=u-p,v=u,m=Math.abs(d-n),g=Math.abs(v-n);a=gthis.text.length&&(this.selectionStart=this.text.length),this.selectionEnd=this.selectionStart},moveCursorDownWithShift:function(e){if(this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd){this.selectionStart+=e,this._selectionDirection="left";return}this._selectionDirection="right",this.selectionEnd+=e,this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length)},getUpCursorOffset:function(e,t){var n=t?this.selectionEnd:this.selectionStart,r=this.get2DCursorLocation(n);if(r.lineIndex===0||e.metaKey)return n;var i=this.text.slice(0,n),s=i.slice(i.lastIndexOf("\n")+1),o=(i.match(/\n?(.*)\n.*$/)||{})[1]||"",u=this.text.split(this._reNewline),a,f,l=this._getWidthOfLine(this.ctx,r.lineIndex,u);f=this._getLineLeftOffset(l);var c=f,h=r.lineIndex;for(var p=0,d=s.length;pn){f=!0;var d=u-p,v=u,m=Math.abs(d-n),g=Math.abs(v-n);a=g=this.text.length&&this.selectionEnd>=this.text.length)return;this.abortCursorAnimation(),this._currentCursorOpacity=1,e.shiftKey?this.moveCursorRightWithShift(e):this.moveCursorRightWithoutShift(e),this.initDelayedCursor()},moveCursorRightWithShift:function(e){this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd?this._moveRight(e,"selectionStart"):(this._selectionDirection="right",this._moveRight(e,"selectionEnd"),this.text.charAt(this.selectionEnd-1)==="\n"&&this.selectionEnd++,this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length))},moveCursorRightWithoutShift:function(e){this._selectionDirection="right",this.selectionStart===this.selectionEnd?(this._moveRight(e,"selectionStart"),this.selectionEnd=this.selectionStart):(this.selectionEnd+=this.getNumNewLinesInSelectedText(),this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length),this.selectionStart=this.selectionEnd)},removeChars:function(e){this.selectionStart===this.selectionEnd?this._removeCharsNearCursor(e):this._removeCharsFromTo(this.selectionStart,this.selectionEnd),this.selectionEnd=this.selectionStart,this._removeExtraneousStyles(),this.canvas&&this.canvas.renderAll().renderAll(),this.setCoords(),this.fire("text:changed")},_removeCharsNearCursor:function(e){if(this.selectionStart!==0)if(e.metaKey){var t=this.findLineBoundaryLeft(this.selectionStart);this._removeCharsFromTo(t,this.selectionStart),this.selectionStart=t}else if(e.altKey){var n=this.findWordBoundaryLeft(this.selectionStart);this._removeCharsFromTo(n,this.selectionStart),this.selectionStart=n}else{var r=this.text.slice(this.selectionStart-1,this.selectionStart)==="\n";this.removeStyleObject(r),this.selectionStart--,this.text=this.text.slice(0,this.selectionStart)+this.text.slice(this.selectionStart+1)}}}),fabric.util.object.extend(fabric.IText.prototype,{_setSVGTextLineText:function(e,t,n,r,i,s){this.styles[t]?this._setSVGTextLineChars(e,t,n,r,i,s):this.callSuper("_setSVGTextLineText",e,t,n,r,i)},_setSVGTextLineChars:function(e,t,n,r,i,s){var o=t===0||this.useNative?"y":"dy",u=e.split(""),a=0,f=this._getSVGLineLeftOffset(t),l=this._getSVGLineTopOffset(t),c=this._getHeightOfLine(this.ctx,t);for(var h=0,p=u.length;h'].join("")},_createTextCharSpan:function(e,t,n,r,i,s){var o=this.getSvgStyles.call(fabric.util.object.extend({visible:!0,fill:this.fill,stroke:this.stroke,type:"text"},t));return['',fabric.util.string.escapeXml(e),""].join("")}}),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs");n.readFile(e,function(e,n){if(e)throw fabric.log(e),e;t(n)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&(e instanceof Buffer||e.indexOf("data")===0)?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e?request(e,"binary",r):t&&t.call(n,e)},fabric.loadSVGFromURL=function(e,t,n){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t,n)}):request(e,"",function(e){fabric.loadSVGFromString(e,t,n)})},fabric.loadSVGFromString=function(e,t,n){var r=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(r.documentElement,function(e,n){t&&t(e,n)},n)},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e,function(e){r.filters=e||[],t&&t(r)})})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file +/* build: `node build.js modules=ALL exclude=gestures,cufon,json minifier=uglifyjs` *//*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"1.3.12"};typeof exports!="undefined"&&(exports.fabric=fabric),typeof document!="undefined"&&typeof window!="undefined"?(fabric.document=document,fabric.window=window):(fabric.document=require("jsdom").jsdom(""),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined",fabric.SHARED_ATTRIBUTES=["transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width"],function(){function e(e,t){if(!this.__eventListeners[e])return;t?fabric.util.removeFromArray(this.__eventListeners[e],t):this.__eventListeners[e].length=0}function t(e,t){this.__eventListeners||(this.__eventListeners={});if(arguments.length===1)for(var n in e)this.on(n,e[n]);else this.__eventListeners[e]||(this.__eventListeners[e]=[]),this.__eventListeners[e].push(t);return this}function n(t,n){if(!this.__eventListeners)return;if(arguments.length===0)this.__eventListeners={};else if(arguments.length===1&&typeof arguments[0]=="object")for(var r in t)e.call(this,r,t[r]);else e.call(this,t,n);return this}function r(e,t){if(!this.__eventListeners)return;var n=this.__eventListeners[e];if(!n)return;for(var r=0,i=n.length;r-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)}},function(e){var t=Math.sqrt,n=Math.atan2,r=Math.PI/180;fabric.util={removeFromArray:function(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e},getRandomInt:function(e,t){return Math.floor(Math.random()*(t-e+1))+e},degreesToRadians:function(e){return e*r},radiansToDegrees:function(e){return e/r},rotatePoint:function(e,t,n){var r=Math.sin(n),i=Math.cos(n);e.subtractEquals(t);var s=e.x*i-e.y*r,o=e.x*r+e.y*i;return(new fabric.Point(s,o)).addEquals(t)},toFixed:function(e,t){return parseFloat(Number(e).toFixed(t))},falseFunction:function(){return!1},getKlass:function(e,t){return e=fabric.util.string.camelize(e.charAt(0).toUpperCase()+e.slice(1)),fabric.util.resolveNamespace(t)[e]},resolveNamespace:function(t){if(!t)return fabric;var n=t.split("."),r=n.length,i=e||fabric.window;for(var s=0;s1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r},populateWithProperties:function(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),e[d?"lineTo":"moveTo"](r,0),d=!d;e.restore()},createCanvasElement:function(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e},createImage:function(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")},createAccessors:function(e){var t=e.prototype;for(var n=t.stateProperties.length;n--;){var r=t.stateProperties[n],i=r.charAt(0).toUpperCase()+r.slice(1),s="set"+i,o="get"+i;t[o]||(t[o]=function(e){return new Function('return this.get("'+e+'")')}(r)),t[s]||(t[s]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(r))}},clipContext:function(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()},multiplyTransformMatrices:function(e,t){var n=[[e[0],e[2],e[4]],[e[1],e[3],e[5]],[0,0,1]],r=[[t[0],t[2],t[4]],[t[1],t[3],t[5]],[0,0,1]],i=[];for(var s=0;s<3;s++){i[s]=[];for(var o=0;o<3;o++){var u=0;for(var a=0;a<3;a++)u+=n[s][a]*r[a][o];i[s][o]=u}}return[i[0][0],i[1][0],i[0][1],i[1][1],i[0][2],i[1][2]]},getFunctionBody:function(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]},normalizePoints:function(e,t){var n=fabric.util.array.min(e,"x"),r=fabric.util.array.min(e,"y");n=n<0?n:0,r=n<0?r:0;for(var i=0,s=e.length;i0&&(t>r?t-=r:t=0,n>r?n-=r:n=0);var i=!0,s=e.getImageData(t,n,r*2||1,r*2||1);for(var o=3,u=s.data.length;o0&&f===0&&(E-=2*Math.PI);var S=Math.ceil(Math.abs(E/(Math.PI*.5+.001))),x=[];for(var T=0;T1&&(h=Math.sqrt(h),t*=h,n*=h);var p=f/t,d=a/t,v=-a/n,m=f/n;return{x0:p*r+d*i,y0:v*r+m*i,x1:p*s+d*o,y1:v*s+m*o,sin_th:a,cos_th:f}}function o(e,i,s,o,u,a,f,l){r=n.call(arguments);if(t[r])return t[r];var c=l*u,h=-f*a,p=f*u,d=l*a,v=.5*(o-s),m=8/3*Math.sin(v*.5)*Math.sin(v*.5)/Math.sin(v),g=e+Math.cos(s)-m*Math.sin(s),y=i+Math.sin(s)+m*Math.cos(s),b=e+Math.cos(o),w=i+Math.sin(o),E=b+m*Math.sin(o),S=w-m*Math.cos(o);return t[r]=[c*g+h*y,p*g+d*y,c*E+h*S,p*E+d*S,c*b+h*w,p*b+d*w],t[r]}var e={},t={},n=Array.prototype.join,r;fabric.util.drawArc=function(e,t,n,r){var s=r[0],u=r[1],a=r[2],f=r[3],l=r[4],c=r[5],h=r[6],p=i(c,h,s,u,f,l,a,t,n);for(var d=0;d=t})}function r(e,t){return i(e,t,function(e,t){return e>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(t){var n=this.constructor.superclass.prototype[t];return arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this)}function o(){function u(){this.initialize.apply(this,arguments)}var n=null,o=e.call(arguments,0);typeof o[0]=="function"&&(n=o.shift()),u.superclass=n,u.subclasses=[],n&&(i.prototype=n.prototype,u.prototype=new i,n.subclasses.push(u));for(var a=0,f=o.length;a-1?e.prototype[i]=function(e){return function(){var n=this.constructor.superclass;this.constructor.superclass=r;var i=t[e].apply(this,arguments);this.constructor.superclass=n;if(e!=="initialize")return i}}(i):e.prototype[i]=t[i],n&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};fabric.util.createClass=o}(),function(){function t(e){var t=Array.prototype.slice.call(arguments,1),n,r,i=t.length;for(r=0;r-1?s(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if(r==="opacity")s(e,t[r]);else{var i=r==="float"||r==="cssFloat"?typeof n.styleFloat=="undefined"?"cssFloat":"styleFloat":r;n[i]=t[r]}return e}var t=fabric.document.createElement("div"),n=typeof t.style.opacity=="string",r=typeof t.style.filter=="string",i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(e){return e};n?s=function(e,t){return e.style.opacity=t,e}:r&&(s=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+t*100+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+t*100+")",e}),fabric.util.setStyle=e}(),function(){function t(e){return typeof e=="string"?fabric.document.getElementById(e):e}function s(e,t){var n=fabric.document.createElement(e);for(var r in t)r==="class"?n.className=t[r]:r==="for"?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function o(e,t){(" "+e.className+" ").indexOf(" "+t+" ")===-1&&(e.className+=(e.className?" ":"")+t)}function u(e,t,n){return typeof t=="string"&&(t=s(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t}function a(e,t){var n,r,i=0,s=0,o=fabric.document.documentElement,u=fabric.document.body||{scrollLeft:0,scrollTop:0};r=e;while(e&&e.parentNode&&!n)e=e.parentNode,e!==fabric.document&&fabric.util.getElementStyle(e,"position")==="fixed"&&(n=e),e!==fabric.document&&r!==t&&fabric.util.getElementStyle(e,"position")==="absolute"?(i=0,s=0):e===fabric.document?(i=u.scrollLeft||o.scrollLeft||0,s=u.scrollTop||o.scrollTop||0):(i+=e.scrollLeft||0,s+=e.scrollTop||0);return{left:i,top:s}}function f(e){var t,n={left:0,top:0},r=e&&e.ownerDocument,i={left:0,top:0},s,o={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!r)return{left:0,top:0};for(var u in o)i[o[u]]+=parseInt(l(e,u),10)||0;return t=r.documentElement,typeof e.getBoundingClientRect!="undefined"&&(n=e.getBoundingClientRect()),s=fabric.util.getScrollLeftTop(e,null),{left:n.left+s.left-(t.clientLeft||0)+i.left,top:n.top+s.top-(t.clientTop||0)+i.top}}function l(e,t){e.style||(e.style={});if(fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle)return fabric.document.defaultView.getComputedStyle(e,null)[t];var n=e.style[t];return!n&&e.currentStyle&&(n=e.currentStyle[t]),n}var e=Array.prototype.slice,n=function(t){return e.call(t,0)},r;try{r=n(fabric.document.childNodes)instanceof Array}catch(i){}r||(n=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t}),function(){function n(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=fabric.util.falseFunction),t?e.style[t]="none":typeof e.unselectable=="string"&&(e.unselectable="on"),e}function r(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=null),t?e.style[t]="":typeof e.unselectable=="string"&&(e.unselectable=""),e}var e=fabric.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=n,fabric.util.makeElementSelectable=r}(),function(){function e(e,t){var n=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),i=!0;r.onload=r.onreadystatechange=function(e){if(i){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;i=!1,t(e||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=e,n.appendChild(r)}fabric.util.getScript=e}(),fabric.util.getById=t,fabric.util.toArray=n,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getScrollLeftTop=a,fabric.util.getElementOffset=f,fabric.util.getElementStyle=l}(),function(){function e(e,t){return e+(/\?/.test(e)?"&":"?")+t}function n(){}function r(r,i){i||(i={});var s=i.method?i.method.toUpperCase():"GET",o=i.onComplete||function(){},u=t(),a;return u.onreadystatechange=function(){u.readyState===4&&(o(u),u.onreadystatechange=n)},s==="GET"&&(a=null,typeof i.parameters=="string"&&(r=e(r,i.parameters))),u.open(s,r,!0),(s==="POST"||s==="PUT")&&u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),u.send(a),u}var t=function(){var e=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}];for(var t=e.length;t--;)try{var n=e[t]();if(n)return e[t]}catch(r){}}();fabric.util.request=r}(),fabric.log=function(){},fabric.warn=function(){},typeof console!="undefined"&&["log","warn"].forEach(function(e){typeof console[e]!="undefined"&&console[e].apply&&(fabric[e]=function(){return console[e].apply(console,arguments)})}),function(){function e(e){n(function(t){e||(e={});var r=t||+(new Date),i=e.duration||500,s=r+i,o,u=e.onChange||function(){},a=e.abort||function(){return!1},f=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},l="startValue"in e?e.startValue:0,c="endValue"in e?e.endValue:100,h=e.byValue||c-l;e.onStart&&e.onStart(),function p(t){o=t||+(new Date);var c=o>s?i:o-r;if(a()){e.onComplete&&e.onComplete();return}u(f(c,l,h,i));if(o>s){e.onComplete&&e.onComplete();return}n(p)}(r)})}var t=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)},n=function(){return t.apply(fabric.window,arguments)};fabric.util.animate=e,fabric.util.requestAnimFrame=n}(),function(){function e(e,t,n,r){return e','')}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s=t.util.toFixed,o=t.util.multiplyTransformMatrices,u={"fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight",cx:"left",x:"left",r:"radius","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration",cy:"top",y:"top",transform:"transformMatrix"},a={stroke:"strokeOpacity",fill:"fillOpacity"};t.parseTransformAttribute=function(){function e(e,t){var n=t[0];e[0]=Math.cos(n),e[1]=Math.sin(n),e[2]=-Math.sin(n),e[3]=Math.cos(n)}function n(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function r(e,t){e[2]=t[0]}function i(e,t){e[1]=t[0]}function s(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var o=[1,0,0,1,0,0],u="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",a="(?:\\s+,?\\s*|,\\s*)",f="(?:(skewX)\\s*\\(\\s*("+u+")\\s*\\))",l="(?:(skewY)\\s*\\(\\s*("+u+")\\s*\\))",c="(?:(rotate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+")"+a+"("+u+"))?\\s*\\))",h="(?:(scale)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",p="(?:(translate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",d="(?:(matrix)\\s*\\(\\s*("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+"\\s*\\))",v="(?:"+d+"|"+p+"|"+h+"|"+c+"|"+f+"|"+l+")",m="(?:"+v+"(?:"+a+v+")*"+")",g="^\\s*(?:"+m+"?)\\s*$",y=new RegExp(g),b=new RegExp(v,"g");return function(u){var a=o.concat(),f=[];if(!u||u&&!y.test(u))return a;u.replace(b,function(t){var u=(new RegExp(v)).exec(t).filter(function(e){return e!==""&&e!=null}),l=u[1],c=u.slice(2).map(parseFloat);switch(l){case"translate":s(a,c);break;case"rotate":e(a,c);break;case"scale":n(a,c);break;case"skewX":r(a,c);break;case"skewY":i(a,c);break;case"matrix":a=c}f.push(a.concat()),a=o.concat()});var l=f[0];while(f.length>1)f.shift(),l=t.util.multiplyTransformMatrices(l,f[0]);return l}}(),t.parseSVGDocument=function(){function s(e,t){while(e&&(e=e.parentNode))if(t.test(e.nodeName))return!0;return!1}var e=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/,n="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",r=new RegExp("^\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*"+"$");return function(n,o,u){if(!n)return;var a=new Date,f=t.util.toArray(n.getElementsByTagName("*"));if(f.length===0){f=n.selectNodes("//*[name(.)!='svg']");var l=[];for(var c=0,h=f.length;c-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){m.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),m.has(e,function(r){r?m.get(e,function(e){var t=g(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})},loadSVGFromString:function(e,n,r){e=e.trim();var i;if(typeof DOMParser!="undefined"){var s=new DOMParser;s&&s.parseFromString&&(i=s.parseFromString(e,"text/xml"))}else t.window.ActiveXObject&&(i=new ActiveXObject("Microsoft.XMLDOM"),i.async="false",i.loadXML(e.replace(//i,"")));t.parseSVGDocument(i.documentElement,function(e,t){n(e,t)},r)},createSVGFontFacesMarkup:function(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t},createSVGRefElementsMarkup:function(e){var t=[];return y(t,e,"backgroundColor"),y(t,e,"overlayColor"),t.join("")}})}(typeof exports!="undefined"?exports:this),fabric.ElementsParser={parse:function(e,t,n,r){this.elements=e,this.callback=t,this.options=n,this.reviver=r,this.instances=new Array(e.length),this.numElements=e.length,this.createObjects()},createObjects:function(){for(var e=0,t=this.elements.length;ee.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,t){return new n(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},distanceFrom:function(e){var t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)},midPointFrom:function(e){return new n(this.x+(e.x-this.x)/2,this.y+(e.y-this.y)/2)},min:function(e){return new n(Math.min(this.x,e.x),Math.min(this.y,e.y))},max:function(e){return new n(Math.max(this.x,e.x),Math.max(this.y,e.y))},toString:function(){return this.x+","+this.y},setXY:function(e,t){this.x=e,this.y=t},setFromPoint:function(e){this.x=e.x,this.y=e.y},swap:function(e){var t=this.x,n=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=n}}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){this.status=e,this.points=[]}var t=e.fabric||(e.fabric={});if(t.Intersection){t.warn("fabric.Intersection is already defined");return}t.Intersection=n,t.Intersection.prototype={appendPoint:function(e){this.points.push(e)},appendPoints:function(e){this.points=this.points.concat(e)}},t.Intersection.intersectLineLine=function(e,r,i,s){var o,u=(s.x-i.x)*(e.y-i.y)-(s.y-i.y)*(e.x-i.x),a=(r.x-e.x)*(e.y-i.y)-(r.y-e.y)*(e.x-i.x),f=(s.y-i.y)*(r.x-e.x)-(s.x-i.x)*(r.y-e.y);if(f!==0){var l=u/f,c=a/f;0<=l&&l<=1&&0<=c&&c<=1?(o=new n("Intersection"),o.points.push(new t.Point(e.x+l*(r.x-e.x),e.y+l*(r.y-e.y)))):o=new n}else u===0||a===0?o=new n("Coincident"):o=new n("Parallel");return o},t.Intersection.intersectLinePolygon=function(e,t,r){var i=new n,s=r.length;for(var o=0;o0&&(i.status="Intersection"),i},t.Intersection.intersectPolygonPolygon=function(e,t){var r=new n,i=e.length;for(var s=0;s0&&(r.status="Intersection"),r},t.Intersection.intersectPolygonRectangle=function(e,r,i){var s=r.min(i),o=r.max(i),u=new t.Point(o.x,s.y),a=new t.Point(s.x,o.y),f=n.intersectLinePolygon(s,u,e),l=n.intersectLinePolygon(u,o,e),c=n.intersectLinePolygon(o,a,e),h=n.intersectLinePolygon(a,s,e),p=new n;return p.appendPoints(f.points),p.appendPoints(l.points),p.appendPoints(c.points),p.appendPoints(h.points),p.points.length>0&&(p.status="Intersection"),p}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){e?this._tryParsingColor(e):this.setSource([0,0,0,1])}function r(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var t=e.fabric||(e.fabric={});if(t.Color){t.warn("fabric.Color is already defined.");return}t.Color=n,t.Color.prototype={_tryParsingColor:function(e){var t;e in n.colorNameMap&&(e=n.colorNameMap[e]),t=n.sourceFromHex(e),t||(t=n.sourceFromRgb(e)),t||(t=n.sourceFromHsl(e)),t&&this.setSource(t)},_rgbToHsl:function(e,n,r){e/=255,n/=255,r/=255;var i,s,o,u=t.util.array.max([e,n,r]),a=t.util.array.min([e,n,r]);o=(u+a)/2;if(u===a)i=s=0;else{var f=u-a;s=o>.5?f/(2-u-a):f/(u+a);switch(u){case e:i=(n-r)/f+(n']:this.type==="radial"&&(r=["']);for(var i=0;i');return r.push(this.type==="linear"?"":""),r.join("")},toLive:function(e){var t;if(!this.type)return;this.type==="linear"?t=e.createLinearGradient(this.coords.x1,this.coords.y1,this.coords.x2,this.coords.y2):this.type==="radial"&&(t=e.createRadialGradient(this.coords.x1,this.coords.y1,this.coords.r1,this.coords.x2,this.coords.y2,this.coords.r2));for(var n=0,r=this.colorStops.length;n'+''+""},toLive:function(e){var t=typeof this.source=="function"?this.source():this.source;if(typeof t.src!="undefined"){if(!t.complete)return"";if(t.naturalWidth===0||t.naturalHeight===0)return""}return e.createPattern(t,this.repeat)}}),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Shadow){t.warn("fabric.Shadow is already defined.");return}t.Shadow=t.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,initialize:function(e){typeof e=="string"&&(e=this._parseShadow(e));for(var n in e)this[n]=e[n];this.id=t.Object.__uid++},_parseShadow:function(e){var n=e.trim(),r=t.Shadow.reOffsetsAndBlur.exec(n)||[],i=n.replace(t.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)";return{color:i.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(e){var t="SourceAlpha";return e&&(e.fill===this.color||e.stroke===this.color)&&(t="SourceGraphic"),''+''+''+""+""+''+""+""},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY};var e={},n=t.Shadow.prototype;return this.color!==n.color&&(e.color=this.color),this.blur!==n.blur&&(e.blur=this.blur),this.offsetX!==n.offsetX&&(e.offsetX=this.offsetX),this.offsetY!==n.offsetY&&(e.offsetY=this.offsetY),e}}),t.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/}(typeof exports!="undefined"?exports:this),function(){"use strict";if(fabric.StaticCanvas){fabric.warn("fabric.StaticCanvas is already defined.");return}var e=fabric.util.object.extend,t=fabric.util.getElementOffset,n=fabric.util.removeFromArray,r=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass({initialize:function(e,t){t||(t={}),this._initStatic(e,t),fabric.StaticCanvas.activeInstance=this},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!0,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!1,onBeforeScaleRotate:function(){},_initStatic:function(e,t){this._objects=[],this._createLowerCanvas(e),this._initOptions(t),t.overlayImage&&this.setOverlayImage(t.overlayImage,this.renderAll.bind(this)),t.backgroundImage&&this.setBackgroundImage(t.backgroundImage,this.renderAll.bind(this)),t.backgroundColor&&this.setBackgroundColor(t.backgroundColor,this.renderAll.bind(this)),t.overlayColor&&this.setOverlayColor(t.overlayColor,this.renderAll.bind(this)),this.calcOffset()},calcOffset:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(e,t,n){return this.__setBgOverlayImage("overlayImage",e,t,n)},setBackgroundImage:function(e,t,n){return this.__setBgOverlayImage("backgroundImage",e,t,n)},setOverlayColor:function(e,t){return this.__setBgOverlayColor("overlayColor",e,t)},setBackgroundColor:function(e,t){return this.__setBgOverlayColor("backgroundColor",e,t)},__setBgOverlayImage:function(e,t,n,r){return typeof t=="string"?fabric.util.loadImage(t,function(t){this[e]=new fabric.Image(t,r),n&&n()},this):(this[e]=t,n&&n()),this},__setBgOverlayColor:function(e,t,n){if(t.source){var r=this;fabric.util.loadImage(t.source,function(i){r[e]=new fabric.Pattern({source:i,repeat:t.repeat,offsetX:t.offsetX,offsetY:t.offsetY}),n&&n()})}else this[e]=t,n&&n();return this},_createCanvasElement:function(){var e=fabric.document.createElement("canvas");e.style||(e.style={});if(!e)throw r;return this._initCanvasElement(e),e},_initCanvasElement:function(e){fabric.util.createCanvasElement(e);if(typeof e.getContext=="undefined")throw r},_initOptions:function(e){for(var t in e)this[t]=e[t];this.width=parseInt(this.lowerCanvasEl.width,10)||0,this.height=parseInt(this.lowerCanvasEl.height,10)||0;if(!this.lowerCanvasEl.style)return;this.lowerCanvasEl.style.width=this.width+"px",this.lowerCanvasEl.style.height=this.height+"px"},_createLowerCanvas:function(e){this.lowerCanvasEl=fabric.util.getById(e)||this._createCanvasElement(),this._initCanvasElement(this.lowerCanvasEl),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(e){return this._setDimension("width",e)},setHeight:function(e){return this._setDimension("height",e)},setDimensions:function(e){for(var t in e)this._setDimension(t,e[t]);return this},_setDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.lowerCanvasEl.style[e]=t+"px",this.upperCanvasEl&&(this.upperCanvasEl[e]=t,this.upperCanvasEl.style[e]=t+"px"),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t+"px"),this[e]=t,this.calcOffset(),this.renderAll(),this},getElement:function(){return this.lowerCanvasEl},getActiveObject:function(){return null},getActiveGroup:function(){return null},_draw:function(e,t){if(!t)return;if(this.controlsAboveOverlay){var n=t.hasBorders,r=t.hasControls;t.hasBorders=t.hasControls=!1,t.render(e),t.hasBorders=n,t.hasControls=r}else t.render(e)},_onObjectAdded:function(e){this.stateful&&e.setupState(),e.setCoords(),e.canvas=this,this.fire("object:added",{target:e}),e.fire("added")},_onObjectRemoved:function(e){this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this._discardActiveObject(),this.fire("selection:cleared")),this.fire("object:removed",{target:e}),e.fire("removed")},clearContext:function(e){return e.clearRect(0,0,this.width,this.height),this},getContext:function(){return this.contextContainer},clear:function(){return this._objects.length=0,this.discardActiveGroup&&this.discardActiveGroup(),this.discardActiveObject&&this.discardActiveObject(),this.clearContext(this.contextContainer),this.contextTop&&this.clearContext(this.contextTop),this.fire("canvas:cleared"),this.renderAll(),this},renderAll:function(e){var t=this[e===!0&&this.interactive?"contextTop":"contextContainer"],n=this.getActiveGroup();return this.contextTop&&this.selection&&!this._groupSelector&&this.clearContext(this.contextTop),e||this.clearContext(t),this.fire("before:render"),this.clipTo&&fabric.util.clipContext(this,t),this._renderBackground(t),this._renderObjects(t,n),this._renderActiveGroup(t,n),this.clipTo&&t.restore(),this._renderOverlay(t),this.controlsAboveOverlay&&this.interactive&&this.drawControls(t),this.fire("after:render"),this},_renderObjects:function(e,t){for(var n=0,r=this._objects.length;n"),n.join("")},_setSVGPreamble:function(e,t){t.suppressPreamble||e.push('','\n')},_setSVGHeader:function(e,t){e.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),"")},_setSVGObjects:function(e,t){var n=this.getActiveGroup();n&&this.discardActiveGroup();for(var r=0,i=this.getObjects(),s=i.length;r"):this[t]&&t==="overlayColor"&&e.push('")},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e,t){var r=this._objects.indexOf(e);if(r!==0){var i=this._findNewLowerIndex(e,r,t);n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},_findNewLowerIndex:function(e,t,n){var r;if(n){r=t;for(var i=t-1;i>=0;--i){var s=e.intersectsWithObject(this._objects[i])||e.isContainedWithinObject(this._objects[i])||this._objects[i].isContainedWithinObject(e);if(s){r=i;break}}}else r=t-1;return r},bringForward:function(e,t){var r=this._objects.indexOf(e);if(r!==this._objects.length-1){var i=this._findNewUpperIndex(e,r,t);n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},_findNewUpperIndex:function(e,t,n){var r;if(n){r=t;for(var i=t+1;i"}}),e(fabric.StaticCanvas.prototype,fabric.Observable),e(fabric.StaticCanvas.prototype,fabric.Collection),e(fabric.StaticCanvas.prototype,fabric.DataURLExporter),e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(e){var t=fabric.util.createCanvasElement();if(!t||!t.getContext)return null;var n=t.getContext("2d");if(!n)return null;switch(e){case"getImageData":return typeof n.getImageData!="undefined";case"setLineDash":return typeof n.setLineDash!="undefined";case"toDataURL":return typeof t.toDataURL!="undefined";case"toDataURLWithQuality":try{return t.toDataURL("image/jpeg",0),!0}catch(r){}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",setShadow:function(e){return this.shadow=new fabric.Shadow(e),this},_setBrushStyles:function(){var e=this.canvas.contextTop;e.strokeStyle=this.color,e.lineWidth=this.width,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin},_setShadow:function(){if(!this.shadow)return;var e=this.canvas.contextTop;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_resetShadow:function(){var e=this.canvas.contextTop;e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0}}),function(){var e=fabric.util.array.min,t=fabric.util.array.max;fabric.PencilBrush=fabric.util.createClass(fabric.BaseBrush,{initialize:function(e){this.canvas=e,this._points=[]},onMouseDown:function(e){this._prepareForDrawing(e),this._captureDrawingPath(e),this._render()},onMouseMove:function(e){this._captureDrawingPath(e),this.canvas.clearContext(this.canvas.contextTop),this._render()},onMouseUp:function(){this._finalizeAndAddPath()},_prepareForDrawing:function(e){var t=new fabric.Point(e.x,e.y);this._reset(),this._addPoint(t),this.canvas.contextTop.moveTo(t.x,t.y)},_addPoint:function(e){this._points.push(e)},_reset:function(){this._points.length=0,this._setBrushStyles(),this._setShadow()},_captureDrawingPath:function(e){var t=new fabric.Point(e.x,e.y);this._addPoint(t)},_render:function(){var e=this.canvas.contextTop;e.beginPath();var t=this._points[0],n=this._points[1];this._points.length===2&&t.x===n.x&&t.y===n.y&&(t.x-=.5,n.x+=.5),e.moveTo(t.x,t.y);for(var r=1,i=this._points.length;rn.padding?e.x<0?e.x+=n.padding:e.x-=n.padding:e.x=0,i(e.y)>n.padding?e.y<0?e.y+=n.padding:e.y-=n.padding:e.y=0},_rotateObject:function(e,t){var i=this._currentTransform,s=this._offset;if(i.target.get("lockRotation"))return;var o=r(i.ey-i.top-s.top,i.ex-i.left-s.left),u=r(t-i.top-s.top,e-i.left-s.left),a=n(u-o+i.theta);a<0&&(a=360+a),i.target.angle=a},_setCursor:function(e){this.upperCanvasEl.style.cursor=e},_resetObjectTransform:function(e){e.scaleX=1,e.scaleY=1,e.setAngle(0)},_drawSelection:function(){var e=this.contextTop,t=this._groupSelector,n=t.left,r=t.top,o=i(n),u=i(r);e.fillStyle=this.selectionColor,e.fillRect(t.ex-(n>0?0:-n),t.ey-(r>0?0:-r),o,u),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var a=t.ex+s-(n>0?0:o),f=t.ey+s-(r>0?0:u);e.beginPath(),fabric.util.drawDashedLine(e,a,f,a+o,f,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f+u-1,a+o,f+u-1,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f,a,f+u,this.selectionDashArray),fabric.util.drawDashedLine(e,a+o-1,f,a+o-1,f+u,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+s-(n>0?0:o),t.ey+s-(r>0?0:u),o,u)},_isLastRenderedObject:function(e){return this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(e,this._offset)},findTarget:function(e,t){if(this.skipTargetFind)return;if(this._isLastRenderedObject(e))return this.lastRenderedObjectWithControlsAboveOverlay;var n=this.getActiveGroup();return n&&!t&&this.containsPoint(e,n)?n:this._searchPossibleTargets(e)},_searchPossibleTargets:function(e){var t=[],n,r=this.getPointer(e);for(var i=this._objects.length;i--;)if(this._objects[i]&&this._objects[i].visible&&this._objects[i].evented&&this.containsPoint(e,this._objects[i])){if(!this.perPixelTargetFind&&!this._objects[i].perPixelTargetFind){n=this._objects[i],this.relatedTarget=n;break}t[t.length]=this._objects[i]}for(var s=0,o=t.length;s1&&(t=new fabric.Group(t.reverse(),{originX:"center",originY:"center"}),this.setActiveGroup(t,e),t.saveCoords(),this.fire("selection:created",{target:t}),this.renderAll())},_collectObjects:function(){var n=[],r,i=this._groupSelector.ex,s=this._groupSelector.ey,o=i+this._groupSelector.left,u=s+this._groupSelector.top,a=new fabric.Point(e(i,o),e(s,u)),f=new fabric.Point(t(i,o),t(s,u)),l=i===o&&s===u;for(var c=this._objects.length;c--;){r=this._objects[c];if(!r||!r.selectable||!r.visible)continue;if(r.intersectsWithRect(a,f)||r.isContainedWithinRect(a,f)||r.containsPoint(a)||r.containsPoint(f)){r.set("active",!0),n.push(r);if(l)break}}return n},_maybeGroupObjects:function(e){this.selection&&this._groupSelector&&this._groupSelectedObjects(e);var t=this.getActiveGroup();t&&(t.setObjectsCoords().setCoords(),t.isMoving=!1,this._setCursor(this.defaultCursor)),this._groupSelector=null,this._currentTransform=null}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{toDataURL:function(e){e||(e={});var t=e.format||"png",n=e.quality||1,r=e.multiplier||1,i={left:e.left,top:e.top,width:e.width,height:e.height};return r!==1?this.__toDataURLWithMultiplier(t,n,i,r):this.__toDataURL(t,n,i)},__toDataURL:function(e,t,n){this.renderAll(!0);var r=this.upperCanvasEl||this.lowerCanvasEl,i=this.__getCroppedCanvas(r,n);e==="jpg"&&(e="jpeg");var s=fabric.StaticCanvas.supports("toDataURLWithQuality")?(i||r).toDataURL("image/"+e,t):(i||r).toDataURL("image/"+e);return this.contextTop&&this.clearContext(this.contextTop),this.renderAll(),i&&(i=null),s},__getCroppedCanvas:function(e,t){var n,r,i="left"in t||"top"in t||"width"in t||"height"in t;return i&&(n=fabric.util.createCanvasElement(),r=n.getContext("2d"),n.width=t.width||this.width,n.height=t.height||this.height,r.drawImage(e,-t.left||0,-t.top||0)),n},__toDataURLWithMultiplier:function(e,t,n,r){var i=this.getWidth(),s=this.getHeight(),o=i*r,u=s*r,a=this.getActiveObject(),f=this.getActiveGroup(),l=this.contextTop||this.contextContainer;this.setWidth(o).setHeight(u),l.scale(r,r),n.left&&(n.left*=r),n.top&&(n.top*=r),n.width&&(n.width*=r),n.height&&(n.height*=r),f?this._tempRemoveBordersControlsFromGroup(f):a&&this.deactivateAll&&this.deactivateAll(),this.renderAll(!0);var c=this.__toDataURL(e,t,n);return this.width=i,this.height=s,l.scale(1/r,1/r),this.setWidth(i).setHeight(s),f?this._restoreBordersControlsOnGroup(f):a&&this.setActiveObject&&this.setActiveObject(a),this.contextTop&&this.clearContext(this.contextTop),this.renderAll(),c},toDataURLWithMultiplier:function(e,t,n){return this.toDataURL({format:e,multiplier:t,quality:n})},_tempRemoveBordersControlsFromGroup:function(e){e.origHasControls=e.hasControls,e.origBorderColor=e.borderColor,e.hasControls=!0,e.borderColor="rgba(0,0,0,0)",e.forEachObject(function(e){e.origBorderColor=e.borderColor,e.borderColor="rgba(0,0,0,0)"})},_restoreBordersControlsOnGroup:function(e){e.hideControls=e.origHideControls,e.borderColor=e.origBorderColor,e.forEachObject(function(e){e.borderColor=e.origBorderColor,delete e.origBorderColor})}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{loadFromDatalessJSON:function(e,t,n){return this.loadFromJSON(e,t,n)},loadFromJSON:function(e,t,n){if(!e)return;var r=typeof e=="string"?JSON.parse(e):e;this.clear();var i=this;return this._enlivenObjects(r.objects,function(){i._setBgOverlay(r,t)},n),this},_setBgOverlay:function(e,t){var n=this,r={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(!e.backgroundImage&&!e.overlayImage&&!e.background&&!e.overlay){t&&t();return}var i=function(){r.backgroundImage&&r.overlayImage&&r.backgroundColor&&r.overlayColor&&(n.renderAll(),t&&t())};this.__setBgOverlay("backgroundImage",e.backgroundImage,r,i),this.__setBgOverlay("overlayImage",e.overlayImage,r,i),this.__setBgOverlay("backgroundColor",e.background,r,i),this.__setBgOverlay("overlayColor",e.overlay,r,i),i()},__setBgOverlay:function(e,t,n,r){var i=this;if(!t){n[e]=!0;return}e==="backgroundImage"||e==="overlayImage"?fabric.Image.fromObject(t,function(t){i[e]=t,n[e]=!0,r&&r()}):this["set"+fabric.util.string.capitalize(e,!0)](t,function(){n[e]=!0,r&&r()})},_enlivenObjects:function(e,t,n){var r=this;e.length===0&&t&&t();var i=this.renderOnAddRemove;this.renderOnAddRemove=!1,fabric.util.enlivenObjects(e,function(e){e.forEach(function(e,t){r.insertAt(e,t,!0)}),r.renderOnAddRemove=i,t&&t()},null,n)},_toDataURL:function(e,t){this.clone(function(n){t(n.toDataURL(e))})},_toDataURLWithMultiplier:function(e,t,n){this.clone(function(r){n(r.toDataURLWithMultiplier(e,t))})},clone:function(e,t){var n=JSON.stringify(this.toJSON(t));this.cloneWithoutData(function(t){t.loadFromJSON(n,function(){e&&e(t)})})},cloneWithoutData:function(e){var t=fabric.document.createElement("canvas");t.width=this.getWidth(),t.height=this.getHeight();var n=new fabric.Canvas(t);n.clipTo=this.clipTo,this.backgroundImage?(n.setBackgroundImage(this.backgroundImage.src,function(){n.renderAll(),e&&e(n)}),n.backgroundImageOpacity=this.backgroundImageOpacity,n.backgroundImageStretch=this.backgroundImageStretch):e&&e(n)}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.toFixed,i=t.util.string.capitalize,s=t.util.degreesToRadians,o=t.StaticCanvas.supports("setLineDash");if(t.Object)return;t.Object=t.util.createClass({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,cornerSize:12,transparentCorners:!0,hoverCursor:null,padding:0,borderColor:"rgba(102,153,255,0.75)",cornerColor:"rgba(102,153,255,0.5)",centeredScaling:!1,centeredRotation:!0,fill:"rgb(0,0,0)",fillRule:"source-over",backgroundColor:"",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,stateProperties:"top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeLineJoin strokeMiterLimit angle opacity fill fillRule shadow clipTo visible backgroundColor".split(" "),initialize:function(e){e&&this.setOptions(e)},_initGradient:function(e){e.fill&&e.fill.colorStops&&!(e.fill instanceof t.Gradient)&&this.set("fill",new t.Gradient(e.fill))},_initPattern:function(e){e.fill&&e.fill.source&&!(e.fill instanceof t.Pattern)&&this.set("fill",new t.Pattern(e.fill)),e.stroke&&e.stroke.source&&!(e.stroke instanceof t.Pattern)&&this.set("stroke",new t.Pattern(e.stroke))},_initClipping:function(e){if(!e.clipTo||typeof e.clipTo!="string")return;var n=t.util.getFunctionBody(e.clipTo);typeof n!="undefined"&&(this.clipTo=new Function("ctx",n))},setOptions:function(e){for(var t in e)this.set(t,e[t]);this._initGradient(e),this._initPattern(e),this._initClipping(e)},transform:function(e,t){e.globalAlpha=this.opacity;var n=t?this._getLeftTopCoords():this.getCenterPoint();e.translate(n.x,n.y),e.rotate(s(this.angle)),e.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(e){var n=t.Object.NUM_FRACTION_DIGITS,i={type:this.type,originX:this.originX,originY:this.originY,left:r(this.left,n),top:r(this.top,n),width:r(this.width,n),height:r(this.height,n),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:r(this.strokeWidth,n),strokeDashArray:this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeLineJoin:this.strokeLineJoin,strokeMiterLimit:r(this.strokeMiterLimit,n),scaleX:r(this.scaleX,n),scaleY:r(this.scaleY,n),angle:r(this.getAngle(),n),flipX:this.flipX,flipY:this.flipY,opacity:r(this.opacity,n),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,clipTo:this.clipTo&&String(this.clipTo),backgroundColor:this.backgroundColor};return this.includeDefaultValues||(i=this._removeDefaultValues(i)),t.util.populateWithProperties(this,i,e),i},toDatalessObject:function(e){return this.toObject(e)},_removeDefaultValues:function(e){var n=t.util.getKlass(e.type).prototype,r=n.stateProperties;return r.forEach(function(t){e[t]===n[t]&&delete e[t]}),e},toString:function(){return"#"},get:function(e){return this[e]},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"&&e!=="clipTo"?this._set(e,t(this.get(e))):this._set(e,t);return this},_set:function(e,n){var i=e==="scaleX"||e==="scaleY";return i&&(n=this._constrainScale(n)),e==="scaleX"&&n<0?(this.flipX=!this.flipX,n*=-1):e==="scaleY"&&n<0?(this.flipY=!this.flipY,n*=-1):e==="width"||e==="height"?this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2):e==="shadow"&&n&&!(n instanceof t.Shadow +)&&(n=new t.Shadow(n)),this[e]=n,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save(),this._transform(e,n),this._setStrokeStyles(e),this._setFillStyles(e);var r=this.transformMatrix;r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_transform:function(e,t){var n=this.transformMatrix;n&&!this.group&&e.setTransform(n[0],n[1],n[2],n[3],n[4],n[5]),t||this.transform(e)},_setStrokeStyles:function(e){this.stroke&&(e.lineWidth=this.strokeWidth,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,e.strokeStyle=this.stroke.toLive?this.stroke.toLive(e):this.stroke)},_setFillStyles:function(e){this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill)},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_renderFill:function(e){if(!this.fill)return;this.fill.toLive&&(e.save(),e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0)),e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke)return;e.save(),this.strokeDashArray?(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),o?(e.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(e)):this._renderDashedStroke&&this._renderDashedStroke(e),e.stroke()):this._stroke?this._stroke(e):e.stroke(),this._removeShadow(e),e.restore()},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){var n=this.toDataURL();return t.util.loadImage(n,function(n){e&&e(new t.Image(n))}),this},toDataURL:function(e){e||(e={});var n=t.util.createCanvasElement(),r=this.getBoundingRect();n.width=r.width,n.height=r.height,t.util.wrapElement(n,"div");var i=new t.Canvas(n);e.format==="jpg"&&(e.format="jpeg"),e.format==="jpeg"&&(i.backgroundColor="#fff");var s={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set("active",!1),this.setPositionByOrigin(new t.Point(n.width/2,n.height/2),"center","center");var o=this.canvas;i.add(this);var u=i.toDataURL(e);return this.set(s).setCoords(),this.canvas=o,i.dispose(),i=null,u},isType:function(e){return this.type===e},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}return this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){return this.set("fill",new t.Pattern(e))},setShadow:function(e){return this.set("shadow",new t.Shadow(e))},setColor:function(e){return this.set("fill",e),this},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.canvas.centerObject(this),this},remove:function(){return this.canvas.remove(this)},getLocalPointer:function(e,t){t=t||this.canvas.getPointer(e);var n=this.translateToOriginPoint(this.getCenterPoint(),"left","top");return{x:t.x-n.x,y:t.y-n.y}}}),t.util.createAccessors(t.Object),t.Object.prototype.rotate=t.Object.prototype.setAngle,n(t.Object.prototype,t.Observable),t.Object.NUM_FRACTION_DIGITS=2,t.Object.__uid=0}(typeof exports!="undefined"?exports:this),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{translateToCenterPoint:function(t,n,r){var i=t.x,s=t.y,o=this.stroke?this.strokeWidth:0;return n==="left"?i=t.x+(this.getWidth()+o*this.scaleX)/2:n==="right"&&(i=t.x-(this.getWidth()+o*this.scaleX)/2),r==="top"?s=t.y+(this.getHeight()+o*this.scaleY)/2:r==="bottom"&&(s=t.y-(this.getHeight()+o*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},translateToOriginPoint:function(t,n,r){var i=t.x,s=t.y,o=this.stroke?this.strokeWidth:0;return n==="left"?i=t.x-(this.getWidth()+o*this.scaleX)/2:n==="right"&&(i=t.x+(this.getWidth()+o*this.scaleX)/2),r==="top"?s=t.y-(this.getHeight()+o*this.scaleY)/2:r==="bottom"&&(s=t.y+(this.getHeight()+o*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},getCenterPoint:function(){var e=new fabric.Point(this.left,this.top);return this.translateToCenterPoint(e,this.originX,this.originY)},getPointByOrigin:function(e,t){var n=this.getCenterPoint();return this.translateToOriginPoint(n,e,t)},toLocalPoint:function(t,n,r){var i=this.getCenterPoint(),s=this.stroke?this.strokeWidth:0,o,u;return n&&r?(n==="left"?o=i.x-(this.getWidth()+s*this.scaleX)/2:n==="right"?o=i.x+(this.getWidth()+s*this.scaleX)/2:o=i.x,r==="top"?u=i.y-(this.getHeight()+s*this.scaleY)/2:r==="bottom"?u=i.y+(this.getHeight()+s*this.scaleY)/2:u=i.y):(o=this.left,u=this.top),fabric.util.rotatePoint(new fabric.Point(t.x,t.y),i,-e(this.angle)).subtractEquals(new fabric.Point(o,u))},setPositionByOrigin:function(e,t,n){var r=this.translateToCenterPoint(e,t,n),i=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",i.x),this.set("top",i.y)},adjustPosition:function(t){var n=e(this.angle),r=this.getWidth()/2,i=Math.cos(n)*r,s=Math.sin(n)*r,o=this.getWidth(),u=Math.cos(n)*o,a=Math.sin(n)*o;this.originX==="center"&&t==="left"||this.originX==="right"&&t==="center"?(this.left-=i,this.top-=s):this.originX==="left"&&t==="center"||this.originX==="center"&&t==="right"?(this.left+=i,this.top+=s):this.originX==="left"&&t==="right"?(this.left+=u,this.top+=a):this.originX==="right"&&t==="left"&&(this.left-=u,this.top-=a),this.setCoords(),this.originX=t},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","center")}})}(),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{oCoords:null,intersectsWithRect:function(e,t){var n=this.oCoords,r=new fabric.Point(n.tl.x,n.tl.y),i=new fabric.Point(n.tr.x,n.tr.y),s=new fabric.Point(n.bl.x,n.bl.y),o=new fabric.Point(n.br.x,n.br.y),u=fabric.Intersection.intersectPolygonRectangle([r,i,o,s],e,t);return u.status==="Intersection"},intersectsWithObject:function(e){function t(e){return{tl:new fabric.Point(e.tl.x,e.tl.y),tr:new fabric.Point(e.tr.x,e.tr.y),bl:new fabric.Point(e.bl.x,e.bl.y),br:new fabric.Point(e.br.x,e.br.y)}}var n=t(this.oCoords),r=t(e.oCoords),i=fabric.Intersection.intersectPolygonPolygon([n.tl,n.tr,n.br,n.bl],[r.tl,r.tr,r.br,r.bl]);return i.status==="Intersection"},isContainedWithinObject:function(e){var t=e.getBoundingRect(),n=new fabric.Point(t.left,t.top),r=new fabric.Point(t.left+t.width,t.top+t.height);return this.isContainedWithinRect(n,r)},isContainedWithinRect:function(e,t){var n=this.getBoundingRect();return n.left>e.x&&n.left+n.widthe.y&&n.top+n.height=e.y&&f.d.y>=e.y)continue;f.o.x===f.d.x&&f.o.x>=e.x?(o=f.o.x,u=e.y):(n=0,r=(f.d.y-f.o.y)/(f.d.x-f.o.x),i=e.y-n*e.x,s=f.o.y-r*f.o.x,o=-(i-s)/(n-r),u=i+n*o),o>=e.x&&(a+=1);if(a===2)break}return a},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],t=fabric.util.array.min(e),n=fabric.util.array.max(e),r=Math.abs(t-n),i=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],s=fabric.util.array.min(i),o=fabric.util.array.max(i),u=Math.abs(s-o);return{left:t,top:s,width:r,height:u}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(e){return Math.abs(e)1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x:m.x,y:m.y};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords&&this._setCornerCoords(),this}})}(),fabric.util.object.extend(fabric.Object.prototype,{sendToBack:function(){return this.group?fabric.StaticCanvas.prototype.sendToBack.call(this.group,this):this.canvas.sendToBack(this),this},bringToFront:function(){return this.group?fabric.StaticCanvas.prototype.bringToFront.call(this.group,this):this.canvas.bringToFront(this),this},sendBackwards:function(e){return this.group?fabric.StaticCanvas.prototype.sendBackwards.call(this.group,this,e):this.canvas.sendBackwards(this,e),this},bringForward:function(e){return this.group?fabric.StaticCanvas.prototype.bringForward.call(this.group,this,e):this.canvas.bringForward(this,e),this},moveTo:function(e){return this.group?fabric.StaticCanvas.prototype.moveTo.call(this.group,this,e):this.canvas.moveTo(this,e),this}}),fabric.util.object.extend(fabric.Object.prototype,{getSvgStyles:function(){var e=this.fill?this.fill.toLive?"url(#SVGID_"+this.fill.id+")":this.fill:"none",t=this.stroke?this.stroke.toLive?"url(#SVGID_"+this.stroke.id+")":this.stroke:"none",n=this.strokeWidth?this.strokeWidth:"0",r=this.strokeDashArray?this.strokeDashArray.join(" "):"",i=this.strokeLineCap?this.strokeLineCap:"butt",s=this.strokeLineJoin?this.strokeLineJoin:"miter",o=this.strokeMiterLimit?this.strokeMiterLimit:"4",u=typeof this.opacity!="undefined"?this.opacity:"1",a=this.visible?"":" visibility: hidden;",f=this.shadow&&this.type!=="text"?"filter: url(#SVGID_"+this.shadow.id+");":"";return["stroke: ",t,"; ","stroke-width: ",n,"; ","stroke-dasharray: ",r,"; ","stroke-linecap: ",i,"; ","stroke-linejoin: ",s,"; ","stroke-miterlimit: ",o,"; ","fill: ",e,"; ","opacity: ",u,";",f,a].join("")},getSvgTransform:function(){var e=fabric.util.toFixed,t=this.getAngle(),n=this.getCenterPoint(),r=fabric.Object.NUM_FRACTION_DIGITS,i="translate("+e(n.x,r)+" "+e(n.y,r)+")",s=t!==0?" rotate("+e(t,r)+")":"",o=this.scaleX===1&&this.scaleY===1?"":" scale("+e(this.scaleX,r)+" "+e(this.scaleY,r)+")",u=this.flipX?"matrix(-1 0 0 1 0 0) ":"",a=this.flipY?"matrix(1 0 0 -1 0 0)":"";return[i,s,o,u,a].join("")},_createBaseSVGMarkup:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),this.shadow&&e.push(this.shadow.toSVG(this)),e}}),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this.get(e)!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians,n=typeof G_vmlCanvasManager!="undefined";fabric.util.object.extend(fabric.Object.prototype,{_controlsVisibility:null,_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(!this.isControlVisible(a))continue;if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner),o=this._findCrossPoints({x:i,y:s},u);if(o!==0&&o%2===1)return this.__corner=a,a}return!1},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=~~(this.strokeWidth/2)*2;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)-.5,~~(-(u/2)-t-r/2*this.scaleY)-.5,~~(o+n+r*this.scaleX)+1,~~(u+n+r*this.scaleY)+1);if(this.hasRotatingPoint&&this.isControlVisible("mtr")&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;var t=this.cornerSize,n=t/2,r=~~(this.strokeWidth/2),i=-(this.width/2),s=-(this.height/2),o=this.padding/this.scaleX,u=this.padding/this.scaleY,a=n/this.scaleY,f=n/this.scaleX,l=(n-t)/this.scaleX,c=(n-t)/this.scaleY,h=this.height,p=this.width,d=this.transparentCorners?"strokeRect":"fillRect";return e.save(),e.lineWidth=1/Math.max(this.scaleX,this.scaleY),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=e.fillStyle=this.cornerColor,this._drawControl("tl",e,d,i-f-r-o,s-a-r-u),this._drawControl("tr",e,d,i+p-f+r+o,s-a-r-u),this._drawControl("tr",e,d,i-f-r-o,s+h+c+r+u),this._drawControl("br",e,d,i+p+l+r+o,s+h+c+r+u),this.get("lockUniScaling")||(this._drawControl("mt",e,d,i+p/2-f,s-a-r-u),this._drawControl("mb",e,d,i+p/2-f,s+h+c+r+u),this._drawControl("mb",e,d,i+p+l+r+o,s+h/2-a),this._drawControl("ml",e,d,i-f-r-o,s+h/2-a)),this.hasRotatingPoint&&this._drawControl("mtr",e,d,i+p/2-f,this.flipY?s+h+this.rotatingPointOffset/this.scaleY-this.cornerSize/this.scaleX/2+r+u:s-this.rotatingPointOffset/this.scaleY-this.cornerSize/this.scaleY/2-r-u),e.restore(),this},_drawControl:function(e,t,r,i,s){var o=this.cornerSize/this.scaleX,u=this.cornerSize/this.scaleY;this.isControlVisible(e)&&(n||this.transparentCorners||t.clearRect(i,s,o,u),t[r](i,s,o,u))},isControlVisible:function(e){return this._getControlsVisibility()[e]},setControlVisible:function(e,t){return this._getControlsVisibility()[e]=t,this},setControlsVisibility:function(e){e||(e={});for(var t in e)this.setControlVisible(t,e[t]);return this},_getControlsVisibility:function(){return this._controlsVisibility||(this._controlsVisibility={tl:!0,tr:!0,br:!0,bl:!0,ml:!0,mt:!0,mr:!0,mb:!0,mtr:!0}),this._controlsVisibility}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("left"),endValue:this.getCenter().left,duration:this.FX_DURATION,onChange:function(t){e.set("left",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxCenterObjectV:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("top"),endValue:this.getCenter().top,duration:this.FX_DURATION,onChange:function(t){e.set("top",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxRemove:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("opacity"),endValue:0,duration:this.FX_DURATION,onStart:function(){e.set("active",!1)},onChange:function(t){e.set("opacity",t),s.renderAll(),i()},onComplete:function(){s.remove(e),r()}}),this}}),fabric.util.object.extend(fabric.Object.prototype,{animate:function(){if(arguments[0]&&typeof arguments[0]=="object"){var e=[],t,n;for(t in arguments[0])e.push(t);for(var r=0,i=e.length;r'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e)},_set:function(e,t){return this.callSuper("_set",e,t),e==="radius"&&this.setRadius(t),this},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(e){var t=this._createBaseSVGMarkup(),n=this.width/2,r=this.height/2,i=[-n+" "+r,"0 "+ -r,n+" "+r].join(",");return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this._renderFill(e),this._renderStroke(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}var r=t.Object.prototype.stateProperties.concat();r.push("rx","ry","x","y"),t.Rect=t.util.createClass(t.Object,{stateProperties:r,type:"rect",rx:0,ry:0,x:0,y:0,strokeDashArray:null,initialize:function(e){e=e||{},this.callSuper("initialize",e),this._initRxRy(),this.x=e.x||0,this.y=e.y||0},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height,u=this.group&&this.group.type==="path-group";e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y);var a=t!==0||n!==0;e.moveTo(r+t,i),e.lineTo(r+s-t,i),a&&e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),a&&e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),a&&e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),a&&e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){var t=n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,r){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=i(s);var o=new t.Rect(n(r?t.util.object.clone(r):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(e){var t=[],r=this._createBaseSVGMarkup();for(var i=0,s=this.points.length;i'),e?e(r.join("")):r.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),e?e(n.join("")):n.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n"},toObject:function(e){var t=s(this.callSuper("toObject",e),{path:this.path,pathOffset:this.pathOffset});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(e){var t=[],n=this._createBaseSVGMarkup();for(var r=0,i=this.path.length;r',"",""),e?e(n.join("")):n.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n=[],r,i,s=/(-?\.\d+)|(-?\d+(\.\d+)?)/g,o,u;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var r=0,i=t.length;r"),e?e(n.join("")):n.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e,n){typeof e.paths=="string"?t.loadSVGFromURL(e.paths,function(r){var i=e.paths;delete e.paths;var s=t.util.groupSVGElements(r,e,i);n(s)}):t.util.enlivenObjects(e.paths,function(r){delete e.paths,n(new t.PathGroup(r,e))})},t.PathGroup.async=!0}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){this.forEachObject(this._updateObjectCoords,this)},_updateObjectCoords:function(e){var t=e.getLeft(),n=e.getTop();e.set({originalLeft:t,originalTop:n,left:t-this.left,top:n-this.top}),e.setCoords(),e.__origHasControls=e.hasControls,e.hasControls=!1},toString:function(){return"#"},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(this._setObjectActive,this),this._calcBounds(),this._updateObjectsCoords(),this},_setObjectActive:function(e){e.set("active",!0),e.group=this},removeWithUpdate:function(e){return this._moveFlippedObject(e),this._restoreObjectsState(),this.forEachObject(this._setObjectActive,this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e),this.clipTo&&t.util.clipContext(this,e);for(var r=0,i=this._objects.length;r'];for(var n=0,r=this._objects.length;n"),e?e(t.join("")):t.join("")},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','");if(this.stroke||this.strokeDashArray){var n=this.fill;this.fill=null,t.push("'),this.fill=n}return t.push(""),e?e(t.join("")):t.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this._element=this._originalElement,e&&e();return}var t=this._originalElement,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;return n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height,fabric.isLikelyNode?(r.src=n.toBuffer(undefined,fabric.Image.pngCompression),i._element=r,e&&e()):(r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png")),this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e),this._element.crossOrigin=this.crossOrigin},_initFilters:function(e,t){e.filters&&e.filters.length?fabric.util.enlivenObjects(e.filters,function(e){t&&t(e)},"fabric.Image.filters"):t&&t()},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){fabric.Image.prototype._initFilters.call(e,e,function(r){e.filters=r||[];var i=new fabric.Image(n,e);t&&t(i)})},null,e.crossOrigin)},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))},null,n&&n.crossOrigin)},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0,fabric.Image.pngCompression=1}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.BaseFilter=fabric.util.createClass({type:"BaseFilter",toObject:function(){return{type:this.type}},toJSON:function(){return this.toObject()}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend;t.Image.filters.Brightness=t.util.createClass(t.Image.filters.BaseFilter,{type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;sa||C<0||C>u)continue;var k=(N*u+C)*4,L=t[x*i+T];b+=o[k]*L,w+=o[k+1]*L,E+=o[k+2]*L,S+=o[k+3]*L}h[y]=b,h[y+1]=w,h[y+2]=E,h[y+3]=S+p*(255-S)}n.putImageData(c,0,0)},toObject:function(){return n(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),t.Image.filters.Convolute.fromObject=function(e){return new t.Image.filters.Convolute(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend;t.Image.filters.GradientTransparency=t.util.createClass(t.Image.filters.BaseFilter,{type:"GradientTransparency",initialize:function(e){e=e||{},this.threshold=e.threshold||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.threshold,s=r.length;for(var o=0,u=r.length;o-1?e.channel:0},applyTo:function(e){if(!this.mask)return;var n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=r.data,s=this.mask.getElement(),o=t.util.createCanvasElement(),u=this.channel,a,f=r.width*r.height*4;o.width=s.width,o.height=s.height,o.getContext("2d").drawImage(s,0,0,s.width,s.height);var l=o.getContext("2d").getImageData(0,0,s.width,s.height),c=l.data;for(a=0;ao&&f>o&&l>o&&u(a-f)'},_render:function(e){var t=this.group&&this.group.type==="path-group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaNative:function(e){var n=this.text.split(this._reNewline);this.transform(e,t.isLikelyNode),this._setTextStyles(e),this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this.clipTo&&t.util.clipContext(this,e),this._renderTextBackground(e,n),this._translateForTextAlign(e),this._renderText(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this.clipTo&&e.restore(),this._setBoundaries(e,n),this._totalLineHeight=0},_renderText:function(e,t){e.save(),this._setShadow(e),this._renderTextFill(e,t),this._renderTextStroke(e,t),this._removeShadow(e),e.restore()},_translateForTextAlign:function(e){this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0))},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_renderChars:function(e,t,n,r,i){t[e](n,r,i)},_renderTextLine:function(e,t,n,r,i,s){i-=this.fontSize/4;if(this.textAlign!=="justify"){this._renderChars(e,t,n,r,i,s);return}var o=t.measureText(n).width,u=this.width;if(u>o){var a=n.split(/\s+/),f=t.measureText(n.replace(/\s+/g,"")).width,l=u-f,c=a.length-1,h=l/c,p=0;for(var d=0,v=a.length;d-1&&i(this.fontSize*this.lineHeight),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize*this.lineHeight-this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(this.fontSize*this.lineHeight-this.fontSize)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(e,t){if(!this.visible)return;e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){var t=n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textAlign:this.textAlign,path:this.path,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=[],n=this.text.split(this._reNewline),r=this._getSVGLeftTopOffsets(n),i=this._getSVGTextAndBg(r.lineTop,r.textLeft,n),s=this._getSVGShadows(r.lineTop,n);return r.textTop+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,this._wrapSVGTextAndBg(t,i,s,r),e?e(t.join("")):t.join("")},_getSVGLeftTopOffsets:function(e){var t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight;return{textLeft:n,textTop:r,lineTop:t}},_wrapSVGTextAndBg:function(e,t,n,r){e.push('',t.textBgRects.join(""),"',n.join(""),t.textSpans.join(""),"","")},_getSVGShadows:function(e,n){var r=[],s,o,u=1;if(!this.shadow||!this._boundaries)return r;for(s=0,o=n.length;s",t.util.string.escapeXml(n[s]),""),u=1}else u++;return r},_getSVGTextAndBg:function(e,t,n){var r=[],i=[],s=1;this._setSVGBg(i);for(var o=0,u=n.length;o",t.util.string.escapeXml(e),"")},_setSVGTextLineBg:function(e,t,n,r){e.push("')},_setSVGBg:function(e){this.backgroundColor&&this._boundaries&&e.push("')},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),function(){var e=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,_skipFillStrokeCheck:!0,_reSpace:/\s|\n/,_fontSizeFraction:4,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,_charWidthsCache:{},initialize:function(e,t){this.styles=t?t.styles||{}:{},this.callSuper("initialize",e,t),this.initBehavior(),fabric.IText.instances.push(this),this.__lineWidths={},this.__lineHeights={},this.__lineOffsets={}},isEmptyStyles:function(){if(!this.styles)return!0;var e=this.styles;for(var t in e)for(var n in e[t])for(var r in e[t][n])return!1;return!0},setSelectionStart:function(e){this.selectionStart=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionStart=e)},setSelectionEnd:function(e){this.selectionEnd=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionEnd=e)},getSelectionStyles:function(e,t){if(arguments.length===2){var n=[];for(var r=e;r-1&&this._renderCharDecorationAtOffset(e,n,r+this.fontSize/this._fontSizeFraction,i,0,this.fontSize/20),u.indexOf("line-through")>-1&&this._renderCharDecorationAtOffset(e,n,r+this.fontSize/this._fontSizeFraction,i,o/2,a/20),u.indexOf("overline")>-1&&this._renderCharDecorationAtOffset(e,n,r,i,s-this.fontSize/this._fontSizeFraction,this.fontSize/20)},_renderCharDecorationAtOffset:function(e,t,n,r,i,s){e.fillRect(t,n-i,r,s)},_renderTextLine:function(e,t,n,r,i,s){i+=this.fontSize/4,this.callSuper("_renderTextLine",e,t,n,r,i,s)},_renderTextDecoration:function(e,t){if(this.isEmptyStyles())return this.callSuper("_renderTextDecoration",e,t)},_renderTextLinesBackground:function(e,t){if(!this.textBackgroundColor&&!this.styles)return;e.save(),this.textBackgroundColor&&(e.fillStyle=this.textBackgroundColor);var n=0,r=this.fontSize/this._fontSizeFraction;for(var i=0,s=t.length;in&&(n=s)}return n},_getHeightOfLine:function(e,t,n){n=n||this.text.split(this._reNewline);var r=this._getHeightOfChar(e,n[t][0],t,0),i=n[t],s=i.split("");for(var o=1,u=s.length;or&&(r=a)}return r*this.lineHeight},_getTextHeight:function(e,t){var n=0;for(var r=0,i=t.length;r-1)t++,n--;return e-t},findWordBoundaryRight:function(e){var t=0,n=e;if(this._reSpace.test(this.text.charAt(n)))while(this._reSpace.test(this.text.charAt(n)))t++,n++;while(/\S/.test(this.text.charAt(n))&&n-1)t++,n--;return e-t},findLineBoundaryRight:function(e){var t=0,n=e;while(!/\n/.test(this.text.charAt(n))&&n0&&nr;s?this.removeStyleObject(s,n+1):this.removeStyleObject(this.get2DCursorLocation(n).charIndex===0,n)}this.text=this.text.slice(0,e)+this.text.slice(t)},insertChars:function(e){var t=this.text.slice(this.selectionStart,this.selectionStart+1)==="\n";this.text=this.text.slice(0,this.selectionStart)+e+this.text.slice(this.selectionEnd),this.selectionStart===this.selectionEnd?this.insertStyleObjects(e,t,this.copiedStyles):this.selectionEnd-this.selectionStart>1&&console.log("replacing MORE than 1 char"),this.selectionStart+=e.length,this.selectionEnd=this.selectionStart,this.canvas&&this.canvas.renderAll().renderAll(),this.setCoords(),this.fire("text:changed")},insertNewlineStyleObject:function(t,n,r){this.shiftLineStyles(t,1),this.styles[t+1]||(this.styles[t+1]={});var i=this.styles[t][n-1],s={};if(r)s[0]=e(i),this.styles[t+1]=s;else{for(var o in this.styles[t])parseInt(o,10)>=n&&(s[parseInt(o,10)-n]=this.styles[t][o],delete this.styles[t][o]);this.styles[t+1]=s}},insertCharStyleObject:function(t,n,r){var i=this.styles[t],s=e(i);n===0&&!r&&(n=1);for(var o in s){var u=parseInt(o,10);u>=n&&(i[u+1]=s[u])}this.styles[t][n]=r||e(i[n-1])},insertStyleObjects:function(e,t,n){if(this.isEmptyStyles())return;var r=this.get2DCursorLocation(),i=r.lineIndex,s=r.charIndex;this.styles[i]||(this.styles[i]={}),e==="\n"?this.insertNewlineStyleObject(i,s,t):n?this._insertStyles(n):this.insertCharStyleObject(i,s)},_insertStyles:function(e){for(var t=0,n=e.length;tt&&(this.styles[s+n]=r[s])}},removeStyleObject:function(t,n){var r=this.get2DCursorLocation(n),i=r.lineIndex,s=r.charIndex;if(t){var o=this.text.split(this._reNewline),u=o[i-1],a=u.length;this.styles[i-1]||(this.styles[i-1]={});for(s in this.styles[i])this.styles[i-1][parseInt(s,10)+a]=this.styles[i][s];this.shiftLineStyles(i,-1)}else{var f=this.styles[i];if(f){var l=this.selectionStart===this.selectionEnd?-1:0;delete f[s+l]}var c=e(f);for(var h in c){var p=parseInt(h,10);p>=s&&p!==0&&(f[p-1]=c[p],delete f[p])}}},insertNewline:function(){this.insertChars("\n")}})}(),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(e){this.__newClickTime=+(new Date);var t=this.canvas.getPointer(e.e);this.isTripleClick(t)?(this.fire("tripleclick",e),this._stopEvent(e.e)):this.isDoubleClick(t)&&(this.fire("dblclick",e),this._stopEvent(e.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=t},isDoubleClick:function(e){return this.__newClickTime-this.__lastClickTime<500&&this.__lastPointer.x===e.x&&this.__lastPointer.y===e.y},isTripleClick:function(e){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===e.x&&this.__lastPointer.y===e.y},_stopEvent:function(e){e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation()},initCursorSelectionHandlers:function(){this.initSelectedHandler(),this.initMousedownHandler(),this.initMousemoveHandler(),this.initMouseupHandler(),this.initClicks()},initClicks:function(){this.on("dblclick",function(e){this.selectWord(this.getSelectionStartFromPointer(e.e))}),this.on("tripleclick",function(e){this.selectLine(this.getSelectionStartFromPointer(e.e))})},initMousedownHandler:function(){this.on("mousedown",function(e){var t=this.canvas.getPointer(e.e);this.__mousedownX=t.x,this.__mousedownY=t.y,this.__isMousedown=!0,this.hiddenTextarea&&this.canvas&&this.canvas.wrapperEl.appendChild(this.hiddenTextarea),this.isEditing?(this.setCursorByClick(e.e),this.__selectionStartOnMouseDown=this.selectionStart):this.exitEditingOnOthers()})},initMousemoveHandler:function(){this.on("mousemove",function(e){if(!this.__isMousedown||!this.isEditing)return;var t=this.getSelectionStartFromPointer(e.e);t>=this.__selectionStartOnMouseDown?(this.setSelectionStart(this.__selectionStartOnMouseDown),this.setSelectionEnd(t)):(this.setSelectionStart(t),this.setSelectionEnd(this.__selectionStartOnMouseDown))})},_isObjectMoved:function(e){var t=this.canvas.getPointer(e);return this.__mousedownX!==t.x||this.__mousedownY!==t.y},initMouseupHandler:function(){this.on("mouseup",function(e){this.__isMousedown=!1;if(this._isObjectMoved(e.e))return;this.selected&&this.enterEditing()})},setCursorByClick:function(e){var t=this.getSelectionStartFromPointer(e);e.shiftKey?ts?0:1,a=r+u;return this.flipX&&(a=i-a),a>this.text.length&&(a=this.text.length),a}}),fabric.util.object.extend(fabric.IText.prototype,{initKeyHandlers:function(){fabric.util.addListener(fabric.document,"keydown",this.onKeyDown.bind(this)),fabric.util.addListener(fabric.document,"keypress",this.onKeyPress.bind(this))},initHiddenTextarea:function(){this.hiddenTextarea=fabric.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.style.cssText="position: absolute; top: 0; left: -9999px",fabric.document.body.appendChild(this.hiddenTextarea)},_keysMap:{8:"removeChars",13:"insertNewline",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown",46:"forwardDelete"},_ctrlKeysMap:{65:"selectAll",67:"copy",86:"paste",88:"cut"},onKeyDown:function(e){if(!this.isEditing)return;if(e.keyCode in this._keysMap)this[this._keysMap[e.keyCode]](e);else{if(!(e.keyCode in this._ctrlKeysMap&&(e.ctrlKey||e.metaKey)))return;this[this._ctrlKeysMap[e.keyCode]](e)}e.preventDefault(),e.stopPropagation(),this.canvas&&this.canvas.renderAll()},forwardDelete:function(e){this.selectionStart===this.selectionEnd&&this.moveCursorRight(e),this.removeChars(e)},copy:function(){var e=this.getSelectedText();this.copiedText=e,this.copiedStyles=this.getSelectionStyles(this.selectionStart,this.selectionEnd)},paste:function(){this.copiedText&&this.insertChars(this.copiedText)},cut:function(e){this.copy(),this.removeChars(e)},onKeyPress:function(e){if(!this.isEditing||e.metaKey||e.ctrlKey||e.keyCode===8||e.keyCode===13)return;this.insertChars(String.fromCharCode(e.which)),e.preventDefault(),e.stopPropagation()},getDownCursorOffset:function(e,t){var n=t?this.selectionEnd:this.selectionStart,r=this.text.split(this._reNewline),i,s,o=this.text.slice(0,n),u=this.text.slice(n),a=o.slice(o.lastIndexOf("\n")+1),f=u.match(/(.*)\n?/)[1],l=(u.match(/.*\n(.*)\n?/)||{})[1]||"",c=this.get2DCursorLocation(n);if(c.lineIndex===r.length-1||e.metaKey)return this.text.length-n;var h=this._getWidthOfLine(this.ctx,c.lineIndex,r);s=this._getLineLeftOffset(h);var p=s,d=c.lineIndex;for(var v=0,m=a.length;vn){f=!0;var d=u-p,v=u,m=Math.abs(d-n),g=Math.abs(v-n);a=gthis.text.length&&(this.selectionStart=this.text.length),this.selectionEnd=this.selectionStart},moveCursorDownWithShift:function(e){if(this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd){this.selectionStart+=e,this._selectionDirection="left";return}this._selectionDirection="right",this.selectionEnd+=e,this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length)},getUpCursorOffset:function(e,t){var n=t?this.selectionEnd:this.selectionStart,r=this.get2DCursorLocation(n);if(r.lineIndex===0||e.metaKey)return n;var i=this.text.slice(0,n),s=i.slice(i.lastIndexOf("\n")+1),o=(i.match(/\n?(.*)\n.*$/)||{})[1]||"",u=this.text.split(this._reNewline),a,f,l=this._getWidthOfLine(this.ctx,r.lineIndex,u);f=this._getLineLeftOffset(l);var c=f,h=r.lineIndex;for(var p=0,d=s.length;pn){f=!0;var d=u-p,v=u,m=Math.abs(d-n),g=Math.abs(v-n);a=g=this.text.length&&this.selectionEnd>=this.text.length)return;this.abortCursorAnimation(),this._currentCursorOpacity=1,e.shiftKey?this.moveCursorRightWithShift(e):this.moveCursorRightWithoutShift(e),this.initDelayedCursor()},moveCursorRightWithShift:function(e){this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd?this._moveRight(e,"selectionStart"):(this._selectionDirection="right",this._moveRight(e,"selectionEnd"),this.text.charAt(this.selectionEnd-1)==="\n"&&this.selectionEnd++,this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length))},moveCursorRightWithoutShift:function(e){this._selectionDirection="right",this.selectionStart===this.selectionEnd?(this._moveRight(e,"selectionStart"),this.selectionEnd=this.selectionStart):(this.selectionEnd+=this.getNumNewLinesInSelectedText(),this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length),this.selectionStart=this.selectionEnd)},removeChars:function(e){this.selectionStart===this.selectionEnd?this._removeCharsNearCursor(e):this._removeCharsFromTo(this.selectionStart,this.selectionEnd),this.selectionEnd=this.selectionStart,this._removeExtraneousStyles(),this.canvas&&this.canvas.renderAll().renderAll(),this.setCoords(),this.fire("text:changed")},_removeCharsNearCursor:function(e){if(this.selectionStart!==0)if(e.metaKey){var t=this.findLineBoundaryLeft(this.selectionStart);this._removeCharsFromTo(t,this.selectionStart),this.selectionStart=t}else if(e.altKey){var n=this.findWordBoundaryLeft(this.selectionStart);this._removeCharsFromTo(n,this.selectionStart),this.selectionStart=n}else{var r=this.text.slice(this.selectionStart-1,this.selectionStart)==="\n";this.removeStyleObject(r),this.selectionStart--,this.text=this.text.slice(0,this.selectionStart)+this.text.slice(this.selectionStart+1)}}}),fabric.util.object.extend(fabric.IText.prototype,{_setSVGTextLineText:function(e,t,n,r,i,s){this.styles[t]?this._setSVGTextLineChars(e,t,n,r,i,s):this.callSuper("_setSVGTextLineText",e,t,n,r,i)},_setSVGTextLineChars:function(e,t,n,r,i,s){var o=t===0||this.useNative?"y":"dy",u=e.split(""),a=0,f=this._getSVGLineLeftOffset(t),l=this._getSVGLineTopOffset(t),c=this._getHeightOfLine(this.ctx,t);for(var h=0,p=u.length;h'].join("")},_createTextCharSpan:function(e,t,n,r,i,s){var o=this.getSvgStyles.call(fabric.util.object.extend({visible:!0,fill:this.fill,stroke:this.stroke,type:"text"},t));return['',fabric.util.string.escapeXml(e),""].join("")}}),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs");n.readFile(e,function(e,n){if(e)throw fabric.log(e),e;t(n)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&(e instanceof Buffer||e.indexOf("data")===0)?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e?request(e,"binary",r):t&&t.call(n,e)},fabric.loadSVGFromURL=function(e,t,n){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t,n)}):request(e,"",function(e){fabric.loadSVGFromString(e,t,n)})},fabric.loadSVGFromString=function(e,t,n){var r=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(r.documentElement,function(e,n){t&&t(e,n)},n)},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e,function(e){r.filters=e||[],t&&t(r)})})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file diff --git a/dist/all.min.js.gz b/dist/all.min.js.gz index 62075610a895103dbabea96141a4ad852be4fb68..57a9e80806a43e9915d3f32ccf5608f2fcc7bc12 100644 GIT binary patch delta 51689 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 a84ThGJOB>&n+}?RPyb(>N&M(^8v_7W0ri9c delta 51693 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 diff --git a/dist/all.require.js b/dist/all.require.js index 126d7c47..51986f61 100644 --- a/dist/all.require.js +++ b/dist/all.require.js @@ -476,8 +476,8 @@ fabric.Collection = { // https://github.com/kangax/fabric.js/commit/d0abb90f1cd5c5ef9d2a94d3fb21a22330da3e0a#commitcomment-4513767 // see https://code.google.com/p/chromium/issues/detail?id=315152 // https://bugzilla.mozilla.org/show_bug.cgi?id=935069 - if (url.indexOf('data') !== 0) { - img.crossOrigin = crossOrigin || ''; + if (url.indexOf('data') !== 0 && typeof crossOrigin !== 'undefined') { + img.crossOrigin = crossOrigin; } img.src = url; diff --git a/src/util/misc.js b/src/util/misc.js index 6719ffad..77fffe38 100644 --- a/src/util/misc.js +++ b/src/util/misc.js @@ -169,8 +169,8 @@ // https://github.com/kangax/fabric.js/commit/d0abb90f1cd5c5ef9d2a94d3fb21a22330da3e0a#commitcomment-4513767 // see https://code.google.com/p/chromium/issues/detail?id=315152 // https://bugzilla.mozilla.org/show_bug.cgi?id=935069 - if (url.indexOf('data') !== 0) { - img.crossOrigin = crossOrigin || ''; + if (url.indexOf('data') !== 0 && typeof crossOrigin !== 'undefined') { + img.crossOrigin = crossOrigin; } img.src = url;