From 9df6f6b2d4b9cc38d62d959349114a239961d9f6 Mon Sep 17 00:00:00 2001 From: kangax Date: Sun, 28 Jul 2013 15:42:08 +0200 Subject: [PATCH] Fix animation mixin inclusion --- build.js | 4 +- dist/all.js | 426 ++++++++++++++++++++++----------------------- dist/all.min.js | 2 +- dist/all.min.js.gz | Bin 49707 -> 49776 bytes test.js | 7 +- 5 files changed, 220 insertions(+), 219 deletions(-) diff --git a/build.js b/build.js index 43a5a19c..b5b76d2c 100644 --- a/build.js +++ b/build.js @@ -148,8 +148,6 @@ var filesToInclude = [ ifSpecifiedInclude('interaction', 'src/canvas.class.js'), ifSpecifiedInclude('interaction', 'src/mixins/canvas_events.mixin.js'), - ifSpecifiedInclude('animation', 'src/mixins/animation.mixin.js'), - 'src/mixins/canvas_dataurl_exporter.mixin.js', ifSpecifiedInclude('serialization', 'src/mixins/canvas_serialization.mixin.js'), @@ -162,6 +160,8 @@ var filesToInclude = [ ifSpecifiedInclude('interaction', 'src/mixins/object_interactivity.mixin.js'), + ifSpecifiedInclude('animation', 'src/mixins/animation.mixin.js'), + 'src/shapes/line.class.js', 'src/shapes/circle.class.js', 'src/shapes/triangle.class.js', diff --git a/dist/all.js b/dist/all.js index 8271e880..5419cfa0 100644 --- a/dist/all.js +++ b/dist/all.js @@ -9686,219 +9686,6 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab })(); -fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ { - - /** - * Animation duration (in ms) for fx* methods - * @type Number - */ - FX_DURATION: 500, - - /** - * Centers object horizontally with animation. - * @param {fabric.Object} object Object to center - * @param {Object} [callbacks] Callbacks object with optional "onComplete" and/or "onChange" properties - * @return {fabric.Canvas} thisArg - * @chainable - */ - fxCenterObjectH: function (object, callbacks) { - callbacks = callbacks || { }; - - var empty = function() { }, - onComplete = callbacks.onComplete || empty, - onChange = callbacks.onChange || empty, - _this = this; - - fabric.util.animate({ - startValue: object.get('left'), - endValue: this.getCenter().left, - duration: this.FX_DURATION, - onChange: function(value) { - object.set('left', value); - _this.renderAll(); - onChange(); - }, - onComplete: function() { - object.setCoords(); - onComplete(); - } - }); - - return this; - }, - - /** - * Centers object vertically with animation. - * @param {fabric.Object} object Object to center - * @param {Object} [callbacks] Callbacks object with optional "onComplete" and/or "onChange" properties - * @return {fabric.Canvas} thisArg - * @chainable - */ - fxCenterObjectV: function (object, callbacks) { - callbacks = callbacks || { }; - - var empty = function() { }, - onComplete = callbacks.onComplete || empty, - onChange = callbacks.onChange || empty, - _this = this; - - fabric.util.animate({ - startValue: object.get('top'), - endValue: this.getCenter().top, - duration: this.FX_DURATION, - onChange: function(value) { - object.set('top', value); - _this.renderAll(); - onChange(); - }, - onComplete: function() { - object.setCoords(); - onComplete(); - } - }); - - return this; - }, - - /** - * Same as `fabric.Canvas#remove` but animated - * @param {fabric.Object} object Object to remove - * @param {Function} callback Callback, invoked on effect completion - * @return {fabric.Canvas} thisArg - * @chainable - */ - fxRemove: function (object, callbacks) { - callbacks = callbacks || { }; - - var empty = function() { }, - onComplete = callbacks.onComplete || empty, - onChange = callbacks.onChange || empty, - _this = this; - - fabric.util.animate({ - startValue: object.get('opacity'), - endValue: 0, - duration: this.FX_DURATION, - onStart: function() { - object.set('active', false); - }, - onChange: function(value) { - object.set('opacity', value); - _this.renderAll(); - onChange(); - }, - onComplete: function () { - _this.remove(object); - onComplete(); - } - }); - - return this; - } -}); - -fabric.util.object.extend(fabric.Object.prototype, { - /** - * Animates object's properties - * @param {String|Object} property to animate (if string) or properties to animate (if object) - * @param {Number|Object} value to animate property to (if string was given first) or options object - * @return {fabric.Object} thisArg - * @chainable - * - * As object — multiple properties - * - * object.animate({ left: ..., top: ... }); - * object.animate({ left: ..., top: ... }, { duration: ... }); - * - * As string — one property - * - * object.animate('left', ...); - * object.animate('left', { duration: ... }); - * - */ - animate: function() { - if (arguments[0] && typeof arguments[0] === 'object') { - var propsToAnimate = [ ], prop, skipCallbacks; - for (prop in arguments[0]) { - propsToAnimate.push(prop); - } - for (var i = 0, len = propsToAnimate.length; i"),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined";var Cufon=function(){function r(e){var t=this.face=e.face;this.glyphs=e.glyphs,this.w=e.w,this.baseSize=parseInt(t["units-per-em"],10),this.family=t["font-family"].toLowerCase(),this.weight=t["font-weight"],this.style=t["font-style"]||"normal",this.viewBox=function(){var e=t.bbox.split(/\s+/),n={minX:parseInt(e[0],10),minY:parseInt(e[1],10),maxX:parseInt(e[2],10),maxY:parseInt(e[3],10)};return n.width=n.maxX-n.minX,n.height=n.maxY-n.minY,n.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")},n}(),this.ascent=-parseInt(t.ascent,10),this.descent=-parseInt(t.descent,10),this.height=-this.ascent+this.descent}function i(){var e={},t={oblique:"italic",italic:"oblique"};this.add=function(t){(e[t.style]||(e[t.style]={}))[t.weight]=t},this.get=function(n,r){var i=e[n]||e[t[n]]||e.normal||e.italic||e.oblique;if(!i)return null;r={normal:400,bold:700}[r]||parseInt(r,10);if(i[r])return i[r];var s={1:1,99:0}[r%100],o=[],u,a;s===undefined&&(s=r>400),r==500&&(r=400);for(var f in i){f=parseInt(f,10);if(!u||fa)a=f;o.push(f)}return ra&&(r=a),o.sort(function(e,t){return(s?e>r&&t>r?et:et:e=i.length+e?r():setTimeout(arguments.callee,10)}),function(t){e?t():n.push(t)}}(),supports:function(e,t){var n=fabric.document.createElement("span").style;return n[e]===undefined?!1:(n[e]=t,n[e]===t)},textAlign:function(e,t,n,r){return t.get("textAlign")=="right"?n>0&&(e=" "+e):nk&&(k=N),A.push(N),N=0;continue}var O=t.glyphs[T[b]]||t.missingGlyph;if(!O)continue;N+=C=Number(O.w||t.w)+h}A.push(N),N=Math.max(k,N);var M=[];for(var b=A.length;b--;)M[b]=N-A[b];if(C===null)return null;d+=l.width-C,m+=l.minX;var _,D;if(f)_=u,D=u.firstChild;else{_=fabric.document.createElement("span"),_.className="cufon cufon-canvas",_.alt=n,D=fabric.document.createElement("canvas"),_.appendChild(D);if(i.printable){var P=fabric.document.createElement("span");P.className="cufon-alt",P.appendChild(fabric.document.createTextNode(n)),_.appendChild(P)}}var H=_.style,B=D.style||{},j=c.convert(l.height-p+v),F=Math.ceil(j),I=F/j;D.width=Math.ceil(c.convert(N+d-m)*I),D.height=F,p+=l.minY,B.top=Math.round(c.convert(p-t.ascent))+"px",B.left=Math.round(c.convert(m))+"px";var q=Math.ceil(c.convert(N*I)),R=q+"px",U=c.convert(t.height),z=(i.lineHeight-1)*c.convert(-t.ascent/5)*(L-1);Cufon.textOptions.width=q,Cufon.textOptions.height=U*L+z,Cufon.textOptions.lines=L,Cufon.textOptions.totalLineHeight=z,e?(H.width=R,H.height=U+"px"):(H.paddingLeft=R,H.paddingBottom=U-1+"px");var W=Cufon.textOptions.context||D.getContext("2d"),X=F/l.height;Cufon.textOptions.fontAscent=t.ascent*X,Cufon.textOptions.boundaries=null;for(var V=Cufon.textOptions.shadowOffsets,b=y.length;b--;)V[b]=[y[b][0]*X,y[b][1]*X];W.save(),W.scale(X,X),W.translate(-m-1/X*D.width/2+(Cufon.fonts[t.family].offsetLeft||0),-p-Cufon.textOptions.height/X/2+(Cufon.fonts[t.family].offsetTop||0)),W.lineWidth=t.face["underline-thickness"],W.save();var J=Cufon.getTextDecoration(i),K=i.fontStyle==="italic";W.save(),Q();if(g)for(var b=0,w=g.length;b.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}'),function(e,t,i,s,o,u,a){var f=t===null;f&&(t=o.alt);var l=e.viewBox,c=i.computedFontSize||(i.computedFontSize=new Cufon.CSS.Size(n(u,i.get("fontSize"))+"px",e.baseSize)),h=i.computedLSpacing;h==undefined&&(h=i.get("letterSpacing"),i.computedLSpacing=h=h=="normal"?0:~~c.convertFrom(r(u,h)));var p,d;if(f)p=o,d=o.firstChild;else{p=fabric.document.createElement("span"),p.className="cufon cufon-vml",p.alt=t,d=fabric.document.createElement("span"),d.className="cufon-vml-canvas",p.appendChild(d);if(s.printable){var v=fabric.document.createElement("span");v.className="cufon-alt",v.appendChild(fabric.document.createTextNode(t)),p.appendChild(v)}a||p.appendChild(fabric.document.createElement("cvml:shape"))}var m=p.style,g=d.style,y=c.convert(l.height),b=Math.ceil(y),w=b/y,E=l.minX,S=l.minY;g.height=b,g.top=Math.round(c.convert(S-e.ascent)),g.left=Math.round(c.convert(E)),m.height=c.convert(e.height)+"px";var x=Cufon.getTextDecoration(s),T=i.get("color"),N=Cufon.CSS.textTransform(t,i).split(""),C=0,k=0,L=null,A,O,M=s.textShadow;for(var _=0,D=0,P=N.length;_-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)},toGrayscale:function(){return this.forEachObject(function(e){e.toGrayscale()})}},function(){function n(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e}function r(e,t){return Math.floor(Math.random()*(t-e+1))+e}function s(e){return e*i}function o(e){return e/i}function u(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)}function a(e,t){return parseFloat(Number(e).toFixed(t))}function f(){return!1}function l(e){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(e))]}function c(e,t,n){if(e){var r=fabric.util.createImage();r.onload=function(){t&&t.call(n,r),r=r.onload=null},r.src=e}else t&&t.call(n,e)}function h(e,t){function n(){++i===s&&t&&t(r)}var r=[],i=0,s=e.length;e.forEach(function(e,t){if(!e.type)return;var i=fabric.util.getKlass(e.type);i.async?i.fromObject(e,function(e,i){i||(r[t]=e),n()}):(r[t]=i.fromObject(e),n())})}function p(e,t,n){var r;return e.length>1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r}function d(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),n[d?"lineTo":"moveTo"](r,0),d=!d;n.restore()}function m(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function g(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function y(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))}}function b(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function w(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]]}function E(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]}function S(e,t,n,r){var i=r[0],s=r[1],o=r[2],u=r[3],a=r[4],f=r[5],l=r[6],c=k(f,l,i,s,u,a,o,t,n);for(var h=0;h1&&(d=Math.sqrt(d),n*=d,r*=d);var v=c/n,m=l/n,g=-l/r,y=c/r,b=v*u+m*a,w=g*u+y*a,E=v*e+m*t,S=g*e+y*t,T=(E-b)*(E-b)+(S-w)*(S-w),k=1/T-.25;k<0&&(k=0);var L=Math.sqrt(k);s===i&&(L=-L);var A=.5*(b+E)-L*(S-w),O=.5*(w+S)+L*(E-b),M=Math.atan2(w-O,b-A),_=Math.atan2(S-O,E-A),D=_-M;D<0&&s===1?D+=2*Math.PI:D>0&&s===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B=r&&(r=e[n][t]);else while(n--)e[n]>=r&&(r=e[n]);return r}function r(e,t){if(!e||e.length===0)return undefined;var n=e.length-1,r=t?e[n][t]:e[n];if(t)while(n--)e[n][t]>>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 e(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){var t,n,r={left:0,top:0},i=e&&e.ownerDocument,s={left:0,top:0},o={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!i)return{left:0,top:0};for(var u in o)s[o[u]]+=parseInt(f(e,u),10)||0;return t=i.documentElement,typeof e.getBoundingClientRect!="undefined"&&(r=e.getBoundingClientRect()),i!=null&&i===i.window?n=i:n=i.nodeType===9&&(i.defaultView||i.parentWindow),{left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)+s.left,top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0)+s.top}}function f(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.getElementOffset=a,fabric.util.getElementStyle=f}(),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}(),function(){function e(e){e||(e={});var t=+(new Date),r=e.duration||500,i=t+r,s,o=e.onChange||function(){},u=e.abort||function(){return!1},a=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},f="startValue"in e?e.startValue:0,l="endValue"in e?e.endValue:100,c=e.byValue||l-f;e.onStart&&e.onStart(),function h(){s=+(new Date);var l=s>i?r:s-t;o(a(l,f,c,r));if(s>i||u()){e.onComplete&&e.onComplete();return}n(h)}()}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 n*(e/=r)*e+t}function t(e,t,n,r){return-n*(e/=r)*(e-2)+t}function n(e,t,n,r){return e/=r/2,e<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e,t,n,r){return n*(e/=r)*e*e+t}function i(e,t,n,r){return n*((e=e/r-1)*e*e+1)+t}function s(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e+t:n/2*((e-=2)*e*e+2)+t}function o(e,t,n,r){return n*(e/=r)*e*e*e+t}function u(e,t,n,r){return-n*((e=e/r-1)*e*e*e-1)+t}function a(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e+t:-n/2*((e-=2)*e*e*e-2)+t}function f(e,t,n,r){return n*(e/=r)*e*e*e*e+t}function l(e,t,n,r){return n*((e=e/r-1)*e*e*e*e+1)+t}function c(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e*e+t:n/2*((e-=2)*e*e*e*e+2)+t}function h(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t}function p(e,t,n,r){return n*Math.sin(e/r*(Math.PI/2))+t}function d(e,t,n,r){return-n/2*(Math.cos(Math.PI*e/r)-1)+t}function v(e,t,n,r){return e===0?t:n*Math.pow(2,10*(e/r-1))+t}function m(e,t,n,r){return e===r?t+n:n*(-Math.pow(2,-10*e/r)+1)+t}function g(e,t,n,r){return e===0?t:e===r?t+n:(e/=r/2,e<1?n/2*Math.pow(2,10*(e-1))+t:n/2*(-Math.pow(2,-10*--e)+2)+t)}function y(e,t,n,r){return-n*(Math.sqrt(1-(e/=r)*e)-1)+t}function b(e,t,n,r){return n*Math.sqrt(1-(e=e/r-1)*e)+t}function w(e,t,n,r){return e/=r/2,e<1?-n/2*(Math.sqrt(1-e*e)-1)+t:n/2*(Math.sqrt(1-(e-=2)*e)+1)+t}function E(e,t,n,r){var i=1.70158,s=0,o=n;return e===0?t:(e/=r,e===1?t+n:(s||(s=r*.3),o-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){w.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),w.has(e,function(r){r?w.get(e,function(e){var t=S(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function S(e){var n=e.objects,i=e.options;return n=n.map(function(e){return t[r(e.type)].fromObject(e)}),{objects:n,options:i}}function x(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)}function T(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t}function N(e){var t="";return e.backgroundColor&&e.backgroundColor.source&&(t=['',''].join("")),t}function C(e){var t=e.getElementsByTagName("linearGradient"),n=e.getElementsByTagName("radialGradient"),r,i,s={};i=t.length;for(;i--;)r=t[i],s[r.getAttribute("id")]=r;i=n.length;for(;i--;)r=n[i],s[r.getAttribute("id")]=r;return s}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;t.SHARED_ATTRIBUTES=["transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width"];var 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;ce.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"&&(i=["']);for(var s=0;s');return i.push(this.type==="linear"?"":""),i.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;return e.createPattern(t,this.repeat)}}),fabric.Shadow=fabric.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,initialize:function(e){for(var t in e)this[t]=e[t];this.id=fabric.Object.__uid++},toSVG:function(e){var t="SourceAlpha";if(e.fill===this.color||e.stroke===this.color)t="SourceGraphic";return''+''+''+""+""+''+""+""},toObject:function(){return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY}}}),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=fabric.util.removeListener,i=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=function(e,t){t||(t={}),this._initStatic(e,t),fabric.StaticCanvas.activeInstance=this},e(fabric.StaticCanvas.prototype,fabric.Observable),e(fabric.StaticCanvas.prototype,fabric.Collection),e(fabric.StaticCanvas.prototype,fabric.DataURLExporter),e(fabric.StaticCanvas.prototype,{backgroundColor:"",backgroundImage:"",backgroundImageOpacity:1,backgroundImageStretch:!0,overlayImage:"",overlayImageLeft:0 ,overlayImageTop:0,includeDefaultValues:!0,stateful:!0,renderOnAddition:!0,clipTo:null,controlsAboveOverlay:!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)),this.calcOffset()},calcOffset:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(e,t,n){return fabric.util.loadImage(e,function(e){this.overlayImage=e,n&&"overlayImageLeft"in n&&(this.overlayImageLeft=n.overlayImageLeft),n&&"overlayImageTop"in n&&(this.overlayImageTop=n.overlayImageTop),t&&t()},this),this},setBackgroundImage:function(e,t,n){return fabric.util.loadImage(e,function(e){this.backgroundImage=e,n&&"backgroundImageOpacity"in n&&(this.backgroundImageOpacity=n.backgroundImageOpacity),n&&"backgroundImageStretch"in n&&(this.backgroundImageStretch=n.backgroundImageStretch),t&&t()},this),this},setBackgroundColor:function(e,t){if(e.source){var n=this;fabric.util.loadImage(e.source,function(r){n.backgroundColor=new fabric.Pattern({source:r,repeat:e.repeat}),t&&t()})}else this.backgroundColor=e,t&&t();return this},_createCanvasElement:function(){var e=fabric.document.createElement("canvas");e.style||(e.style={});if(!e)throw i;return this._initCanvasElement(e),e},_initCanvasElement:function(e){fabric.util.createCanvasElement(e);if(typeof e.getContext=="undefined")throw i},_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.fire("object:removed",{target:e}),e.fire("removed")},getObjects:function(){return this._objects},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"];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.backgroundColor&&(t.fillStyle=this.backgroundColor.toLive?this.backgroundColor.toLive(t):this.backgroundColor,t.fillRect(this.backgroundColor.offsetX||0,this.backgroundColor.offsetY||0,this.width,this.height)),typeof this.backgroundImage=="object"&&this._drawBackroundImage(t);var n=this.getActiveGroup();for(var r=0,i=this._objects.length;r','\n'),t.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),""),this.backgroundColor&&this.backgroundColor.source&&t.push('"),this.backgroundImage&&t.push(''),this.overlayImage&&t.push('');var n=this.getActiveGroup();n&&this.discardActiveGroup();for(var r=0,i=this.getObjects(),s=i.length;r"),t.join("")},remove:function(e){return this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared")),fabric.Collection.remove.call(this,e)},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;if(t){i=r;for(var s=r-1;s>=0;--s){var o=e.intersectsWithObject(this._objects[s])||e.isContainedWithinObject(this._objects[s])||this._objects[s].isContainedWithinObject(e);if(o){i=s;break}}}else i=r-1;n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},bringForward:function(e,t){var r=this._objects.indexOf(e);if(r!==this._objects.length-1){var i;if(t){i=r;for(var s=r+1;s"},e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;a0&&(t>this.targetFindTolerance?t-=this.targetFindTolerance:t=0,n>this.targetFindTolerance?n-=this.targetFindTolerance:n=0);var o=!0,u=r.getImageData(t,n,this.targetFindTolerance*2||1,this.targetFindTolerance*2||1);for(var a=3,f=u.data.length;ao.padding?l.x<0?l.x+=o.padding:l.x-=o.padding:l.x=0,s(l.y)>o.padding?l.y<0?l.y+=o.padding:l.y-=o.padding:l.y=0;var c=o.scaleX,h=o.scaleY;if(n==="equally"&&!u&&!a){var p=l.y+l.x,d=(o.height+o.strokeWidth)*r.original.scaleY+(o.width+o.strokeWidth)*r.original.scaleX;c=r.original.scaleX*p/d,h=r.original.scaleY*p/d,o.set("scaleX",c),o.set("scaleY",h)}else n?n==="x"&&!o.get("lockUniScaling")?(c=l.x/(o.width+o.strokeWidth),u||o.set("scaleX",c)):n==="y"&&!o.get("lockUniScaling")&&(h=l.y/(o.height+o.strokeWidth),a||o.set("scaleY",h)):(c=l.x/(o.width+o.strokeWidth),h=l.y/(o.height+o.strokeWidth),u||o.set("scaleX",c),a||o.set("scaleY",h));c<0&&(r.originX==="left"?r.originX="right":r.originX==="right"&&(r.originX="left")),h<0&&(r.originY==="top"?r.originY="bottom":r.originY==="bottom"&&(r.originY="top")),o.setPositionByOrigin(f,r.originX,r.originY)},_rotateObject:function(e,t){var n=this._currentTransform,s=this._offset;if(n.target.get("lockRotation"))return;var o=i(n.ey-n.top-s.top,n.ex-n.left-s.left),u=i(t-n.top-s.top,e-n.left-s.left),a=r(u-o+n.theta);a<0&&(a=360+a),n.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,i=s(n),o=s(r);e.fillStyle=this.selectionColor,e.fillRect(t.ex-(n>0?0:-n),t.ey-(r>0?0:-r),i,o),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var u=t.ex+a-(n>0?0:i),f=t.ey+a-(r>0?0:o);e.beginPath(),fabric.util.drawDashedLine(e,u,f,u+i,f,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f+o-1,u+i,f+o-1,this.selectionDashArray),fabric.util.drawDashedLine(e,u,f,u,f+o,this.selectionDashArray),fabric.util.drawDashedLine(e,u+i-1,f,u+i-1,f+o,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+a-(n>0?0:i),t.ey+a-(r>0?0:o),i,o)},_findSelectedObjects:function(e){var t=[],n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,s=r+this._groupSelector.top,a,f=new fabric.Point(o(n,i),o(r,s)),l=new fabric.Point(u(n,i),u(r,s)),c=n===i&&r===s;for(var h=this._objects.length;h--;){a=this._objects[h];if(!a)continue;if(a.intersectsWithRect(f,l)||a.isContainedWithinRect(f,l)||a.containsPoint(f)||a.containsPoint(l))if(this.selection&&a.selectable){a.set("active",!0),t.push(a);if(c)break}}t.length===1?this.setActiveObject(t[0],e):t.length>1&&(t=new fabric.Group(t.reverse()),this.setActiveGroup(t),t.saveCoords(),this.fire("selection:created",{target:t}),this.renderAll())},findTarget:function(e,t){var n,r=this.getPointer(e);if(this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(e,this._offset))return n=this.lastRenderedObjectWithControlsAboveOverlay,n;var i=this.getActiveGroup();if(i&&!t&&this.containsPoint(e,i))return n=i,n;var s=[];for(var o=this._objects.length;o--;)if(this._objects[o]&&this._objects[o].visible&&this.containsPoint(e,this._objects[o])){if(!this.perPixelTargetFind&&!this._objects[o].perPixelTargetFind){n=this._objects[o],this.relatedTarget=n;break}s[s.length]=this._objects[o]}for(var u=0,a=s.length;u"},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,t){var n=e==="scaleX"||e==="scaleY";n&&(t=this._constrainScale(t));if(e==="scaleX"&&t<0)this.flipX=!this.flipX,t*=-1;else if(e==="scaleY"&&t<0)this.flipY=!this.flipY,t*=-1;else if(e==="width"||e==="height")this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2);return this[e]=t,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();var r=this.transformMatrix;r&&!this.group&&e.setTransform(r[0],r[1],r[2],r[3],r[4],r[5]),n||this.transform(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),this.overlayFill?e.fillStyle=this.overlayFill:this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill),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()},_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();n.width=this.getBoundingRectWidth(),n.height=this.getBoundingRectHeight(),t.util.wrapElement(n,"div");var r=new t.Canvas(n);e.format==="jpeg"&&(r.backgroundColor="#fff");var i={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set({active:!1,left:n.width/2,top:n.height/2}),r.add(this);var s=r.toDataURL(e);return this.set(i).setCoords(),r.dispose(),r=null,s},isType:function(e){return this.type===e},toGrayscale:function(){var e=this.get("fill");return e&&this.set("overlayFill",(new t.Color(e)).toGrayscale().toRgb()),this},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()})}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))},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.centerH().centerV()},remove:function(){return this.canvas.remove(this)},sendToBack:function(){return this.group?t.StaticCanvas.prototype.sendToBack.call(this.group,this):this.canvas.sendToBack(this),this},bringToFront:function(){return this.group?t.StaticCanvas.prototype.bringToFront.call(this.group,this):this.canvas.bringToFront(this),this},sendBackwards:function(e){return this.group?t.StaticCanvas.prototype.sendBackwards.call(this.group,this,e):this.canvas.sendBackwards(this,e),this},bringForward:function(e){return this.group?t.StaticCanvas.prototype.bringForward.call(this.group,this,e):this.canvas.bringForward(this,e),this},moveTo:function(e){return this.group?t.StaticCanvas.prototype.moveTo.call(this.group,this,e):this.canvas.moveTo(this,e),this}}),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;return n==="left"?i=t.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"&&(i=t.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2),r==="top"?s=t.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"&&(s=t.y-(this.getHeight()+this.strokeWidth*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;return n==="left"?i=t.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"&&(i=t.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2),r==="top"?s=t.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"&&(s=t.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},getCenterPoint:function(){return this.translateToCenterPoint(new fabric.Point(this.left,this.top),this.originX,this.originY)},toLocalPoint:function(t,n,r){var i=this.getCenterPoint(),s,o;return n!==undefined&&r!==undefined?(n==="left"?s=i.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"?s=i.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2:s=i.x,r==="top"?o=i.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"?o=i.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2:o=i.y):(s=this.left,o=this.top),fabric.util.rotatePoint(new fabric.Point(t.x,t.y),i,-e(this.angle)).subtractEquals(new fabric.Point(s,o))},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(){var t=e(this.angle),n=this.getWidth()/2,r=Math.cos(t)*n,i=Math.sin(t)*n,s=this.left,o=this.top;if(this.originX==="center"||this.originX==="right")s-=r;if(this.originY==="center"||this.originY==="bottom")o-=i;return{x:s,y:o}}})}(),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{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,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this[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;fabric.util.object.extend(fabric.Object.prototype,{_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(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>1?this.strokeWidth:0;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),~~(u+n+r*this.scaleY));if(this.hasRotatingPoint&&!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>1?this.strokeWidth/2:0,i=-(this.width/2),s=-(this.height/2),o,u,a=t/this.scaleX,f=t/this.scaleY,l=this.padding/this.scaleX,c=this.padding/this.scaleY,h=n/this.scaleY,p=n/this.scaleX,d=(n-t)/this.scaleX,v=(n-t)/this.scaleY,m=this.height,g=this.width,y=this.transparentCorners?"strokeRect":"fillRect",b=this.transparentCorners,w=typeof G_vmlCanvasManager!="undefined";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,o=i-p-r-l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),this.get("lockUniScaling")||(o=i+g/2-p,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),this.hasRotatingPoint&&(o=i+g/2-p,u=this.flipY?s+m+this.rotatingPointOffset/this.scaleY-f/2+r+c:s-this.rotatingPointOffset/this.scaleY-f/2-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),e.restore(),this}})}(),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r={x1:1,x2:1,y1:1,y2:1},i=t.StaticCanvas.supports("setLineDash");if(t.Line){t.warn("fabric.Line is already defined");return}t.Line=t.util.createClass(t.Object,{type:"line",initialize:function(e,t){t=t||{},e||(e=[0,0,0,0]),this.callSuper("initialize",t),this.set("x1",e[0]),this.set("y1",e[1]),this.set("x2",e[2]),this.set("y2",e[3]),this._setWidthHeight(t)},_setWidthHeight:function(e){e||(e={}),this.set("width",Math.abs(this.x2-this.x1)||1),this.set("height",Math.abs(this.y2-this.y1)||1),this.set("left","left"in e?e.left:Math.min(this.x1,this.x2)+this.width/2),this.set("top","top"in e?e.top:Math.min(this.y1,this.y2)+this.height/2)},_set:function(e,t){return this[e]=t,e in r&&this._setWidthHeight(),this},_render:function(e){e.beginPath();var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix&&e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top);if(!this.strokeDashArray||this.strokeDashArray&&i){var n=this.x1<=this.x2?-1:1,r=this.y1<=this.y2?-1:1;e.moveTo(this.width===1?0:n*this.width/2,this.height===1?0:r*this.height/2),e.lineTo(this.width===1?0:n*-1*this.width/2,this.height===1?0:r*-1*this.height/2)}e.lineWidth=this.strokeWidth;var s=e.strokeStyle;e.strokeStyle=this.stroke||e.fillStyle,this._renderStroke(e),e.strokeStyle=s},_renderDashedStroke:function(e){var n=this.x1<=this.x2?-1:1,r=this.y1<=this.y2?-1:1,i=this.width===1?0:n*this.width/2,s=this.height===1?0:r*this.height/2;e.beginPath(),t.util.drawDashedLine(e,i,s,-i,-s,this.strokeDashArray),e.closePath()},toObject:function(e){return n(this.callSuper("toObject",e),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG: +;if(this.isDrawingMode&&this._isCurrentlyDrawing){this._isCurrentlyDrawing=!1,this.clipTo&&this.contextTop.restore(),this.freeDrawingBrush.onMouseUp(),this.fire("mouse:up",{e:e});return}if(this._currentTransform){var n=this._currentTransform;t=n.target,t._scaling&&(t._scaling=!1),t.isMoving=!1,t.setCoords(),this.stateful&&t.hasStateChanged()&&(this.fire("object:modified",{target:t}),t.fire("modified")),this._previousOriginX&&(this._currentTransform.target.adjustPosition(this._previousOriginX),this._previousOriginX=null)}this._currentTransform=null,this.selection&&this._groupSelector&&this._findSelectedObjects(e);var r=this.getActiveGroup();r&&(r.setObjectsCoords(),r.set("isMoving",!1),this._setCursor(this.defaultCursor)),this._groupSelector=null,this.renderAll(),this._setCursorFromEvent(e,t),this._setCursor("");var i=this;setTimeout(function(){i._setCursorFromEvent(e,t)},50),this.fire("mouse:up",{target:t,e:e}),t&&t.fire("mouseup",{e:e})},__onMouseDown:function(e){var t,n="which"in e?e.which===1:e.button===1;if(!n&&!fabric.isTouchSupported)return;if(this.isDrawingMode){t=this.getPointer(e),this._isCurrentlyDrawing=!0,this.discardActiveObject().renderAll(),this.clipTo&&fabric.util.clipContext(this,this.contextTop),this.freeDrawingBrush.onMouseDown(t),this.fire("mouse:down",{e:e});return}if(this._currentTransform)return;var r=this.findTarget(e),i;t=this.getPointer(e),this._shouldClearSelection(e,r)?(this._groupSelector={ex:t.x,ey:t.y,top:0,left:0},this.deactivateAllWithDispatch(),r&&r.selectable&&this.setActiveObject(r,e)):this._shouldHandleGroupLogic(e,r)?(this._handleGroupLogic(e,r),r=this.getActiveGroup()):(this.stateful&&r.saveState(),(i=r._findTargetCorner(e,this._offset))&&this.onBeforeScaleRotate(r),r!==this.getActiveGroup()&&r!==this.getActiveObject()&&(this.deactivateAll(),this.setActiveObject(r,e)),this._setupCurrentTransform(e,r)),this.renderAll(),this.fire("mouse:down",{target:r,e:e}),r&&r.fire("mousedown",{e:e}),i==="mtr"&&(this._previousOriginX=this._currentTransform.target.originX,this._currentTransform.target.adjustPosition("center"),this._currentTransform.left=this._currentTransform.target.left,this._currentTransform.top=this._currentTransform.target.top)},__onMouseMove:function(e){var t,n;if(this.isDrawingMode){this._isCurrentlyDrawing&&(n=this.getPointer(e),this.freeDrawingBrush.onMouseMove(n)),this.upperCanvasEl.style.cursor=this.freeDrawingCursor,this.fire("mouse:move",{e:e});return}var r=this._groupSelector;if(r)n=i(e,this.upperCanvasEl),r.left=n.x-this._offset.left-r.ex,r.top=n.y-this._offset.top-r.ey,this.renderTop();else if(!this._currentTransform){var s=this.upperCanvasEl.style;t=this.findTarget(e);if(!t||t&&!t.selectable){for(var o=this._objects.length;o--;)this._objects[o]&&!this._objects[o].active&&this._objects[o].set("active",!1);s.cursor=this.defaultCursor}else this._setCursorFromEvent(e,t)}else{n=i(e,this.upperCanvasEl);var u=n.x,a=n.y,f=!1,l=this._currentTransform;t=l.target,t.isMoving=!0,(l.action==="scale"||l.action==="scaleX"||l.action==="scaleY")&&(e.altKey&&(l.originX!=="center"||l.originY!=="center")||!e.altKey&&l.originX==="center"&&l.originY==="center")&&(this._resetCurrentTransform(e),f=!0),l.action==="rotate"?(this._rotateObject(u,a),this.fire("object:rotating",{target:t,e:e}),t.fire("rotating",{e:e})):l.action==="scale"?((e.shiftKey||this.uniScaleTransform)&&!t.get("lockUniScaling")?(l.currentAction="scale",this._scaleObject(u,a)):(!f&&l.currentAction==="scale"&&this._resetCurrentTransform(e),l.currentAction="scaleEqually",this._scaleObject(u,a,"equally")),this.fire("object:scaling",{target:t,e:e}),t.fire("scaling",{e:e})):l.action==="scaleX"?(this._scaleObject(u,a,"x"),this.fire("object:scaling",{target:t,e:e}),t.fire("scaling",{e:e})):l.action==="scaleY"?(this._scaleObject(u,a,"y"),this.fire("object:scaling",{target:t,e:e}),t.fire("scaling",{e:e})):(this._translateObject(u,a),this.fire("object:moving",{target:t,e:e}),t.fire("moving",{e:e}),this._setCursor(this.moveCursor)),this.renderAll()}this.fire("mouse:move",{target:t,e:e}),t&&t.fire("mousemove",{e:e})},_setCursorFromEvent:function(n,r){var i=this.upperCanvasEl.style;if(!r)return i.cursor=this.defaultCursor,!1;var s=this.getActiveGroup(),o=r._findTargetCorner&&(!s||!s.contains(r))&&r._findTargetCorner(n,this._offset);if(!o)i.cursor=this.hoverCursor;else if(o in t){var u=Math.round(r.getAngle()%360/45);u<0&&(u+=8),u+=t[o],u%=8,i.cursor=e[u]}else{if(o!=="mtr"||!r.hasRotatingPoint)return i.cursor=this.defaultCursor,!1;i.cursor=this.rotationCursor}return!0}})}(),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;return r!==1?this.__toDataURLWithMultiplier(t,n,r):this.__toDataURL(t,n)},__toDataURL:function(e,t){this.renderAll(!0);var n=this.upperCanvasEl||this.lowerCanvasEl,r=fabric.StaticCanvas.supports("toDataURLWithQuality")?n.toDataURL("image/"+e,t):n.toDataURL("image/"+e);return this.contextTop&&this.clearContext(this.contextTop),this.renderAll(),r},__toDataURLWithMultiplier:function(e,t,n){var r=this.getWidth(),i=this.getHeight(),s=r*n,o=i*n,u=this.getActiveObject(),a=this.getActiveGroup(),f=this.contextTop||this.contextContainer;this.setWidth(s).setHeight(o),f.scale(n,n),a?this._tempRemoveBordersControlsFromGroup(a):u&&this.deactivateAll&&this.deactivateAll(),this.width=r,this.height=i,this.renderAll(!0);var l=this.__toDataURL(e,t);return f.scale(1/n,1/n),this.setWidth(r).setHeight(i),a?this._restoreBordersControlsOnGroup(a):u&&this.setActiveObject&&this.setActiveObject(u),this.contextTop&&this.clearContext(this.contextTop),this.renderAll(),l},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){return this.loadFromJSON(e,t)},loadFromJSON:function(e,t){if(!e)return;var n=typeof e=="string"?JSON.parse(e):e;this.clear();var r=this;return this._enlivenObjects(n.objects,function(){r._setBgOverlayImages(n,t)}),this},_setBgOverlayImages:function(e,t){var n=this,r,i,s,o=function(){t&&i&&s&&r&&t()};e.backgroundImage?this.setBackgroundImage(e.backgroundImage,function(){n.backgroundImageOpacity=e.backgroundImageOpacity,n.backgroundImageStretch=e.backgroundImageStretch,n.renderAll(),i=!0,o()}):i=!0,e.overlayImage?this.setOverlayImage(e.overlayImage,function(){n.overlayImageLeft=e.overlayImageLeft||0,n.overlayImageTop=e.overlayImageTop||0,n.renderAll(),s=!0,o()}):s=!0,e.background?this.setBackgroundColor(e.background,function(){n.renderAll(),r=!0,o()}):r=!0,!e.backgroundImage&&!e.overlayImage&&!e.background&&t&&t()},_enlivenObjects:function(e,t){var n=this;e.length===0&&t&&t();var r=this.renderOnAddition;this.renderOnAddition=!1,fabric.util.enlivenObjects(e,function(e){e.forEach(function(e,t){n.insertAt(e,t,!0)}),n.renderOnAddition=r,t&&t()})},_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){var t=JSON.stringify(this);this.cloneWithoutData(function(n){n.loadFromJSON(t,function(){e&&e(n)})})},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:"center",originY:"center",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,opacity:1,angle:0,cornerSize:12,transparentCorners:!0,padding:0,borderColor:"rgba(102,153,255,0.75)",cornerColor:"rgba(102,153,255,0.5)",centerTransform:!1,fill:"rgb(0,0,0)",fillRule:"source-over",overlayFill:null,stroke:null,strokeWidth:1,strokeDashArray:null,strokeLineCap:"butt",strokeLineJoin:"miter",strokeMiterLimit:10,shadow:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,transformMatrix:null,minScaleLimit:.01,selectable:!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 angle opacity cornerSize fill overlayFill originX originY stroke strokeWidth strokeDashArray fillRule borderScaleFactor transformMatrix selectable shadow visible".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))},_initShadow:function(e){e.shadow&&!(e.shadow instanceof t.Shadow)&&this.setShadow(e.shadow)},_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._initShadow(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,overlayFill:this.overlayFill,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),selectable:this.selectable,hasControls:this.hasControls,hasBorders:this.hasBorders,hasRotatingPoint:this.hasRotatingPoint,transparentCorners:this.transparentCorners,perPixelTargetFind:this.perPixelTargetFind,shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,clipTo:this.clipTo&&String(this.clipTo)};return this.includeDefaultValues||(i=this._removeDefaultValues(i)),t.util.populateWithProperties(this,i,e),i},toDatalessObject:function(e){return this.toObject(e)},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?"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=this.getAngle(),n=this.getCenterPoint(),i=t.Object.NUM_FRACTION_DIGITS,s="translate("+r(n.x,i)+" "+r(n.y,i)+")",o=e!==0?" rotate("+r(e,i)+")":"",u=this.scaleX===1&&this.scaleY===1?"":" scale("+r(this.scaleX,i)+" "+r(this.scaleY,i)+")",a=this.flipX?"matrix(-1 0 0 1 0 0) ":"",f=this.flipY?"matrix(1 0 0 -1 0 0)":"";return[s,o,u,a,f].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},_removeDefaultValues:function(e){var n=t.Object.prototype.options;return n&&this.stateProperties.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,t){var n=e==="scaleX"||e==="scaleY";n&&(t=this._constrainScale(t));if(e==="scaleX"&&t<0)this.flipX=!this.flipX,t*=-1;else if(e==="scaleY"&&t<0)this.flipY=!this.flipY,t*=-1;else if(e==="width"||e==="height")this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2);return this[e]=t,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();var r=this.transformMatrix;r&&!this.group&&e.setTransform(r[0],r[1],r[2],r[3],r[4],r[5]),n||this.transform(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),this.overlayFill?e.fillStyle=this.overlayFill:this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill),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()},_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();n.width=this.getBoundingRectWidth(),n.height=this.getBoundingRectHeight(),t.util.wrapElement(n,"div");var r=new t.Canvas(n);e.format==="jpeg"&&(r.backgroundColor="#fff");var i={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set({active:!1,left:n.width/2,top:n.height/2}),r.add(this);var s=r.toDataURL(e);return this.set(i).setCoords(),r.dispose(),r=null,s},isType:function(e){return this.type===e},toGrayscale:function(){var e=this.get("fill");return e&&this.set("overlayFill",(new t.Color(e)).toGrayscale().toRgb()),this},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()})}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))},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.centerH().centerV()},remove:function(){return this.canvas.remove(this)},sendToBack:function(){return this.group?t.StaticCanvas.prototype.sendToBack.call(this.group,this):this.canvas.sendToBack(this),this},bringToFront:function(){return this.group?t.StaticCanvas.prototype.bringToFront.call(this.group,this):this.canvas.bringToFront(this),this},sendBackwards:function(e){return this.group?t.StaticCanvas.prototype.sendBackwards.call(this.group,this,e):this.canvas.sendBackwards(this,e),this},bringForward:function(e){return this.group?t.StaticCanvas.prototype.bringForward.call(this.group,this,e):this.canvas.bringForward(this,e),this},moveTo:function(e){return this.group?t.StaticCanvas.prototype.moveTo.call(this.group,this,e):this.canvas.moveTo(this,e),this}}),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;return n==="left"?i=t.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"&&(i=t.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2),r==="top"?s=t.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"&&(s=t.y-(this.getHeight()+this.strokeWidth*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;return n==="left"?i=t.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"&&(i=t.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2),r==="top"?s=t.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"&&(s=t.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},getCenterPoint:function(){return this.translateToCenterPoint(new fabric.Point(this.left,this.top),this.originX,this.originY)},toLocalPoint:function(t,n,r){var i=this.getCenterPoint(),s,o;return n!==undefined&&r!==undefined?(n==="left"?s=i.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"?s=i.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2:s=i.x,r==="top"?o=i.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"?o=i.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2:o=i.y):(s=this.left,o=this.top),fabric.util.rotatePoint(new fabric.Point(t.x,t.y),i,-e(this.angle)).subtractEquals(new fabric.Point(s,o))},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(){var t=e(this.angle),n=this.getWidth()/2,r=Math.cos(t)*n,i=Math.sin(t)*n,s=this.left,o=this.top;if(this.originX==="center"||this.originX==="right")s-=r;if(this.originY==="center"||this.originY==="bottom")o-=i;return{x:s,y:o}}})}(),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{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,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this[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;fabric.util.object.extend(fabric.Object.prototype,{_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(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>1?this.strokeWidth:0;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),~~(u+n+r*this.scaleY));if(this.hasRotatingPoint&&!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>1?this.strokeWidth/2:0,i=-(this.width/2),s=-(this.height/2),o,u,a=t/this.scaleX,f=t/this.scaleY,l=this.padding/this.scaleX,c=this.padding/this.scaleY,h=n/this.scaleY,p=n/this.scaleX,d=(n-t)/this.scaleX,v=(n-t)/this.scaleY,m=this.height,g=this.width,y=this.transparentCorners?"strokeRect":"fillRect",b=this.transparentCorners,w=typeof G_vmlCanvasManager!="undefined";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,o=i-p-r-l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),this.get("lockUniScaling")||(o=i+g/2-p,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),this.hasRotatingPoint&&(o=i+g/2-p,u=this.flipY?s+m+this.rotatingPointOffset/this.scaleY-f/2+r+c:s-this.rotatingPointOffset/this.scaleY-f/2-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),e.restore(),this}})}(),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.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);var t=this.get("radius")*2;this.set("width",t).set("height",t)},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(){var e=this._createBaseSVGMarkup();return e.push("'),e.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(){var e=this._createBaseSVGMarkup(),t=this.width/2,n=this.height/2,r=[-t+" "+n,"0 "+ -n,t+" "+n].join(",");return e.push("'),e.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(){var e=this._createBaseSVGMarkup();return e.push("'),e.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 r(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}t.Rect=t.util.createClass(t.Object,{type:"rect",rx:0,ry:0,strokeDashArray:null,initialize:function(e){e=e||{},this._initStateProperties(),this.callSuper("initialize",e),this._initRxRy(),this.x=e.x||0,this.y=e.y||0},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_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!=="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){return n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")})},toSVG:function(){var e=this._createBaseSVGMarkup();return e.push("'),e.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,i){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=r(s);var o=new t.Rect(n(i?t.util.object.clone(i):{},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,r=t.util.array.min;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(){var e=[],t=this._createBaseSVGMarkup();for(var r=0,i=this.points.length;r'),t.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'),t.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(){var e=[],t=this._createBaseSVGMarkup();for(var n=0,r=this.path.length;n',"",""),t.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 n=0,r=e.length;n"),t.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)},toGrayscale:function(){var e=this.paths.length;while(e--)this.paths[e].toGrayscale();return this},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(){var e=this.left,t=this.top;this.forEachObject(function(n){var r=n.get("left"),i=n.get("top");n.set("originalLeft",r),n.set("originalTop",i),n.set("left",r-e),n.set("top",i-t),n.setCoords(),n.__origHasControls=n.hasControls,n.hasControls=!1},this)},toString:function(){return"#"},getObjects:function(){return this._objects},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),this.forEachObject(function(e){e.set("active",!0),e.group=this},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,textShadow:!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);var r=Math.max(this.scaleX,this.scaleY);this.clipTo&&t.util.clipContext(this,e);for(var i=0,s=this._objects.length;i'+e.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 t=this.fill;this.fill=null,e.push("'),this.fill=t}return e.push(""),e.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.setElement(this._originalImage),e&&e();return}var t=this._originalImage,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(),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)},_initFilters:function(e){e.filters&&e.filters.length&&(this.filters=e.filters.map(function(e){return e&&fabric.Image.filters[e.type].fromObject(e)}))},_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){var n=fabric.document.createElement("img"),r=e.src;e.width&&(n.width=e.width),e.height&&(n.height=e.height),n.onload=function(){fabric.Image.prototype._initFilters.call(e,e);var r=new fabric.Image(n,e);t&&t(r),n=n.onload=n.onerror=null},n.onerror=function(){fabric.log("Error loading "+n.src),t&&t(null,!0),n=n.onload=n.onerror=null},n.src=r},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))})},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}(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.Brightness=fabric.util.createClass({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;s=0&&N=0&&Co&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.object.clone,i=t.util.toFixed,s=t.StaticCanvas.supports("setLineDash");if(t.Text){t.warn("fabric.Text is already defined");return}var o=t.Object.prototype.stateProperties.concat();o.push("fontFamily","fontWeight","fontSize","path","text","textDecoration","textShadow","textAlign","fontStyle","lineHeight","backgroundColor","textBackgroundColor","useNative"),t.Text=t.util.createClass(t.Object,{_dimensionAffectingProps:{fontSize:!0,fontWeight:!0,fontFamily:!0,textDecoration:!0,fontStyle:!0,lineHeight:!0,stroke:!0,strokeWidth:!0,text:!0},type:"text",fontSize:40,fontWeight:"normal",fontFamily:"Times New Roman",textDecoration:"",textShadow:"",textAlign:"left",fontStyle:"",lineHeight:1.3,backgroundColor:"",textBackgroundColor:"",path:null,useNative:!0,stateProperties:o,initialize:function(e,t){t=t||{},this.text=e,this.__skipDimension=!0,this.setOptions(t),this.__skipDimension=!1,this._initDimensions(),this.setCoords()},_initDimensions:function(){if(this.__skipDimension)return;var e=t.util.createCanvasElement();this._render(e.getContext("2d"))},toString:function(){return"#'},_render:function(e){var t=this.group&&this.group.type!=="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){this.transform(e,t.isLikelyNode),this._setTextStyles(e);var n=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this.clipTo&&t.util.clipContext(this,e),this._renderTextBackground(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),e.save(),this._setTextShadow(e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this.textShadow&&e.restore(),e.restore(),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this.clipTo&&e.restore(),this._setBoundaries(e,n),this._totalLineHeight=0,this.setCoords()},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_setTextShadow:function(e){if(!this.textShadow)return;var t=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/,n=this.textShadow,r=t.exec(this.textShadow),i=n.replace(t,"");e.save(),e.shadowColor=i,e.shadowOffsetX=parseInt(r[1],10),e.shadowOffsetY=parseInt(r[2],10),e.shadowBlur=parseInt(r[3],10),this._shadows=[{blur:e.shadowBlur,color:e.shadowColor,offX:e.shadowOffsetX,offY:e.shadowOffsetY}],this._shadowOffsets=[[parseInt(e.shadowOffsetX,10),parseInt(e.shadowOffsetY,10)]]},_drawTextLine:function(e,t,n,r,i){if(this.textAlign!=="justify"){t[e](n,r,i);return}var s=t.measureText(n).width,o=this.width;if(o>s){var u=n.split(/\s+/),a=t.measureText(n.replace(/\s+/g,"")).width,f=o-a,l=u.length-1,c=f/l,h=0;for(var p=0,d=u.length;p-1&&i(this.fontSize),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(0)},_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){return 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,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),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,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;this.backgroundColor&&this._boundaries&&o.push("');for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.textBackgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_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()+'"'},setColor:function(e){return this.set("fill",e),this},getText:function(){return this.text},_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),fabric.util.object.extend(fabric.Text.prototype,{_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_initDummyElementForCufon:function(){var e=fabric.document.createElement("pre"),t=fabric.document.createElement("div");return t.appendChild(e),typeof G_vmlCanvasManager=="undefined"?e.innerHTML=this.text:e.innerText=this.text.replace(/\r?\n/gi,"\r"),e.style.fontSize=this.fontSize+"px",e.style.letterSpacing="normal",e}}),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"),r=n.createReadStream(e),i="";r.on("data",function(e){i+=e}),r.on("end",function(){t(i)})}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)},fabric.loadSVGFromURL=function(e,t){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t)}):request(e,"",function(e){fabric.loadSVGFromString(e,t)})},fabric.loadSVGFromString=function(e,t){var n=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(n.documentElement,function(e,n){t(e,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),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 47af1fd56defd57800c8ce1e1b6449d4e95a4236..e4de656583fc7318f6ee15109d0f814877b153d3 100644 GIT binary patch delta 38539 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 K=i{Mo$pQde++hI# diff --git a/test.js b/test.js index a7460799..b14dee53 100644 --- a/test.js +++ b/test.js @@ -30,12 +30,13 @@ testrunner.run({ './test/unit/shadow.js' ] }, function(err, report) { + if (err) { + console.log(err); + process.exit(1); + } if(report.failed > 0){ process.on('exit', function() { process.exit(1); }); } - if (err) { - console.log(err); - } });