From ffe6091dd782c1fdaeb80717ccdeabb252b3250e Mon Sep 17 00:00:00 2001 From: kangax Date: Sat, 9 Nov 2013 14:50:30 +0100 Subject: [PATCH] Move `getObjects` to `fabric.Collection`. Add support for `getObjects(type)`. Version 1.3.10. --- HEADER.js | 2 +- dist/all.js | 55 +++++++++++++-------------------- dist/all.min.js | 14 ++++----- dist/all.min.js.gz | Bin 58551 -> 58542 bytes dist/all.require.js | 55 +++++++++++++-------------------- package.json | 2 +- src/mixins/collection.mixin.js | 14 +++++++++ src/shapes/group.class.js | 8 ----- src/static_canvas.class.js | 8 ----- test/unit/canvas_static.js | 13 ++++++++ 10 files changed, 80 insertions(+), 91 deletions(-) diff --git a/HEADER.js b/HEADER.js index d080c7c5..efd7be8e 100644 --- a/HEADER.js +++ b/HEADER.js @@ -1,6 +1,6 @@ /*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "1.3.9" }; +var fabric = fabric || { version: "1.3.10" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; } diff --git a/dist/all.js b/dist/all.js index 40081b1e..ca444d90 100644 --- a/dist/all.js +++ b/dist/all.js @@ -1,7 +1,7 @@ /* build: `node build.js modules=ALL exclude=gestures minifier=uglifyjs` */ /*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "1.3.9" }; +var fabric = fabric || { version: "1.3.10" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; } @@ -1979,6 +1979,20 @@ fabric.Collection = { return this; }, + /** + * Returns an array of children objects of this instance + * @param {String} [type] When specified, only objects of this type are returned + * @return {Array} + */ + getObjects: function(type) { + if (typeof type === 'undefined') { + return this._objects; + } + return this._objects.filter(function(o) { + return o.type === type; + }); + }, + /** * Returns object at specified index * @param {Number} index @@ -7285,18 +7299,17 @@ fabric.Pattern = fabric.util.createClass(/** @lends fabric.Pattern.prototype */ * @param {fabric.Object} obj Object that was removed */ _onObjectRemoved: function(obj) { + // removing active object should fire "selection:cleared" events + if (this.getActiveObject() === obj) { + this.fire('before:selection:cleared', { target: obj }); + this._discardActiveObject(); + this.fire('selection:cleared'); + } + this.fire('object:removed', { target: obj }); obj.fire('removed'); }, - /** - * Returns an array of objects this instance has - * @return {Array} - */ - getObjects: function () { - return this._objects; - }, - /** * Clears specified context of canvas element * @param {CanvasRenderingContext2D} ctx Context to clear @@ -7780,22 +7793,6 @@ fabric.Pattern = fabric.util.createClass(/** @lends fabric.Pattern.prototype */ }, /* _TO_SVG_END_ */ - /** - * Removes an object from canvas and returns it - * @param {fabric.Object} object Object to remove - * @return {fabric.Object} removed object - */ - remove: function (object) { - // removing active object should fire "selection:cleared" events - if (this.getActiveObject() === object) { - this.fire('before:selection:cleared', { target: object }); - this.discardActiveObject(); - this.fire('selection:cleared'); - } - - return fabric.Collection.remove.call(this, object); - }, - /** * Moves an object to the bottom of the stack of drawn objects * @param {fabric.Object} object Object to send to back @@ -16470,14 +16467,6 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot return '#'; }, - /** - * Returns an array of all objects in this group - * @return {Array} group objects - */ - getObjects: function() { - return this._objects; - }, - /** * Adds an object to a group; Then recalculates group's dimension, position. * @param {Object} object diff --git a/dist/all.min.js b/dist/all.min.js index f716f0a4..5295f4cf 100644 --- a/dist/all.min.js +++ b/dist/all.min.js @@ -1,7 +1,7 @@ -/* build: `node build.js modules=ALL exclude=gestures minifier=uglifyjs` *//*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"1.3.9"};typeof exports!="undefined"&&(exports.fabric=fabric),typeof document!="undefined"&&typeof window!="undefined"?(fabric.document=document,fabric.window=window):(fabric.document=require("jsdom").jsdom(""),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined",fabric.SHARED_ATTRIBUTES=["transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width"];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)}},function(e){function r(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e}function i(e,t){return Math.floor(Math.random()*(t-e+1))+e}function o(e){return e*s}function u(e){return e/s}function a(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 f(e,t){return parseFloat(Number(e).toFixed(t))}function l(){return!1}function c(e,t){return e=fabric.util.string.camelize(e.charAt(0).toUpperCase()+e.slice(1)),h(t)[e]}function h(t){if(!t)return fabric;var n=t.split("."),r=n.length,i=e||fabric.window;for(var s=0;s1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r}function m(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),e[d?"lineTo":"moveTo"](r,0),d=!d;e.restore()}function y(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function b(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function w(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 E(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function S(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 x(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]}function T(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=A(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,x=(E-b)*(E-b)+(S-w)*(S-w),T=1/x-.25;T<0&&(T=0);var C=Math.sqrt(T);s===i&&(C=-C);var A=.5*(b+E)-C*(S-w),O=.5*(w+S)+C*(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=t})}function r(e,t){return i(e,t,function(e,t){return e>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(t){var n=this.constructor.superclass.prototype[t];return arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this)}function o(){function u(){this.initialize.apply(this,arguments)}var n=null,o=e.call(arguments,0);typeof o[0]=="function"&&(n=o.shift()),u.superclass=n,u.subclasses=[],n&&(i.prototype=n.prototype,u.prototype=new i,n.subclasses.push(u));for(var a=0,f=o.length;a-1?e.prototype[i]=function(e){return function(){var n=this.constructor.superclass;this.constructor.superclass=r;var i=t[e].apply(this,arguments);this.constructor.superclass=n;if(e!=="initialize")return i}}(i):e.prototype[i]=t[i],n&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};fabric.util.createClass=o}(),function(){function t(e){var t=Array.prototype.slice.call(arguments,1),n,r,i=t.length;for(r=0;r-1?s(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if(r==="opacity")s(e,t[r]);else{var i=r==="float"||r==="cssFloat"?typeof n.styleFloat=="undefined"?"cssFloat":"styleFloat":r;n[i]=t[r]}return e}var t=fabric.document.createElement("div"),n=typeof t.style.opacity=="string",r=typeof t.style.filter=="string",i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(e){return e};n?s=function(e,t){return e.style.opacity=t,e}:r&&(s=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+t*100+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+t*100+")",e}),fabric.util.setStyle=e}(),function(){function t(e){return typeof e=="string"?fabric.document.getElementById(e):e}function s(e,t){var n=fabric.document.createElement(e);for(var r in t)r==="class"?n.className=t[r]:r==="for"?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function o(e,t){(" "+e.className+" ").indexOf(" "+t+" ")===-1&&(e.className+=(e.className?" ":"")+t)}function u(e,t,n){return typeof t=="string"&&(t=s(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t}function a(e){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){n(function(t){e||(e={});var r=t||+(new Date),i=e.duration||500,s=r+i,o,u=e.onChange||function(){},a=e.abort||function(){return!1},f=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},l="startValue"in e?e.startValue:0,c="endValue"in e?e.endValue:100,h=e.byValue||c-l;e.onStart&&e.onStart(),function p(t){o=t||+(new Date);var c=o>s?i:o-r;if(a()){e.onComplete&&e.onComplete();return}u(f(c,l,h,i));if(o>s){e.onComplete&&e.onComplete();return}n(p)}(r)})}var t=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)},n=function(){return t.apply(fabric.window,arguments)};fabric.util.animate=e,fabric.util.requestAnimFrame=n}(),function(){function e(e,t,n,r){return e-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){S.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),S.has(e,function(r){r?S.get(e,function(e){var t=T(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function T(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 N(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 C(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t}function k(e){var t=[];return L(t,e,"backgroundColor"),L(t,e,"overlayColor"),t.join("")}function L(e,t,n){t[n]&&t[n].toSVG&&e.push('','')}function A(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,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;if(typeof t.src!="undefined"){if(!t.complete)return"";if(t.naturalWidth===0||t.naturalHeight===0)return""}return e.createPattern(t,this.repeat)}}),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Shadow){t.warn("fabric.Shadow is already defined.");return}t -.Shadow=t.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,initialize:function(e){typeof e=="string"&&(e=this._parseShadow(e));for(var n in e)this[n]=e[n];this.id=t.Object.__uid++},_parseShadow:function(e){var n=e.trim(),r=t.Shadow.reOffsetsAndBlur.exec(n)||[],i=n.replace(t.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)";return{color:i.trim(),offsetX:parseInt(r[1],10)||0,offsetY:parseInt(r[2],10)||0,blur:parseInt(r[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(e){var t="SourceAlpha";return e&&(e.fill===this.color||e.stroke===this.color)&&(t="SourceGraphic"),''+''+''+""+""+''+""+""},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY};var e={},n=t.Shadow.prototype;return this.color!==n.color&&(e.color=this.color),this.blur!==n.blur&&(e.blur=this.blur),this.offsetX!==n.offsetX&&(e.offsetX=this.offsetX),this.offsetY!==n.offsetY&&(e.offsetY=this.offsetY),e}}),t.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/}(typeof exports!="undefined"?exports:this),function(){"use strict";if(fabric.StaticCanvas){fabric.warn("fabric.StaticCanvas is already defined.");return}var e=fabric.util.object.extend,t=fabric.util.getElementOffset,n=fabric.util.removeFromArray,r=fabric.util.removeListener,i=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass({initialize:function(e,t){t||(t={}),this._initStatic(e,t),fabric.StaticCanvas.activeInstance=this},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!0,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!1,onBeforeScaleRotate:function(){},_initStatic:function(e,t){this._objects=[],this._createLowerCanvas(e),this._initOptions(t),t.overlayImage&&this.setOverlayImage(t.overlayImage,this.renderAll.bind(this)),t.backgroundImage&&this.setBackgroundImage(t.backgroundImage,this.renderAll.bind(this)),t.backgroundColor&&this.setBackgroundColor(t.backgroundColor,this.renderAll.bind(this)),t.overlayColor&&this.setOverlayColor(t.overlayColor,this.renderAll.bind(this)),this.calcOffset()},calcOffset:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(e,t,n){return this.__setBgOverlayImage("overlayImage",e,t,n)},setBackgroundImage:function(e,t,n){return this.__setBgOverlayImage("backgroundImage",e,t,n)},setOverlayColor:function(e,t){return this.__setBgOverlayColor("overlayColor",e,t)},setBackgroundColor:function(e,t){return this.__setBgOverlayColor("backgroundColor",e,t)},__setBgOverlayImage:function(e,t,n,r){return typeof t=="string"?fabric.util.loadImage(t,function(t){this[e]=new fabric.Image(t,r),n&&n()},this):(this[e]=t,n&&n()),this},__setBgOverlayColor:function(e,t,n){if(t.source){var r=this;fabric.util.loadImage(t.source,function(i){r[e]=new fabric.Pattern({source:i,repeat:t.repeat,offsetX:t.offsetX,offsetY:t.offsetY}),n&&n()})}else this[e]=t,n&&n();return this},_createCanvasElement:function(){var e=fabric.document.createElement("canvas");e.style||(e.style={});if(!e)throw 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"],n=this.getActiveGroup();return this.contextTop&&this.selection&&!this._groupSelector&&this.clearContext(this.contextTop),e||this.clearContext(t),this.fire("before:render"),this.clipTo&&fabric.util.clipContext(this,t),this._renderBackground(t),this._renderObjects(t,n),this._renderActiveGroup(t,n),this.clipTo&&t.restore(),this._renderOverlay(t),this.controlsAboveOverlay&&this.interactive&&this.drawControls(t),this.fire("after:render"),this},_renderObjects:function(e,t){for(var n=0,r=this._objects.length;n"),n.join("")},_setSVGPreamble:function(e,t){t.suppressPreamble||e.push('','\n')},_setSVGHeader:function(e,t){e.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),"")},_setSVGObjects:function(e,t){var n=this.getActiveGroup();n&&this.discardActiveGroup();for(var r=0,i=this.getObjects(),s=i.length;r"):this[t]&&t==="overlayColor"&&e.push('")},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.prototype,fabric.Observable),e(fabric.StaticCanvas.prototype,fabric.Collection),e(fabric.StaticCanvas.prototype,fabric.DataURLExporter),e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(e){var t=fabric.util.createCanvasElement();if(!t||!t.getContext)return null;var n=t.getContext("2d");if(!n)return null;switch(e){case"getImageData":return typeof n.getImageData!="undefined";case"setLineDash":return typeof n.setLineDash!="undefined";case"toDataURL":return typeof t.toDataURL!="undefined";case"toDataURLWithQuality":try{return t.toDataURL("image/jpeg",0),!0}catch(r){}return!1;default:return null}}}),fabric.StaticCanvas.prototype.toJSON=fabric.StaticCanvas.prototype.toObject}(),fabric.BaseBrush=fabric.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",setShadow:function(e){return this.shadow=new fabric.Shadow(e),this},_setBrushStyles:function(){var e=this.canvas.contextTop;e.strokeStyle=this.color,e.lineWidth=this.width,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin},_setShadow:function(){if(!this.shadow)return;var e=this.canvas.contextTop;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_resetShadow:function(){var e=this.canvas.contextTop;e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0}}),function(){var e=fabric.util.array.min,t=fabric.util.array.max;fabric.PencilBrush=fabric.util.createClass(fabric.BaseBrush,{initialize:function(e){this.canvas=e,this._points=[]},onMouseDown:function(e){this._prepareForDrawing(e),this._captureDrawingPath(e),this._render()},onMouseMove:function(e){this._captureDrawingPath(e),this.canvas.clearContext(this.canvas.contextTop),this._render()},onMouseUp:function(){this._finalizeAndAddPath()},_prepareForDrawing:function(e){var t=new fabric.Point(e.x,e.y);this._reset(),this._addPoint(t),this.canvas.contextTop.moveTo(t.x,t.y)},_addPoint:function(e){this._points.push(e)},_reset:function(){this._points.length=0,this._setBrushStyles(),this._setShadow()},_captureDrawingPath:function(e){var t=new fabric.Point(e.x,e.y);this._addPoint(t)},_render:function(){var e=this.canvas.contextTop;e.beginPath();var t=this._points[0],n=this._points[1];this._points.length===2&&t.x===n.x&&t.y===n.y&&(t.x-=.5,n.x+=.5),e.moveTo(t.x,t.y);for(var r=1,i=this._points.length;r0&&(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;an.padding?e.x<0?e.x+=n.padding:e.x-=n.padding:e.x=0,i(e.y)>n.padding?e.y<0?e.y+=n.padding:e.y-=n.padding:e.y=0},_rotateObject:function(e,t){var i=this._currentTransform,s=this._offset;if(i.target.get("lockRotation"))return;var o=r(i.ey-i.top-s.top,i.ex-i.left-s.left),u=r(t-i.top-s.top,e-i.left-s.left),a=n(u-o+i.theta);a<0&&(a=360+a),i.target.angle=a},_setCursor:function(e){this.upperCanvasEl.style.cursor=e},_resetObjectTransform:function(e){e.scaleX=1,e.scaleY=1,e.setAngle(0)},_drawSelection:function(){var e=this.contextTop,t=this._groupSelector,n=t.left,r=t.top,s=i(n),o=i(r);e.fillStyle=this.selectionColor,e.fillRect(t.ex-(n>0?0:-n),t.ey-(r>0?0:-r),s,o),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var a=t.ex+u-(n>0?0:s),f=t.ey+u-(r>0?0:o);e.beginPath(),fabric.util.drawDashedLine(e,a,f,a+s,f,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f+o-1,a+s,f+o-1,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f,a,f+o,this.selectionDashArray),fabric.util.drawDashedLine(e,a+s-1,f,a+s-1,f+o,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+u-(n>0?0:s),t.ey+u-(r>0?0:o),s,o)},_findSelectedObjects:function(e){if(!this.selection)return;var t=this._collectObjects();t.length===1?this.setActiveObject(t[0],e):t.length>1&&(t=new fabric.Group(t.reverse()),this.setActiveGroup(t,e),t.saveCoords(),this.fire("selection:created",{target:t}),this.renderAll())},_collectObjects:function(){var e=[],t,n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,u=r+this._groupSelector.top,a=new fabric.Point(s(n,i),s(r,u)),f=new fabric.Point(o(n,i),o(r,u)),l=n===i&&r===u;for(var c=this._objects.length;c--;){t=this._objects[c];if(!t||!t.selectable||!t.visible)continue;if(t.intersectsWithRect(a,f)||t.isContainedWithinRect(a,f)||t.containsPoint(a)||t.containsPoint(f)){t.set("active",!0),e.push(t);if(l)break}}return e},findTarget:function(e,t){if(this.skipTargetFind)return;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._objects[o].evented&&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,n){var i=e==="scaleX"||e==="scaleY";return i&&(n=this._constrainScale(n)),e==="scaleX"&&n<0?(this.flipX=!this.flipX,n*=-1):e==="scaleY"&&n<0?(this.flipY=!this.flipY,n*=-1):e==="width"||e==="height"?this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2):e==="shadow"&&n&&!(n instanceof t.Shadow)&&(n=new t.Shadow(n)),this[e]=n,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save(),this._transform(e,n),this._setStrokeStyles(e),this._setFillStyles(e);var r=this.transformMatrix;r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_transform:function(e,t){var n=this.transformMatrix;n&&!this.group&&e.setTransform(n[0],n[1],n[2],n[3],n[4],n[5]),t||this.transform(e)},_setStrokeStyles:function(e){this.stroke&&(e.lineWidth=this.strokeWidth,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,e.strokeStyle=this.stroke.toLive?this.stroke.toLive(e):this.stroke)},_setFillStyles:function(e){this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill)},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_renderFill:function(e){if(!this.fill)return;this.fill.toLive&&(e.save(),e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0)),e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke)return;e.save(),this.strokeDashArray?(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),o?(e.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(e)):this._renderDashedStroke&&this._renderDashedStroke(e),e.stroke()):this._stroke?this._stroke(e):e.stroke(),this._removeShadow(e),e.restore()},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){var n=this.toDataURL();return t.util.loadImage(n,function(n){e&&e(new t.Image(n))}),this},toDataURL:function(e){e||(e={});var n=t.util.createCanvasElement(),r=this.getBoundingRect();n.width=r.width,n.height=r.height,t.util.wrapElement(n,"div");var i=new t.Canvas(n);e.format==="jpg"&&(e.format="jpeg"),e.format==="jpeg"&&(i.backgroundColor="#fff");var s={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set("active",!1),this.setPositionByOrigin(new t.Point(n.width/2,n.height/2),"center","center");var o=this.canvas;i.add(this);var u=i.toDataURL(e);return this.set(s).setCoords(),this.canvas=o,i.dispose(),i=null,u},isType:function(e){return this.type===e},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}return this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){return this.set("fill",new t.Pattern(e))},setShadow:function(e){return this.set("shadow",new t.Shadow(e))},setColor:function(e){return this.set("fill",e),this},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.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(){var e=new fabric.Point(this.left,this.top);return this.translateToCenterPoint(e,this.originX,this.originY)},getPointByOrigin:function(e,t){var n=this.getCenterPoint();return this.translateToOriginPoint(n,e,t)},toLocalPoint:function(t,n,r){var i=this.getCenterPoint(),s,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(){return this.translateToOriginPoint(this.getCenterPoint(),"left","center")}})}(),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{oCoords:null,intersectsWithRect:function(e,t){var n=this.oCoords,r=new fabric.Point(n.tl.x,n.tl.y),i=new fabric.Point(n.tr.x,n.tr.y),s=new fabric.Point(n.bl.x,n.bl.y),o=new fabric.Point(n.br.x,n.br.y),u=fabric.Intersection.intersectPolygonRectangle([r,i,o,s],e,t);return u.status==="Intersection"},intersectsWithObject:function(e){function t(e){return{tl:new fabric.Point(e.tl.x,e.tl.y),tr:new fabric.Point(e.tr.x,e.tr.y),bl:new fabric.Point(e.bl.x,e.bl.y),br:new fabric.Point(e.br.x,e.br.y)}}var n=t(this.oCoords),r=t(e.oCoords),i=fabric.Intersection.intersectPolygonPolygon([n.tl,n.tr,n.br,n.bl],[r.tl,r.tr,r.br,r.bl]);return i.status==="Intersection"},isContainedWithinObject:function(e){var t=e.getBoundingRect(),n=new fabric.Point(t.left,t.top),r=new fabric.Point(t.left+t.width,t.top+t.height);return this.isContainedWithinRect(n,r)},isContainedWithinRect:function(e,t){var n=this.getBoundingRect();return n.left>e.x&&n.left+n.widthe.y&&n.top+n.height=e.y&&f.d.y>=e.y)continue;f.o.x===f.d.x&&f.o.x>=e.x?(o=f.o.x,u=e.y):(n=0,r=(f.d.y-f.o.y)/(f.d.x-f.o.x),i=e.y-n*e.x,s=f.o.y-r*f.o.x,o=-(i-s)/(n-r),u=i+n*o),o>=e.x&&(a+=1);if(a===2)break}return a},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],t=fabric.util.array.min(e),n=fabric.util.array.max(e),r=Math.abs(t-n),i=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],s=fabric.util.array.min(i),o=fabric.util.array.max(i),u=Math.abs(s-o);return{left:t,top:s,width:r,height:u}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(e){return Math.abs(e)1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x:m.x,y:m.y};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords&&this._setCornerCoords(),this}})}(),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this.get(e)!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{_controlsVisibility:null,_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(!this.isControlVisible(a))continue;if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner),o=this._findCrossPoints({x:i,y:s},u);if(o!==0&&o%2===1)return this.__corner=a,a}return!1},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e. -ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=~~(this.strokeWidth/2)*2;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)-.5,~~(-(u/2)-t-r/2*this.scaleY)-.5,~~(o+n+r*this.scaleX)+1,~~(u+n+r*this.scaleY)+1);if(this.hasRotatingPoint&&this.isControlVisible("mtr")&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;var t=this.cornerSize,n=t/2,r=~~(this.strokeWidth/2),i=-(this.width/2),s=-(this.height/2),o,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,this.isControlVisible("tl")&&(o=i-p-r-l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),this.isControlVisible("tr")&&(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)),this.isControlVisible("bl")&&(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)),this.isControlVisible("br")&&(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")||(this.isControlVisible("mt")&&(o=i+g/2-p,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),this.isControlVisible("mb")&&(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)),this.isControlVisible("mr")&&(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)),this.isControlVisible("ml")&&(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&&this.isControlVisible("mtr")&&(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},isControlVisible:function(e){return this._getControlsVisibility()[e]},setControlVisible:function(e,t){return this._getControlsVisibility()[e]=t,this},setControlsVisibility:function(e){e||(e={});for(var t in e)this.setControlVisible(t,e[t]);return this},_getControlsVisibility:function(){return this._controlsVisibility||(this._controlsVisibility={tl:!0,tr:!0,br:!0,bl:!0,ml:!0,mt:!0,mr:!0,mb:!0,mtr:!0}),this._controlsVisibility}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("left"),endValue:this.getCenter().left,duration:this.FX_DURATION,onChange:function(t){e.set("left",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxCenterObjectV:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("top"),endValue:this.getCenter().top,duration:this.FX_DURATION,onChange:function(t){e.set("top",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxRemove:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("opacity"),endValue:0,duration:this.FX_DURATION,onStart:function(){e.set("active",!1)},onChange:function(t){e.set("opacity",t),s.renderAll(),i()},onComplete:function(){s.remove(e),r()}}),this}}),fabric.util.object.extend(fabric.Object.prototype,{animate:function(){if(arguments[0]&&typeof arguments[0]=="object"){var e=[],t,n;for(t in arguments[0])e.push(t);for(var r=0,i=e.length;r'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e)},_set:function(e,t){return this.callSuper("_set",e,t),e==="radius"&&this.setRadius(t),this},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(e){var t=this._createBaseSVGMarkup(),n=this.width/2,r=this.height/2,i=[-n+" "+r,"0 "+ -r,n+" "+r].join(",");return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this._renderFill(e),this._renderStroke(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}var r=t.Object.prototype.stateProperties.concat();r.push("rx","ry","x","y"),t.Rect=t.util.createClass(t.Object,{stateProperties:r,type:"rect",rx:0,ry:0,x:0,y:0,strokeDashArray:null,initialize:function(e){e=e||{},this.callSuper("initialize",e),this._initRxRy(),this.x=e.x||0,this.y=e.y||0},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height,u=this.group&&this.group.type!=="group";e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y);var a=t!==0||n!==0;e.moveTo(r+t,i),e.lineTo(r+s-t,i),a&&e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),a&&e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),a&&e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),a&&e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){var t=n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,r){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=i(s);var o=new t.Rect(n(r?t.util.object.clone(r):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(e){var t=[],r=this._createBaseSVGMarkup();for(var i=0,s=this.points.length;i'),e?e(r.join("")):r.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),e?e(n.join("")):n.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n"},toObject:function(e){var t=s(this.callSuper("toObject",e),{path:this.path,pathOffset:this.pathOffset});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(e){var t=[],n=this._createBaseSVGMarkup();for(var r=0,i=this.path.length;r',"",""),e?e(n.join("")):n.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n=[],r,i,s=/(-?\.\d+)|(-?\d+(\.\d+)?)/g,o,u;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var r=0,i=t.length;r"),e?e(n.join("")):n.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e,n){typeof e.paths=="string"?t.loadSVGFromURL(e.paths,function(r){var i=e.paths;delete e.paths;var s=t.util.groupSVGElements(r,e,i);n(s)}):t.util.enlivenObjects(e.paths,function(r){delete e.paths,n(new t.PathGroup(r,e))})},t.PathGroup.async=!0}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){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._moveFlippedObject(e),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,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'];for(var n=0,r=this._objects.length;n"),e?e(t.join("")):t.join("")},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','');if(this.stroke||this.strokeDashArray){var n=this.fill;this.fill=null,t.push("'),this.fill=n}return t.push(""),e?e(t.join("")):t.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this._element=this._originalElement,e&&e();return}var t=this._originalElement,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;return n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height,fabric.isLikelyNode?(r.src=n.toBuffer(undefined,fabric.Image.pngCompression),i._element=r,e&&e()):(r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png")),this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e),this._element.crossOrigin=this.crossOrigin},_initFilters:function(e,t){e.filters&&e.filters.length?fabric.util.enlivenObjects(e.filters,function(e){t&&t(e)},"fabric.Image.filters"):t&&t()},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){fabric.Image.prototype._initFilters.call(e,e,function(r){e.filters=r||[];var i=new fabric.Image(n,e);t&&t(i)})},null,e.crossOrigin)},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))},null,n&&n.crossOrigin)},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0,fabric.Image.pngCompression=1}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.BaseFilter=fabric.util.createClass({type:"BaseFilter",toObject:function(){return{type:this.type}},toJSON:function(){return this.toObject()}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend;t.Image.filters.Brightness=t.util.createClass(t.Image.filters.BaseFilter,{type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;s=0&&N=0&&C-1?e.channel:0},applyTo:function(e){if(!this.mask)return;var n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=r.data,s=this.mask.getElement(),o=t.util.createCanvasElement(),u=this.channel,a,f=r.width*r.height*4;o.width=s.width,o.height=s.height,o.getContext("2d").drawImage(s,0,0,s.width,s.height);var l=o.getContext("2d").getImageData(0,0,s.width,s.height),c=l.data;for(a=0;ao&&f>o&&l>o&&u(a-f)'},_render:function(e){var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaNative:function(e){var n=this.text.split(this._reNewline);this.transform(e,t.isLikelyNode),this._setTextStyles(e),this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this.clipTo&&t.util.clipContext(this,e),this._renderTextBackground(e,n),this._translateForTextAlign(e),this._renderText(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this.clipTo&&e.restore(),this._setBoundaries(e,n),this._totalLineHeight=0},_renderText:function(e,t){e.save(),this._setShadow(e),this._renderTextFill(e,t),this._renderTextStroke(e,t),this._removeShadow(e),e.restore()},_translateForTextAlign:function(e){this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0))},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_renderChars:function(e,t,n,r,i){t[e](n,r,i)},_renderTextLine:function(e,t,n,r,i,s){i-=this.fontSize/4;if(this.textAlign!=="justify"){this._renderChars(e,t,n,r,i,s);return}var o=t.measureText(n).width,u=this.width;if(u>o){var a=n.split(/\s+/),f=t.measureText(n.replace(/\s+/g,"")).width,l=u-f,c=a.length-1,h=l/c,p=0;for(var d=0,v=a.length;d-1&&i(this.fontSize*this.lineHeight),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize*this.lineHeight-this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(this.fontSize*this.lineHeight-this.fontSize)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(e,t){if(!this.visible)return;e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){var t=n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textAlign:this.textAlign,path:this.path,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=[],n=this.text.split(this._reNewline),r=this._getSVGLeftTopOffsets(n),i=this._getSVGTextAndBg(r.lineTop,r.textLeft,n),s=this._getSVGShadows(r.lineTop,n);return r.textTop+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,this._wrapSVGTextAndBg(t,i,s,r),e?e(t.join("")):t.join("")},_getSVGLeftTopOffsets:function(e){var t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight;return{textLeft:n,textTop:r,lineTop:t}},_wrapSVGTextAndBg:function(e,t,n,r){e.push('',t.textBgRects.join(""),"',n.join(""),t.textSpans.join(""),"","")},_getSVGShadows:function(e,n){var r=[],s,o,u=1;if(!this.shadow||!this._boundaries)return r;for(s=0,o=n.length;s",t.util.string.escapeXml(n[s]),""),u=1}else u++;return r},_getSVGTextAndBg:function(e,t,n){var r=[],i=[],s=1;this._setSVGBg(i);for(var o=0,u=n.length;o",t.util.string.escapeXml(e),"")},_setSVGTextLineBg:function(e,t,n,r){e.push("')},_setSVGBg:function(e){this.backgroundColor&&this._boundaries&&e.push("')},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),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.shadow&&this.shadow.toString(),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,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(){var e=fabric.util.object.clone,t=fabric.util.toFixed;fabric.IText=fabric.util.createClass(fabric.Text,fabric.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"#333",cursorDelay:1e3,cursorDuration:600,styles:null,skipFillStrokeCheck:!0,_reSpace:/\s|\n/,_fontSizeFraction:4,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,_charWidthsCache:{},initialize:function(e,t){this.styles=t.styles||{},this.callSuper("initialize",e,t),this.initBehavior(),fabric.IText.instances.push(this)},isEmptyStyles:function(){if(!this.styles)return!0;var e=this.styles;for(var t in e)for(var n in e[t])for(var r in e[t][n])return!1;return!0},setSelectionStart:function(e){this.selectionStart=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionStart=e)},setSelectionEnd:function(e){this.selectionEnd=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionEnd=e)},getSelectionStyles:function(){var e=this.get2DCursorLocation();return this.styles[e.lineIndex]?this.styles[e.lineIndex][e.charIndex]||{}:{}},setSelectionStyles:function(e){if(this.selectionStart===this.selectionEnd)this._extendStyles(this.selectionStart,e);else for(var t=this.selectionStart;t-1&&this._renderCharDecorationAtOffset(e,n,r+this.fontSize/this._fontSizeFraction,i,0),o.indexOf("line-through")>-1&&this._renderCharDecorationAtOffset(e,n,r+this.fontSize/this._fontSizeFraction,i,s/this._fontSizeFraction),o.indexOf("overline")>-1&&this._renderCharDecorationAtOffset(e,n,r,i,s-this.fontSize/this._fontSizeFraction)},_renderCharDecorationAtOffset:function(e,t,n,r,i){e.fillRect(t,n-i,r,1)},_renderTextLine:function(e,t,n,r,i,s){i+=this.fontSize/4,this.callSuper("_renderTextLine",e,t,n,r,i,s)},_renderTextDecoration:function(e,t){if(this.isEmptyStyles())return this.callSuper("_renderTextDecoration",e,t)},_renderTextLinesBackground:function(e,t){if(!this.textBackgroundColor&&!this.styles)return;e.save(),this.textBackgroundColor&&(e.fillStyle=this.textBackgroundColor);var n=0,r=this.fontSize/this._fontSizeFraction;for(var i=0,s=t.length;in&&(n=s)}return n},_getHeightOfLine:function(e,t,n){n=n||this.text.split(this._reNewline);var r=this._getHeightOfChar(e,n[t][0],t,0),i=n[t],s=i.split("");for(var o=1,u=s.length;or&&(r=a)}return r*this.lineHeight},_getTextHeight:function(e,t){var n=0;for(var r=0,i=t.length;r',fabric.util.string.escapeXml(a[d]),"");var y=this._getWidthOfChar(this.ctx,a[d],n,d);m.textBackgroundColor&&o.push(''),f+=y}}}),fabric.IText.fromObject=function(t){return new fabric.IText(t.text,e(t))},fabric.IText.instances=[]}(),function(){var e=fabric.util.object.clone;fabric.util.object.extend(fabric.IText.prototype,{initBehavior:function(){this.initKeyHandlers(),this.initCursorSelectionHandlers(),this.initDblClickSimulation(),this.initHiddenTextarea()},initKeyHandlers:function(){fabric.util.addListener(document,"keydown",this.onKeyDown.bind(this)),fabric.util.addListener(document,"keypress",this.onKeyPress.bind(this))},initHiddenTextarea:function(){if(!/(iPad|iPhone|iPod)/g.test(navigator.userAgent))return;this.hiddenTextarea=fabric.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.style.cssText="position: absolute; top: 0; left: -9999px",fabric.document.body.appendChild(this.hiddenTextarea)},initDblClickSimulation:function(){var e=+(new Date),t,n={},r;this.on("mousedown",function(i){var s=i.e;t=+(new Date),r=this.canvas.getPointer(s);var o=t-e<500&&n.x===r.x&&n.y===r.y;o&&(this.fire("dblclick",i),s.preventDefault&&s.preventDefault(),s.stopPropagation&&s.stopPropagation()),e=t,n=r})},initCursorSelectionHandlers:function(){this.initSelectedHandler(),this.initMousedownHandler(),this.initMousemoveHandler(),this.initMouseupHandler(),this.on("dblclick",function(e){this.selectWord(this.getSelectionStartFromPointer(e.e))})},initMousedownHandler:function(){this.on("mousedown",function(e){var t=this.canvas.getPointer(e.e);this.__mousedownX=t.x,this.__mousedownY=t.y,this.__isMousedown=!0,this.hiddenTextarea&&this.canvas&&this.canvas.wrapperEl.appendChild(this.hiddenTextarea),this.isEditing&&this.setCursorByClick(e.e)})},initMousemoveHandler:function(){this.on("mousemove",function(){this.__isMousedown&&this.isEditing&&console.log("mousemove: need to select text")})},initMouseupHandler:function(){this.on("mouseup",function(e){this.__isMousedown=!1;var t=this.canvas.getPointer(e.e),n=this.__mousedownX!==t.x||this.__mousedownY!==t.y;if(n)return;this.selected&&this.enterEditing()})},initSelectedHandler:function(){this.on("selected",function(){var e=this;setTimeout(function(){e.selected=!0},100),this._hasClearSelectionListener||(this.canvas.on("selection:cleared",function(t){if(t.e&&e.canvas.containsPoint(t.e,e))return;e.exitEditing()}),this._hasClearSelectionListener=!0)})},_tick:function(){var e=this;if(this._abortCursorAnimation)return;this.animate("_currentCursorOpacity",1,{duration:this.cursorDuration,onComplete:function(){e._onTickComplete()},onChange:function(){e.canvas&&e.canvas.renderAll()},abort:function(){return e._abortCursorAnimation}})},_onTickComplete:function(){if(this._abortCursorAnimation)return;var e=this;this._cursorTimeout1&&clearTimeout(this._cursorTimeout1),this._cursorTimeout1=setTimeout(function(){e.animate("_currentCursorOpacity",0,{duration:this.cursorDuration/2,onComplete:function(){e._tick()},onChange:function(){e.canvas&&e.canvas.renderAll()},abort:function(){return e._abortCursorAnimation}})},100)},initDelayedCursor:function(){var e=this;this._cursorTimeout2&&clearTimeout(this._cursorTimeout2),this._cursorTimeout2=setTimeout(function(){e._abortCursorAnimation=!1,e._tick()},this.cursorDelay)},abortCursorAnimation:function(){this._abortCursorAnimation=!0,clearTimeout(this._cursorTimeout1),clearTimeout(this._cursorTimeout2),this._currentCursorOpacity=0,this.canvas&&this.canvas.renderAll();var e=this;setTimeout(function(){e._abortCursorAnimation=!1},10)},_keysMap:{8:"removeChars",13:"insertNewline",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown"},_ctrlKeysMap:{65:"selectAll",67:"copy",86:"paste",88:"cut"},onKeyDown:function(e){if(!this.isEditing||e.ctrlKey)return;if(e.keyCode in this._keysMap)this[this._keysMap[e.keyCode]](e);else{if(!(e.keyCode in this._ctrlKeysMap&&(e.ctrlKey||e.metaKey)))return;this[this._ctrlKeysMap[e.keyCode]](e)}e.preventDefault(),e.stopPropagation(),this.canvas&&this.canvas.renderAll()},forwardDelete:function(e){this.moveCursorRight(e),this.removeChars(e)},copy:function(){var e=this.getSelectedText();this.copiedText=e},paste:function(){this.copiedText&&this.insertChars(this.copiedText)},cut:function(e){this.copy(),this.removeChars(e)},selectAll:function(){this.selectionStart=0,this.selectionEnd=this.text.length},getSelectedText:function(){return this.text.slice(this.selectionStart,this.selectionEnd)},onKeyPress:function(e){if(!this.isEditing||e.metaKey||e.ctrlKey||e.keyCode===8||e.keyCode===13)return;this.insertChars(String.fromCharCode(e.which)),e.preventDefault(),e.stopPropagation()},getSelectionStartOffset:function(){var e=this.text.slice(0,this.selectionStart),t=this.text.slice(this.selectionStart),n=e.slice(e.lastIndexOf("\n")+1),r=t.match(/(.*)\n?/)[1],i=(t.match(/.*\n(.*)\n?/)||{})[1]||"";return n.length>i.length?(i+r).length+1:(n+r).length+1},moveCursorDown:function(e){this.abortCursorAnimation(),this._currentCursorOpacity=1;var t=this.getSelectionStartOffset();e.metaKey&&(t=this.text.length-this.selectionStart),e.shiftKey?this.moveCursorDownWithShift(t):this.moveCursorDownWithoutShift(t),this.initDelayedCursor()},moveCursorDownWithoutShift:function(e){this._selectionDirection="right",this.selectionStart+=e,this.selectionStart>this.text.length&&(this.selectionStart=this.text.length),this.selectionEnd=this.selectionStart},moveCursorDownWithShift:function(e){this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd?(this.selectionStart=this.selectionEnd,this._selectionDirection="right"):(this._selectionDirection="right",this.selectionEnd+=e,this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length))},moveCursorUp:function(e){var t=this.text.slice(0,this.selectionStart);this.abortCursorAnimation(),this._currentCursorOpacity=1;var n=t.slice(t.lastIndexOf("\n")+1),r=(t.match(/\n?(.*)\n.*$/)||{})[1]||"",i;n.length>r.length?i=n.length+1:i=r.length+1,e.metaKey&&(i=this.selectionStart),e.shiftKey?this.moveCursorUpWithShift(i):this.moveCursorUpWithoutShift(i),this.initDelayedCursor()},moveCursorUpWithShift:function(e){this.selectionStart===this.selectionEnd?this.selectionStart-=e:this._selectionDirection==="right"?this.selectionEnd=this.selectionStart:this.selectionStart-=e,this.selectionStart<0&&(this.selectionStart=0),this._selectionDirection="left"},moveCursorUpWithoutShift:function(e){this.selectionStart===this.selectionEnd&&(this.selectionStart-=e),this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd=this.selectionStart,this._selectionDirection="left"},moveCursorLeft:function(e){if(this.selectionStart===0&&this.selectionEnd===0)return;this.abortCursorAnimation(),this._currentCursorOpacity=1,e.shiftKey?this.moveCursorLeftWithShift(e):this.moveCursorLeftWithoutShift(e),this.initDelayedCursor()},findWordBoundaryLeft:function(e){var t=0,n=e-1;if(this._reSpace.test(this.text.charAt(n)))while(this._reSpace.test(this.text.charAt(n)))t++,n--;while(/\S/.test(this.text.charAt(n))&&n>-1)t++,n--;return e-t},findWordBoundaryRight:function(e){var t=0,n=e;if(this._reSpace.test(this.text.charAt(n)))while(this._reSpace.test(this.text.charAt(n)))t++,n++;while(/\S/.test(this.text.charAt(n))&&n-1)t++,n--;return e-t},findLineBoundaryRight:function(e){var t=0,n=e;while(!/\n/.test(this.text.charAt(n))&&n=this.text.length&&this.selectionEnd>=this.text.length)return;this.abortCursorAnimation(),this._currentCursorOpacity=1,e.shiftKey?this.moveCursorRightWithShift(e):this.moveCursorRightWithoutShift(e),this.initDelayedCursor()},moveCursorRightWithShift:function(e){this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd?this._moveRight(e,"selectionStart"):(this._selectionDirection="right",this._moveRight(e,"selectionEnd"),this.text.charAt(this.selectionEnd-1)==="\n"&&this.selectionEnd++,this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length))},moveCursorRightWithoutShift:function(e){this._selectionDirection="right",this.selectionStart===this.selectionEnd?(this._moveRight(e,"selectionStart"),this.selectionEnd=this.selectionStart):(this.selectionEnd+=this.getNumNewLinesInSelectedText(),this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length),this.selectionStart=this.selectionEnd)},getNumNewLinesInSelectedText:function(){var e=this.getSelectedText(),t=0;for(var n=0,r=e.split(""),i=r.length;n0&&nr&&o>n){var g=n-s,y=o-n;return y>g?f=a+l:f=a+l+1,f>this.text.length&&(f=this.text.length),f}a++}}if(typeof f=="undefined")return this.text.length},enterEditing:function(){if(this.isEditing||!this.editable)return;return fabric.IText.instances.forEach(function(e){if(e===this)return;e.exitEditing()},this),this.isEditing=!0,this._updateTextarea(),this._saveProps(),this.hoverCursor="text",this.canvas.defaultCursor="text",this.canvas.moveCursor="text",this.hasControls=!1,this.borderColor=this.editingBorderColor,this.selectable=!1,this.lockMovementX=!0,this.lockMovementY=!0,this._tick(),this.canvas.renderAll(),this},_updateTextarea:function(){if(!this.hiddenTextarea)return;this.hiddenTextarea.value=this.text,this.hiddenTextarea.selectionStart=this.selectionStart,this.hiddenTextarea.focus()},_saveProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,defaultCursor:this.canvas.defaultCursor,moveCursor:this.canvas.moveCursor}},_restoreProps:function(){if(!this._savedProps)return;this.hoverCursor=this._savedProps.overCursor,this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY},exitEditing:function(){return this.selected=!1,this.isEditing=!1,this.selectable=!0,this.hiddenTextarea&&this.hiddenTextarea.blur(),this.abortCursorAnimation(),this._restoreProps(),this._currentCursorOpacity=0,this},removeChars:function(e){if(this.selectionStart===this.selectionEnd){if(this.selectionStart!==0)if(e.metaKey){var t=this.findLineBoundaryLeft(this.selectionStart);this._removeCharsFromTo(t,this.selectionStart),this.selectionStart=t}else if(e.altKey){var n=this.findWordBoundaryLeft(this.selectionStart);this._removeCharsFromTo(n,this.selectionStart),this.selectionStart=n}else{var r=this.text.slice(this.selectionStart-1,this.selectionStart)==="\n";this.removeStyleObject(r),this.selectionStart--,this.text=this.text.slice(0,this.selectionStart)+this.text.slice(this.selectionStart+1)}}else this._removeCharsFromTo(this.selectionStart,this.selectionEnd);this.selectionEnd=this.selectionStart;var i=this.text.split(this._reNewline);for(var s in this.styles)i[s]||delete this.styles[s];this.canvas&&this.canvas.renderAll().renderAll(),this.setCoords(),this.fire("text:changed")},_removeCharsFromTo:function(e,t){var n=t;while(n!==e)n--,this.removeStyleObject(!1,n);this.text=this.text.slice(0,e)+this.text.slice(t)},insertChars:function(e){var t=this.text.slice(this.selectionStart,this.selectionStart+1)==="\n";this.text=this.text.slice(0,this.selectionStart)+e+this.text.slice(this.selectionEnd),this.selectionStart===this.selectionEnd?this.insertStyleObject(e,t):this.selectionEnd-this.selectionStart>1,this.selectionStart+=e.length,this.selectionEnd=this.selectionStart,this.canvas&&this.canvas.renderAll().renderAll(),this.setCoords(),this.fire("text:changed")},insertNewlineStyleObject:function(t,n,r){this.shiftLineStyles(t,1),this.styles[t+1]||(this.styles[t+1]={});var i=this.styles[t][n-1],s={};if(r)s[0]=e(i),this.styles[t+1]=s;else{for(var o in this.styles[t])parseInt(o,10)>=n&&(s[parseInt(o,10)-n]=this.styles[t][o],delete this.styles[t][o]);this.styles[t+1]=s}},insertCharStyleObject:function(t,n){var r=this.styles[t],i=e(r);n===0&&(n=1);for(var s in i){var o=parseInt(s,10);o>=n&&(r[o+1]=i[o])}this.styles[t][n]=e(r[n-1])},insertStyleObject:function(e,t){if(this.isEmptyStyles())return;var n=this.get2DCursorLocation(),r=n.lineIndex,i=n.charIndex;this.styles[r]||(this.styles[r]={}),e==="\n"?this.insertNewlineStyleObject(r,i,t):this.insertCharStyleObject(r,i)},shiftLineStyles:function(t,n){var r=e(this.styles);for(var i in this.styles){var s=parseInt(i,10);s>t&&(this.styles[s+n]=r[s])}},removeStyleObject:function(t,n){var r=this.get2DCursorLocation(n),i=r.lineIndex,s=r.charIndex;if(t){var o=this.text.split(this._reNewline),u=o[i-1],a=u.length;this.styles[i-1]||(this.styles[i-1]={});for(s in this.styles[i])this.styles[i-1][parseInt(s,10)+a]=this.styles[i][s];this.shiftLineStyles(i,-1)}else{var f=this.styles[i];if(f){var l=this.selectionStart===this.selectionEnd?-1:0;delete f[s+l]}var c=e(f);for(var h in c){var p=parseInt(h,10);p>=s&&p!==0&&(f[p-1]=c[p],delete f[p])}}},insertNewline:function(){this.insertChars("\n")}})}(),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs");n.readFile(e,function(e,n){if(e)throw fabric.log(e),e;t(n)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&(e instanceof Buffer||e.indexOf("data")===0)?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e&&request(e,"binary",r)},fabric.loadSVGFromURL=function(e,t,n){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t,n)}):request(e,"",function(e){fabric.loadSVGFromString(e,t,n)})},fabric.loadSVGFromString=function(e,t,n){var r=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(r.documentElement,function(e,n){t&&t(e,n)},n)},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e,function(e){r.filters=e||[],t&&t(r)})})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file +/* build: `node build.js modules=ALL exclude=gestures minifier=uglifyjs` *//*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"1.3.10"};typeof exports!="undefined"&&(exports.fabric=fabric),typeof document!="undefined"&&typeof window!="undefined"?(fabric.document=document,fabric.window=window):(fabric.document=require("jsdom").jsdom(""),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined",fabric.SHARED_ATTRIBUTES=["transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width"];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)}},function(e){function r(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e}function i(e,t){return Math.floor(Math.random()*(t-e+1))+e}function o(e){return e*s}function u(e){return e/s}function a(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 f(e,t){return parseFloat(Number(e).toFixed(t))}function l(){return!1}function c(e,t){return e=fabric.util.string.camelize(e.charAt(0).toUpperCase()+e.slice(1)),h(t)[e]}function h(t){if(!t)return fabric;var n=t.split("."),r=n.length,i=e||fabric.window;for(var s=0;s1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r}function m(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),e[d?"lineTo":"moveTo"](r,0),d=!d;e.restore()}function y(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function b(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function w(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 E(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function S(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 x(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]}function T(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=A(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,x=(E-b)*(E-b)+(S-w)*(S-w),T=1/x-.25;T<0&&(T=0);var C=Math.sqrt(T);s===i&&(C=-C);var A=.5*(b+E)-C*(S-w),O=.5*(w+S)+C*(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=t})}function r(e,t){return i(e,t,function(e,t){return e>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(t){var n=this.constructor.superclass.prototype[t];return arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this)}function o(){function u(){this.initialize.apply(this,arguments)}var n=null,o=e.call(arguments,0);typeof o[0]=="function"&&(n=o.shift()),u.superclass=n,u.subclasses=[],n&&(i.prototype=n.prototype,u.prototype=new i,n.subclasses.push(u));for(var a=0,f=o.length;a-1?e.prototype[i]=function(e){return function(){var n=this.constructor.superclass;this.constructor.superclass=r;var i=t[e].apply(this,arguments);this.constructor.superclass=n;if(e!=="initialize")return i}}(i):e.prototype[i]=t[i],n&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};fabric.util.createClass=o}(),function(){function t(e){var t=Array.prototype.slice.call(arguments,1),n,r,i=t.length;for(r=0;r-1?s(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if(r==="opacity")s(e,t[r]);else{var i=r==="float"||r==="cssFloat"?typeof n.styleFloat=="undefined"?"cssFloat":"styleFloat":r;n[i]=t[r]}return e}var t=fabric.document.createElement("div"),n=typeof t.style.opacity=="string",r=typeof t.style.filter=="string",i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(e){return e};n?s=function(e,t){return e.style.opacity=t,e}:r&&(s=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+t*100+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+t*100+")",e}),fabric.util.setStyle=e}(),function(){function t(e){return typeof e=="string"?fabric.document.getElementById(e):e}function s(e,t){var n=fabric.document.createElement(e);for(var r in t)r==="class"?n.className=t[r]:r==="for"?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function o(e,t){(" "+e.className+" ").indexOf(" "+t+" ")===-1&&(e.className+=(e.className?" ":"")+t)}function u(e,t,n){return typeof t=="string"&&(t=s(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t}function a(e){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){n(function(t){e||(e={});var r=t||+(new Date),i=e.duration||500,s=r+i,o,u=e.onChange||function(){},a=e.abort||function(){return!1},f=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},l="startValue"in e?e.startValue:0,c="endValue"in e?e.endValue:100,h=e.byValue||c-l;e.onStart&&e.onStart(),function p(t){o=t||+(new Date);var c=o>s?i:o-r;if(a()){e.onComplete&&e.onComplete();return}u(f(c,l,h,i));if(o>s){e.onComplete&&e.onComplete();return}n(p)}(r)})}var t=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)},n=function(){return t.apply(fabric.window,arguments)};fabric.util.animate=e,fabric.util.requestAnimFrame=n}(),function(){function e(e,t,n,r){return e-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){S.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),S.has(e,function(r){r?S.get(e,function(e){var t=T(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function T(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 N(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 C(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t}function k(e){var t=[];return L(t,e,"backgroundColor"),L(t,e,"overlayColor"),t.join("")}function L(e,t,n){t[n]&&t[n].toSVG&&e.push('','')}function A(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,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;if(typeof t.src!="undefined"){if(!t.complete)return"";if(t.naturalWidth===0||t.naturalHeight===0)return""}return e.createPattern(t,this.repeat)} +}),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Shadow){t.warn("fabric.Shadow is already defined.");return}t.Shadow=t.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,initialize:function(e){typeof e=="string"&&(e=this._parseShadow(e));for(var n in e)this[n]=e[n];this.id=t.Object.__uid++},_parseShadow:function(e){var n=e.trim(),r=t.Shadow.reOffsetsAndBlur.exec(n)||[],i=n.replace(t.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)";return{color:i.trim(),offsetX:parseInt(r[1],10)||0,offsetY:parseInt(r[2],10)||0,blur:parseInt(r[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(e){var t="SourceAlpha";return e&&(e.fill===this.color||e.stroke===this.color)&&(t="SourceGraphic"),''+''+''+""+""+''+""+""},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY};var e={},n=t.Shadow.prototype;return this.color!==n.color&&(e.color=this.color),this.blur!==n.blur&&(e.blur=this.blur),this.offsetX!==n.offsetX&&(e.offsetX=this.offsetX),this.offsetY!==n.offsetY&&(e.offsetY=this.offsetY),e}}),t.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/}(typeof exports!="undefined"?exports:this),function(){"use strict";if(fabric.StaticCanvas){fabric.warn("fabric.StaticCanvas is already defined.");return}var e=fabric.util.object.extend,t=fabric.util.getElementOffset,n=fabric.util.removeFromArray,r=fabric.util.removeListener,i=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass({initialize:function(e,t){t||(t={}),this._initStatic(e,t),fabric.StaticCanvas.activeInstance=this},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!0,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!1,onBeforeScaleRotate:function(){},_initStatic:function(e,t){this._objects=[],this._createLowerCanvas(e),this._initOptions(t),t.overlayImage&&this.setOverlayImage(t.overlayImage,this.renderAll.bind(this)),t.backgroundImage&&this.setBackgroundImage(t.backgroundImage,this.renderAll.bind(this)),t.backgroundColor&&this.setBackgroundColor(t.backgroundColor,this.renderAll.bind(this)),t.overlayColor&&this.setOverlayColor(t.overlayColor,this.renderAll.bind(this)),this.calcOffset()},calcOffset:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(e,t,n){return this.__setBgOverlayImage("overlayImage",e,t,n)},setBackgroundImage:function(e,t,n){return this.__setBgOverlayImage("backgroundImage",e,t,n)},setOverlayColor:function(e,t){return this.__setBgOverlayColor("overlayColor",e,t)},setBackgroundColor:function(e,t){return this.__setBgOverlayColor("backgroundColor",e,t)},__setBgOverlayImage:function(e,t,n,r){return typeof t=="string"?fabric.util.loadImage(t,function(t){this[e]=new fabric.Image(t,r),n&&n()},this):(this[e]=t,n&&n()),this},__setBgOverlayColor:function(e,t,n){if(t.source){var r=this;fabric.util.loadImage(t.source,function(i){r[e]=new fabric.Pattern({source:i,repeat:t.repeat,offsetX:t.offsetX,offsetY:t.offsetY}),n&&n()})}else this[e]=t,n&&n();return this},_createCanvasElement:function(){var e=fabric.document.createElement("canvas");e.style||(e.style={});if(!e)throw 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.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this._discardActiveObject(),this.fire("selection:cleared")),this.fire("object:removed",{target:e}),e.fire("removed")},clearContext:function(e){return e.clearRect(0,0,this.width,this.height),this},getContext:function(){return this.contextContainer},clear:function(){return this._objects.length=0,this.discardActiveGroup&&this.discardActiveGroup(),this.discardActiveObject&&this.discardActiveObject(),this.clearContext(this.contextContainer),this.contextTop&&this.clearContext(this.contextTop),this.fire("canvas:cleared"),this.renderAll(),this},renderAll:function(e){var t=this[e===!0&&this.interactive?"contextTop":"contextContainer"],n=this.getActiveGroup();return this.contextTop&&this.selection&&!this._groupSelector&&this.clearContext(this.contextTop),e||this.clearContext(t),this.fire("before:render"),this.clipTo&&fabric.util.clipContext(this,t),this._renderBackground(t),this._renderObjects(t,n),this._renderActiveGroup(t,n),this.clipTo&&t.restore(),this._renderOverlay(t),this.controlsAboveOverlay&&this.interactive&&this.drawControls(t),this.fire("after:render"),this},_renderObjects:function(e,t){for(var n=0,r=this._objects.length;n"),n.join("")},_setSVGPreamble:function(e,t){t.suppressPreamble||e.push('','\n')},_setSVGHeader:function(e,t){e.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),"")},_setSVGObjects:function(e,t){var n=this.getActiveGroup();n&&this.discardActiveGroup();for(var r=0,i=this.getObjects(),s=i.length;r"):this[t]&&t==="overlayColor"&&e.push('")},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e,t){var r=this._objects.indexOf(e);if(r!==0){var i;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.prototype,fabric.Observable),e(fabric.StaticCanvas.prototype,fabric.Collection),e(fabric.StaticCanvas.prototype,fabric.DataURLExporter),e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(e){var t=fabric.util.createCanvasElement();if(!t||!t.getContext)return null;var n=t.getContext("2d");if(!n)return null;switch(e){case"getImageData":return typeof n.getImageData!="undefined";case"setLineDash":return typeof n.setLineDash!="undefined";case"toDataURL":return typeof t.toDataURL!="undefined";case"toDataURLWithQuality":try{return t.toDataURL("image/jpeg",0),!0}catch(r){}return!1;default:return null}}}),fabric.StaticCanvas.prototype.toJSON=fabric.StaticCanvas.prototype.toObject}(),fabric.BaseBrush=fabric.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",setShadow:function(e){return this.shadow=new fabric.Shadow(e),this},_setBrushStyles:function(){var e=this.canvas.contextTop;e.strokeStyle=this.color,e.lineWidth=this.width,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin},_setShadow:function(){if(!this.shadow)return;var e=this.canvas.contextTop;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_resetShadow:function(){var e=this.canvas.contextTop;e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0}}),function(){var e=fabric.util.array.min,t=fabric.util.array.max;fabric.PencilBrush=fabric.util.createClass(fabric.BaseBrush,{initialize:function(e){this.canvas=e,this._points=[]},onMouseDown:function(e){this._prepareForDrawing(e),this._captureDrawingPath(e),this._render()},onMouseMove:function(e){this._captureDrawingPath(e),this.canvas.clearContext(this.canvas.contextTop),this._render()},onMouseUp:function(){this._finalizeAndAddPath()},_prepareForDrawing:function(e){var t=new fabric.Point(e.x,e.y);this._reset(),this._addPoint(t),this.canvas.contextTop.moveTo(t.x,t.y)},_addPoint:function(e){this._points.push(e)},_reset:function(){this._points.length=0,this._setBrushStyles(),this._setShadow()},_captureDrawingPath:function(e){var t=new fabric.Point(e.x,e.y);this._addPoint(t)},_render:function(){var e=this.canvas.contextTop;e.beginPath();var t=this._points[0],n=this._points[1];this._points.length===2&&t.x===n.x&&t.y===n.y&&(t.x-=.5,n.x+=.5),e.moveTo(t.x,t.y);for(var r=1,i=this._points.length;r0&&(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;an.padding?e.x<0?e.x+=n.padding:e.x-=n.padding:e.x=0,i(e.y)>n.padding?e.y<0?e.y+=n.padding:e.y-=n.padding:e.y=0},_rotateObject:function(e,t){var i=this._currentTransform,s=this._offset;if(i.target.get("lockRotation"))return;var o=r(i.ey-i.top-s.top,i.ex-i.left-s.left),u=r(t-i.top-s.top,e-i.left-s.left),a=n(u-o+i.theta);a<0&&(a=360+a),i.target.angle=a},_setCursor:function(e){this.upperCanvasEl.style.cursor=e},_resetObjectTransform:function(e){e.scaleX=1,e.scaleY=1,e.setAngle(0)},_drawSelection:function(){var e=this.contextTop,t=this._groupSelector,n=t.left,r=t.top,s=i(n),o=i(r);e.fillStyle=this.selectionColor,e.fillRect(t.ex-(n>0?0:-n),t.ey-(r>0?0:-r),s,o),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var a=t.ex+u-(n>0?0:s),f=t.ey+u-(r>0?0:o);e.beginPath(),fabric.util.drawDashedLine(e,a,f,a+s,f,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f+o-1,a+s,f+o-1,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f,a,f+o,this.selectionDashArray),fabric.util.drawDashedLine(e,a+s-1,f,a+s-1,f+o,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+u-(n>0?0:s),t.ey+u-(r>0?0:o),s,o)},_findSelectedObjects:function(e){if(!this.selection)return;var t=this._collectObjects();t.length===1?this.setActiveObject(t[0],e):t.length>1&&(t=new fabric.Group(t.reverse()),this.setActiveGroup(t,e),t.saveCoords(),this.fire("selection:created",{target:t}),this.renderAll())},_collectObjects:function(){var e=[],t,n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,u=r+this._groupSelector.top,a=new fabric.Point(s(n,i),s(r,u)),f=new fabric.Point(o(n,i),o(r,u)),l=n===i&&r===u;for(var c=this._objects.length;c--;){t=this._objects[c];if(!t||!t.selectable||!t.visible)continue;if(t.intersectsWithRect(a,f)||t.isContainedWithinRect(a,f)||t.containsPoint(a)||t.containsPoint(f)){t.set("active",!0),e.push(t);if(l)break}}return e},findTarget:function(e,t){if(this.skipTargetFind)return;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._objects[o].evented&&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,n){var i=e==="scaleX"||e==="scaleY";return i&&(n=this._constrainScale(n)),e==="scaleX"&&n<0?(this.flipX=!this.flipX,n*=-1):e==="scaleY"&&n<0?(this.flipY=!this.flipY,n*=-1):e==="width"||e==="height"?this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2):e==="shadow"&&n&&!(n instanceof t.Shadow)&&(n=new t.Shadow(n)),this[e]=n,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save(),this._transform(e,n),this._setStrokeStyles(e),this._setFillStyles(e);var r=this.transformMatrix;r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_transform:function(e,t){var n=this.transformMatrix;n&&!this.group&&e.setTransform(n[0],n[1],n[2],n[3],n[4],n[5]),t||this.transform(e)},_setStrokeStyles:function(e){this.stroke&&(e.lineWidth=this.strokeWidth,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,e.strokeStyle=this.stroke.toLive?this.stroke.toLive(e):this.stroke)},_setFillStyles:function(e){this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill)},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_renderFill:function(e){if(!this.fill)return;this.fill.toLive&&(e.save(),e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0)),e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke)return;e.save(),this.strokeDashArray?(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),o?(e.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(e)):this._renderDashedStroke&&this._renderDashedStroke(e),e.stroke()):this._stroke?this._stroke(e):e.stroke(),this._removeShadow(e),e.restore()},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){var n=this.toDataURL();return t.util.loadImage(n,function(n){e&&e(new t.Image(n))}),this},toDataURL:function(e){e||(e={});var n=t.util.createCanvasElement(),r=this.getBoundingRect();n.width=r.width,n.height=r.height,t.util.wrapElement(n,"div");var i=new t.Canvas(n);e.format==="jpg"&&(e.format="jpeg"),e.format==="jpeg"&&(i.backgroundColor="#fff");var s={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set("active",!1),this.setPositionByOrigin(new t.Point(n.width/2,n.height/2),"center","center");var o=this.canvas;i.add(this);var u=i.toDataURL(e);return this.set(s).setCoords(),this.canvas=o,i.dispose(),i=null,u},isType:function(e){return this.type===e},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}return this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){return this.set("fill",new t.Pattern(e))},setShadow:function(e){return this.set("shadow",new t.Shadow(e))},setColor:function(e){return this.set("fill",e),this},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.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(){var e=new fabric.Point(this.left,this.top);return this.translateToCenterPoint(e,this.originX,this.originY)},getPointByOrigin:function(e,t){var n=this.getCenterPoint();return this.translateToOriginPoint(n,e,t)},toLocalPoint:function(t,n,r){var i=this.getCenterPoint(),s,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(){return this.translateToOriginPoint(this.getCenterPoint(),"left","center")}})}(),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{oCoords:null,intersectsWithRect:function(e,t){var n=this.oCoords,r=new fabric.Point(n.tl.x,n.tl.y),i=new fabric.Point(n.tr.x,n.tr.y),s=new fabric.Point(n.bl.x,n.bl.y),o=new fabric.Point(n.br.x,n.br.y),u=fabric.Intersection.intersectPolygonRectangle([r,i,o,s],e,t);return u.status==="Intersection"},intersectsWithObject:function(e){function t(e){return{tl:new fabric.Point(e.tl.x,e.tl.y),tr:new fabric.Point(e.tr.x,e.tr.y),bl:new fabric.Point(e.bl.x,e.bl.y),br:new fabric.Point(e.br.x,e.br.y)}}var n=t(this.oCoords),r=t(e.oCoords),i=fabric.Intersection.intersectPolygonPolygon([n.tl,n.tr,n.br,n.bl],[r.tl,r.tr,r.br,r.bl]);return i.status==="Intersection"},isContainedWithinObject:function(e){var t=e.getBoundingRect(),n=new fabric.Point(t.left,t.top),r=new fabric.Point(t.left+t.width,t.top+t.height);return this.isContainedWithinRect(n,r)},isContainedWithinRect:function(e,t){var n=this.getBoundingRect();return n.left>e.x&&n.left+n.widthe.y&&n.top+n.height=e.y&&f.d.y>=e.y)continue;f.o.x===f.d.x&&f.o.x>=e.x?(o=f.o.x,u=e.y):(n=0,r=(f.d.y-f.o.y)/(f.d.x-f.o.x),i=e.y-n*e.x,s=f.o.y-r*f.o.x,o=-(i-s)/(n-r),u=i+n*o),o>=e.x&&(a+=1);if(a===2)break}return a},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],t=fabric.util.array.min(e),n=fabric.util.array.max(e),r=Math.abs(t-n),i=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],s=fabric.util.array.min(i),o=fabric.util.array.max(i),u=Math.abs(s-o);return{left:t,top:s,width:r,height:u}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(e){return Math.abs(e)1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x:m.x,y:m.y};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords&&this._setCornerCoords(),this}})}(),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this.get(e)!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{_controlsVisibility:null,_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(!this.isControlVisible(a))continue;if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner),o=this._findCrossPoints({x:i,y:s},u);if(o!==0&&o%2===1)return this.__corner=a,a}return!1},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x- +o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=~~(this.strokeWidth/2)*2;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)-.5,~~(-(u/2)-t-r/2*this.scaleY)-.5,~~(o+n+r*this.scaleX)+1,~~(u+n+r*this.scaleY)+1);if(this.hasRotatingPoint&&this.isControlVisible("mtr")&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;var t=this.cornerSize,n=t/2,r=~~(this.strokeWidth/2),i=-(this.width/2),s=-(this.height/2),o,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,this.isControlVisible("tl")&&(o=i-p-r-l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),this.isControlVisible("tr")&&(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)),this.isControlVisible("bl")&&(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)),this.isControlVisible("br")&&(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")||(this.isControlVisible("mt")&&(o=i+g/2-p,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),this.isControlVisible("mb")&&(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)),this.isControlVisible("mr")&&(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)),this.isControlVisible("ml")&&(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&&this.isControlVisible("mtr")&&(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},isControlVisible:function(e){return this._getControlsVisibility()[e]},setControlVisible:function(e,t){return this._getControlsVisibility()[e]=t,this},setControlsVisibility:function(e){e||(e={});for(var t in e)this.setControlVisible(t,e[t]);return this},_getControlsVisibility:function(){return this._controlsVisibility||(this._controlsVisibility={tl:!0,tr:!0,br:!0,bl:!0,ml:!0,mt:!0,mr:!0,mb:!0,mtr:!0}),this._controlsVisibility}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("left"),endValue:this.getCenter().left,duration:this.FX_DURATION,onChange:function(t){e.set("left",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxCenterObjectV:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("top"),endValue:this.getCenter().top,duration:this.FX_DURATION,onChange:function(t){e.set("top",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxRemove:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("opacity"),endValue:0,duration:this.FX_DURATION,onStart:function(){e.set("active",!1)},onChange:function(t){e.set("opacity",t),s.renderAll(),i()},onComplete:function(){s.remove(e),r()}}),this}}),fabric.util.object.extend(fabric.Object.prototype,{animate:function(){if(arguments[0]&&typeof arguments[0]=="object"){var e=[],t,n;for(t in arguments[0])e.push(t);for(var r=0,i=e.length;r'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e)},_set:function(e,t){return this.callSuper("_set",e,t),e==="radius"&&this.setRadius(t),this},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(e){var t=this._createBaseSVGMarkup(),n=this.width/2,r=this.height/2,i=[-n+" "+r,"0 "+ -r,n+" "+r].join(",");return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this._renderFill(e),this._renderStroke(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}var r=t.Object.prototype.stateProperties.concat();r.push("rx","ry","x","y"),t.Rect=t.util.createClass(t.Object,{stateProperties:r,type:"rect",rx:0,ry:0,x:0,y:0,strokeDashArray:null,initialize:function(e){e=e||{},this.callSuper("initialize",e),this._initRxRy(),this.x=e.x||0,this.y=e.y||0},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height,u=this.group&&this.group.type!=="group";e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y);var a=t!==0||n!==0;e.moveTo(r+t,i),e.lineTo(r+s-t,i),a&&e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),a&&e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),a&&e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),a&&e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){var t=n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,r){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=i(s);var o=new t.Rect(n(r?t.util.object.clone(r):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(e){var t=[],r=this._createBaseSVGMarkup();for(var i=0,s=this.points.length;i'),e?e(r.join("")):r.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),e?e(n.join("")):n.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n"},toObject:function(e){var t=s(this.callSuper("toObject",e),{path:this.path,pathOffset:this.pathOffset});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(e){var t=[],n=this._createBaseSVGMarkup();for(var r=0,i=this.path.length;r',"",""),e?e(n.join("")):n.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n=[],r,i,s=/(-?\.\d+)|(-?\d+(\.\d+)?)/g,o,u;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var r=0,i=t.length;r"),e?e(n.join("")):n.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e,n){typeof e.paths=="string"?t.loadSVGFromURL(e.paths,function(r){var i=e.paths;delete e.paths;var s=t.util.groupSVGElements(r,e,i);n(s)}):t.util.enlivenObjects(e.paths,function(r){delete e.paths,n(new t.PathGroup(r,e))})},t.PathGroup.async=!0}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){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"#"},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._moveFlippedObject(e),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,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'];for(var n=0,r=this._objects.length;n"),e?e(t.join("")):t.join("")},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','');if(this.stroke||this.strokeDashArray){var n=this.fill;this.fill=null,t.push("'),this.fill=n}return t.push(""),e?e(t.join("")):t.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this._element=this._originalElement,e&&e();return}var t=this._originalElement,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;return n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height,fabric.isLikelyNode?(r.src=n.toBuffer(undefined,fabric.Image.pngCompression),i._element=r,e&&e()):(r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png")),this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e),this._element.crossOrigin=this.crossOrigin},_initFilters:function(e,t){e.filters&&e.filters.length?fabric.util.enlivenObjects(e.filters,function(e){t&&t(e)},"fabric.Image.filters"):t&&t()},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){fabric.Image.prototype._initFilters.call(e,e,function(r){e.filters=r||[];var i=new fabric.Image(n,e);t&&t(i)})},null,e.crossOrigin)},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))},null,n&&n.crossOrigin)},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0,fabric.Image.pngCompression=1}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.BaseFilter=fabric.util.createClass({type:"BaseFilter",toObject:function(){return{type:this.type}},toJSON:function(){return this.toObject()}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend;t.Image.filters.Brightness=t.util.createClass(t.Image.filters.BaseFilter,{type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;s=0&&N=0&&C-1?e.channel:0},applyTo:function(e){if(!this.mask)return;var n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=r.data,s=this.mask.getElement(),o=t.util.createCanvasElement(),u=this.channel,a,f=r.width*r.height*4;o.width=s.width,o.height=s.height,o.getContext("2d").drawImage(s,0,0,s.width,s.height);var l=o.getContext("2d").getImageData(0,0,s.width,s.height),c=l.data;for(a=0;ao&&f>o&&l>o&&u(a-f)'},_render:function(e){var t=this.group&&this.group.type!=="group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaNative:function(e){var n=this.text.split(this._reNewline);this.transform(e,t.isLikelyNode),this._setTextStyles(e),this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this.clipTo&&t.util.clipContext(this,e),this._renderTextBackground(e,n),this._translateForTextAlign(e),this._renderText(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this.clipTo&&e.restore(),this._setBoundaries(e,n),this._totalLineHeight=0},_renderText:function(e,t){e.save(),this._setShadow(e),this._renderTextFill(e,t),this._renderTextStroke(e,t),this._removeShadow(e),e.restore()},_translateForTextAlign:function(e){this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0))},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_renderChars:function(e,t,n,r,i){t[e](n,r,i)},_renderTextLine:function(e,t,n,r,i,s){i-=this.fontSize/4;if(this.textAlign!=="justify"){this._renderChars(e,t,n,r,i,s);return}var o=t.measureText(n).width,u=this.width;if(u>o){var a=n.split(/\s+/),f=t.measureText(n.replace(/\s+/g,"")).width,l=u-f,c=a.length-1,h=l/c,p=0;for(var d=0,v=a.length;d-1&&i(this.fontSize*this.lineHeight),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize*this.lineHeight-this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(this.fontSize*this.lineHeight-this.fontSize)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(e,t){if(!this.visible)return;e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){var t=n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textAlign:this.textAlign,path:this.path,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=[],n=this.text.split(this._reNewline),r=this._getSVGLeftTopOffsets(n),i=this._getSVGTextAndBg(r.lineTop,r.textLeft,n),s=this._getSVGShadows(r.lineTop,n);return r.textTop+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,this._wrapSVGTextAndBg(t,i,s,r),e?e(t.join("")):t.join("")},_getSVGLeftTopOffsets:function(e){var t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight;return{textLeft:n,textTop:r,lineTop:t}},_wrapSVGTextAndBg:function(e,t,n,r){e.push('',t.textBgRects.join(""),"',n.join(""),t.textSpans.join(""),"","")},_getSVGShadows:function(e,n){var r=[],s,o,u=1;if(!this.shadow||!this._boundaries)return r;for(s=0,o=n.length;s",t.util.string.escapeXml(n[s]),""),u=1}else u++;return r},_getSVGTextAndBg:function(e,t,n){var r=[],i=[],s=1;this._setSVGBg(i);for(var o=0,u=n.length;o",t.util.string.escapeXml(e),"")},_setSVGTextLineBg:function(e,t,n,r){e.push("')},_setSVGBg:function(e){this.backgroundColor&&this._boundaries&&e.push("')},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),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.shadow&&this.shadow.toString(),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,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(){var e=fabric.util.object.clone,t=fabric.util.toFixed;fabric.IText=fabric.util.createClass(fabric.Text,fabric.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"#333",cursorDelay:1e3,cursorDuration:600,styles:null,skipFillStrokeCheck:!0,_reSpace:/\s|\n/,_fontSizeFraction:4,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,_charWidthsCache:{},initialize:function(e,t){this.styles=t.styles||{},this.callSuper("initialize",e,t),this.initBehavior(),fabric.IText.instances.push(this)},isEmptyStyles:function(){if(!this.styles)return!0;var e=this.styles;for(var t in e)for(var n in e[t])for(var r in e[t][n])return!1;return!0},setSelectionStart:function(e){this.selectionStart=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionStart=e)},setSelectionEnd:function(e){this.selectionEnd=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionEnd=e)},getSelectionStyles:function(){var e=this.get2DCursorLocation();return this.styles[e.lineIndex]?this.styles[e.lineIndex][e.charIndex]||{}:{}},setSelectionStyles:function(e){if(this.selectionStart===this.selectionEnd)this._extendStyles(this.selectionStart,e);else for(var t=this.selectionStart;t-1&&this._renderCharDecorationAtOffset(e,n,r+this.fontSize/this._fontSizeFraction,i,0),o.indexOf("line-through")>-1&&this._renderCharDecorationAtOffset(e,n,r+this.fontSize/this._fontSizeFraction,i,s/this._fontSizeFraction),o.indexOf("overline")>-1&&this._renderCharDecorationAtOffset(e,n,r,i,s-this.fontSize/this._fontSizeFraction)},_renderCharDecorationAtOffset:function(e,t,n,r,i){e.fillRect(t,n-i,r,1)},_renderTextLine:function(e,t,n,r,i,s){i+=this.fontSize/4,this.callSuper("_renderTextLine",e,t,n,r,i,s)},_renderTextDecoration:function(e,t){if(this.isEmptyStyles())return this.callSuper("_renderTextDecoration",e,t)},_renderTextLinesBackground:function(e,t){if(!this.textBackgroundColor&&!this.styles)return;e.save(),this.textBackgroundColor&&(e.fillStyle=this.textBackgroundColor);var n=0,r=this.fontSize/this._fontSizeFraction;for(var i=0,s=t.length;in&&(n=s)}return n},_getHeightOfLine:function(e,t,n){n=n||this.text.split(this._reNewline);var r=this._getHeightOfChar(e,n[t][0],t,0),i=n[t],s=i.split("");for(var o=1,u=s.length;or&&(r=a)}return r*this.lineHeight},_getTextHeight:function(e,t){var n=0;for(var r=0,i=t.length;r',fabric.util.string.escapeXml(a[d]),"");var y=this._getWidthOfChar(this.ctx,a[d],n,d);m.textBackgroundColor&&o.push(''),f+=y}}}),fabric.IText.fromObject=function(t){return new fabric.IText(t.text,e(t))},fabric.IText.instances=[]}(),function(){var e=fabric.util.object.clone;fabric.util.object.extend(fabric.IText.prototype,{initBehavior:function(){this.initKeyHandlers(),this.initCursorSelectionHandlers(),this.initDblClickSimulation(),this.initHiddenTextarea()},initKeyHandlers:function(){fabric.util.addListener(document,"keydown",this.onKeyDown.bind(this)),fabric.util.addListener(document,"keypress",this.onKeyPress.bind(this))},initHiddenTextarea:function(){if(!/(iPad|iPhone|iPod)/g.test(navigator.userAgent))return;this.hiddenTextarea=fabric.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.style.cssText="position: absolute; top: 0; left: -9999px",fabric.document.body.appendChild(this.hiddenTextarea)},initDblClickSimulation:function(){var e=+(new Date),t,n={},r;this.on("mousedown",function(i){var s=i.e;t=+(new Date),r=this.canvas.getPointer(s);var o=t-e<500&&n.x===r.x&&n.y===r.y;o&&(this.fire("dblclick",i),s.preventDefault&&s.preventDefault(),s.stopPropagation&&s.stopPropagation()),e=t,n=r})},initCursorSelectionHandlers:function(){this.initSelectedHandler(),this.initMousedownHandler(),this.initMousemoveHandler(),this.initMouseupHandler(),this.on("dblclick",function(e){this.selectWord(this.getSelectionStartFromPointer(e.e))})},initMousedownHandler:function(){this.on("mousedown",function(e){var t=this.canvas.getPointer(e.e);this.__mousedownX=t.x,this.__mousedownY=t.y,this.__isMousedown=!0,this.hiddenTextarea&&this.canvas&&this.canvas.wrapperEl.appendChild(this.hiddenTextarea),this.isEditing&&this.setCursorByClick(e.e)})},initMousemoveHandler:function(){this.on("mousemove",function(){this.__isMousedown&&this.isEditing&&console.log("mousemove: need to select text")})},initMouseupHandler:function(){this.on("mouseup",function(e){this.__isMousedown=!1;var t=this.canvas.getPointer(e.e),n=this.__mousedownX!==t.x||this.__mousedownY!==t.y;if(n)return;this.selected&&this.enterEditing()})},initSelectedHandler:function(){this.on("selected",function(){var e=this;setTimeout(function(){e.selected=!0},100),this._hasClearSelectionListener||(this.canvas.on("selection:cleared",function(t){if(t.e&&e.canvas.containsPoint(t.e,e))return;e.exitEditing()}),this._hasClearSelectionListener=!0)})},_tick:function(){var e=this;if(this._abortCursorAnimation)return;this.animate("_currentCursorOpacity",1,{duration:this.cursorDuration,onComplete:function(){e._onTickComplete()},onChange:function(){e.canvas&&e.canvas.renderAll()},abort:function(){return e._abortCursorAnimation}})},_onTickComplete:function(){if(this._abortCursorAnimation)return;var e=this;this._cursorTimeout1&&clearTimeout(this._cursorTimeout1),this._cursorTimeout1=setTimeout(function(){e.animate("_currentCursorOpacity",0,{duration:this.cursorDuration/2,onComplete:function(){e._tick()},onChange:function(){e.canvas&&e.canvas.renderAll()},abort:function(){return e._abortCursorAnimation}})},100)},initDelayedCursor:function(){var e=this;this._cursorTimeout2&&clearTimeout(this._cursorTimeout2),this._cursorTimeout2=setTimeout(function(){e._abortCursorAnimation=!1,e._tick()},this.cursorDelay)},abortCursorAnimation:function(){this._abortCursorAnimation=!0,clearTimeout(this._cursorTimeout1),clearTimeout(this._cursorTimeout2),this._currentCursorOpacity=0,this.canvas&&this.canvas.renderAll();var e=this;setTimeout(function(){e._abortCursorAnimation=!1},10)},_keysMap:{8:"removeChars",13:"insertNewline",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown"},_ctrlKeysMap:{65:"selectAll",67:"copy",86:"paste",88:"cut"},onKeyDown:function(e){if(!this.isEditing||e.ctrlKey)return;if(e.keyCode in this._keysMap)this[this._keysMap[e.keyCode]](e);else{if(!(e.keyCode in this._ctrlKeysMap&&(e.ctrlKey||e.metaKey)))return;this[this._ctrlKeysMap[e.keyCode]](e)}e.preventDefault(),e.stopPropagation(),this.canvas&&this.canvas.renderAll()},forwardDelete:function(e){this.moveCursorRight(e),this.removeChars(e)},copy:function(){var e=this.getSelectedText();this.copiedText=e},paste:function(){this.copiedText&&this.insertChars(this.copiedText)},cut:function(e){this.copy(),this.removeChars(e)},selectAll:function(){this.selectionStart=0,this.selectionEnd=this.text.length},getSelectedText:function(){return this.text.slice(this.selectionStart,this.selectionEnd)},onKeyPress:function(e){if(!this.isEditing||e.metaKey||e.ctrlKey||e.keyCode===8||e.keyCode===13)return;this.insertChars(String.fromCharCode(e.which)),e.preventDefault(),e.stopPropagation()},getSelectionStartOffset:function(){var e=this.text.slice(0,this.selectionStart),t=this.text.slice(this.selectionStart),n=e.slice(e.lastIndexOf("\n")+1),r=t.match(/(.*)\n?/)[1],i=(t.match(/.*\n(.*)\n?/)||{})[1]||"";return n.length>i.length?(i+r).length+1:(n+r).length+1},moveCursorDown:function(e){this.abortCursorAnimation(),this._currentCursorOpacity=1;var t=this.getSelectionStartOffset();e.metaKey&&(t=this.text.length-this.selectionStart),e.shiftKey?this.moveCursorDownWithShift(t):this.moveCursorDownWithoutShift(t),this.initDelayedCursor()},moveCursorDownWithoutShift:function(e){this._selectionDirection="right",this.selectionStart+=e,this.selectionStart>this.text.length&&(this.selectionStart=this.text.length),this.selectionEnd=this.selectionStart},moveCursorDownWithShift:function(e){this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd?(this.selectionStart=this.selectionEnd,this._selectionDirection="right"):(this._selectionDirection="right",this.selectionEnd+=e,this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length))},moveCursorUp:function(e){var t=this.text.slice(0,this.selectionStart);this.abortCursorAnimation(),this._currentCursorOpacity=1;var n=t.slice(t.lastIndexOf("\n")+1),r=(t.match(/\n?(.*)\n.*$/)||{})[1]||"",i;n.length>r.length?i=n.length+1:i=r.length+1,e.metaKey&&(i=this.selectionStart),e.shiftKey?this.moveCursorUpWithShift(i):this.moveCursorUpWithoutShift(i),this.initDelayedCursor()},moveCursorUpWithShift:function(e){this.selectionStart===this.selectionEnd?this.selectionStart-=e:this._selectionDirection==="right"?this.selectionEnd=this.selectionStart:this.selectionStart-=e,this.selectionStart<0&&(this.selectionStart=0),this._selectionDirection="left"},moveCursorUpWithoutShift:function(e){this.selectionStart===this.selectionEnd&&(this.selectionStart-=e),this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd=this.selectionStart,this._selectionDirection="left"},moveCursorLeft:function(e){if(this.selectionStart===0&&this.selectionEnd===0)return;this.abortCursorAnimation(),this._currentCursorOpacity=1,e.shiftKey?this.moveCursorLeftWithShift(e):this.moveCursorLeftWithoutShift(e),this.initDelayedCursor()},findWordBoundaryLeft:function(e){var t=0,n=e-1;if(this._reSpace.test(this.text.charAt(n)))while(this._reSpace.test(this.text.charAt(n)))t++,n--;while(/\S/.test(this.text.charAt(n))&&n>-1)t++,n--;return e-t},findWordBoundaryRight:function(e){var t=0,n=e;if(this._reSpace.test(this.text.charAt(n)))while(this._reSpace.test(this.text.charAt(n)))t++,n++;while(/\S/.test(this.text.charAt(n))&&n-1)t++,n--;return e-t},findLineBoundaryRight:function(e){var t=0,n=e;while(!/\n/.test(this.text.charAt(n))&&n=this.text.length&&this.selectionEnd>=this.text.length)return;this.abortCursorAnimation(),this._currentCursorOpacity=1,e.shiftKey?this.moveCursorRightWithShift(e):this.moveCursorRightWithoutShift(e),this.initDelayedCursor()},moveCursorRightWithShift:function(e){this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd?this._moveRight(e,"selectionStart"):(this._selectionDirection="right",this._moveRight(e,"selectionEnd"),this.text.charAt(this.selectionEnd-1)==="\n"&&this.selectionEnd++,this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length))},moveCursorRightWithoutShift:function(e){this._selectionDirection="right",this.selectionStart===this.selectionEnd?(this._moveRight(e,"selectionStart"),this.selectionEnd=this.selectionStart):(this.selectionEnd+=this.getNumNewLinesInSelectedText(),this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length),this.selectionStart=this.selectionEnd)},getNumNewLinesInSelectedText:function(){var e=this.getSelectedText(),t=0;for(var n=0,r=e.split(""),i=r.length;n0&&nr&&o>n){var g=n-s,y=o-n;return y>g?f=a+l:f=a+l+1,f>this.text.length&&(f=this.text.length),f}a++}}if(typeof f=="undefined")return this.text.length},enterEditing:function(){if(this.isEditing||!this.editable)return;return fabric.IText.instances.forEach(function(e){if(e===this)return;e.exitEditing()},this),this.isEditing=!0,this._updateTextarea(),this._saveProps(),this.hoverCursor="text",this.canvas.defaultCursor="text",this.canvas.moveCursor="text",this.hasControls=!1,this.borderColor=this.editingBorderColor,this.selectable=!1,this.lockMovementX=!0,this.lockMovementY=!0,this._tick(),this.canvas.renderAll(),this},_updateTextarea:function(){if(!this.hiddenTextarea)return;this.hiddenTextarea.value=this.text,this.hiddenTextarea.selectionStart=this.selectionStart,this.hiddenTextarea.focus()},_saveProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,defaultCursor:this.canvas.defaultCursor,moveCursor:this.canvas.moveCursor}},_restoreProps:function(){if(!this._savedProps)return;this.hoverCursor=this._savedProps.overCursor,this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY},exitEditing:function(){return this.selected=!1,this.isEditing=!1,this.selectable=!0,this.hiddenTextarea&&this.hiddenTextarea.blur(),this.abortCursorAnimation(),this._restoreProps(),this._currentCursorOpacity=0,this},removeChars:function(e){if(this.selectionStart===this.selectionEnd){if(this.selectionStart!==0)if(e.metaKey){var t=this.findLineBoundaryLeft(this.selectionStart);this._removeCharsFromTo(t,this.selectionStart),this.selectionStart=t}else if(e.altKey){var n=this.findWordBoundaryLeft(this.selectionStart);this._removeCharsFromTo(n,this.selectionStart),this.selectionStart=n}else{var r=this.text.slice(this.selectionStart-1,this.selectionStart)==="\n";this.removeStyleObject(r),this.selectionStart--,this.text=this.text.slice(0,this.selectionStart)+this.text.slice(this.selectionStart+1)}}else this._removeCharsFromTo(this.selectionStart,this.selectionEnd);this.selectionEnd=this.selectionStart;var i=this.text.split(this._reNewline);for(var s in this.styles)i[s]||delete this.styles[s];this.canvas&&this.canvas.renderAll().renderAll(),this.setCoords(),this.fire("text:changed")},_removeCharsFromTo:function(e,t){var n=t;while(n!==e)n--,this.removeStyleObject(!1,n);this.text=this.text.slice(0,e)+this.text.slice(t)},insertChars:function(e){var t=this.text.slice(this.selectionStart,this.selectionStart+1)==="\n";this.text=this.text.slice(0,this.selectionStart)+e+this.text.slice(this.selectionEnd),this.selectionStart===this.selectionEnd?this.insertStyleObject(e,t):this.selectionEnd-this.selectionStart>1,this.selectionStart+=e.length,this.selectionEnd=this.selectionStart,this.canvas&&this.canvas.renderAll().renderAll(),this.setCoords(),this.fire("text:changed")},insertNewlineStyleObject:function(t,n,r){this.shiftLineStyles(t,1),this.styles[t+1]||(this.styles[t+1]={});var i=this.styles[t][n-1],s={};if(r)s[0]=e(i),this.styles[t+1]=s;else{for(var o in this.styles[t])parseInt(o,10)>=n&&(s[parseInt(o,10)-n]=this.styles[t][o],delete this.styles[t][o]);this.styles[t+1]=s}},insertCharStyleObject:function(t,n){var r=this.styles[t],i=e(r);n===0&&(n=1);for(var s in i){var o=parseInt(s,10);o>=n&&(r[o+1]=i[o])}this.styles[t][n]=e(r[n-1])},insertStyleObject:function(e,t){if(this.isEmptyStyles())return;var n=this.get2DCursorLocation(),r=n.lineIndex,i=n.charIndex;this.styles[r]||(this.styles[r]={}),e==="\n"?this.insertNewlineStyleObject(r,i,t):this.insertCharStyleObject(r,i)},shiftLineStyles:function(t,n){var r=e(this.styles);for(var i in this.styles){var s=parseInt(i,10);s>t&&(this.styles[s+n]=r[s])}},removeStyleObject:function(t,n){var r=this.get2DCursorLocation(n),i=r.lineIndex,s=r.charIndex;if(t){var o=this.text.split(this._reNewline),u=o[i-1],a=u.length;this.styles[i-1]||(this.styles[i-1]={});for(s in this.styles[i])this.styles[i-1][parseInt(s,10)+a]=this.styles[i][s];this.shiftLineStyles(i,-1)}else{var f=this.styles[i];if(f){var l=this.selectionStart===this.selectionEnd?-1:0;delete f[s+l]}var c=e(f);for(var h in c){var p=parseInt(h,10);p>=s&&p!==0&&(f[p-1]=c[p],delete f[p])}}},insertNewline:function(){this.insertChars("\n")}})}(),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs");n.readFile(e,function(e,n){if(e)throw fabric.log(e),e;t(n)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&(e instanceof Buffer||e.indexOf("data")===0)?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e&&request(e,"binary",r)},fabric.loadSVGFromURL=function(e,t,n){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t,n)}):request(e,"",function(e){fabric.loadSVGFromString(e,t,n)})},fabric.loadSVGFromString=function(e,t,n){var r=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(r.documentElement,function(e,n){t&&t(e,n)},n)},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e,function(e){r.filters=e||[],t&&t(r)})})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file diff --git a/dist/all.min.js.gz b/dist/all.min.js.gz index 1fb5bf92322808399cae4113c058ed483e0215f7..749a6948a31af7394eb17d23a43c8cb313d12bf8 100644 GIT binary patch delta 58088 zcmV(%K;pl*$pfy*0|y_A2ndorevt?0e|OM#HpBdO#gjSoZrX;3RR5F4_8)dJf&wO$F762!Z z^Y*Nm&v|;^oCao^s_NwDr|(}p|Mc|q^!=-6zns1}3C2#IhH*Ae(xtJ0e3!9Vo+h8U{^-oYf9x_$)38kIETHjexUwVuNTRrmSw=Ze7ZLoFan&|D z*U>D$bS6WD)}vyc#KF9XrvTxx>)ol(oz&&t9cIac{4zp#obrIv&yXT67PqU*45Gvb zqsVIrUyIN4FyklDUp!caX~tj0xtot+5~Dopta#etOJ~9ceUHi7m(k)je}Ej&pS&Z2 z&ZL_suaj$@9zk8M%zDjngX*jz2z60nmftS8PNR@BS+AWKRwRVQpiEa0zkZh7n8U__ zLb>kwd2-XuR*NWiduLg@=dn1r1H|#c*Q4O$zUVkae>9^9GCI7ma_{SCEB9lH-V9R? z*eTwLyR!X}FY(RX9 zS|?qE9@p7%ybX&tYJ$UTiu=A(uA7W1mutrBd1PFfNp`(sRN6L6Z#1k$dIjz_ED!FI z^F{P$!F?yn!$mZ8nE3S_nSe-?DxJ;B3CO)WnATi?0IazYfNDJte?kIQCPBUtJ-py~ zSw3c|=tUIpaSRnedHBVTt^gnW5Y~ zcInQ&jqF}}P*CLsG<6u#XXvq{n*mC8^+a-(D`0f95kE`;mma1gevte85dIxt!~sN5 zAooTc80yAj(KvyvHQAJKk(mf7H!I%Z-6`zwFp8lC{RuGOe`9C~!{pB;{(qNbkpz&v z!S`k5u|jY$;H;D{;MAF&hAF@V%|pCi15^W)u-KE!GmI$0+t^6578@ZfW;{QQmOLqp znepzhrPTs(sGGA3gg?mIO;(tiv0cCigcJmD=Xp52Ea8)5=_FnzMaE%RK*tzRFmgkf z9)}VWAUPc9e>F3riX3C$bT8wm4hMkV$hY9(6~{QwScSw~1?oq+2E{y@;Z_r0LA#xM z8)GN;hxL7yi&;+t{8Z?V)8=sT2REzHdQqN3P$g`wO+%fr?h|g=U1MG_?Bjkew>%w6 zP0+fNjtOz#PZ0BKK+2fcRRy6ZklB+p@td5-Gi!a+e}0Q`zi|)SCS0OMiRFx;;k@Ut zEU>PC$zEK+ioA|8sFlO!s6_$9#B6tf5H3K2Qup?(pbKP?(*|OvdMvy|_6Cfw@TS$VX6I0#|SE~iY05WEqQWCGY;q*urW?j0fcv)#4r!C`1LsILKk3fPnuVmRxaFftx#ve zf6Fwyz+WJF=4=6UpCI{e#>K>A(*Rq&PSRQC45xd0OE~Cyzn^8jZq5-5yuH0ew}`XL zXb$TFD+H9{H&!AYn~+kTz?U$Mt6-s~@A6;;(|76317kce8`BYxc7Rx(E~1OrU5qa$ zFg=%S<@xfPriwxF&H%c;w-@3h02(^Fe}o$_oYZQT!*Z6d%Ka?M>t4Z`Pl?@mlx8{A zF)W5f0C1WGMK^|?oJ2t8#1{a|y8~Jf+TEvcHwuCQfHM*hMsW|1;wYA6QE!UZ3pq7K zce)6(3<1yc?n;P4w8XhvKtG16^ah&iZz9;3k-ae`)`fWn5(H6ofSWk-1SykRf6W6( zT?5glW;bO7DG`8N0T`!jO8`vKorQU*F6Tdex>_!d!uTr8-h^>@QM(^w4+JZ zRZoc#AHmA|vA~Bwn`5(39YPZC9-W*7cSv9PHZ3Nu=;5M}oP(FpmLR<_0T~E^xceeH zSkfSRsxY(XGQa*Ik+JEfPm%Crk{q`z*5d-uP5jld>Q}Av)|4zUX+=E#bKs=mA zpPjOcVz;=p4)!ZFOcH3?B@d7!VKI?pvA3IdXHkaD&XAIYo1jhA0V=1yWVqh|^S9f4 zSlwlr-jJ%5Lm*_te^;A72ocy@sj_ou6J~<<|>54N%T|G@_5ZL z?~uC#-=#>nX^6BO4-7?*SnV=mm*`a>5>@APaMFm6?u_C?WJvJ9*>Tz&hIEj21{l%C z7>{w$z;ixLfaXI+c?BB~ajvg!7JVKEci8z9`Jg@>ba)FXe?tf>ypvz1NpW%MP~1iX zMH;|F7$@xBo*6Q!oS|Y18PJ^}%^TAJ7y~_D9`(jllw*RK2fWE|j^}RX?FKXfSS*ma zr^zBo9lSrl#@ZlH$UBGi`#h|UJPpiFme&9=i6@sKAm<92z$3a!L=%_Fz#n+AhPL~# z!+P#N0GZDFf1MvE?KPs+N&C$0wnk^340&s}Ga8@Gx|6oVy55@gq6>{#GL2bMK*rEC zb4IR2GO;IGgSOx_09*s~E)71wfFF;?PBNc=K+gDl{t zL@Y&hG~&nd4w=iAN)}A-_w?dCJach;9zz@|#^s%Pe?4Y^p$+PipKcyba1J_9mFu+Q zw&OV)(J5S#Q}rBB0c*|nxPwj2(6iC>|1R`_ zMrSL0e;vaZ2r=X!O>o4CJkp>^#xt1(MzA3j!pA0mw=&PCRn2ky#K!{tUrdK%IkpHs7k{C1BVZ6EP;} zO(6)VE0(WFL(Nplkei1;lr8cYe&eM8@rG>BVCS$$&ZBnLhQFR@nFeWg9IzyGJy^LX ze}EFil~dj?6>8<`2AOutB_$Gqb|#)OWju1w&1|s|uu|}7Sg+3o&NFx&(1TnbRqM5E zIxpMv0K=EOm$*(XnM)m+OC8Zt-w9q8F0L9_R@Oc$acSCBdmoNCyjuZ+zj8B}rp-pf zAZ3*_NizpFr@77bdw0HN7IS+R^R2U(f7`Ptm?793v20mz4c`a@S?~hB0JR=Vwq$)z zLD#5gX0fvkXg-mk44Hsn8`9%yWgEa@Ph17ZWYHQA9tKH=dk+@{5Hp_3<7Ikv!;!-O z9S`D`2lRY0ggb<0=Jbb2dHTZg6{4mvNZ{a<2LYU^-Y~n4@Y<9hv44kWjC1Aqf6=&@ z1b0i{Ip=>xaM~2<6+cZJ7W(73{qKK=`0Sa|#{g&s`q)=7k1-~|ukSF5zMf1bo1q|M zsEO2Q0tqu+cc3c|MD2FDrBM!fAgY`$)>!JsC^cOq8Gje%msHTs#~q(SfU@#2mgp`O zV=-qG4mFt-nQtPrP&T6ERYYk#eQ9vV((N-oPQDN3Z-13N-}IvvB(Ph$5Wzx;Ib5B?p*YlWYRLg@ub=B)D=7QWN4@ zR-D7J@M`8E#rCDkg}AB>VdEjiOr%L~nq`jUqBj>mg}*T0q9>se~);)fiCfpJxx1u;I%<*py&7J49~MX{lQNK6D~h3*WIgB4pW?Nl+U;NXoB z^FGbt3^<4G0|^Y!1{*|!8$K$PH}Nh+A&kM52|2r)EfiYg!-#|Oe@hNBldR6f<|Q4k z1uVh`c>{reBk;m+T_J08BE(VHZ{2e^1!BZOK#~2{6?hD2E{-9A4c)gQBucu*)69Rn zRAYDru|vh)5GZGSha5fFCzD~+J%??70he9qF5YwiOQ=#%Es7n9?$k0uDxn5^0*5{+ zaSv7MJ?uD$?z6Y;e?gzQom>lZC`k^l^%^q+g$d`scnB+>F@lm8;F=A+K_(0eE#NHU zC<2UWeenEB;i-73rs3Gdd;9eYdizjCXB=I7q{C(afs^S>5tx% zRzz#`Gwn|n!bMa)>~-KQoCj(VhM|<=;jIrWR01%~Gxp&je{r zcOX0T7^bbERxz3L%1rup4OlQ$Vj&FR(0)e2r!*lBHpb}%@;mP?qbvjb@e@W9$-J;1 zMyA2rVtLL}chSAZ{MTL^^3iynJrtlDGCvfkrwG(dD`W$-S=$sRinoI)&}BhF+#Cxc z3?Q)M?*|BPe`B=B1W|wklLTq^9LE->5fH6ui5z~y+ow4ja1W@LCDzA!om%{+p(0(7 zbZmx38%PQSy{+4`nwJ1d@5B(=nU^~;Jeb2y4CPJ?%bi%row)e&PTbPx>JC~|VV#EY zz&#Vgo+-qhX{d*WSlJ^nW{j&lV`}bT8h^l0E+1JyZcWVe)Xvea{_^qfTB~_U^6~S)^U+v1YFl4Y#ImZM=!FYZ5w(ow%3IalH%Jr1m{7Yylm=I^ zmAI441KbkC*Flsn1!mbaNR~%2i8i-`g-g#kT_<+bJ$KN$Sg%Z#PBk>BsMh3 z;g0$=Kl-iB)pCiK_!#0z@b9x3{JVmGOJZ3@f5v5=-NMCqSjTi3r5?}cKr3c=cixsI zqw(RsyYTL|XS&cB>>T=V9b703c7AXT80=hJ@?HcN`KaguJ?$fpT3zvh5Pl1NJrWD}89rYJ1NIc>%O1;V ze{C#;jn7ML{JPy{Zx25Mgnka*dhDq<`rlFmHiA1g5#0F}1b18_xVP=#Na45R62EQC zCf>kyK*4ACGkYsw;*C9sr+NUL&d_^zb0$8Pa z4|y&Ghr62hE`ade!}>RTSL+{M$sG317ACs?)*gG+UcHkHjh};0;u^-D1<%FTdVRNH zf0Td^w4R`aI;-}T$6kt+p7Lnn{^7A#!OPws!{?HWDwE3MZ`-rZ(rdl)*mFfxf4yWY zxtbr@vu>WOL_s15jgl)(On7knMLB_IlHzU3y_A^R**O1tN*2G-=*?`UD_xPs($-~8K-KpR& z#z*eYvZeRzXI(Rm%<~~l@&aDte}rKU8Ge@Jd9nIy6xCIF9{r$XyM%@@$u_fpBU;T5v@wV^xKS;5YOTMM21N=O({F`f9OMJRhWP zMmZP%?Rw%gefWVntkPUKcalf?8%?;!eu86>E-V%`qu4n=*+kCP?@uT~p>9=Gmi*On z(aevph=)U{=Z<{7T=Sdtf4AN@iiw(gBWJ*uj-T7Q0azAhq_?^;vZ~|AIQMgP6_a8= zgpr7$oEC6gE(KjjvBQSA0LAZ9lnN;0m|0bj4<#pBMy{e8zCfTWpAn7R_!w7jBxMnb zChS(vg&4WZK<4pGNdijQ#D^Vi2r?X{*h_?9hXgpNy0^F9ox(DTe-pnhH)mwS=Rapk zOYT68em1@2%P{LKqiLFC$vp2&lckU8o|KXJ(nuh$52$2?Ja8!s1b2kX@G45u0NPl% z|CsT4SS<2?{QBm#=MX7`EPH(2MXFhjO}~K=-BxY&I*kCYJUXEIcPgCrL&;i&t~`K` zeurH?I}@E|WdM-jf1T>MU+cGKUJI^u2mk^YAk6$c1$wT|UaohkmS;$v6x??NGNa7h zf5O8z>M@zl_4bKz*BSKTzbLjD{+n>e=nZVJ3?^ljM93xBY%HF+(OS!9fj9S~!u;MG z^k`8JA9>7@u@chW#9|NU?Ko|Hnz zEBQlAdq0U`Ct zd#aVM$8X1lei!wcNcZ8%QbYF*hY_GjRvPWxrsiL-d_&~RWVy6<;i>O38iPfLEm zeB>Sje=JQAAQ5!4@$(5gHunAA-m#@6VWy$x4R8$baxA%Ov%r}<5Yopt zTs>tdNh2UAgIB?e&S#pB6G&OXOa(Cgvk`Iv;kWJFaL0G>^%Wvswg04HEEYmM@st+f zeQ+#=b>GVi*&pn^-UB!{Zv?jZC3u5E5P!kXe*nmN1OBKw_ZLMwe_+2pbOHeU0Kfd& zO=6%h9QLaeocvAvLRefkf?tTGMFXYJkL)i1xDT~H{H6Nvs}vBJCB-?~Kae%=2Ola` z?+1UCb^j%}VwfmJFMm^C>-C4dy$@w*08?qM+ppf{bGriltlfUDZVyY7$AFBcrW^iI ze+wmt;BvMy?+`VF(4a41h$r)|EfO3^ixQOTl!D7m`Bb7)m1u6tY~|Q&*u$)i2s;q; zSKb9rj^7UP4-gLcgIc-f70D?wzJuae(;POpp*vd2wjK=nBd71QVNm6*h}0R(TyTG0 z;o;YX!z_P=Qqq9z%2>KIac_j8d8M?Oe@k6Ev2RxT!bqm-hv#v z6KabhAucJYL6lZTLTHqx8IX&tRVkT?1eB*%YYDSZ%Lj2n!540RKrd<;FIB&kfAf-4 z;LFJos}Xua7AhugtWJ!wmr)#1`bbVl==lyF6pkoxo+Jwn#E378LxL)-3y7R@ygpeN zkVlTJ31+Dsh2lf~jZd;$rGT3=T{1FuaD3V1qrWD4+qP@LBFwe!Z zre52nLHIk+MIZVV0eObh@ea0>lG?6Un`&FFS^!nZQV&}F+Qzm`@7+dDfA8Iwrx)d! z?kdx}DW`WM=jb^yj!byLO|xt7lEyquYF--hOZ~0mIiUWL(#H7Z^ynqP&qp4nF7&74 zwCApo_6CTSOGp?rq+usqyilE15`IqLib*McwK^bx01q~%odEKWXCm$YNF5g@_eyQ3 z;<=?B|4i)T2hEK=B^z;Ce@t(J-uSFQbc%n&8T|de-|x`RckuV0{rOoj_~-d|^!LeG zvET1cJM=ThzxzK>V4nit_bKo_1m=8>f9G?If}i=McTt`W*y!1rb9RGG-3;buH~*Z& z$B*;>A3A}^U1BXfae_PN?A*bFZd`>~1A*jSJBgJ3pG=RzTWLv}CH8ls`=o!v>BcdkbGAHZCfU@yadGKCx|6 zKtJh0JWLV&hytXjMVIOwqfm*8WVJEw_EjK^r{tC_y6&(QTRj4EjUsf9B*-Dsf&Sk) zK=A;;A#rm}dXg{Fe-!%c*puL(E}c1d#At1rH%c%hxq+5~iNA_~+%kB;*Wu!G<#Z3w zzyUqM>E1^MRwq0zOzu1gyGF27gwv@h46$_ARLqMI{iptnqbBxFWNKQ-{wm`hc+I36 z_#ebtQ<}2)?Xl^NMPxxxu%s~&`AJxSIIfD!n%=NF2Kbw_e-m9gd%us*Cd|LvoMou3 zTefeg(x15_e~kN}cRr8Pe6lXa{mzeJXa2PFa&q_G2IbzJ|8l&th%^2j^T%iDq~)xU z8@Zl`0IzGrhU?DgY}ST4&$?%`mN&xM`HRW8eb$*^iZ{agCT4w*<@dF}W*(NxT4!Ug zjd>hT^X~r$e>k8(*KwUT_8yhK4C;(l#Dx11EiA(C9~-R4|HA;{liN5CZ%j}oxI{2E zw8IyPrC+?!itb?=+X=E8a4cki)vE-*or={~au_Ls*eZq1D}9i2Q7hoe7}M;4SLqh@ zdrQlhRBgIC%u3s3k;cZo#>XA5A82;zQ2X?Wo3;Wnf1uhGXFeaveiV7MkX#02N)qMi zZYvG7``gkKvg?<(h}_VBua-b9*rs^AmXXDYit2rU);X%?h_C`ObjAsT2$a61f7=>F zz2NagD&seeOKL1zCXbBwG&+{HPPsO;)i|QQw`~r@ShmbVdCAfiX-F^CMAvjs;xy$R zm-i?%fBluR9Idm7>dgckM)MHUFF=*~NEQd%rcsz6(~n+SXBqW@Vs&3g4j%;yjT82#dcr+&II zFw#-7SO{H=;4YlaOdA1WRAPQJf(WJeVkVeIe|yvjdEL|y$G3P{Fc#Zpo-c((+G@$1ZuT89|GkX9}?>~sPBK!VA+>R-$T)!vCt%mi!Up&jIK^d#wv ze{gy!DrvMvQ1511f~`~(?{xH5V+g^p*(!UAl{GY3%21pw%QoxC0x{o)#Cf#Hd0MJJ z8hVFZyHMf=5{1(2Ugssl~r-n60)@7}fmt5PU!V;fNQA$PZa7)VG7amgLc4>S4LmjSz@&4;l?wLgk}vRSSkU^4 z&eygIT$o`=>7zj%`u86e~?$p@B*cvBA}1Zw2?__=BRB?>cS*)@1pPRwXo$h@-ID_Vp~ zTK*Y~(!ku&fFpiNlY)TJfAiCT3`i?hO63lOYV`R@QlwL%3xKSEvf-s_7|qV??QQ3h zizRMkl0Sf!#M=Ur4r2_E1ylSrCg1}4p==RqCG)J4vU!knB2*c0!&cayx8`U~F?Q$3 zF}~DHU?wE{cl(Glh4>#gL?_Y60z_!-4pg@4!Wc>Q3Qxz1=W)cq;f9cj^B-O_V%K`^>0-#91FwO;i4fAnA_fq(2;!NY7d#R!yRVW)* zzS?<@yp5ZZE!a#{mVLQ0hxpwNvntKXO4$x&P<0z7W?#rVy@K=HQXYZ>brG!q$kE^h zeVfpDViHQ@F`*4IC(p;-Y>euRg9%zhe;AK*LNb^;7rArHon!9Y z&K;R572;%lJj?(U+(kGyMq+{%CLl4vL}hZq(C-_DkQhQ@(GKuP9*2`w3V&d|hFBM_ zTd|RE@8bx1h@Fg}W8$}u;?*KNkl}q9-k%r*#Z9?RZp{>+$~FG|ZqhotQ}*z@vrW&V zi!oGJR&`n)e|&;AKxJY8J~T&#_It4dMS!;PNbUDK)b>qb{s70NaRpC_K;TC@Mp#AZ{;%Y0E7- z+-r58v==Qm?Bw_f7=Ee)orTTmGo?6p^|RnJXZP}A%Xuc|ZIk3ZAgox#Pn z70g%)e?&`H!L%2%Ww3z17eQyyOHrZ>{+|K2ECh3cmK)o^Z@Co)1WWfJTiK8>XF_32t}%b&XLIQ zH0VBQx##T{Ugt?XWsG8GupTRW>L&KlP&j2H!wAvr+B|+hWO(z=z#)6;O&n2`T zSD|$)tR5M#dZb`A42o6+JFb(oG62&A0#k^}fR?~XPCEdTtKf&;QJ2mMj(qe%(;O8pYC3%h_Ne}#XL4I_XPjwZ`*I&jD<4VQSmhO0kD-(s}X zTG?;IMWnwG#Dv~XEHXV%FNUm zzeqXHPLua=4+EkzNUY>k#GWS4MZTc0lZg?39yv+wQdigXy{o4Ur+0}38kcDYL=8)4K!OfLdPL+SNHLk#2dVl%N)Bh74DTJ#3Y0AS*M!O%wFJ!A%?vB;@OB7fVA`^TuP<<&kWvhJ}+U6|036Lz#FjL^Kuw&A`RTQ=zUv zBJ#B5iw6eD3N;hXgX(=*hO35tKy0NC@_sm}yb@MBqZmAC*%=r4I)U9KdWWGdmHhaI z&haag(Q~v@M?Azs}+r zsG++e!NOz43uW0eVW+I=LH}^z8IEND-w1R(OYY3+MsurTp4;t-Fx-eDwe5Bchffo7 z+z5QWt58CGkXJXMs}EV?wx_j))WTI8kJaer;4X@NkkqpTY_wpy(=1jKOsq@0c$B6i8aBd$>63q zr6&`5;)i`l<|L-*8>Grm0C4jEUY(|=9AlIMtLY$1j3jat#}X;6*RcKYAH+iIA`|C2r#&QQkm2Rv1GKVhWy9fYYO5Oplqy6dO}tRHi;cqo2C8 zIMfQSYIiO%?am>K8nua&aX2w#PLr1`B{CvX0JwMRr4Jov3J(uKY5u=~Mj{CuOU5ZJ zYZOF-pdF0o9{q}C#1S!Vtt-;kZO8C%lkO}UGPr7n;CqXc+#%mZ+a`LIwGes)xHiHA z%o+`jp1?KNkFQXE>%%N++%-f8Wodi}lG+uMIxQb4hS#i!QiDL;HSS{NVH8@HiN2$1=#X`jU(GqLu^Qm#x=#8M!ZeO;&c92%ILX z|Ai)Z(T|TH`N@im>Ck64_RwW{8O3mOSDMhaViY@nP0}KmF#}Mi8@160kX@vVlG)U1 zlXVoJmXeik`mMdSMdG-UorDvpm|nu2#2Gno9f&XZ?37|M$CqiDR=Gs>8Y~#H;`)=3 z{DmEV(s7M%^%+k*^vA7S`HCadkvPM#&q-+@yXHF96!!e|sff{e_p9f)9gHAWD!x8_ za@rhrB$3zv#KXFeG4w4IG}MnY8~QjZlgP<0$slbuo~wM6Hd^1eHiT1kVCXPMJZ{*r z9?Dx)T=YG(C{RZa=}75g7%H0aGSt}i_S_7ApLp05|6H=wFdVryQ?1z_vT}aBVXKDR z4dc=UJbzwmLf%r60I85+_yJ2Mqj2%Y6Hgim&!9-^4P}BNI$5JD z=Avt#O7$`5OA~g7Wq3#~;2hZ7!@qcj7y=l8BW0{QI+BBeBr-CU0G(pl-d@&~=OXNX z%#;WQV;xlIvTEm8S&863qljGd^ojlsr%(VU34fF}%I;Kl{7!xZT4a!qMaz?6hG%3{ z&R>R7TQV^y@RH_jtPEe8xgnjs(L~p)yw}L!(4NMuHi0;1nyXAn9w+1gv%&5>crJhn8InoK3ggX&3#nkA} z@|I4b@PebuHQBo3S*=;_50uPFdMBWZ4Dq$ET|mnqWLbSU%sPMOE? z(_t*GCaIRp;F||ovYSO$4m~Al0+D7*nO)J-iL7!vi{xIHIijE!E>@Qz>QB1xN7eyf z0Xf?H{mhe&_Od2e3fG8hPd7I-U>1NBDel=3j>{s{k(vltqztGWb0)f)8ss29pqnLvGLK43&% z&Qvt&S#Pg}SDA#;C1k+wz0TEDWt0(=?S4?6-M&JdAk%7#<(KMyAmUzsbt?$C#=ED3 z?jE(#G6Yax?0_W2q|1D{c$uUkq2laCY2xX(it3%tB?qHr^=))7TJCE|%qc36icx0P zzzmI?9buixRJte>v9Z;v3>oChh}1(uz`Td>t$x09QW>*M7GZ>?eIoDVc-K~rMu;Ns zBZ*110}aem<=P(hQzch_65O39>5QjH@RLzkU-*G$A{vN(84Cp*X4v>u`D7Gi6nQp; zbR*BaCaC60=kmDv37)FsVlrt5+Qd65umG_%=mSl!$@DykYDA}IKLKn$LsMhWha)<7 z(0fN!vl%ZUjTy-w&8{>I8leoIq*F(65c%-WaP}JfNUTR`_VU+%h+nVQkzBstsF26R zcvHFpw*e*4`6-MDqZRY=a^-bgbvP>nzwJ!ioN=yFyf&)}K2|G$$u`Q%i&;CXT(zY# z5LaflmE&kdiPh-(a$t2MsYap@W)~J33D4N7I}a;^u2YeOMB2;3#U)RBH>USg3nSyz z+KM72jQC#0Y20{Z4^z*ceIRL4axRskHbNDDX_IoE@gzX)l)k4n_-1R{_!37d@}Pwp zxDrY6$i2Cx>=<`C9=`SoS8xjCH_eE3iKpXrPn6G(#Q$pKyXK zjR7IW02>CKHCN2Gk$Rhv?9ppz0)T_ga+4o5C^;eGqgON~W01X@&h_A3!OPUqYdO>TdXf``rzfHf(9v;>d^k~)D?NBA%( z`3cC%6+}P^Foj-yZH^DselL#o?qbX0fKV({kPf$<^}0j z%oYgBa9ICJ+HiD#a^Z2UV&Doe4IBV1D_w;af?@vmTRI2-ajPkGWqL4`I3i!)s}6`W}Llt5%ee$EqPL) zsMml$?tPDRbdwn->7$|Y3Sh{MSequK9&k7^8@3X5k9row_ntT=>m7lYfAF~YY+t~7L#*H5~m?*tUuHAjOy`p`I zVBi_bMsD7JiaW3)yq0dU2X}v4wyo0jxCNUnNWB&}kI1xPbIN=!@9bO0X;hyM$k^Lw z{9rJOd;2Ypb^9IsbUPg`YUm8CO0s)8W_K-V$_Y~rC<6t%F}GcH@qqqO52=IDxnN&Z zV-GXDw}*Bg=S|aR^|8e(6R>ztFO8WjJKCzQ$n*<;U9~%V`NausnAFt+yW2Fe4U;?j z>chZ(?5}iR?}%Daqu{dMCiYV|tCSX@jw-ZX)JIQ-Wnrk*Jt}6=Dt+5nIvwTh7|OdH zqlOMtf$djj|9orvWle5nL8|={y%K9vZ4!2=M=NBj&4auQsp$L zS>;ZD?gKGntzV)mII&*tea~KsWB+p@B#(Er; z8pEX~SzvpWiPUIONn9gV*Nsq3nRg-!$Uc8{g(mJ*mA0cQ@V@@KdK=KQ3zfGZ$CLek zCtlg}3bw9g!k*a3`)PfHcaGh(!&#qV&Ai9eykhze2EG06Kc9@^)<3&XzTbZ$4-S5? zui{;qfE|P0P&D=ie?(3hS;@QK-8VA-_*i7G=K0>r^uu=|TSd{iLh`|Mj$r7meK|}7 zrrbZqm`-ZM#gt%iW8f+TH!%GBD*o?(BAfy7hk@fFr%=j7k_tyMd{mrAQ$JIAMKCEd zi->~hiqqT=jhZ1ix2lGSh0Yztxj!v)WAM_otsuc|h!(eZ8#WLd5s9Q$8l~L%R-9J))1t|2n z%uV6fDr*8O&;6%5vj`s>*+tA7TLXeW$T0;zOckSI%qQj>CsKf=A&?=l4ACu%1NXsQ z!No~Fb7#Fq`*ebHKH`DQ^uAa?FebOj4)PC^8NSfZ;6@Y0blvKp7Z1meiA0cuD)CTX;?`nWE^G^HrRef~HO80d z;7jRfMSQz-^F3y#6jyH)qXwhl^VstZ3wB!0bT``Di?X-jTQ~DYv7cGAbw!yflzPMC zc%to#^Kl5li6t*lx)MSuZ`6X;kHhHdj$VfQwgYxy$16uur_iFbnoG8Sxao149_urg z9A1k6;4jfK17a8E<^9DuL^5f(Tc(vl8P**jmE$lC#70b5x3!*=d%s_3caqlAGCpG> zpWY)`2)UMe2{S7*OQk2ZBuHz<9?g4iB%W1GNI>Tg_!cH?Ad+1?pamE`a7Flh%?$gq zC}fwg*nL4S+oDgzQZ8$M_fa*Q#g)rkDg7eFmt0}BU@hFXdLxv7!jVxK{6QymtIUc% zPZl%!!_)NwZF#`&pxqSS1pa*w|NaU8et>^J_WPm^w5-0mK?CZ#Ot!<5u5N?)|807w~ynmGb> z7_%2aqmge%pp2w{S;$;JWXkK*m*iwOC_I)>T?w=T7Wo}^qy2^eZo?0jRHNuUZ4pX zz_ZW!JR^Bjsx;G;0vh~DW+Aha>dmxPQW$Et)IH7xm4cU!ysKVl-y!Ix0=Me)E!O;+ zA9f`)!Ytl@ZR*PARV@{H=gbLG_)RV!p@vD27>*ozXDw-bZFJT;>j@VMux5!uNzz1{ z&a~-Wh*wu65t@VoCDd&o*H(zm4V0&9_D~A(&K>{0k%r)gD1A1Vs27;=z5-}6Pq<|x z!BNs0!apb;3k&)9LoYeDX_lyJnnfDRLklfNT|U)+1-JDAAJpgY13khj$KfQHZwyp# zF>^}HuFiXw*075Zw-c{Pc1na#fJ9YjacC0LLz!5lVl&lSM6*c#yyq8iOK_dv&(69| zJ4Lz%w?X2q*HJagKOA)XRA#VKopxL%;>IepWP51$VVq3745z`0f(SJwnaM@sHOsY{ zn-igb#iSLAntXWkdbpcag+S0Au6*vW-Wq}Y)Fn^Jq9;&PUwQ(4e*6aKRv4uPWQ3A8 z4unyJ0Fqt1N<%Gu_xbVB>Bo036ui1;WBGYD@miz9UL?Ga&~aHCgLYCOiK}0KQnG+< zEpK^MA{25$Sc$VcZ7B<-ElYfuYGqRG{QIhT+;iOO1nH+IP8AH$t3#yxrq0IcS&~Bhi6tNr>d_VC?)C zc?zGy(01^^5`AFu#dYSXcgS3q^k^b!*jrDVq zC?0Qf`2L7F2fO2==TA?cj)9_J&SY{3H7Qr(MunC@@#k`0##$2bHF=G6&co^F3-alE zB>fr71ad$c-m2KV>}!=B3RDRU4XrNWY$mXZB>s$7oJR*RV7Nm7#txjmvvW&-f1_F8 zJc9l3=$%M(b{?@u!YM1nQ#Bcx!xm-+*&}C1dcmzEOUJ{IE}Qu!j`BYv%2vgH+loNg3tbC%IDQQuyr?zaU9H_AIA$va9-$EV=23^9?I zB6H6#`Fz%f#{|9ART8@PkO_FV)X_v`%Xs>h3D*QiGUYcBVAC5Vf3H7(QlHkg$Pk|p z3$Zf`vr9UzNejs4D(XxKJ1~Jd3mR!Wg0PhVH?@`HUl^gYETbIV5W|no^ai6|QpVC9TI#CUk4^q;rPxfRPPx{EN&P z2VLuR+LO_lbhvlcJtGHu@Xd9CH-ZB%q|9e$S(`y*)>daI??+fBJ)mac5^P z{W}??}C)kmNM^E+mT&|FR$fL z;zfX0Md%==EZfeAdi@RTf7`&g4PKyaWFvgVoQskhrgxq8E|Dl>PpGdhoJ8*y>vgfW zw|gtDl!f-r7!C_fd7hWFVydZno_|YYJ_+tt7cs{$2Bqb1j1*a`7H1;t5E(B+)pvvZKddUTLb)yQP@Raigm|bxB3`pu|r^ti)(>*Ldt9wG-i;(&`b=@?`i#shk+@ z<5I=3qhVa~>E~DT=Wz4I>G`y^)6%Xw7hF1z+b>S$Y#+(xm5+_a3L7>nkbBlpgU)C| ze}dM+qY#=O_9~!JdU)*XM0;dvIaKGix*M$>gfMw=*^}7rMqKX$7k!B99Vo*l;B`7R z7#4n6D$rjU@x4T*BrfHmSND9SX3yT0)zqp3&St?Vg;}xejoRq9L4H5ehFI0YS0$o( zbieI7rU%QNDBB4aq&Bys+1E;uMwSG;e_@(fy)&#b`Z2Ry3fq3UVlmX4Ht*iZ4x>L! z*aq5T=2jP}H)!lkmxAwG>2epz>@a=$kXCh@o>A-p?Ut>oHl@SRFE!aIyW9~2wOx&F zZ?$8Lwo@DJ$%EV1t$Wq759mSJzHD7x6~5GNOBHQlyQJw#+0FV7MD-W< zRDWn>Ka{!ess7Nc{!sRwr>hELZrV72LT&`oyzyGO+6@qUD`IaUmgZfcFr=imxxf}% zLRyNYO`-6Asd$jL@-{je1IUSHe}r*rHGZj=z5S+M_V%gHczadCO+}>YWKgBY?8sY& zI~gkqZ@yGfc+*gkiqsWpo4^eUdSYk}bK0T|(aaw{R_W{7DS+8<)@b^yZmPT*y$Ddq zuEW*VMbis5Y%GnVLu*bDiZ`3Td5>e-4gk3?ZnV9Vr-t_wB};wvL_wk>yHmQ?1`ky5DiAyNT+2OyVD2BesZ zC#(ou+>R0MY1$+aKx4Vm)Qp_-z$mZEbc}XX8DdWC5?4a7 z8;ahXO@pvEANCJ|#opfHe;^p_?ZNkSZ*L0UBR3HS+g-;TFUmDo^C<)jgfnhv99H)=gUe3eO@3PxL${(5~iCwg1V+~p5S|&uVdjJ2IL!Gl#HC@{+LHx-&Cfccy435}jJQNqgXZo1q9&!@^So=w)&kbxjC!f9G<-^n-PzX3%gf z6shf2o$hG+Fy#=NMyjOr#5gNLwNe0Um>oo=)KwC2^nF#pkDK8*BOG+|q`K%%6aCQJ z0}ZPKO&bQ9ZX0O&#et%YsxZD-RQH$?_ekl`h&=R1N@yQGi@=1?1kflROf0mb5#uHp zU0YZ+V02oFrcbw}e;15QqfWO^ScvJD+tNdpVfsoem;&+D7C>T^gvGXm>9&MRBcZ-V zt8Htv`v2mv;UjUqhl{>se@Qh0&ll&Aa`f$zD_(TQTlJ-8h~dZNnKW*rF~XSKrIL~z ziw_39??=4t=ICMd`&R772i+&A345^Ld#n>&2y|k|;PZzZe{|H-+6hOo4M$toJliM} z9cuJto@UjlsM85U(#?S@I3^?Wz6Bdh~lzx=92AS!wgy?X?j;Z7X z_otl(`&y+9f0Mv1+My>@H1P}xy(mC@rg<;(py-6dEJzMvh37qYzXM^d%thK2JOU{AqD7w4Ett6iU}OR1rom7M7`j9<+GV6Pm&OF zqt@f^`;rzFF&P@Gv|^pjW?qBpBKe-#BI^8_48U07DLF2Mn$Y`QIN zxx;~_be%T7l@ke!kKgiRe}Zq8vcmAIY7FnGl0F{mx-BT$R<+_@YQS@)$M1n~`>or) zge0KjRns{&{VjcA+u!OoA26P;X*9gI)#{M>&4XI!BttH5F7DuaZUu z8-NJb>%sm%p}cfn8G8rvi+iKKkJ!1|*OL-@vy+>332r>G3vOOwA=yeg`*MGR^-`G zf01s3ij6*gQ~v&^XJOF$9WmC3OfkD>v%3L%ygB=p6eHM!qVT0#C(yfhS3Gm0+|K9> z-^R-(e?EDQO(M>)o2*yf9P@Rp@f&FDA0wcnIzNV;`Q+~V&02p$qu=x*o!ulO;C}sQ z5&F(Q`u&&ipTo`(ZYhlaVYuKjh{^L}e|nikSm5PL5pw}s4}w4R@qZZPJf;FaQ29l) zwPoH4Ksz_H0E-SziDWA#SU~(2M z0GuJ>sE_}1SkA+R><;F>rX7j-#c*%=Vv$_S2&kZhnzBJI9J*k)}P`AcYxqKe)xxH_dcOVi&8v$|Q4}i9<#>2+<(Pp<<$9_W{`&;VR zFYCz6IvzLF@pwxek98e#$BuPHDdAKdjO<`W!F>GP#C*EPu;&jZo7x)TWmbM#NpO~b z)$&PdxM}&SRn?adH@uLv$Sw8df55fI0E_c2P>pS*9Py(E|I`$#JTUp&Rtd1EmGyBo zYq=Q6v0!uT5xvTJMGyw_ASr3-MUWf-t{x>VVhi|5JL@E^46eFKYrnG?7C}m8;-dDT z_ZSIx8N|!9{On*#17%#aVBsw~IIP9YMaD$_Noe|eQFRneod zvBdnwE0;6G5vmWc&(f6K&bzZj?&MSp4vkJ&iWDz4}x1%)AzkGwKynZ$6ZqBUxZ z05$ivX+0|KFroaYw4p*_AtPCJ=(Ki5X)yQ8NF`xTI!beIquFvmrqwkeje5NGny!Mx zZt;)_Nk(TIOK86x2-Cz4Hklx9s?0mMsP9Fy?Z=Fofop_v71F4Oe?GAF(5of~ONkcg zKEbqwjQ+X}d$PUXfhscaAJDam6Ko-sln$<;@=03R-ck>y z74^`F=e`gJ*-_Qq>gsOquSCe2=~^~1d8Fp%6qq6_x$bK&`|6=N)=p#XvFKuN-|Swl zyO*o(-B*L?A5~Ekf2FT3it78{pHxifshJfs0@rBgZ_TZ&OHOcE*+!W?QZgh~X~Qd| zdsn)=v@b%IwOX`gAl~kxnW{>fgZcESh-U4!xRDUQPbf&jo)el&K#m4?Hv=C%r6%bt z>)s5|``oP&b4xKd`$nF9%45XbV$8;92IradoyY}8Hys2ze{V|lLEOF(hvk*%3`Hq% zHYNTj6vwz7hG7V8BjsNLB}7#%uzg5Yt~kPSIN z7*^Vnc0(lY$tCWIHC9qMC^oLArAoQFsaFNYv`e>}*iD5BIom_rwN~W*9=s`_ia0GbaW`Kf1 z3cthvrWn@P0y6AZGVGffyoSjk*HATh+S@~H6MHsv%k49Yg0XX8YXR;!>=9~E!d$+3 z{^^mFuA8AkqTQVHr~$@FZ*f5SmoP>Q-OA7{g>Lp`f7(8!$tNHu4U0j3_>BcA)L5g~zawX8(j)$kl;CL0>^nnjyLb3V^NHjz8Ue~V z=-J?Of9UuSXRqBMsd#IJU)Z>>kxNm3x}n>jYDU{6XlfTJS#kEfwwgD0I4+0%cnJTu^M)WsMbZWKBtO#Zk$%A(5a_ zIb+YNzE`3Kf)>qols3&u+hydQ$~eDFYBurEfBJ(uQL26t8y)_s*=Ki#5OE1iu_4N^ z)lyBeA`2$5R`)4kORGGO6tMXU6wruNh0wRK4BZYIj`#u@y&=*)nF+%o(K6K@ zQBzI2l}SL|)JpABb==m|Zz;XM@iQB=oBJ@o!Q9o@DaATZsELL`w~d8v%R=eE ze{bx(RdGYISw%fL)v1ORoq1_NXO0)iLdrO~(Re;FSm18TLb&~wpse?{AYU>?wuBX8 zB{6A}VuL;;lC&;6Z@j*f^C#3+&&2`V)M$*ZLJjXO(xSn3k~`%q2myrBFF+`5+Yd0$ z;_D-PeTghrXK6DvPNohekH<6YY{@9Ye?exMSn&e$QnvamncbFk*>*|9D}<;LXGWEA zA5@p2T_9eEhGu>B*?WZ=c@-x*sC*;hRkamOB>i@5Dp9CN`5|nmK@&=dUxWe`jiO(2 zjZ_X940J-7=cAqHqt5fuYo@&E$xZ{e;r&Q2mdcEVN9CKQk-_upg~&INfbFtsxb3Q;k#^KJOp82fJEe6IXFI9(w->~8 zu8Y%Ju}(x3U{|@>k|ZFk2#FNMA%wyOt)UQ*)N#_7Vri}1akPz8x#uM=Rq94^KW_fl z<{ojZ2go^{T!!e>F}sc9!}%Ogf5C|`SFt+) zoIhO@GyYts@|WZqM2=x;572BB<@t(3%zV&aWae&VrGy9{Nas^&b0uPhcp!B3ZXsfA5`HBX*rNp;xL& z6eDyu=WlolsLv_CQ7N6Wl_7^((_tEhJxP@Ugh|c1dtwF!R;?f1h)ifc8+NW|0d2Wh z0{BXRdH6{?6v91ZR#xvGEoW(o=}=3%fs&sTeve5)(}0>1YAGjvP)7U+bed;E`UlEc z5<{B)3Cv7Zk&i}^e~(6yk7kjN=)M!F+HFW7=#gy5`ghOmjD&2+>V}LjoMof+Hy(U$ zi!Wo1c=-5ceU^E>zxhsQoj9e#UGyRtO^?F(D$Gj1TGkn3e$}rd zvo9biUnW=d-b)(Ur5{ft^>vg%#XMy~q2NWDCgf?bSj=|fe*~G;>KxknpD7LCe|Dr2 zwWIyxndAG)R|ir>B5_@P!TE$4MU|A!8d~XwQ?yn1N(ycTg2!DkYUewS5k*%9pA0pa zHtsN!3>!JN9n0hwa$YR(JB0<|>2dsYHhWKViILMqv^q^hC1^)5O%~bHb4WZEZQz+7 zqA1R3QcN#Tf5`na9y|~YcO?!-Ha|i6zV~D!#x{LmOiYt9*C%O<5}6nxLNeZj8D*R{ zdZyNMd@K~XNs_E<&Os?8eQd%v}8IR0yW%>G=E30T#Zcbyf?r1~3V$yAUl)_*Ft1tK0)><`x zDJyOmS%blh%C+6F;oi)q$Su26M27Q;`Sho+epXK|uBJBI#m1!>X3Hi4bf0sPLZYV_?Ysf_!K9$!bN|%>|`wB^O zsG?N)AY^Bv8MfYs8q#GC%g(mp`Xt}mo3hK!86Bkp8d8k&uC7>ORahma&^I^aT(8aJ z(_T08{IpY=uy&Kz?uLxapRM#I)IVM$z(6Ho?c)mQO4TA?iwfys8Vt^XC!FUxta&yiVS?)P(tO*u4Z5td@ssZYS&@~ZR6hGODH0rbBtMzFD zWO~V~6&U zrAQTuDGsrAhu!62ie}gN28)OsBFXHExbie~rm}D@`r6_Os6=h&bkFgHVL{wb(*+OH zYTIIO&Z2A@rZc-rv-9;@Jg;GJ;<~$Kcq$PIb*x09#U|7PlZZJ`k(*eRC0;a-P6O;~ zb=hEFMbxqf+iwZtlBXoEWe2QTf1;frkBoYPn!SdJZ7O3=xj8#-WB={*=QL3r*;*2^ zSnDNVv|P+>7)8fy(K{O>zjU`Rn>P;AkyEzp_)c{I&P16mu~Canm(~ZU;c#zHkV2pE zg0VWGXnm=?e;T+XJ?vc8^vJyc<#6@=d)s#Dod zB&gGF#~z#vuojB$l9|Ze0X=&WtVmMMNJVp>5^X`hUCGNZGw2>R9$M;H(gKoWNyJMJ zNOCjU&)vE=XdX4zHe&FcfB8g?sATg_xtywZXbq+Y4t11XW4g$93gMHjDN9$pM~?1E z)5a01d>T>rdu_9^T3lW%^<||w{i9B=BWJH#(Bx57Vy$!70_gfY*-WJRB$?^f3^gR^ z>9Lqj)w!_>Rwt$*@d2~azz8&>%=r+Xr^%{*AFrS`h1V*$c38)De~LqCpwsQxlmPie z<N3un#$@K!S`8==3R*$ttY=z_jN1WFrl?~IX2BM@MdixBW zL+E%ZCDGeQ)0I?_zz{z-Q!a!Jgm(#5gJ|CMx){CntTpTY^`5$guZC*Xxt@yqYuZFaibBL=f5EftUnj?Jx7Ji~KC+nI_Se^AmlX9? zvX#{lTd(BgHGud%RG-w+EZu*}8nofvngc9qNlFSdyoX2?tfnN^91RyC)eXF3mp*`Z z?rUUAU8yiE1qHp0enNL6dBVZTmx{+G%_T+dsYxKMl2w5wfBMlNz`HboyKWwFai+5f z&&pKYS~7c{ErCFcNUeGF43~us2e#ZQg358&ZXb?n8cI{2>xlKPJf9km&)O-b4i(Xr zZ6~rK^Be2jSj$v9FvlqRP4(@q5{2qYmqgGb`ZD z3M{s=RBU+Ie-Z$Qs-eIB^e*M$@_d0-kM+}=NcowEcmmbpD=!ssldG=A{NlW_@{5-k zJHG<#bD8HWzt_9IzV2Q>?k4F) zPYRV}J;>X`yig8@JQ#Fm`OG;yiyxH(7HeJwB&~b`y@1}r0OKrZXllRT?_<@}70Tt4 zfM8SJf5DGG{@9~b%56;8pyB|nD_tOr^p_wFeS=DTL}d)OXbpv=a{+^(6vdix)b4$k zhDTDLrc9PvH9Jy9s8S9kh#rY2_p)b?I>$Cw z0&eZh_G(3HE(XM-v}g?*DZ#P%l3bcuuhSRtee{J^nx5+C=1Z+S?A(p3=WhJ9=dPZMdmeq|lWjf`gNKibw?iw|ZK|~Cjk;E;cvBr|REK_P ze@GaasT}G_Rmvk*;y=oLTJCL`EJfQ}K*%3g?6oG(rHM$!UB6r_fZX4)AHv%{c2>~xgDVY*#N>zx^r z>82|W%~i`L9uf#qrq~KI%o@epGgqUwmK9x3u&bG{nz-4B_nCupBwh6T{0bSp$0kIOBIUR*q+vad6L)fUZeu%X>!`Io5D7`>PyhpfjySUVx1YMK z`&u9=*-7_)&h*40*8RS!YE`{8N_H7z>&=m-_GMM$c;9Qd?Re$2e$yQE$I?>P6^!=# z|98wv|2Li$d?0Bux^WNol+J!qKaxawvZ=sWW_wL0>@7#ymJWPM&WeXk(sVFY|oiWcnM1b>(VNbrMMW zy1hg5C{t(igd)zD?}2V|OlZa9U{sVG4a5ok6$-S$$}aK-X341PuN)93e_ON8>+C}3 z`vSgp$W+y6l_;F2%Dms}z!#T@F1JHL&1Lqp(d^gwDVS)!VmH}JM1OcH?TlH~xu*=+ z(M;&NXxF{C4|g??*U`;u>lEL4fAvK->&$x3I zpb>=pc;_s_n(Rwb6vrpee_+1k=F4w?cys)Y1d@+#)HBRv@8mSuGq@WFi3qPRx_y)& z?@Q|E{;TFToic&S_Tj^W*3j*V4Lyjd)MIc}f2O7nK~5?lhI8T35^@k}jD3$LwhAQC z;VRbJKf+68PEg_Kt=P|NLp%*5=KS$ME)3}>)o%IHkK!lHI6Hl7~8 zny%*|9tQnNG?kW4f5w~HOuT!cG5+5iML`h^of4L=WMGv0YJ!=~5s0hrFB>i_J^k-5W_4l$Ft0e~G93PP>0e40<7eJ-!6~ zG^=wUz2W-(6)mq7AvepGc#n&4U_~|WBp!#6Y%@rUK=B*OkkjKUiMaFDS?Q0~V=O0v zgOP^lc{zVRpHqz}r11I~xN}V9Z|Nb0oDfZA{f64#yKK(h8MLm4+wLLL&%GAC0g-z% zl_@k6j@uiqf6niq<^MtIL^+30&y-;Ec}30?z1g_OC>Z@#S^{_2foJ(eQS!8yFW916 z2-05KA!DHy;&hyxx3}bXtR%->y{miys1P5R?0+{i$~hE@s(X)TXAbEZq3To zP8$p`9Ldv@!8H8Sq$SRK1%Jlq(xy?flfmqqDG+0$ri6fzgGS6Q`rF6 z#ldbu8kMatx@vlAqBecww~1bz73RXWbC2&S4Y@&LQ1R#@?9&Z`O@?_STWeEkA;PV7 zNVO38mKYR}dM;pk$b?u(A0Q^AKJiV;4iS5kz}wql2@l)dW`|><1(cZb)SbW~^FH>RX#IfQu8)io()Uzc(pl z-0VrmKw9CfnYF|@=Z2$tIDHnk4#3lkf1-w_+?6^N%vd*^hfk&&R4QtreNnZ6eMu=5 z(UHgU2KCoyY3d--Z=e7SdIP?2V&x^>4iVvM)wpwvu9EdyPqI_rTL9*=b6YEW@ z7#Jc6H`3aHgg$(Nj7%9WS`v4bR7vI%aD0v4v0Z#B&Svjw+(EL$3VKsGU2Zs_`n3V?LlMY)SZ&6>1Ch%fsZKDJ| zX(4d7hGx{)E-wQz8=@PyHjfSQe;!R(^ja{r1WxOO&$1Nppzn=!Llu`;KbuM@a2+V4(@UkHrVhNm#gyU9k_NQ@uxp!vGKI$B(I=06Gh+Pf2&YAE8q?(&GUN9@Ywix-i@rdOYMsBbH*x!20sI zLc17wz$wG7J5b?{m4%YIe`fDZ_ggJ=p>!AZ57zbEJ}sxMT*lr$;k0B|&o26x4+7m`$SE{daihii6hf9D+pOL8jchZ9Z2 zG|Gr66FfK9lQvlcQ^F@xEj%4qcNntUa_YJpZQR!Gt@VR(Cs*;UckF7kZZ}VCT;D?9 zX{QU^kfA3xEN{ZRuj`q=o!~-m(we19`mTyKDfB*)j|YP?$^@x4ti7-imZzoCl_PjxPF|e>W9j!IzB-j>e&HsxLSl zEN@zNS(}xIaCGv=Sp!@dpG!pv6puWjl2tlm-3RThLg_682X2JVR~q~F=dDxYJFfGCqegieNgjSx&#GYBC~nd6%uFVs_Y z)2G4IjsmPKjy&1Xnjf*{=*`v;?yh%B%lzO8G{<76W5)iOQfaR&|4U zSpx|FwL`??z6=zfQF0DzL%a>ixLI8_Kw=hfP}E`^0#P$*<4B8OB97643XT%kMn4qS z`Qi=X5xgwQISyy5zTQ*|7+7SkU?6`kmUcRK3HXm@ zZxZ>#hP>gm^`ll8vcPaiwMYdS!)9Gv#s&58p?OB=aG|d*&l>|njmh5^PPe+wDzE?3 zcF2RvQb}^7OF&h1ae+eMA%`UN=h%xl7N(avctM7rXr`&d;8Shg<`Q8P*$h&(0(Y@! zM|{-Me|D@&Qko{jKY_@MNBZ|v=9@~`QL0>%o~#d%IV0Ya><~!=Q*nfb12vG2-P_m2 zMVSu96YG0S$aj?II9${*7Ijv&ZFQx}I(EuBcFTIJO47xvAhY?YF>oTt$l*mIn7TA} zcjY_2<$|~skl~i9vL%c^ow+g&4J!53WtH8le^Dis-p=Q|^IlYSnb+E=pVlQVOSjnF z4Jrsk<{Algd>~Cr)Ko|20w;sEXoMF1hJn9glVFbO0lfmk8Z7V^S=jebf%puDA&?fZbWk4Oz={6bsG)ZnaffTMBQuj5=GqfB50UcynxQ zyzM?l|A@mmlxjclrk}|dUXDGYK=^gbgk|TyYMre4axtS5v4V)-d`I9~-2@0JF5rT#ZO_Pc;2J6IYXr|&%rCh% zOD{W?uAf4K0>^3*!;+-}>)~GAn&Me^d7!T#dDMNCmGcE3f1%%07aojr z=)9GN=nCRMou^Xm!9AMcTocD{>_SsPLoPQrL2T7v!6+hR>Rv5o$n;>O^v>HM5FJ3i z^aSw|$I^jDs5n9Cu9k40r$kah3|CKrg&~dMxJ6v|qKZ^{D zZ%ScBf$HTyQpu(wXd_J-f6P^oxE82mQ7~HK5KP`!K3n_dwUYC1oOMwSi#EUNjg+e_ zVF^{@o5UR&Ct#*rL_PI#A&!YM0Xhl+e0^iu#GkCd+A?NIV$S8tRLu-`Cq&y3qa0Ei zy9M$+Ee%sR0c&rgbsU}KiJ$Rwa^eRjx%9^B*diBkpomo2STr3Ae`&W-Zg`Y$118JK zJEE5nx5Rg1W)GTw{BiM9665xwMK${wUo4Tyf6Ff641l0~&~=7Ne-D9Tj*Vg%3utpG z$8l;3~kMw=w-oLn7lCx@{}@xj8KZdVkxyl=o6)W3!N3W zrVc!ofyXdeKw9O$tg^)d-MK$NmZ6ry4!r`tLW`{6^wYg5pIMoZtuP#O8&-cS_@Ms(lu;Tr1__z+HIwO!e< zS=n(+QjpzRy>pG5ySJ@DVlAC7ilsEsbvCD%nvOk+kA6AHGJ48|nWY38@0YGbt>2R_ z(6*#}3ul%de=RR|zdk6E(ikVNCQ8xTqf?rr)7nF06o#XqN5%Hcs7rV{Vq76DfTLsd zNCydaYm)m?Ix8z@MBpLa2CHHgGq(daXHOT{lJ1Z~clo%EIJPBVTdYk)_MVRb; zmI4}aT7pQ?rnGVY5Fe1KC$>=1{E7{Uq$zrY)n!$7f9zJaR+SyA%GPFO$5v&>qOt

gf`qM=DtD7)Y1vy1sy-w_ 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 delta 58080 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'; }, - /** - * Returns an array of all objects in this group - * @return {Array} group objects - */ - getObjects: function() { - return this._objects; - }, - /** * Adds an object to a group; Then recalculates group's dimension, position. * @param {Object} object diff --git a/package.json b/package.json index e8569a25..d6fc1aea 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "fabric", "description": "Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.", - "version": "1.3.9", + "version": "1.3.10", "author": "Juriy Zaytsev ", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "repository": "git://github.com/kangax/fabric.js", diff --git a/src/mixins/collection.mixin.js b/src/mixins/collection.mixin.js index dc4df82f..f5c1cc2d 100644 --- a/src/mixins/collection.mixin.js +++ b/src/mixins/collection.mixin.js @@ -79,6 +79,20 @@ fabric.Collection = { return this; }, + /** + * Returns an array of children objects of this instance + * @param {String} [type] When specified, only objects of this type are returned + * @return {Array} + */ + getObjects: function(type) { + if (typeof type === 'undefined') { + return this._objects; + } + return this._objects.filter(function(o) { + return o.type === type; + }); + }, + /** * Returns object at specified index * @param {Number} index diff --git a/src/shapes/group.class.js b/src/shapes/group.class.js index eb570877..62ac6cdc 100644 --- a/src/shapes/group.class.js +++ b/src/shapes/group.class.js @@ -104,14 +104,6 @@ return '#'; }, - /** - * Returns an array of all objects in this group - * @return {Array} group objects - */ - getObjects: function() { - return this._objects; - }, - /** * Adds an object to a group; Then recalculates group's dimension, position. * @param {Object} object diff --git a/src/static_canvas.class.js b/src/static_canvas.class.js index e2bce79a..01eb7bb5 100644 --- a/src/static_canvas.class.js +++ b/src/static_canvas.class.js @@ -571,14 +571,6 @@ obj.fire('removed'); }, - /** - * Returns an array of objects this instance has - * @return {Array} - */ - getObjects: function () { - return this._objects; - }, - /** * Clears specified context of canvas element * @param {CanvasRenderingContext2D} ctx Context to clear diff --git a/test/unit/canvas_static.js b/test/unit/canvas_static.js index a63d00b9..72421f0d 100644 --- a/test/unit/canvas_static.js +++ b/test/unit/canvas_static.js @@ -162,6 +162,19 @@ equal(canvas.getObjects().length, 0, 'should have a 0 length when empty'); }); + test('getObjects with type', function() { + + var rect = new fabric.Rect({ width: 10, height: 20 }); + var circle = new fabric.Circle({ radius: 30 }); + + canvas.add(rect, circle); + + equal(canvas.getObjects().length, 2, 'should have length=2 initially'); + + deepEqual(canvas.getObjects('rect'), [rect], 'should return rect only'); + deepEqual(canvas.getObjects('circle'), [circle], 'should return circle only'); + }); + test('getElement', function() { ok(typeof canvas.getElement == 'function', 'should respond to `getElement` method'); equal(canvas.getElement(), lowerCanvasEl, 'should return a proper element');