From d2c152b8b2a3d525db1127ba67dcc2de311f59ac Mon Sep 17 00:00:00 2001 From: kangax Date: Fri, 30 Nov 2012 23:46:09 +0100 Subject: [PATCH] Add support for specifying additional properties to return in `toObject`, `toJSON`. Fix #272. --- all.js | 102 +++++++++++++++++++++++++++++--------------------- all.min.js | 10 ++--- all.min.js.gz | Bin 40513 -> 40568 bytes 3 files changed, 64 insertions(+), 48 deletions(-) diff --git a/all.js b/all.js index 0b84a2739da..7fc13edf2f1 100644 --- a/all.js +++ b/all.js @@ -1,7 +1,7 @@ /* build: `node build.js modules=ALL` */ /*! Fabric.js Copyright 2008-2012, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "0.9.24" }; +var fabric = fabric || { version: "0.9.25" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; @@ -2078,6 +2078,23 @@ fabric.Observable.off = fabric.Observable.stopObserving; return object; } + /** + * Populates an object with properties of another object + * @static + * @memberOf fabric.util + * @method populateWithProperties + * @param {Object} source + * @param {Object} destination + * @return {Array} properties + */ + function populateWithProperties(source, destination, properties) { + if (properties && Object.prototype.toString.call(properties) === '[object Array]') { + for (var i = 0, len = properties.length; i < len; i++) { + destination[properties[i]] = source[properties[i]]; + } + } + } + fabric.util.removeFromArray = removeFromArray; fabric.util.degreesToRadians = degreesToRadians; fabric.util.radiansToDegrees = radiansToDegrees; @@ -2089,6 +2106,7 @@ fabric.Observable.off = fabric.Observable.stopObserving; fabric.util.loadImage = loadImage; fabric.util.enlivenObjects = enlivenObjects; fabric.util.groupSVGElements = groupSVGElements; + fabric.util.populateWithProperties = populateWithProperties; })(); (function() { @@ -5791,8 +5809,8 @@ fabric.util.string = { * @method toDatalessJSON * @return {String} json string */ - toDatalessJSON: function () { - return this.toDatalessObject(); + toDatalessJSON: function (propertiesToInclude) { + return this.toDatalessObject(propertiesToInclude); }, /** @@ -5800,8 +5818,8 @@ fabric.util.string = { * @method toObject * @return {Object} */ - toObject: function () { - return this._toObjectMethod('toObject'); + toObject: function (propertiesToInclude) { + return this._toObjectMethod('toObject', propertiesToInclude); }, /** @@ -5809,15 +5827,15 @@ fabric.util.string = { * @method toDatalessObject * @return {Object} */ - toDatalessObject: function () { - return this._toObjectMethod('toDatalessObject'); + toDatalessObject: function (propertiesToInclude) { + return this._toObjectMethod('toDatalessObject', propertiesToInclude); }, /** * @private * @method _toObjectMethod */ - _toObjectMethod: function (methodName) { + _toObjectMethod: function (methodName, propertiesToInclude) { var data = { objects: this._objects.map(function (instance) { // TODO (kangax): figure out how to clean this up @@ -5826,7 +5844,7 @@ fabric.util.string = { originalValue = instance.includeDefaultValues; instance.includeDefaultValues = false; } - var object = instance[methodName](); + var object = instance[methodName](propertiesToInclude); if (!this.includeDefaultValues) { instance.includeDefaultValues = originalValue; } @@ -5844,6 +5862,7 @@ fabric.util.string = { data.overlayImageLeft = this.overlayImageLeft; data.overlayImageTop = this.overlayImageTop; } + fabric.util.populateWithProperties(this, data, propertiesToInclude); return data; }, @@ -8162,12 +8181,8 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, { * @param {Object} [options] */ setOptions: function(options) { - var i = this.stateProperties.length, prop; - while (i--) { - prop = this.stateProperties[i]; - if (prop in options) { - this.set(prop, options[prop]); - } + for (var prop in options) { + this.set(prop, options[prop]); } this._initGradient(options); }, @@ -8191,7 +8206,7 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, { * @method toObject * @return {Object} */ - toObject: function() { + toObject: function(propertiesToInclude) { var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS; @@ -8223,6 +8238,7 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, { if (!this.includeDefaultValues) { object = this._removeDefaultValues(object); } + fabric.util.populateWithProperties(this, object, propertiesToInclude); return object; }, @@ -8231,9 +8247,9 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, { * Returns (dataless) object representation of an instance * @method toDatalessObject */ - toDatalessObject: function() { + toDatalessObject: function(propertiesToInclude) { // will be overwritten by subclasses - return this.toObject(); + return this.toObject(propertiesToInclude); }, /** @@ -9407,9 +9423,9 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, { * @method toJSON * @return {String} json */ - toJSON: function() { + toJSON: function(propertiesToInclude) { // delegate, not alias - return this.toObject(); + return this.toObject(propertiesToInclude); }, /** @@ -9732,8 +9748,8 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, { * @methd toObject * @return {Object} */ - toObject: function() { - return extend(this.callSuper('toObject'), { + toObject: function(propertiesToInclude) { + return extend(this.callSuper('toObject', propertiesToInclude), { x1: this.get('x1'), y1: this.get('y1'), x2: this.get('x2'), @@ -9844,8 +9860,8 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, { * @method toObject * @return {Object} object representation of an instance */ - toObject: function() { - return extend(this.callSuper('toObject'), { + toObject: function(propertiesToInclude) { + return extend(this.callSuper('toObject', propertiesToInclude), { radius: this.get('radius') }); }, @@ -10125,8 +10141,8 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, { * @method toObject * @return {Object} object representation of an instance */ - toObject: function() { - return extend(this.callSuper('toObject'), { + toObject: function(propertiesToInclude) { + return extend(this.callSuper('toObject', propertiesToInclude), { rx: this.get('rx'), ry: this.get('ry') }); @@ -10398,8 +10414,8 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, { * @method toObject * @return {Object} object representation of an instance */ - toObject: function() { - return fabric.util.object.extend(this.callSuper('toObject'), { + toObject: function(propertiesToInclude) { + return fabric.util.object.extend(this.callSuper('toObject', propertiesToInclude), { rx: this.get('rx') || 0, ry: this.get('ry') || 0 }); @@ -10523,8 +10539,8 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, { * @method toObject * @return {Object} Object representation of an instance */ - toObject: function() { - return fabric.Polygon.prototype.toObject.call(this); + toObject: function(propertiesToInclude) { + return fabric.Polygon.prototype.toObject.call(this, propertiesToInclude); }, /** @@ -10689,8 +10705,8 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, { * @method toObject * @return {Object} object representation of an instance */ - toObject: function() { - return extend(this.callSuper('toObject'), { + toObject: function(propertiesToInclude) { + return extend(this.callSuper('toObject', propertiesToInclude), { points: this.points.concat() }); }, @@ -11372,8 +11388,8 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, { * @method toObject * @return {Object} */ - toObject: function() { - var o = extend(this.callSuper('toObject'), { + toObject: function(propertiesToInclude) { + var o = extend(this.callSuper('toObject', propertiesToInclude), { path: this.path }); if (this.sourcePath) { @@ -11684,9 +11700,9 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, { * @method toObject * @return {Object} object representation of an instance */ - toObject: function() { - return extend(parentToObject.call(this), { - paths: invoke(this.getObjects(), 'toObject'), + toObject: function(propertiesToInclude) { + return extend(parentToObject.call(this, propertiesToInclude), { + paths: invoke(this.getObjects(), 'toObject', propertiesToInclude), sourcePath: this.sourcePath }); }, @@ -12006,8 +12022,8 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, { * @method toObject * @return {Object} object representation of an instance */ - toObject: function() { - return extend(this.callSuper('toObject'), { + toObject: function(propertiesToInclude) { + return extend(this.callSuper('toObject', propertiesToInclude), { objects: invoke(this.objects, 'toObject') }); }, @@ -12425,8 +12441,8 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, { * @method toObject * @return {Object} Object representation of an instance */ - toObject: function() { - return extend(this.callSuper('toObject'), { + toObject: function(propertiesToInclude) { + return extend(this.callSuper('toObject', propertiesToInclude), { src: this._originalImage.src || this._originalImage._src, filters: this.filters.concat() }); @@ -14052,8 +14068,8 @@ fabric.Image.filters.Pixelate.fromObject = function(object) { * @method toObject * @return {Object} Object representation of text object */ - toObject: function() { - return extend(this.callSuper('toObject'), { + toObject: function(propertiesToInclude) { + return extend(this.callSuper('toObject', propertiesToInclude), { text: this.text, fontSize: this.fontSize, fontWeight: this.fontWeight, diff --git a/all.min.js b/all.min.js index 805b827fb75..d6d1a7c5b52 100644 --- a/all.min.js +++ b/all.min.js @@ -1,5 +1,5 @@ -/* build: `node build.js modules=ALL` *//*! Fabric.js Copyright 2008-2012, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"0.9.24"};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";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;_r?n:i-t;s(u(l,a,c,n));if(i>r||o()){e.onComplete&&e.onComplete();return}f(h)}()}function l(e,t,n){if(e){var r=new Image;r.onload=function(){t&&t.call(n,r),r=r.onload=null},r.src=e}else t&&t.call(n,e)}function c(e,t){function n(e){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(e))]}function r(){++s===o&&t&&t(i)}var i=[],s=0,o=e.length;e.forEach(function(e,t){if(!e.type)return;var s=n(e.type);s.async?s.fromObject(e,function(e){i[t]=e,r()}):(i[t]=s.fromObject(e),r())})}function h(e,t,n){var r=e.length>1?new fabric.PathGroup(e,t):e[0];return typeof n!="undefined"&&r.setSourcePath(n),r}fabric.util={};var n=Math.PI/180,a=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)},f=function(){return a.apply(fabric.window,arguments)};fabric.util.removeFromArray=e,fabric.util.degreesToRadians=r,fabric.util.radiansToDegrees=i,fabric.util.toFixed=s,fabric.util.getRandomInt=t,fabric.util.falseFunction=o,fabric.util.animate=u,fabric.util.requestAnimFrame=f,fabric.util.loadImage=l,fabric.util.enlivenObjects=c,fabric.util.groupSVGElements=h}(),function(){function t(t,n){var r=e.call(arguments,2),i=[];for(var s=0,o=t.length;s=r&&(r=e[n][t]);else while(n--)e[n]>=r&&(r=e[n]);return r}function r(e,t){if(!e||e.length===0)return undefined;var n=e.length-1,r=t?e[n][t]:e[n];if(t)while(n--)e[n][t]>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==1/0&&r!==-1/0&&(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?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=0,n=0;do t+=e.offsetTop||0,n+=e.offsetLeft||0,e=e.offsetParent;while(e);return{left:n,top:t}}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});var f;fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle?f=function(e){return fabric.document.defaultView.getComputedStyle(e).position}:f=function(e){var t=e.style.position;return!t&&e.currentStyle&&(t=e.currentStyle.position),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.type="text/javascript",r.setAttribute("runat","server"),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.getElementPosition=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,t,n,r){return n*(e/=r)*e+t}function t(e,t,n,r){return-n*(e/=r)*(e-2)+t}function n(e,t,n,r){return e/=r/2,e<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e,t,n,r){return n*(e/=r)*e*e+t}function i(e,t,n,r){return n*((e=e/r-1)*e*e+1)+t}function s(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e+t:n/2*((e-=2)*e*e+2)+t}function o(e,t,n,r){return n*(e/=r)*e*e*e+t}function u(e,t,n,r){return-n*((e=e/r-1)*e*e*e-1)+t}function a(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e+t:-n/2*((e-=2)*e*e*e-2)+t}function f(e,t,n,r){return n*(e/=r)*e*e*e*e+t}function l(e,t,n,r){return n*((e=e/r-1)*e*e*e*e+1)+t}function c(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e*e+t:n/2*((e-=2)*e*e*e*e+2)+t}function h(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t}function p(e,t,n,r){return n*Math.sin(e/r*(Math.PI/2))+t}function d(e,t,n,r){return-n/2*(Math.cos(Math.PI*e/r)-1)+t}function v(e,t,n,r){return e===0?t:n*Math.pow(2,10*(e/r-1))+t}function m(e,t,n,r){return e===r?t+n:n*(-Math.pow(2,-10*e/r)+1)+t}function g(e,t,n,r){return e===0?t:e===r?t+n:(e/=r/2,e<1?n/2*Math.pow(2,10*(e-1))+t:n/2*(-Math.pow(2,-10*--e)+2)+t)}function y(e,t,n,r){return-n*(Math.sqrt(1-(e/=r)*e)-1)+t}function b(e,t,n,r){return n*Math.sqrt(1-(e=e/r-1)*e)+t}function w(e,t,n,r){return e/=r/2,e<1?-n/2*(Math.sqrt(1-e*e)-1)+t:n/2*(Math.sqrt(1-(e-=2)*e)+1)+t}function E(e,t,n,r){var i=1.70158,s=0,o=n;return e===0?t:(e/=r,e===1?t+n:(s||(s=r*.3),o-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){d.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),d.has(e,function(r){r?d.get(e,function(e){var t=m(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function m(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 g(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 y(e){var t="";for(var n=0,r=e.length;n",'",""].join("")),t}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s={cx:"left",x:"left",cy:"top",y:"top",r:"radius","fill-opacity":"opacity","fill-rule":"fillRule","stroke-width":"strokeWidth",transform:"transformMatrix","text-decoration":"textDecoration","font-size":"fontSize","font-weight":"fontWeight","font-style":"fontStyle","font-family":"fontFamily"};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 t(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function n(e,t){e[2]=t[0]}function r(e,t){e[1]=t[0]}function i(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var s=[1,0,0,1,0,0],o="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",u="(?:\\s+,?\\s*|,\\s*)",a="(?:(skewX)\\s*\\(\\s*("+o+")\\s*\\))",f="(?:(skewY)\\s*\\(\\s*("+o+")\\s*\\))",l="(?:(rotate)\\s*\\(\\s*("+o+")(?:"+u+"("+o+")"+u+"("+o+"))?\\s*\\))",c="(?:(scale)\\s*\\(\\s*("+o+")(?:"+u+"("+o+"))?\\s*\\))",h="(?:(translate)\\s*\\(\\s*("+o+")(?:"+u+"("+o+"))?\\s*\\))",p="(?:(matrix)\\s*\\(\\s*("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+"\\s*\\))",d="(?:"+p+"|"+h+"|"+c+"|"+l+"|"+a+"|"+f+")",v="(?:"+d+"(?:"+u+d+")*"+")",m="^\\s*(?:"+v+"?)\\s*$",g=new RegExp(m),y=new RegExp(d);return function(o){var u=s.concat();return!o||o&&!g.test(o)?u:(o.replace(y,function(s){var o=(new RegExp(d)).exec(s).filter(function(e){return e!==""&&e!=null}),a=o[1],f=o.slice(2).map(parseFloat);switch(a){case"translate":i(u,f);break;case"rotate":e(u,f);break;case"scale":t(u,f);break;case"skewX":n(u,f);break;case"skewY":r(u,f);break;case"matrix":u=f}}),u)}}(),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,p=f.length;c0&&this.init(e,t)}var t=e.fabric||(e.fabric={});if(t.Point){t.warn("fabric.Point is already defined");return}t.Point=n,n.prototype={constructor:n,init:function(e,t){this.x=e,this.y=t},add:function(e){return new n(this.x+e.x,this.y+e.y)},addEquals:function(e){return this.x+=e.x,this.y+=e.y,this},scalarAdd:function(e){return new n(this.x+e,this.y+e)},scalarAddEquals:function(e){return this.x+=e,this.y+=e,this},subtract:function(e){return new n(this.x-e.x,this.y-e.y)},subtractEquals:function(e){return this.x-=e.x,this.y-=e.y,this},scalarSubtract:function(e){return new n(this.x-e,this.y-e)},scalarSubtractEquals:function(e){return this.x-=e,this.y-=e,this},multiply:function(e){return new n(this.x*e,this.y*e)},multiplyEquals:function(e){return this.x*=e,this.y*=e,this},divide:function(e){return new n(this.x/e,this.y/e)},divideEquals:function(e){return this.x/=e,this.y/=e,this},eq:function(e){return this.x===e.x&&this.y===e.y},lt:function(e){return this.xe.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)},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){arguments.length>0&&this.init(e)}var t=e.fabric||(e.fabric={});if(t.Intersection){t.warn("fabric.Intersection is already defined");return}t.Intersection=n,t.Intersection.prototype={init:function(e){this.status=e,this.points=[]},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("No Intersection")}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("No Intersection"),s=r.length;for(var o=0;o0&&(i.status="Intersection"),i},t.Intersection.intersectPolygonPolygon=function(e,t){var r=new n("No Intersection"),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("No Intersection");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])}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=n.sourceFromHex(e);t||(t=n.sourceFromRgb(e)),t&&this.setSource(t)},getSource:function(){return this._source},setSource:function(e){this._source=e},toRgb:function(){var e=this.getSource();return"rgb("+e[0]+","+e[1]+","+e[2]+")"},toRgba:function(){var e=this.getSource();return"rgba("+e[0]+","+e[1]+","+e[2]+","+e[3]+")"},toHex:function(){var e=this.getSource(),t=e[0].toString(16);t=t.length===1?"0"+t:t;var n=e[1].toString(16);n=n.length===1?"0"+n:n;var r=e[2].toString(16);return r=r.length===1?"0"+r:r,t.toUpperCase()+n.toUpperCase()+r.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var t=this.getSource();return t[3]=e,this.setSource(t),this},toGrayscale:function(){var e=this.getSource(),t=parseInt((e[0]*.3+e[1]*.59+e[2]*.11).toFixed(0),10),n=e[3];return this.setSource([t,t,t,n]),this},toBlackWhite:function(e){var t=this.getSource(),n=(t[0]*.3+t[1]*.59+t[2]*.11).toFixed(0),r=t[3];return e=e||127,n=Number(n)','',"',"Created with Fabric.js ",fabric.version,"",fabric.createSVGFontFacesMarkup(this.getObjects())];this.backgroundImage&&e.push(''),this.overlayImage&&e.push('');for(var t=0,n=this.getObjects(),r=n.length;t"),e.join("")},isEmpty:function(){return this._objects.length===0},remove:function(e){return n(this._objects,e),this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared")),this.renderAll(),e},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll()},sendBackwards:function(e){var t=this._objects.indexOf(e),r=t;if(t!==0){for(var i=t-1;i>=0;--i){var s=e.intersectsWithObject(this._objects[i])||e.isContainedWithinObject(this._objects[i])||this._objects[i].isContainedWithinObject(e);if(s){r=i;break}}n(this._objects,e),this._objects.splice(r,0,e)}return this.renderAll()},bringForward:function(e){var t=this.getObjects(),r=t.indexOf(e),i=r;if(r!==t.length-1){for(var s=r+1,o=this._objects.length;s"},e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;a0&&(t>this.targetFindTolerance?t-=this.targetFindTolerance:t=0,n>this.targetFindTolerance?n-=this.targetFindTolerance:n=0);var o=!0,u=r.getImageData(t,n,this.targetFindTolerance*2||1,this.targetFindTolerance*2||1);for(var a=3;a0?0:-n),t.ey-(r>0?0:-r),i,s),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var o=t.ex+v-(n>0?0:i),u=t.ey+v-(r>0?0:s);e.beginPath(),this.drawDashedLine(e,o,u,o+i,u,this.selectionDashArray),this.drawDashedLine(e,o,u+s-1,o+i,u+s-1,this.selectionDashArray),this.drawDashedLine(e,o,u,o,u+s,this.selectionDashArray),this.drawDashedLine(e,o+i-1,u,o+i-1,u+s,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+v-(n>0?0:i),t.ey+v-(r>0?0:s),i,s)},drawDashedLine:function(e,t,n,r,i,s){var o=r-t,u=i-n,a=Math.sqrt(o*o+u*u),f=Math.atan2(u,o),l=s.length,c=0,h=!0;e.save(),e.translate(t,n),e.moveTo(0,0),e.rotate(f),t=0;while(a>t)t+=s[c++%l],t>a&&(t=a),e[h?"lineTo":"moveTo"](t,0),h=!h;e.restore()},_findSelectedObjects:function(e){var t=[],n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,s=r+this._groupSelector.top,o,u=new fabric.Point(p(n,i),p(r,s)),a=new fabric.Point(d(n,i),d(r,s));for(var f=0,l=this._objects.length;f1&&(t=new fabric.Group(t),this.setActiveGroup(t),t.saveCoords(),this.fire("selection:created",{target:t})),this.renderAll()},findTarget:function(e,t){var n,r=this.getPointer(e);if(this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay))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.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"},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"?this._set(e,t(this.get(e))):this._set(e,t);return this},_set:function(e,n){var r=(e==="scaleX"||e==="scaleY")&&n1?this.strokeWidth:0,t=this.padding,n=o(this.angle);this.currentWidth=(this.width+e)*this.scaleX+t*2,this.currentHeight=(this.height+e)*this.scaleY+t*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var r=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),i=Math.atan(this.currentHeight/this.currentWidth),s=Math.cos(i+n)*r,u=Math.sin(i+n)*r,a=Math.sin(n),f=Math.cos(n),l={x:this.left-s,y:this.top-u},c={x:l.x+this.currentWidth*f,y:l.y+this.currentWidth*a},h={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},p={x:l.x-this.currentHeight*a,y:l.y+this.currentHeight*f},d={x:l.x-this.currentHeight/2*a,y:l.y+this.currentHeight/2*f},v={x:l.x+this.currentWidth/2*f,y:l.y+this.currentWidth/2*a},m={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},g={x:p.x+this.currentWidth/2*f,y:p.y+this.currentWidth/2*a},y={x:l.x+this.currentWidth/2*f,y:l.y+this.currentWidth/2*a};return this.oCoords={tl:l,tr:c,br:h,bl:p,ml:d,mt:v,mr:m,mb:g,mtr:y},this._setCornerCoords(),this},getBoundingRectWidth:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],n=t.util.array.min(e),r=t.util.array.max(e);return Math.abs(n-r)},getBoundingRectHeight:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],n=t.util.array.min(e),r=t.util.array.max(e);return Math.abs(n-r)},drawBorders:function(e){if(!this.hasBorders)return;var n=t.Object.MIN_SCALE_LIMIT,r=this.padding,i=r*2,s=this.strokeWidth>1?this.strokeWidth:0;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var o=1/(this.scaleXc&&(l=f-c),u?n+=h*u-(l*u||0):r+=h*a-(l*a||0),e[1&t?"moveTo":"lineTo"](n,r),t>=o&&(t=0)}}1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray);var t=0,n=-this.width/2,r=-this.height/2,i=this,s=this.padding,o=this.strokeDashArray.length;e.save(),e.beginPath(),u(1,0),u(0,1),u(-1,0),u(0,-1),e.stroke(),e.closePath(),e.restore()},drawCorners:function(e){if(!this.hasControls)return;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";return e.save(),e.lineWidth=1/Math.max(this.scaleX,this.scaleY),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=e.fillStyle=this.cornerColor,o=i-p-r-l,u=s-h-r-c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m+v+r+c,e.clearRect(o,u,a,f),e[y](o,u,a,f),this.lockUniScaling||(o=i+g/2-p,u=s-h-r-c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,e.clearRect(o,u,a,f),e[y](o,u,a,f)),this.hasRotatingPoint&&(o=i+g/2-p,u=this.flipY?s+m+this.rotatingPointOffset/this.scaleY-f/2+r+c:s-this.rotatingPointOffset/this.scaleY-f/2-r-c,e.clearRect(o,u,a,f),e[y](o,u,a,f)),e.restore(),this},clone:function(e){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(),e):new t.Object(this.toObject())},cloneAsImage:function(e){if(t.Image){var n=new Image;n.onload=function(){e&&e(new t.Image(n),r),n=n.onload=null};var r={angle:this.get("angle"),flipX:this.get("flipX"),flipY:this.get("flipY")};this.set("angle",0).set("flipX",!1).set("flipY",!1),this.toDataURL(function(e){n.src=e})}return this},toDataURL:function(e){function i(t){t.left=n.width/2,t.top=n.height/2,t.setActive(!1),r.add(t);var i=r.toDataURL("png");r.dispose(),r=t=null,e&&e(i)}var n=t.document.createElement("canvas");!n.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(n),n.width=this.getBoundingRectWidth(),n.height=this.getBoundingRectHeight(),t.util.wrapElement(n,"div");var r=new t.Canvas(n);r.backgroundColor="transparent",r.renderAll(),this.constructor.async?this.clone(i):i(this.clone())},hasStateChanged:function(){return this.stateProperties.some(function(e){return this[e]!==this.originalState[e]},this)},saveState:function(){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){this.originalState={},this.saveState()},intersectsWithRect:function(e,n){var r=this.oCoords,i=new t.Point(r.tl.x,r.tl.y),s=new t.Point(r.tr.x,r.tr.y),o=new t.Point(r.bl.x,r.bl.y),u=new t.Point(r.br.x,r.br.y),a=t.Intersection.intersectPolygonRectangle([i,s,u,o],e,n);return a.status==="Intersection"},intersectsWithObject:function(e){function n(e){return{tl:new t.Point(e.tl.x,e.tl.y),tr:new t.Point(e.tr.x,e.tr.y),bl:new t.Point(e.bl.x,e.bl.y),br:new t.Point(e.br.x,e.br.y)}}var r=n(this.oCoords),i=n(e.oCoords),s=t.Intersection.intersectPolygonPolygon([r.tl,r.tr,r.br,r.bl],[i.tl,i.tr,i.br,i.bl]);return s.status==="Intersection"},isContainedWithinObject:function(e){return this.isContainedWithinRect(e.oCoords.tl,e.oCoords.br)},isContainedWithinRect:function(e,n){var r=this.oCoords,i=new t.Point(r.tl.x,r.tl.y),s=new t.Point(r.tr.x,r.tr.y),o=new t.Point(r.bl.x,r.bl.y);return i.x>e.x&&s.xe.y&&o.y=t&&l.d.y>=t)continue;l.o.x===l.d.x&&l.o.x>=e?(u=l.o.x,a=t):(r=0,i=(l.d.y-l.o.y)/(l.d.x-l.o.x),s=t-r*e,o=l.o.y-i*l.o.x,u=-(s-o)/(r-i),a=s+r*u),u>=e&&(f+=1);if(f===2)break}return f},_getImageLines:function(e){return{topline:{o:e.tl,d:e.tr},rightline:{o:e.tr,d:e.br},bottomline:{o:e.br,d:e.bl},leftline:{o:e.bl,d:e.tl}}},_setCornerCoords:function(){var e=this.oCoords,t=o(this.angle),n=o(45-this.angle),r=Math.sqrt(2*Math.pow(this.cornersize,2))/2,i=r*Math.cos(n),s=r*Math.sin(n),u=Math.sin(t),a=Math.cos(t);e.tl.corner={tl:{x:e.tl.x-s,y:e.tl.y-i},tr:{x:e.tl.x+i,y:e.tl.y-s},bl:{x:e.tl.x-i,y:e.tl.y+s},br:{x:e.tl.x+s,y:e.tl.y+i}},e.tr.corner={tl:{x:e.tr.x-s,y:e.tr.y-i},tr:{x:e.tr.x+i,y:e.tr.y-s},br:{x:e.tr.x+s,y:e.tr.y+i},bl:{x:e.tr.x-i,y:e.tr.y+s}},e.bl.corner={tl:{x:e.bl.x-s,y:e.bl.y-i},bl:{x:e.bl.x-i,y:e.bl.y+s},br:{x:e.bl.x+s,y:e.bl.y+i},tr:{x:e.bl.x+i,y:e.bl.y-s}},e.br.corner={tr:{x:e.br.x+i,y:e.br.y-s},bl:{x:e.br.x-i,y:e.br.y+s},br:{x:e.br.x+s,y:e.br.y+i},tl:{x:e.br.x-s,y:e.br.y-i}},e.ml.corner={tl:{x:e.ml.x-s,y:e.ml.y-i},tr:{x:e.ml.x+i,y:e.ml.y-s},bl:{x:e.ml.x-i,y:e.ml.y+s},br:{x:e.ml.x+s,y:e.ml.y+i}},e.mt.corner={tl:{x:e.mt.x-s,y:e.mt.y-i},tr:{x:e.mt.x+i,y:e.mt.y-s},bl:{x:e.mt.x-i,y:e.mt.y+s},br:{x:e.mt.x+s,y:e.mt.y+i}},e.mr.corner={tl:{x:e.mr.x-s,y:e.mr.y-i},tr:{x:e.mr.x+i,y:e.mr.y-s},bl:{x:e.mr.x-i,y:e.mr.y+s},br:{x:e.mr.x+s,y:e.mr.y+i}},e.mb.corner={tl:{x:e.mb.x-s,y:e.mb.y-i},tr:{x:e.mb.x+i,y:e.mb.y-s},bl:{x:e.mb.x-i,y:e.mb.y+s},br:{x:e.mb.x+s,y:e.mb.y+i}},e.mtr.corner={tl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y-i-a*this.rotatingPointOffset},tr:{x:e.mtr.x+i+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},bl:{x:e.mtr.x-i+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset},br:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y+i-a*this.rotatingPointOffset}}},toGrayscale:function(){var e=this.get("fill");return e&&this.set("overlayFill",(new t.Color(e)).toGrayscale().toRgb()),this},complexity:function(){return 0},toJSON:function(){return this.toObject()},setGradientFill:function(e){this.set("fill",t.Gradient.forObject(this,e))},animate:function(){if(arguments[0]&&typeof arguments[0]=="object")for(var e in arguments[0])this._animate(e,arguments[0][e],arguments[1]);else this._animate.apply(this,arguments);return this},_animate:function(e,n,r){var i=this;r||(r={}),"from"in r||(r.from=this.get(e)),/[+\-]/.test((n+"").charAt(0))&&(n=this.get(e)+parseFloat(n)),t.util.animate({startValue:r.from,endValue:n,byValue:r.by,easing:r.easing,duration:r.duration,onChange:function(t){i.set(e,t),r.onChange&&r.onChange()},onComplete:function(){i.setCoords(),r.onComplete&&r.onComplete()}})},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.canvas.sendToBack(this),this},bringToFront:function(){return this.canvas.bringToFront(this),this},sendBackwards:function(){return this.canvas.sendBackwards(this),this},bringForward:function(){return this.canvas.bringForward(this),this}});var a=t.Object.prototype;for(var f=a.stateProperties.length;f--;){var l=a.stateProperties[f],c=l.charAt(0).toUpperCase()+l.slice(1),h="set"+c,p="get"+c;a[p]||(a[p]=function(e){return new Function('return this.get("'+e+'")')}(l)),a[h]||(a[h]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(l))}t.Object.prototype.rotate=t.Object.prototype.setAngle,n(t.Object.prototype,t.Observable),n(t.Object,{NUM_FRACTION_DIGITS:2,MIN_SCALE_LIMIT:.1})}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r={x1:1,x2:1,y1:1,y2:1};if(t.Line){t.warn("fabric.Line is already defined"); -return}t.Line=t.util.createClass(t.Object,{type:"line",initialize:function(e,t){t=t||{},e||(e=[0,0,0,0]),this.callSuper("initialize",t),this.set("x1",e[0]),this.set("y1",e[1]),this.set("x2",e[2]),this.set("y2",e[3]),this._setWidthHeight(t)},_setWidthHeight:function(e){e||(e={}),this.set("width",this.x2-this.x1||1),this.set("height",this.y2-this.y1||1),this.set("left","left"in e?e.left:this.x1+this.width/2),this.set("top","top"in e?e.top:this.y1+this.height/2)},_set:function(e,t){return this[e]=t,e in r&&this._setWidthHeight(),this},_render:function(e){e.beginPath(),this.group&&e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top),e.moveTo(this.width===1?0:-this.width/2,this.height===1?0:-this.height/2),e.lineTo(this.width===1?0:this.width/2,this.height===1?0:this.height/2),e.lineWidth=this.strokeWidth;var t=e.strokeStyle;e.strokeStyle=e.fillStyle,e.stroke(),e.strokeStyle=t},complexity:function(){return 1},toObject:function(){return n(this.callSuper("toObject"),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){return[""].join("")}}),t.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" "),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e);var t=this.get("radius")*2;this.set("width",t).set("height",t)},toObject:function(){return r(this.callSuper("toObject"),{radius:this.get("radius")})},toSVG:function(){return'"},_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.fill&&e.fill(),this.stroke&&e.stroke()},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="cx cy r fill fill-opacity opacity stroke stroke-width transform".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");return"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0),new t.Circle(r(s,n))},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.fill&&e.fill(),this.stroke&&e.stroke()},complexity:function(){return 1},toSVG:function(){var e=this.width/2,t=this.height/2,n=[-e+" "+t,"0 "+ -t,e+" "+t].join(",");return'"}}),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",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(){return r(this.callSuper("toObject"),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(){return[""].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.stroke&&e.stroke(),this.fill&&e.fill(),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".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 n(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={});if(t.Rect){console.warn("fabric.Rect is already defined");return}t.Rect=t.util.createClass(t.Object,{type:"rect",rx:0,ry:0,initialize:function(e){e=e||{},this._initStateProperties(),this.callSuper("initialize",e),this._initRxRy()},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height;e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&this.group&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y),e.moveTo(r+t,i),e.lineTo(r+s-t,i),e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this.fill&&e.fill(),this.strokeDashArray?this._renderDashedStroke(e):this.stroke&&e.stroke()},_normalizeLeftTopProperties:function(e){return e.left&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),e.top&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},complexity:function(){return 1},toObject:function(){return t.util.object.extend(this.callSuper("toObject"),{rx:this.get("rx")||0,ry:this.get("ry")||0})},toSVG:function(){return'"}}),t.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Rect.fromElement=function(e,r){if(!e)return null;var i=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);i=n(i);var s=new t.Rect(t.util.object.extend(r?t.util.object.clone(r):{},i));return s._normalizeLeftTopProperties(i),s},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){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions()},_calcDimensions:function(){return t.Polygon.prototype._calcDimensions.call(this)},toObject:function(){return t.Polygon.prototype.toObject.call(this)},toSVG:function(){var e=[];for(var t=0,r=this.points.length;t"].join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n"].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;n1&&(g=Math.sqrt(g),n*=g,i*=g);var y=d/n,b=p/n,w=-p/i,E=d/i,S=y*l+b*c,x=w*l+E*c,T=y*e+b*t,N=w*e+E*t,C=(T-S)*(T-S)+(N-x)*(N-x),k=1/C-.25;k<0&&(k=0);var L=Math.sqrt(k);a===u&&(L=-L);var A=.5*(S+T)-L*(N-x),O=.5*(x+N)+L*(T-S),M=Math.atan2(x-O,S-A),_=Math.atan2(N-O,T-A),D=_-M;D<0&&a===1?D+=2*Math.PI:D>0&&a===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B"},toObject:function(){var e=h(this.callSuper("toObject"),{path:this.path});return this.sourcePath&&(e.sourcePath=this.sourcePath),this.transformMatrix&&(e.transformMatrix=this.transformMatrix),e},toDatalessObject:function(){var e=this.toObject();return this.sourcePath&&(e.path=this.sourcePath),delete e.sourcePath,e},toSVG:function(){var e=[];for(var t=0,n=this.path.length;t',"',""].join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n,r,i;for(var s=0,o,u=this.path.length;sc)for(var h=1,p=o.length;h"];for(var n=0,r=e.length;n"),t.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},toGrayscale:function(){var e=this.paths.length;while(e--)this.paths[e].toGrayscale();return this},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e){var n=u(e.paths);return new t.PathGroup(n,e)}}(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,o=t.util.removeFromArray;if(t.Group)return;t.Group=t.util.createClass(t.Object,{type:"group",initialize:function(e,t){t=t||{},this.objects=e||[],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.hideCorners=!0},this)},toString:function(){return"#"},getObjects:function(){return this.objects},addWithUpdate:function(e){return this._restoreObjectsState(),this.objects.push(e),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),o(this.objects,e),e.setActive(!1),this._calcBounds(),this._updateObjectsCoords(),this},add:function(e){return this.objects.push(e),this},remove:function(e){return o(this.objects,e),this},size:function(){return this.getObjects().length},_set:function(e,t){if(e==="fill"||e==="opacity"){var n=this.objects.length;this[e]=t;while(n--)this.objects[n].set(e,t)}else this[e]=t},contains:function(e){return this.objects.indexOf(e)>-1},toObject:function(){return n(this.callSuper("toObject"),{objects:s(this.objects,"toObject")})},render:function(e,t){e.save(),this.transform(e);var n=Math.max(this.scaleX,this.scaleY);for(var r=this.objects.length;r>0;r--){var i=this.objects[r-1],s=i.borderScaleFactor,o=i.hasRotatingPoint;i.borderScaleFactor=n,i.hasRotatingPoint=!1,i.render(e),i.borderScaleFactor=s,i.hasRotatingPoint=o}!t&&this.active&&(this.drawBorders(e),this.hideCorners||this.drawCorners(e)),e.restore(),this.setCoords()},item:function(e){return this.getObjects()[e]},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=typeof t.complexity=="function"?t.complexity():0,e},0)},_restoreObjectsState:function(){return this.objects.forEach(this._restoreObjectState,this),this},_restoreObjectState:function(e){var t=this.get("left"),n=this.get("top"),r=this.getAngle()*(Math.PI/180),i=Math.cos(r)*e.get("top")+Math.sin(r)*e.get("left"),s=-Math.sin(r)*e.get("top")+Math.cos(r)*e.get("left");return e.setAngle(e.getAngle()+this.getAngle()),e.set("left",t+s*this.get("scaleX")),e.set("top",n+i*this.get("scaleY")),e.set("scaleX",e.get("scaleX")*this.get("scaleX")),e.set("scaleY",e.get("scaleY")*this.get("scaleY")),e.setCoords(),e.hideCorners=!1,e.setActive(!1),e.setCoords(),this},destroy:function(){return this._restoreObjectsState()},saveCoords:function(){return this._originalLeft=this.get("left"),this._originalTop=this.get("top"),this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){return this.forEachObject(function(e){e.setCoords()}),this},activateAllObjects:function(){return this.forEachObject(function(e){e.setActive()}),this},forEachObject:t.StaticCanvas.prototype.forEachObject,_setOpacityIfSame:function(){var e=this.getObjects(),t=e[0]?e[0].get("opacity"):1,n=e.every(function(e){return e.get("opacity")===t});n&&(this.opacity=t)},_calcBounds:function(){var e=[],t=[],n,s,o,u,a,f,l,c=0,h=this.objects.length;for(;ce.x&&i-ne.y},toGrayscale:function(){var e=this.objects.length;while(e--)this.objects[e].toGrayscale()},toSVG:function(){var e=[];for(var t=0,n=this.objects.length;t'+e.join("")+""}}),t.Group.fromObject=function(e,n){t.util.enlivenObjects(e.objects,function(r){delete e.objects,n&&n(new t.Group(r,e))})},t.Group.async=!0}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=fabric.util.object.extend;e.fabric||(e.fabric={});if(e.fabric.Image){fabric.warn("fabric.Image is already defined.");return}fabric.Image=fabric.util.createClass(fabric.Object,{active:!1,type:"image",initialize:function(e,t){t||(t={}),this.callSuper("initialize",t),this._initElement(e),this._originalImage=this.getElement(),this._initConfig(t),this.filters=[],t.filters&&(this.filters=t.filters,this.applyFilters())},getElement:function(){return this._element},setElement:function(e){return this._element=e,this._initConfig(),this},getOriginalSize:function(){var e=this.getElement();return{width:e.width,height:e.height}},render:function(e,t){e.save();var n=this.transformMatrix;this._resetWidthHeight(),this.group&&e.translate(-this.group.width/2+this.width/2,-this.group.height/2+this.height/2),n&&e.transform(n[0],n[1],n[2],n[3],n[4],n[5]),t||this.transform(e),this._render(e),this.active&&!t&&(this.drawBorders(e),this.hideCorners||this.drawCorners(e)),e.restore()},toObject:function(){return t(this.callSuper("toObject"),{src:this._originalImage.src||this._originalImage._src,filters:this.filters.concat()})},toSVG:function(){return''+'"+""},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e){this.constructor.fromObject(this.toObject(),e)},applyFilters:function(e){if(this.filters.length===0){this.setElement(this._originalImage),e&&e();return}var t=typeof Buffer!="undefined"&&typeof window=="undefined",n=this._originalImage,r=fabric.document.createElement("canvas"),i=t?new(require("canvas").Image):fabric.document.createElement("img"),s=this;!r.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(r),r.width=n.width,r.height=n.height,r.getContext("2d").drawImage(n,0,0,n.width,n.height),this.filters.forEach(function(e){e&&e.applyTo(r)}),i.onload=function(){s._element=i,e&&e(),i.onload=r=n=null},i.width=n.width,i.height=n.height;if(t){var o=r.toDataURL("image/png").replace(/data:image\/png;base64,/,"");i.src=new Buffer(o,"base64"),s._element=i,e&&e()}else i.src=r.toDataURL("image/png");return this},_render:function(e){e.drawImage(this.getElement(),-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e){e.filters&&e.filters.length&&(this.filters=e.filters.map(function(e){return e&&fabric.Image.filters[e.type].fromObject(e)}))},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){var n=fabric.document.createElement("img"),r=e.src;e.width&&(n.width=e.width),e.height&&(n.height=e.height),n.onload=function(){fabric.Image.prototype._initFilters.call(e,e);var r=new fabric.Image(n,e);t&&t(r),n=n.onload=null},n.src=r},fabric.Image.fromURL=function(e,t,n){var r=fabric.document.createElement("img");r.onload=function(){t&&t(new fabric.Image(r,n)),r=r.onload=null},r.src=e},fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" "),fabric.Image.fromElement=function(e,n,r){r||(r={});var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(i,r))},fabric.Image.async=!0}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.get("angle");return e>-225&&e<=-135?-180:e>-135&&e<=-45?-90:e>-45&&e<=45?0:e>45&&e<=135?90:e>135&&e<=225?180:e>225&&e<=315?270:e>315?360:0},straighten:function(){var e=this._getAngleValueForStraighten();return this.setAngle(e),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.setActive(!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.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;ao&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},fabric.Image.filters.Convolute=fabric.util.createClass({type:"Convolute",initialize:function(e){e||(e={}),this.opaque=e.opaque,this.matrix=e.matrix||[0,0,0,0,1,0,0,0,0],this.tmpCtx=fabric.document.createElement("canvas").getContext("2d")},_createImageData:function(e,t){return this.tmpCtx.createImageData(e,t)},applyTo:function(e){var t=this.matrix,n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=Math.round(Math.sqrt(t.length)),s=Math.floor(i/2),o=r.data,u=r.width,a=r.height,f=u,l=a,c=this._createImageData(f,l),h=c.data,p=this.opaque?1:0;for(var d=0;d=0&&N=0&&C'},_render:function(e){typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_renderViaNative:function(e){this.transform(e),this._setTextStyles(e);var t=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,t),this.height=this._getTextHeight(e,t),this._renderTextBackground(e,t),this.textAlign!=="left"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),this._setTextShadow(e),this._renderTextFill(e,t),this.textShadow&&e.restore(),this._renderTextStroke(e,t),this.textAlign!=="left"&&e.restore(),this._renderTextDecoration(e,t),this._setBoundaries(e,t),this._totalLineHeight=0,this.setCoords()},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_setTextShadow:function(e){if(this.textShadow){var t=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/,n=this.textShadow,r=t.exec(this.textShadow),i=n.replace(t,"");e.save(),e.shadowColor=i,e.shadowOffsetX=parseInt(r[1],10),e.shadowOffsetY=parseInt(r[2],10),e.shadowBlur=parseInt(r[3],10),this._shadows=[{blur:e.shadowBlur,color:e.shadowColor,offX:e.shadowOffsetX,offY:e.shadowOffsetY}],this._shadowOffsets=[[parseInt(e.shadowOffsetX,10),parseInt(e.shadowOffsetY,10)]]}},_renderTextFill:function(e,t){this._boundaries=[];for(var n=0,r=t.length;n-1&&i(this.fontSize),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(0)},_getFontDeclaration:function(){return[this.fontStyle,this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},_initDummyElementForCufon:function(){var e=t.document.createElement("pre"),n=t.document.createElement("div");return n.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},render:function(e,t){e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.hideCorners||this.drawCorners(e)),e.restore()},toObject:function(){return n(this.callSuper("toObject"),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.backgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},setColor:function(e){return this.set("fill",e),this},setFontsize:function(e){return this.set("fontSize",e),this._initDimensions(),this.setCoords(),this},getText:function(){return this.text},setText:function(e){return this.set("text",e),this._initDimensions(),this.setCoords(),this},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t)}}),t.Text.ATTRIBUTE_NAMES="x y fill fill-opacity opacity stroke stroke-width transform font-family font-style font-weight font-size text-decoration".split(" "),t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},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}}(typeof exports!="undefined"?exports:this),function(){function request(e,t,n){var r=URL.parse(e),i=HTTP.createClient(r.port,r.hostname),s=i.request("GET",r.pathname,{host:r.hostname});i.addListener("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+i.host+":"+i.port):fabric.log(e.message)}),s.end(),s.on("response",function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t){request(e,"binary",function(n){var r=new Image;r.src=new Buffer(n,"binary"),r._src=e,t(r)})},fabric.loadSVGFromURL=function(e,t){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),request(e,"",function(e){fabric.loadSVGFromString(e,t)})},fabric.loadSVGFromString=function(e,t){var n=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(n.documentElement,function(e,n){t(e,n)})},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e),t(r)})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this),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),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` *//*! Fabric.js Copyright 2008-2012, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"0.9.25"};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";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;_r?n:i-t;s(u(l,a,c,n));if(i>r||o()){e.onComplete&&e.onComplete();return}f(h)}()}function l(e,t,n){if(e){var r=new Image;r.onload=function(){t&&t.call(n,r),r=r.onload=null},r.src=e}else t&&t.call(n,e)}function c(e,t){function n(e){return fabric[fabric.util.string.camelize(fabric.util.string.capitalize(e))]}function r(){++s===o&&t&&t(i)}var i=[],s=0,o=e.length;e.forEach(function(e,t){if(!e.type)return;var s=n(e.type);s.async?s.fromObject(e,function(e){i[t]=e,r()}):(i[t]=s.fromObject(e),r())})}function h(e,t,n){var r=e.length>1?new fabric.PathGroup(e,t):e[0];return typeof n!="undefined"&&r.setSourcePath(n),r}function p(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;r=r&&(r=e[n][t]);else while(n--)e[n]>=r&&(r=e[n]);return r}function r(e,t){if(!e||e.length===0)return undefined;var n=e.length-1,r=t?e[n][t]:e[n];if(t)while(n--)e[n][t]>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==1/0&&r!==-1/0&&(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?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=0,n=0;do t+=e.offsetTop||0,n+=e.offsetLeft||0,e=e.offsetParent;while(e);return{left:n,top:t}}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});var f;fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle?f=function(e){return fabric.document.defaultView.getComputedStyle(e).position}:f=function(e){var t=e.style.position;return!t&&e.currentStyle&&(t=e.currentStyle.position),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.type="text/javascript",r.setAttribute("runat","server"),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.getElementPosition=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,t,n,r){return n*(e/=r)*e+t}function t(e,t,n,r){return-n*(e/=r)*(e-2)+t}function n(e,t,n,r){return e/=r/2,e<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}function r(e,t,n,r){return n*(e/=r)*e*e+t}function i(e,t,n,r){return n*((e=e/r-1)*e*e+1)+t}function s(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e+t:n/2*((e-=2)*e*e+2)+t}function o(e,t,n,r){return n*(e/=r)*e*e*e+t}function u(e,t,n,r){return-n*((e=e/r-1)*e*e*e-1)+t}function a(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e+t:-n/2*((e-=2)*e*e*e-2)+t}function f(e,t,n,r){return n*(e/=r)*e*e*e*e+t}function l(e,t,n,r){return n*((e=e/r-1)*e*e*e*e+1)+t}function c(e,t,n,r){return e/=r/2,e<1?n/2*e*e*e*e*e+t:n/2*((e-=2)*e*e*e*e+2)+t}function h(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t}function p(e,t,n,r){return n*Math.sin(e/r*(Math.PI/2))+t}function d(e,t,n,r){return-n/2*(Math.cos(Math.PI*e/r)-1)+t}function v(e,t,n,r){return e===0?t:n*Math.pow(2,10*(e/r-1))+t}function m(e,t,n,r){return e===r?t+n:n*(-Math.pow(2,-10*e/r)+1)+t}function g(e,t,n,r){return e===0?t:e===r?t+n:(e/=r/2,e<1?n/2*Math.pow(2,10*(e-1))+t:n/2*(-Math.pow(2,-10*--e)+2)+t)}function y(e,t,n,r){return-n*(Math.sqrt(1-(e/=r)*e)-1)+t}function b(e,t,n,r){return n*Math.sqrt(1-(e=e/r-1)*e)+t}function w(e,t,n,r){return e/=r/2,e<1?-n/2*(Math.sqrt(1-e*e)-1)+t:n/2*(Math.sqrt(1-(e-=2)*e)+1)+t}function E(e,t,n,r){var i=1.70158,s=0,o=n;return e===0?t:(e/=r,e===1?t+n:(s||(s=r*.3),o-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){d.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),d.has(e,function(r){r?d.get(e,function(e){var t=m(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function m(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 g(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 y(e){var t="";for(var n=0,r=e.length;n",'",""].join("")),t}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s={cx:"left",x:"left",cy:"top",y:"top",r:"radius","fill-opacity":"opacity","fill-rule":"fillRule","stroke-width":"strokeWidth",transform:"transformMatrix","text-decoration":"textDecoration","font-size":"fontSize","font-weight":"fontWeight","font-style":"fontStyle","font-family":"fontFamily"};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 t(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function n(e,t){e[2]=t[0]}function r(e,t){e[1]=t[0]}function i(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var s=[1,0,0,1,0,0],o="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",u="(?:\\s+,?\\s*|,\\s*)",a="(?:(skewX)\\s*\\(\\s*("+o+")\\s*\\))",f="(?:(skewY)\\s*\\(\\s*("+o+")\\s*\\))",l="(?:(rotate)\\s*\\(\\s*("+o+")(?:"+u+"("+o+")"+u+"("+o+"))?\\s*\\))",c="(?:(scale)\\s*\\(\\s*("+o+")(?:"+u+"("+o+"))?\\s*\\))",h="(?:(translate)\\s*\\(\\s*("+o+")(?:"+u+"("+o+"))?\\s*\\))",p="(?:(matrix)\\s*\\(\\s*("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+u+"("+o+")"+"\\s*\\))",d="(?:"+p+"|"+h+"|"+c+"|"+l+"|"+a+"|"+f+")",v="(?:"+d+"(?:"+u+d+")*"+")",m="^\\s*(?:"+v+"?)\\s*$",g=new RegExp(m),y=new RegExp(d);return function(o){var u=s.concat();return!o||o&&!g.test(o)?u:(o.replace(y,function(s){var o=(new RegExp(d)).exec(s).filter(function(e){return e!==""&&e!=null}),a=o[1],f=o.slice(2).map(parseFloat);switch(a){case"translate":i(u,f);break;case"rotate":e(u,f);break;case"scale":t(u,f);break;case"skewX":n(u,f);break;case"skewY":r(u,f);break;case"matrix":u=f}}),u)}}(),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,p=f.length;c0&&this.init(e,t)}var t=e.fabric||(e.fabric={});if(t.Point){t.warn("fabric.Point is already defined");return}t.Point=n,n.prototype={constructor:n,init:function(e,t){this.x=e,this.y=t},add:function(e){return new n(this.x+e.x,this.y+e.y)},addEquals:function(e){return this.x+=e.x,this.y+=e.y,this},scalarAdd:function(e){return new n(this.x+e,this.y+e)},scalarAddEquals:function(e){return this.x+=e,this.y+=e,this},subtract:function(e){return new n(this.x-e.x,this.y-e.y)},subtractEquals:function(e){return this.x-=e.x,this.y-=e.y,this},scalarSubtract:function(e){return new n(this.x-e,this.y-e)},scalarSubtractEquals:function(e){return this.x-=e,this.y-=e,this},multiply:function(e){return new n(this.x*e,this.y*e)},multiplyEquals:function(e){return this.x*=e,this.y*=e,this},divide:function(e){return new n(this.x/e,this.y/e)},divideEquals:function(e){return this.x/=e,this.y/=e,this},eq:function(e){return this.x===e.x&&this.y===e.y},lt:function(e){return this.xe.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)},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){arguments.length>0&&this.init(e)}var t=e.fabric||(e.fabric={});if(t.Intersection){t.warn("fabric.Intersection is already defined");return}t.Intersection=n,t.Intersection.prototype={init:function(e){this.status=e,this.points=[]},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("No Intersection")}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("No Intersection"),s=r.length;for(var o=0;o0&&(i.status="Intersection"),i},t.Intersection.intersectPolygonPolygon=function(e,t){var r=new n("No Intersection"),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("No Intersection");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])}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=n.sourceFromHex(e);t||(t=n.sourceFromRgb(e)),t&&this.setSource(t)},getSource:function(){return this._source},setSource:function(e){this._source=e},toRgb:function(){var e=this.getSource();return"rgb("+e[0]+","+e[1]+","+e[2]+")"},toRgba:function(){var e=this.getSource();return"rgba("+e[0]+","+e[1]+","+e[2]+","+e[3]+")"},toHex:function(){var e=this.getSource(),t=e[0].toString(16);t=t.length===1?"0"+t:t;var n=e[1].toString(16);n=n.length===1?"0"+n:n;var r=e[2].toString(16);return r=r.length===1?"0"+r:r,t.toUpperCase()+n.toUpperCase()+r.toUpperCase()},getAlpha:function(){return this.getSource()[3]},setAlpha:function(e){var t=this.getSource();return t[3]=e,this.setSource(t),this},toGrayscale:function(){var e=this.getSource(),t=parseInt((e[0]*.3+e[1]*.59+e[2]*.11).toFixed(0),10),n=e[3];return this.setSource([t,t,t,n]),this},toBlackWhite:function(e){var t=this.getSource(),n=(t[0]*.3+t[1]*.59+t[2]*.11).toFixed(0),r=t[3];return e=e||127,n=Number(n)','',"',"Created with Fabric.js ",fabric.version,"",fabric.createSVGFontFacesMarkup(this.getObjects())];this.backgroundImage&&e.push(''),this.overlayImage&&e.push('');for(var t=0,n=this.getObjects(),r=n.length;t"),e.join("")},isEmpty:function(){return this._objects.length===0},remove:function(e){return n(this._objects,e),this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared")),this.renderAll(),e},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll()},sendBackwards:function(e){var t=this._objects.indexOf(e),r=t;if(t!==0){for(var i=t-1;i>=0;--i){var s=e.intersectsWithObject(this._objects[i])||e.isContainedWithinObject(this._objects[i])||this._objects[i].isContainedWithinObject(e);if(s){r=i;break}}n(this._objects,e),this._objects.splice(r,0,e)}return this.renderAll()},bringForward:function(e){var t=this.getObjects(),r=t.indexOf(e),i=r;if(r!==t.length-1){for(var s=r+1,o=this._objects.length;s"},e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',toGrayscale:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;a0&&(t>this.targetFindTolerance?t-=this.targetFindTolerance:t=0,n>this.targetFindTolerance?n-=this.targetFindTolerance:n=0);var o=!0,u=r.getImageData(t,n,this.targetFindTolerance*2||1,this.targetFindTolerance*2||1);for(var a=3;a0?0:-n),t.ey-(r>0?0:-r),i,s),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var o=t.ex+v-(n>0?0:i),u=t.ey+v-(r>0?0:s);e.beginPath(),this.drawDashedLine(e,o,u,o+i,u,this.selectionDashArray),this.drawDashedLine(e,o,u+s-1,o+i,u+s-1,this.selectionDashArray),this.drawDashedLine(e,o,u,o,u+s,this.selectionDashArray),this.drawDashedLine(e,o+i-1,u,o+i-1,u+s,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+v-(n>0?0:i),t.ey+v-(r>0?0:s),i,s)},drawDashedLine:function(e,t,n,r,i,s){var o=r-t,u=i-n,a=Math.sqrt(o*o+u*u),f=Math.atan2(u,o),l=s.length,c=0,h=!0;e.save(),e.translate(t,n),e.moveTo(0,0),e.rotate(f),t=0;while(a>t)t+=s[c++%l],t>a&&(t=a),e[h?"lineTo":"moveTo"](t,0),h=!h;e.restore()},_findSelectedObjects:function(e){var t=[],n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,s=r+this._groupSelector.top,o,u=new fabric.Point(p(n,i),p(r,s)),a=new fabric.Point(d(n,i),d(r,s));for(var f=0,l=this._objects.length;f1&&(t=new fabric.Group(t),this.setActiveGroup(t),t.saveCoords(),this.fire("selection:created",{target:t})),this.renderAll()},findTarget:function(e,t){var n,r=this.getPointer(e);if(this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay))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.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"},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"?this._set(e,t(this.get(e))):this._set(e,t);return this},_set:function(e,n){var r=(e==="scaleX"||e==="scaleY")&&n1?this.strokeWidth:0,t=this.padding,n=o(this.angle);this.currentWidth=(this.width+e)*this.scaleX+t*2,this.currentHeight=(this.height+e)*this.scaleY+t*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var r=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),i=Math.atan(this.currentHeight/this.currentWidth),s=Math.cos(i+n)*r,u=Math.sin(i+n)*r,a=Math.sin(n),f=Math.cos(n),l={x:this.left-s,y:this.top-u},c={x:l.x+this.currentWidth*f,y:l.y+this.currentWidth*a},h={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},p={x:l.x-this.currentHeight*a,y:l.y+this.currentHeight*f},d={x:l.x-this.currentHeight/2*a,y:l.y+this.currentHeight/2*f},v={x:l.x+this.currentWidth/2*f,y:l.y+this.currentWidth/2*a},m={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},g={x:p.x+this.currentWidth/2*f,y:p.y+this.currentWidth/2*a},y={x:l.x+this.currentWidth/2*f,y:l.y+this.currentWidth/2*a};return this.oCoords={tl:l,tr:c,br:h,bl:p,ml:d,mt:v,mr:m,mb:g,mtr:y},this._setCornerCoords(),this},getBoundingRectWidth:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],n=t.util.array.min(e),r=t.util.array.max(e);return Math.abs(n-r)},getBoundingRectHeight:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],n=t.util.array.min(e),r=t.util.array.max(e);return Math.abs(n-r)},drawBorders:function(e){if(!this.hasBorders)return;var n=t.Object.MIN_SCALE_LIMIT,r=this.padding,i=r*2,s=this.strokeWidth>1?this.strokeWidth:0;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var o=1/(this.scaleXc&&(l=f-c),u?n+=h*u-(l*u||0):r+=h*a-(l*a||0),e[1&t?"moveTo":"lineTo"](n,r),t>=o&&(t=0)}}1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray);var t=0,n=-this.width/2,r=-this.height/2,i=this,s=this.padding,o=this.strokeDashArray.length;e.save(),e.beginPath(),u(1,0),u(0,1),u(-1,0),u(0,-1),e.stroke(),e.closePath(),e.restore()},drawCorners:function(e){if(!this.hasControls)return;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";return e.save(),e.lineWidth=1/Math.max(this.scaleX,this.scaleY),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=e.fillStyle=this.cornerColor,o=i-p-r-l,u=s-h-r-c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m+v+r+c,e.clearRect(o,u,a,f),e[y](o,u,a,f),this.lockUniScaling||(o=i+g/2-p,u=s-h-r-c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,e.clearRect(o,u,a,f),e[y](o,u,a,f)),this.hasRotatingPoint&&(o=i+g/2-p,u=this.flipY?s+m+this.rotatingPointOffset/this.scaleY-f/2+r+c:s-this.rotatingPointOffset/this.scaleY-f/2-r-c,e.clearRect(o,u,a,f),e[y](o,u,a,f)),e.restore(),this},clone:function(e){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(),e):new t.Object(this.toObject())},cloneAsImage:function(e){if(t.Image){var n=new Image;n.onload=function(){e&&e(new t.Image(n),r),n=n.onload=null};var r={angle:this.get("angle"),flipX:this.get("flipX"),flipY:this.get("flipY")};this.set("angle",0).set("flipX",!1).set("flipY",!1),this.toDataURL(function(e){n.src=e})}return this},toDataURL:function(e){function i(t){t.left=n.width/2,t.top=n.height/2,t.setActive(!1),r.add(t);var i=r.toDataURL("png");r.dispose(),r=t=null,e&&e(i)}var n=t.document.createElement("canvas");!n.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(n),n.width=this.getBoundingRectWidth(),n.height=this.getBoundingRectHeight(),t.util.wrapElement(n,"div");var r=new t.Canvas(n);r.backgroundColor="transparent",r.renderAll(),this.constructor.async?this.clone(i):i(this.clone())},hasStateChanged:function(){return this.stateProperties.some(function(e){return this[e]!==this.originalState[e]},this)},saveState:function(){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){this.originalState={},this.saveState()},intersectsWithRect:function(e,n){var r=this.oCoords,i=new t.Point(r.tl.x,r.tl.y),s=new t.Point(r.tr.x,r.tr.y),o=new t.Point(r.bl.x,r.bl.y),u=new t.Point(r.br.x,r.br.y),a=t.Intersection.intersectPolygonRectangle([i,s,u,o],e,n);return a.status==="Intersection"},intersectsWithObject:function(e){function n(e){return{tl:new t.Point(e.tl.x,e.tl.y),tr:new t.Point(e.tr.x,e.tr.y),bl:new t.Point(e.bl.x,e.bl.y),br:new t.Point(e.br.x,e.br.y)}}var r=n(this.oCoords),i=n(e.oCoords),s=t.Intersection.intersectPolygonPolygon([r.tl,r.tr,r.br,r.bl],[i.tl,i.tr,i.br,i.bl]);return s.status==="Intersection"},isContainedWithinObject:function(e){return this.isContainedWithinRect(e.oCoords.tl,e.oCoords.br)},isContainedWithinRect:function(e,n){var r=this.oCoords,i=new t.Point(r.tl.x,r.tl.y),s=new t.Point(r.tr.x,r.tr.y),o=new t.Point(r.bl.x,r.bl.y);return i.x>e.x&&s.xe.y&&o.y=t&&l.d.y>=t)continue;l.o.x===l.d.x&&l.o.x>=e?(u=l.o.x,a=t):(r=0,i=(l.d.y-l.o.y)/(l.d.x-l.o.x),s=t-r*e,o=l.o.y-i*l.o.x,u=-(s-o)/(r-i),a=s+r*u),u>=e&&(f+=1);if(f===2)break}return f},_getImageLines:function(e){return{topline:{o:e.tl,d:e.tr},rightline:{o:e.tr,d:e.br},bottomline:{o:e.br,d:e.bl},leftline:{o:e.bl,d:e.tl}}},_setCornerCoords:function(){var e=this.oCoords,t=o(this.angle),n=o(45-this.angle),r=Math.sqrt(2*Math.pow(this.cornersize,2))/2,i=r*Math.cos(n),s=r*Math.sin(n),u=Math.sin(t),a=Math.cos(t);e.tl.corner={tl:{x:e.tl.x-s,y:e.tl.y-i},tr:{x:e.tl.x+i,y:e.tl.y-s},bl:{x:e.tl.x-i,y:e.tl.y+s},br:{x:e.tl.x+s,y:e.tl.y+i}},e.tr.corner={tl:{x:e.tr.x-s,y:e.tr.y-i},tr:{x:e.tr.x+i,y:e.tr.y-s},br:{x:e.tr.x+s,y:e.tr.y+i},bl:{x:e.tr.x-i,y:e.tr.y+s}},e.bl.corner={tl:{x:e.bl.x-s,y:e.bl.y-i},bl:{x:e.bl.x-i,y:e.bl.y+s},br:{x:e.bl.x+s,y:e.bl.y+i},tr:{x:e.bl.x+i,y:e.bl.y-s}},e.br.corner={tr:{x:e.br.x+i,y:e.br.y-s},bl:{x:e.br.x-i,y:e.br.y+s},br:{x:e.br.x+s,y:e.br.y+i},tl:{x:e.br.x-s,y:e.br.y-i}},e.ml.corner={tl:{x:e.ml.x-s,y:e.ml.y-i},tr:{x:e.ml.x+i,y:e.ml.y-s},bl:{x:e.ml.x-i,y:e.ml.y+s},br:{x:e.ml.x+s,y:e.ml.y+i}},e.mt.corner={tl:{x:e.mt.x-s,y:e.mt.y-i},tr:{x:e.mt.x+i,y:e.mt.y-s},bl:{x:e.mt.x-i,y:e.mt.y+s},br:{x:e.mt.x+s,y:e.mt.y+i}},e.mr.corner={tl:{x:e.mr.x-s,y:e.mr.y-i},tr:{x:e.mr.x+i,y:e.mr.y-s},bl:{x:e.mr.x-i,y:e.mr.y+s},br:{x:e.mr.x+s,y:e.mr.y+i}},e.mb.corner={tl:{x:e.mb.x-s,y:e.mb.y-i},tr:{x:e.mb.x+i,y:e.mb.y-s},bl:{x:e.mb.x-i,y:e.mb.y+s},br:{x:e.mb.x+s,y:e.mb.y+i}},e.mtr.corner={tl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y-i-a*this.rotatingPointOffset},tr:{x:e.mtr.x+i+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},bl:{x:e.mtr.x-i+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset},br:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y+i-a*this.rotatingPointOffset}}},toGrayscale:function(){var e=this.get("fill");return e&&this.set("overlayFill",(new t.Color(e)).toGrayscale().toRgb()),this},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradientFill:function(e){this.set("fill",t.Gradient.forObject(this,e))},animate:function(){if(arguments[0]&&typeof arguments[0]=="object")for(var e in arguments[0])this._animate(e,arguments[0][e],arguments[1]);else this._animate.apply(this,arguments);return this},_animate:function(e,n,r){var i=this;r||(r={}),"from"in r||(r.from=this.get(e)),/[+\-]/.test((n+"").charAt(0))&&(n=this.get(e)+parseFloat(n)),t.util.animate({startValue:r.from,endValue:n,byValue:r.by,easing:r.easing,duration:r.duration,onChange:function(t){i.set(e,t),r.onChange&&r.onChange()},onComplete:function(){i.setCoords(),r.onComplete&&r.onComplete()}})},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.canvas.sendToBack(this),this},bringToFront:function(){return this.canvas.bringToFront(this),this},sendBackwards:function(){return this.canvas.sendBackwards(this),this},bringForward:function(){return this.canvas.bringForward(this),this}});var a=t.Object.prototype;for(var f=a.stateProperties.length;f--;){var l=a.stateProperties[f],c=l.charAt(0).toUpperCase()+l.slice(1),h="set"+c,p="get"+c;a[p]||(a[p]=function(e){return new Function('return this.get("'+e+'")')}(l)),a[h]||(a[h]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(l))}t.Object.prototype.rotate=t.Object.prototype.setAngle,n(t.Object.prototype,t.Observable),n(t.Object,{NUM_FRACTION_DIGITS:2,MIN_SCALE_LIMIT:.1 +})}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r={x1:1,x2:1,y1:1,y2:1};if(t.Line){t.warn("fabric.Line is already defined");return}t.Line=t.util.createClass(t.Object,{type:"line",initialize:function(e,t){t=t||{},e||(e=[0,0,0,0]),this.callSuper("initialize",t),this.set("x1",e[0]),this.set("y1",e[1]),this.set("x2",e[2]),this.set("y2",e[3]),this._setWidthHeight(t)},_setWidthHeight:function(e){e||(e={}),this.set("width",this.x2-this.x1||1),this.set("height",this.y2-this.y1||1),this.set("left","left"in e?e.left:this.x1+this.width/2),this.set("top","top"in e?e.top:this.y1+this.height/2)},_set:function(e,t){return this[e]=t,e in r&&this._setWidthHeight(),this},_render:function(e){e.beginPath(),this.group&&e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top),e.moveTo(this.width===1?0:-this.width/2,this.height===1?0:-this.height/2),e.lineTo(this.width===1?0:this.width/2,this.height===1?0:this.height/2),e.lineWidth=this.strokeWidth;var t=e.strokeStyle;e.strokeStyle=e.fillStyle,e.stroke(),e.strokeStyle=t},complexity:function(){return 1},toObject:function(e){return n(this.callSuper("toObject",e),{x1:this.get("x1"),y1:this.get("y1"),x2:this.get("x2"),y2:this.get("y2")})},toSVG:function(){return[""].join("")}}),t.Line.ATTRIBUTE_NAMES="x1 y1 x2 y2 stroke stroke-width transform".split(" "),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e);var t=this.get("radius")*2;this.set("width",t).set("height",t)},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(){return'"},_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.fill&&e.fill(),this.stroke&&e.stroke()},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="cx cy r fill fill-opacity opacity stroke stroke-width transform".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");return"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0),new t.Circle(r(s,n))},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.fill&&e.fill(),this.stroke&&e.stroke()},complexity:function(){return 1},toSVG:function(){var e=this.width/2,t=this.height/2,n=[-e+" "+t,"0 "+ -t,e+" "+t].join(",");return'"}}),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",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(){return[""].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.stroke&&e.stroke(),this.fill&&e.fill(),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES="cx cy rx ry fill fill-opacity opacity stroke stroke-width transform".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 n(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={});if(t.Rect){console.warn("fabric.Rect is already defined");return}t.Rect=t.util.createClass(t.Object,{type:"rect",rx:0,ry:0,initialize:function(e){e=e||{},this._initStateProperties(),this.callSuper("initialize",e),this._initRxRy()},_initStateProperties:function(){this.stateProperties=this.stateProperties.concat(["rx","ry"])},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height;e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&this.group&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y),e.moveTo(r+t,i),e.lineTo(r+s-t,i),e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),e.quadraticCurveTo(r,i,r+t,i,r+t,i),e.closePath(),this.fill&&e.fill(),this.strokeDashArray?this._renderDashedStroke(e):this.stroke&&e.stroke()},_normalizeLeftTopProperties:function(e){return e.left&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),e.top&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},complexity:function(){return 1},toObject:function(e){return t.util.object.extend(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0})},toSVG:function(){return'"}}),t.Rect.ATTRIBUTE_NAMES="x y width height rx ry fill fill-opacity opacity stroke stroke-width transform".split(" "),t.Rect.fromElement=function(e,r){if(!e)return null;var i=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);i=n(i);var s=new t.Rect(t.util.object.extend(r?t.util.object.clone(r):{},i));return s._normalizeLeftTopProperties(i),s},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){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions()},_calcDimensions:function(){return t.Polygon.prototype._calcDimensions.call(this)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(){var e=[];for(var t=0,r=this.points.length;t"].join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n"].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;n1&&(g=Math.sqrt(g),n*=g,i*=g);var y=d/n,b=p/n,w=-p/i,E=d/i,S=y*l+b*c,x=w*l+E*c,T=y*e+b*t,N=w*e+E*t,C=(T-S)*(T-S)+(N-x)*(N-x),k=1/C-.25;k<0&&(k=0);var L=Math.sqrt(k);a===u&&(L=-L);var A=.5*(S+T)-L*(N-x),O=.5*(x+N)+L*(T-S),M=Math.atan2(x-O,S-A),_=Math.atan2(N-O,T-A),D=_-M;D<0&&a===1?D+=2*Math.PI:D>0&&a===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B"},toObject:function(e){var t=h(this.callSuper("toObject",e),{path:this.path});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(){var e=this.toObject();return this.sourcePath&&(e.path=this.sourcePath),delete e.sourcePath,e},toSVG:function(){var e=[];for(var t=0,n=this.path.length;t',"',""].join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n,r,i;for(var s=0,o,u=this.path.length;sc)for(var h=1,p=o.length;h"];for(var n=0,r=e.length;n"),t.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},toGrayscale:function(){var e=this.paths.length;while(e--)this.paths[e].toGrayscale();return this},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e){var n=u(e.paths);return new t.PathGroup(n,e)}}(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,o=t.util.removeFromArray;if(t.Group)return;t.Group=t.util.createClass(t.Object,{type:"group",initialize:function(e,t){t=t||{},this.objects=e||[],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.hideCorners=!0},this)},toString:function(){return"#"},getObjects:function(){return this.objects},addWithUpdate:function(e){return this._restoreObjectsState(),this.objects.push(e),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._restoreObjectsState(),o(this.objects,e),e.setActive(!1),this._calcBounds(),this._updateObjectsCoords(),this},add:function(e){return this.objects.push(e),this},remove:function(e){return o(this.objects,e),this},size:function(){return this.getObjects().length},_set:function(e,t){if(e==="fill"||e==="opacity"){var n=this.objects.length;this[e]=t;while(n--)this.objects[n].set(e,t)}else this[e]=t},contains:function(e){return this.objects.indexOf(e)>-1},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this.objects,"toObject")})},render:function(e,t){e.save(),this.transform(e);var n=Math.max(this.scaleX,this.scaleY);for(var r=this.objects.length;r>0;r--){var i=this.objects[r-1],s=i.borderScaleFactor,o=i.hasRotatingPoint;i.borderScaleFactor=n,i.hasRotatingPoint=!1,i.render(e),i.borderScaleFactor=s,i.hasRotatingPoint=o}!t&&this.active&&(this.drawBorders(e),this.hideCorners||this.drawCorners(e)),e.restore(),this.setCoords()},item:function(e){return this.getObjects()[e]},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=typeof t.complexity=="function"?t.complexity():0,e},0)},_restoreObjectsState:function(){return this.objects.forEach(this._restoreObjectState,this),this},_restoreObjectState:function(e){var t=this.get("left"),n=this.get("top"),r=this.getAngle()*(Math.PI/180),i=Math.cos(r)*e.get("top")+Math.sin(r)*e.get("left"),s=-Math.sin(r)*e.get("top")+Math.cos(r)*e.get("left");return e.setAngle(e.getAngle()+this.getAngle()),e.set("left",t+s*this.get("scaleX")),e.set("top",n+i*this.get("scaleY")),e.set("scaleX",e.get("scaleX")*this.get("scaleX")),e.set("scaleY",e.get("scaleY")*this.get("scaleY")),e.setCoords(),e.hideCorners=!1,e.setActive(!1),e.setCoords(),this},destroy:function(){return this._restoreObjectsState()},saveCoords:function(){return this._originalLeft=this.get("left"),this._originalTop=this.get("top"),this},hasMoved:function(){return this._originalLeft!==this.get("left")||this._originalTop!==this.get("top")},setObjectsCoords:function(){return this.forEachObject(function(e){e.setCoords()}),this},activateAllObjects:function(){return this.forEachObject(function(e){e.setActive()}),this},forEachObject:t.StaticCanvas.prototype.forEachObject,_setOpacityIfSame:function(){var e=this.getObjects(),t=e[0]?e[0].get("opacity"):1,n=e.every(function(e){return e.get("opacity")===t});n&&(this.opacity=t)},_calcBounds:function(){var e=[],t=[],n,s,o,u,a,f,l,c=0,h=this.objects.length;for(;ce.x&&i-ne.y},toGrayscale:function(){var e=this.objects.length;while(e--)this.objects[e].toGrayscale()},toSVG:function(){var e=[];for(var t=0,n=this.objects.length;t'+e.join("")+""}}),t.Group.fromObject=function(e,n){t.util.enlivenObjects(e.objects,function(r){delete e.objects,n&&n(new t.Group(r,e))})},t.Group.async=!0}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=fabric.util.object.extend;e.fabric||(e.fabric={});if(e.fabric.Image){fabric.warn("fabric.Image is already defined.");return}fabric.Image=fabric.util.createClass(fabric.Object,{active:!1,type:"image",initialize:function(e,t){t||(t={}),this.callSuper("initialize",t),this._initElement(e),this._originalImage=this.getElement(),this._initConfig(t),this.filters=[],t.filters&&(this.filters=t.filters,this.applyFilters())},getElement:function(){return this._element},setElement:function(e){return this._element=e,this._initConfig(),this},getOriginalSize:function(){var e=this.getElement();return{width:e.width,height:e.height}},render:function(e,t){e.save();var n=this.transformMatrix;this._resetWidthHeight(),this.group&&e.translate(-this.group.width/2+this.width/2,-this.group.height/2+this.height/2),n&&e.transform(n[0],n[1],n[2],n[3],n[4],n[5]),t||this.transform(e),this._render(e),this.active&&!t&&(this.drawBorders(e),this.hideCorners||this.drawCorners(e)),e.restore()},toObject:function(e){return t(this.callSuper("toObject",e),{src:this._originalImage.src||this._originalImage._src,filters:this.filters.concat()})},toSVG:function(){return''+'"+""},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e){this.constructor.fromObject(this.toObject(),e)},applyFilters:function(e){if(this.filters.length===0){this.setElement(this._originalImage),e&&e();return}var t=typeof Buffer!="undefined"&&typeof window=="undefined",n=this._originalImage,r=fabric.document.createElement("canvas"),i=t?new(require("canvas").Image):fabric.document.createElement("img"),s=this;!r.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(r),r.width=n.width,r.height=n.height,r.getContext("2d").drawImage(n,0,0,n.width,n.height),this.filters.forEach(function(e){e&&e.applyTo(r)}),i.onload=function(){s._element=i,e&&e(),i.onload=r=n=null},i.width=n.width,i.height=n.height;if(t){var o=r.toDataURL("image/png").replace(/data:image\/png;base64,/,"");i.src=new Buffer(o,"base64"),s._element=i,e&&e()}else i.src=r.toDataURL("image/png");return this},_render:function(e){e.drawImage(this.getElement(),-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e)},_initFilters:function(e){e.filters&&e.filters.length&&(this.filters=e.filters.map(function(e){return e&&fabric.Image.filters[e.type].fromObject(e)}))},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){var n=fabric.document.createElement("img"),r=e.src;e.width&&(n.width=e.width),e.height&&(n.height=e.height),n.onload=function(){fabric.Image.prototype._initFilters.call(e,e);var r=new fabric.Image(n,e);t&&t(r),n=n.onload=null},n.src=r},fabric.Image.fromURL=function(e,t,n){var r=fabric.document.createElement("img");r.onload=function(){t&&t(new fabric.Image(r,n)),r=r.onload=null},r.src=e},fabric.Image.ATTRIBUTE_NAMES="x y width height fill fill-opacity opacity stroke stroke-width transform xlink:href".split(" "),fabric.Image.fromElement=function(e,n,r){r||(r={});var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(i,r))},fabric.Image.async=!0}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.get("angle");return e>-225&&e<=-135?-180:e>-135&&e<=-45?-90:e>-45&&e<=45?0:e>45&&e<=135?90:e>135&&e<=225?180:e>225&&e<=315?270:e>315?360:0},straighten:function(){var e=this._getAngleValueForStraighten();return this.setAngle(e),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.setActive(!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.Grayscale=fabric.util.createClass({type:"Grayscale",applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=n.width,s=n.height,o,u,a,f;for(a=0;ao&&f>o&&l>o&&u(a-f)0&&(r[s]=a,r[s+1]=f,r[s+2]=l);t.putImageData(n,0,0)},toJSON:function(){return{type:this.type,color:this.color}}}),fabric.Image.filters.Tint.fromObject=function(e){return new fabric.Image.filters.Tint(e)},fabric.Image.filters.Convolute=fabric.util.createClass({type:"Convolute",initialize:function(e){e||(e={}),this.opaque=e.opaque,this.matrix=e.matrix||[0,0,0,0,1,0,0,0,0],this.tmpCtx=fabric.document.createElement("canvas").getContext("2d")},_createImageData:function(e,t){return this.tmpCtx.createImageData(e,t)},applyTo:function(e){var t=this.matrix,n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=Math.round(Math.sqrt(t.length)),s=Math.floor(i/2),o=r.data,u=r.width,a=r.height,f=u,l=a,c=this._createImageData(f,l),h=c.data,p=this.opaque?1:0;for(var d=0;d=0&&N=0&&C'},_render:function(e){typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,this._shadowOffsets=t.shadowOffsets,this._shadows=t.shadows||[],n=null,this.setCoords()},_renderViaNative:function(e){this.transform(e),this._setTextStyles(e);var t=this.text.split(/\r?\n/);this.width=this._getTextWidth(e,t),this.height=this._getTextHeight(e,t),this._renderTextBackground(e,t),this.textAlign!=="left"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0)),this._setTextShadow(e),this._renderTextFill(e,t),this.textShadow&&e.restore(),this._renderTextStroke(e,t),this.textAlign!=="left"&&e.restore(),this._renderTextDecoration(e,t),this._setBoundaries(e,t),this._totalLineHeight=0,this.setCoords()},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_setTextShadow:function(e){if(this.textShadow){var t=/\s+(-?\d+)(?:px)?\s+(-?\d+)(?:px)?\s+(\d+)(?:px)?\s*/,n=this.textShadow,r=t.exec(this.textShadow),i=n.replace(t,"");e.save(),e.shadowColor=i,e.shadowOffsetX=parseInt(r[1],10),e.shadowOffsetY=parseInt(r[2],10),e.shadowBlur=parseInt(r[3],10),this._shadows=[{blur:e.shadowBlur,color:e.shadowColor,offX:e.shadowOffsetX,offY:e.shadowOffsetY}],this._shadowOffsets=[[parseInt(e.shadowOffsetX,10),parseInt(e.shadowOffsetY,10)]]}},_renderTextFill:function(e,t){this._boundaries=[];for(var n=0,r=t.length;n-1&&i(this.fontSize),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(0)},_getFontDeclaration:function(){return[this.fontStyle,this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},_initDummyElementForCufon:function(){var e=t.document.createElement("pre"),n=t.document.createElement("div");return n.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},render:function(e,t){e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.hideCorners||this.drawCorners(e)),e.restore()},toObject:function(e){return n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textShadow:this.textShadow,textAlign:this.textAlign,path:this.path,strokeStyle:this.strokeStyle,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,useNative:this.useNative})},toSVG:function(){var e=this.text.split(/\r?\n/),t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight,s=this._getSVGTextAndBg(t,n,e),o=this._getSVGShadows(t,e);return r+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,['',s.textBgRects.join(""),"',o.join(""),s.textSpans.join(""),"",""].join("")},_getSVGShadows:function(e,n){var r=[],s,o,u,a,f=1;if(!this._shadows||!this._boundaries)return r;for(s=0,u=this._shadows.length;s",t.util.string.escapeXml(n[o]),""),f=1}else f++;return r},_getSVGTextAndBg:function(e,n,r){var s=[],o=[],u,a,f,l=1;for(u=0,f=r.length;u",t.util.string.escapeXml(r[u]),""),l=1):l++;if(!this.backgroundColor||!this._boundaries)continue;o.push("')}return{textSpans:s,textBgRects:o}},_getFillAttributes:function(e){var n=e?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},setColor:function(e){return this.set("fill",e),this},setFontsize:function(e){return this.set("fontSize",e),this._initDimensions(),this.setCoords(),this},getText:function(){return this.text},setText:function(e){return this.set("text",e),this._initDimensions(),this.setCoords(),this},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t)}}),t.Text.ATTRIBUTE_NAMES="x y fill fill-opacity opacity stroke stroke-width transform font-family font-style font-weight font-size text-decoration".split(" "),t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},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}}(typeof exports!="undefined"?exports:this),function(){function request(e,t,n){var r=URL.parse(e),i=HTTP.createClient(r.port,r.hostname),s=i.request("GET",r.pathname,{host:r.hostname});i.addListener("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+i.host+":"+i.port):fabric.log(e.message)}),s.end(),s.on("response",function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t){request(e,"binary",function(n){var r=new Image;r.src=new Buffer(n,"binary"),r._src=e,t(r)})},fabric.loadSVGFromURL=function(e,t){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),request(e,"",function(e){fabric.loadSVGFromString(e,t)})},fabric.loadSVGFromString=function(e,t){var n=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(n.documentElement,function(e,n){t(e,n)})},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e),t(r)})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this),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),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file diff --git a/all.min.js.gz b/all.min.js.gz index d3abf3ddd40dd58caa632028e8692b08548bbd46..11903e3bfca27ad8f6fdd813134fb800409fd391 100644 GIT binary patch delta 39953 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 j=E8i^2&*V3}NPp`Y{Z788;wD%vqPqk3N^n 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