From 0fc31d09c5f10e34168552eec5f2798de4258742 Mon Sep 17 00:00:00 2001 From: kangax Date: Sat, 4 Jan 2014 15:02:35 -0500 Subject: [PATCH] Build distribution --- dist/fabric.js | 2 +- dist/fabric.min.js | 4 ++-- dist/fabric.min.js.gz | Bin 53184 -> 53150 bytes dist/fabric.require.js | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dist/fabric.js b/dist/fabric.js index 36d2f849..b88a31c8 100644 --- a/dist/fabric.js +++ b/dist/fabric.js @@ -19833,7 +19833,7 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Imag } else if (this.selectionEnd - this.selectionStart > 1) { // TODO: replace styles properly - console.log('replacing MORE than 1 char'); + // console.log('replacing MORE than 1 char'); } this.selectionStart += _chars.length; diff --git a/dist/fabric.min.js b/dist/fabric.min.js index ce2a3f0a..4c6f66df 100644 --- a/dist/fabric.min.js +++ b/dist/fabric.min.js @@ -3,5 +3,5 @@ e,t){this.x=e,this.y=t}var t=e.fabric||(e.fabric={});if(t.Point){t.warn("fabric. (),this.canvas.renderOnAddRemove=e,this.canvas.renderAll()},_getOptimizedRects:function(e){var t={},n;for(var r=0,i=e.length;rn.padding?e.x<0?e.x+=n.padding:e.x-=n.padding:e.x=0,i(e.y)>n.padding?e.y<0?e.y+=n.padding:e.y-=n.padding:e.y=0},_rotateObject:function(e,t){var i=this._currentTransform,s=this._offset;if(i.target.get("lockRotation"))return;var o=r(i.ey-i.top-s.top,i.ex-i.left-s.left),u=r(t-i.top-s.top,e-i.left-s.left),a=n(u-o+i.theta);a<0&&(a=360+a),i.target.angle=a},_setCursor:function(e){this.upperCanvasEl.style.cursor=e},_resetObjectTransform:function(e){e.scaleX=1,e.scaleY=1,e.setAngle(0)},_drawSelection:function(){var e=this.contextTop,t=this._groupSelector,n=t.left,r=t.top,o=i(n),u=i(r);e.fillStyle=this.selectionColor,e.fillRect(t.ex-(n>0?0:-n),t.ey-(r>0?0:-r),o,u),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var a=t.ex+s-(n>0?0:o),f=t.ey+s-(r>0?0:u);e.beginPath(),fabric.util.drawDashedLine(e,a,f,a+o,f,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f+u-1,a+o,f+u-1,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f,a,f+u,this.selectionDashArray),fabric.util.drawDashedLine(e,a+o-1,f,a+o-1,f+u,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+s-(n>0?0:o),t.ey+s-(r>0?0:u),o,u)},_isLastRenderedObject:function(e){return this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(e,this._offset)},findTarget:function(e,t){if(this.skipTargetFind)return;if(this._isLastRenderedObject(e))return this.lastRenderedObjectWithControlsAboveOverlay;var n=this.getActiveGroup();if(n&&!t&&this.containsPoint(e,n))return n;var r=this._searchPossibleTargets(e);return this._fireOverOutEvents(r),r},_fireOverOutEvents:function(e){e?this._hoveredTarget!==e&&(this.fire("mouse:over",{target:e}),e.fire("mouseover"),this._hoveredTarget&&(this.fire("mouse:out",{target:this._hoveredTarget}),this._hoveredTarget.fire("mouseout")),this._hoveredTarget=e):this._hoveredTarget&&(this.fire("mouse:out",{target:this._hoveredTarget}),this._hoveredTarget.fire("mouseout"),this._hoveredTarget=null)},_searchPossibleTargets:function(e){var t=[],n,r=this.getPointer(e);for(var i=this._objects.length;i--;)if(this._objects[i]&&this._objects[i].visible&&this._objects[i].evented&&this.containsPoint(e,this._objects[i])){if(!this.perPixelTargetFind&&!this._objects[i].perPixelTargetFind){n=this._objects[i],this.relatedTarget=n;break}t[t.length]=this._objects[i]}for(var s=0,o=t.length;s1&&(t=new fabric.Group(t.reverse(),{originX:"center",originY:"center"}),this.setActiveGroup(t,e),t.saveCoords(),this.fire("selection:created",{target:t}),this.renderAll())},_collectObjects:function(){var n=[],r,i=this._groupSelector.ex,s=this._groupSelector.ey,o=i+this._groupSelector.left,u=s+this._groupSelector.top,a=new fabric.Point(e(i,o),e(s,u)),f=new fabric.Point(t(i,o),t(s,u)),l=i===o&&s===u;for(var c=this._objects.length;c--;){r=this._objects[c];if(!r||!r.selectable||!r.visible)continue;if(r.intersectsWithRect(a,f)||r.isContainedWithinRect(a,f)||r.containsPoint(a)||r.containsPoint(f)){r.set("active",!0),n.push(r);if(l)break}}return n},_maybeGroupObjects:function(e){this.selection&&this._groupSelector&&this._groupSelectedObjects(e);var t=this.getActiveGroup();t&&(t.setObjectsCoords().setCoords(),t.isMoving=!1,this._setCursor(this.defaultCursor)),this._groupSelector=null,this._currentTransform=null}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{toDataURL:function(e){e||(e={});var t=e.format||"png",n=e.quality||1,r=e.multiplier||1,i={left:e.left,top:e.top,width:e.width,height:e.height};return r!==1?this.__toDataURLWithMultiplier(t,n,i,r):this.__toDataURL(t,n,i)},__toDataURL:function(e,t,n){this.renderAll(!0);var r=this.upperCanvasEl||this.lowerCanvasEl,i=this.__getCroppedCanvas(r,n);e==="jpg"&&(e="jpeg");var s=fabric.StaticCanvas.supports("toDataURLWithQuality")?(i||r).toDataURL("image/"+e,t):(i||r).toDataURL("image/"+e);return this.contextTop&&this.clearContext(this.contextTop),this.renderAll(),i&&(i=null),s},__getCroppedCanvas:function(e,t){var n,r,i="left"in t||"top"in t||"width"in t||"height"in t;return i&&(n=fabric.util.createCanvasElement(),r=n.getContext("2d"),n.width=t.width||this.width,n.height=t.height||this.height,r.drawImage(e,-t.left||0,-t.top||0)),n},__toDataURLWithMultiplier:function(e,t,n,r){var i=this.getWidth(),s=this.getHeight(),o=i*r,u=s*r,a=this.getActiveObject(),f=this.getActiveGroup(),l=this.contextTop||this.contextContainer;this.setWidth(o).setHeight(u),l.scale(r,r),n.left&&(n.left*=r),n.top&&(n.top*=r),n.width&&(n.width*=r),n.height&&(n.height*=r),f?this._tempRemoveBordersControlsFromGroup(f):a&&this.deactivateAll&&this.deactivateAll(),this.renderAll(!0);var c=this.__toDataURL(e,t,n);return this.width=i,this.height=s,l.scale(1/r,1/r),this.setWidth(i).setHeight(s),f?this._restoreBordersControlsOnGroup(f):a&&this.setActiveObject&&this.setActiveObject(a),this.contextTop&&this.clearContext(this.contextTop),this.renderAll(),c},toDataURLWithMultiplier:function(e,t,n){return this.toDataURL({format:e,multiplier:t,quality:n})},_tempRemoveBordersControlsFromGroup:function(e){e.origHasControls=e.hasControls,e.origBorderColor=e.borderColor,e.hasControls=!0,e.borderColor="rgba(0,0,0,0)",e.forEachObject(function(e){e.origBorderColor=e.borderColor,e.borderColor="rgba(0,0,0,0)"})},_restoreBordersControlsOnGroup:function(e){e.hideControls=e.origHideControls,e.borderColor=e.origBorderColor,e.forEachObject(function(e){e.borderColor=e.origBorderColor,delete e.origBorderColor})}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{loadFromDatalessJSON:function(e,t,n){return this.loadFromJSON(e,t,n)},loadFromJSON:function(e,t,n){if(!e)return;var r=typeof e=="string"?JSON.parse(e):e;this.clear();var i=this;return this._enlivenObjects(r.objects,function(){i._setBgOverlay(r,t)},n),this},_setBgOverlay:function(e,t){var n=this,r={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(!e.backgroundImage&&!e.overlayImage&&!e.background&&!e.overlay){t&&t();return}var i=function(){r.backgroundImage&&r.overlayImage&&r.backgroundColor&&r.overlayColor&&(n.renderAll(),t&&t())};this.__setBgOverlay("backgroundImage",e.backgroundImage,r,i),this.__setBgOverlay("overlayImage",e.overlayImage,r,i),this.__setBgOverlay("backgroundColor",e.background,r,i),this.__setBgOverlay("overlayColor",e.overlay,r,i),i()},__setBgOverlay:function(e,t,n,r){var i=this;if(!t){n[e]=!0;return}e==="backgroundImage"||e==="overlayImage"?fabric.Image.fromObject(t,function(t){i[e]=t,n[e]=!0,r&&r()}):this["set"+fabric.util.string.capitalize(e,!0)](t,function(){n[e]=!0,r&&r()})},_enlivenObjects:function(e,t,n){var r=this;if(e.length===0){t&&t();return}var i=this.renderOnAddRemove;this.renderOnAddRemove=!1,fabric.util.enlivenObjects(e,function(e){e.forEach(function(e,t){r.insertAt(e,t,!0)}),r.renderOnAddRemove=i,t&&t()},null,n)},_toDataURL:function(e,t){this.clone(function(n){t(n.toDataURL(e))})},_toDataURLWithMultiplier:function(e,t,n){this.clone(function(r){n(r.toDataURLWithMultiplier(e,t))})},clone:function(e,t){var n=JSON.stringify(this.toJSON(t));this.cloneWithoutData(function(t){t.loadFromJSON(n,function(){e&&e(t)})})},cloneWithoutData:function(e){var t=fabric.document.createElement("canvas");t.width=this.getWidth(),t.height=this.getHeight();var n=new fabric.Canvas(t);n.clipTo=this.clipTo,this.backgroundImage?(n.setBackgroundImage(this.backgroundImage.src,function(){n.renderAll(),e&&e(n)}),n.backgroundImageOpacity=this.backgroundImageOpacity,n.backgroundImageStretch=this.backgroundImageStretch):e&&e(n)}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.toFixed,i=t.util.string.capitalize,s=t.util.degreesToRadians,o=t.StaticCanvas.supports("setLineDash");if(t.Object)return;t.Object=t.util.createClass({type:"object",originX:"left",originY:"top",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,opacity:1,angle:0,cornerSize:12,transparentCorners:!0,hoverCursor:null,padding:0,borderColor:"rgba(102,153,255,0.75)",cornerColor:"rgba(102,153,255,0.5)",centeredScaling:!1,centeredRotation:!0,fill:"rgb(0,0,0)",fillRule:"source-over",backgroundColor:"",stroke:null,strokeWidth:1,strokeDashArray:null,strokeLineCap:"butt",strokeLineJoin:"miter",strokeMiterLimit:10,shadow:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,transformMatrix:null,minScaleLimit:.01,selectable:!0,evented:!0,visible:!0,hasControls:!0,hasBorders:!0,hasRotatingPoint:!0,rotatingPointOffset:40,perPixelTargetFind:!1,includeDefaultValues:!0,clipTo:null,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockUniScaling:!1,stateProperties:"top left width height scaleX scaleY flipX flipY originX originY transformMatrix stroke strokeWidth strokeDashArray strokeLineCap strokeLineJoin strokeMiterLimit angle opacity fill fillRule shadow clipTo visible backgroundColor".split(" "),initialize:function(e){e&&this.setOptions(e)},_initGradient:function(e){e.fill&&e.fill.colorStops&&!(e.fill instanceof t.Gradient)&&this.set("fill",new t.Gradient(e.fill))},_initPattern:function(e){e.fill&&e.fill.source&&!(e.fill instanceof t.Pattern)&&this.set("fill",new t.Pattern(e.fill)),e.stroke&&e.stroke.source&&!(e.stroke instanceof t.Pattern)&&this.set("stroke",new t.Pattern(e.stroke))},_initClipping:function(e){if(!e.clipTo||typeof e.clipTo!="string")return;var n=t.util.getFunctionBody(e.clipTo);typeof n!="undefined"&&(this.clipTo=new Function("ctx",n))},setOptions:function(e){for(var t in e)this.set(t,e[t]);this._initGradient(e),this._initPattern(e),this._initClipping(e)},transform:function(e,t){e.globalAlpha=this.opacity;var n=t?this._getLeftTopCoords():this.getCenterPoint();e.translate(n.x,n.y),e.rotate(s(this.angle)),e.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(e){var n=t.Object.NUM_FRACTION_DIGITS,i={type:this.type,originX:this.originX,originY:this.originY,left:r(this.left,n),top:r(this.top,n),width:r(this.width,n),height:r(this.height,n),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:r(this.strokeWidth,n),strokeDashArray:this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeLineJoin:this.strokeLineJoin,strokeMiterLimit:r(this.strokeMiterLimit,n),scaleX:r(this.scaleX,n),scaleY:r(this.scaleY,n),angle:r(this.getAngle(),n),flipX:this.flipX,flipY:this.flipY,opacity:r(this.opacity,n),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,clipTo:this.clipTo&&String(this.clipTo),backgroundColor:this.backgroundColor};return this.includeDefaultValues||(i=this._removeDefaultValues(i)),t.util.populateWithProperties(this,i,e),i},toDatalessObject:function(e){return this.toObject(e)},_removeDefaultValues:function(e){var n=t.util.getKlass(e.type).prototype,r=n.stateProperties;return r.forEach(function(t){e[t]===n[t]&&delete e[t]}),e},toString:function(){return"#"},get:function(e){return this[e]},set: function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"&&e!=="clipTo"?this._set(e,t(this.get(e))):this._set(e,t);return this},_set:function(e,n){var i=e==="scaleX"||e==="scaleY";return i&&(n=this._constrainScale(n)),e==="scaleX"&&n<0?(this.flipX=!this.flipX,n*=-1):e==="scaleY"&&n<0?(this.flipY=!this.flipY,n*=-1):e==="width"||e==="height"?this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2):e==="shadow"&&n&&!(n instanceof t.Shadow)&&(n=new t.Shadow(n)),this[e]=n,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save(),this._transform(e,n),this._setStrokeStyles(e),this._setFillStyles(e);var r=this.transformMatrix;r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_transform:function(e,t){var n=this.transformMatrix;n&&!this.group&&e.setTransform(n[0],n[1],n[2],n[3],n[4],n[5]),t||this.transform(e)},_setStrokeStyles:function(e){this.stroke&&(e.lineWidth=this.strokeWidth,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,e.strokeStyle=this.stroke.toLive?this.stroke.toLive(e):this.stroke)},_setFillStyles:function(e){this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill)},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){if(!this.shadow)return;e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_renderFill:function(e){if(!this.fill)return;this.fill.toLive&&(e.save(),e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0)),e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke)return;e.save(),this.strokeDashArray?(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),o?(e.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(e)):this._renderDashedStroke&&this._renderDashedStroke(e),e.stroke()):this._stroke?this._stroke(e):e.stroke(),this._removeShadow(e),e.restore()},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){var n=this.toDataURL();return t.util.loadImage(n,function(n){e&&e(new t.Image(n))}),this},toDataURL:function(e){e||(e={});var n=t.util.createCanvasElement(),r=this.getBoundingRect();n.width=r.width,n.height=r.height,t.util.wrapElement(n,"div");var i=new t.Canvas(n);e.format==="jpg"&&(e.format="jpeg"),e.format==="jpeg"&&(i.backgroundColor="#fff");var s={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set("active",!1),this.setPositionByOrigin(new t.Point(n.width/2,n.height/2),"center","center");var o=this.canvas;i.add(this);var u=i.toDataURL(e);return this.set(s).setCoords(),this.canvas=o,i.dispose(),i=null,u},isType:function(e){return this.type===e},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}return this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){return this.set("fill",new t.Pattern(e))},setShadow:function(e){return this.set("shadow",new t.Shadow(e))},setColor:function(e){return this.set("fill",e),this},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.canvas.centerObject(this),this},remove:function(){return this.canvas.remove(this),this},getLocalPointer:function(e,t){t=t||this.canvas.getPointer(e);var n=this.translateToOriginPoint(this.getCenterPoint(),"left","top");return{x:t.x-n.x,y:t.y-n.y}}}),t.util.createAccessors(t.Object),t.Object.prototype.rotate=t.Object.prototype.setAngle,n(t.Object.prototype,t.Observable),t.Object.NUM_FRACTION_DIGITS=2,t.Object.__uid=0}(typeof exports!="undefined"?exports:this),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{translateToCenterPoint:function(t,n,r){var i=t.x,s=t.y,o=this.stroke?this.strokeWidth:0;return n==="left"?i=t.x+(this.getWidth()+o*this.scaleX)/2:n==="right"&&(i=t.x-(this.getWidth()+o*this.scaleX)/2),r==="top"?s=t.y+(this.getHeight()+o*this.scaleY)/2:r==="bottom"&&(s=t.y-(this.getHeight()+o*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},translateToOriginPoint:function(t,n,r){var i=t.x,s=t.y,o=this.stroke?this.strokeWidth:0;return n==="left"?i=t.x-(this.getWidth()+o*this.scaleX)/2:n==="right"&&(i=t.x+(this.getWidth()+o*this.scaleX)/2),r==="top"?s=t.y-(this.getHeight()+o*this.scaleY)/2:r==="bottom"&&(s=t.y+(this.getHeight()+o*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},getCenterPoint:function(){var e=new fabric.Point(this.left,this.top);return this.translateToCenterPoint(e,this.originX,this.originY)},getPointByOrigin:function(e,t){var n=this.getCenterPoint();return this.translateToOriginPoint(n,e,t)},toLocalPoint:function(t,n,r){var i=this.getCenterPoint(),s=this.stroke?this.strokeWidth:0,o,u;return n&&r?(n==="left"?o=i.x-(this.getWidth()+s*this.scaleX)/2:n==="right"?o=i.x+(this.getWidth()+s*this.scaleX)/2:o=i.x,r==="top"?u=i.y-(this.getHeight()+s*this.scaleY)/2:r==="bottom"?u=i.y+(this.getHeight()+s*this.scaleY)/2:u=i.y):(o=this.left,u=this.top),fabric.util.rotatePoint(new fabric.Point(t.x,t.y),i,-e(this.angle)).subtractEquals(new fabric.Point(o,u))},setPositionByOrigin:function(e,t,n){var r=this.translateToCenterPoint(e,t,n),i=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",i.x),this.set("top",i.y)},adjustPosition:function(t){var n=e(this.angle),r=this.getWidth()/2,i=Math.cos(n)*r,s=Math.sin(n)*r,o=this.getWidth(),u=Math.cos(n)*o,a=Math.sin(n)*o;this.originX==="center"&&t==="left"||this.originX==="right"&&t==="center"?(this.left-=i,this.top-=s):this.originX==="left"&&t==="center"||this.originX==="center"&&t==="right"?(this.left+=i,this.top+=s):this.originX==="left"&&t==="right"?(this.left+=u,this.top+=a):this.originX==="right"&&t==="left"&&(this.left-=u,this.top-=a),this.setCoords(),this.originX=t},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","center")}})}(),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{oCoords:null,intersectsWithRect:function(e,t){var n=this.oCoords,r=new fabric.Point(n.tl.x,n.tl.y),i=new fabric.Point(n.tr.x,n.tr.y),s=new fabric.Point(n.bl.x,n.bl.y),o=new fabric.Point(n.br.x,n.br.y),u=fabric.Intersection.intersectPolygonRectangle([r,i,o,s],e,t);return u.status==="Intersection"},intersectsWithObject:function(e){function t(e){return{tl:new fabric.Point(e.tl.x,e.tl.y),tr:new fabric.Point(e.tr.x,e.tr.y),bl:new fabric.Point(e.bl.x,e.bl.y),br:new fabric.Point(e.br.x,e.br.y)}}var n=t(this.oCoords),r=t(e.oCoords),i=fabric.Intersection.intersectPolygonPolygon([n.tl,n.tr,n.br,n.bl],[r.tl,r.tr,r.br,r.bl]);return i.status==="Intersection"},isContainedWithinObject:function(e){var t=e.getBoundingRect(),n=new fabric.Point(t.left,t.top),r=new fabric.Point(t.left+t.width,t.top+t.height);return this.isContainedWithinRect(n,r)},isContainedWithinRect:function(e,t){var n=this.getBoundingRect();return n.left>e.x&&n.left+n.widthe.y&&n.top+n.height=e.y&&f.d.y>=e.y)continue;f.o.x===f.d.x&&f.o.x>=e.x?(o=f.o.x,u=e.y):(n=0,r=(f.d.y-f.o.y)/(f.d.x-f.o.x),i=e.y-n*e.x,s=f.o.y-r*f.o.x,o=-(i-s)/(n-r),u=i+n*o),o>=e.x&&(a+=1);if(a===2)break}return a},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],t=fabric.util.array.min(e),n=fabric.util.array.max(e),r=Math.abs(t-n),i=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],s=fabric.util.array.min(i),o=fabric.util.array.max(i),u=Math.abs(s-o);return{left:t,top:s,width:r,height:u}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(e){return Math.abs(e)1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x:m.x,y:m.y};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords&&this._setCornerCoords(),this}})}(),fabric.util.object.extend(fabric.Object.prototype,{sendToBack:function(){return this.group?fabric.StaticCanvas.prototype.sendToBack.call(this.group,this):this.canvas.sendToBack(this),this},bringToFront:function(){return this.group?fabric.StaticCanvas.prototype.bringToFront.call(this.group,this):this.canvas.bringToFront(this),this},sendBackwards:function(e){return this.group?fabric.StaticCanvas.prototype.sendBackwards.call(this.group,this,e):this.canvas.sendBackwards(this,e),this},bringForward:function(e){return this.group?fabric.StaticCanvas.prototype.bringForward.call(this.group,this,e):this.canvas.bringForward(this,e),this},moveTo:function(e){return this.group?fabric.StaticCanvas.prototype.moveTo.call(this.group,this,e):this.canvas.moveTo(this,e),this}}),fabric.util.object.extend(fabric.Object.prototype,{getSvgStyles:function(){var e=this.fill?this.fill.toLive?"url(#SVGID_"+this.fill.id+")":this.fill:"none",t=this.stroke?this.stroke.toLive?"url(#SVGID_"+this.stroke.id+")":this.stroke:"none",n=this.strokeWidth?this.strokeWidth:"0",r=this.strokeDashArray?this.strokeDashArray.join(" "):"",i=this.strokeLineCap?this.strokeLineCap:"butt",s=this.strokeLineJoin?this.strokeLineJoin:"miter",o=this.strokeMiterLimit?this.strokeMiterLimit:"4",u=typeof this.opacity!="undefined"?this.opacity:"1",a=this.visible?"":" visibility: hidden;",f=this.shadow&&this.type!=="text"?"filter: url(#SVGID_"+this.shadow.id+");":"";return["stroke: ",t,"; ","stroke-width: ",n,"; ","stroke-dasharray: ",r,"; ","stroke-linecap: ",i,"; ","stroke-linejoin: ",s,"; ","stroke-miterlimit: ",o,"; ","fill: ",e,"; ","opacity: ",u,";",f,a].join("")},getSvgTransform:function(){var e=fabric.util.toFixed,t=this.getAngle(),n=this.getCenterPoint(),r=fabric.Object.NUM_FRACTION_DIGITS,i="translate("+e(n.x,r)+" "+e(n.y,r)+")",s=t!==0?" rotate("+e(t,r)+")":"",o=this.scaleX===1&&this.scaleY===1?"":" scale("+e(this.scaleX,r)+" "+e(this.scaleY,r)+")",u=this.flipX?"matrix(-1 0 0 1 0 0) ":"",a=this.flipY?"matrix(1 0 0 -1 0 0)":"";return[i,s,o,u,a].join("")},_createBaseSVGMarkup:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),this.shadow&&e.push(this.shadow.toSVG(this)),e}}),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this.get(e)!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians,n=typeof G_vmlCanvasManager!="undefined";fabric.util.object.extend(fabric.Object.prototype,{_controlsVisibility:null,_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(!this.isControlVisible(a))continue;if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner),o=this._findCrossPoints({x:i,y:s},u);if(o!==0&&o%2===1)return this.__corner=a,a}return!1},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=~~(this.strokeWidth/2)*2;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)-.5,~~(-(u/2)-t-r/2*this.scaleY)-.5,~~(o+n+r*this.scaleX)+1,~~(u+n+r*this.scaleY)+1);if(this.hasRotatingPoint&&this.isControlVisible("mtr")&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;var t=this.cornerSize,n=t/2,r=~~(this.strokeWidth/2),i=-(this.width/2),s=-(this.height/2),o=this.padding/this.scaleX,u=this.padding/this.scaleY,a=n/this.scaleY,f=n/this.scaleX,l=(n-t)/this.scaleX,c=(n-t)/this.scaleY,h=this.height,p=this.width,d=this.transparentCorners?"strokeRect":"fillRect";return e.save(),e.lineWidth=1/Math.max(this.scaleX,this.scaleY),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=e.fillStyle=this.cornerColor,this._drawControl("tl",e,d,i-f-r-o,s-a-r-u),this._drawControl("tr",e,d,i+p-f+r+o,s-a-r-u),this._drawControl("bl",e,d,i-f-r-o,s+h+c+r+u),this._drawControl("br",e,d,i+p+l+r+o,s+h+c+r+u),this.get("lockUniScaling")||(this._drawControl("mt",e,d,i+p/2-f,s-a-r-u),this._drawControl("mb",e,d,i+p/2-f,s+h+c+r+u),this._drawControl("mb",e,d,i+p+l+r+o,s+h/2-a),this._drawControl("ml",e,d,i-f-r-o,s+h/2-a)),this.hasRotatingPoint&&this._drawControl("mtr",e,d,i+p/2-f,this.flipY?s+h+this.rotatingPointOffset/this.scaleY-this.cornerSize/this.scaleX/2+r+u:s-this.rotatingPointOffset/this.scaleY-this.cornerSize/this.scaleY/2-r-u),e.restore(),this},_drawControl:function(e,t,r,i,s){var o=this.cornerSize/this.scaleX,u=this.cornerSize/this.scaleY;this.isControlVisible(e)&&(n||this.transparentCorners||t.clearRect(i,s,o,u),t[r](i,s,o,u))},isControlVisible:function(e){return this._getControlsVisibility()[e]},setControlVisible:function(e,t){return this._getControlsVisibility()[e]=t,this},setControlsVisibility:function(e){e||(e={});for(var t in e)this.setControlVisible(t,e[t]);return this},_getControlsVisibility:function(){return this._controlsVisibility||(this._controlsVisibility={tl:!0,tr:!0,br:!0,bl:!0,ml:!0,mt:!0,mr:!0,mb:!0,mtr:!0}),this._controlsVisibility}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("left"),endValue:this.getCenter().left,duration:this.FX_DURATION,onChange:function(t){e.set("left",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxCenterObjectV:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("top"),endValue:this.getCenter().top,duration:this.FX_DURATION,onChange:function(t){e.set("top",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxRemove:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("opacity"),endValue:0,duration:this.FX_DURATION,onStart:function(){e.set("active",!1)},onChange:function(t){e.set("opacity",t),s.renderAll(),i()},onComplete:function(){s.remove(e),r()}}),this}}),fabric.util.object.extend(fabric.Object.prototype,{animate:function(){if(arguments[0]&&typeof arguments[0]=="object"){var e=[],t,n;for(t in arguments[0])e.push(t);for(var r=0,i=e.length;r'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e)},_set:function(e,t){return this.callSuper("_set",e,t),e==="radius"&&this.setRadius(t),this},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(e){var t=this._createBaseSVGMarkup(),n=this.width/2,r=this.height/2,i=[-n+" "+r,"0 "+ -r,n+" "+r].join(",");return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this._renderFill(e),this._renderStroke(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}var r=t.Object.prototype.stateProperties.concat();r.push("rx","ry","x","y"),t.Rect=t.util.createClass(t.Object,{stateProperties:r,type:"rect",rx:0,ry:0,x:0,y:0,strokeDashArray:null,initialize:function(e){e=e||{},this.callSuper("initialize",e),this._initRxRy(),this.x=e.x||0,this.y=e.y||0},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){if(this.width===1&&this.height===1){e.fillRect(0,0,1,1);return}var t=this.rx||0,n=this.ry||0,r=this.width,i=this.height,s=-r/2,o=-i/2,u=this.group&&this.group.type==="path-group",a=t!==0||n!==0;e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y),e.moveTo(s+t,o),e.lineTo(s+r-t,o),a&&e.quadraticCurveTo(s+r,o,s+r,o+n,s+r,o+n),e.lineTo(s+r,o+i-n),a&&e.quadraticCurveTo(s+r,o+i,s+r-t,o+i,s+r-t,o+i),e.lineTo(s+t,o+i),a&&e.quadraticCurveTo(s,o+i,s,o+i-n,s,o+i-n),e.lineTo(s,o+n),a&&e.quadraticCurveTo(s,o,s+t,o,s+t,o),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){var t=n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,r){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=i(s);var o=new t.Rect(n(r?t.util.object.clone(r):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(e){var t=[],r=this._createBaseSVGMarkup();for(var i=0,s=this.points.length;i'),e?e(r.join("")):r.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),e?e(n.join("")):n.join("")},_render:function(e){var t; e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n"},toObject:function(e){var t=s(this.callSuper("toObject",e),{path:this.path.map(function(e){return e.slice()}),pathOffset:this.pathOffset});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(e){var t=[],n=this._createBaseSVGMarkup();for(var r=0,i=this.path.length;r',"",""),e?e(n.join("")):n.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],n=[],r,i,s=/([-+]?\d+(?:\.\d+)?(?:e[-+]?\d+)?)/g,o,u;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var r=0,i=t.length;r"),e?e(n.join("")):n.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e,n){typeof e.paths=="string"?t.loadSVGFromURL(e.paths,function(r){var i=e.paths;delete e.paths;var s=t.util.groupSVGElements(r,e,i);n(s)}):t.util.enlivenObjects(e.paths,function(r){delete e.paths,n(new t.PathGroup(r,e))})},t.PathGroup.async=!0}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){this.forEachObject(this._updateObjectCoords,this)},_updateObjectCoords:function(e){var t=e.getLeft(),n=e.getTop();e.set({originalLeft:t,originalTop:n,left:t-this.left,top:n-this.top}),e.setCoords(),e.__origHasControls=e.hasControls,e.hasControls=!1},toString:function(){return"#"},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(this._setObjectActive,this),this._calcBounds(),this._updateObjectsCoords(),this},_setObjectActive:function(e){e.set("active",!0),e.group=this},removeWithUpdate:function(e){return this._moveFlippedObject(e),this._restoreObjectsState(),this.forEachObject(this._setObjectActive,this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e),this.clipTo&&t.util.clipContext(this,e);for(var r=0,i=this._objects.length;r'];for(var n=0,r=this._objects.length;n"),e?e(t.join("")):t.join("")},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','");if(this.stroke||this.strokeDashArray){var n=this.fill;this.fill=null,t.push("'),this.fill=n}return t.push(""),e?e(t.join("")):t.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this._element=this._originalElement,e&&e();return}var t=this._originalElement,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;return n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height,fabric.isLikelyNode?(r.src=n.toBuffer(undefined,fabric.Image.pngCompression),i._element=r,e&&e()):(r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png")),this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e),this._element.crossOrigin=this.crossOrigin},_initFilters:function(e,t){e.filters&&e.filters.length?fabric.util.enlivenObjects(e.filters,function(e){t&&t(e)},"fabric.Image.filters"):t&&t()},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){fabric.Image.prototype._initFilters.call(e,e,function(r){e.filters=r||[];var i=new fabric.Image(n,e);t&&t(i)})},null,e.crossOrigin)},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))},null,n&&n.crossOrigin)},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0,fabric.Image.pngCompression=1}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.BaseFilter=fabric.util.createClass({type:"BaseFilter",toObject:function(){return{type:this.type}},toJSON:function(){return this.toObject()}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend;t.Image.filters.Brightness=t.util.createClass(t.Image.filters.BaseFilter,{type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;sa||C<0||C>u)continue;var k=(N*u+C)*4,L=t[x*i+T];b+=o[k]*L,w+=o[k+1]*L,E+=o[k+2]*L,S+=o[k+3]*L}h[y]=b,h[y+1]=w,h[y+2]=E,h[y+3]=S+p*(255-S)}n.putImageData(c,0,0)},toObject:function(){return n(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),t.Image.filters.Convolute.fromObject=function(e){return new t.Image.filters.Convolute(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend;t.Image.filters.GradientTransparency=t.util.createClass(t.Image.filters.BaseFilter,{type:"GradientTransparency",initialize:function(e){e=e||{},this.threshold=e.threshold||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.threshold,s=r.length;for(var o=0,u=r.length;o-1?e.channel:0},applyTo:function(e){if(!this.mask)return;var n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=r.data,s=this.mask.getElement(),o=t.util.createCanvasElement(),u=this.channel,a,f=r.width*r.height*4;o.width=s.width,o.height=s.height,o.getContext("2d").drawImage(s,0,0,s.width,s.height);var l=o.getContext("2d").getImageData(0,0,s.width,s.height),c=l.data;for(a=0;ao&&f>o&&l>o&&u(a-f)'},_render:function(e){var t=this.group&&this.group.type==="path-group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaNative:function(e){var n=this.text.split(this._reNewline);this.transform(e,t.isLikelyNode),this._setTextStyles(e),this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this.clipTo&&t.util.clipContext(this,e),this._renderTextBackground(e,n),this._translateForTextAlign(e),this._renderText(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this.clipTo&&e.restore(),this._setBoundaries(e,n),this._totalLineHeight=0},_renderText:function(e,t){e.save(),this._setShadow(e),this._renderTextFill(e,t),this._renderTextStroke(e,t),this._removeShadow(e),e.restore()},_translateForTextAlign:function(e){this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0))},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;nn&&(n=s)}return n},_renderChars:function(e,t,n,r,i){t[e](n,r,i)},_renderTextLine:function(e,t,n,r,i,s){i-=this.fontSize/4;if(this.textAlign!=="justify"){this._renderChars(e,t,n,r,i,s);return}var o=t.measureText(n).width,u=this.width;if(u>o){var a=n.split(/\s+/),f=t.measureText(n.replace(/\s+/g,"")).width,l=u-f,c=a.length-1,h=l/c,p=0;for(var d=0,v=a.length;d-1&&i(this.fontSize*this.lineHeight),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize*this.lineHeight-this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(this.fontSize*this.lineHeight-this.fontSize)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(e,t){if(!this.visible)return;e.save();var n=this.transformMatrix;n&&!this.group&&e.setTransform(n[0],n[1],n[2],n[3],n[4],n[5]),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){var t=n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textAlign:this.textAlign,path:this.path,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=[],n=this.text.split(this._reNewline),r=this._getSVGLeftTopOffsets(n),i=this._getSVGTextAndBg(r.lineTop,r.textLeft,n),s=this._getSVGShadows(r.lineTop,n);return r.textTop+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,this._wrapSVGTextAndBg(t,i,s,r),e?e(t.join("")):t.join("")},_getSVGLeftTopOffsets:function(e){var t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight;return{textLeft:n,textTop:r,lineTop:t}},_wrapSVGTextAndBg:function(e,t,n,r){e.push('',t.textBgRects.join(""),"',n.join(""),t.textSpans.join(""),"","")},_getSVGShadows:function(e,n){var r=[],s,o,u=1;if(!this.shadow||!this._boundaries)return r;for(s=0,o=n.length;s",t.util.string.escapeXml(n[s]),""),u=1}else u++;return r},_getSVGTextAndBg:function(e,t,n){var r=[],i=[],s=1;this._setSVGBg(i);for(var o=0,u=n.length;o",t.util.string.escapeXml(e),"")},_setSVGTextLineBg:function(e,t,n,r){e.push("')},_setSVGBg:function(e){this.backgroundColor&&this._boundaries&&e.push("')},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),function(){var e=fabric.util.object.clone;fabric.IText=fabric.util.createClass(fabric.Text,fabric.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"#333",cursorDelay:1e3,cursorDuration:600,styles:null,caching:!0,_skipFillStrokeCheck:!0,_reSpace:/\s|\n/,_fontSizeFraction:4,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,_charWidthsCache:{},initialize:function(e,t){this.styles=t?t.styles||{}:{},this.callSuper("initialize",e,t),this.initBehavior(),fabric.IText.instances.push(this),this.__lineWidths={},this.__lineHeights={},this.__lineOffsets={}},isEmptyStyles:function(){if(!this.styles)return!0;var e=this.styles;for(var t in e)for(var n in e[t])for(var r in e[t][n])return!1;return!0},setSelectionStart:function(e){this.selectionStart=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionStart=e)},setSelectionEnd:function(e){this.selectionEnd=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionEnd=e)},getSelectionStyles:function(e,t){if(arguments.length===2){var n=[];for(var r=e;r-1&&this._renderCharDecorationAtOffset(e,n,r+this.fontSize/this._fontSizeFraction,i,0,this.fontSize/20),u.indexOf("line-through")>-1&&this._renderCharDecorationAtOffset(e,n,r+this.fontSize/this._fontSizeFraction,i,o/2,a/20),u.indexOf("overline")>-1&&this._renderCharDecorationAtOffset(e,n,r,i,s-this.fontSize/this._fontSizeFraction,this.fontSize/20)},_renderCharDecorationAtOffset:function(e,t,n,r,i,s){e.fillRect(t,n-i,r,s)},_renderTextLine:function(e,t,n,r,i,s){i+=this.fontSize/4,this.callSuper("_renderTextLine",e,t,n,r,i,s)},_renderTextDecoration:function(e,t){if(this.isEmptyStyles())return this.callSuper("_renderTextDecoration",e,t)},_renderTextLinesBackground:function(e,t){if(!this.textBackgroundColor&&!this.styles)return;e.save(),this.textBackgroundColor&&(e.fillStyle=this.textBackgroundColor);var n=0,r=this.fontSize/this._fontSizeFraction;for(var i=0,s=t.length;in&&(n=s)}return n},_getHeightOfLine:function(e,t,n){n=n||this.text.split(this._reNewline);var r=this._getHeightOfChar(e,n[t][0],t,0),i=n[t],s=i.split("");for(var o=1,u=s.length;or&&(r=a)}return r*this.lineHeight},_getTextHeight:function(e,t){var n=0;for(var r=0,i=t.length;r-1)t++,n--;return e-t},findWordBoundaryRight:function(e){var t=0,n=e;if(this._reSpace.test(this.text.charAt(n)))while(this._reSpace.test(this.text.charAt(n)))t++,n++;while(/\S/.test(this.text.charAt(n))&&n-1)t++,n--;return e-t},findLineBoundaryRight:function(e){var t=0,n=e;while(!/\n/.test(this.text.charAt(n))&&n0&&nr;s?this.removeStyleObject(s,n+1):this.removeStyleObject(this.get2DCursorLocation(n).charIndex===0,n)}this.text=this.text.slice(0,e)+this.text.slice(t)},insertChars:function(e){var t=this.text.slice(this.selectionStart,this.selectionStart+1)==="\n";this.text=this.text.slice(0,this.selectionStart)+e+this.text.slice(this.selectionEnd),this.selectionStart===this.selectionEnd?this.insertStyleObjects(e,t,this.copiedStyles):this.selectionEnd-this.selectionStart>1&&console.log("replacing MORE than 1 char"),this.selectionStart+=e.length,this.selectionEnd=this.selectionStart,this.canvas&&this.canvas.renderAll().renderAll(),this.setCoords(),this.fire("changed"),this.canvas&&this.canvas.fire("text:changed",{target:this})},insertNewlineStyleObject:function(t,n,r){this.shiftLineStyles(t,1),this.styles[t+1]||(this.styles[t+1]={});var i=this.styles[t][n-1],s={};if(r)s[0]=e(i),this.styles[t+1]=s;else{for(var o in this.styles[t])parseInt(o,10)>=n&&(s[parseInt(o,10)-n]=this.styles[t][o],delete this.styles[t][o]);this.styles[t+1]=s}},insertCharStyleObject:function(t,n,r){var i=this.styles[t],s=e(i);n===0&&!r&&(n=1);for(var o in s){var u=parseInt(o,10);u>=n&&(i[u+1]=s[u])}this.styles[t][n]=r||e(i[n-1])},insertStyleObjects:function(e,t,n){if(this.isEmptyStyles())return;var r=this.get2DCursorLocation(),i=r.lineIndex,s=r.charIndex;this.styles[i]||(this.styles[i]={}),e==="\n"?this.insertNewlineStyleObject(i,s,t):n?this._insertStyles(n):this.insertCharStyleObject(i,s)},_insertStyles:function(e){for(var t=0,n=e.length;tt&&(this.styles[s+n]=r[s])}},removeStyleObject:function(t,n){var r=this.get2DCursorLocation(n),i=r.lineIndex,s=r.charIndex;if(t){var o=this.text.split(this._reNewline),u=o[i-1],a=u?u.length:0;this.styles[i-1]||(this.styles[i-1]={});for(s in this.styles[i])this.styles[i-1][parseInt(s,10)+a]=this.styles[i][s];this.shiftLineStyles(i,-1)}else{var f=this.styles[i];if(f){var l=this.selectionStart===this.selectionEnd?-1:0;delete f[s+l]}var c=e(f);for(var h in c){var p=parseInt(h,10);p>=s&&p!==0&&(f[p-1]=c[p],delete f[p])}}},insertNewline:function(){this.insertChars("\n")}})}(),fabric.util.object.extend(fabric.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+(new Date),this.__lastLastClickTime=+(new Date),this.lastPointer={},this.on("mousedown",this.onMouseDown.bind(this))},onMouseDown:function(e){this.__newClickTime=+(new Date);var t=this.canvas.getPointer(e.e);this.isTripleClick(t)?(this.fire("tripleclick",e),this._stopEvent(e.e)):this.isDoubleClick(t)&&(this.fire("dblclick",e),this._stopEvent(e.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=t},isDoubleClick:function(e){return this.__newClickTime-this.__lastClickTime<500&&this.__lastPointer.x===e.x&&this.__lastPointer.y===e.y},isTripleClick:function(e){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===e.x&&this.__lastPointer.y===e.y},_stopEvent:function(e){e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation()},initCursorSelectionHandlers:function(){this.initSelectedHandler(),this.initMousedownHandler(),this.initMousemoveHandler(),this.initMouseupHandler(),this.initClicks()},initClicks:function(){this.on("dblclick",function(e){this.selectWord(this.getSelectionStartFromPointer(e.e))}),this.on("tripleclick",function(e){this.selectLine(this.getSelectionStartFromPointer(e.e))})},initMousedownHandler:function(){this.on("mousedown",function(e){var t=this.canvas.getPointer(e.e);this.__mousedownX=t.x,this.__mousedownY=t.y,this.__isMousedown=!0,this.hiddenTextarea&&this.canvas&&this.canvas.wrapperEl.appendChild(this.hiddenTextarea),this.isEditing&&(this.setCursorByClick(e.e),this.__selectionStartOnMouseDown=this.selectionStart)})},initMousemoveHandler:function(){this.on("mousemove",function(e){if(!this.__isMousedown||!this.isEditing)return;var t=this.getSelectionStartFromPointer(e.e);t>=this.__selectionStartOnMouseDown?(this.setSelectionStart(this.__selectionStartOnMouseDown),this.setSelectionEnd(t)):(this.setSelectionStart(t),this.setSelectionEnd(this.__selectionStartOnMouseDown))})},_isObjectMoved:function(e){var t=this.canvas.getPointer(e);return this.__mousedownX!==t.x||this.__mousedownY!==t.y},initMouseupHandler:function(){this.on("mouseup",function(e){this.__isMousedown=!1;if(this._isObjectMoved(e.e))return;this.selected&&this.enterEditing()})},setCursorByClick:function(e){var t=this.getSelectionStartFromPointer(e);e.shiftKey?ts?0:1,a=r+u;return this.flipX&&(a=i-a),a>this.text.length&&(a=this.text.length),a}}),fabric.util.object.extend(fabric.IText.prototype,{initKeyHandlers:function(){fabric.util.addListener(fabric.document,"keydown",this.onKeyDown.bind(this)),fabric.util.addListener(fabric.document,"keypress",this.onKeyPress.bind(this))},initHiddenTextarea:function(){this.hiddenTextarea=fabric.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.style.cssText="position: absolute; top: 0; left: -9999px",fabric.document.body.appendChild(this.hiddenTextarea)},_keysMap:{8:"removeChars",13:"insertNewline",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown",46:"forwardDelete"},_ctrlKeysMap:{65:"selectAll",67:"copy",86:"paste",88:"cut"},onKeyDown:function(e){if(!this.isEditing)return;if(e.keyCode in this._keysMap)this[this._keysMap[e.keyCode]](e);else{if(!(e.keyCode in this._ctrlKeysMap&&(e.ctrlKey||e.metaKey)))return;this[this._ctrlKeysMap[e.keyCode]](e)}e.preventDefault(),e.stopPropagation(),this.canvas&&this.canvas.renderAll()},forwardDelete:function(e){this.selectionStart===this.selectionEnd&&this.moveCursorRight(e),this.removeChars(e)},copy:function(){var e=this.getSelectedText();this.copiedText=e,this.copiedStyles=this.getSelectionStyles(this.selectionStart,this.selectionEnd)},paste:function(){this.copiedText&&this.insertChars(this.copiedText)},cut:function(e){this.copy(),this.removeChars(e)},onKeyPress:function(e){if(!this.isEditing||e.metaKey||e.ctrlKey||e.keyCode===8||e.keyCode===13)return;this.insertChars(String.fromCharCode(e.which)),e.preventDefault(),e.stopPropagation()},getDownCursorOffset:function(e,t){var n=t?this.selectionEnd:this.selectionStart,r=this.text.split(this._reNewline),i,s,o=this.text.slice(0,n),u=this.text.slice(n),a=o.slice(o.lastIndexOf("\n")+1),f=u.match(/(.*)\n?/)[1],l=(u.match(/.*\n(.*)\n?/)||{})[1]||"",c=this.get2DCursorLocation(n);if(c.lineIndex===r.length-1||e.metaKey)return this.text.length-n;var h=this._getWidthOfLine(this.ctx,c.lineIndex,r);s=this._getLineLeftOffset(h);var p=s,d=c.lineIndex;for(var v=0,m=a.length;vn){f=!0;var d=u-p,v=u,m=Math.abs(d-n),g=Math.abs(v-n);a=gthis.text.length&&(this.selectionStart=this.text.length),this.selectionEnd=this.selectionStart},moveCursorDownWithShift:function(e){if(this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd){this.selectionStart+=e,this._selectionDirection="left";return}this._selectionDirection="right",this.selectionEnd+=e,this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length)},getUpCursorOffset:function(e,t){var n=t?this.selectionEnd:this.selectionStart,r=this.get2DCursorLocation(n);if(r.lineIndex===0||e.metaKey)return n;var i=this.text.slice(0,n),s=i.slice(i.lastIndexOf("\n")+1),o=(i.match(/\n?(.*)\n.*$/)||{})[1]||"",u=this.text.split(this._reNewline),a,f,l=this._getWidthOfLine(this.ctx,r.lineIndex,u);f=this._getLineLeftOffset(l);var c=f,h=r.lineIndex;for(var p=0,d=s.length;pn){f=!0;var d=u-p,v= -u,m=Math.abs(d-n),g=Math.abs(v-n);a=g=this.text.length&&this.selectionEnd>=this.text.length)return;this.abortCursorAnimation(),this._currentCursorOpacity=1,e.shiftKey?this.moveCursorRightWithShift(e):this.moveCursorRightWithoutShift(e),this.initDelayedCursor()},moveCursorRightWithShift:function(e){this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd?this._moveRight(e,"selectionStart"):(this._selectionDirection="right",this._moveRight(e,"selectionEnd"),this.text.charAt(this.selectionEnd-1)==="\n"&&this.selectionEnd++,this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length))},moveCursorRightWithoutShift:function(e){this._selectionDirection="right",this.selectionStart===this.selectionEnd?(this._moveRight(e,"selectionStart"),this.selectionEnd=this.selectionStart):(this.selectionEnd+=this.getNumNewLinesInSelectedText(),this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length),this.selectionStart=this.selectionEnd)},removeChars:function(e){this.selectionStart===this.selectionEnd?this._removeCharsNearCursor(e):this._removeCharsFromTo(this.selectionStart,this.selectionEnd),this.selectionEnd=this.selectionStart,this._removeExtraneousStyles(),this.canvas&&this.canvas.renderAll().renderAll(),this.setCoords(),this.fire("changed"),this.canvas&&this.canvas.fire("text:changed",{target:this})},_removeCharsNearCursor:function(e){if(this.selectionStart!==0)if(e.metaKey){var t=this.findLineBoundaryLeft(this.selectionStart);this._removeCharsFromTo(t,this.selectionStart),this.selectionStart=t}else if(e.altKey){var n=this.findWordBoundaryLeft(this.selectionStart);this._removeCharsFromTo(n,this.selectionStart),this.selectionStart=n}else{var r=this.text.slice(this.selectionStart-1,this.selectionStart)==="\n";this.removeStyleObject(r),this.selectionStart--,this.text=this.text.slice(0,this.selectionStart)+this.text.slice(this.selectionStart+1)}}}),fabric.util.object.extend(fabric.IText.prototype,{_setSVGTextLineText:function(e,t,n,r,i,s){this.styles[t]?this._setSVGTextLineChars(e,t,n,r,i,s):this.callSuper("_setSVGTextLineText",e,t,n,r,i)},_setSVGTextLineChars:function(e,t,n,r,i,s){var o=t===0||this.useNative?"y":"dy",u=e.split(""),a=0,f=this._getSVGLineLeftOffset(t),l=this._getSVGLineTopOffset(t),c=this._getHeightOfLine(this.ctx,t);for(var h=0,p=u.length;h'].join("")},_createTextCharSpan:function(e,t,n,r,i,s){var o=this.getSvgStyles.call(fabric.util.object.extend({visible:!0,fill:this.fill,stroke:this.stroke,type:"text"},t));return['',fabric.util.string.escapeXml(e),""].join("")}}),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs");n.readFile(e,function(e,n){if(e)throw fabric.log(e),e;t(n)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&(e instanceof Buffer||e.indexOf("data")===0)?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e?request(e,"binary",r):t&&t.call(n,e)},fabric.loadSVGFromURL=function(e,t,n){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t,n)}):request(e,"",function(e){fabric.loadSVGFromString(e,t,n)})},fabric.loadSVGFromString=function(e,t,n){var r=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(r.documentElement,function(e,n){t&&t(e,n)},n)},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e,function(e){r.filters=e||[],t&&t(r)})})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file +(e,r,t);n+=s,this._renderTextLine("fillText",e,t[r],this._getLeftOffset(),this._getTopOffset()+n,r)}},_renderTextStroke:function(e,t){if(!this.stroke&&!this._skipFillStrokeCheck)return;var n=0;e.save(),this.strokeDashArray&&(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),s&&e.setLineDash(this.strokeDashArray)),e.beginPath();for(var r=0,i=t.length;r-1&&i(this.fontSize*this.lineHeight),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize*this.lineHeight-this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(this.fontSize*this.lineHeight-this.fontSize)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(e,t){if(!this.visible)return;e.save();var n=this.transformMatrix;n&&!this.group&&e.setTransform(n[0],n[1],n[2],n[3],n[4],n[5]),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){var t=n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textAlign:this.textAlign,path:this.path,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=[],n=this.text.split(this._reNewline),r=this._getSVGLeftTopOffsets(n),i=this._getSVGTextAndBg(r.lineTop,r.textLeft,n),s=this._getSVGShadows(r.lineTop,n);return r.textTop+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,this._wrapSVGTextAndBg(t,i,s,r),e?e(t.join("")):t.join("")},_getSVGLeftTopOffsets:function(e){var t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight;return{textLeft:n,textTop:r,lineTop:t}},_wrapSVGTextAndBg:function(e,t,n,r){e.push('',t.textBgRects.join(""),"',n.join(""),t.textSpans.join(""),"","")},_getSVGShadows:function(e,n){var r=[],s,o,u=1;if(!this.shadow||!this._boundaries)return r;for(s=0,o=n.length;s",t.util.string.escapeXml(n[s]),""),u=1}else u++;return r},_getSVGTextAndBg:function(e,t,n){var r=[],i=[],s=1;this._setSVGBg(i);for(var o=0,u=n.length;o",t.util.string.escapeXml(e),"")},_setSVGTextLineBg:function(e,t,n,r){e.push("')},_setSVGBg:function(e){this.backgroundColor&&this._boundaries&&e.push("')},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),function(){var e=fabric.util.object.clone;fabric.IText=fabric.util.createClass(fabric.Text,fabric.Observable,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"#333",cursorDelay:1e3,cursorDuration:600,styles:null,caching:!0,_skipFillStrokeCheck:!0,_reSpace:/\s|\n/,_fontSizeFraction:4,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,_charWidthsCache:{},initialize:function(e,t){this.styles=t?t.styles||{}:{},this.callSuper("initialize",e,t),this.initBehavior(),fabric.IText.instances.push(this),this.__lineWidths={},this.__lineHeights={},this.__lineOffsets={}},isEmptyStyles:function(){if(!this.styles)return!0;var e=this.styles;for(var t in e)for(var n in e[t])for(var r in e[t][n])return!1;return!0},setSelectionStart:function(e){this.selectionStart=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionStart=e)},setSelectionEnd:function(e){this.selectionEnd=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionEnd=e)},getSelectionStyles:function(e,t){if(arguments.length===2){var n=[];for(var r=e;r-1&&this._renderCharDecorationAtOffset(e,n,r+this.fontSize/this._fontSizeFraction,i,0,this.fontSize/20),u.indexOf("line-through")>-1&&this._renderCharDecorationAtOffset(e,n,r+this.fontSize/this._fontSizeFraction,i,o/2,a/20),u.indexOf("overline")>-1&&this._renderCharDecorationAtOffset(e,n,r,i,s-this.fontSize/this._fontSizeFraction,this.fontSize/20)},_renderCharDecorationAtOffset:function(e,t,n,r,i,s){e.fillRect(t,n-i,r,s)},_renderTextLine:function(e,t,n,r,i,s){i+=this.fontSize/4,this.callSuper("_renderTextLine",e,t,n,r,i,s)},_renderTextDecoration:function(e,t){if(this.isEmptyStyles())return this.callSuper("_renderTextDecoration",e,t)},_renderTextLinesBackground:function(e,t){if(!this.textBackgroundColor&&!this.styles)return;e.save(),this.textBackgroundColor&&(e.fillStyle=this.textBackgroundColor);var n=0,r=this.fontSize/this._fontSizeFraction;for(var i=0,s=t.length;in&&(n=s)}return n},_getHeightOfLine:function(e,t,n){n=n||this.text.split(this._reNewline);var r=this._getHeightOfChar(e,n[t][0],t,0),i=n[t],s=i.split("");for(var o=1,u=s.length;or&&(r=a)}return r*this.lineHeight},_getTextHeight:function(e,t){var n=0;for(var r=0,i=t.length;r-1)t++,n--;return e-t},findWordBoundaryRight:function(e){var t=0,n=e;if(this._reSpace.test(this.text.charAt(n)))while(this._reSpace.test(this.text.charAt(n)))t++,n++;while(/\S/.test(this.text.charAt(n))&&n-1)t++,n--;return e-t},findLineBoundaryRight:function(e){var t=0,n=e;while(!/\n/.test(this.text.charAt(n))&&n0&&nr;s?this.removeStyleObject(s,n+1):this.removeStyleObject(this.get2DCursorLocation(n).charIndex===0,n)}this.text=this.text.slice(0,e)+this.text.slice(t)},insertChars:function(e){var t=this.text.slice(this.selectionStart,this.selectionStart+1)==="\n";this.text=this.text.slice(0,this.selectionStart)+e+this.text.slice(this.selectionEnd),this.selectionStart===this.selectionEnd?this.insertStyleObjects(e,t,this.copiedStyles):this.selectionEnd-this.selectionStart>1,this.selectionStart+=e.length,this.selectionEnd=this.selectionStart,this.canvas&&this.canvas.renderAll().renderAll(),this.setCoords(),this.fire("changed"),this.canvas&&this.canvas.fire("text:changed",{target:this})},insertNewlineStyleObject:function(t,n,r){this.shiftLineStyles(t,1),this.styles[t+1]||(this.styles[t+1]={});var i=this.styles[t][n-1],s={};if(r)s[0]=e(i),this.styles[t+1]=s;else{for(var o in this.styles[t])parseInt(o,10)>=n&&(s[parseInt(o,10)-n]=this.styles[t][o],delete this.styles[t][o]);this.styles[t+1]=s}},insertCharStyleObject:function(t,n,r){var i=this.styles[t],s=e(i);n===0&&!r&&(n=1);for(var o in s){var u=parseInt(o,10);u>=n&&(i[u+1]=s[u])}this.styles[t][n]=r||e(i[n-1])},insertStyleObjects:function(e,t,n){if(this.isEmptyStyles())return;var r=this.get2DCursorLocation(),i=r.lineIndex,s=r.charIndex;this.styles[i]||(this.styles[i]={}),e==="\n"?this.insertNewlineStyleObject(i,s,t):n?this._insertStyles(n):this.insertCharStyleObject(i,s)},_insertStyles:function(e){for(var t=0,n=e.length;tt&&(this.styles[s+n]=r[s])}},removeStyleObject:function(t,n){var r=this.get2DCursorLocation(n),i=r.lineIndex,s=r.charIndex;if(t){var o=this.text.split(this._reNewline),u=o[i-1],a=u?u.length:0;this.styles[i-1]||(this.styles[i-1]={});for(s in this.styles[i])this.styles[i-1][parseInt(s,10)+a]=this.styles[i][s];this.shiftLineStyles(i,-1)}else{var f=this.styles[i];if(f){var l=this.selectionStart===this.selectionEnd?-1:0;delete f[s+l]}var c=e(f);for(var h in c){var p=parseInt(h,10);p>=s&&p!==0&&(f[p-1]=c[p],delete f[p])}}},insertNewline:function(){this.insertChars("\n")}})}(),fabric.util.object.extend(fabric.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+(new Date),this.__lastLastClickTime=+(new Date),this.lastPointer={},this.on("mousedown",this.onMouseDown.bind(this))},onMouseDown:function(e){this.__newClickTime=+(new Date);var t=this.canvas.getPointer(e.e);this.isTripleClick(t)?(this.fire("tripleclick",e),this._stopEvent(e.e)):this.isDoubleClick(t)&&(this.fire("dblclick",e),this._stopEvent(e.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=t},isDoubleClick:function(e){return this.__newClickTime-this.__lastClickTime<500&&this.__lastPointer.x===e.x&&this.__lastPointer.y===e.y},isTripleClick:function(e){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===e.x&&this.__lastPointer.y===e.y},_stopEvent:function(e){e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation()},initCursorSelectionHandlers:function(){this.initSelectedHandler(),this.initMousedownHandler(),this.initMousemoveHandler(),this.initMouseupHandler(),this.initClicks()},initClicks:function(){this.on("dblclick",function(e){this.selectWord(this.getSelectionStartFromPointer(e.e))}),this.on("tripleclick",function(e){this.selectLine(this.getSelectionStartFromPointer(e.e))})},initMousedownHandler:function(){this.on("mousedown",function(e){var t=this.canvas.getPointer(e.e);this.__mousedownX=t.x,this.__mousedownY=t.y,this.__isMousedown=!0,this.hiddenTextarea&&this.canvas&&this.canvas.wrapperEl.appendChild(this.hiddenTextarea),this.isEditing&&(this.setCursorByClick(e.e),this.__selectionStartOnMouseDown=this.selectionStart)})},initMousemoveHandler:function(){this.on("mousemove",function(e){if(!this.__isMousedown||!this.isEditing)return;var t=this.getSelectionStartFromPointer(e.e);t>=this.__selectionStartOnMouseDown?(this.setSelectionStart(this.__selectionStartOnMouseDown),this.setSelectionEnd(t)):(this.setSelectionStart(t),this.setSelectionEnd(this.__selectionStartOnMouseDown))})},_isObjectMoved:function(e){var t=this.canvas.getPointer(e);return this.__mousedownX!==t.x||this.__mousedownY!==t.y},initMouseupHandler:function(){this.on("mouseup",function(e){this.__isMousedown=!1;if(this._isObjectMoved(e.e))return;this.selected&&this.enterEditing()})},setCursorByClick:function(e){var t=this.getSelectionStartFromPointer(e);e.shiftKey?ts?0:1,a=r+u;return this.flipX&&(a=i-a),a>this.text.length&&(a=this.text.length),a}}),fabric.util.object.extend(fabric.IText.prototype,{initKeyHandlers:function(){fabric.util.addListener(fabric.document,"keydown",this.onKeyDown.bind(this)),fabric.util.addListener(fabric.document,"keypress",this.onKeyPress.bind(this))},initHiddenTextarea:function(){this.hiddenTextarea=fabric.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.style.cssText="position: absolute; top: 0; left: -9999px",fabric.document.body.appendChild(this.hiddenTextarea)},_keysMap:{8:"removeChars",13:"insertNewline",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown",46:"forwardDelete"},_ctrlKeysMap:{65:"selectAll",67:"copy",86:"paste",88:"cut"},onKeyDown:function(e){if(!this.isEditing)return;if(e.keyCode in this._keysMap)this[this._keysMap[e.keyCode]](e);else{if(!(e.keyCode in this._ctrlKeysMap&&(e.ctrlKey||e.metaKey)))return;this[this._ctrlKeysMap[e.keyCode]](e)}e.preventDefault(),e.stopPropagation(),this.canvas&&this.canvas.renderAll()},forwardDelete:function(e){this.selectionStart===this.selectionEnd&&this.moveCursorRight(e),this.removeChars(e)},copy:function(){var e=this.getSelectedText();this.copiedText=e,this.copiedStyles=this.getSelectionStyles(this.selectionStart,this.selectionEnd)},paste:function(){this.copiedText&&this.insertChars(this.copiedText)},cut:function(e){this.copy(),this.removeChars(e)},onKeyPress:function(e){if(!this.isEditing||e.metaKey||e.ctrlKey||e.keyCode===8||e.keyCode===13)return;this.insertChars(String.fromCharCode(e.which)),e.preventDefault(),e.stopPropagation()},getDownCursorOffset:function(e,t){var n=t?this.selectionEnd:this.selectionStart,r=this.text.split(this._reNewline),i,s,o=this.text.slice(0,n),u=this.text.slice(n),a=o.slice(o.lastIndexOf("\n")+1),f=u.match(/(.*)\n?/)[1],l=(u.match(/.*\n(.*)\n?/)||{})[1]||"",c=this.get2DCursorLocation(n);if(c.lineIndex===r.length-1||e.metaKey)return this.text.length-n;var h=this._getWidthOfLine(this.ctx,c.lineIndex,r);s=this._getLineLeftOffset(h);var p=s,d=c.lineIndex;for(var v=0,m=a.length;vn){f=!0;var d=u-p,v=u,m=Math.abs(d-n),g=Math.abs(v-n);a=gthis.text.length&&(this.selectionStart=this.text.length),this.selectionEnd=this.selectionStart},moveCursorDownWithShift:function(e){if(this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd){this.selectionStart+=e,this._selectionDirection="left";return}this._selectionDirection="right",this.selectionEnd+=e,this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length)},getUpCursorOffset:function(e,t){var n=t?this.selectionEnd:this.selectionStart,r=this.get2DCursorLocation(n);if(r.lineIndex===0||e.metaKey)return n;var i=this.text.slice(0,n),s=i.slice(i.lastIndexOf("\n")+1),o=(i.match(/\n?(.*)\n.*$/)||{})[1]||"",u=this.text.split(this._reNewline),a,f,l=this._getWidthOfLine(this.ctx,r.lineIndex,u);f=this._getLineLeftOffset(l);var c=f,h=r.lineIndex;for(var p=0,d=s.length;pn){f=!0;var d=u-p,v=u,m=Math.abs(d-n),g=Math.abs(v-n);a=g=this.text.length&&this.selectionEnd>=this.text.length)return;this.abortCursorAnimation(),this._currentCursorOpacity=1,e.shiftKey?this.moveCursorRightWithShift(e):this.moveCursorRightWithoutShift(e),this.initDelayedCursor()},moveCursorRightWithShift:function(e){this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd?this._moveRight(e,"selectionStart"):(this._selectionDirection="right",this._moveRight(e,"selectionEnd"),this.text.charAt(this.selectionEnd-1)==="\n"&&this.selectionEnd++,this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length))},moveCursorRightWithoutShift:function(e){this._selectionDirection="right",this.selectionStart===this.selectionEnd?(this._moveRight(e,"selectionStart"),this.selectionEnd=this.selectionStart):(this.selectionEnd+=this.getNumNewLinesInSelectedText(),this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length),this.selectionStart=this.selectionEnd)},removeChars:function(e){this.selectionStart===this.selectionEnd?this._removeCharsNearCursor(e):this._removeCharsFromTo(this.selectionStart,this.selectionEnd),this.selectionEnd=this.selectionStart,this._removeExtraneousStyles(),this.canvas&&this.canvas.renderAll().renderAll(),this.setCoords(),this.fire("changed"),this.canvas&&this.canvas.fire("text:changed",{target:this})},_removeCharsNearCursor:function(e){if(this.selectionStart!==0)if(e.metaKey){var t=this.findLineBoundaryLeft(this.selectionStart);this._removeCharsFromTo(t,this.selectionStart),this.selectionStart=t}else if(e.altKey){var n=this.findWordBoundaryLeft(this.selectionStart);this._removeCharsFromTo(n,this.selectionStart),this.selectionStart=n}else{var r=this.text.slice(this.selectionStart-1,this.selectionStart)==="\n";this.removeStyleObject(r),this.selectionStart--,this.text=this.text.slice(0,this.selectionStart)+this.text.slice(this.selectionStart+1)}}}),fabric.util.object.extend(fabric.IText.prototype,{_setSVGTextLineText:function(e,t,n,r,i,s){this.styles[t]?this._setSVGTextLineChars(e,t,n,r,i,s):this.callSuper("_setSVGTextLineText",e,t,n,r,i)},_setSVGTextLineChars:function(e,t,n,r,i,s){var o=t===0||this.useNative?"y":"dy",u=e.split(""),a=0,f=this._getSVGLineLeftOffset(t),l=this._getSVGLineTopOffset(t),c=this._getHeightOfLine(this.ctx,t);for(var h=0,p=u.length;h'].join("")},_createTextCharSpan:function(e,t,n,r,i,s){var o=this.getSvgStyles.call(fabric.util.object.extend({visible:!0,fill:this.fill,stroke:this.stroke,type:"text"},t));return['',fabric.util.string.escapeXml(e),""].join("")}}),function(){function request(e,t,n){var r=URL.parse(e);r.port||(r.port=r.protocol.indexOf("https:")===0?443:80);var i=r.port===443?HTTPS:HTTP,s=i.request({hostname:r.hostname,port:r.port,path:r.path,method:"GET"},function(e){var r="";t&&e.setEncoding(t),e.on("end",function(){n(r)}),e.on("data",function(t){e.statusCode===200&&(r+=t)})});s.on("error",function(e){e.errno===process.ECONNREFUSED?fabric.log("ECONNREFUSED: connection refused to "+r.hostname+":"+r.port):fabric.log(e.message)}),s.end()}function request_fs(e,t){var n=require("fs");n.readFile(e,function(e,n){if(e)throw fabric.log(e),e;t(n)})}if(typeof document!="undefined"&&typeof window!="undefined")return;var DOMParser=(new require("xmldom")).DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;fabric.util.loadImage=function(e,t,n){var r=function(r){i.src=new Buffer(r,"binary"),i._src=e,t&&t.call(n,i)},i=new Image;e&&(e instanceof Buffer||e.indexOf("data")===0)?(i.src=i._src=e,t&&t.call(n,i)):e&&e.indexOf("http")!==0?request_fs(e,r):e?request(e,"binary",r):t&&t.call(n,e)},fabric.loadSVGFromURL=function(e,t,n){e=e.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim(),e.indexOf("http")!==0?request_fs(e,function(e){fabric.loadSVGFromString(e,t,n)}):request(e,"",function(e){fabric.loadSVGFromString(e,t,n)})},fabric.loadSVGFromString=function(e,t,n){var r=(new DOMParser).parseFromString(e);fabric.parseSVGDocument(r.documentElement,function(e,n){t&&t(e,n)},n)},fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body),callback&&callback()})},fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){var r=new fabric.Image(n);r._initConfig(e),r._initFilters(e,function(e){r.filters=e||[],t&&t(r)})})},fabric.createCanvasForNode=function(e,t){var n=fabric.document.createElement("canvas"),r=new Canvas(e||600,t||600);n.style={},n.width=r.width,n.height=r.height;var i=fabric.Canvas||fabric.StaticCanvas,s=new i(n);return s.contextContainer=r.getContext("2d"),s.nodeCanvas=r,s.Font=Canvas.Font,s},fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(e){return this.nodeCanvas.createJPEGStream(e)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(e){return origSetWidth.call(this,e),this.nodeCanvas.width=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth);var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(e){return origSetHeight.call(this,e),this.nodeCanvas.height=e,this},fabric.Canvas&&(fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight)}(); \ No newline at end of file diff --git a/dist/fabric.min.js.gz b/dist/fabric.min.js.gz index 264aa91d39ff6c949b24e0fed7959bce8aa68b74..2ec257efbec7a5746fb018b358262969668ea142 100644 GIT binary patch delta 26331 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 delta 26322 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 1) { // TODO: replace styles properly - console.log('replacing MORE than 1 char'); + // console.log('replacing MORE than 1 char'); } this.selectionStart += _chars.length;