=E){continue}N=c(1000*j(K-D.x));if(!k[N]){k[N]={}}for(var J=A.y-o;J<=A.y+o;J++){if(J<0||J>=r){continue}M=c(1000*j(J-D.y));if(!k[N][M]){k[N][M]=t(g(d(N*z,2)+d(M*w,2))/1000)}L=k[N][M];if(L>0){Q=(J*E+K)*4;O+=L;G+=L*C[Q];I+=L*C[Q+1];P+=L*C[Q+2];H+=L*C[Q+3]}}}Q=(R*p+S)*4;B[Q]=G/O;B[Q+1]=I/O;B[Q+2]=P/O;B[Q+3]=H/O}if(++S1&&z<-1){continue}F=2*z*z*z-3*z*z+1;if(F>0){C=4*(r+H*N);y+=F*P[C+3];u+=F;if(P[C+3]<255){F=F*P[C+3]/250}k+=F*P[C];s+=F*P[C+1];x+=F*P[C+2];M+=F}}}q[L]=k/M;q[L+1]=s/M;q[L+2]=x/M;q[L+3]=y/u}}return O}});b.Image.filters.Resize.fromObject=function(){return new b.Image.filters.Resize()}})(typeof exports!=="undefined"?exports:this);(function(b){var c=b.fabric||(b.fabric={}),g=c.util.object.extend,f=c.util.object.clone,a=c.util.toFixed,d=c.StaticCanvas.supports("setLineDash");if(c.Text){c.warn("fabric.Text is already defined");return}var e=c.Object.prototype.stateProperties.concat();e.push("fontFamily","fontWeight","fontSize","text","textDecoration","textAlign","fontStyle","lineHeight","textBackgroundColor","useNative","path");c.Text=c.util.createClass(c.Object,{_dimensionAffectingProps:{fontSize:true,fontWeight:true,fontFamily:true,textDecoration:true,fontStyle:true,lineHeight:true,stroke:true,strokeWidth:true,text:true},_reNewline:/\r?\n/,type:"text",fontSize:40,fontWeight:"normal",fontFamily:"Times New Roman",textDecoration:"",textAlign:"left",fontStyle:"",lineHeight:1.3,textBackgroundColor:"",path:null,useNative:true,stateProperties:e,stroke:null,shadow:null,initialize:function(i,h){h=h||{};this.text=i;this.__skipDimension=true;this.setOptions(h);this.__skipDimension=false;this._initDimensions()},_initDimensions:function(){if(this.__skipDimension){return}var h=c.util.createCanvasElement();this._render(h.getContext("2d"))},toString:function(){return"#'},_render:function(h){if(typeof Cufon==="undefined"||this.useNative===true){this._renderViaNative(h)}else{this._renderViaCufon(h)}},_renderViaNative:function(h){var i=this.text.split(this._reNewline);this._setTextStyles(h);this.width=this._getTextWidth(h,i);this.height=this._getTextHeight(h,i);this.clipTo&&c.util.clipContext(this,h);this._renderTextBackground(h,i);this._translateForTextAlign(h);this._renderText(h,i);if(this.textAlign!=="left"&&this.textAlign!=="justify"){h.restore()}this._renderTextDecoration(h,i);this.clipTo&&h.restore();this._setBoundaries(h,i);this._totalLineHeight=0},_renderText:function(h,i){h.save();this._setOpacity(h);this._setShadow(h);this._setupCompositeOperation(h);this._renderTextFill(h,i);this._renderTextStroke(h,i);this._restoreCompositeOperation(h);this._removeShadow(h);h.restore()},_translateForTextAlign:function(h){if(this.textAlign!=="left"&&this.textAlign!=="justify"){h.save();h.translate(this.textAlign==="center"?(this.width/2):this.width,0)}},_setBoundaries:function(k,m){this._boundaries=[];for(var l=0,j=m.length;lm){m=n}}return m},_renderChars:function(l,h,i,k,j){h[l](i,k,j)},_renderTextLine:function(h,v,x,k,s,u){s-=this.fontSize/4;if(this.textAlign!=="justify"){this._renderChars(h,v,x,k,s,u);return}var p=v.measureText(x).width,o=this.width;if(o>p){var r=x.split(/\s+/),w=v.measureText(x.replace(/\s+/g,"")).width,n=o-w,m=r.length-1,t=n/m,j=0;for(var l=0,q=r.length;l-1){h(this.fontSize*this.lineHeight)}if(this.textDecoration.indexOf("line-through")>-1){h(this.fontSize*this.lineHeight-this.fontSize/2)}if(this.textDecoration.indexOf("overline")>-1){h(this.fontSize*this.lineHeight-this.fontSize)}},_getFontDeclaration:function(){return[(c.isLikelyNode?this.fontWeight:this.fontStyle),(c.isLikelyNode?this.fontStyle:this.fontWeight),this.fontSize+"px",(c.isLikelyNode?('"'+this.fontFamily+'"'):this.fontFamily)].join(" ")},render:function(i,j){if(!this.visible){return}i.save();if(!j){this.transform(i)}var h=this.group&&this.group.type==="path-group";if(h){i.translate(-this.group.width/2,-this.group.height/2)}if(this.transformMatrix){i.transform.apply(i,this.transformMatrix)}if(h){i.translate(this.left,this.top)}this._render(i);i.restore()},toObject:function(i){var h=g(this.callSuper("toObject",i),{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});if(!this.includeDefaultValues){this._removeDefaultValues(h)}return h},toSVG:function(h){var i=[],k=this.text.split(this._reNewline),l=this._getSVGLeftTopOffsets(k),j=this._getSVGTextAndBg(l.lineTop,l.textLeft,k),m=this._getSVGShadows(l.lineTop,k);l.textTop+=(this._fontAscent?((this._fontAscent/5)*this.lineHeight):0);this._wrapSVGTextAndBg(i,j,m,l);return h?h(i.join("")):i.join("")},_getSVGLeftTopOffsets:function(k){var j=this.useNative?this.fontSize*this.lineHeight:(-this._fontAscent-((this._fontAscent/5)*this.lineHeight)),i=-(this.width/2),h=this.useNative?(this.fontSize*this.lineHeight-0.25*this.fontSize):(this.height/2)-(k.length*this.fontSize)-this._totalLineHeight;return{textLeft:i+(this.group&&this.group.type==="path-group"?this.left:0),textTop:h+(this.group&&this.group.type==="path-group"?this.top:0),lineTop:j}},_wrapSVGTextAndBg:function(h,i,k,j){h.push('\n',i.textBgRects.join(""),"',k.join(""),i.textSpans.join(""),"\n","\n")},_getSVGShadows:function(l,k){var o=[],j,h,n=1;if(!this.shadow||!this._boundaries){return o}for(j=0,h=k.length;j",c.util.string.escapeXml(k[j]),"");n=1}else{n++}}return o},_getSVGTextAndBg:function(m,j,l){var p=[],n=[],o=1;this._setSVGBg(n);for(var k=0,h=l.length;k",c.util.string.escapeXml(j),"")},_setSVGTextLineBg:function(l,j,h,k){l.push("\n')},_setSVGBg:function(h){if(this.backgroundColor&&this._boundaries){h.push("')}},_getFillAttributes:function(h){var i=(h&&typeof h==="string")?new c.Color(h):"";if(!i||!i.getSource()||i.getAlpha()===1){return'fill="'+h+'"'}return'opacity="'+i.getAlpha()+'" fill="'+i.setAlpha(1).toRgb()+'"'},_set:function(h,i){if(h==="fontFamily"&&this.path){this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+i+"$3")}this.callSuper("_set",h,i);if(h in this._dimensionAffectingProps){this._initDimensions();this.setCoords()}},complexity:function(){return 1}});c.Text.ATTRIBUTE_NAMES=c.SHARED_ATTRIBUTES.concat("x y dx dy font-family font-style font-weight font-size text-decoration text-anchor".split(" "));c.Text.DEFAULT_SVG_FONT_SIZE=16;c.Text.fromElement=function(j,i){if(!j){return null}var k=c.parseAttributes(j,c.Text.ATTRIBUTE_NAMES);i=c.util.object.extend((i?c.util.object.clone(i):{}),k);i.top=i.top||0;i.left=i.left||0;if("dx" in k){i.left+=k.dx}if("dy" in k){i.top+=k.dy}if(!("fontSize" in i)){i.fontSize=c.Text.DEFAULT_SVG_FONT_SIZE}if(!i.originX){i.originX="left"}i.top+=i.fontSize/4;var l=new c.Text(j.textContent,i),h=0;if(l.originX==="left"){h=l.getWidth()/2}if(l.originX==="right"){h=-l.getWidth()/2}l.set({left:l.getLeft()+h,top:l.getTop()-l.getHeight()/2});return l};c.Text.fromObject=function(h){return new c.Text(h.text,f(h))};c.util.createAccessors(c.Text)})(typeof exports!=="undefined"?exports:this);(function(){var a=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:false,editable:true,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"#333",cursorDelay:1000,cursorDuration:600,styles:null,caching:true,_skipFillStrokeCheck:true,_reSpace:/\s|\n/,_fontSizeFraction:4,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:false,_charWidthsCache:{},initialize:function(c,b){this.styles=b?(b.styles||{}):{};this.callSuper("initialize",c,b);this.initBehavior();fabric.IText.instances.push(this);this.__lineWidths={};this.__lineHeights={};this.__lineOffsets={}},isEmptyStyles:function(){if(!this.styles){return true}var d=this.styles;for(var e in d){for(var c in d[e]){for(var b in d[e][c]){return false}}}return true},setSelectionStart:function(b){if(this.selectionStart!==b){this.fire("selection:changed");this.canvas&&this.canvas.fire("text:selection:changed",{target:this})}this.selectionStart=b;this.hiddenTextarea&&(this.hiddenTextarea.selectionStart=b)},setSelectionEnd:function(b){if(this.selectionEnd!==b){this.fire("selection:changed");this.canvas&&this.canvas.fire("text:selection:changed",{target:this})}this.selectionEnd=b;this.hiddenTextarea&&(this.hiddenTextarea.selectionEnd=b)},getSelectionStyles:function(f,d){if(arguments.length===2){var c=[];for(var b=f;b=b.charIndex&&(k!==d||hq&&k-1){this._renderCharDecorationAtOffset(h,d,f+(this.fontSize/this._fontSizeFraction),e,0,this.fontSize/20)}if(j.indexOf("line-through")>-1){this._renderCharDecorationAtOffset(h,d,f+(this.fontSize/this._fontSizeFraction),e,c/2,i/20)}if(j.indexOf("overline")>-1){this._renderCharDecorationAtOffset(h,d,f,e,g-(this.fontSize/this._fontSizeFraction),this.fontSize/20)}},_renderCharDecorationAtOffset:function(c,f,e,b,g,d){c.fillRect(f,e-g,b,d)},_renderTextLine:function(g,c,b,e,d,f){d+=this.fontSize/4;this.callSuper("_renderTextLine",g,c,b,e,d,f)},_renderTextDecoration:function(b,c){if(this.isEmptyStyles()){return this.callSuper("_renderTextDecoration",b,c)}},_renderTextLinesBackground:function(o,g){if(!this.textBackgroundColor&&!this.styles){return}o.save();if(this.textBackgroundColor){o.fillStyle=this.textBackgroundColor}var l=0,b=this.fontSize/this._fontSizeFraction;for(var e=0,k=g.length;ef){f=g}}return f},_getHeightOfLine:function(j,h,c){c=c||this.text.split(this._reNewline);var g=this._getHeightOfChar(j,c[h][0],h,0),k=c[h],f=k.split("");for(var b=1,e=f.length;bg){g=d}}return g*this.lineHeight},_getTextHeight:function(d,f){var c=0;for(var e=0,b=f.length;e-1){d++;b--}return c-d},findWordBoundaryRight:function(c){var d=0,b=c;if(this._reSpace.test(this.text.charAt(b))){while(this._reSpace.test(this.text.charAt(b))){d++;b++}}while(/\S/.test(this.text.charAt(b))&&b-1){d++;b--}return c-d},findLineBoundaryRight:function(c){var d=0,b=c;while(!/\n/.test(this.text.charAt(b))&&b0&ⅆif(f){this.removeStyleObject(f,e+1)}else{this.removeStyleObject(this.get2DCursorLocation(e).charIndex===0,e)}}this.text=this.text.slice(0,g)+this.text.slice(b)},insertChars:function(b){var c=this.text.slice(this.selectionStart,this.selectionStart+1)==="\n";this.text=this.text.slice(0,this.selectionStart)+b+this.text.slice(this.selectionEnd);if(this.selectionStart===this.selectionEnd){this.insertStyleObjects(b,c,this.copiedStyles)}this.selectionStart+=b.length;this.selectionEnd=this.selectionStart;if(this.canvas){this.canvas.renderAll().renderAll()}this.setCoords();this.fire("changed");this.canvas&&this.canvas.fire("text:changed",{target:this})},insertNewlineStyleObject:function(g,f,d){this.shiftLineStyles(g,+1);if(!this.styles[g+1]){this.styles[g+1]={}}var b=this.styles[g][f-1],e={};if(d){e[0]=a(b);this.styles[g+1]=e}else{for(var c in this.styles[g]){if(parseInt(c,10)>=f){e[parseInt(c,10)-f]=this.styles[g][c];delete this.styles[g][c]}}this.styles[g+1]=e}},insertCharStyleObject:function(h,g,e){var c=this.styles[h],f=a(c);if(g===0&&!e){g=1}for(var b in f){var d=parseInt(b,10);if(d>=g){c[d+1]=f[d]}}this.styles[h][g]=e||a(c[g-1])},insertStyleObjects:function(b,d,e){var c=this.get2DCursorLocation(),g=c.lineIndex,f=c.charIndex;if(!this.styles[g]){this.styles[g]={}}if(b==="\n"){this.insertNewlineStyleObject(g,f,d)}else{if(e){this._insertStyles(e)}else{this.insertCharStyleObject(g,f)}}},_insertStyles:function(e){for(var d=0,b=e.length;df){this.styles[c+e]=d[c]}}},removeStyleObject:function(d,l){var m=this.get2DCursorLocation(l),o=m.lineIndex,b=m.charIndex;if(d){var k=this.text.split(this._reNewline),h=k[o-1],n=h?h.length:0;if(!this.styles[o-1]){this.styles[o-1]={}}for(b in this.styles[o]){this.styles[o-1][parseInt(b,10)+n]=this.styles[o][b]}this.shiftLineStyles(o,-1)}else{var j=this.styles[o];if(j){var f=this.selectionStart===this.selectionEnd?-1:0;delete j[b+f]}var c=a(j);for(var g in c){var e=parseInt(g,10);if(e>=b&&e!==0){j[e-1]=c[e];delete j[e]}}}},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(a){this.__newClickTime=+new Date();var b=this.canvas.getPointer(a.e);if(this.isTripleClick(b)){this.fire("tripleclick",a);this._stopEvent(a.e)}else{if(this.isDoubleClick(b)){this.fire("dblclick",a);this._stopEvent(a.e)}}this.__lastLastClickTime=this.__lastClickTime;this.__lastClickTime=this.__newClickTime;this.__lastPointer=b;this.__lastIsEditing=this.isEditing;this.__lastSelected=this.selected},isDoubleClick:function(a){return this.__newClickTime-this.__lastClickTime<500&&this.__lastPointer.x===a.x&&this.__lastPointer.y===a.y&&this.__lastIsEditing},isTripleClick:function(a){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===a.x&&this.__lastPointer.y===a.y},_stopEvent:function(a){a.preventDefault&&a.preventDefault();a.stopPropagation&&a.stopPropagation()},initCursorSelectionHandlers:function(){this.initSelectedHandler();this.initMousedownHandler();this.initMousemoveHandler();this.initMouseupHandler();this.initClicks()},initClicks:function(){this.on("dblclick",function(a){this.selectWord(this.getSelectionStartFromPointer(a.e))});this.on("tripleclick",function(a){this.selectLine(this.getSelectionStartFromPointer(a.e))})},initMousedownHandler:function(){this.on("mousedown",function(a){var b=this.canvas.getPointer(a.e);this.__mousedownX=b.x;this.__mousedownY=b.y;this.__isMousedown=true;if(this.hiddenTextarea&&this.canvas){this.canvas.wrapperEl.appendChild(this.hiddenTextarea)}if(this.selected){this.setCursorByClick(a.e)}if(this.isEditing){this.__selectionStartOnMouseDown=this.selectionStart;this.initDelayedCursor(true)}})},initMousemoveHandler:function(){this.on("mousemove",function(b){if(!this.__isMousedown||!this.isEditing){return}var a=this.getSelectionStartFromPointer(b.e);if(a>=this.__selectionStartOnMouseDown){this.setSelectionStart(this.__selectionStartOnMouseDown);this.setSelectionEnd(a)}else{this.setSelectionStart(a);this.setSelectionEnd(this.__selectionStartOnMouseDown)}})},_isObjectMoved:function(a){var b=this.canvas.getPointer(a);return this.__mousedownX!==b.x||this.__mousedownY!==b.y},initMouseupHandler:function(){this.on("mouseup",function(a){this.__isMousedown=false;if(this._isObjectMoved(a.e)){return}if(this.__lastSelected){this.enterEditing();this.initDelayedCursor(true)}this.selected=true})},setCursorByClick:function(b){var a=this.getSelectionStartFromPointer(b);if(b.shiftKey){if(ae?0:1,b=f+c;if(this.flipX){b=i-b}if(b>this.text.length){b=this.text.length}return b}});fabric.util.object.extend(fabric.IText.prototype,{initHiddenTextarea:function(){this.hiddenTextarea=fabric.document.createElement("textarea");this.hiddenTextarea.setAttribute("autocapitalize","off");this.hiddenTextarea.style.cssText="position: fixed; bottom: 20px; left: 0px; opacity: 0; width: 0px; height: 0px; z-index: -999;";fabric.document.body.appendChild(this.hiddenTextarea);fabric.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this));fabric.util.addListener(this.hiddenTextarea,"keypress",this.onKeyPress.bind(this));fabric.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this));fabric.util.addListener(this.hiddenTextarea,"paste",this.paste.bind(this));if(!this._clickHandlerInitialized&&this.canvas){fabric.util.addListener(this.canvas.upperCanvasEl,"click",this.onClick.bind(this));this._clickHandlerInitialized=true}},_keysMap:{8:"removeChars",9:"exitEditing",27:"exitEditing",13:"insertNewline",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorRight",36:"moveCursorLeft",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown",46:"forwardDelete"},_ctrlKeysMap:{65:"selectAll",88:"cut"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(a){if(!this.isEditing){return}if(a.keyCode in this._keysMap){this[this._keysMap[a.keyCode]](a)}else{if((a.keyCode in this._ctrlKeysMap)&&(a.ctrlKey||a.metaKey)){this[this._ctrlKeysMap[a.keyCode]](a)}else{return}}a.stopImmediatePropagation();a.preventDefault();this.canvas&&this.canvas.renderAll()},forwardDelete:function(a){if(this.selectionStart===this.selectionEnd){this.moveCursorRight(a)}this.removeChars(a)},copy:function(a){var c=this.getSelectedText(),b=this._getClipboardData(a);if(b){b.setData("text",c)}this.copiedText=c;this.copiedStyles=this.getSelectionStyles(this.selectionStart,this.selectionEnd)},paste:function(b){var a=null,c=this._getClipboardData(b);if(c){a=c.getData("text")}else{a=this.copiedText}if(a){this.insertChars(a)}},cut:function(a){if(this.selectionStart===this.selectionEnd){return}this.copy();this.removeChars(a)},_getClipboardData:function(a){return a&&(a.clipboardData||fabric.window.clipboardData)},onKeyPress:function(a){if(!this.isEditing||a.metaKey||a.ctrlKey){return}if(a.which!==0){this.insertChars(String.fromCharCode(a.which))}a.stopPropagation()},getDownCursorOffset:function(s,a){var t=a?this.selectionEnd:this.selectionStart,l=this.text.split(this._reNewline),j,k,h=this.text.slice(0,t),g=this.text.slice(t),f=h.slice(h.lastIndexOf("\n")+1),c=g.match(/(.*)\n?/)[1],b=(g.match(/.*\n(.*)\n?/)||{})[1]||"",d=this.get2DCursorLocation(t);if(d.lineIndex===l.length-1||s.metaKey||s.keyCode===34){return this.text.length-t}var n=this._getWidthOfLine(this.ctx,d.lineIndex,l);k=this._getLineLeftOffset(n);var r=k,o=d.lineIndex;for(var p=0,q=f.length;pr){d=true;var i=a-n,s=a,c=Math.abs(i-r),f=Math.abs(s-r);m=fthis.text.length){this.selectionStart=this.text.length}this.selectionEnd=this.selectionStart;this.fire("selection:changed");this.canvas&&this.canvas.fire("text:selection:changed",{target:this})},swapSelectionPoints:function(){var a=this.selectionEnd;this.selectionEnd=this.selectionStart;this.selectionStart=a},moveCursorDownWithShift:function(a){if(this.selectionEnd===this.selectionStart){this._selectionDirection="right"}var b=this._selectionDirection==="right"?"selectionEnd":"selectionStart";this[b]+=a;if(this.selectionEndthis.text.length){this.selectionEnd=this.text.length}this.fire("selection:changed");this.canvas&&this.canvas.fire("text:selection:changed",{target:this})},getUpCursorOffset:function(l,p){var f=p?this.selectionEnd:this.selectionStart,o=this.get2DCursorLocation(f);if(o.lineIndex===0||l.metaKey||l.keyCode===33){return f}var c=this.text.slice(0,f),m=c.slice(c.lastIndexOf("\n")+1),g=(c.match(/\n?(.*)\n.*$/)||{})[1]||"",j=this.text.split(this._reNewline),q,a=this._getWidthOfLine(this.ctx,o.lineIndex,j),h=this._getLineLeftOffset(a),b=h,r=o.lineIndex;for(var d=0,k=m.length;dr){d=true;var l=c-o,s=c,b=Math.abs(l-r),h=Math.abs(s-r);a=h=this.text.length&&this.selectionEnd>=this.text.length){return}this.abortCursorAnimation();this._currentCursorOpacity=1;if(a.shiftKey){this.moveCursorRightWithShift(a)}else{this.moveCursorRightWithoutShift(a)}this.initDelayedCursor()},moveCursorRightWithShift:function(a){if(this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd){this._moveRight(a,"selectionStart")}else{this._selectionDirection="right";this._moveRight(a,"selectionEnd");if(this.text.charAt(this.selectionEnd-1)==="\n"){this.selectionEnd++}if(this.selectionEnd>this.text.length){this.selectionEnd=this.text.length}}this.fire("selection:changed");this.canvas&&this.canvas.fire("text:selection:changed",{target:this})},moveCursorRightWithoutShift:function(a){this._selectionDirection="right";if(this.selectionStart===this.selectionEnd){this._moveRight(a,"selectionStart");this.selectionEnd=this.selectionStart}else{this.selectionEnd+=this.getNumNewLinesInSelectedText();if(this.selectionEnd>this.text.length){this.selectionEnd=this.text.length}this.selectionStart=this.selectionEnd}this.fire("selection:changed");this.canvas&&this.canvas.fire("text:selection:changed",{target:this})},removeChars:function(a){if(this.selectionStart===this.selectionEnd){this._removeCharsNearCursor(a)}else{this._removeCharsFromTo(this.selectionStart,this.selectionEnd)}this.selectionEnd=this.selectionStart;this._removeExtraneousStyles();if(this.canvas){this.canvas.renderAll().renderAll()}this.setCoords();this.fire("changed");this.canvas&&this.canvas.fire("text:changed",{target:this})},_removeCharsNearCursor:function(d){if(this.selectionStart!==0){if(d.metaKey){var a=this.findLineBoundaryLeft(this.selectionStart);this._removeCharsFromTo(a,this.selectionStart);this.selectionStart=a}else{if(d.altKey){var c=this.findWordBoundaryLeft(this.selectionStart);this._removeCharsFromTo(c,this.selectionStart);this.selectionStart=c}else{var b=this.text.slice(this.selectionStart-1,this.selectionStart)==="\n";this.removeStyleObject(b);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(a,f,e,b,d,c){if(!this.styles[f]){this.callSuper("_setSVGTextLineText",a,f,e,b,d)}else{this._setSVGTextLineChars(a,f,e,b,d,c)}},_setSVGTextLineChars:function(a,q,b,n,c,f){var p=q===0||this.useNative?"y":"dy",m=a.split(""),l=0,h=this._getSVGLineLeftOffset(q),e=this._getSVGLineTopOffset(q),d=this._getHeightOfLine(this.ctx,q);for(var g=0,j=m.length;g'].join("")},_createTextCharSpan:function(b,a,g,f,e,d){var c=this.getSvgStyles.call(fabric.util.object.extend({visible:true,fill:this.fill,stroke:this.stroke,type:"text"},a));return['',fabric.util.string.escapeXml(b),""].join("")}});(function(){if(typeof document!=="undefined"&&typeof window!=="undefined"){return}var DOMParser=require("xmldom").DOMParser,URL=require("url"),HTTP=require("http"),HTTPS=require("https"),Canvas=require("canvas"),Image=require("canvas").Image;function request(url,encoding,callback){var oURL=URL.parse(url);if(!oURL.port){oURL.port=(oURL.protocol.indexOf("https:")===0)?443:80}var reqHandler=(oURL.port===443)?HTTPS:HTTP,req=reqHandler.request({hostname:oURL.hostname,port:oURL.port,path:oURL.path,method:"GET"},function(response){var body="";if(encoding){response.setEncoding(encoding)}response.on("end",function(){callback(body)});response.on("data",function(chunk){if(response.statusCode===200){body+=chunk}})});req.on("error",function(err){if(err.errno===process.ECONNREFUSED){fabric.log("ECONNREFUSED: connection refused to "+oURL.hostname+":"+oURL.port)}else{fabric.log(err.message)}});req.end()}function requestFs(path,callback){var fs=require("fs");fs.readFile(path,function(err,data){if(err){fabric.log(err);throw err}else{callback(data)}})}fabric.util.loadImage=function(url,callback,context){function createImageAndCallBack(data){img.src=new Buffer(data,"binary");img._src=url;callback&&callback.call(context,img)}var img=new Image();if(url&&(url instanceof Buffer||url.indexOf("data")===0)){img.src=img._src=url;callback&&callback.call(context,img)}else{if(url&&url.indexOf("http")!==0){requestFs(url,createImageAndCallBack)}else{if(url){request(url,"binary",createImageAndCallBack)}else{callback&&callback.call(context,url)}}}};fabric.loadSVGFromURL=function(url,callback,reviver){url=url.replace(/^\n\s*/,"").replace(/\?.*$/,"").trim();if(url.indexOf("http")!==0){requestFs(url,function(body){fabric.loadSVGFromString(body.toString(),callback,reviver)})}else{request(url,"",function(body){fabric.loadSVGFromString(body,callback,reviver)})}};fabric.loadSVGFromString=function(string,callback,reviver){var doc=new DOMParser().parseFromString(string);fabric.parseSVGDocument(doc.documentElement,function(results,options){callback&&callback(results,options)},reviver)};fabric.util.getScript=function(url,callback){request(url,"",function(body){eval(body);callback&&callback()})};fabric.Image.fromObject=function(object,callback){fabric.util.loadImage(object.src,function(img){var oImg=new fabric.Image(img);oImg._initConfig(object);oImg._initFilters(object,function(filters){oImg.filters=filters||[];callback&&callback(oImg)})})};fabric.createCanvasForNode=function(width,height,options,nodeCanvasOptions){nodeCanvasOptions=nodeCanvasOptions||options;var canvasEl=fabric.document.createElement("canvas"),nodeCanvas=new Canvas(width||600,height||600,nodeCanvasOptions);canvasEl.style={};canvasEl.width=nodeCanvas.width;canvasEl.height=nodeCanvas.height;var FabricCanvas=fabric.Canvas||fabric.StaticCanvas,fabricCanvas=new FabricCanvas(canvasEl,options);fabricCanvas.contextContainer=nodeCanvas.getContext("2d");fabricCanvas.nodeCanvas=nodeCanvas;fabricCanvas.Font=Canvas.Font;return fabricCanvas};fabric.StaticCanvas.prototype.createPNGStream=function(){return this.nodeCanvas.createPNGStream()};fabric.StaticCanvas.prototype.createJPEGStream=function(opts){return this.nodeCanvas.createJPEGStream(opts)};var origSetWidth=fabric.StaticCanvas.prototype.setWidth;fabric.StaticCanvas.prototype.setWidth=function(width,options){origSetWidth.call(this,width,options);this.nodeCanvas.width=width;return this};if(fabric.Canvas){fabric.Canvas.prototype.setWidth=fabric.StaticCanvas.prototype.setWidth}var origSetHeight=fabric.StaticCanvas.prototype.setHeight;fabric.StaticCanvas.prototype.setHeight=function(height,options){origSetHeight.call(this,height,options);this.nodeCanvas.height=height;return this};if(fabric.Canvas){fabric.Canvas.prototype.setHeight=fabric.StaticCanvas.prototype.setHeight}})();window.fabric=fabric;var exports=exports||{};exports.fabric=fabric;if(typeof define==="function"&&define.amd){define([],function(){return fabric})};