From 19230c29020671ebe31405f08e7d8cc3b27dfe1c Mon Sep 17 00:00:00 2001 From: Andrea Bogazzi Date: Mon, 3 Feb 2020 15:32:53 +0100 Subject: [PATCH] Version 3.6.2 --- CHANGELOG.md | 27 ++++++ HEADER.js | 2 +- dist/fabric.js | 47 +++++----- dist/fabric.min.js | 2 +- package.json | 2 +- src/shapes/object.class.js | 13 ++- test/visual/golden/dataurl13.png | Bin 0 -> 341 bytes test/visual/golden/dataurl14.png | Bin 0 -> 343 bytes test/visual/golden/dataurl15.png | Bin 0 -> 354 bytes test/visual/golden/dataurl16.png | Bin 0 -> 381 bytes test/visual/golden/dataurl2.png | Bin 25414 -> 20380 bytes test/visual/golden/dataurl3.png | Bin 30038 -> 29048 bytes .../golden/objectsInActiveSelections.png | Bin 1287 -> 1319 bytes test/visual/toDataURL.js | 88 +++++++++++++++++- 14 files changed, 150 insertions(+), 31 deletions(-) create mode 100644 test/visual/golden/dataurl13.png create mode 100644 test/visual/golden/dataurl14.png create mode 100644 test/visual/golden/dataurl15.png create mode 100644 test/visual/golden/dataurl16.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 18742e5621a..ca382d4b97b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,32 @@ # Changelog +## [4.0.0-beta.5] + +fix(fabric.Object): getObjectScaling takes in account rotation of objects inside groups. [#6118](https://github.com/fabricjs/fabric.js/pull/6118) + +## [4.0.0-beta.4] + +fix(fabric.Group): will draw shadow will call parent method. [#6116](https://github.com/fabricjs/fabric.js/pull/6116) + +## [4.0.0-beta.3] + +fix(controls): control offset rendering code had extras `beginPath` that would clear all but not the last of them [#6114](https://github.com/fabricjs/fabric.js/pull/6114) + +## [4.0.0-beta.2] + +fix(controls): Control.getVisibility will always receive the fabric.Object argument. + +## [4.0.0-beta.1] + +breaking: All your old control code override will not work +breaking: `uniScaleTransform` has been renamed in `uniformScaling`, meaning changed and the default value swapped. The behaviour is unchanged, but now the description and the name match. +breaking: LockScalingFlip with the scaling flip behaviour are missing now, maybe reimplemented later. +breaking: Object.lockUniScaling is removed. Alternatives to get the same identical functionality with less code are being evaluated. +breaking: Canvas.onBeforeScaleRotate is removed, developers need to migrate to the event `before:transform’ + +## [3.6.2] +- fix fabric.Object.toDataURL blurriness on images with odd pixel number [#6131](https://github.com/fabricjs/fabric.js/pull/6131) + ## [3.6.1] - fix(gradient, text): ISSUE-6014 ISSUE-6077 support percentage gradient in text [#6090](https://github.com/fabricjs/fabric.js/pull/6090) - fix(filters): ISSUE-6072 convolution filter is off by one [#6088](https://github.com/fabricjs/fabric.js/pull/6088) diff --git a/HEADER.js b/HEADER.js index 7e8cf675fda..d099017689e 100644 --- a/HEADER.js +++ b/HEADER.js @@ -1,6 +1,6 @@ /*! Fabric.js Copyright 2008-2015, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: '3.6.1' }; +var fabric = fabric || { version: '3.6.2' }; if (typeof exports !== 'undefined') { exports.fabric = fabric; } diff --git a/dist/fabric.js b/dist/fabric.js index 3d17c64105f..9161901105b 100644 --- a/dist/fabric.js +++ b/dist/fabric.js @@ -1,7 +1,7 @@ /* build: `node build.js modules=ALL exclude=gestures,accessors requirejs minifier=uglifyjs` */ /*! Fabric.js Copyright 2008-2015, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: '3.6.1' }; +var fabric = fabric || { version: '3.6.2' }; if (typeof exports !== 'undefined') { exports.fabric = fabric; } @@ -9362,38 +9362,40 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#canvas} * @see {@link fabric.Canvas#initialize} for constructor definition * - * @fires object:modified - * @fires object:rotated - * @fires object:scaled - * @fires object:moved - * @fires object:skewed - * @fires object:rotating - * @fires object:scaling - * @fires object:moving - * @fires object:skewing + * @fires object:modified at the end of a transform or any change when statefull is true + * @fires object:rotated at the end of a rotation transform + * @fires object:scaled at the end of a scale transform + * @fires object:moved at the end of translation transform + * @fires object:skewed at the end of a skew transform + * @fires object:rotating while an object is being rotated from the control + * @fires object:scaling while an object is being scaled by controls + * @fires object:moving while an object is being dragged + * @fires object:skewing while an object is being skewed from the controls * @fires object:selected this event is deprecated. use selection:created * - * @fires before:transform + * @fires before:transform before a transform is is started * @fires before:selection:cleared * @fires selection:cleared * @fires selection:updated * @fires selection:created * - * @fires path:created + * @fires path:created after a drawing operation ends and the path is added * @fires mouse:down * @fires mouse:move * @fires mouse:up - * @fires mouse:down:before - * @fires mouse:move:before - * @fires mouse:up:before + * @fires mouse:down:before on mouse down, before the inner fabric logic runs + * @fires mouse:move:before on mouse move, before the inner fabric logic runs + * @fires mouse:up:before on mouse up, before the inner fabric logic runs * @fires mouse:over * @fires mouse:out - * @fires mouse:dblclick + * @fires mouse:dblclick whenever a native dbl click event fires on the canvas. * * @fires dragover * @fires dragenter * @fires dragleave * @fires drop + * @fires after:render at the end of the render process, receives the context in the callback + * @fires before:render at start the render process, receives the context in the callback * */ fabric.Canvas = fabric.util.createClass(fabric.StaticCanvas, /** @lends fabric.Canvas.prototype */ { @@ -14485,7 +14487,8 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.Stati // skip canvas zoom and calculate with setCoords now. boundingRect = this.getBoundingRect(true, true), shadow = this.shadow, scaling, - shadowOffset = { x: 0, y: 0 }, shadowBlur; + shadowOffset = { x: 0, y: 0 }, shadowBlur, + width, height; if (shadow) { shadowBlur = shadow.blur; @@ -14499,10 +14502,12 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.Stati shadowOffset.x = 2 * Math.round(abs(shadow.offsetX) + shadowBlur) * (abs(scaling.scaleX)); shadowOffset.y = 2 * Math.round(abs(shadow.offsetY) + shadowBlur) * (abs(scaling.scaleY)); } - el.width = boundingRect.width + shadowOffset.x; - el.height = boundingRect.height + shadowOffset.y; - el.width += el.width % 2 ? 2 - el.width % 2 : 0; - el.height += el.height % 2 ? 2 - el.height % 2 : 0; + width = boundingRect.width + shadowOffset.x; + height = boundingRect.height + shadowOffset.y; + // if the current width/height is not an integer + // we need to make it so. + el.width = Math.ceil(width); + el.height = Math.ceil(height); var canvas = new fabric.StaticCanvas(el, { enableRetinaScaling: false, renderOnAddRemove: false, diff --git a/dist/fabric.min.js b/dist/fabric.min.js index 44415fec785..c57dd063e93 100644 --- a/dist/fabric.min.js +++ b/dist/fabric.min.js @@ -1 +1 @@ -var fabric=fabric||{version:"3.6.1"};if("undefined"!=typeof exports?exports.fabric=fabric:"function"==typeof define&&define.amd&&define([],function(){return fabric}),"undefined"!=typeof document&&"undefined"!=typeof window)document instanceof("undefined"!=typeof HTMLDocument?HTMLDocument:Document)?fabric.document=document:fabric.document=document.implementation.createHTMLDocument(""),fabric.window=window;else{var jsdom=require("jsdom"),virtualWindow=new jsdom.JSDOM(decodeURIComponent("%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E"),{features:{FetchExternalResources:["img"]},resources:"usable"}).window;fabric.document=virtualWindow.document,fabric.jsdomImplForWrapper=require("jsdom/lib/jsdom/living/generated/utils").implForWrapper,fabric.nodeCanvas=require("jsdom/lib/jsdom/utils").Canvas,fabric.window=virtualWindow,DOMParser=fabric.window.DOMParser}function resizeCanvasIfNeeded(t){var e=t.targetCanvas,i=e.width,r=e.height,n=t.destinationWidth,s=t.destinationHeight;i===n&&r===s||(e.width=n,e.height=s)}function copyGLTo2DDrawImage(t,e){var i=t.canvas,r=e.targetCanvas,n=r.getContext("2d");n.translate(0,r.height),n.scale(1,-1);var s=i.height-r.height;n.drawImage(i,0,s,r.width,r.height,0,0,r.width,r.height)}function copyGLTo2DPutImageData(t,e){var i=e.targetCanvas.getContext("2d"),r=e.destinationWidth,n=e.destinationHeight,s=r*n*4,o=new Uint8Array(this.imageBuffer,0,s),a=new Uint8ClampedArray(this.imageBuffer,0,s);t.readPixels(0,0,r,n,t.RGBA,t.UNSIGNED_BYTE,o);var h=new ImageData(a,r,n);i.putImageData(h,0,0)}fabric.isTouchSupported="ontouchstart"in fabric.window||"ontouchstart"in fabric.document||fabric.window&&fabric.window.navigator&&0/g,">")},graphemeSplit:function(t){var e,i=0,r=[];for(i=0;i/i,"")));if(!e||!e.documentElement)return n&&n(null),!1;C.parseSVGDocument(e.documentElement,function(t,e,i,r){n&&n(t,e,i,r)},i,r)}})},loadSVGFromString:function(t,n,e,i){var r;if(t=t.trim(),void 0!==C.window.DOMParser){var s=new C.window.DOMParser;s&&s.parseFromString&&(r=s.parseFromString(t,"text/xml"))}else C.window.ActiveXObject&&((r=new ActiveXObject("Microsoft.XMLDOM")).async="false",r.loadXML(t.replace(//i,"")));C.parseSVGDocument(r.documentElement,function(t,e,i,r){n(t,e,i,r)},e,i)}})}("undefined"!=typeof exports?exports:this),fabric.ElementsParser=function(t,e,i,r,n,s){this.elements=t,this.callback=e,this.options=i,this.reviver=r,this.svgUid=i&&i.svgUid||0,this.parsingOptions=n,this.regexUrl=/^url\(['"]?#([^'"]+)['"]?\)/g,this.doc=s},function(t){t.parse=function(){this.instances=new Array(this.elements.length),this.numElements=this.elements.length,this.createObjects()},t.createObjects=function(){var i=this;this.elements.forEach(function(t,e){t.setAttribute("svgUid",i.svgUid),i.createObject(t,e)})},t.findTag=function(t){return fabric[fabric.util.string.capitalize(t.tagName.replace("svg:",""))]},t.createObject=function(t,e){var i=this.findTag(t);if(i&&i.fromElement)try{i.fromElement(t,this.createCallback(e,t),this.options)}catch(t){fabric.log(t)}else this.checkIfDone()},t.createCallback=function(i,r){var n=this;return function(t){var e;n.resolveGradient(t,r,"fill"),n.resolveGradient(t,r,"stroke"),t instanceof fabric.Image&&t._originalElement&&(e=t.parsePreserveAspectRatioAttribute(r)),t._removeTransformMatrix(e),n.resolveClipPath(t,r),n.reviver&&n.reviver(r,t),n.instances[i]=t,n.checkIfDone()}},t.extractPropertyDefinition=function(t,e,i){var r=t[e],n=this.regexUrl;if(n.test(r)){n.lastIndex=0;var s=n.exec(r)[1];return n.lastIndex=0,fabric[i][this.svgUid][s]}},t.resolveGradient=function(t,e,i){var r=this.extractPropertyDefinition(t,i,"gradientDefs");if(r){var n=e.getAttribute(i+"-opacity"),s=fabric.Gradient.fromElement(r,t,n,this.options);t.set(i,s)}},t.createClipPathCallback=function(t,e){return function(t){t._removeTransformMatrix(),t.fillRule=t.clipRule,e.push(t)}},t.resolveClipPath=function(t,e){var i,r,n,s,o=this.extractPropertyDefinition(t,"clipPath","clipPaths");if(o){n=[],r=fabric.util.invertTransform(t.calcTransformMatrix());for(var a=o[0].parentNode,h=e;h.parentNode&&h.getAttribute("clip-path")!==t.clipPath;)h=h.parentNode;h.parentNode.appendChild(a);for(var c=0;ct.x&&this.y>t.y},gte:function(t){return this.x>=t.x&&this.y>=t.y},lerp:function(t,e){return void 0===e&&(e=.5),e=Math.max(Math.min(1,e),0),new i(this.x+(t.x-this.x)*e,this.y+(t.y-this.y)*e)},distanceFrom:function(t){var e=this.x-t.x,i=this.y-t.y;return Math.sqrt(e*e+i*i)},midPointFrom:function(t){return this.lerp(t)},min:function(t){return new i(Math.min(this.x,t.x),Math.min(this.y,t.y))},max:function(t){return new i(Math.max(this.x,t.x),Math.max(this.y,t.y))},toString:function(){return this.x+","+this.y},setXY:function(t,e){return this.x=t,this.y=e,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setFromPoint:function(t){return this.x=t.x,this.y=t.y,this},swap:function(t){var e=this.x,i=this.y;this.x=t.x,this.y=t.y,t.x=e,t.y=i},clone:function(){return new i(this.x,this.y)}}}("undefined"!=typeof exports?exports:this),function(t){"use strict";var f=t.fabric||(t.fabric={});function d(t){this.status=t,this.points=[]}f.Intersection?f.warn("fabric.Intersection is already defined"):(f.Intersection=d,f.Intersection.prototype={constructor:d,appendPoint:function(t){return this.points.push(t),this},appendPoints:function(t){return this.points=this.points.concat(t),this}},f.Intersection.intersectLineLine=function(t,e,i,r){var n,s=(r.x-i.x)*(t.y-i.y)-(r.y-i.y)*(t.x-i.x),o=(e.x-t.x)*(t.y-i.y)-(e.y-t.y)*(t.x-i.x),a=(r.y-i.y)*(e.x-t.x)-(r.x-i.x)*(e.y-t.y);if(0!==a){var h=s/a,c=o/a;0<=h&&h<=1&&0<=c&&c<=1?(n=new d("Intersection")).appendPoint(new f.Point(t.x+h*(e.x-t.x),t.y+h*(e.y-t.y))):n=new d}else n=new d(0===s||0===o?"Coincident":"Parallel");return n},f.Intersection.intersectLinePolygon=function(t,e,i){var r,n,s,o,a=new d,h=i.length;for(o=0;oo.r2,c=this.gradientTransform?this.gradientTransform.concat():fabric.iMatrix.concat(),l=-this.offsetX,u=-this.offsetY,f=!!e.additionalTransform,d="pixels"===this.gradientUnits?"userSpaceOnUse":"objectBoundingBox";if(a.sort(function(t,e){return t.offset-e.offset}),"objectBoundingBox"===d?(l/=t.width,u/=t.height):(l+=t.width/2,u+=t.height/2),"path"===t.type&&(l-=t.pathOffset.x,u-=t.pathOffset.y),c[4]-=l,c[5]-=u,s='id="SVGID_'+this.id+'" gradientUnits="'+d+'"',s+=' gradientTransform="'+(f?e.additionalTransform+" ":"")+fabric.util.matrixToSVG(c)+'" ',"linear"===this.type?n=["\n']:"radial"===this.type&&(n=["\n']),"radial"===this.type){if(h)for((a=a.concat()).reverse(),i=0,r=a.length;i\n')}return n.push("linear"===this.type?"\n":"\n"),n.join("")},toLive:function(t,e){var i,r,n,s=fabric.util.object.clone(this.coords),o=s.x1,a=s.y1,h=s.x2,c=s.y2,l=this.colorStops;if(this.type){for(e instanceof fabric.Text&&"percentage"===this.gradientUnits&&(o*=e.width,a*=e.height,h*=e.width,c*=e.height),"linear"===this.type?i=t.createLinearGradient(o,a,h,c):"radial"===this.type&&(i=t.createRadialGradient(o,a,s.r1,h,c,s.r2)),r=0,n=l.length;r\n\n\n'},setOptions:function(t){for(var e in t)this[e]=t[e]},toLive:function(t){var e="function"==typeof this.source?this.source():this.source;if(!e)return"";if(void 0!==e.src){if(!e.complete)return"";if(0===e.naturalWidth||0===e.naturalHeight)return""}return t.createPattern(e,this.repeat)}})}(),function(t){"use strict";var o=t.fabric||(t.fabric={}),a=o.util.toFixed;o.Shadow?o.warn("fabric.Shadow is already defined."):(o.Shadow=o.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,nonScaling:!1,initialize:function(t){for(var e in"string"==typeof t&&(t=this._parseShadow(t)),t)this[e]=t[e];this.id=o.Object.__uid++},_parseShadow:function(t){var e=t.trim(),i=o.Shadow.reOffsetsAndBlur.exec(e)||[];return{color:(e.replace(o.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)").trim(),offsetX:parseInt(i[1],10)||0,offsetY:parseInt(i[2],10)||0,blur:parseInt(i[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(t){var e=40,i=40,r=o.Object.NUM_FRACTION_DIGITS,n=o.util.rotateVector({x:this.offsetX,y:this.offsetY},o.util.degreesToRadians(-t.angle)),s=new o.Color(this.color);return t.width&&t.height&&(e=100*a((Math.abs(n.x)+this.blur)/t.width,r)+20,i=100*a((Math.abs(n.y)+this.blur)/t.height,r)+20),t.flipX&&(n.x*=-1),t.flipY&&(n.y*=-1),'\n\t\n\t\n\t\n\t\n\t\n\t\t\n\t\t\n\t\n\n'},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY,affectStroke:this.affectStroke,nonScaling:this.nonScaling};var e={},i=o.Shadow.prototype;return["color","blur","offsetX","offsetY","affectStroke","nonScaling"].forEach(function(t){this[t]!==i[t]&&(e[t]=this[t])},this),e}}),o.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/)}("undefined"!=typeof exports?exports:this),function(){"use strict";if(fabric.StaticCanvas)fabric.warn("fabric.StaticCanvas is already defined.");else{var n=fabric.util.object.extend,t=fabric.util.getElementOffset,c=fabric.util.removeFromArray,a=fabric.util.toFixed,s=fabric.util.transformPoint,o=fabric.util.invertTransform,i=fabric.util.getNodeCanvas,r=fabric.util.createCanvasElement,e=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass(fabric.CommonMethods,{initialize:function(t,e){e||(e={}),this.renderAndResetBound=this.renderAndReset.bind(this),this.requestRenderAllBound=this.requestRenderAll.bind(this),this._initStatic(t,e)},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!1,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!1,imageSmoothingEnabled:!0,viewportTransform:fabric.iMatrix.concat(),backgroundVpt:!0,overlayVpt:!0,onBeforeScaleRotate:function(){},enableRetinaScaling:!0,vptCoords:{},skipOffscreen:!0,clipPath:void 0,_initStatic:function(t,e){var i=this.requestRenderAllBound;this._objects=[],this._createLowerCanvas(t),this._initOptions(e),this._setImageSmoothing(),this.interactive||this._initRetinaScaling(),e.overlayImage&&this.setOverlayImage(e.overlayImage,i),e.backgroundImage&&this.setBackgroundImage(e.backgroundImage,i),e.backgroundColor&&this.setBackgroundColor(e.backgroundColor,i),e.overlayColor&&this.setOverlayColor(e.overlayColor,i),this.calcOffset()},_isRetinaScaling:function(){return 1!==fabric.devicePixelRatio&&this.enableRetinaScaling},getRetinaScaling:function(){return this._isRetinaScaling()?fabric.devicePixelRatio:1},_initRetinaScaling:function(){if(this._isRetinaScaling()){var t=fabric.devicePixelRatio;this.__initRetinaScaling(t,this.lowerCanvasEl,this.contextContainer),this.upperCanvasEl&&this.__initRetinaScaling(t,this.upperCanvasEl,this.contextTop)}},__initRetinaScaling:function(t,e,i){e.setAttribute("width",this.width*t),e.setAttribute("height",this.height*t),i.scale(t,t)},calcOffset:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(t,e,i){return this.__setBgOverlayImage("overlayImage",t,e,i)},setBackgroundImage:function(t,e,i){return this.__setBgOverlayImage("backgroundImage",t,e,i)},setOverlayColor:function(t,e){return this.__setBgOverlayColor("overlayColor",t,e)},setBackgroundColor:function(t,e){return this.__setBgOverlayColor("backgroundColor",t,e)},_setImageSmoothing:function(){var t=this.getContext();t.imageSmoothingEnabled=t.imageSmoothingEnabled||t.webkitImageSmoothingEnabled||t.mozImageSmoothingEnabled||t.msImageSmoothingEnabled||t.oImageSmoothingEnabled,t.imageSmoothingEnabled=this.imageSmoothingEnabled},__setBgOverlayImage:function(i,t,r,n){return"string"==typeof t?fabric.util.loadImage(t,function(t){if(t){var e=new fabric.Image(t,n);(this[i]=e).canvas=this}r&&r(t)},this,n&&n.crossOrigin):(n&&t.setOptions(n),(this[i]=t)&&(t.canvas=this),r&&r(t)),this},__setBgOverlayColor:function(t,e,i){return this[t]=e,this._initGradient(e,t),this._initPattern(e,t,i),this},_createCanvasElement:function(){var t=r();if(!t)throw e;if(t.style||(t.style={}),void 0===t.getContext)throw e;return t},_initOptions:function(t){var e=this.lowerCanvasEl;this._setOptions(t),this.width=this.width||parseInt(e.width,10)||0,this.height=this.height||parseInt(e.height,10)||0,this.lowerCanvasEl.style&&(e.width=this.width,e.height=this.height,e.style.width=this.width+"px",e.style.height=this.height+"px",this.viewportTransform=this.viewportTransform.slice())},_createLowerCanvas:function(t){t&&t.getContext?this.lowerCanvasEl=t:this.lowerCanvasEl=fabric.util.getById(t)||this._createCanvasElement(),fabric.util.addClass(this.lowerCanvasEl,"lower-canvas"),this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(t,e){return this.setDimensions({width:t},e)},setHeight:function(t,e){return this.setDimensions({height:t},e)},setDimensions:function(t,e){var i;for(var r in e=e||{},t)i=t[r],e.cssOnly||(this._setBackstoreDimension(r,t[r]),i+="px",this.hasLostContext=!0),e.backstoreOnly||this._setCssDimension(r,i);return this._isCurrentlyDrawing&&this.freeDrawingBrush&&this.freeDrawingBrush._setBrushStyles(),this._initRetinaScaling(),this._setImageSmoothing(),this.calcOffset(),e.cssOnly||this.requestRenderAll(),this},_setBackstoreDimension:function(t,e){return this.lowerCanvasEl[t]=e,this.upperCanvasEl&&(this.upperCanvasEl[t]=e),this.cacheCanvasEl&&(this.cacheCanvasEl[t]=e),this[t]=e,this},_setCssDimension:function(t,e){return this.lowerCanvasEl.style[t]=e,this.upperCanvasEl&&(this.upperCanvasEl.style[t]=e),this.wrapperEl&&(this.wrapperEl.style[t]=e),this},getZoom:function(){return this.viewportTransform[0]},setViewportTransform:function(t){var e,i,r,n=this._activeObject;for(this.viewportTransform=t,i=0,r=this._objects.length;i\n'),this._setSVGBgOverlayColor(i,"background"),this._setSVGBgOverlayImage(i,"backgroundImage",e),this._setSVGObjects(i,e),this.clipPath&&i.push("\n"),this._setSVGBgOverlayColor(i,"overlay"),this._setSVGBgOverlayImage(i,"overlayImage",e),i.push(""),i.join("")},_setSVGPreamble:function(t,e){e.suppressPreamble||t.push('\n','\n')},_setSVGHeader:function(t,e){var i,r=e.width||this.width,n=e.height||this.height,s='viewBox="0 0 '+this.width+" "+this.height+'" ',o=fabric.Object.NUM_FRACTION_DIGITS;e.viewBox?s='viewBox="'+e.viewBox.x+" "+e.viewBox.y+" "+e.viewBox.width+" "+e.viewBox.height+'" ':this.svgViewportTransformation&&(i=this.viewportTransform,s='viewBox="'+a(-i[4]/i[0],o)+" "+a(-i[5]/i[3],o)+" "+a(this.width/i[0],o)+" "+a(this.height/i[3],o)+'" '),t.push("\n',"Created with Fabric.js ",fabric.version,"\n","\n",this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),this.createSVGClipPathMarkup(e),"\n")},createSVGClipPathMarkup:function(t){var e=this.clipPath;return e?(e.clipPathId="CLIPPATH_"+fabric.Object.__uid++,'\n'+this.clipPath.toClipPathSVG(t.reviver)+"\n"):""},createSVGRefElementsMarkup:function(){var s=this;return["background","overlay"].map(function(t){var e=s[t+"Color"];if(e&&e.toLive){var i=s[t+"Vpt"],r=s.viewportTransform,n={width:s.width/(i?r[0]:1),height:s.height/(i?r[3]:1)};return e.toSVG(n,{additionalTransform:i?fabric.util.matrixToSVG(r):""})}}).join("")},createSVGFontFacesMarkup:function(){var t,e,i,r,n,s,o,a,h="",c={},l=fabric.fontPaths,u=this._objects;for(o=0,a=u.length;o',"\n",h,"","\n"].join("")),h},_setSVGObjects:function(t,e){var i,r,n,s=this._objects;for(r=0,n=s.length;r\n")}else t.push('\n")},sendToBack:function(t){if(!t)return this;var e,i,r,n=this._activeObject;if(t===n&&"activeSelection"===t.type)for(e=(r=n._objects).length;e--;)i=r[e],c(this._objects,i),this._objects.unshift(i);else c(this._objects,t),this._objects.unshift(t);return this.renderOnAddRemove&&this.requestRenderAll(),this},bringToFront:function(t){if(!t)return this;var e,i,r,n=this._activeObject;if(t===n&&"activeSelection"===t.type)for(r=n._objects,e=0;e"}}),n(fabric.StaticCanvas.prototype,fabric.Observable),n(fabric.StaticCanvas.prototype,fabric.Collection),n(fabric.StaticCanvas.prototype,fabric.DataURLExporter),n(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(t){var e=r();if(!e||!e.getContext)return null;var i=e.getContext("2d");if(!i)return null;switch(t){case"setLineDash":return void 0!==i.setLineDash;default:return null}}}),fabric.StaticCanvas.prototype.toJSON=fabric.StaticCanvas.prototype.toObject,fabric.isLikelyNode&&(fabric.StaticCanvas.prototype.createPNGStream=function(){var t=i(this.lowerCanvasEl);return t&&t.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(t){var e=i(this.lowerCanvasEl);return e&&e.createJPEGStream(t)})}}(),fabric.BaseBrush=fabric.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",strokeMiterLimit:10,strokeDashArray:null,setShadow:function(t){return this.shadow=new fabric.Shadow(t),this},_setBrushStyles:function(){var t=this.canvas.contextTop;t.strokeStyle=this.color,t.lineWidth=this.width,t.lineCap=this.strokeLineCap,t.miterLimit=this.strokeMiterLimit,t.lineJoin=this.strokeLineJoin,fabric.StaticCanvas.supports("setLineDash")&&t.setLineDash(this.strokeDashArray||[])},_saveAndTransform:function(t){var e=this.canvas.viewportTransform;t.save(),t.transform(e[0],e[1],e[2],e[3],e[4],e[5])},_setShadow:function(){if(this.shadow){var t=this.canvas,e=this.shadow,i=t.contextTop,r=t.getZoom();t&&t._isRetinaScaling()&&(r*=fabric.devicePixelRatio),i.shadowColor=e.color,i.shadowBlur=e.blur*r,i.shadowOffsetX=e.offsetX*r,i.shadowOffsetY=e.offsetY*r}},needsFullRender:function(){return new fabric.Color(this.color).getAlpha()<1||!!this.shadow},_resetShadow:function(){var t=this.canvas.contextTop;t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0}}),fabric.PencilBrush=fabric.util.createClass(fabric.BaseBrush,{decimate:.4,initialize:function(t){this.canvas=t,this._points=[]},_drawSegment:function(t,e,i){var r=e.midPointFrom(i);return t.quadraticCurveTo(e.x,e.y,r.x,r.y),r},onMouseDown:function(t,e){this.canvas._isMainEvent(e.e)&&(this._prepareForDrawing(t),this._captureDrawingPath(t),this._render())},onMouseMove:function(t,e){if(this.canvas._isMainEvent(e.e)&&this._captureDrawingPath(t)&&1t[e-2].x?1:n.x===t[e-2].x?0:-1,h=n.y>t[e-2].y?1:n.y===t[e-2].y?0:-1),i.push("L ",n.x+a*r," ",n.y+h*r),i},createPath:function(t){var e=new fabric.Path(t,{fill:null,stroke:this.color,strokeWidth:this.width,strokeLineCap:this.strokeLineCap,strokeMiterLimit:this.strokeMiterLimit,strokeLineJoin:this.strokeLineJoin,strokeDashArray:this.strokeDashArray});return this.shadow&&(this.shadow.affectStroke=!0,e.setShadow(this.shadow)),e},decimatePoints:function(t,e){if(t.length<=2)return t;var i,r=this.canvas.getZoom(),n=Math.pow(e/r,2),s=t.length-1,o=t[0],a=[o];for(i=1;i=a.getMinWidth()&&(l=p!==a.width,a.set("width",p),l)}return s&&u<=0&&un?t.x<0?t.x+=n:t.x-=n:t.x=0,h(t.y)>n?t.y<0?t.y+=n:t.y-=n:t.y=0},_rotateObject:function(t,e){var i=this._currentTransform,r=i.target,n=r.translateToOriginPoint(r.getCenterPoint(),i.originX,i.originY);if(r.lockRotation)return!1;var s=g(i.ey-n.y,i.ex-n.x),o=g(e-n.y,t-n.x),a=d(o-s+i.theta),h=!0;if(0"},getObjectScaling:function(){var t=this.scaleX,e=this.scaleY;if(this.group){var i=this.group.getObjectScaling();t*=i.scaleX,e*=i.scaleY}return{scaleX:t,scaleY:e}},getTotalObjectScaling:function(){var t=this.getObjectScaling(),e=t.scaleX,i=t.scaleY;if(this.canvas){var r=this.canvas.getZoom(),n=this.canvas.getRetinaScaling();e*=r*n,i*=r*n}return{scaleX:e,scaleY:i}},getObjectOpacity:function(){var t=this.opacity;return this.group&&(t*=this.group.getObjectOpacity()),t},_set:function(t,e){var i="scaleX"===t||"scaleY"===t,r=this[t]!==e,n=!1;return i&&(e=this._constrainScale(e)),"scaleX"===t&&e<0?(this.flipX=!this.flipX,e*=-1):"scaleY"===t&&e<0?(this.flipY=!this.flipY,e*=-1):"shadow"!==t||!e||e instanceof x.Shadow?"dirty"===t&&this.group&&this.group.set("dirty",e):e=new x.Shadow(e),this[t]=e,r&&(n=this.group&&this.group.isOnACache(),-1=t.x&&n.left+n.width<=e.x&&n.top>=t.y&&n.top+n.height<=e.y},containsPoint:function(t,e,i,r){e=e||this._getImageLines(r?this.calcCoords(i):i?this.aCoords:this.oCoords);var n=this._findCrossPoints(t,e);return 0!==n&&n%2==1},isOnScreen:function(t){if(!this.canvas)return!1;for(var e,i=this.canvas.vptCoords.tl,r=this.canvas.vptCoords.br,n=this.getCoords(!0,t),s=0;s<4;s++)if((e=n[s]).x<=r.x&&e.x>=i.x&&e.y<=r.y&&e.y>=i.y)return!0;return!!this.intersectsWithRect(i,r,!0,t)||this._containsCenterOfCanvas(i,r,t)},_containsCenterOfCanvas:function(t,e,i){var r={x:(t.x+e.x)/2,y:(t.y+e.y)/2};return!!this.containsPoint(r,null,!0,i)},isPartiallyOnScreen:function(t){if(!this.canvas)return!1;var e=this.canvas.vptCoords.tl,i=this.canvas.vptCoords.br;return!!this.intersectsWithRect(e,i,!0,t)||this._containsCenterOfCanvas(e,i,t)},_getImageLines:function(t){return{topline:{o:t.tl,d:t.tr},rightline:{o:t.tr,d:t.br},bottomline:{o:t.br,d:t.bl},leftline:{o:t.bl,d:t.tl}}},_findCrossPoints:function(t,e){var i,r,n,s=0;for(var o in e)if(!((n=e[o]).o.y=t.y&&n.d.y>=t.y||(n.o.x===n.d.x&&n.o.x>=t.x?r=n.o.x:(0,i=(n.d.y-n.o.y)/(n.d.x-n.o.x),r=-(t.y-0*t.x-(n.o.y-i*n.o.x))/(0-i)),r>=t.x&&(s+=1),2!==s)))break;return s},getBoundingRect:function(t,e){var i=this.getCoords(t,e);return fabric.util.makeBoundingBoxFromPoints(i)},getScaledWidth:function(){return this._getTransformedDimensions().x},getScaledHeight:function(){return this._getTransformedDimensions().y},_constrainScale:function(t){return Math.abs(t)\n')}},toSVG:function(t){return this._createBaseSVGMarkup(this._toSVG(t),{reviver:t})},toClipPathSVG:function(t){return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(t),{reviver:t})},_createBaseClipPathSVGMarkup:function(t,e){var i=(e=e||{}).reviver,r=e.additionalTransform||"",n=[this.getSvgTransform(!0,r),this.getSvgCommons()].join(""),s=t.indexOf("COMMON_PARTS");return t[s]=n,i?i(t.join("")):t.join("")},_createBaseSVGMarkup:function(t,e){var i,r,n=(e=e||{}).noStyle,s=e.reviver,o=n?"":'style="'+this.getSvgStyles()+'" ',a=e.withShadow?'style="'+this.getSvgFilter()+'" ':"",h=this.clipPath,c=this.strokeUniform?'vector-effect="non-scaling-stroke" ':"",l=h&&h.absolutePositioned,u=this.stroke,f=this.fill,d=this.shadow,g=[],p=t.indexOf("COMMON_PARTS"),v=e.additionalTransform;return h&&(h.clipPathId="CLIPPATH_"+fabric.Object.__uid++,r='\n'+h.toClipPathSVG(s)+"\n"),l&&g.push("\n"),g.push("\n"),i=[o,c,n?"":this.addPaintOrder()," ",v?'transform="'+v+'" ':""].join(""),t[p]=i,f&&f.toLive&&g.push(f.toSVG(this)),u&&u.toLive&&g.push(u.toSVG(this)),d&&g.push(d.toSVG(this)),h&&g.push(r),g.push(t.join("")),g.push("\n"),l&&g.push("\n"),s?s(g.join("")):g.join("")},addPaintOrder:function(){return"fill"!==this.paintFirst?' paint-order="'+this.paintFirst+'" ':""}})}(),function(){var n=fabric.util.object.extend,r="stateProperties";function s(e,t,i){var r={};i.forEach(function(t){r[t]=e[t]}),n(e[t],r,!0)}fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(t){var e="_"+(t=t||r);return Object.keys(this[e]).length\n']}}),s.Line.ATTRIBUTE_NAMES=s.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),s.Line.fromElement=function(t,e,i){i=i||{};var r=s.parseAttributes(t,s.Line.ATTRIBUTE_NAMES),n=[r.x1||0,r.y1||0,r.x2||0,r.y2||0];e(new s.Line(n,o(r,i)))},s.Line.fromObject=function(t,e){var i=r(t,!0);i.points=[t.x1,t.y1,t.x2,t.y2],s.Object._fromObject("Line",i,function(t){delete t.points,e&&e(t)},"points")})}("undefined"!=typeof exports?exports:this),function(t){"use strict";var a=t.fabric||(t.fabric={}),h=Math.PI;a.Circle?a.warn("fabric.Circle is already defined."):(a.Circle=a.util.createClass(a.Object,{type:"circle",radius:0,startAngle:0,endAngle:2*h,cacheProperties:a.Object.prototype.cacheProperties.concat("radius","startAngle","endAngle"),_set:function(t,e){return this.callSuper("_set",t,e),"radius"===t&&this.setRadius(e),this},toObject:function(t){return this.callSuper("toObject",["radius","startAngle","endAngle"].concat(t))},_toSVG:function(){var t,e=(this.endAngle-this.startAngle)%(2*h);if(0===e)t=["\n'];else{var i=a.util.cos(this.startAngle)*this.radius,r=a.util.sin(this.startAngle)*this.radius,n=a.util.cos(this.endAngle)*this.radius,s=a.util.sin(this.endAngle)*this.radius,o=h\n"]}return t},_render:function(t){t.beginPath(),t.arc(0,0,this.radius,this.startAngle,this.endAngle,!1),this._renderPaintInOrder(t)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(t){return this.radius=t,this.set("width",2*t).set("height",2*t)}}),a.Circle.ATTRIBUTE_NAMES=a.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),a.Circle.fromElement=function(t,e){var i,r=a.parseAttributes(t,a.Circle.ATTRIBUTE_NAMES);if(!("radius"in(i=r)&&0<=i.radius))throw new Error("value of `r` attribute is required and can not be negative");r.left=(r.left||0)-r.radius,r.top=(r.top||0)-r.radius,e(new a.Circle(r))},a.Circle.fromObject=function(t,e){return a.Object._fromObject("Circle",t,e)})}("undefined"!=typeof exports?exports:this),function(t){"use strict";var r=t.fabric||(t.fabric={});r.Triangle?r.warn("fabric.Triangle is already defined"):(r.Triangle=r.util.createClass(r.Object,{type:"triangle",width:100,height:100,_render:function(t){var e=this.width/2,i=this.height/2;t.beginPath(),t.moveTo(-e,i),t.lineTo(0,-i),t.lineTo(e,i),t.closePath(),this._renderPaintInOrder(t)},_renderDashedStroke:function(t){var e=this.width/2,i=this.height/2;t.beginPath(),r.util.drawDashedLine(t,-e,i,0,-i,this.strokeDashArray),r.util.drawDashedLine(t,0,-i,e,i,this.strokeDashArray),r.util.drawDashedLine(t,e,i,-e,i,this.strokeDashArray),t.closePath()},_toSVG:function(){var t=this.width/2,e=this.height/2;return["']}}),r.Triangle.fromObject=function(t,e){return r.Object._fromObject("Triangle",t,e)})}("undefined"!=typeof exports?exports:this),function(t){"use strict";var r=t.fabric||(t.fabric={}),e=2*Math.PI;r.Ellipse?r.warn("fabric.Ellipse is already defined."):(r.Ellipse=r.util.createClass(r.Object,{type:"ellipse",rx:0,ry:0,cacheProperties:r.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(t){this.callSuper("initialize",t),this.set("rx",t&&t.rx||0),this.set("ry",t&&t.ry||0)},_set:function(t,e){switch(this.callSuper("_set",t,e),t){case"rx":this.rx=e,this.set("width",2*e);break;case"ry":this.ry=e,this.set("height",2*e)}return this},getRx:function(){return this.get("rx")*this.get("scaleX")},getRy:function(){return this.get("ry")*this.get("scaleY")},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},_toSVG:function(){return["\n']},_render:function(t){t.beginPath(),t.save(),t.transform(1,0,0,this.ry/this.rx,0,0),t.arc(0,0,this.rx,0,e,!1),t.restore(),this._renderPaintInOrder(t)}}),r.Ellipse.ATTRIBUTE_NAMES=r.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),r.Ellipse.fromElement=function(t,e){var i=r.parseAttributes(t,r.Ellipse.ATTRIBUTE_NAMES);i.left=(i.left||0)-i.rx,i.top=(i.top||0)-i.ry,e(new r.Ellipse(i))},r.Ellipse.fromObject=function(t,e){return r.Object._fromObject("Ellipse",t,e)})}("undefined"!=typeof exports?exports:this),function(t){"use strict";var s=t.fabric||(t.fabric={}),o=s.util.object.extend;s.Rect?s.warn("fabric.Rect is already defined"):(s.Rect=s.util.createClass(s.Object,{stateProperties:s.Object.prototype.stateProperties.concat("rx","ry"),type:"rect",rx:0,ry:0,cacheProperties:s.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(t){this.callSuper("initialize",t),this._initRxRy()},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(t){var e=this.rx?Math.min(this.rx,this.width/2):0,i=this.ry?Math.min(this.ry,this.height/2):0,r=this.width,n=this.height,s=-this.width/2,o=-this.height/2,a=0!==e||0!==i,h=.4477152502;t.beginPath(),t.moveTo(s+e,o),t.lineTo(s+r-e,o),a&&t.bezierCurveTo(s+r-h*e,o,s+r,o+h*i,s+r,o+i),t.lineTo(s+r,o+n-i),a&&t.bezierCurveTo(s+r,o+n-h*i,s+r-h*e,o+n,s+r-e,o+n),t.lineTo(s+e,o+n),a&&t.bezierCurveTo(s+h*e,o+n,s,o+n-h*i,s,o+n-i),t.lineTo(s,o+i),a&&t.bezierCurveTo(s,o+h*i,s+h*e,o,s+e,o),t.closePath(),this._renderPaintInOrder(t)},_renderDashedStroke:function(t){var e=-this.width/2,i=-this.height/2,r=this.width,n=this.height;t.beginPath(),s.util.drawDashedLine(t,e,i,e+r,i,this.strokeDashArray),s.util.drawDashedLine(t,e+r,i,e+r,i+n,this.strokeDashArray),s.util.drawDashedLine(t,e+r,i+n,e,i+n,this.strokeDashArray),s.util.drawDashedLine(t,e,i+n,e,i,this.strokeDashArray),t.closePath()},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},_toSVG:function(){return["\n']}}),s.Rect.ATTRIBUTE_NAMES=s.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),s.Rect.fromElement=function(t,e,i){if(!t)return e(null);i=i||{};var r=s.parseAttributes(t,s.Rect.ATTRIBUTE_NAMES);r.left=r.left||0,r.top=r.top||0,r.height=r.height||0,r.width=r.width||0;var n=new s.Rect(o(i?s.util.object.clone(i):{},r));n.visible=n.visible&&0\n']},commonRender:function(t){var e,i=this.points.length,r=this.pathOffset.x,n=this.pathOffset.y;if(!i||isNaN(this.points[i-1].y))return!1;t.beginPath(),t.moveTo(this.points[0].x-r,this.points[0].y-n);for(var s=0;s"},toObject:function(t){return n(this.callSuper("toObject",t),{path:this.path.map(function(t){return t.slice()})})},toDatalessObject:function(t){var e=this.toObject(["sourcePath"].concat(t));return e.sourcePath&&delete e.path,e},_toSVG:function(){return["\n"]},_getOffsetTransform:function(){var t=m.Object.NUM_FRACTION_DIGITS;return" translate("+e(-this.pathOffset.x,t)+", "+e(-this.pathOffset.y,t)+")"},toClipPathSVG:function(t){var e=this._getOffsetTransform();return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(),{reviver:t,additionalTransform:e})},toSVG:function(t){var e=this._getOffsetTransform();return this._createBaseSVGMarkup(this._toSVG(),{reviver:t,additionalTransform:e})},complexity:function(){return this.path.length},_parsePath:function(){for(var t,e,i,r,n,s=[],o=[],a=m.rePathCommand,h=0,c=this.path.length;hd)for(var p=1,v=n.length;p"},addWithUpdate:function(t){return this._restoreObjectsState(),c.util.resetObjectTransform(this),t&&(this._objects.push(t),t.group=this,t._set("canvas",this.canvas)),this._calcBounds(),this._updateObjectsCoords(),this.setCoords(),this.dirty=!0,this},removeWithUpdate:function(t){return this._restoreObjectsState(),c.util.resetObjectTransform(this),this.remove(t),this._calcBounds(),this._updateObjectsCoords(),this.setCoords(),this.dirty=!0,this},_onObjectAdded:function(t){this.dirty=!0,t.group=this,t._set("canvas",this.canvas)},_onObjectRemoved:function(t){this.dirty=!0,delete t.group},_set:function(t,e){var i=this._objects.length;if(this.useSetOnGroup)for(;i--;)this._objects[i].setOnGroup(t,e);if("canvas"===t)for(;i--;)this._objects[i]._set(t,e);c.Object.prototype._set.call(this,t,e)},toObject:function(r){var n=this.includeDefaultValues,t=this._objects.map(function(t){var e=t.includeDefaultValues;t.includeDefaultValues=n;var i=t.toObject(r);return t.includeDefaultValues=e,i}),e=c.Object.prototype.toObject.call(this,r);return e.objects=t,e},toDatalessObject:function(r){var t,e=this.sourcePath;if(e)t=e;else{var n=this.includeDefaultValues;t=this._objects.map(function(t){var e=t.includeDefaultValues;t.includeDefaultValues=n;var i=t.toDatalessObject(r);return t.includeDefaultValues=e,i})}var i=c.Object.prototype.toDatalessObject.call(this,r);return i.objects=t,i},render:function(t){this._transformDone=!0,this.callSuper("render",t),this._transformDone=!1},shouldCache:function(){var t=c.Object.prototype.shouldCache.call(this);if(t)for(var e=0,i=this._objects.length;e\n"],i=0,r=this._objects.length;i\n"),e},getSvgStyles:function(){var t=void 0!==this.opacity&&1!==this.opacity?"opacity: "+this.opacity+";":"",e=this.visible?"":" visibility: hidden;";return[t,this.getSvgFilter(),e].join("")},toClipPathSVG:function(t){for(var e=[],i=0,r=this._objects.length;i"},shouldCache:function(){return!1},isOnACache:function(){return!1},_renderControls:function(t,e,i){t.save(),t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,this.callSuper("_renderControls",t,e),void 0===(i=i||{}).hasControls&&(i.hasControls=!1),void 0===i.hasRotatingPoint&&(i.hasRotatingPoint=!1),i.forActiveSelection=!0;for(var r=0,n=this._objects.length;r\n','\t\n',"\n"),s=' clip-path="url(#imageCrop_'+o+')" '}if(i.push("\t\n"),this.stroke||this.strokeDashArray){var a=this.fill;this.fill=null,t=["\t\n'],this.fill=a}return e="fill"!==this.paintFirst?e.concat(t,i):e.concat(i,t)},getSrc:function(t){var e=t?this._element:this._originalElement;return e?e.toDataURL?e.toDataURL():this.srcFromAttribute?e.getAttribute("src"):e.src:this.src||""},setSrc:function(t,e,i){return fabric.util.loadImage(t,function(t){this.setElement(t,i),this._setWidthHeight(),e&&e(this)},this,i&&i.crossOrigin),this},toString:function(){return'#'},applyResizeFilters:function(){var t=this.resizeFilter,e=this.minimumScaleTrigger,i=this.getTotalObjectScaling(),r=i.scaleX,n=i.scaleY,s=this._filteredEl||this._originalElement;if(this.group&&this.set("dirty",!0),!t||e=t;for(var a=["highp","mediump","lowp"],h=0;h<3;h++)if(void 0,i="precision "+a[h]+" float;\nvoid main(){}",r=(e=s).createShader(e.FRAGMENT_SHADER),e.shaderSource(r,i),e.compileShader(r),e.getShaderParameter(r,e.COMPILE_STATUS)){fabric.webGlPrecision=a[h];break}}return this.isSupported=o},(fabric.WebglFilterBackend=t).prototype={tileSize:2048,resources:{},setupGLContext:function(t,e){this.dispose(),this.createWebGLCanvas(t,e),this.aPosition=new Float32Array([0,0,0,1,1,0,1,1]),this.chooseFastestCopyGLTo2DMethod(t,e)},chooseFastestCopyGLTo2DMethod:function(t,e){var i,r=void 0!==window.performance;try{new ImageData(1,1),i=!0}catch(t){i=!1}var n="undefined"!=typeof ArrayBuffer,s="undefined"!=typeof Uint8ClampedArray;if(r&&i&&n&&s){var o=fabric.util.createCanvasElement(),a=new ArrayBuffer(t*e*4);if(fabric.forceGLPutImageData)return this.imageBuffer=a,void(this.copyGLTo2D=copyGLTo2DPutImageData);var h,c,l={imageBuffer:a,destinationWidth:t,destinationHeight:e,targetCanvas:o};o.width=t,o.height=e,h=window.performance.now(),copyGLTo2DDrawImage.call(l,this.gl,l),c=window.performance.now()-h,h=window.performance.now(),copyGLTo2DPutImageData.call(l,this.gl,l),window.performance.now()-h 0.0) {\n"+this.fragmentSource[t]+"}\n}"},retrieveShader:function(t){var e,i=this.type+"_"+this.mode;return t.programCache.hasOwnProperty(i)||(e=this.buildSource(this.mode),t.programCache[i]=this.createProgram(t.context,e)),t.programCache[i]},applyTo2d:function(t){var e,i,r,n,s,o,a,h=t.imageData.data,c=h.length,l=1-this.alpha;e=(a=new f.Color(this.color).getSource())[0]*this.alpha,i=a[1]*this.alpha,r=a[2]*this.alpha;for(var u=0;u'},_getCacheCanvasDimensions:function(){var t=this.callSuper("_getCacheCanvasDimensions"),e=this.fontSize;return t.width+=e*t.zoomX,t.height+=e*t.zoomY,t},_render:function(t){this._setTextStyles(t),this._renderTextLinesBackground(t),this._renderTextDecoration(t,"underline"),this._renderText(t),this._renderTextDecoration(t,"overline"),this._renderTextDecoration(t,"linethrough")},_renderText:function(t){"stroke"===this.paintFirst?(this._renderTextStroke(t),this._renderTextFill(t)):(this._renderTextFill(t),this._renderTextStroke(t))},_setTextStyles:function(t,e,i){t.textBaseline="alphabetic",t.font=this._getFontDeclaration(e,i)},calcTextWidth:function(){for(var t=this.getLineWidth(0),e=1,i=this._textLines.length;ethis.__selectionStartOnMouseDown?(this.selectionStart=this.__selectionStartOnMouseDown,this.selectionEnd=e):(this.selectionStart=e,this.selectionEnd=this.__selectionStartOnMouseDown),this.selectionStart===i&&this.selectionEnd===r||(this.restartCursorIfNeeded(),this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()))}},_setEditingProps:function(){this.hoverCursor="text",this.canvas&&(this.canvas.defaultCursor=this.canvas.moveCursor="text"),this.borderColor=this.editingBorderColor,this.hasControls=this.selectable=!1,this.lockMovementX=this.lockMovementY=!0},fromStringToGraphemeSelection:function(t,e,i){var r=i.slice(0,t),n=fabric.util.string.graphemeSplit(r).length;if(t===e)return{selectionStart:n,selectionEnd:n};var s=i.slice(t,e);return{selectionStart:n,selectionEnd:n+fabric.util.string.graphemeSplit(s).length}},fromGraphemeToStringSelection:function(t,e,i){var r=i.slice(0,t).join("").length;return t===e?{selectionStart:r,selectionEnd:r}:{selectionStart:r,selectionEnd:r+i.slice(t,e).join("").length}},_updateTextarea:function(){if(this.cursorOffsetCache={},this.hiddenTextarea){if(!this.inCompositionMode){var t=this.fromGraphemeToStringSelection(this.selectionStart,this.selectionEnd,this._text);this.hiddenTextarea.selectionStart=t.selectionStart,this.hiddenTextarea.selectionEnd=t.selectionEnd}this.updateTextareaPosition()}},updateFromTextArea:function(){if(this.hiddenTextarea){this.cursorOffsetCache={},this.text=this.hiddenTextarea.value,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords());var t=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value);this.selectionEnd=this.selectionStart=t.selectionEnd,this.inCompositionMode||(this.selectionStart=t.selectionStart),this.updateTextareaPosition()}},updateTextareaPosition:function(){if(this.selectionStart===this.selectionEnd){var t=this._calcTextareaPosition();this.hiddenTextarea.style.left=t.left,this.hiddenTextarea.style.top=t.top}},_calcTextareaPosition:function(){if(!this.canvas)return{x:1,y:1};var t=this.inCompositionMode?this.compositionStart:this.selectionStart,e=this._getCursorBoundaries(t),i=this.get2DCursorLocation(t),r=i.lineIndex,n=i.charIndex,s=this.getValueOfPropertyAt(r,n,"fontSize")*this.lineHeight,o=e.leftOffset,a=this.calcTransformMatrix(),h={x:e.left+o,y:e.top+e.topOffset+s},c=this.canvas.getRetinaScaling(),l=this.canvas.upperCanvasEl,u=l.width/c,f=l.height/c,d=u-s,g=f-s,p=l.clientWidth/u,v=l.clientHeight/f;return h=fabric.util.transformPoint(h,a),(h=fabric.util.transformPoint(h,this.canvas.viewportTransform)).x*=p,h.y*=v,h.x<0&&(h.x=0),h.x>d&&(h.x=d),h.y<0&&(h.y=0),h.y>g&&(h.y=g),h.x+=this.canvas._offset.left,h.y+=this.canvas._offset.top,{left:h.x+"px",top:h.y+"px",fontSize:s+"px",charHeight:s}},_saveEditingProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,selectable:this.selectable,defaultCursor:this.canvas&&this.canvas.defaultCursor,moveCursor:this.canvas&&this.canvas.moveCursor}},_restoreEditingProps:function(){this._savedProps&&(this.hoverCursor=this._savedProps.hoverCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.selectable=this._savedProps.selectable,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY,this.canvas&&(this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor))},exitEditing:function(){var t=this._textBeforeEdit!==this.text;return this.selected=!1,this.isEditing=!1,this.selectionEnd=this.selectionStart,this.hiddenTextarea&&(this.hiddenTextarea.blur&&this.hiddenTextarea.blur(),this.canvas&&this.hiddenTextarea.parentNode.removeChild(this.hiddenTextarea),this.hiddenTextarea=null),this.abortCursorAnimation(),this._restoreEditingProps(),this._currentCursorOpacity=0,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this.fire("editing:exited"),t&&this.fire("modified"),this.canvas&&(this.canvas.off("mouse:move",this.mouseMoveHandler),this.canvas.fire("text:editing:exited",{target:this}),t&&this.canvas.fire("object:modified",{target:this})),this},_removeExtraneousStyles:function(){for(var t in this.styles)this._textLines[t]||delete this.styles[t]},removeStyleFromTo:function(t,e){var i,r,n=this.get2DCursorLocation(t,!0),s=this.get2DCursorLocation(e,!0),o=n.lineIndex,a=n.charIndex,h=s.lineIndex,c=s.charIndex;if(o!==h){if(this.styles[o])for(i=a;it?this.selectionStart=t:this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd>t?this.selectionEnd=t:this.selectionEnd<0&&(this.selectionEnd=0)}})}(),fabric.util.object.extend(fabric.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+new Date,this.__lastLastClickTime=+new Date,this.__lastPointer={},this.on("mousedown",this.onMouseDown)},onMouseDown:function(t){if(this.canvas){this.__newClickTime=+new Date;var e=t.pointer;this.isTripleClick(e)&&(this.fire("tripleclick",t),this._stopEvent(t.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=e,this.__lastIsEditing=this.isEditing,this.__lastSelected=this.selected}},isTripleClick:function(t){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===t.x&&this.__lastPointer.y===t.y},_stopEvent:function(t){t.preventDefault&&t.preventDefault(),t.stopPropagation&&t.stopPropagation()},initCursorSelectionHandlers:function(){this.initMousedownHandler(),this.initMouseupHandler(),this.initClicks()},doubleClickHandler:function(t){this.isEditing&&this.selectWord(this.getSelectionStartFromPointer(t.e))},tripleClickHandler:function(t){this.isEditing&&this.selectLine(this.getSelectionStartFromPointer(t.e))},initClicks:function(){this.on("mousedblclick",this.doubleClickHandler),this.on("tripleclick",this.tripleClickHandler)},_mouseDownHandler:function(t){!this.canvas||!this.editable||t.e.button&&1!==t.e.button||(this.__isMousedown=!0,this.selected&&this.setCursorByClick(t.e),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.selectionStart===this.selectionEnd&&this.abortCursorAnimation(),this.renderCursorOrSelection()))},_mouseDownHandlerBefore:function(t){!this.canvas||!this.editable||t.e.button&&1!==t.e.button||(this.selected=this===this.canvas._activeObject)},initMousedownHandler:function(){this.on("mousedown",this._mouseDownHandler),this.on("mousedown:before",this._mouseDownHandlerBefore)},initMouseupHandler:function(){this.on("mouseup",this.mouseUpHandler)},mouseUpHandler:function(t){if(this.__isMousedown=!1,!(!this.editable||this.group||t.transform&&t.transform.actionPerformed||t.e.button&&1!==t.e.button)){if(this.canvas){var e=this.canvas._activeObject;if(e&&e!==this)return}this.__lastSelected&&!this.__corner?(this.selected=!1,this.__lastSelected=!1,this.enterEditing(t.e),this.selectionStart===this.selectionEnd?this.initDelayedCursor(!0):this.renderCursorOrSelection()):this.selected=!0}},setCursorByClick:function(t){var e=this.getSelectionStartFromPointer(t),i=this.selectionStart,r=this.selectionEnd;t.shiftKey?this.setSelectionStartEndWithShift(i,r,e):(this.selectionStart=e,this.selectionEnd=e),this.isEditing&&(this._fireSelectionChanged(),this._updateTextarea())},getSelectionStartFromPointer:function(t){for(var e=this.getLocalPointer(t),i=0,r=0,n=0,s=0,o=0,a=0,h=this._textLines.length;athis._text.length&&(a=this._text.length),a}}),fabric.util.object.extend(fabric.IText.prototype,{initHiddenTextarea:function(){this.hiddenTextarea=fabric.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.setAttribute("autocorrect","off"),this.hiddenTextarea.setAttribute("autocomplete","off"),this.hiddenTextarea.setAttribute("spellcheck","false"),this.hiddenTextarea.setAttribute("data-fabric-hiddentextarea",""),this.hiddenTextarea.setAttribute("wrap","off");var t=this._calcTextareaPosition();this.hiddenTextarea.style.cssText="position: absolute; top: "+t.top+"; left: "+t.left+"; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px; paddingーtop: "+t.fontSize+";",fabric.document.body.appendChild(this.hiddenTextarea),fabric.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this)),fabric.util.addListener(this.hiddenTextarea,"keyup",this.onKeyUp.bind(this)),fabric.util.addListener(this.hiddenTextarea,"input",this.onInput.bind(this)),fabric.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this)),fabric.util.addListener(this.hiddenTextarea,"cut",this.copy.bind(this)),fabric.util.addListener(this.hiddenTextarea,"paste",this.paste.bind(this)),fabric.util.addListener(this.hiddenTextarea,"compositionstart",this.onCompositionStart.bind(this)),fabric.util.addListener(this.hiddenTextarea,"compositionupdate",this.onCompositionUpdate.bind(this)),fabric.util.addListener(this.hiddenTextarea,"compositionend",this.onCompositionEnd.bind(this)),!this._clickHandlerInitialized&&this.canvas&&(fabric.util.addListener(this.canvas.upperCanvasEl,"click",this.onClick.bind(this)),this._clickHandlerInitialized=!0)},keysMap:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorRight",36:"moveCursorLeft",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown"},ctrlKeysMapUp:{67:"copy",88:"cut"},ctrlKeysMapDown:{65:"selectAll"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(t){if(this.isEditing&&!this.inCompositionMode){if(t.keyCode in this.keysMap)this[this.keysMap[t.keyCode]](t);else{if(!(t.keyCode in this.ctrlKeysMapDown&&(t.ctrlKey||t.metaKey)))return;this[this.ctrlKeysMapDown[t.keyCode]](t)}t.stopImmediatePropagation(),t.preventDefault(),33<=t.keyCode&&t.keyCode<=40?(this.clearContextTop(),this.renderCursorOrSelection()):this.canvas&&this.canvas.requestRenderAll()}},onKeyUp:function(t){!this.isEditing||this._copyDone||this.inCompositionMode?this._copyDone=!1:t.keyCode in this.ctrlKeysMapUp&&(t.ctrlKey||t.metaKey)&&(this[this.ctrlKeysMapUp[t.keyCode]](t),t.stopImmediatePropagation(),t.preventDefault(),this.canvas&&this.canvas.requestRenderAll())},onInput:function(t){var e=this.fromPaste;if(this.fromPaste=!1,t&&t.stopPropagation(),this.isEditing){var i,r,n=this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText,s=this._text.length,o=n.length,a=o-s;if(""===this.hiddenTextarea.value)return this.styles={},this.updateFromTextArea(),this.fire("changed"),void(this.canvas&&(this.canvas.fire("text:changed",{target:this}),this.canvas.requestRenderAll()));var h=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value),c=this.selectionStart>h.selectionStart;this.selectionStart!==this.selectionEnd?(i=this._text.slice(this.selectionStart,this.selectionEnd),a+=this.selectionEnd-this.selectionStart):o=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorUpOrDown("Down",t)},moveCursorUp:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorUpOrDown("Up",t)},_moveCursorUpOrDown:function(t,e){var i=this["get"+t+"CursorOffset"](e,"right"===this._selectionDirection);e.shiftKey?this.moveCursorWithShift(i):this.moveCursorWithoutShift(i),0!==i&&(this.setSelectionInBoundaries(),this.abortCursorAnimation(),this._currentCursorOpacity=1,this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorWithShift:function(t){var e="left"===this._selectionDirection?this.selectionStart+t:this.selectionEnd+t;return this.setSelectionStartEndWithShift(this.selectionStart,this.selectionEnd,e),0!==t},moveCursorWithoutShift:function(t){return t<0?(this.selectionStart+=t,this.selectionEnd=this.selectionStart):(this.selectionEnd+=t,this.selectionStart=this.selectionEnd),0!==t},moveCursorLeft:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorLeftOrRight("Left",t)},_move:function(t,e,i){var r;if(t.altKey)r=this["findWordBoundary"+i](this[e]);else{if(!t.metaKey&&35!==t.keyCode&&36!==t.keyCode)return this[e]+="Left"===i?-1:1,!0;r=this["findLineBoundary"+i](this[e])}if(void 0!==typeof r&&this[e]!==r)return this[e]=r,!0},_moveLeft:function(t,e){return this._move(t,e,"Left")},_moveRight:function(t,e){return this._move(t,e,"Right")},moveCursorLeftWithoutShift:function(t){var e=!0;return this._selectionDirection="left",this.selectionEnd===this.selectionStart&&0!==this.selectionStart&&(e=this._moveLeft(t,"selectionStart")),this.selectionEnd=this.selectionStart,e},moveCursorLeftWithShift:function(t){return"right"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveLeft(t,"selectionEnd"):0!==this.selectionStart?(this._selectionDirection="left",this._moveLeft(t,"selectionStart")):void 0},moveCursorRight:function(t){this.selectionStart>=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorLeftOrRight("Right",t)},_moveCursorLeftOrRight:function(t,e){var i="moveCursor"+t+"With";this._currentCursorOpacity=1,e.shiftKey?i+="Shift":i+="outShift",this[i](e)&&(this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorRightWithShift:function(t){return"left"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveRight(t,"selectionStart"):this.selectionEnd!==this._text.length?(this._selectionDirection="right",this._moveRight(t,"selectionEnd")):void 0},moveCursorRightWithoutShift:function(t){var e=!0;return this._selectionDirection="right",this.selectionStart===this.selectionEnd?(e=this._moveRight(t,"selectionStart"),this.selectionEnd=this.selectionStart):this.selectionStart=this.selectionEnd,e},removeChars:function(t,e){void 0===e&&(e=t+1),this.removeStyleFromTo(t,e),this._text.splice(t,e-t),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()},insertChars:function(t,e,i,r){void 0===r&&(r=i),i",t.textSpans.join(""),"\n"]},_getSVGTextAndBg:function(t,e){var i,r=[],n=[],s=t;this._setSVGBg(n);for(var o=0,a=this._textLines.length;o",fabric.util.string.escapeXml(t),""].join("")},_setSVGTextLineText:function(t,e,i,r){var n,s,o,a,h,c=this.getHeightOfLine(e),l=-1!==this.textAlign.indexOf("justify"),u="",f=0,d=this._textLines[e];r+=c*(1-this._fontSizeFraction)/this.lineHeight;for(var g=0,p=d.length-1;g<=p;g++)h=g===p||this.charSpacing,u+=d[g],o=this.__charBounds[e][g],0===f?(i+=o.kernedWidth-o.width,f+=o.width):f+=o.kernedWidth,l&&!h&&this._reSpaceAndTab.test(d[g])&&(h=!0),h||(n=n||this.getCompleteStyleDeclaration(e,g),s=this.getCompleteStyleDeclaration(e,g+1),h=this._hasStyleChangedForSvg(n,s)),h&&(a=this._getStyleDeclaration(e,g)||{},t.push(this._createTextCharSpan(u,a,i,r)),u="",n=s,i+=f,f=0)},_pushTextBgRect:function(t,e,i,r,n,s){var o=fabric.Object.NUM_FRACTION_DIGITS;t.push("\t\t\n')},_setSVGTextLineBg:function(t,e,i,r){for(var n,s,o=this._textLines[e],a=this.getHeightOfLine(e)/this.lineHeight,h=0,c=0,l=this.getValueOfPropertyAt(e,0,"textBackgroundColor"),u=0,f=o.length;uthis.width&&this._set("width",this.dynamicMinWidth),-1!==this.textAlign.indexOf("justify")&&this.enlargeSpaces(),this.height=this.calcTextHeight(),this.saveState({propertySet:"_dimensionAffectingProps"}))},_generateStyleMap:function(t){for(var e=0,i=0,r=0,n={},s=0;sthis.dynamicMinWidth&&(this.dynamicMinWidth=g-v+r),o},isEndOfWrapping:function(t){return!this._styleMap[t+1]||this._styleMap[t+1].line!==this._styleMap[t].line},missingNewlineOffset:function(t){return this.splitByGrapheme?this.isEndOfWrapping(t)?1:0:1},_splitTextIntoLines:function(t){for(var e=b.Text.prototype._splitTextIntoLines.call(this,t),i=this._wrapText(e.lines,this.width),r=new Array(i.length),n=0;n/g,">")},graphemeSplit:function(t){var e,i=0,r=[];for(i=0;i/i,"")));if(!e||!e.documentElement)return n&&n(null),!1;C.parseSVGDocument(e.documentElement,function(t,e,i,r){n&&n(t,e,i,r)},i,r)}})},loadSVGFromString:function(t,n,e,i){var r;if(t=t.trim(),void 0!==C.window.DOMParser){var s=new C.window.DOMParser;s&&s.parseFromString&&(r=s.parseFromString(t,"text/xml"))}else C.window.ActiveXObject&&((r=new ActiveXObject("Microsoft.XMLDOM")).async="false",r.loadXML(t.replace(//i,"")));C.parseSVGDocument(r.documentElement,function(t,e,i,r){n(t,e,i,r)},e,i)}})}("undefined"!=typeof exports?exports:this),fabric.ElementsParser=function(t,e,i,r,n,s){this.elements=t,this.callback=e,this.options=i,this.reviver=r,this.svgUid=i&&i.svgUid||0,this.parsingOptions=n,this.regexUrl=/^url\(['"]?#([^'"]+)['"]?\)/g,this.doc=s},function(t){t.parse=function(){this.instances=new Array(this.elements.length),this.numElements=this.elements.length,this.createObjects()},t.createObjects=function(){var i=this;this.elements.forEach(function(t,e){t.setAttribute("svgUid",i.svgUid),i.createObject(t,e)})},t.findTag=function(t){return fabric[fabric.util.string.capitalize(t.tagName.replace("svg:",""))]},t.createObject=function(t,e){var i=this.findTag(t);if(i&&i.fromElement)try{i.fromElement(t,this.createCallback(e,t),this.options)}catch(t){fabric.log(t)}else this.checkIfDone()},t.createCallback=function(i,r){var n=this;return function(t){var e;n.resolveGradient(t,r,"fill"),n.resolveGradient(t,r,"stroke"),t instanceof fabric.Image&&t._originalElement&&(e=t.parsePreserveAspectRatioAttribute(r)),t._removeTransformMatrix(e),n.resolveClipPath(t,r),n.reviver&&n.reviver(r,t),n.instances[i]=t,n.checkIfDone()}},t.extractPropertyDefinition=function(t,e,i){var r=t[e],n=this.regexUrl;if(n.test(r)){n.lastIndex=0;var s=n.exec(r)[1];return n.lastIndex=0,fabric[i][this.svgUid][s]}},t.resolveGradient=function(t,e,i){var r=this.extractPropertyDefinition(t,i,"gradientDefs");if(r){var n=e.getAttribute(i+"-opacity"),s=fabric.Gradient.fromElement(r,t,n,this.options);t.set(i,s)}},t.createClipPathCallback=function(t,e){return function(t){t._removeTransformMatrix(),t.fillRule=t.clipRule,e.push(t)}},t.resolveClipPath=function(t,e){var i,r,n,s,o=this.extractPropertyDefinition(t,"clipPath","clipPaths");if(o){n=[],r=fabric.util.invertTransform(t.calcTransformMatrix());for(var a=o[0].parentNode,h=e;h.parentNode&&h.getAttribute("clip-path")!==t.clipPath;)h=h.parentNode;h.parentNode.appendChild(a);for(var c=0;ct.x&&this.y>t.y},gte:function(t){return this.x>=t.x&&this.y>=t.y},lerp:function(t,e){return void 0===e&&(e=.5),e=Math.max(Math.min(1,e),0),new i(this.x+(t.x-this.x)*e,this.y+(t.y-this.y)*e)},distanceFrom:function(t){var e=this.x-t.x,i=this.y-t.y;return Math.sqrt(e*e+i*i)},midPointFrom:function(t){return this.lerp(t)},min:function(t){return new i(Math.min(this.x,t.x),Math.min(this.y,t.y))},max:function(t){return new i(Math.max(this.x,t.x),Math.max(this.y,t.y))},toString:function(){return this.x+","+this.y},setXY:function(t,e){return this.x=t,this.y=e,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setFromPoint:function(t){return this.x=t.x,this.y=t.y,this},swap:function(t){var e=this.x,i=this.y;this.x=t.x,this.y=t.y,t.x=e,t.y=i},clone:function(){return new i(this.x,this.y)}}}("undefined"!=typeof exports?exports:this),function(t){"use strict";var f=t.fabric||(t.fabric={});function d(t){this.status=t,this.points=[]}f.Intersection?f.warn("fabric.Intersection is already defined"):(f.Intersection=d,f.Intersection.prototype={constructor:d,appendPoint:function(t){return this.points.push(t),this},appendPoints:function(t){return this.points=this.points.concat(t),this}},f.Intersection.intersectLineLine=function(t,e,i,r){var n,s=(r.x-i.x)*(t.y-i.y)-(r.y-i.y)*(t.x-i.x),o=(e.x-t.x)*(t.y-i.y)-(e.y-t.y)*(t.x-i.x),a=(r.y-i.y)*(e.x-t.x)-(r.x-i.x)*(e.y-t.y);if(0!==a){var h=s/a,c=o/a;0<=h&&h<=1&&0<=c&&c<=1?(n=new d("Intersection")).appendPoint(new f.Point(t.x+h*(e.x-t.x),t.y+h*(e.y-t.y))):n=new d}else n=new d(0===s||0===o?"Coincident":"Parallel");return n},f.Intersection.intersectLinePolygon=function(t,e,i){var r,n,s,o,a=new d,h=i.length;for(o=0;oo.r2,c=this.gradientTransform?this.gradientTransform.concat():fabric.iMatrix.concat(),l=-this.offsetX,u=-this.offsetY,f=!!e.additionalTransform,d="pixels"===this.gradientUnits?"userSpaceOnUse":"objectBoundingBox";if(a.sort(function(t,e){return t.offset-e.offset}),"objectBoundingBox"===d?(l/=t.width,u/=t.height):(l+=t.width/2,u+=t.height/2),"path"===t.type&&(l-=t.pathOffset.x,u-=t.pathOffset.y),c[4]-=l,c[5]-=u,s='id="SVGID_'+this.id+'" gradientUnits="'+d+'"',s+=' gradientTransform="'+(f?e.additionalTransform+" ":"")+fabric.util.matrixToSVG(c)+'" ',"linear"===this.type?n=["\n']:"radial"===this.type&&(n=["\n']),"radial"===this.type){if(h)for((a=a.concat()).reverse(),i=0,r=a.length;i\n')}return n.push("linear"===this.type?"\n":"\n"),n.join("")},toLive:function(t,e){var i,r,n,s=fabric.util.object.clone(this.coords),o=s.x1,a=s.y1,h=s.x2,c=s.y2,l=this.colorStops;if(this.type){for(e instanceof fabric.Text&&"percentage"===this.gradientUnits&&(o*=e.width,a*=e.height,h*=e.width,c*=e.height),"linear"===this.type?i=t.createLinearGradient(o,a,h,c):"radial"===this.type&&(i=t.createRadialGradient(o,a,s.r1,h,c,s.r2)),r=0,n=l.length;r\n\n\n'},setOptions:function(t){for(var e in t)this[e]=t[e]},toLive:function(t){var e="function"==typeof this.source?this.source():this.source;if(!e)return"";if(void 0!==e.src){if(!e.complete)return"";if(0===e.naturalWidth||0===e.naturalHeight)return""}return t.createPattern(e,this.repeat)}})}(),function(t){"use strict";var o=t.fabric||(t.fabric={}),a=o.util.toFixed;o.Shadow?o.warn("fabric.Shadow is already defined."):(o.Shadow=o.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,nonScaling:!1,initialize:function(t){for(var e in"string"==typeof t&&(t=this._parseShadow(t)),t)this[e]=t[e];this.id=o.Object.__uid++},_parseShadow:function(t){var e=t.trim(),i=o.Shadow.reOffsetsAndBlur.exec(e)||[];return{color:(e.replace(o.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)").trim(),offsetX:parseInt(i[1],10)||0,offsetY:parseInt(i[2],10)||0,blur:parseInt(i[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(t){var e=40,i=40,r=o.Object.NUM_FRACTION_DIGITS,n=o.util.rotateVector({x:this.offsetX,y:this.offsetY},o.util.degreesToRadians(-t.angle)),s=new o.Color(this.color);return t.width&&t.height&&(e=100*a((Math.abs(n.x)+this.blur)/t.width,r)+20,i=100*a((Math.abs(n.y)+this.blur)/t.height,r)+20),t.flipX&&(n.x*=-1),t.flipY&&(n.y*=-1),'\n\t\n\t\n\t\n\t\n\t\n\t\t\n\t\t\n\t\n\n'},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY,affectStroke:this.affectStroke,nonScaling:this.nonScaling};var e={},i=o.Shadow.prototype;return["color","blur","offsetX","offsetY","affectStroke","nonScaling"].forEach(function(t){this[t]!==i[t]&&(e[t]=this[t])},this),e}}),o.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/)}("undefined"!=typeof exports?exports:this),function(){"use strict";if(fabric.StaticCanvas)fabric.warn("fabric.StaticCanvas is already defined.");else{var n=fabric.util.object.extend,t=fabric.util.getElementOffset,c=fabric.util.removeFromArray,a=fabric.util.toFixed,s=fabric.util.transformPoint,o=fabric.util.invertTransform,i=fabric.util.getNodeCanvas,r=fabric.util.createCanvasElement,e=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass(fabric.CommonMethods,{initialize:function(t,e){e||(e={}),this.renderAndResetBound=this.renderAndReset.bind(this),this.requestRenderAllBound=this.requestRenderAll.bind(this),this._initStatic(t,e)},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!1,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!1,imageSmoothingEnabled:!0,viewportTransform:fabric.iMatrix.concat(),backgroundVpt:!0,overlayVpt:!0,onBeforeScaleRotate:function(){},enableRetinaScaling:!0,vptCoords:{},skipOffscreen:!0,clipPath:void 0,_initStatic:function(t,e){var i=this.requestRenderAllBound;this._objects=[],this._createLowerCanvas(t),this._initOptions(e),this._setImageSmoothing(),this.interactive||this._initRetinaScaling(),e.overlayImage&&this.setOverlayImage(e.overlayImage,i),e.backgroundImage&&this.setBackgroundImage(e.backgroundImage,i),e.backgroundColor&&this.setBackgroundColor(e.backgroundColor,i),e.overlayColor&&this.setOverlayColor(e.overlayColor,i),this.calcOffset()},_isRetinaScaling:function(){return 1!==fabric.devicePixelRatio&&this.enableRetinaScaling},getRetinaScaling:function(){return this._isRetinaScaling()?fabric.devicePixelRatio:1},_initRetinaScaling:function(){if(this._isRetinaScaling()){var t=fabric.devicePixelRatio;this.__initRetinaScaling(t,this.lowerCanvasEl,this.contextContainer),this.upperCanvasEl&&this.__initRetinaScaling(t,this.upperCanvasEl,this.contextTop)}},__initRetinaScaling:function(t,e,i){e.setAttribute("width",this.width*t),e.setAttribute("height",this.height*t),i.scale(t,t)},calcOffset:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(t,e,i){return this.__setBgOverlayImage("overlayImage",t,e,i)},setBackgroundImage:function(t,e,i){return this.__setBgOverlayImage("backgroundImage",t,e,i)},setOverlayColor:function(t,e){return this.__setBgOverlayColor("overlayColor",t,e)},setBackgroundColor:function(t,e){return this.__setBgOverlayColor("backgroundColor",t,e)},_setImageSmoothing:function(){var t=this.getContext();t.imageSmoothingEnabled=t.imageSmoothingEnabled||t.webkitImageSmoothingEnabled||t.mozImageSmoothingEnabled||t.msImageSmoothingEnabled||t.oImageSmoothingEnabled,t.imageSmoothingEnabled=this.imageSmoothingEnabled},__setBgOverlayImage:function(i,t,r,n){return"string"==typeof t?fabric.util.loadImage(t,function(t){if(t){var e=new fabric.Image(t,n);(this[i]=e).canvas=this}r&&r(t)},this,n&&n.crossOrigin):(n&&t.setOptions(n),(this[i]=t)&&(t.canvas=this),r&&r(t)),this},__setBgOverlayColor:function(t,e,i){return this[t]=e,this._initGradient(e,t),this._initPattern(e,t,i),this},_createCanvasElement:function(){var t=r();if(!t)throw e;if(t.style||(t.style={}),void 0===t.getContext)throw e;return t},_initOptions:function(t){var e=this.lowerCanvasEl;this._setOptions(t),this.width=this.width||parseInt(e.width,10)||0,this.height=this.height||parseInt(e.height,10)||0,this.lowerCanvasEl.style&&(e.width=this.width,e.height=this.height,e.style.width=this.width+"px",e.style.height=this.height+"px",this.viewportTransform=this.viewportTransform.slice())},_createLowerCanvas:function(t){t&&t.getContext?this.lowerCanvasEl=t:this.lowerCanvasEl=fabric.util.getById(t)||this._createCanvasElement(),fabric.util.addClass(this.lowerCanvasEl,"lower-canvas"),this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(t,e){return this.setDimensions({width:t},e)},setHeight:function(t,e){return this.setDimensions({height:t},e)},setDimensions:function(t,e){var i;for(var r in e=e||{},t)i=t[r],e.cssOnly||(this._setBackstoreDimension(r,t[r]),i+="px",this.hasLostContext=!0),e.backstoreOnly||this._setCssDimension(r,i);return this._isCurrentlyDrawing&&this.freeDrawingBrush&&this.freeDrawingBrush._setBrushStyles(),this._initRetinaScaling(),this._setImageSmoothing(),this.calcOffset(),e.cssOnly||this.requestRenderAll(),this},_setBackstoreDimension:function(t,e){return this.lowerCanvasEl[t]=e,this.upperCanvasEl&&(this.upperCanvasEl[t]=e),this.cacheCanvasEl&&(this.cacheCanvasEl[t]=e),this[t]=e,this},_setCssDimension:function(t,e){return this.lowerCanvasEl.style[t]=e,this.upperCanvasEl&&(this.upperCanvasEl.style[t]=e),this.wrapperEl&&(this.wrapperEl.style[t]=e),this},getZoom:function(){return this.viewportTransform[0]},setViewportTransform:function(t){var e,i,r,n=this._activeObject;for(this.viewportTransform=t,i=0,r=this._objects.length;i\n'),this._setSVGBgOverlayColor(i,"background"),this._setSVGBgOverlayImage(i,"backgroundImage",e),this._setSVGObjects(i,e),this.clipPath&&i.push("\n"),this._setSVGBgOverlayColor(i,"overlay"),this._setSVGBgOverlayImage(i,"overlayImage",e),i.push(""),i.join("")},_setSVGPreamble:function(t,e){e.suppressPreamble||t.push('\n','\n')},_setSVGHeader:function(t,e){var i,r=e.width||this.width,n=e.height||this.height,s='viewBox="0 0 '+this.width+" "+this.height+'" ',o=fabric.Object.NUM_FRACTION_DIGITS;e.viewBox?s='viewBox="'+e.viewBox.x+" "+e.viewBox.y+" "+e.viewBox.width+" "+e.viewBox.height+'" ':this.svgViewportTransformation&&(i=this.viewportTransform,s='viewBox="'+a(-i[4]/i[0],o)+" "+a(-i[5]/i[3],o)+" "+a(this.width/i[0],o)+" "+a(this.height/i[3],o)+'" '),t.push("\n',"Created with Fabric.js ",fabric.version,"\n","\n",this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),this.createSVGClipPathMarkup(e),"\n")},createSVGClipPathMarkup:function(t){var e=this.clipPath;return e?(e.clipPathId="CLIPPATH_"+fabric.Object.__uid++,'\n'+this.clipPath.toClipPathSVG(t.reviver)+"\n"):""},createSVGRefElementsMarkup:function(){var s=this;return["background","overlay"].map(function(t){var e=s[t+"Color"];if(e&&e.toLive){var i=s[t+"Vpt"],r=s.viewportTransform,n={width:s.width/(i?r[0]:1),height:s.height/(i?r[3]:1)};return e.toSVG(n,{additionalTransform:i?fabric.util.matrixToSVG(r):""})}}).join("")},createSVGFontFacesMarkup:function(){var t,e,i,r,n,s,o,a,h="",c={},l=fabric.fontPaths,u=this._objects;for(o=0,a=u.length;o',"\n",h,"","\n"].join("")),h},_setSVGObjects:function(t,e){var i,r,n,s=this._objects;for(r=0,n=s.length;r\n")}else t.push('\n")},sendToBack:function(t){if(!t)return this;var e,i,r,n=this._activeObject;if(t===n&&"activeSelection"===t.type)for(e=(r=n._objects).length;e--;)i=r[e],c(this._objects,i),this._objects.unshift(i);else c(this._objects,t),this._objects.unshift(t);return this.renderOnAddRemove&&this.requestRenderAll(),this},bringToFront:function(t){if(!t)return this;var e,i,r,n=this._activeObject;if(t===n&&"activeSelection"===t.type)for(r=n._objects,e=0;e"}}),n(fabric.StaticCanvas.prototype,fabric.Observable),n(fabric.StaticCanvas.prototype,fabric.Collection),n(fabric.StaticCanvas.prototype,fabric.DataURLExporter),n(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(t){var e=r();if(!e||!e.getContext)return null;var i=e.getContext("2d");if(!i)return null;switch(t){case"setLineDash":return void 0!==i.setLineDash;default:return null}}}),fabric.StaticCanvas.prototype.toJSON=fabric.StaticCanvas.prototype.toObject,fabric.isLikelyNode&&(fabric.StaticCanvas.prototype.createPNGStream=function(){var t=i(this.lowerCanvasEl);return t&&t.createPNGStream()},fabric.StaticCanvas.prototype.createJPEGStream=function(t){var e=i(this.lowerCanvasEl);return e&&e.createJPEGStream(t)})}}(),fabric.BaseBrush=fabric.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",strokeMiterLimit:10,strokeDashArray:null,setShadow:function(t){return this.shadow=new fabric.Shadow(t),this},_setBrushStyles:function(){var t=this.canvas.contextTop;t.strokeStyle=this.color,t.lineWidth=this.width,t.lineCap=this.strokeLineCap,t.miterLimit=this.strokeMiterLimit,t.lineJoin=this.strokeLineJoin,fabric.StaticCanvas.supports("setLineDash")&&t.setLineDash(this.strokeDashArray||[])},_saveAndTransform:function(t){var e=this.canvas.viewportTransform;t.save(),t.transform(e[0],e[1],e[2],e[3],e[4],e[5])},_setShadow:function(){if(this.shadow){var t=this.canvas,e=this.shadow,i=t.contextTop,r=t.getZoom();t&&t._isRetinaScaling()&&(r*=fabric.devicePixelRatio),i.shadowColor=e.color,i.shadowBlur=e.blur*r,i.shadowOffsetX=e.offsetX*r,i.shadowOffsetY=e.offsetY*r}},needsFullRender:function(){return new fabric.Color(this.color).getAlpha()<1||!!this.shadow},_resetShadow:function(){var t=this.canvas.contextTop;t.shadowColor="",t.shadowBlur=t.shadowOffsetX=t.shadowOffsetY=0}}),fabric.PencilBrush=fabric.util.createClass(fabric.BaseBrush,{decimate:.4,initialize:function(t){this.canvas=t,this._points=[]},_drawSegment:function(t,e,i){var r=e.midPointFrom(i);return t.quadraticCurveTo(e.x,e.y,r.x,r.y),r},onMouseDown:function(t,e){this.canvas._isMainEvent(e.e)&&(this._prepareForDrawing(t),this._captureDrawingPath(t),this._render())},onMouseMove:function(t,e){if(this.canvas._isMainEvent(e.e)&&this._captureDrawingPath(t)&&1t[e-2].x?1:n.x===t[e-2].x?0:-1,h=n.y>t[e-2].y?1:n.y===t[e-2].y?0:-1),i.push("L ",n.x+a*r," ",n.y+h*r),i},createPath:function(t){var e=new fabric.Path(t,{fill:null,stroke:this.color,strokeWidth:this.width,strokeLineCap:this.strokeLineCap,strokeMiterLimit:this.strokeMiterLimit,strokeLineJoin:this.strokeLineJoin,strokeDashArray:this.strokeDashArray});return this.shadow&&(this.shadow.affectStroke=!0,e.setShadow(this.shadow)),e},decimatePoints:function(t,e){if(t.length<=2)return t;var i,r=this.canvas.getZoom(),n=Math.pow(e/r,2),s=t.length-1,o=t[0],a=[o];for(i=1;i=a.getMinWidth()&&(l=p!==a.width,a.set("width",p),l)}return s&&u<=0&&un?t.x<0?t.x+=n:t.x-=n:t.x=0,h(t.y)>n?t.y<0?t.y+=n:t.y-=n:t.y=0},_rotateObject:function(t,e){var i=this._currentTransform,r=i.target,n=r.translateToOriginPoint(r.getCenterPoint(),i.originX,i.originY);if(r.lockRotation)return!1;var s=g(i.ey-n.y,i.ex-n.x),o=g(e-n.y,t-n.x),a=d(o-s+i.theta),h=!0;if(0"},getObjectScaling:function(){var t=this.scaleX,e=this.scaleY;if(this.group){var i=this.group.getObjectScaling();t*=i.scaleX,e*=i.scaleY}return{scaleX:t,scaleY:e}},getTotalObjectScaling:function(){var t=this.getObjectScaling(),e=t.scaleX,i=t.scaleY;if(this.canvas){var r=this.canvas.getZoom(),n=this.canvas.getRetinaScaling();e*=r*n,i*=r*n}return{scaleX:e,scaleY:i}},getObjectOpacity:function(){var t=this.opacity;return this.group&&(t*=this.group.getObjectOpacity()),t},_set:function(t,e){var i="scaleX"===t||"scaleY"===t,r=this[t]!==e,n=!1;return i&&(e=this._constrainScale(e)),"scaleX"===t&&e<0?(this.flipX=!this.flipX,e*=-1):"scaleY"===t&&e<0?(this.flipY=!this.flipY,e*=-1):"shadow"!==t||!e||e instanceof x.Shadow?"dirty"===t&&this.group&&this.group.set("dirty",e):e=new x.Shadow(e),this[t]=e,r&&(n=this.group&&this.group.isOnACache(),-1=t.x&&n.left+n.width<=e.x&&n.top>=t.y&&n.top+n.height<=e.y},containsPoint:function(t,e,i,r){e=e||this._getImageLines(r?this.calcCoords(i):i?this.aCoords:this.oCoords);var n=this._findCrossPoints(t,e);return 0!==n&&n%2==1},isOnScreen:function(t){if(!this.canvas)return!1;for(var e,i=this.canvas.vptCoords.tl,r=this.canvas.vptCoords.br,n=this.getCoords(!0,t),s=0;s<4;s++)if((e=n[s]).x<=r.x&&e.x>=i.x&&e.y<=r.y&&e.y>=i.y)return!0;return!!this.intersectsWithRect(i,r,!0,t)||this._containsCenterOfCanvas(i,r,t)},_containsCenterOfCanvas:function(t,e,i){var r={x:(t.x+e.x)/2,y:(t.y+e.y)/2};return!!this.containsPoint(r,null,!0,i)},isPartiallyOnScreen:function(t){if(!this.canvas)return!1;var e=this.canvas.vptCoords.tl,i=this.canvas.vptCoords.br;return!!this.intersectsWithRect(e,i,!0,t)||this._containsCenterOfCanvas(e,i,t)},_getImageLines:function(t){return{topline:{o:t.tl,d:t.tr},rightline:{o:t.tr,d:t.br},bottomline:{o:t.br,d:t.bl},leftline:{o:t.bl,d:t.tl}}},_findCrossPoints:function(t,e){var i,r,n,s=0;for(var o in e)if(!((n=e[o]).o.y=t.y&&n.d.y>=t.y||(n.o.x===n.d.x&&n.o.x>=t.x?r=n.o.x:(0,i=(n.d.y-n.o.y)/(n.d.x-n.o.x),r=-(t.y-0*t.x-(n.o.y-i*n.o.x))/(0-i)),r>=t.x&&(s+=1),2!==s)))break;return s},getBoundingRect:function(t,e){var i=this.getCoords(t,e);return fabric.util.makeBoundingBoxFromPoints(i)},getScaledWidth:function(){return this._getTransformedDimensions().x},getScaledHeight:function(){return this._getTransformedDimensions().y},_constrainScale:function(t){return Math.abs(t)\n')}},toSVG:function(t){return this._createBaseSVGMarkup(this._toSVG(t),{reviver:t})},toClipPathSVG:function(t){return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(t),{reviver:t})},_createBaseClipPathSVGMarkup:function(t,e){var i=(e=e||{}).reviver,r=e.additionalTransform||"",n=[this.getSvgTransform(!0,r),this.getSvgCommons()].join(""),s=t.indexOf("COMMON_PARTS");return t[s]=n,i?i(t.join("")):t.join("")},_createBaseSVGMarkup:function(t,e){var i,r,n=(e=e||{}).noStyle,s=e.reviver,o=n?"":'style="'+this.getSvgStyles()+'" ',a=e.withShadow?'style="'+this.getSvgFilter()+'" ':"",h=this.clipPath,c=this.strokeUniform?'vector-effect="non-scaling-stroke" ':"",l=h&&h.absolutePositioned,u=this.stroke,f=this.fill,d=this.shadow,g=[],p=t.indexOf("COMMON_PARTS"),v=e.additionalTransform;return h&&(h.clipPathId="CLIPPATH_"+fabric.Object.__uid++,r='\n'+h.toClipPathSVG(s)+"\n"),l&&g.push("\n"),g.push("\n"),i=[o,c,n?"":this.addPaintOrder()," ",v?'transform="'+v+'" ':""].join(""),t[p]=i,f&&f.toLive&&g.push(f.toSVG(this)),u&&u.toLive&&g.push(u.toSVG(this)),d&&g.push(d.toSVG(this)),h&&g.push(r),g.push(t.join("")),g.push("\n"),l&&g.push("\n"),s?s(g.join("")):g.join("")},addPaintOrder:function(){return"fill"!==this.paintFirst?' paint-order="'+this.paintFirst+'" ':""}})}(),function(){var n=fabric.util.object.extend,r="stateProperties";function s(e,t,i){var r={};i.forEach(function(t){r[t]=e[t]}),n(e[t],r,!0)}fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(t){var e="_"+(t=t||r);return Object.keys(this[e]).length\n']}}),s.Line.ATTRIBUTE_NAMES=s.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),s.Line.fromElement=function(t,e,i){i=i||{};var r=s.parseAttributes(t,s.Line.ATTRIBUTE_NAMES),n=[r.x1||0,r.y1||0,r.x2||0,r.y2||0];e(new s.Line(n,o(r,i)))},s.Line.fromObject=function(t,e){var i=r(t,!0);i.points=[t.x1,t.y1,t.x2,t.y2],s.Object._fromObject("Line",i,function(t){delete t.points,e&&e(t)},"points")})}("undefined"!=typeof exports?exports:this),function(t){"use strict";var a=t.fabric||(t.fabric={}),h=Math.PI;a.Circle?a.warn("fabric.Circle is already defined."):(a.Circle=a.util.createClass(a.Object,{type:"circle",radius:0,startAngle:0,endAngle:2*h,cacheProperties:a.Object.prototype.cacheProperties.concat("radius","startAngle","endAngle"),_set:function(t,e){return this.callSuper("_set",t,e),"radius"===t&&this.setRadius(e),this},toObject:function(t){return this.callSuper("toObject",["radius","startAngle","endAngle"].concat(t))},_toSVG:function(){var t,e=(this.endAngle-this.startAngle)%(2*h);if(0===e)t=["\n'];else{var i=a.util.cos(this.startAngle)*this.radius,r=a.util.sin(this.startAngle)*this.radius,n=a.util.cos(this.endAngle)*this.radius,s=a.util.sin(this.endAngle)*this.radius,o=h\n"]}return t},_render:function(t){t.beginPath(),t.arc(0,0,this.radius,this.startAngle,this.endAngle,!1),this._renderPaintInOrder(t)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(t){return this.radius=t,this.set("width",2*t).set("height",2*t)}}),a.Circle.ATTRIBUTE_NAMES=a.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),a.Circle.fromElement=function(t,e){var i,r=a.parseAttributes(t,a.Circle.ATTRIBUTE_NAMES);if(!("radius"in(i=r)&&0<=i.radius))throw new Error("value of `r` attribute is required and can not be negative");r.left=(r.left||0)-r.radius,r.top=(r.top||0)-r.radius,e(new a.Circle(r))},a.Circle.fromObject=function(t,e){return a.Object._fromObject("Circle",t,e)})}("undefined"!=typeof exports?exports:this),function(t){"use strict";var r=t.fabric||(t.fabric={});r.Triangle?r.warn("fabric.Triangle is already defined"):(r.Triangle=r.util.createClass(r.Object,{type:"triangle",width:100,height:100,_render:function(t){var e=this.width/2,i=this.height/2;t.beginPath(),t.moveTo(-e,i),t.lineTo(0,-i),t.lineTo(e,i),t.closePath(),this._renderPaintInOrder(t)},_renderDashedStroke:function(t){var e=this.width/2,i=this.height/2;t.beginPath(),r.util.drawDashedLine(t,-e,i,0,-i,this.strokeDashArray),r.util.drawDashedLine(t,0,-i,e,i,this.strokeDashArray),r.util.drawDashedLine(t,e,i,-e,i,this.strokeDashArray),t.closePath()},_toSVG:function(){var t=this.width/2,e=this.height/2;return["']}}),r.Triangle.fromObject=function(t,e){return r.Object._fromObject("Triangle",t,e)})}("undefined"!=typeof exports?exports:this),function(t){"use strict";var r=t.fabric||(t.fabric={}),e=2*Math.PI;r.Ellipse?r.warn("fabric.Ellipse is already defined."):(r.Ellipse=r.util.createClass(r.Object,{type:"ellipse",rx:0,ry:0,cacheProperties:r.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(t){this.callSuper("initialize",t),this.set("rx",t&&t.rx||0),this.set("ry",t&&t.ry||0)},_set:function(t,e){switch(this.callSuper("_set",t,e),t){case"rx":this.rx=e,this.set("width",2*e);break;case"ry":this.ry=e,this.set("height",2*e)}return this},getRx:function(){return this.get("rx")*this.get("scaleX")},getRy:function(){return this.get("ry")*this.get("scaleY")},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},_toSVG:function(){return["\n']},_render:function(t){t.beginPath(),t.save(),t.transform(1,0,0,this.ry/this.rx,0,0),t.arc(0,0,this.rx,0,e,!1),t.restore(),this._renderPaintInOrder(t)}}),r.Ellipse.ATTRIBUTE_NAMES=r.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),r.Ellipse.fromElement=function(t,e){var i=r.parseAttributes(t,r.Ellipse.ATTRIBUTE_NAMES);i.left=(i.left||0)-i.rx,i.top=(i.top||0)-i.ry,e(new r.Ellipse(i))},r.Ellipse.fromObject=function(t,e){return r.Object._fromObject("Ellipse",t,e)})}("undefined"!=typeof exports?exports:this),function(t){"use strict";var s=t.fabric||(t.fabric={}),o=s.util.object.extend;s.Rect?s.warn("fabric.Rect is already defined"):(s.Rect=s.util.createClass(s.Object,{stateProperties:s.Object.prototype.stateProperties.concat("rx","ry"),type:"rect",rx:0,ry:0,cacheProperties:s.Object.prototype.cacheProperties.concat("rx","ry"),initialize:function(t){this.callSuper("initialize",t),this._initRxRy()},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(t){var e=this.rx?Math.min(this.rx,this.width/2):0,i=this.ry?Math.min(this.ry,this.height/2):0,r=this.width,n=this.height,s=-this.width/2,o=-this.height/2,a=0!==e||0!==i,h=.4477152502;t.beginPath(),t.moveTo(s+e,o),t.lineTo(s+r-e,o),a&&t.bezierCurveTo(s+r-h*e,o,s+r,o+h*i,s+r,o+i),t.lineTo(s+r,o+n-i),a&&t.bezierCurveTo(s+r,o+n-h*i,s+r-h*e,o+n,s+r-e,o+n),t.lineTo(s+e,o+n),a&&t.bezierCurveTo(s+h*e,o+n,s,o+n-h*i,s,o+n-i),t.lineTo(s,o+i),a&&t.bezierCurveTo(s,o+h*i,s+h*e,o,s+e,o),t.closePath(),this._renderPaintInOrder(t)},_renderDashedStroke:function(t){var e=-this.width/2,i=-this.height/2,r=this.width,n=this.height;t.beginPath(),s.util.drawDashedLine(t,e,i,e+r,i,this.strokeDashArray),s.util.drawDashedLine(t,e+r,i,e+r,i+n,this.strokeDashArray),s.util.drawDashedLine(t,e+r,i+n,e,i+n,this.strokeDashArray),s.util.drawDashedLine(t,e,i+n,e,i,this.strokeDashArray),t.closePath()},toObject:function(t){return this.callSuper("toObject",["rx","ry"].concat(t))},_toSVG:function(){return["\n']}}),s.Rect.ATTRIBUTE_NAMES=s.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),s.Rect.fromElement=function(t,e,i){if(!t)return e(null);i=i||{};var r=s.parseAttributes(t,s.Rect.ATTRIBUTE_NAMES);r.left=r.left||0,r.top=r.top||0,r.height=r.height||0,r.width=r.width||0;var n=new s.Rect(o(i?s.util.object.clone(i):{},r));n.visible=n.visible&&0\n']},commonRender:function(t){var e,i=this.points.length,r=this.pathOffset.x,n=this.pathOffset.y;if(!i||isNaN(this.points[i-1].y))return!1;t.beginPath(),t.moveTo(this.points[0].x-r,this.points[0].y-n);for(var s=0;s"},toObject:function(t){return n(this.callSuper("toObject",t),{path:this.path.map(function(t){return t.slice()})})},toDatalessObject:function(t){var e=this.toObject(["sourcePath"].concat(t));return e.sourcePath&&delete e.path,e},_toSVG:function(){return["\n"]},_getOffsetTransform:function(){var t=m.Object.NUM_FRACTION_DIGITS;return" translate("+e(-this.pathOffset.x,t)+", "+e(-this.pathOffset.y,t)+")"},toClipPathSVG:function(t){var e=this._getOffsetTransform();return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(),{reviver:t,additionalTransform:e})},toSVG:function(t){var e=this._getOffsetTransform();return this._createBaseSVGMarkup(this._toSVG(),{reviver:t,additionalTransform:e})},complexity:function(){return this.path.length},_parsePath:function(){for(var t,e,i,r,n,s=[],o=[],a=m.rePathCommand,h=0,c=this.path.length;hd)for(var p=1,v=n.length;p"},addWithUpdate:function(t){return this._restoreObjectsState(),c.util.resetObjectTransform(this),t&&(this._objects.push(t),t.group=this,t._set("canvas",this.canvas)),this._calcBounds(),this._updateObjectsCoords(),this.setCoords(),this.dirty=!0,this},removeWithUpdate:function(t){return this._restoreObjectsState(),c.util.resetObjectTransform(this),this.remove(t),this._calcBounds(),this._updateObjectsCoords(),this.setCoords(),this.dirty=!0,this},_onObjectAdded:function(t){this.dirty=!0,t.group=this,t._set("canvas",this.canvas)},_onObjectRemoved:function(t){this.dirty=!0,delete t.group},_set:function(t,e){var i=this._objects.length;if(this.useSetOnGroup)for(;i--;)this._objects[i].setOnGroup(t,e);if("canvas"===t)for(;i--;)this._objects[i]._set(t,e);c.Object.prototype._set.call(this,t,e)},toObject:function(r){var n=this.includeDefaultValues,t=this._objects.map(function(t){var e=t.includeDefaultValues;t.includeDefaultValues=n;var i=t.toObject(r);return t.includeDefaultValues=e,i}),e=c.Object.prototype.toObject.call(this,r);return e.objects=t,e},toDatalessObject:function(r){var t,e=this.sourcePath;if(e)t=e;else{var n=this.includeDefaultValues;t=this._objects.map(function(t){var e=t.includeDefaultValues;t.includeDefaultValues=n;var i=t.toDatalessObject(r);return t.includeDefaultValues=e,i})}var i=c.Object.prototype.toDatalessObject.call(this,r);return i.objects=t,i},render:function(t){this._transformDone=!0,this.callSuper("render",t),this._transformDone=!1},shouldCache:function(){var t=c.Object.prototype.shouldCache.call(this);if(t)for(var e=0,i=this._objects.length;e\n"],i=0,r=this._objects.length;i\n"),e},getSvgStyles:function(){var t=void 0!==this.opacity&&1!==this.opacity?"opacity: "+this.opacity+";":"",e=this.visible?"":" visibility: hidden;";return[t,this.getSvgFilter(),e].join("")},toClipPathSVG:function(t){for(var e=[],i=0,r=this._objects.length;i"},shouldCache:function(){return!1},isOnACache:function(){return!1},_renderControls:function(t,e,i){t.save(),t.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,this.callSuper("_renderControls",t,e),void 0===(i=i||{}).hasControls&&(i.hasControls=!1),void 0===i.hasRotatingPoint&&(i.hasRotatingPoint=!1),i.forActiveSelection=!0;for(var r=0,n=this._objects.length;r\n','\t\n',"\n"),s=' clip-path="url(#imageCrop_'+o+')" '}if(i.push("\t\n"),this.stroke||this.strokeDashArray){var a=this.fill;this.fill=null,t=["\t\n'],this.fill=a}return e="fill"!==this.paintFirst?e.concat(t,i):e.concat(i,t)},getSrc:function(t){var e=t?this._element:this._originalElement;return e?e.toDataURL?e.toDataURL():this.srcFromAttribute?e.getAttribute("src"):e.src:this.src||""},setSrc:function(t,e,i){return fabric.util.loadImage(t,function(t){this.setElement(t,i),this._setWidthHeight(),e&&e(this)},this,i&&i.crossOrigin),this},toString:function(){return'#'},applyResizeFilters:function(){var t=this.resizeFilter,e=this.minimumScaleTrigger,i=this.getTotalObjectScaling(),r=i.scaleX,n=i.scaleY,s=this._filteredEl||this._originalElement;if(this.group&&this.set("dirty",!0),!t||e=t;for(var a=["highp","mediump","lowp"],h=0;h<3;h++)if(void 0,i="precision "+a[h]+" float;\nvoid main(){}",r=(e=s).createShader(e.FRAGMENT_SHADER),e.shaderSource(r,i),e.compileShader(r),e.getShaderParameter(r,e.COMPILE_STATUS)){fabric.webGlPrecision=a[h];break}}return this.isSupported=o},(fabric.WebglFilterBackend=t).prototype={tileSize:2048,resources:{},setupGLContext:function(t,e){this.dispose(),this.createWebGLCanvas(t,e),this.aPosition=new Float32Array([0,0,0,1,1,0,1,1]),this.chooseFastestCopyGLTo2DMethod(t,e)},chooseFastestCopyGLTo2DMethod:function(t,e){var i,r=void 0!==window.performance;try{new ImageData(1,1),i=!0}catch(t){i=!1}var n="undefined"!=typeof ArrayBuffer,s="undefined"!=typeof Uint8ClampedArray;if(r&&i&&n&&s){var o=fabric.util.createCanvasElement(),a=new ArrayBuffer(t*e*4);if(fabric.forceGLPutImageData)return this.imageBuffer=a,void(this.copyGLTo2D=copyGLTo2DPutImageData);var h,c,l={imageBuffer:a,destinationWidth:t,destinationHeight:e,targetCanvas:o};o.width=t,o.height=e,h=window.performance.now(),copyGLTo2DDrawImage.call(l,this.gl,l),c=window.performance.now()-h,h=window.performance.now(),copyGLTo2DPutImageData.call(l,this.gl,l),window.performance.now()-h 0.0) {\n"+this.fragmentSource[t]+"}\n}"},retrieveShader:function(t){var e,i=this.type+"_"+this.mode;return t.programCache.hasOwnProperty(i)||(e=this.buildSource(this.mode),t.programCache[i]=this.createProgram(t.context,e)),t.programCache[i]},applyTo2d:function(t){var e,i,r,n,s,o,a,h=t.imageData.data,c=h.length,l=1-this.alpha;e=(a=new f.Color(this.color).getSource())[0]*this.alpha,i=a[1]*this.alpha,r=a[2]*this.alpha;for(var u=0;u'},_getCacheCanvasDimensions:function(){var t=this.callSuper("_getCacheCanvasDimensions"),e=this.fontSize;return t.width+=e*t.zoomX,t.height+=e*t.zoomY,t},_render:function(t){this._setTextStyles(t),this._renderTextLinesBackground(t),this._renderTextDecoration(t,"underline"),this._renderText(t),this._renderTextDecoration(t,"overline"),this._renderTextDecoration(t,"linethrough")},_renderText:function(t){"stroke"===this.paintFirst?(this._renderTextStroke(t),this._renderTextFill(t)):(this._renderTextFill(t),this._renderTextStroke(t))},_setTextStyles:function(t,e,i){t.textBaseline="alphabetic",t.font=this._getFontDeclaration(e,i)},calcTextWidth:function(){for(var t=this.getLineWidth(0),e=1,i=this._textLines.length;ethis.__selectionStartOnMouseDown?(this.selectionStart=this.__selectionStartOnMouseDown,this.selectionEnd=e):(this.selectionStart=e,this.selectionEnd=this.__selectionStartOnMouseDown),this.selectionStart===i&&this.selectionEnd===r||(this.restartCursorIfNeeded(),this._fireSelectionChanged(),this._updateTextarea(),this.renderCursorOrSelection()))}},_setEditingProps:function(){this.hoverCursor="text",this.canvas&&(this.canvas.defaultCursor=this.canvas.moveCursor="text"),this.borderColor=this.editingBorderColor,this.hasControls=this.selectable=!1,this.lockMovementX=this.lockMovementY=!0},fromStringToGraphemeSelection:function(t,e,i){var r=i.slice(0,t),n=fabric.util.string.graphemeSplit(r).length;if(t===e)return{selectionStart:n,selectionEnd:n};var s=i.slice(t,e);return{selectionStart:n,selectionEnd:n+fabric.util.string.graphemeSplit(s).length}},fromGraphemeToStringSelection:function(t,e,i){var r=i.slice(0,t).join("").length;return t===e?{selectionStart:r,selectionEnd:r}:{selectionStart:r,selectionEnd:r+i.slice(t,e).join("").length}},_updateTextarea:function(){if(this.cursorOffsetCache={},this.hiddenTextarea){if(!this.inCompositionMode){var t=this.fromGraphemeToStringSelection(this.selectionStart,this.selectionEnd,this._text);this.hiddenTextarea.selectionStart=t.selectionStart,this.hiddenTextarea.selectionEnd=t.selectionEnd}this.updateTextareaPosition()}},updateFromTextArea:function(){if(this.hiddenTextarea){this.cursorOffsetCache={},this.text=this.hiddenTextarea.value,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords());var t=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value);this.selectionEnd=this.selectionStart=t.selectionEnd,this.inCompositionMode||(this.selectionStart=t.selectionStart),this.updateTextareaPosition()}},updateTextareaPosition:function(){if(this.selectionStart===this.selectionEnd){var t=this._calcTextareaPosition();this.hiddenTextarea.style.left=t.left,this.hiddenTextarea.style.top=t.top}},_calcTextareaPosition:function(){if(!this.canvas)return{x:1,y:1};var t=this.inCompositionMode?this.compositionStart:this.selectionStart,e=this._getCursorBoundaries(t),i=this.get2DCursorLocation(t),r=i.lineIndex,n=i.charIndex,s=this.getValueOfPropertyAt(r,n,"fontSize")*this.lineHeight,o=e.leftOffset,a=this.calcTransformMatrix(),h={x:e.left+o,y:e.top+e.topOffset+s},c=this.canvas.getRetinaScaling(),l=this.canvas.upperCanvasEl,u=l.width/c,f=l.height/c,d=u-s,g=f-s,p=l.clientWidth/u,v=l.clientHeight/f;return h=fabric.util.transformPoint(h,a),(h=fabric.util.transformPoint(h,this.canvas.viewportTransform)).x*=p,h.y*=v,h.x<0&&(h.x=0),h.x>d&&(h.x=d),h.y<0&&(h.y=0),h.y>g&&(h.y=g),h.x+=this.canvas._offset.left,h.y+=this.canvas._offset.top,{left:h.x+"px",top:h.y+"px",fontSize:s+"px",charHeight:s}},_saveEditingProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,selectable:this.selectable,defaultCursor:this.canvas&&this.canvas.defaultCursor,moveCursor:this.canvas&&this.canvas.moveCursor}},_restoreEditingProps:function(){this._savedProps&&(this.hoverCursor=this._savedProps.hoverCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.selectable=this._savedProps.selectable,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY,this.canvas&&(this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor))},exitEditing:function(){var t=this._textBeforeEdit!==this.text;return this.selected=!1,this.isEditing=!1,this.selectionEnd=this.selectionStart,this.hiddenTextarea&&(this.hiddenTextarea.blur&&this.hiddenTextarea.blur(),this.canvas&&this.hiddenTextarea.parentNode.removeChild(this.hiddenTextarea),this.hiddenTextarea=null),this.abortCursorAnimation(),this._restoreEditingProps(),this._currentCursorOpacity=0,this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this.fire("editing:exited"),t&&this.fire("modified"),this.canvas&&(this.canvas.off("mouse:move",this.mouseMoveHandler),this.canvas.fire("text:editing:exited",{target:this}),t&&this.canvas.fire("object:modified",{target:this})),this},_removeExtraneousStyles:function(){for(var t in this.styles)this._textLines[t]||delete this.styles[t]},removeStyleFromTo:function(t,e){var i,r,n=this.get2DCursorLocation(t,!0),s=this.get2DCursorLocation(e,!0),o=n.lineIndex,a=n.charIndex,h=s.lineIndex,c=s.charIndex;if(o!==h){if(this.styles[o])for(i=a;it?this.selectionStart=t:this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd>t?this.selectionEnd=t:this.selectionEnd<0&&(this.selectionEnd=0)}})}(),fabric.util.object.extend(fabric.IText.prototype,{initDoubleClickSimulation:function(){this.__lastClickTime=+new Date,this.__lastLastClickTime=+new Date,this.__lastPointer={},this.on("mousedown",this.onMouseDown)},onMouseDown:function(t){if(this.canvas){this.__newClickTime=+new Date;var e=t.pointer;this.isTripleClick(e)&&(this.fire("tripleclick",t),this._stopEvent(t.e)),this.__lastLastClickTime=this.__lastClickTime,this.__lastClickTime=this.__newClickTime,this.__lastPointer=e,this.__lastIsEditing=this.isEditing,this.__lastSelected=this.selected}},isTripleClick:function(t){return this.__newClickTime-this.__lastClickTime<500&&this.__lastClickTime-this.__lastLastClickTime<500&&this.__lastPointer.x===t.x&&this.__lastPointer.y===t.y},_stopEvent:function(t){t.preventDefault&&t.preventDefault(),t.stopPropagation&&t.stopPropagation()},initCursorSelectionHandlers:function(){this.initMousedownHandler(),this.initMouseupHandler(),this.initClicks()},doubleClickHandler:function(t){this.isEditing&&this.selectWord(this.getSelectionStartFromPointer(t.e))},tripleClickHandler:function(t){this.isEditing&&this.selectLine(this.getSelectionStartFromPointer(t.e))},initClicks:function(){this.on("mousedblclick",this.doubleClickHandler),this.on("tripleclick",this.tripleClickHandler)},_mouseDownHandler:function(t){!this.canvas||!this.editable||t.e.button&&1!==t.e.button||(this.__isMousedown=!0,this.selected&&this.setCursorByClick(t.e),this.isEditing&&(this.__selectionStartOnMouseDown=this.selectionStart,this.selectionStart===this.selectionEnd&&this.abortCursorAnimation(),this.renderCursorOrSelection()))},_mouseDownHandlerBefore:function(t){!this.canvas||!this.editable||t.e.button&&1!==t.e.button||(this.selected=this===this.canvas._activeObject)},initMousedownHandler:function(){this.on("mousedown",this._mouseDownHandler),this.on("mousedown:before",this._mouseDownHandlerBefore)},initMouseupHandler:function(){this.on("mouseup",this.mouseUpHandler)},mouseUpHandler:function(t){if(this.__isMousedown=!1,!(!this.editable||this.group||t.transform&&t.transform.actionPerformed||t.e.button&&1!==t.e.button)){if(this.canvas){var e=this.canvas._activeObject;if(e&&e!==this)return}this.__lastSelected&&!this.__corner?(this.selected=!1,this.__lastSelected=!1,this.enterEditing(t.e),this.selectionStart===this.selectionEnd?this.initDelayedCursor(!0):this.renderCursorOrSelection()):this.selected=!0}},setCursorByClick:function(t){var e=this.getSelectionStartFromPointer(t),i=this.selectionStart,r=this.selectionEnd;t.shiftKey?this.setSelectionStartEndWithShift(i,r,e):(this.selectionStart=e,this.selectionEnd=e),this.isEditing&&(this._fireSelectionChanged(),this._updateTextarea())},getSelectionStartFromPointer:function(t){for(var e=this.getLocalPointer(t),i=0,r=0,n=0,s=0,o=0,a=0,h=this._textLines.length;athis._text.length&&(a=this._text.length),a}}),fabric.util.object.extend(fabric.IText.prototype,{initHiddenTextarea:function(){this.hiddenTextarea=fabric.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.setAttribute("autocorrect","off"),this.hiddenTextarea.setAttribute("autocomplete","off"),this.hiddenTextarea.setAttribute("spellcheck","false"),this.hiddenTextarea.setAttribute("data-fabric-hiddentextarea",""),this.hiddenTextarea.setAttribute("wrap","off");var t=this._calcTextareaPosition();this.hiddenTextarea.style.cssText="position: absolute; top: "+t.top+"; left: "+t.left+"; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px; paddingーtop: "+t.fontSize+";",fabric.document.body.appendChild(this.hiddenTextarea),fabric.util.addListener(this.hiddenTextarea,"keydown",this.onKeyDown.bind(this)),fabric.util.addListener(this.hiddenTextarea,"keyup",this.onKeyUp.bind(this)),fabric.util.addListener(this.hiddenTextarea,"input",this.onInput.bind(this)),fabric.util.addListener(this.hiddenTextarea,"copy",this.copy.bind(this)),fabric.util.addListener(this.hiddenTextarea,"cut",this.copy.bind(this)),fabric.util.addListener(this.hiddenTextarea,"paste",this.paste.bind(this)),fabric.util.addListener(this.hiddenTextarea,"compositionstart",this.onCompositionStart.bind(this)),fabric.util.addListener(this.hiddenTextarea,"compositionupdate",this.onCompositionUpdate.bind(this)),fabric.util.addListener(this.hiddenTextarea,"compositionend",this.onCompositionEnd.bind(this)),!this._clickHandlerInitialized&&this.canvas&&(fabric.util.addListener(this.canvas.upperCanvasEl,"click",this.onClick.bind(this)),this._clickHandlerInitialized=!0)},keysMap:{9:"exitEditing",27:"exitEditing",33:"moveCursorUp",34:"moveCursorDown",35:"moveCursorRight",36:"moveCursorLeft",37:"moveCursorLeft",38:"moveCursorUp",39:"moveCursorRight",40:"moveCursorDown"},ctrlKeysMapUp:{67:"copy",88:"cut"},ctrlKeysMapDown:{65:"selectAll"},onClick:function(){this.hiddenTextarea&&this.hiddenTextarea.focus()},onKeyDown:function(t){if(this.isEditing&&!this.inCompositionMode){if(t.keyCode in this.keysMap)this[this.keysMap[t.keyCode]](t);else{if(!(t.keyCode in this.ctrlKeysMapDown&&(t.ctrlKey||t.metaKey)))return;this[this.ctrlKeysMapDown[t.keyCode]](t)}t.stopImmediatePropagation(),t.preventDefault(),33<=t.keyCode&&t.keyCode<=40?(this.clearContextTop(),this.renderCursorOrSelection()):this.canvas&&this.canvas.requestRenderAll()}},onKeyUp:function(t){!this.isEditing||this._copyDone||this.inCompositionMode?this._copyDone=!1:t.keyCode in this.ctrlKeysMapUp&&(t.ctrlKey||t.metaKey)&&(this[this.ctrlKeysMapUp[t.keyCode]](t),t.stopImmediatePropagation(),t.preventDefault(),this.canvas&&this.canvas.requestRenderAll())},onInput:function(t){var e=this.fromPaste;if(this.fromPaste=!1,t&&t.stopPropagation(),this.isEditing){var i,r,n=this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText,s=this._text.length,o=n.length,a=o-s;if(""===this.hiddenTextarea.value)return this.styles={},this.updateFromTextArea(),this.fire("changed"),void(this.canvas&&(this.canvas.fire("text:changed",{target:this}),this.canvas.requestRenderAll()));var h=this.fromStringToGraphemeSelection(this.hiddenTextarea.selectionStart,this.hiddenTextarea.selectionEnd,this.hiddenTextarea.value),c=this.selectionStart>h.selectionStart;this.selectionStart!==this.selectionEnd?(i=this._text.slice(this.selectionStart,this.selectionEnd),a+=this.selectionEnd-this.selectionStart):o=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorUpOrDown("Down",t)},moveCursorUp:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorUpOrDown("Up",t)},_moveCursorUpOrDown:function(t,e){var i=this["get"+t+"CursorOffset"](e,"right"===this._selectionDirection);e.shiftKey?this.moveCursorWithShift(i):this.moveCursorWithoutShift(i),0!==i&&(this.setSelectionInBoundaries(),this.abortCursorAnimation(),this._currentCursorOpacity=1,this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorWithShift:function(t){var e="left"===this._selectionDirection?this.selectionStart+t:this.selectionEnd+t;return this.setSelectionStartEndWithShift(this.selectionStart,this.selectionEnd,e),0!==t},moveCursorWithoutShift:function(t){return t<0?(this.selectionStart+=t,this.selectionEnd=this.selectionStart):(this.selectionEnd+=t,this.selectionStart=this.selectionEnd),0!==t},moveCursorLeft:function(t){0===this.selectionStart&&0===this.selectionEnd||this._moveCursorLeftOrRight("Left",t)},_move:function(t,e,i){var r;if(t.altKey)r=this["findWordBoundary"+i](this[e]);else{if(!t.metaKey&&35!==t.keyCode&&36!==t.keyCode)return this[e]+="Left"===i?-1:1,!0;r=this["findLineBoundary"+i](this[e])}if(void 0!==typeof r&&this[e]!==r)return this[e]=r,!0},_moveLeft:function(t,e){return this._move(t,e,"Left")},_moveRight:function(t,e){return this._move(t,e,"Right")},moveCursorLeftWithoutShift:function(t){var e=!0;return this._selectionDirection="left",this.selectionEnd===this.selectionStart&&0!==this.selectionStart&&(e=this._moveLeft(t,"selectionStart")),this.selectionEnd=this.selectionStart,e},moveCursorLeftWithShift:function(t){return"right"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveLeft(t,"selectionEnd"):0!==this.selectionStart?(this._selectionDirection="left",this._moveLeft(t,"selectionStart")):void 0},moveCursorRight:function(t){this.selectionStart>=this._text.length&&this.selectionEnd>=this._text.length||this._moveCursorLeftOrRight("Right",t)},_moveCursorLeftOrRight:function(t,e){var i="moveCursor"+t+"With";this._currentCursorOpacity=1,e.shiftKey?i+="Shift":i+="outShift",this[i](e)&&(this.abortCursorAnimation(),this.initDelayedCursor(),this._fireSelectionChanged(),this._updateTextarea())},moveCursorRightWithShift:function(t){return"left"===this._selectionDirection&&this.selectionStart!==this.selectionEnd?this._moveRight(t,"selectionStart"):this.selectionEnd!==this._text.length?(this._selectionDirection="right",this._moveRight(t,"selectionEnd")):void 0},moveCursorRightWithoutShift:function(t){var e=!0;return this._selectionDirection="right",this.selectionStart===this.selectionEnd?(e=this._moveRight(t,"selectionStart"),this.selectionEnd=this.selectionStart):this.selectionStart=this.selectionEnd,e},removeChars:function(t,e){void 0===e&&(e=t+1),this.removeStyleFromTo(t,e),this._text.splice(t,e-t),this.text=this._text.join(""),this.set("dirty",!0),this._shouldClearDimensionCache()&&(this.initDimensions(),this.setCoords()),this._removeExtraneousStyles()},insertChars:function(t,e,i,r){void 0===r&&(r=i),i",t.textSpans.join(""),"\n"]},_getSVGTextAndBg:function(t,e){var i,r=[],n=[],s=t;this._setSVGBg(n);for(var o=0,a=this._textLines.length;o",fabric.util.string.escapeXml(t),""].join("")},_setSVGTextLineText:function(t,e,i,r){var n,s,o,a,h,c=this.getHeightOfLine(e),l=-1!==this.textAlign.indexOf("justify"),u="",f=0,d=this._textLines[e];r+=c*(1-this._fontSizeFraction)/this.lineHeight;for(var g=0,p=d.length-1;g<=p;g++)h=g===p||this.charSpacing,u+=d[g],o=this.__charBounds[e][g],0===f?(i+=o.kernedWidth-o.width,f+=o.width):f+=o.kernedWidth,l&&!h&&this._reSpaceAndTab.test(d[g])&&(h=!0),h||(n=n||this.getCompleteStyleDeclaration(e,g),s=this.getCompleteStyleDeclaration(e,g+1),h=this._hasStyleChangedForSvg(n,s)),h&&(a=this._getStyleDeclaration(e,g)||{},t.push(this._createTextCharSpan(u,a,i,r)),u="",n=s,i+=f,f=0)},_pushTextBgRect:function(t,e,i,r,n,s){var o=fabric.Object.NUM_FRACTION_DIGITS;t.push("\t\t\n')},_setSVGTextLineBg:function(t,e,i,r){for(var n,s,o=this._textLines[e],a=this.getHeightOfLine(e)/this.lineHeight,h=0,c=0,l=this.getValueOfPropertyAt(e,0,"textBackgroundColor"),u=0,f=o.length;uthis.width&&this._set("width",this.dynamicMinWidth),-1!==this.textAlign.indexOf("justify")&&this.enlargeSpaces(),this.height=this.calcTextHeight(),this.saveState({propertySet:"_dimensionAffectingProps"}))},_generateStyleMap:function(t){for(var e=0,i=0,r=0,n={},s=0;sthis.dynamicMinWidth&&(this.dynamicMinWidth=g-v+r),o},isEndOfWrapping:function(t){return!this._styleMap[t+1]||this._styleMap[t+1].line!==this._styleMap[t].line},missingNewlineOffset:function(t){return this.splitByGrapheme?this.isEndOfWrapping(t)?1:0:1},_splitTextIntoLines:function(t){for(var e=b.Text.prototype._splitTextIntoLines.call(this,t),i=this._wrapText(e.lines,this.width),r=new Array(i.length),n=0;n", "contributors": [ { diff --git a/src/shapes/object.class.js b/src/shapes/object.class.js index 13996116650..a06fab810e3 100644 --- a/src/shapes/object.class.js +++ b/src/shapes/object.class.js @@ -1727,7 +1727,8 @@ // skip canvas zoom and calculate with setCoords now. boundingRect = this.getBoundingRect(true, true), shadow = this.shadow, scaling, - shadowOffset = { x: 0, y: 0 }, shadowBlur; + shadowOffset = { x: 0, y: 0 }, shadowBlur, + width, height; if (shadow) { shadowBlur = shadow.blur; @@ -1741,10 +1742,12 @@ shadowOffset.x = 2 * Math.round(abs(shadow.offsetX) + shadowBlur) * (abs(scaling.scaleX)); shadowOffset.y = 2 * Math.round(abs(shadow.offsetY) + shadowBlur) * (abs(scaling.scaleY)); } - el.width = boundingRect.width + shadowOffset.x; - el.height = boundingRect.height + shadowOffset.y; - el.width += el.width % 2 ? 2 - el.width % 2 : 0; - el.height += el.height % 2 ? 2 - el.height % 2 : 0; + width = boundingRect.width + shadowOffset.x; + height = boundingRect.height + shadowOffset.y; + // if the current width/height is not an integer + // we need to make it so. + el.width = Math.ceil(width); + el.height = Math.ceil(height); var canvas = new fabric.StaticCanvas(el, { enableRetinaScaling: false, renderOnAddRemove: false, diff --git a/test/visual/golden/dataurl13.png b/test/visual/golden/dataurl13.png new file mode 100644 index 0000000000000000000000000000000000000000..5144283521c4d2e482cdd4588ad97c0e5f0e2de8 GIT binary patch literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^$so+Z1|<8f_e}*-Y)RhkE)4%caKYZ?lNlHoxjbDQ zLn`LHz3j+)z(L^12FsOyH1ji`BnEeU+IH9D$Ga^nDvI6OjGg8PKI#!jZ?RB5BB^+e hqtLBmxCx!$H+y{4$oHgo3ox7*JYD@<);T3K0RTn(dm8`% literal 0 HcmV?d00001 diff --git a/test/visual/golden/dataurl14.png b/test/visual/golden/dataurl14.png new file mode 100644 index 0000000000000000000000000000000000000000..2accdeaeef2c1069f06992de173c1fae2b0b0890 GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^DImHKVqSBOwo|9 fv(Tew7z)*W{(HhWuaM0G7*Y(Lu6{1-oD!MQ&ZVxEnrCYISXk@%jk(NjCg0uM*7N+#nV*&K-zB7-yKdTl wSMZOq%CQL&&PhC-hQo_tdCfMvoW(wVD?2CuLx1(Hz(8a0boFyt=akR{0HrE;i~s-t literal 0 HcmV?d00001 diff --git a/test/visual/golden/dataurl16.png b/test/visual/golden/dataurl16.png new file mode 100644 index 0000000000000000000000000000000000000000..f48e61615cb02990884a38538cb224ca4de6e1c1 GIT binary patch literal 381 zcmeAS@N?(olHy`uVBq!ia0vp^sUXb31|&mjbk74Rwj^(N7l!{JxM1({$qWpPMxHK? zAr*7pUf#&dWGKMk_}g{rm+xCLo5b~5SSy-m9=YbKKDTUL@fycd8><=r*}l6UY;b$; zGl|EqHHy#W?kvEuiX0tFgzJNUHx3vIVCg!0E7#e0RR91 literal 0 HcmV?d00001 diff --git a/test/visual/golden/dataurl2.png b/test/visual/golden/dataurl2.png index e58a168cfe0d83b7ba4dda479b1e1c2bba978001..dd8fb4de8a6f3942a0848dd5fe16ca40ac199d29 100644 GIT binary patch literal 20380 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

eu=j|p!={e+Xt@e}Hgr?Dlo4?W&t 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 Xd;94?tr8Ph_gKt~uUxD$a((ze&F61a literal 25414 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 IM6N<$f@^2MCIA2c diff --git a/test/visual/golden/dataurl3.png b/test/visual/golden/dataurl3.png index 4c3fd4d968310e923d96b56b7ff7bed283b15bc3..d0d0dff7d1836507c1eefef4a948ba3f3c9fa567 100644 GIT binary patch literal 29048 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

CJr;3?k3aQEHm`VHo(79)DWqi z2q{g%wiyKv3!GOsy*{N1{8lL{3zhu!{XjsMrb7I&ty|Dbn0P)%84s*HASVJ0y_sJR z6{{U)0lZHJu_0gjD$w@(k@T5C!O?La%(boB$dtL8I&R%3ZhKzIU`cpucN1?Jr>Mqb zk)~wzHfhboFwWemF9K@9(&H?s%XDNE(Smy6CfuZRM_)(zk2aQ#aPWhx9m-QQ5558x z5alJoWylw@KkRwCnJW@@cSe6oi1%h`bd_RJ1gIqVf!8xd`ggn&Az2mVIQNjvg4HuFj<2d%LJfy%p-H<

$o4gt&HT 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 literal 30038 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