{"version":3,"sources":["webpack:///C:/Dropbox/www/amcharts4dev/node_modules/ieee754/index.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/isarray/index.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/fabric/dist/fabric.js","webpack:///../../../../../src/.internal/plugins/annotation/AnnotationIcons.ts","webpack:///../../../../../src/.internal/plugins/annotation/Annotation.ts","webpack:///./plugins/annotation.js","webpack:///external \"jsdom\"","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/buffer/index.js","webpack:///(webpack)/buildin/global.js","webpack:///C:/Dropbox/www/amcharts4dev/node_modules/base64-js/index.js"],"names":["exports","read","buffer","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","i","d","s","NaN","Infinity","Math","pow","write","value","c","rt","abs","isNaN","floor","log","LN2","toString","module","Array","isArray","arr","call","fabric","version","document","window","HTMLDocument","Document","implementation","createHTMLDocument","virtualWindow","require","JSDOM","decodeURIComponent","features","FetchExternalResources","resources","jsdomImplForWrapper","implForWrapper","nodeCanvas","Canvas","DOMParser","copyGLTo2DDrawImage","gl","pipelineState","glCanvas","canvas","targetCanvas","ctx","getContext","translate","height","scale","sourceY","drawImage","width","copyGLTo2DPutImageData","dWidth","destinationWidth","dHeight","destinationHeight","numBytes","u8","Uint8Array","this","imageBuffer","u8Clamped","Uint8ClampedArray","readPixels","RGBA","UNSIGNED_BYTE","imgData","ImageData","putImageData","isTouchSupported","navigator","maxTouchPoints","isLikelyNode","Buffer","SHARED_ATTRIBUTES","DPI","reNum","fontPaths","iMatrix","perfLimitSizeTotal","maxCacheSideLimit","minCacheSideLimit","charWidthsCache","textureSize","disableStyleCopyPaste","enableGLFiltering","devicePixelRatio","webkitDevicePixelRatio","mozDevicePixelRatio","browserShadowBlurConstant","arcToSegmentsCache","boundsOfCurveCache","cachesBoundsOfCurve","forceGLPutImageData","initFilterBackend","isWebglSupported","console","maxTextureSize","WebglFilterBackend","tileSize","Canvas2dFilterBackend","_removeEventListener","eventName","handler","__eventListeners","eventListener","indexOf","util","array","fill","observe","arguments","length","prop","on","push","stopObserving","_typeof","fire","options","listenersForEvent","len","filter","Observable","off","trigger","Collection","_objects","add","apply","_onObjectAdded","renderOnAddRemove","requestRenderAll","insertAt","object","index","nonSplicing","objects","splice","remove","somethingRemoved","_onObjectRemoved","forEachObject","callback","context","getObjects","type","concat","o","item","isEmpty","size","contains","complexity","reduce","memo","current","CommonMethods","_setOptions","set","_initGradient","filler","property","colorStops","Gradient","_initPattern","source","Pattern","_initClipping","clipTo","functionBody","getFunctionBody","Function","_setObject","obj","_set","key","get","toggle","global","sqrt","atan2","PiBy180","PI","PiBy2","cos","angle","sin","sign","removeFromArray","idx","getRandomInt","min","max","random","degreesToRadians","degrees","radiansToDegrees","radians","rotatePoint","point","origin","subtractEquals","v","rotateVector","Point","x","y","addEquals","vector","transformPoint","p","t","ignoreOffset","makeBoundingBoxFromPoints","points","xPoints","minX","yPoints","minY","left","top","invertTransform","a","r","toFixed","number","fractionDigits","parseFloat","Number","parseUnit","fontSize","unit","exec","Text","DEFAULT_SVG_FONT_SIZE","falseFunction","getKlass","namespace","string","camelize","charAt","toUpperCase","slice","resolveNamespace","getSvgAttributes","attributes","parts","split","loadImage","url","crossOrigin","img","createImage","onLoadCallback","onload","onerror","src","substring","loadImageInDom","div","createElement","style","position","appendChild","querySelector","parentNode","removeChild","enlivenObjects","reviver","enlivenedObjects","numLoadedObjects","numTotalObjects","onLoaded","forEach","fromObject","error","enlivenPatterns","patterns","numLoadedPatterns","numPatterns","enlivenedPatterns","pattern","groupSVGElements","elements","path","centerPoint","Group","sourcePath","populateWithProperties","destination","properties","Object","prototype","drawDashedLine","x2","y2","da","dx","dy","rot","dc","di","draw","save","moveTo","rotate","restore","createCanvasElement","copyCanvasElement","newCanvas","toDataURL","canvasEl","format","quality","clipContext","receiver","beginPath","clip","multiplyTransformMatrices","b","is2x2","qrDecompose","denom","scaleX","scaleY","skewX","skewY","translateX","translateY","customTransformMatrix","skewMatrixX","tan","scaleMatrix","resetObjectTransform","target","flipX","flipY","saveObjectTransform","fn","String","match","isTransparent","tolerance","_isTransparent","imageData","getImageData","l","data","parsePreserveAspectRatioAttribute","attribute","align","meetOrSlice","aspectRatioAttrs","pop","alignX","alignY","clearFabricFontCache","fontFamily","toLowerCase","limitDimsByArea","ar","maximumArea","roughWidth","perfLimitSizeY","capValue","findScaleToFit","findScaleToCover","matrixToSVG","transform","map","NUM_FRACTION_DIGITS","join","_join","arcToSegments","toX","toY","rx","ry","large","sweep","rotateX","argsString","th","sinTh","cosTh","fromX","fromY","px","py","rx2","ry2","py2","px2","pl","root","cx","cy","cx1","cy1","mTheta","calcVectorAngle","dtheta","segments","ceil","result","mDelta","mT","th3","segmentToBezier","th2","costh2","sinth2","costh3","sinth3","ux","uy","vx","vy","ta","tb","getBoundsOfCurve","x0","y0","x1","y1","x3","y3","t1","t2","b2ac","sqrtb2ac","tvalues","bounds","mt","j","jlen","drawArc","fx","fy","coords","segs","segsNorm","bezierCurveTo","getBoundsOfArc","tx","ty","bound","find","byProperty","condition","k","invoke","method","args","value1","value2","extend","deep","Element","hasOwnProperty","clone","getWholeChar","str","code","charCodeAt","next","prev","replace","character","capitalize","firstLetterOnly","escapeXml","graphemeSplit","textstring","chr","graphemes","emptyFunction","IS_DONTENUM_BUGGY","addMethods","klass","parent","superclass","constructor","returnValue","valueOf","Subclass","callSuper","methodName","parentMethod","_this","superClassMethod","createClass","initialize","shift","subclasses","couldUseAttachEvent","attachEvent","addListener","element","addEventListener","removeListener","removeEventListener","getPointer","event","scroll","getScrollLeftTop","_evt","touchProp","changedTouches","getTouchInfo","clientX","clientY","parseEl","supportsOpacity","opacity","supportsFilters","reOpacity","setOpacity","es","currentStyle","hasLayout","zoom","test","setStyle","styles","elementStyle","cssText","styleFloat","_slice","sliceCanConvertNodelists","getElementStyle","toArray","arrayLike","childNodes","err","makeElement","tagName","el","className","htmlFor","setAttribute","docElement","documentElement","body","scrollLeft","scrollTop","host","nodeType","defaultView","getComputedStyle","attr","undefined","selectProp","makeElementUnselectable","onselectstart","unselectable","makeElementSelectable","getScript","headEl","getElementsByTagName","scriptEl","loading","onreadystatechange","readyState","getById","id","getElementById","addClass","wrapElement","wrapper","replaceChild","getElementOffset","docElem","scrollLeftTop","doc","ownerDocument","box","offsetAttributes","borderLeftWidth","borderTopWidth","paddingLeft","paddingTop","parseInt","getBoundingClientRect","clientLeft","clientTop","getNodeCanvas","impl","_canvas","_image","cleanUpJsdomNode","_currentSrc","_attributes","_classList","emptyFn","request","onComplete","xhr","XMLHttpRequest","parameters","param","addParamToUrl","open","setRequestHeader","send","warn","noop","_requestAnimFrame","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","setTimeout","_cancelAnimFrame","cancelAnimationFrame","clearTimeout","requestAnimFrame","animate","timestamp","time","start","Date","duration","finish","onChange","abort","easing","startValue","endValue","byValue","onStart","tick","ticktime","currentTime","timePerc","valuePerc","cancelAnimFrame","animateColor","fromColor","toColor","startColor","Color","getSource","endColor","begin","end","pos","color","calculateColor","colorEasing","normalize","asin","elastic","opts","easeInBounce","easeOutBounce","ease","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInOutBounce","attributesMap","display","visibility","fill-opacity","fill-rule","font-family","font-size","font-style","font-weight","letter-spacing","paint-order","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-decoration","text-anchor","clip-path","clip-rule","vector-effect","colorAttributes","stroke","normalizeAttr","normalizeValue","parentAttributes","parsed","transformMatrix","parseTransformAttribute","visible","fillIndex","strokeIndex","getSvgRegex","RegExp","_getMultipleNodes","nodeNames","nodeName","nodeList","nodeArray","elementMatchesRule","selectors","firstMatching","parentMatching","selectorMatches","selector","doesSomeParentMatch","matcher","classNames","getAttribute","elementById","node","nodelist","svgValidTagNamesRegEx","svgViewBoxElementsRegEx","svgInvalidAncestorsRegEx","svgValidParentsRegEx","cssRules","gradientDefs","clipPaths","skewMatrix","matrix","commaWsp","reTransformList","reTransform","attributeValue","matrices","operation","translateMatrix","rotateMatrix","multiplierX","multiplierY","combinedMatrix","reViewBoxAttrValue","applyViewboxTransform","viewBoxWidth","viewBoxHeight","viewBoxAttr","widthAttr","heightAttr","preserveAspectRatio","missingViewBox","missingDimAttr","toBeParsed","parsedDim","widthDiff","heightDiff","viewboxTransform","firstChild","recursivelyParseGradientsXlink","gradient","referencedGradient","substr","hasAttribute","children","referenceClone","cloneNode","removeAttribute","parseSVGDocument","parsingOptions","attrs","xlink","el2","currentTrans","oldLength","el3","nodeValue","parseUseDirectives","svgUid","__uid","descendants","selectNodes","hasAncestorWithNodeName","getGradientDefs","getCSSRules","parseElements","instances","reFontDeclaration","parseFontDeclaration","oStyle","fontStyle","fontWeight","lineHeight","elList","parseAttributes","parentFontSize","ownAttributes","rule","getGlobalStylesForElement","parseStyleAttribute","normalizedAttr","normalizedValue","normalizedStyle","font","mergedAttrs","setAlpha","getAlpha","toRgba","_setStrokeFillOpacity","ElementsParser","parse","chunk","pair","trim","parseStyleString","parseStyleObject","parsePointsAttribute","parsedPoints","allRules","styleContents","textContent","text","ruleObj","propertyValuePairs","_rule","loadSVGFromURL","xml","responseXML","ActiveXObject","responseText","async","loadXML","results","_options","allElements","loadSVGFromString","parser","parseFromString","regexUrl","proto","numElements","createObjects","createObject","findTag","fromElement","createCallback","checkIfDone","resolveGradient","Image","_originalElement","_removeTransformMatrix","resolveClipPath","extractPropertyDefinition","storage","lastIndex","gradientDef","createClipPathCallback","container","_newObj","fillRule","clipRule","objTransformInv","gTransform","clipPath","calcTransformMatrix","setPositionByOrigin","that","scalarAdd","scalar","scalarAddEquals","subtract","scalarSubtract","scalarSubtractEquals","multiply","multiplyEquals","divide","divideEquals","eq","lt","lte","gt","gte","lerp","distanceFrom","midPointFrom","setXY","setX","setY","setFromPoint","swap","Intersection","status","appendPoint","appendPoints","intersectLineLine","a1","a2","b1","b2","uaT","ubT","uB","ua","ub","intersectLinePolygon","inter","intersectPolygonPolygon","points1","points2","intersectPolygonRectangle","r1","r2","topRight","bottomLeft","inter1","inter2","inter3","inter4","_tryParsingColor","setSource","hue2rgb","q","colorNameMap","sourceFromHex","sourceFromRgb","sourceFromHsl","_rgbToHsl","g","h","round","_source","toRgb","toHsl","hsl","toHsla","toHex","toHexa","alpha","toGrayscale","average","currentAlpha","toBlackWhite","threshold","overlayWith","otherColor","otherSource","reRGBa","reHSLa","reHex","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","fromRgb","fromSource","fromRgba","fromHsl","fromHsla","fromHex","isShortNotation","isRGBa","oColor","getColorStop","colorAlpha","keyValuePairs","_convertPercentUnitsToValues","gradientUnits","propValue","addFactor","multFactor","ellipseMatrix","scaleFactor","offsetX","offsetY","gradientTransform","addColorStop","toObject","propertiesToInclude","toSVG","markup","commonAttributes","needsSwap","withViewport","additionalTransform","sort","pathOffset","reverse","minRadius","percentageShift","colorStop","toLive","createLinearGradient","createRadialGradient","instance","colorStopEls","getLinearCoords","getRadialCoords","forObject","repeat","patternTransform","setOptions","patternSource","patternWidth","patternHeight","patternOffsetX","patternOffsetY","patternImgSrc","complete","naturalWidth","naturalHeight","createPattern","Shadow","blur","affectStroke","includeDefaultValues","nonScaling","_parseShadow","shadow","shadowStr","offsetsAndBlur","reOffsetsAndBlur","fBoxX","fBoxY","StaticCanvas","CANVAS_INIT_ERROR","Error","renderAndResetBound","renderAndReset","bind","requestRenderAllBound","_initStatic","backgroundColor","backgroundImage","overlayColor","overlayImage","stateful","controlsAboveOverlay","allowTouchScrolling","imageSmoothingEnabled","viewportTransform","backgroundVpt","overlayVpt","onBeforeScaleRotate","enableRetinaScaling","vptCoords","skipOffscreen","cb","_createLowerCanvas","_initOptions","_setImageSmoothing","interactive","_initRetinaScaling","setOverlayImage","setBackgroundImage","setBackgroundColor","setOverlayColor","calcOffset","_isRetinaScaling","getRetinaScaling","lowerCanvasEl","contextContainer","_offset","image","__setBgOverlayImage","__setBgOverlayColor","webkitImageSmoothingEnabled","mozImageSmoothingEnabled","msImageSmoothingEnabled","oImageSmoothingEnabled","_createCanvasElement","_applyCanvasStyle","getWidth","getHeight","setWidth","setDimensions","setHeight","dimensions","cssValue","cssOnly","_setBackstoreDimension","hasLostContext","backstoreOnly","_setCssDimension","_isCurrentlyDrawing","freeDrawingBrush","_setBrushStyles","upperCanvasEl","cacheCanvasEl","wrapperEl","getZoom","setViewportTransform","vpt","activeObject","_activeObject","group","setCoords","calcViewportBoundaries","zoomToPoint","before","after","setZoom","absolutePan","relativePan","getElement","setupState","clearContext","clearRect","clear","_hasITextHandlers","_mouseUpITextHandler","_iTextInstances","renderAll","canvasToDrawOn","renderCanvas","isRendering","iVpt","tl","br","tr","bl","cancelRequestedRender","_renderBackground","_renderObjects","drawControls","shouldCache","_transformDone","renderCache","forClipping","drawClipPathOnCanvas","_renderOverlay","globalCompositeOperation","zoomX","zoomY","_cacheCanvas","cacheTranslationX","cacheTranslationY","render","_renderBackgroundOrOverlay","needsVpt","lineTo","closePath","fillStyle","getCenter","centerObjectH","_centerObject","getCenterPoint","centerObjectV","centerObject","center","viewportCenterObject","vpCenter","getVpCenter","viewportCenterObjectH","viewportCenterObjectV","toDatalessJSON","toDatalessObject","_toObjectMethod","_toObjects","_toObject","__serializeBgOverlay","excludeFromExport","originalValue","bgImage","overlay","background","svgViewportTransformation","_setSVGPreamble","_setSVGHeader","clipPathId","_setSVGBgOverlayColor","_setSVGBgOverlayImage","_setSVGObjects","suppressPreamble","encoding","viewBox","createSVGFontFacesMarkup","createSVGRefElementsMarkup","createSVGClipPathMarkup","toClipPathSVG","shouldTransform","row","rowIndex","charIndex","fontList","_setSVGObject","finalWidth","finalHeight","sendToBack","objs","activeSelection","unshift","bringToFront","sendBackwards","intersecting","newIdx","objsMoved","_findNewLowerIndex","intersectsWithObject","isContainedWithinObject","bringForward","_findNewUpperIndex","dispose","DataURLExporter","EMPTY_JSON","supports","setLineDash","toJSON","createPNGStream","createJPEGStream","BaseBrush","strokeLineCap","strokeLineJoin","strokeMiterLimit","strokeDashArray","setShadow","contextTop","strokeStyle","lineWidth","lineCap","miterLimit","lineJoin","_saveAndTransform","_setShadow","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","needsFullRender","_resetShadow","PencilBrush","decimate","_points","_drawSegment","p1","p2","midPoint","quadraticCurveTo","onMouseDown","pointer","_isMainEvent","_prepareForDrawing","_captureDrawingPath","_render","onMouseMove","oldEnd","onMouseUp","_finalizeAndAddPath","_reset","_addPoint","pointerPoint","convertPointsToSVGPath","multSignX","multSignY","manyPoints","createPath","pathData","Path","strokeWidth","decimatePoints","distance","adjustedDistance","lastPoint","newPoints","CircleBrush","drawDot","addPoint","dot","arc","radius","originalRenderOnAddRemove","circles","circle","Circle","originX","originY","circleRadius","circleColor","SprayBrush","density","dotWidth","dotWidthVariance","randomOpacity","optimizeOverlapping","sprayChunks","addSprayChunk","sprayChunkPoints","rects","ilen","sprayChunk","rect","Rect","_getOptimizedRects","uniqueRects","uniqueRectsArray","globalAlpha","fillRect","PatternBrush","getPatternSrc","patternCanvas","patternCtx","getPatternSrcFunction","getPattern","topLeft","_getLeftTopCoords","supportLineDash","_initInteractive","_createCacheCanvas","uniScaleTransform","uniScaleKey","centeredScaling","centeredRotation","centeredKey","altActionKey","selection","selectionKey","altSelectionKey","selectionColor","selectionDashArray","selectionBorderColor","selectionLineWidth","selectionFullyContained","hoverCursor","moveCursor","defaultCursor","freeDrawingCursor","rotationCursor","notAllowedCursor","containerClass","perPixelTargetFind","targetFindTolerance","skipTargetFind","isDrawingMode","preserveObjectStacking","snapAngle","snapThreshold","stopContextMenu","fireRightClick","fireMiddleClick","_currentTransform","_groupSelector","_initWrapperElement","_createUpperCanvas","_initEventListeners","_chooseObjectsToRender","objsToRender","activeGroupObjects","activeObjects","getActiveObjects","contextTopDirty","renderTopLayer","_drawSelection","renderTop","_resetCurrentTransform","original","_shouldCenterTransform","mouseXSign","mouseYSign","containsPoint","xy","_normalizePointer","_findTargetCorner","invertedM","vptPointer","restorePointerVpt","isTargetTransparent","normalizedPointer","targetRelativeX","targetRelativeY","_cacheContext","contextCache","originalColor","selectionBackgroundColor","_renderControls","hasBorders","transparentCorners","_isSelectionKeyPressed","_shouldClearSelection","evented","selectable","centerTransform","action","altKey","_getOriginFromCorner","corner","_getActionFromCorner","alreadySelected","_setupCurrentTransform","ex","ey","lastX","lastY","theta","shiftKey","_beforeTransform","_translateObject","newLeft","newTop","moveX","moveY","_changeSkewTransformOrigin","mouseMove","by","origins","0","skew","originA","originB","flipSign","skewSign","_skewObject","skewed","lockSkewingX","lockSkewingY","actualMouseByOrigin","constraintPosition","actualMouseByCenter","toLocalPoint","lastMouseByCenter","dim","_getTransformedDimensions","translateToOriginPoint","_setObjectSkew","localMouse","_dim","newValue","newDim","dimNoSkew","otherBy","_otherBy","_by","newDimMouse","atan","_scaleObject","lockScalingX","lockScalingY","lockScalingFlip","scaled","_setLocalMouse","_setObjectScale","forbidScalingX","forbidScalingY","changeX","changeY","newScaleX","newScaleY","Textbox","w","getMinWidth","_scaleObjectEqually","_flipObject","dist","lastDist","signX","signY","padding","_rotateObject","lockRotation","lastAngle","curAngle","hasRotated","rightAngleLocked","leftAngleLocked","setCursor","cursor","groupSelector","aleft","atop","_setLineDash","strokeRect","findTarget","skipGroup","activeTarget","activeTargetSubs","aObjects","targets","_searchPossibleTargets","_checkTarget","globalPointer","isEditing","subTarget","objToCheck","pointerToUse","subTargetCheck","ignoreZoom","_absolutePointer","_pointer","cssScale","boundsWidth","boundsHeight","bottom","right","lowerCanvasClass","_copyCanvasStyle","class","touch-action","-ms-touch-action","fromEl","toEl","getSelectionContext","getSelectionElement","getActiveObject","active","_discardActiveObject","_hoveredTarget","_fireSelectionEvents","oldObjects","somethingChanged","added","removed","opt","oldObject","selected","deselected","updated","setActiveObject","currentActives","_setActiveObject","onSelect","onDeselect","discardActiveObject","removeListeners","originalProperties","_realizeGroupTransformOnObject","_unwindGroupTransformOnObject","originalValues","realizeTransform","clearContextTop","cursorOffset","mr","mb","ml","addEventOptions","passive","checkClick","button","cursorMap","mainTouchId","_bindEvents","addOrRemove","_getEventPrefix","enablePointerEvents","functor","eventjsFunctor","canvasElement","eventTypePrefix","_onResize","_onMouseDown","_onMouseMove","_onMouseOut","_onMouseEnter","_onMouseWheel","_onContextMenu","_onDoubleClick","_onDragOver","_onDragEnter","_onDragLeave","_onDrop","_onTouchStart","eventjs","_onGesture","_onDrag","_onOrientationChange","_onShake","_onLongPress","_onMouseUp","_onTouchEnd","eventsBound","_simpleEventHandler","self","__onTransformGesture","__onDrag","__onMouseWheel","hiddenTextarea","focus","currentTransform","__onOrientationChange","__onShake","__onLongPress","preventDefault","_fireEnterLeaveEvents","stopPropagation","_cacheTransformEventData","_handleEvent","_resetTransformEventData","getPointerId","evt","identifier","pointerId","isPrimary","touches","__onMouseDown","__onMouseUp","_willAddMouseDown","__onMouseMove","_shouldRender","shouldRender","isClick","_target","_onMouseUpInDrawingMode","_finalizeCurrentTransform","actionPerformed","_maybeGroupObjects","isMoving","_setCursorFromEvent","__corner","eventType","subTargets","absolutePointer","_scaling","hasStateChanged","_addEventOptions","_fire","_onMouseDownInDrawingMode","_onMouseMoveInDrawingMode","_previousPointer","shouldGroup","_shouldGroup","_handleGrouping","saveState","_transformObject","_fireOverOutEvents","fireSyntheticInOutEvents","targetName","canvasEvtOut","evtOut","canvasEvtIn","evtIn","config","inOpt","outOpt","inFires","oldTarget","targetChanged","previousTarget","nextTarget","reset","_beforeScaleTransform","_performTransformAction","_onScale","_isUniscalePossible","currentAction","getCornerCursor","actionIsDisabled","_getRotatedCornerCursor","hasRotatingPoint","n","_updateActiveSelection","_createActiveSelection","currentActiveObjects","removeWithUpdate","addWithUpdate","_createGroup","groupObjects","exitEditing","ActiveSelection","_groupSelectedObjects","aGroup","_collectObjects","currentObject","selectionX1Y1","selectionX2Y2","allowIntersect","intersectsWithRect","isContainedWithinRect","multiplier","toCanvasElement","cropping","scaledWidth","scaledHeight","originalWidth","originalHeight","newZoom","vp","originalInteractive","newVp","originalRetina","originalContextTop","loadFromDatalessJSON","json","loadFromJSON","serialized","JSON","_enlivenObjects","_setBgOverlay","enlivenedCanvasClip","__setupCanvas","loaded","cbIfLoaded","__setBgOverlay","enlivedObject","_toDataURL","_toDataURLWithMultiplier","toDataURLWithMultiplier","stringify","cloneWithoutData","backgroundImageOpacity","backgroundImageStretch","supportsLineDash","objectCaching","cornerSize","borderColor","borderDashArray","cornerColor","cornerStrokeColor","cornerStyle","cornerDashArray","strokeDashOffset","borderOpacityWhenMoving","borderScaleFactor","minScaleLimit","hasControls","rotatingPointOffset","lockMovementX","lockMovementY","lockUniScaling","statefullCache","noScaleCache","strokeUniform","dirty","paintFirst","stateProperties","cacheProperties","inverted","absolutePositioned","_cacheProperties","_updateCacheCanvas","_limitCacheSize","dims","limitedDims","capped","_getCacheCanvasDimensions","objectScale","getTotalObjectScaling","neededX","neededY","drawingWidth","drawingHeight","minCacheSize","dimensionsChanged","cacheWidth","cacheHeight","zoomChanged","shouldRedraw","additionalWidth","additionalHeight","shouldResizeCanvas","canvasWidth","canvasHeight","sizeGrowing","setTransform","calcOwnMatrix","_removeDefaultValues","getObjectScaling","scaling","retina","getObjectOpacity","shouldConstrainValue","isChanged","groupNeedsUpdate","_constrainScale","isOnACache","setOnGroup","getViewportTransform","isNotVisible","isOnScreen","_setupCompositeOperation","drawSelectionBackground","_setOpacity","drawCacheOnCanvas","_removeCacheCanvas","drawObject","propertySet","isCacheDirty","hasStroke","hasFill","needsItsOwnCache","ownCaching","willDrawShadow","drawClipPathOnCache","originalFill","originalStroke","_setClippingProperties","_setStrokeStyles","_setFillStyles","_drawClipPath","skipCanvas","_getNonTransformedDimensions","_removeShadow","decl","lineDashOffset","dashArray","alternative","getLineDash","styleOverride","drawBorders","forActiveSelection","drawBordersInGroup","multX","multY","_applyPatternGradientTransform","_renderPaintInOrder","_renderStroke","_renderFill","_renderDashedStroke","_findCenterFromElement","_assignTransformMatrixProps","preserveAspectRatioOptions","cropX","cropY","offsetLeft","offsetTop","objectForm","_fromObject","cloneAsImage","utils","origParams","originalShadow","withoutTransform","withoutShadow","boundingRect","getBoundingRect","shadowOffset","originalCanvas","isType","setGradient","setPatternFill","setColor","shouldCenterOrigin","_setOriginToCenter","_resetOrigin","centerH","viewportCenterH","centerV","viewportCenterV","viewportCenter","getLocalPointer","pClicked","objectLeftTop","createAccessors","extraParam","enlivedProps","originXOffset","originYOffset","translateToGivenOrigin","fromOriginX","fromOriginY","toOriginX","toOriginY","translateToCenterPoint","leftTop","getPointByOrigin","adjustPosition","to","offsetFrom","offsetTo","hypotFull","getScaledWidth","xFull","yFull","_originalOriginX","_originalOriginY","originPoint","multiplyMatrices","oCoords","aCoords","ownMatrixCache","matrixCache","getCoords","absolute","calculate","calcCoords","pointTL","pointBR","other","lines","_getImageLines","_findCrossPoints","_containsCenterOfCanvas","isPartiallyOnScreen","topline","rightline","bottomline","leftline","xi","iLine","xcount","lineKey","getScaledHeight","scaleToWidth","boundingRectFactor","scaleToHeight","_calcRotateMatrix","_calcTranslateMatrix","startMatrix","finalMatrix","cosP","sinP","cosPSinP","cosPMinusSinP","mtr","skipAbsolute","_setCornerCoords","transformMatrixKey","prefix","cache","dimensionMatrix","_calcDimensionsTransformMatrix","flipping","dimX","dimY","noSkew","_finalizeDimensions","bbox","_calculateCurrentDimensions","getSvgColorString","getSvgStyles","skipShadow","getSvgFilter","getSvgSpanStyles","useWhiteSpace","textDecoration","getSvgTextDecoration","deltaY","overline","underline","linethrough","getSvgCommons","getSvgTransform","full","getSvgTransformMatrix","_setSVGBg","textBgRects","_getFillAttributes","_createBaseSVGMarkup","_toSVG","_createBaseClipPathSVGMarkup","objectMarkup","commonPieces","clipPathMarkup","noStyle","styleInfo","shadowInfo","withShadow","vectorEffect","absoluteClipPath","addPaintOrder","saveProps","props","tmpObj","dashedPropertySet","keys","_isEqual","origValue","currentValue","firstPass","_controlsVisibility","isControlVisible","newTheta","cornerHypotenuse","cosHalfOffset","sinHalfOffset","wh","drawRotatingPoint","rotateHeight","scaleOffset","_drawControl","control","controlName","_getControlsVisibility","setControlVisible","setControlsVisibility","FX_DURATION","fxCenterObjectH","callbacks","empty","fxCenterObjectV","fxRemove","skipCallbacks","propsToAnimate","_animate","propPair","from","valueProgress","timeProgress","coordProps","makeEdgeToOriginGetter","propertyNames","originValues","axis1","axis2","dimension","nearest","farthest","Line","_setWidthHeight","_getLeftToOriginX","_getTopToOriginY","calcLinePoints","origStrokeStyle","xMult","yMult","ATTRIBUTE_NAMES","parsedAttributes","pi","startAngle","endAngle","setRadius","svgString","startX","startY","endX","endY","largeFlag","getRadiusX","getRadiusY","isValidRadius","Triangle","widthBy2","heightBy2","piBy2","Ellipse","getRx","getRy","_initRxRy","isRounded","Polyline","_setPositionDimensions","correctLeftTop","calcDim","_calcDimensions","fromSVG","diffX","diffY","commonRender","fromElementGenerator","_class","Polygon","_toString","commandLengths","repeatedCommands","M","fromArray","_parsePath","_renderPathCommands","tempX","tempY","previous","subpathStartX","subpathStartY","controlX","controlY","_getOffsetTransform","digits","currentPath","coordsStr","coordsParsed","re","command","commandLength","repeatedCommand","klen","aX","aY","pathUrl","useSetOnGroup","isAlreadyGrouped","_updateObjectsACoords","_calcBounds","_updateObjectsCoords","_updateObjectCoords","objectLeft","objectTop","_restoreObjectsState","_includeDefaultValues","objsToObject","originalDefaults","_obj","ownCache","_restoreObjectState","destroy","toActiveSelection","ungroupOnCanvas","setObjectsCoords","onlyWidthHeight","iLen","jLen","_getBounds","minXY","maxXY","enlivedClipPath","toGroup","newGroup","childrenOverride","srcFromAttribute","_lastScaleX","_lastScaleY","_filterScalingX","_filterScalingY","minimumScaleTrigger","cacheKey","filters","_initElement","_element","setElement","removeTexture","_initConfig","applyFilters","resizeFilter","applyResizeFilters","backend","filterBackend","evictCachesForKey","setCrossOrigin","getOriginalSize","_stroke","filterObj","getSrc","hasCrop","strokeSvg","imageMarkup","getSvgSrc","origFill","filtered","setSrc","minimumScale","elementToFilter","_filteredEl","sourceWidth","sourceHeight","isNeutralState","imgElement","_needsResize","elementToDraw","sW","sH","sX","sY","_resetWidthHeight","CSS_CANVAS","_initFilters","pAR","rWidth","rHeight","pWidth","pHeight","_object","resizeFilters","fromURL","imgOptions","_getAngleValueForStraighten","straighten","fxStraighten","straightenObject","fxStraightenObject","testPrecision","precision","fragmentSource","fragmentShader","createShader","FRAGMENT_SHADER","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","setupGLContext","captureGPUInfo","isSupported","getParameter","MAX_TEXTURE_SIZE","precisions","webGlPrecision","createWebGLCanvas","aPosition","Float32Array","chooseFastestCopyGLTo2DMethod","canUseImageData","canMeasurePerf","performance","canUseArrayBuffer","ArrayBuffer","canUseUint8Clamped","copyGLTo2D","startTime","drawImageTime","testContext","now","glOptions","premultipliedAlpha","depth","stencil","antialias","clearColor","cachedTexture","getCachedTexture","sourceTexture","createTexture","targetTexture","originalTexture","passes","webgl","programCache","pass","tempFbo","createFramebuffer","bindFramebuffer","FRAMEBUFFER","applyTo","resizeCanvasIfNeeded","bindTexture","TEXTURE_2D","deleteTexture","deleteFramebuffer","clearWebGLCaches","textureCache","textureImageSource","texture","texParameteri","TEXTURE_MAG_FILTER","NEAREST","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","texImage2D","uniqueId","gpuInfo","renderer","vendor","ext","getExtension","UNMASKED_RENDERER_WEBGL","UNMASKED_VENDOR_WEBGL","sourceElement","originalEl","originalImageData","BaseFilter","vertexSource","createProgram","vertexShader","VERTEX_SHADER","getShaderInfoLog","program","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","attributeLocations","getAttributeLocations","uniformLocations","getUniformLocations","uStepW","getUniformLocation","uStepH","getAttribLocation","sendAttributeData","aPositionData","attributeLocation","createBuffer","bindBuffer","ARRAY_BUFFER","enableVertexAttribArray","vertexAttribPointer","FLOAT","bufferData","STATIC_DRAW","_setupFrameBuffer","framebufferTexture2D","COLOR_ATTACHMENT0","_swapTextures","temp","main","mainParameter","applyToWebGL","applyTo2d","retrieveShader","shader","useProgram","uniform1f","sendUniformData","viewport","drawArrays","TRIANGLE_STRIP","bindAdditionalTexture","textureUnit","activeTexture","TEXTURE0","unbindAdditionalTexture","getMainParameter","setMainParameter","createHelpLayer","helpLayer","mainP","ColorMatrix","colorsOnly","uColorMatrix","uConstants","constants","uniformMatrix4fv","uniform4fv","Brightness","brightness","uBrightness","Convolute","opaque","Convolute_3_1","Convolute_3_0","Convolute_5_1","Convolute_5_0","Convolute_7_1","Convolute_7_0","Convolute_9_1","Convolute_9_0","dstOff","scx","scy","srcOff","wt","weights","side","halfSide","sw","sh","output","createImageData","dst","alphaFac","uMatrix","uOpaque","uHalfSize","uSize","uniform1fv","Grayscale","lightness","luminosity","mode","uMode","uniform1i","Invert","invert","uInvert","Noise","noise","rand","uNoise","uSeed","Pixelate","blocksize","_i","_j","_iLen","_jLen","uBlocksize","RemoveColor","useAlpha","lowC","highC","uLow","uHigh","Brownie","Vintage","Kodachrome","Technicolor","Polaroid","Sepia","BlackWhite","BlendColor","screen","diff","lighten","darken","exclusion","tint","buildSource","tg","alpha1","uColor","BlendImage","mask","TEXTURE1","calculateMatrix","canvas1","blendData","blendImage","uTransformMatrix","uImage","uniformMatrix3fv","Resize","resizeType","lanczosLobes","uDelta","uTaps","uniform2fv","horizontal","taps","filterWindow","getFilterWindow","generateShader","tempScale","getTaps","lobeFunction","lanczosCreate","offsets","fragmentSourceTOP","dW","dH","lobes","xx","rcpScaleX","rcpScaleY","newData","oW","oH","sliceByTwo","hermiteFastResize","bilinearFiltering","lanczosResize","tmpCanvas","doneW","doneH","stepW","stepH","dX","dY","srcData","destImg","destData","lanczos","ratioX","ratioY","rcpRatioX","rcpRatioY","range2X","range2Y","cacheLanc","icenter","process","u","weight","fX","fY","xDiff","yDiff","chnl","origPix","w4","pixels","destImage","destPixels","ratioW","ratioH","ratioWHalf","ratioHHalf","img2","data2","weightsAlpha","gxR","gxG","gxB","gxA","centerY","yy","centerX","w0","Contrast","contrast","contrastF","uContrast","Saturation","saturation","adjust","uSaturation","Blur","aspectRatio","simpleBlur","canvas2","blurLayer1","blurLayer2","percent","ctx1","ctx2","newImageData","delta","chooseRightDelta","blurScale","Gamma","gamma","rInv","gInv","bInv","rVals","gVals","bVals","uGamma","uniform3fv","Composed","subFilters","some","HueRotation","rotation","rad","aThirdSqtSin","OneMinusCos","_dimensionAffectingProps","_reNewline","_reSpacesAndTabs","_reSpaceAndTab","_reWords","textAlign","superscript","baseline","subscript","textBackgroundColor","_fontSizeFraction","_fontSizeMult","charSpacing","_measuringContext","_styleProperties","__charBounds","CACHE_FONT_SIZE","MIN_TEXT_WIDTH","__skipDimension","initDimensions","getMeasuringContext","_splitText","newLines","_splitTextIntoLines","textLines","_textLines","graphemeLines","_unwrappedTextLines","_unwrappedLines","_text","graphemeText","_clearCache","calcTextWidth","cursorWidth","enlargeSpaces","calcTextHeight","diffSpace","currentLineWidth","numberOfSpaces","accumulatedSpace","line","charBound","spaces","isEndOfWrapping","getLineWidth","kernedWidth","lineIndex","missingNewlineOffset","_setTextStyles","_renderTextLinesBackground","_renderTextDecoration","_renderText","_renderTextStroke","_renderTextFill","charStyle","forMeasuring","textBaseline","_getFontDeclaration","maxWidth","_renderTextLine","_renderChars","styleHas","heightOfLine","lineLeftOffset","lastColor","charBox","currentColor","lineTopOffset","leftOffset","_getLeftOffset","topOffset","_getTopOffset","boxStart","boxWidth","getHeightOfLine","_getLineLeftOffset","getValueOfPropertyAt","getFontCache","cacheProp","_applyCharStyles","styleDeclaration","_measureChar","_char","previousChar","prevCharStyle","coupleWidth","previousWidth","fontCache","couple","stylesAreEqual","fontMultiplier","measureText","getHeightOfChar","measureLine","lineInfo","_measureLine","_getWidthOfCharSpacing","grapheme","prevGrapheme","graphemeInfo","lineBounds","_getGraphemeBox","numOfSpaces","skipLeft","getCompleteStyleDeclaration","prevStyle","info","previousBox","__lineHeights","maxHeight","_renderTextCommon","lineHeights","isEmptyStyles","actualStyle","nextStyle","timeToRender","isJustify","charsToRender","shortCut","_renderChar","_hasStyleChanged","_getStyleDeclaration","fullDecl","shouldFill","shouldStroke","fillText","strokeText","setSuperscript","_setScript","setSubscript","schema","loc","get2DCursorLocation","setSelectionStyles","thisStyle","_hasStyleChangedForSvg","__lineWidths","_shouldClearDimensionCache","shouldClear","_forceClearCache","_size","_dy","lastDecoration","currentDecoration","currentFill","lastFill","styleObject","family","fontIsGeneric","genericFonts","newLine","newText","additionalProperties","needsDims","_key","parsedAnchor","textAnchor","originalStrokeWidth","textHeightScaleFactor","scaledDiff","textHeight","offX","p3","cleanStyle","letterCount","stylePropertyValue","stylesCount","allStyleObjectPropertiesMatch","graphemeCount","removeStyle","lineNum","charNum","_extendStyles","_getLineStyle","_setLineStyle","_setStyleDeclaration","selectionStart","skipWrapping","getSelectionStyles","startIndex","endIndex","selectionEnd","getStyleAtPosition","lineStyle","_deleteStyleDeclaration","_deleteLineStyle","parseDecoration","IText","editable","editingBorderColor","cursorColor","cursorDelay","cursorDuration","caching","_reSpace","_currentCursorOpacity","_selectionDirection","_abortCursorAnimation","__widthOfSpace","inCompositionMode","initBehavior","setSelectionStart","_updateAndFire","setSelectionEnd","_fireSelectionChanged","_updateTextarea","initDelayedCursor","cursorOffsetCache","renderCursorOrSelection","skipRestore","_clearTextArea","boundaries","_getCursorBoundaries","renderCursor","renderSelection","_getCursorBoundariesOffsets","cursorPosition","cursorLocation","charHeight","__isMousedown","startLine","endLine","startChar","endChar","realLineHeight","lineOffset","boxEnd","compositionColor","getCurrentCharFontSize","cp","_getCurrentCharIndex","getCurrentCharColor","initAddedHandler","initRemovedHandler","initCursorSelectionHandlers","initDoubleClickSimulation","mouseMoveHandler","_initCanvasHandlers","_removeCanvasHandlers","_tick","_currentTickState","_animateCursor","targetOpacity","completeMethod","tickState","isAborted","_onTickComplete","_cursorTimeout1","_currentTickCompleteState","restart","delay","abortCursorAnimation","_cursorTimeout2","selectAll","getSelectedText","findWordBoundaryLeft","startFrom","findWordBoundaryRight","findLineBoundaryLeft","findLineBoundaryRight","searchWordBoundary","direction","reNonWord","selectWord","newSelectionStart","newSelectionEnd","selectLine","enterEditing","exitEditingOnOthers","initHiddenTextarea","_saveEditingProps","_setEditingProps","_textBeforeEdit","initMouseMoveHandler","getSelectionStartFromPointer","currentStart","currentEnd","__selectionStartOnMouseDown","restartCursorIfNeeded","fromStringToGraphemeSelection","smallerTextStart","graphemeStart","smallerTextEnd","fromGraphemeToStringSelection","newSelection","updateTextareaPosition","updateFromTextArea","_calcTextareaPosition","desiredPosition","compositionStart","upperCanvas","upperCanvasWidth","upperCanvasHeight","clientWidth","clientHeight","_savedProps","_restoreEditingProps","isTextChanged","_removeExtraneousStyles","removeStyleFromTo","styleObj","cursorStart","cursorEnd","lineStart","charStart","lineEnd","charEnd","shiftLineStyles","numericChar","clonedStyles","numericLine","insertNewlineStyleObject","qty","copiedStyle","currentCharStyle","newLineStyles","somethingAdded","numIndex","insertCharStyleObject","quantity","currentLineStyles","currentLineStylesCloned","numericIndex","newStyle","insertNewStyleBlock","insertedText","cursorLoc","addedLines","linesLength","setSelectionStartEndWithShift","setSelectionInBoundaries","__lastClickTime","__lastLastClickTime","__lastPointer","__newClickTime","newPointer","isTripleClick","_stopEvent","__lastIsEditing","__lastSelected","initMousedownHandler","initMouseupHandler","initClicks","_mouseDownHandler","setCursorByClick","_mouseDownHandlerBefore","mouseUpHandler","currentActive","mouseOffset","prevWidth","_getNewSelectionStartFromOffset","distanceBtwLastCharAndCursor","distanceBtwNextCharAndCursor","onKeyDown","onKeyUp","onInput","copy","paste","onCompositionStart","onCompositionUpdate","onCompositionEnd","_clickHandlerInitialized","onClick","keysMap","9","27","33","34","35","36","37","38","39","40","ctrlKeysMapUp","67","88","ctrlKeysMapDown","65","keyCode","ctrlKey","metaKey","stopImmediatePropagation","_copyDone","fromPaste","removedText","nextText","charCount","nextCharCount","charDiff","textareaSelection","backDelete","copiedText","copiedTextStyle","compositionEnd","_getClipboardData","clipboardData","_getWidthBeforeCursor","widthBeforeCursor","getDownCursorOffset","isRight","selectionProp","_getSelectionForOffset","indexOnOtherLine","_getIndexOnLine","getUpCursorOffset","textBeforeCursor","charWidth","foundMatch","widthOfCharsOnLine","indexOnLine","leftEdge","rightEdge","offsetFromLeftEdge","moveCursorDown","_moveCursorUpOrDown","moveCursorUp","moveCursorWithShift","moveCursorWithoutShift","moveCursorLeft","_moveCursorLeftOrRight","_move","_moveLeft","_moveRight","moveCursorLeftWithoutShift","change","moveCursorLeftWithShift","moveCursorRight","actionName","moveCursorRightWithShift","moveCursorRightWithoutShift","changed","removeChars","insertChars","multipleSpacesRegex","_getSVGLeftTopOffsets","textAndBg","_getSVGTextAndBg","textTop","textLeft","_wrapSVGTextAndBg","lineTop","textSpans","textTopOffset","textLeftOffset","_setSVGTextLineBg","_setSVGTextLineText","_createTextCharSpan","styleDecl","shouldUseWhitespace","styleProps","fillStyles","dySpan","_pushTextBgRect","fillColor","_getSVGLineTopOffset","lastHeight","minWidth","dynamicMinWidth","__cachedLines","_wordJoiners","splitByGrapheme","_styleMap","_generateStyleMap","textInfo","realLineCount","realLineCharCount","isWrapping","nextOffset","shouldLimit","mapNextLine","_wrapText","desiredWidth","wrapped","_wrapLine","_measureWord","word","charOffset","_line","reservedSpace","words","infix","wordWidth","infixWidth","largestWordWidth","lineJustStarted","additionalSpace","linesToKeep","AnnotationIcons","arrow","blank","colors","delete","discard","done","icon","more","pencil","ok","redo","select","textAdd","textWeight","textSize","tools","undo","heart","check","pin","like","dislike","tag","attention","smiley","Annotation_Annotation","_super","Annotation","_active","_currentTool","_currentColor","_currentWidth","_currentOpacity","_currentFontSize","_currentFontWeight","_colors","_widths","_opacities","_fontSizes","_fontWeights","_pointerDown","_exportInited","icons","tslib_es6","init","initExporting","_data","loadData","exporting","menu","invalidate","ExportMenu","items","Interaction","events","ev","Keyboard","isKey","deleteSelected","once","updateIndicator","updateSVG","_group","_indicatorId","Registry","getUniqueId","label","language","translateAny","handleClick","callbackTarget","svg","this_1","widths","this_2","opacities","this_3","fontSizes","this_4","setFontSize","fontWeights","this_5","setFontWeight","this_6","addIcon","mainitem","hex","_menu","hidden","addText","deactivate","defineProperty","_fabric","pixelWidth","pixelHeight","svgContainer","SVGContainer","currentTool","_currentLine","currentWidth","currentOpacity","paper","pointerEvents","dom","activate","updateTool","matches","innerHTML","showBranch","hideBranch","indicator","newicon","createSvgElement","oldicon","insertBefore","getElementsByClassName","brushColor","rgba","setIconFill","currentFontSize","currentFontWeight","underConstruction","alert","res","atob","btoa","Plugin","registeredClasses","am4plugins_annotation","annotation_namespaceObject","jsdom","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","RangeError","__proto__","arg","encodingOrOffset","allocUnsafe","TypeError","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","isEncoding","actual","fromString","isBuffer","checked","val","isnan","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","buf","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","base64Slice","fromByteArray","utf8Slice","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","Symbol","species","configurable","allocUnsafeSlow","_isBuffer","compare","list","swap16","swap32","swap64","hexSlice","asciiSlice","latin1Slice","utf16leSlice","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","_arr","ret","out","bytes","checkOffset","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","eval","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","tripletToBase64","num"],"mappings":"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","file":"./plugins/annotation.js","sourcesContent":["exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/ieee754/index.js","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n\n\n// WEBPACK FOOTER //\n// C:/Dropbox/www/amcharts4dev/node_modules/isarray/index.js","/* build: `node build.js modules=ALL exclude=gestures,accessors requirejs minifier=uglifyjs` */\n/*! Fabric.js Copyright 2008-2015, Printio (Juriy Zaytsev, Maxim Chernyak) */\n\nvar fabric = fabric || { version: '3.3.0' };\nif (typeof exports !== 'undefined') {\n exports.fabric = fabric;\n}\n/* _AMD_START_ */\nelse if (typeof define === 'function' && define.amd) {\n define([], function() { return fabric; });\n}\n/* _AMD_END_ */\nif (typeof document !== 'undefined' && typeof window !== 'undefined') {\n if (document instanceof (typeof HTMLDocument !== 'undefined' ? HTMLDocument : Document)) {\n fabric.document = document;\n }\n else {\n fabric.document = document.implementation.createHTMLDocument('');\n }\n fabric.window = window;\n}\nelse {\n // assume we're running under node.js when document/window are not present\n var jsdom = require('jsdom');\n var virtualWindow = new jsdom.JSDOM(\n decodeURIComponent('%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E'),\n {\n features: {\n FetchExternalResources: ['img']\n },\n resources: 'usable'\n }).window;\n fabric.document = virtualWindow.document;\n fabric.jsdomImplForWrapper = require('jsdom/lib/jsdom/living/generated/utils').implForWrapper;\n fabric.nodeCanvas = require('jsdom/lib/jsdom/utils').Canvas;\n fabric.window = virtualWindow;\n DOMParser = fabric.window.DOMParser;\n}\n\n/**\n * True when in environment that supports touch events\n * @type boolean\n */\nfabric.isTouchSupported = 'ontouchstart' in fabric.window || 'ontouchstart' in fabric.document ||\n (fabric.window && fabric.window.navigator && fabric.window.navigator.maxTouchPoints > 0);\n\n/**\n * True when in environment that's probably Node.js\n * @type boolean\n */\nfabric.isLikelyNode = typeof Buffer !== 'undefined' &&\n typeof window === 'undefined';\n\n/* _FROM_SVG_START_ */\n/**\n * Attributes parsed from all SVG elements\n * @type array\n */\nfabric.SHARED_ATTRIBUTES = [\n 'display',\n 'transform',\n 'fill', 'fill-opacity', 'fill-rule',\n 'opacity',\n 'stroke', 'stroke-dasharray', 'stroke-linecap', 'stroke-dashoffset',\n 'stroke-linejoin', 'stroke-miterlimit',\n 'stroke-opacity', 'stroke-width',\n 'id', 'paint-order', 'vector-effect',\n 'instantiated_by_use', 'clip-path'\n];\n/* _FROM_SVG_END_ */\n\n/**\n * Pixel per Inch as a default value set to 96. Can be changed for more realistic conversion.\n */\nfabric.DPI = 96;\nfabric.reNum = '(?:[-+]?(?:\\\\d+|\\\\d*\\\\.\\\\d+)(?:[eE][-+]?\\\\d+)?)';\nfabric.fontPaths = { };\nfabric.iMatrix = [1, 0, 0, 1, 0, 0];\n\n/**\n * Pixel limit for cache canvases. 1Mpx , 4Mpx should be fine.\n * @since 1.7.14\n * @type Number\n * @default\n */\nfabric.perfLimitSizeTotal = 2097152;\n\n/**\n * Pixel limit for cache canvases width or height. IE fixes the maximum at 5000\n * @since 1.7.14\n * @type Number\n * @default\n */\nfabric.maxCacheSideLimit = 4096;\n\n/**\n * Lowest pixel limit for cache canvases, set at 256PX\n * @since 1.7.14\n * @type Number\n * @default\n */\nfabric.minCacheSideLimit = 256;\n\n/**\n * Cache Object for widths of chars in text rendering.\n */\nfabric.charWidthsCache = { };\n\n/**\n * if webgl is enabled and available, textureSize will determine the size\n * of the canvas backend\n * @since 2.0.0\n * @type Number\n * @default\n */\nfabric.textureSize = 2048;\n\n/**\n * When 'true', style information is not retained when copy/pasting text, making\n * pasted text use destination style.\n * Defaults to 'false'.\n * @type Boolean\n * @default\n */\nfabric.disableStyleCopyPaste = false;\n\n/**\n * Enable webgl for filtering picture is available\n * A filtering backend will be initialized, this will both take memory and\n * time since a default 2048x2048 canvas will be created for the gl context\n * @since 2.0.0\n * @type Boolean\n * @default\n */\nfabric.enableGLFiltering = true;\n\n/**\n * Device Pixel Ratio\n * @see https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/HTML-canvas-guide/SettingUptheCanvas/SettingUptheCanvas.html\n */\nfabric.devicePixelRatio = fabric.window.devicePixelRatio ||\n fabric.window.webkitDevicePixelRatio ||\n fabric.window.mozDevicePixelRatio ||\n 1;\n/**\n * Browser-specific constant to adjust CanvasRenderingContext2D.shadowBlur value,\n * which is unitless and not rendered equally across browsers.\n *\n * Values that work quite well (as of October 2017) are:\n * - Chrome: 1.5\n * - Edge: 1.75\n * - Firefox: 0.9\n * - Safari: 0.95\n *\n * @since 2.0.0\n * @type Number\n * @default 1\n */\nfabric.browserShadowBlurConstant = 1;\n\n/**\n * This object contains the result of arc to beizer conversion for faster retrieving if the same arc needs to be converted again.\n * It was an internal variable, is accessible since version 2.3.4\n */\nfabric.arcToSegmentsCache = { };\n\n/**\n * This object keeps the results of the boundsOfCurve calculation mapped by the joined arguments necessary to calculate it.\n * It does speed up calculation, if you parse and add always the same paths, but in case of heavy usage of freedrawing\n * you do not get any speed benefit and you get a big object in memory.\n * The object was a private variable before, while now is appended to the lib so that you have access to it and you\n * can eventually clear it.\n * It was an internal variable, is accessible since version 2.3.4\n */\nfabric.boundsOfCurveCache = { };\n\n/**\n * If disabled boundsOfCurveCache is not used. For apps that make heavy usage of pencil drawing probably disabling it is better\n * @default true\n */\nfabric.cachesBoundsOfCurve = true;\n\n/**\n * Skip performance testing of setupGLContext and force the use of putImageData that seems to be the one that works best on\n * Chrome + old hardware. if your users are experiencing empty images after filtering you may try to force this to true\n * this has to be set before instantiating the filtering backend ( before filtering the first image )\n * @type Boolean\n * @default false\n */\nfabric.forceGLPutImageData = false;\n\nfabric.initFilterBackend = function() {\n if (fabric.enableGLFiltering && fabric.isWebglSupported && fabric.isWebglSupported(fabric.textureSize)) {\n console.log('max texture size: ' + fabric.maxTextureSize);\n return (new fabric.WebglFilterBackend({ tileSize: fabric.textureSize }));\n }\n else if (fabric.Canvas2dFilterBackend) {\n return (new fabric.Canvas2dFilterBackend());\n }\n};\n\n\nif (typeof document !== 'undefined' && typeof window !== 'undefined') {\n // ensure globality even if entire library were function wrapped (as in Meteor.js packaging system)\n window.fabric = fabric;\n}\n\n\n(function() {\n\n /**\n * @private\n * @param {String} eventName\n * @param {Function} handler\n */\n function _removeEventListener(eventName, handler) {\n if (!this.__eventListeners[eventName]) {\n return;\n }\n var eventListener = this.__eventListeners[eventName];\n if (handler) {\n eventListener[eventListener.indexOf(handler)] = false;\n }\n else {\n fabric.util.array.fill(eventListener, false);\n }\n }\n\n /**\n * Observes specified event\n * @deprecated `observe` deprecated since 0.8.34 (use `on` instead)\n * @memberOf fabric.Observable\n * @alias on\n * @param {String|Object} eventName Event name (eg. 'after:render') or object with key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n * @param {Function} handler Function that receives a notification when an event of the specified type occurs\n * @return {Self} thisArg\n * @chainable\n */\n function observe(eventName, handler) {\n if (!this.__eventListeners) {\n this.__eventListeners = { };\n }\n // one object with key/value pairs was passed\n if (arguments.length === 1) {\n for (var prop in eventName) {\n this.on(prop, eventName[prop]);\n }\n }\n else {\n if (!this.__eventListeners[eventName]) {\n this.__eventListeners[eventName] = [];\n }\n this.__eventListeners[eventName].push(handler);\n }\n return this;\n }\n\n /**\n * Stops event observing for a particular event handler. Calling this method\n * without arguments removes all handlers for all events\n * @deprecated `stopObserving` deprecated since 0.8.34 (use `off` instead)\n * @memberOf fabric.Observable\n * @alias off\n * @param {String|Object} eventName Event name (eg. 'after:render') or object with key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n * @param {Function} handler Function to be deleted from EventListeners\n * @return {Self} thisArg\n * @chainable\n */\n function stopObserving(eventName, handler) {\n if (!this.__eventListeners) {\n return this;\n }\n\n // remove all key/value pairs (event name -> event handler)\n if (arguments.length === 0) {\n for (eventName in this.__eventListeners) {\n _removeEventListener.call(this, eventName);\n }\n }\n // one object with key/value pairs was passed\n else if (arguments.length === 1 && typeof arguments[0] === 'object') {\n for (var prop in eventName) {\n _removeEventListener.call(this, prop, eventName[prop]);\n }\n }\n else {\n _removeEventListener.call(this, eventName, handler);\n }\n return this;\n }\n\n /**\n * Fires event with an optional options object\n * @deprecated `fire` deprecated since 1.0.7 (use `trigger` instead)\n * @memberOf fabric.Observable\n * @alias trigger\n * @param {String} eventName Event name to fire\n * @param {Object} [options] Options object\n * @return {Self} thisArg\n * @chainable\n */\n function fire(eventName, options) {\n if (!this.__eventListeners) {\n return this;\n }\n\n var listenersForEvent = this.__eventListeners[eventName];\n if (!listenersForEvent) {\n return this;\n }\n\n for (var i = 0, len = listenersForEvent.length; i < len; i++) {\n listenersForEvent[i] && listenersForEvent[i].call(this, options || { });\n }\n this.__eventListeners[eventName] = listenersForEvent.filter(function(value) {\n return value !== false;\n });\n return this;\n }\n\n /**\n * @namespace fabric.Observable\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#events}\n * @see {@link http://fabricjs.com/events|Events demo}\n */\n fabric.Observable = {\n observe: observe,\n stopObserving: stopObserving,\n fire: fire,\n\n on: observe,\n off: stopObserving,\n trigger: fire\n };\n})();\n\n\n/**\n * @namespace fabric.Collection\n */\nfabric.Collection = {\n\n _objects: [],\n\n /**\n * Adds objects to collection, Canvas or Group, then renders canvas\n * (if `renderOnAddRemove` is not `false`).\n * in case of Group no changes to bounding box are made.\n * Objects should be instances of (or inherit from) fabric.Object\n * Use of this function is highly discouraged for groups.\n * you can add a bunch of objects with the add method but then you NEED\n * to run a addWithUpdate call for the Group class or position/bbox will be wrong.\n * @param {...fabric.Object} object Zero or more fabric instances\n * @return {Self} thisArg\n * @chainable\n */\n add: function () {\n this._objects.push.apply(this._objects, arguments);\n if (this._onObjectAdded) {\n for (var i = 0, length = arguments.length; i < length; i++) {\n this._onObjectAdded(arguments[i]);\n }\n }\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Inserts an object into collection at specified index, then renders canvas (if `renderOnAddRemove` is not `false`)\n * An object should be an instance of (or inherit from) fabric.Object\n * Use of this function is highly discouraged for groups.\n * you can add a bunch of objects with the insertAt method but then you NEED\n * to run a addWithUpdate call for the Group class or position/bbox will be wrong.\n * @param {Object} object Object to insert\n * @param {Number} index Index to insert object at\n * @param {Boolean} nonSplicing When `true`, no splicing (shifting) of objects occurs\n * @return {Self} thisArg\n * @chainable\n */\n insertAt: function (object, index, nonSplicing) {\n var objects = this._objects;\n if (nonSplicing) {\n objects[index] = object;\n }\n else {\n objects.splice(index, 0, object);\n }\n this._onObjectAdded && this._onObjectAdded(object);\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Removes objects from a collection, then renders canvas (if `renderOnAddRemove` is not `false`)\n * @param {...fabric.Object} object Zero or more fabric instances\n * @return {Self} thisArg\n * @chainable\n */\n remove: function() {\n var objects = this._objects,\n index, somethingRemoved = false;\n\n for (var i = 0, length = arguments.length; i < length; i++) {\n index = objects.indexOf(arguments[i]);\n\n // only call onObjectRemoved if an object was actually removed\n if (index !== -1) {\n somethingRemoved = true;\n objects.splice(index, 1);\n this._onObjectRemoved && this._onObjectRemoved(arguments[i]);\n }\n }\n\n this.renderOnAddRemove && somethingRemoved && this.requestRenderAll();\n return this;\n },\n\n /**\n * Executes given function for each object in this group\n * @param {Function} callback\n * Callback invoked with current object as first argument,\n * index - as second and an array of all objects - as third.\n * Callback is invoked in a context of Global Object (e.g. `window`)\n * when no `context` argument is given\n *\n * @param {Object} context Context (aka thisObject)\n * @return {Self} thisArg\n * @chainable\n */\n forEachObject: function(callback, context) {\n var objects = this.getObjects();\n for (var i = 0, len = objects.length; i < len; i++) {\n callback.call(context, objects[i], i, objects);\n }\n return this;\n },\n\n /**\n * Returns an array of children objects of this instance\n * Type parameter introduced in 1.3.10\n * since 2.3.5 this method return always a COPY of the array;\n * @param {String} [type] When specified, only objects of this type are returned\n * @return {Array}\n */\n getObjects: function(type) {\n if (typeof type === 'undefined') {\n return this._objects.concat();\n }\n return this._objects.filter(function(o) {\n return o.type === type;\n });\n },\n\n /**\n * Returns object at specified index\n * @param {Number} index\n * @return {Self} thisArg\n */\n item: function (index) {\n return this._objects[index];\n },\n\n /**\n * Returns true if collection contains no objects\n * @return {Boolean} true if collection is empty\n */\n isEmpty: function () {\n return this._objects.length === 0;\n },\n\n /**\n * Returns a size of a collection (i.e: length of an array containing its objects)\n * @return {Number} Collection size\n */\n size: function() {\n return this._objects.length;\n },\n\n /**\n * Returns true if collection contains an object\n * @param {Object} object Object to check against\n * @return {Boolean} `true` if collection contains an object\n */\n contains: function(object) {\n return this._objects.indexOf(object) > -1;\n },\n\n /**\n * Returns number representation of a collection complexity\n * @return {Number} complexity\n */\n complexity: function () {\n return this._objects.reduce(function (memo, current) {\n memo += current.complexity ? current.complexity() : 0;\n return memo;\n }, 0);\n }\n};\n\n\n/**\n * @namespace fabric.CommonMethods\n */\nfabric.CommonMethods = {\n\n /**\n * Sets object's properties from options\n * @param {Object} [options] Options object\n */\n _setOptions: function(options) {\n for (var prop in options) {\n this.set(prop, options[prop]);\n }\n },\n\n /**\n * @private\n * @param {Object} [filler] Options object\n * @param {String} [property] property to set the Gradient to\n */\n _initGradient: function(filler, property) {\n if (filler && filler.colorStops && !(filler instanceof fabric.Gradient)) {\n this.set(property, new fabric.Gradient(filler));\n }\n },\n\n /**\n * @private\n * @param {Object} [filler] Options object\n * @param {String} [property] property to set the Pattern to\n * @param {Function} [callback] callback to invoke after pattern load\n */\n _initPattern: function(filler, property, callback) {\n if (filler && filler.source && !(filler instanceof fabric.Pattern)) {\n this.set(property, new fabric.Pattern(filler, callback));\n }\n else {\n callback && callback();\n }\n },\n\n /**\n * @private\n * @param {Object} [options] Options object\n */\n _initClipping: function(options) {\n if (!options.clipTo || typeof options.clipTo !== 'string') {\n return;\n }\n\n var functionBody = fabric.util.getFunctionBody(options.clipTo);\n if (typeof functionBody !== 'undefined') {\n this.clipTo = new Function('ctx', functionBody);\n }\n },\n\n /**\n * @private\n */\n _setObject: function(obj) {\n for (var prop in obj) {\n this._set(prop, obj[prop]);\n }\n },\n\n /**\n * Sets property to a given value. When changing position/dimension -related properties (left, top, scale, angle, etc.) `set` does not update position of object's borders/controls. If you need to update those, call `setCoords()`.\n * @param {String|Object} key Property name or object (if object, iterate over the object properties)\n * @param {Object|Function} value Property value (if function, the value is passed into it and its return value is used as a new one)\n * @return {fabric.Object} thisArg\n * @chainable\n */\n set: function(key, value) {\n if (typeof key === 'object') {\n this._setObject(key);\n }\n else {\n if (typeof value === 'function' && key !== 'clipTo') {\n this._set(key, value(this.get(key)));\n }\n else {\n this._set(key, value);\n }\n }\n return this;\n },\n\n _set: function(key, value) {\n this[key] = value;\n },\n\n /**\n * Toggles specified property from `true` to `false` or from `false` to `true`\n * @param {String} property Property to toggle\n * @return {fabric.Object} thisArg\n * @chainable\n */\n toggle: function(property) {\n var value = this.get(property);\n if (typeof value === 'boolean') {\n this.set(property, !value);\n }\n return this;\n },\n\n /**\n * Basic getter\n * @param {String} property Property name\n * @return {*} value of a property\n */\n get: function(property) {\n return this[property];\n }\n};\n\n\n(function(global) {\n\n var sqrt = Math.sqrt,\n atan2 = Math.atan2,\n pow = Math.pow,\n abs = Math.abs,\n PiBy180 = Math.PI / 180,\n PiBy2 = Math.PI / 2;\n\n /**\n * @namespace fabric.util\n */\n fabric.util = {\n\n /**\n * Calculate the cos of an angle, avoiding returning floats for known results\n * @static\n * @memberOf fabric.util\n * @param {Number} angle the angle in radians or in degree\n * @return {Number}\n */\n cos: function(angle) {\n if (angle === 0) { return 1; }\n if (angle < 0) {\n // cos(a) = cos(-a)\n angle = -angle;\n }\n var angleSlice = angle / PiBy2;\n switch (angleSlice) {\n case 1: case 3: return 0;\n case 2: return -1;\n }\n return Math.cos(angle);\n },\n\n /**\n * Calculate the sin of an angle, avoiding returning floats for known results\n * @static\n * @memberOf fabric.util\n * @param {Number} angle the angle in radians or in degree\n * @return {Number}\n */\n sin: function(angle) {\n if (angle === 0) { return 0; }\n var angleSlice = angle / PiBy2, sign = 1;\n if (angle < 0) {\n // sin(-a) = -sin(a)\n sign = -1;\n }\n switch (angleSlice) {\n case 1: return sign;\n case 2: return 0;\n case 3: return -sign;\n }\n return Math.sin(angle);\n },\n\n /**\n * Removes value from an array.\n * Presence of value (and its position in an array) is determined via `Array.prototype.indexOf`\n * @static\n * @memberOf fabric.util\n * @param {Array} array\n * @param {*} value\n * @return {Array} original array\n */\n removeFromArray: function(array, value) {\n var idx = array.indexOf(value);\n if (idx !== -1) {\n array.splice(idx, 1);\n }\n return array;\n },\n\n /**\n * Returns random number between 2 specified ones.\n * @static\n * @memberOf fabric.util\n * @param {Number} min lower limit\n * @param {Number} max upper limit\n * @return {Number} random value (between min and max)\n */\n getRandomInt: function(min, max) {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n },\n\n /**\n * Transforms degrees to radians.\n * @static\n * @memberOf fabric.util\n * @param {Number} degrees value in degrees\n * @return {Number} value in radians\n */\n degreesToRadians: function(degrees) {\n return degrees * PiBy180;\n },\n\n /**\n * Transforms radians to degrees.\n * @static\n * @memberOf fabric.util\n * @param {Number} radians value in radians\n * @return {Number} value in degrees\n */\n radiansToDegrees: function(radians) {\n return radians / PiBy180;\n },\n\n /**\n * Rotates `point` around `origin` with `radians`\n * @static\n * @memberOf fabric.util\n * @param {fabric.Point} point The point to rotate\n * @param {fabric.Point} origin The origin of the rotation\n * @param {Number} radians The radians of the angle for the rotation\n * @return {fabric.Point} The new rotated point\n */\n rotatePoint: function(point, origin, radians) {\n point.subtractEquals(origin);\n var v = fabric.util.rotateVector(point, radians);\n return new fabric.Point(v.x, v.y).addEquals(origin);\n },\n\n /**\n * Rotates `vector` with `radians`\n * @static\n * @memberOf fabric.util\n * @param {Object} vector The vector to rotate (x and y)\n * @param {Number} radians The radians of the angle for the rotation\n * @return {Object} The new rotated point\n */\n rotateVector: function(vector, radians) {\n var sin = fabric.util.sin(radians),\n cos = fabric.util.cos(radians),\n rx = vector.x * cos - vector.y * sin,\n ry = vector.x * sin + vector.y * cos;\n return {\n x: rx,\n y: ry\n };\n },\n\n /**\n * Apply transform t to point p\n * @static\n * @memberOf fabric.util\n * @param {fabric.Point} p The point to transform\n * @param {Array} t The transform\n * @param {Boolean} [ignoreOffset] Indicates that the offset should not be applied\n * @return {fabric.Point} The transformed point\n */\n transformPoint: function(p, t, ignoreOffset) {\n if (ignoreOffset) {\n return new fabric.Point(\n t[0] * p.x + t[2] * p.y,\n t[1] * p.x + t[3] * p.y\n );\n }\n return new fabric.Point(\n t[0] * p.x + t[2] * p.y + t[4],\n t[1] * p.x + t[3] * p.y + t[5]\n );\n },\n\n /**\n * Returns coordinates of points's bounding rectangle (left, top, width, height)\n * @param {Array} points 4 points array\n * @return {Object} Object with left, top, width, height properties\n */\n makeBoundingBoxFromPoints: function(points) {\n var xPoints = [points[0].x, points[1].x, points[2].x, points[3].x],\n minX = fabric.util.array.min(xPoints),\n maxX = fabric.util.array.max(xPoints),\n width = maxX - minX,\n yPoints = [points[0].y, points[1].y, points[2].y, points[3].y],\n minY = fabric.util.array.min(yPoints),\n maxY = fabric.util.array.max(yPoints),\n height = maxY - minY;\n\n return {\n left: minX,\n top: minY,\n width: width,\n height: height\n };\n },\n\n /**\n * Invert transformation t\n * @static\n * @memberOf fabric.util\n * @param {Array} t The transform\n * @return {Array} The inverted transform\n */\n invertTransform: function(t) {\n var a = 1 / (t[0] * t[3] - t[1] * t[2]),\n r = [a * t[3], -a * t[1], -a * t[2], a * t[0]],\n o = fabric.util.transformPoint({ x: t[4], y: t[5] }, r, true);\n r[4] = -o.x;\n r[5] = -o.y;\n return r;\n },\n\n /**\n * A wrapper around Number#toFixed, which contrary to native method returns number, not string.\n * @static\n * @memberOf fabric.util\n * @param {Number|String} number number to operate on\n * @param {Number} fractionDigits number of fraction digits to \"leave\"\n * @return {Number}\n */\n toFixed: function(number, fractionDigits) {\n return parseFloat(Number(number).toFixed(fractionDigits));\n },\n\n /**\n * Converts from attribute value to pixel value if applicable.\n * Returns converted pixels or original value not converted.\n * @param {Number|String} value number to operate on\n * @param {Number} fontSize\n * @return {Number|String}\n */\n parseUnit: function(value, fontSize) {\n var unit = /\\D{0,2}$/.exec(value),\n number = parseFloat(value);\n if (!fontSize) {\n fontSize = fabric.Text.DEFAULT_SVG_FONT_SIZE;\n }\n switch (unit[0]) {\n case 'mm':\n return number * fabric.DPI / 25.4;\n\n case 'cm':\n return number * fabric.DPI / 2.54;\n\n case 'in':\n return number * fabric.DPI;\n\n case 'pt':\n return number * fabric.DPI / 72; // or * 4 / 3\n\n case 'pc':\n return number * fabric.DPI / 72 * 12; // or * 16\n\n case 'em':\n return number * fontSize;\n\n default:\n return number;\n }\n },\n\n /**\n * Function which always returns `false`.\n * @static\n * @memberOf fabric.util\n * @return {Boolean}\n */\n falseFunction: function() {\n return false;\n },\n\n /**\n * Returns klass \"Class\" object of given namespace\n * @memberOf fabric.util\n * @param {String} type Type of object (eg. 'circle')\n * @param {String} namespace Namespace to get klass \"Class\" object from\n * @return {Object} klass \"Class\"\n */\n getKlass: function(type, namespace) {\n // capitalize first letter only\n type = fabric.util.string.camelize(type.charAt(0).toUpperCase() + type.slice(1));\n return fabric.util.resolveNamespace(namespace)[type];\n },\n\n /**\n * Returns array of attributes for given svg that fabric parses\n * @memberOf fabric.util\n * @param {String} type Type of svg element (eg. 'circle')\n * @return {Array} string names of supported attributes\n */\n getSvgAttributes: function(type) {\n var attributes = [\n 'instantiated_by_use',\n 'style',\n 'id',\n 'class'\n ];\n switch (type) {\n case 'linearGradient':\n attributes = attributes.concat(['x1', 'y1', 'x2', 'y2', 'gradientUnits', 'gradientTransform']);\n break;\n case 'radialGradient':\n attributes = attributes.concat(['gradientUnits', 'gradientTransform', 'cx', 'cy', 'r', 'fx', 'fy', 'fr']);\n break;\n case 'stop':\n attributes = attributes.concat(['offset', 'stop-color', 'stop-opacity']);\n break;\n }\n return attributes;\n },\n\n /**\n * Returns object of given namespace\n * @memberOf fabric.util\n * @param {String} namespace Namespace string e.g. 'fabric.Image.filter' or 'fabric'\n * @return {Object} Object for given namespace (default fabric)\n */\n resolveNamespace: function(namespace) {\n if (!namespace) {\n return fabric;\n }\n\n var parts = namespace.split('.'),\n len = parts.length, i,\n obj = global || fabric.window;\n\n for (i = 0; i < len; ++i) {\n obj = obj[parts[i]];\n }\n\n return obj;\n },\n\n /**\n * Loads image element from given url and passes it to a callback\n * @memberOf fabric.util\n * @param {String} url URL representing an image\n * @param {Function} callback Callback; invoked with loaded image\n * @param {*} [context] Context to invoke callback in\n * @param {Object} [crossOrigin] crossOrigin value to set image element to\n */\n loadImage: function(url, callback, context, crossOrigin) {\n if (!url) {\n callback && callback.call(context, url);\n return;\n }\n\n var img = fabric.util.createImage();\n\n /** @ignore */\n var onLoadCallback = function () {\n callback && callback.call(context, img);\n img = img.onload = img.onerror = null;\n };\n\n img.onload = onLoadCallback;\n /** @ignore */\n img.onerror = function() {\n fabric.log('Error loading ' + img.src);\n callback && callback.call(context, null, true);\n img = img.onload = img.onerror = null;\n };\n\n // data-urls appear to be buggy with crossOrigin\n // https://github.com/kangax/fabric.js/commit/d0abb90f1cd5c5ef9d2a94d3fb21a22330da3e0a#commitcomment-4513767\n // see https://code.google.com/p/chromium/issues/detail?id=315152\n // https://bugzilla.mozilla.org/show_bug.cgi?id=935069\n if (url.indexOf('data') !== 0 && crossOrigin) {\n img.crossOrigin = crossOrigin;\n }\n\n // IE10 / IE11-Fix: SVG contents from data: URI\n // will only be available if the IMG is present\n // in the DOM (and visible)\n if (url.substring(0,14) === 'data:image/svg') {\n img.onload = null;\n fabric.util.loadImageInDom(img, onLoadCallback);\n }\n\n img.src = url;\n },\n\n /**\n * Attaches SVG image with data: URL to the dom\n * @memberOf fabric.util\n * @param {Object} img Image object with data:image/svg src\n * @param {Function} callback Callback; invoked with loaded image\n * @return {Object} DOM element (div containing the SVG image)\n */\n loadImageInDom: function(img, onLoadCallback) {\n var div = fabric.document.createElement('div');\n div.style.width = div.style.height = '1px';\n div.style.left = div.style.top = '-100%';\n div.style.position = 'absolute';\n div.appendChild(img);\n fabric.document.querySelector('body').appendChild(div);\n /**\n * Wrap in function to:\n * 1. Call existing callback\n * 2. Cleanup DOM\n */\n img.onload = function () {\n onLoadCallback();\n div.parentNode.removeChild(div);\n div = null;\n };\n },\n\n /**\n * Creates corresponding fabric instances from their object representations\n * @static\n * @memberOf fabric.util\n * @param {Array} objects Objects to enliven\n * @param {Function} callback Callback to invoke when all objects are created\n * @param {String} namespace Namespace to get klass \"Class\" object from\n * @param {Function} reviver Method for further parsing of object elements,\n * called after each fabric object created.\n */\n enlivenObjects: function(objects, callback, namespace, reviver) {\n objects = objects || [];\n\n var enlivenedObjects = [],\n numLoadedObjects = 0,\n numTotalObjects = objects.length;\n\n function onLoaded() {\n if (++numLoadedObjects === numTotalObjects) {\n callback && callback(enlivenedObjects.filter(function(obj) {\n // filter out undefined objects (objects that gave error)\n return obj;\n }));\n }\n }\n\n if (!numTotalObjects) {\n callback && callback(enlivenedObjects);\n return;\n }\n\n objects.forEach(function (o, index) {\n // if sparse array\n if (!o || !o.type) {\n onLoaded();\n return;\n }\n var klass = fabric.util.getKlass(o.type, namespace);\n klass.fromObject(o, function (obj, error) {\n error || (enlivenedObjects[index] = obj);\n reviver && reviver(o, obj, error);\n onLoaded();\n });\n });\n },\n\n /**\n * Create and wait for loading of patterns\n * @static\n * @memberOf fabric.util\n * @param {Array} patterns Objects to enliven\n * @param {Function} callback Callback to invoke when all objects are created\n * called after each fabric object created.\n */\n enlivenPatterns: function(patterns, callback) {\n patterns = patterns || [];\n\n function onLoaded() {\n if (++numLoadedPatterns === numPatterns) {\n callback && callback(enlivenedPatterns);\n }\n }\n\n var enlivenedPatterns = [],\n numLoadedPatterns = 0,\n numPatterns = patterns.length;\n\n if (!numPatterns) {\n callback && callback(enlivenedPatterns);\n return;\n }\n\n patterns.forEach(function (p, index) {\n if (p && p.source) {\n new fabric.Pattern(p, function(pattern) {\n enlivenedPatterns[index] = pattern;\n onLoaded();\n });\n }\n else {\n enlivenedPatterns[index] = p;\n onLoaded();\n }\n });\n },\n\n /**\n * Groups SVG elements (usually those retrieved from SVG document)\n * @static\n * @memberOf fabric.util\n * @param {Array} elements SVG elements to group\n * @param {Object} [options] Options object\n * @param {String} path Value to set sourcePath to\n * @return {fabric.Object|fabric.Group}\n */\n groupSVGElements: function(elements, options, path) {\n var object;\n if (elements && elements.length === 1) {\n return elements[0];\n }\n if (options) {\n if (options.width && options.height) {\n options.centerPoint = {\n x: options.width / 2,\n y: options.height / 2\n };\n }\n else {\n delete options.width;\n delete options.height;\n }\n }\n object = new fabric.Group(elements, options);\n if (typeof path !== 'undefined') {\n object.sourcePath = path;\n }\n return object;\n },\n\n /**\n * Populates an object with properties of another object\n * @static\n * @memberOf fabric.util\n * @param {Object} source Source object\n * @param {Object} destination Destination object\n * @return {Array} properties Properties names to include\n */\n populateWithProperties: function(source, destination, properties) {\n if (properties && Object.prototype.toString.call(properties) === '[object Array]') {\n for (var i = 0, len = properties.length; i < len; i++) {\n if (properties[i] in source) {\n destination[properties[i]] = source[properties[i]];\n }\n }\n }\n },\n\n /**\n * Draws a dashed line between two points\n *\n * This method is used to draw dashed line around selection area.\n * See dotted stroke in canvas\n *\n * @param {CanvasRenderingContext2D} ctx context\n * @param {Number} x start x coordinate\n * @param {Number} y start y coordinate\n * @param {Number} x2 end x coordinate\n * @param {Number} y2 end y coordinate\n * @param {Array} da dash array pattern\n */\n drawDashedLine: function(ctx, x, y, x2, y2, da) {\n var dx = x2 - x,\n dy = y2 - y,\n len = sqrt(dx * dx + dy * dy),\n rot = atan2(dy, dx),\n dc = da.length,\n di = 0,\n draw = true;\n\n ctx.save();\n ctx.translate(x, y);\n ctx.moveTo(0, 0);\n ctx.rotate(rot);\n\n x = 0;\n while (len > x) {\n x += da[di++ % dc];\n if (x > len) {\n x = len;\n }\n ctx[draw ? 'lineTo' : 'moveTo'](x, 0);\n draw = !draw;\n }\n\n ctx.restore();\n },\n\n /**\n * Creates canvas element\n * @static\n * @memberOf fabric.util\n * @return {CanvasElement} initialized canvas element\n */\n createCanvasElement: function() {\n return fabric.document.createElement('canvas');\n },\n\n /**\n * Creates a canvas element that is a copy of another and is also painted\n * @param {CanvasElement} canvas to copy size and content of\n * @static\n * @memberOf fabric.util\n * @return {CanvasElement} initialized canvas element\n */\n copyCanvasElement: function(canvas) {\n var newCanvas = fabric.util.createCanvasElement();\n newCanvas.width = canvas.width;\n newCanvas.height = canvas.height;\n newCanvas.getContext('2d').drawImage(canvas, 0, 0);\n return newCanvas;\n },\n\n /**\n * since 2.6.0 moved from canvas instance to utility.\n * @param {CanvasElement} canvasEl to copy size and content of\n * @param {String} format 'jpeg' or 'png', in some browsers 'webp' is ok too\n * @param {Number} quality <= 1 and > 0\n * @static\n * @memberOf fabric.util\n * @return {String} data url\n */\n toDataURL: function(canvasEl, format, quality) {\n return canvasEl.toDataURL('image/' + format, quality);\n },\n\n /**\n * Creates image element (works on client and node)\n * @static\n * @memberOf fabric.util\n * @return {HTMLImageElement} HTML image element\n */\n createImage: function() {\n return fabric.document.createElement('img');\n },\n\n /**\n * @static\n * @memberOf fabric.util\n * @deprecated since 2.0.0\n * @param {fabric.Object} receiver Object implementing `clipTo` method\n * @param {CanvasRenderingContext2D} ctx Context to clip\n */\n clipContext: function(receiver, ctx) {\n ctx.save();\n ctx.beginPath();\n receiver.clipTo(ctx);\n ctx.clip();\n },\n\n /**\n * Multiply matrix A by matrix B to nest transformations\n * @static\n * @memberOf fabric.util\n * @param {Array} a First transformMatrix\n * @param {Array} b Second transformMatrix\n * @param {Boolean} is2x2 flag to multiply matrices as 2x2 matrices\n * @return {Array} The product of the two transform matrices\n */\n multiplyTransformMatrices: function(a, b, is2x2) {\n // Matrix multiply a * b\n return [\n a[0] * b[0] + a[2] * b[1],\n a[1] * b[0] + a[3] * b[1],\n a[0] * b[2] + a[2] * b[3],\n a[1] * b[2] + a[3] * b[3],\n is2x2 ? 0 : a[0] * b[4] + a[2] * b[5] + a[4],\n is2x2 ? 0 : a[1] * b[4] + a[3] * b[5] + a[5]\n ];\n },\n\n /**\n * Decomposes standard 2x2 matrix into transform componentes\n * @static\n * @memberOf fabric.util\n * @param {Array} a transformMatrix\n * @return {Object} Components of transform\n */\n qrDecompose: function(a) {\n var angle = atan2(a[1], a[0]),\n denom = pow(a[0], 2) + pow(a[1], 2),\n scaleX = sqrt(denom),\n scaleY = (a[0] * a[3] - a[2] * a [1]) / scaleX,\n skewX = atan2(a[0] * a[2] + a[1] * a [3], denom);\n return {\n angle: angle / PiBy180,\n scaleX: scaleX,\n scaleY: scaleY,\n skewX: skewX / PiBy180,\n skewY: 0,\n translateX: a[4],\n translateY: a[5]\n };\n },\n\n customTransformMatrix: function(scaleX, scaleY, skewX) {\n var skewMatrixX = [1, 0, abs(Math.tan(skewX * PiBy180)), 1],\n scaleMatrix = [abs(scaleX), 0, 0, abs(scaleY)];\n return fabric.util.multiplyTransformMatrices(scaleMatrix, skewMatrixX, true);\n },\n\n /**\n * reset an object transform state to neutral. Top and left are not accounted for\n * @static\n * @memberOf fabric.util\n * @param {fabric.Object} target object to transform\n */\n resetObjectTransform: function (target) {\n target.scaleX = 1;\n target.scaleY = 1;\n target.skewX = 0;\n target.skewY = 0;\n target.flipX = false;\n target.flipY = false;\n target.rotate(0);\n },\n\n /**\n * Extract Object transform values\n * @static\n * @memberOf fabric.util\n * @param {fabric.Object} target object to read from\n * @return {Object} Components of transform\n */\n saveObjectTransform: function (target) {\n return {\n scaleX: target.scaleX,\n scaleY: target.scaleY,\n skewX: target.skewX,\n skewY: target.skewY,\n angle: target.angle,\n left: target.left,\n flipX: target.flipX,\n flipY: target.flipY,\n top: target.top\n };\n },\n\n /**\n * Returns string representation of function body\n * @param {Function} fn Function to get body of\n * @return {String} Function body\n */\n getFunctionBody: function(fn) {\n return (String(fn).match(/function[^{]*\\{([\\s\\S]*)\\}/) || {})[1];\n },\n\n /**\n * Returns true if context has transparent pixel\n * at specified location (taking tolerance into account)\n * @param {CanvasRenderingContext2D} ctx context\n * @param {Number} x x coordinate\n * @param {Number} y y coordinate\n * @param {Number} tolerance Tolerance\n */\n isTransparent: function(ctx, x, y, tolerance) {\n\n // If tolerance is > 0 adjust start coords to take into account.\n // If moves off Canvas fix to 0\n if (tolerance > 0) {\n if (x > tolerance) {\n x -= tolerance;\n }\n else {\n x = 0;\n }\n if (y > tolerance) {\n y -= tolerance;\n }\n else {\n y = 0;\n }\n }\n\n var _isTransparent = true, i, temp,\n imageData = ctx.getImageData(x, y, (tolerance * 2) || 1, (tolerance * 2) || 1),\n l = imageData.data.length;\n\n // Split image data - for tolerance > 1, pixelDataSize = 4;\n for (i = 3; i < l; i += 4) {\n temp = imageData.data[i];\n _isTransparent = temp <= 0;\n if (_isTransparent === false) {\n break; // Stop if colour found\n }\n }\n\n imageData = null;\n\n return _isTransparent;\n },\n\n /**\n * Parse preserveAspectRatio attribute from element\n * @param {string} attribute to be parsed\n * @return {Object} an object containing align and meetOrSlice attribute\n */\n parsePreserveAspectRatioAttribute: function(attribute) {\n var meetOrSlice = 'meet', alignX = 'Mid', alignY = 'Mid',\n aspectRatioAttrs = attribute.split(' '), align;\n\n if (aspectRatioAttrs && aspectRatioAttrs.length) {\n meetOrSlice = aspectRatioAttrs.pop();\n if (meetOrSlice !== 'meet' && meetOrSlice !== 'slice') {\n align = meetOrSlice;\n meetOrSlice = 'meet';\n }\n else if (aspectRatioAttrs.length) {\n align = aspectRatioAttrs.pop();\n }\n }\n //divide align in alignX and alignY\n alignX = align !== 'none' ? align.slice(1, 4) : 'none';\n alignY = align !== 'none' ? align.slice(5, 8) : 'none';\n return {\n meetOrSlice: meetOrSlice,\n alignX: alignX,\n alignY: alignY\n };\n },\n\n /**\n * Clear char widths cache for the given font family or all the cache if no\n * fontFamily is specified.\n * Use it if you know you are loading fonts in a lazy way and you are not waiting\n * for custom fonts to load properly when adding text objects to the canvas.\n * If a text object is added when its own font is not loaded yet, you will get wrong\n * measurement and so wrong bounding boxes.\n * After the font cache is cleared, either change the textObject text content or call\n * initDimensions() to trigger a recalculation\n * @memberOf fabric.util\n * @param {String} [fontFamily] font family to clear\n */\n clearFabricFontCache: function(fontFamily) {\n fontFamily = (fontFamily || '').toLowerCase();\n if (!fontFamily) {\n fabric.charWidthsCache = { };\n }\n else if (fabric.charWidthsCache[fontFamily]) {\n delete fabric.charWidthsCache[fontFamily];\n }\n },\n\n /**\n * Given current aspect ratio, determines the max width and height that can\n * respect the total allowed area for the cache.\n * @memberOf fabric.util\n * @param {Number} ar aspect ratio\n * @param {Number} maximumArea Maximum area you want to achieve\n * @return {Object.x} Limited dimensions by X\n * @return {Object.y} Limited dimensions by Y\n */\n limitDimsByArea: function(ar, maximumArea) {\n var roughWidth = Math.sqrt(maximumArea * ar),\n perfLimitSizeY = Math.floor(maximumArea / roughWidth);\n return { x: Math.floor(roughWidth), y: perfLimitSizeY };\n },\n\n capValue: function(min, value, max) {\n return Math.max(min, Math.min(value, max));\n },\n\n findScaleToFit: function(source, destination) {\n return Math.min(destination.width / source.width, destination.height / source.height);\n },\n\n findScaleToCover: function(source, destination) {\n return Math.max(destination.width / source.width, destination.height / source.height);\n },\n\n /**\n * given an array of 6 number returns something like `\"matrix(...numbers)\"`\n * @memberOf fabric.util\n * @param {Array} trasnform an array with 6 numbers\n * @return {String} transform matrix for svg\n * @return {Object.y} Limited dimensions by Y\n */\n matrixToSVG: function(transform) {\n return 'matrix(' + transform.map(function(value) {\n return fabric.util.toFixed(value, fabric.Object.NUM_FRACTION_DIGITS);\n }).join(' ') + ')';\n }\n };\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function() {\n\n var _join = Array.prototype.join;\n\n /* Adapted from http://dxr.mozilla.org/mozilla-central/source/content/svg/content/src/nsSVGPathDataParser.cpp\n * by Andrea Bogazzi code is under MPL. if you don't have a copy of the license you can take it here\n * http://mozilla.org/MPL/2.0/\n */\n function arcToSegments(toX, toY, rx, ry, large, sweep, rotateX) {\n var argsString = _join.call(arguments);\n if (fabric.arcToSegmentsCache[argsString]) {\n return fabric.arcToSegmentsCache[argsString];\n }\n\n var PI = Math.PI, th = rotateX * PI / 180,\n sinTh = fabric.util.sin(th),\n cosTh = fabric.util.cos(th),\n fromX = 0, fromY = 0;\n\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n\n var px = -cosTh * toX * 0.5 - sinTh * toY * 0.5,\n py = -cosTh * toY * 0.5 + sinTh * toX * 0.5,\n rx2 = rx * rx, ry2 = ry * ry, py2 = py * py, px2 = px * px,\n pl = rx2 * ry2 - rx2 * py2 - ry2 * px2,\n root = 0;\n\n if (pl < 0) {\n var s = Math.sqrt(1 - pl / (rx2 * ry2));\n rx *= s;\n ry *= s;\n }\n else {\n root = (large === sweep ? -1.0 : 1.0) *\n Math.sqrt( pl / (rx2 * py2 + ry2 * px2));\n }\n\n var cx = root * rx * py / ry,\n cy = -root * ry * px / rx,\n cx1 = cosTh * cx - sinTh * cy + toX * 0.5,\n cy1 = sinTh * cx + cosTh * cy + toY * 0.5,\n mTheta = calcVectorAngle(1, 0, (px - cx) / rx, (py - cy) / ry),\n dtheta = calcVectorAngle((px - cx) / rx, (py - cy) / ry, (-px - cx) / rx, (-py - cy) / ry);\n\n if (sweep === 0 && dtheta > 0) {\n dtheta -= 2 * PI;\n }\n else if (sweep === 1 && dtheta < 0) {\n dtheta += 2 * PI;\n }\n\n // Convert into cubic bezier segments <= 90deg\n var segments = Math.ceil(Math.abs(dtheta / PI * 2)),\n result = [], mDelta = dtheta / segments,\n mT = 8 / 3 * Math.sin(mDelta / 4) * Math.sin(mDelta / 4) / Math.sin(mDelta / 2),\n th3 = mTheta + mDelta;\n\n for (var i = 0; i < segments; i++) {\n result[i] = segmentToBezier(mTheta, th3, cosTh, sinTh, rx, ry, cx1, cy1, mT, fromX, fromY);\n fromX = result[i][4];\n fromY = result[i][5];\n mTheta = th3;\n th3 += mDelta;\n }\n fabric.arcToSegmentsCache[argsString] = result;\n return result;\n }\n\n function segmentToBezier(th2, th3, cosTh, sinTh, rx, ry, cx1, cy1, mT, fromX, fromY) {\n var costh2 = fabric.util.cos(th2),\n sinth2 = fabric.util.sin(th2),\n costh3 = fabric.util.cos(th3),\n sinth3 = fabric.util.sin(th3),\n toX = cosTh * rx * costh3 - sinTh * ry * sinth3 + cx1,\n toY = sinTh * rx * costh3 + cosTh * ry * sinth3 + cy1,\n cp1X = fromX + mT * ( -cosTh * rx * sinth2 - sinTh * ry * costh2),\n cp1Y = fromY + mT * ( -sinTh * rx * sinth2 + cosTh * ry * costh2),\n cp2X = toX + mT * ( cosTh * rx * sinth3 + sinTh * ry * costh3),\n cp2Y = toY + mT * ( sinTh * rx * sinth3 - cosTh * ry * costh3);\n\n return [\n cp1X, cp1Y,\n cp2X, cp2Y,\n toX, toY\n ];\n }\n\n /*\n * Private\n */\n function calcVectorAngle(ux, uy, vx, vy) {\n var ta = Math.atan2(uy, ux),\n tb = Math.atan2(vy, vx);\n if (tb >= ta) {\n return tb - ta;\n }\n else {\n return 2 * Math.PI - (ta - tb);\n }\n }\n\n /**\n * Draws arc\n * @param {CanvasRenderingContext2D} ctx\n * @param {Number} fx\n * @param {Number} fy\n * @param {Array} coords\n */\n fabric.util.drawArc = function(ctx, fx, fy, coords) {\n var rx = coords[0],\n ry = coords[1],\n rot = coords[2],\n large = coords[3],\n sweep = coords[4],\n tx = coords[5],\n ty = coords[6],\n segs = [[], [], [], []],\n segsNorm = arcToSegments(tx - fx, ty - fy, rx, ry, large, sweep, rot);\n\n for (var i = 0, len = segsNorm.length; i < len; i++) {\n segs[i][0] = segsNorm[i][0] + fx;\n segs[i][1] = segsNorm[i][1] + fy;\n segs[i][2] = segsNorm[i][2] + fx;\n segs[i][3] = segsNorm[i][3] + fy;\n segs[i][4] = segsNorm[i][4] + fx;\n segs[i][5] = segsNorm[i][5] + fy;\n ctx.bezierCurveTo.apply(ctx, segs[i]);\n }\n };\n\n /**\n * Calculate bounding box of a elliptic-arc\n * @param {Number} fx start point of arc\n * @param {Number} fy\n * @param {Number} rx horizontal radius\n * @param {Number} ry vertical radius\n * @param {Number} rot angle of horizontal axe\n * @param {Number} large 1 or 0, whatever the arc is the big or the small on the 2 points\n * @param {Number} sweep 1 or 0, 1 clockwise or counterclockwise direction\n * @param {Number} tx end point of arc\n * @param {Number} ty\n */\n fabric.util.getBoundsOfArc = function(fx, fy, rx, ry, rot, large, sweep, tx, ty) {\n\n var fromX = 0, fromY = 0, bound, bounds = [],\n segs = arcToSegments(tx - fx, ty - fy, rx, ry, large, sweep, rot);\n\n for (var i = 0, len = segs.length; i < len; i++) {\n bound = getBoundsOfCurve(fromX, fromY, segs[i][0], segs[i][1], segs[i][2], segs[i][3], segs[i][4], segs[i][5]);\n bounds.push({ x: bound[0].x + fx, y: bound[0].y + fy });\n bounds.push({ x: bound[1].x + fx, y: bound[1].y + fy });\n fromX = segs[i][4];\n fromY = segs[i][5];\n }\n return bounds;\n };\n\n /**\n * Calculate bounding box of a beziercurve\n * @param {Number} x0 starting point\n * @param {Number} y0\n * @param {Number} x1 first control point\n * @param {Number} y1\n * @param {Number} x2 secondo control point\n * @param {Number} y2\n * @param {Number} x3 end of beizer\n * @param {Number} y3\n */\n // taken from http://jsbin.com/ivomiq/56/edit no credits available for that.\n function getBoundsOfCurve(x0, y0, x1, y1, x2, y2, x3, y3) {\n var argsString;\n if (fabric.cachesBoundsOfCurve) {\n argsString = _join.call(arguments);\n if (fabric.boundsOfCurveCache[argsString]) {\n return fabric.boundsOfCurveCache[argsString];\n }\n }\n\n var sqrt = Math.sqrt,\n min = Math.min, max = Math.max,\n abs = Math.abs, tvalues = [],\n bounds = [[], []],\n a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n\n for (var i = 0; i < 2; ++i) {\n if (i > 0) {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n\n if (abs(a) < 1e-12) {\n if (abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n if (b2ac < 0) {\n continue;\n }\n sqrtb2ac = sqrt(b2ac);\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n var x, y, j = tvalues.length, jlen = j, mt;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n x = (mt * mt * mt * x0) + (3 * mt * mt * t * x1) + (3 * mt * t * t * x2) + (t * t * t * x3);\n bounds[0][j] = x;\n\n y = (mt * mt * mt * y0) + (3 * mt * mt * t * y1) + (3 * mt * t * t * y2) + (t * t * t * y3);\n bounds[1][j] = y;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n var result = [\n {\n x: min.apply(null, bounds[0]),\n y: min.apply(null, bounds[1])\n },\n {\n x: max.apply(null, bounds[0]),\n y: max.apply(null, bounds[1])\n }\n ];\n if (fabric.cachesBoundsOfCurve) {\n fabric.boundsOfCurveCache[argsString] = result;\n }\n return result;\n }\n\n fabric.util.getBoundsOfCurve = getBoundsOfCurve;\n\n})();\n\n\n(function() {\n\n var slice = Array.prototype.slice;\n\n /**\n * Invokes method on all items in a given array\n * @memberOf fabric.util.array\n * @param {Array} array Array to iterate over\n * @param {String} method Name of a method to invoke\n * @return {Array}\n */\n function invoke(array, method) {\n var args = slice.call(arguments, 2), result = [];\n for (var i = 0, len = array.length; i < len; i++) {\n result[i] = args.length ? array[i][method].apply(array[i], args) : array[i][method].call(array[i]);\n }\n return result;\n }\n\n /**\n * Finds maximum value in array (not necessarily \"first\" one)\n * @memberOf fabric.util.array\n * @param {Array} array Array to iterate over\n * @param {String} byProperty\n * @return {*}\n */\n function max(array, byProperty) {\n return find(array, byProperty, function(value1, value2) {\n return value1 >= value2;\n });\n }\n\n /**\n * Finds minimum value in array (not necessarily \"first\" one)\n * @memberOf fabric.util.array\n * @param {Array} array Array to iterate over\n * @param {String} byProperty\n * @return {*}\n */\n function min(array, byProperty) {\n return find(array, byProperty, function(value1, value2) {\n return value1 < value2;\n });\n }\n\n /**\n * @private\n */\n function fill(array, value) {\n var k = array.length;\n while (k--) {\n array[k] = value;\n }\n return array;\n }\n\n /**\n * @private\n */\n function find(array, byProperty, condition) {\n if (!array || array.length === 0) {\n return;\n }\n\n var i = array.length - 1,\n result = byProperty ? array[i][byProperty] : array[i];\n if (byProperty) {\n while (i--) {\n if (condition(array[i][byProperty], result)) {\n result = array[i][byProperty];\n }\n }\n }\n else {\n while (i--) {\n if (condition(array[i], result)) {\n result = array[i];\n }\n }\n }\n return result;\n }\n\n /**\n * @namespace fabric.util.array\n */\n fabric.util.array = {\n fill: fill,\n invoke: invoke,\n min: min,\n max: max\n };\n\n})();\n\n\n(function() {\n /**\n * Copies all enumerable properties of one js object to another\n * this does not and cannot compete with generic utils.\n * Does not clone or extend fabric.Object subclasses.\n * This is mostly for internal use and has extra handling for fabricJS objects\n * it skips the canvas property in deep cloning.\n * @memberOf fabric.util.object\n * @param {Object} destination Where to copy to\n * @param {Object} source Where to copy from\n * @return {Object}\n */\n\n function extend(destination, source, deep) {\n // JScript DontEnum bug is not taken care of\n // the deep clone is for internal use, is not meant to avoid\n // javascript traps or cloning html element or self referenced objects.\n if (deep) {\n if (!fabric.isLikelyNode && source instanceof Element) {\n // avoid cloning deep images, canvases,\n destination = source;\n }\n else if (source instanceof Array) {\n destination = [];\n for (var i = 0, len = source.length; i < len; i++) {\n destination[i] = extend({ }, source[i], deep);\n }\n }\n else if (source && typeof source === 'object') {\n for (var property in source) {\n if (property === 'canvas') {\n destination[property] = extend({ }, source[property]);\n }\n else if (source.hasOwnProperty(property)) {\n destination[property] = extend({ }, source[property], deep);\n }\n }\n }\n else {\n // this sounds odd for an extend but is ok for recursive use\n destination = source;\n }\n }\n else {\n for (var property in source) {\n destination[property] = source[property];\n }\n }\n return destination;\n }\n\n /**\n * Creates an empty object and copies all enumerable properties of another object to it\n * @memberOf fabric.util.object\n * TODO: this function return an empty object if you try to clone null\n * @param {Object} object Object to clone\n * @return {Object}\n */\n function clone(object, deep) {\n return extend({ }, object, deep);\n }\n\n /** @namespace fabric.util.object */\n fabric.util.object = {\n extend: extend,\n clone: clone\n };\n fabric.util.object.extend(fabric.util, fabric.Observable);\n})();\n\n\n(function() {\n\n /**\n * Camelizes a string\n * @memberOf fabric.util.string\n * @param {String} string String to camelize\n * @return {String} Camelized version of a string\n */\n function camelize(string) {\n return string.replace(/-+(.)?/g, function(match, character) {\n return character ? character.toUpperCase() : '';\n });\n }\n\n /**\n * Capitalizes a string\n * @memberOf fabric.util.string\n * @param {String} string String to capitalize\n * @param {Boolean} [firstLetterOnly] If true only first letter is capitalized\n * and other letters stay untouched, if false first letter is capitalized\n * and other letters are converted to lowercase.\n * @return {String} Capitalized version of a string\n */\n function capitalize(string, firstLetterOnly) {\n return string.charAt(0).toUpperCase() +\n (firstLetterOnly ? string.slice(1) : string.slice(1).toLowerCase());\n }\n\n /**\n * Escapes XML in a string\n * @memberOf fabric.util.string\n * @param {String} string String to escape\n * @return {String} Escaped version of a string\n */\n function escapeXml(string) {\n return string.replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(//g, '>');\n }\n\n /**\n * Divide a string in the user perceived single units\n * @memberOf fabric.util.string\n * @param {String} textstring String to escape\n * @return {Array} array containing the graphemes\n */\n function graphemeSplit(textstring) {\n var i = 0, chr, graphemes = [];\n for (i = 0, chr; i < textstring.length; i++) {\n if ((chr = getWholeChar(textstring, i)) === false) {\n continue;\n }\n graphemes.push(chr);\n }\n return graphemes;\n }\n\n // taken from mdn in the charAt doc page.\n function getWholeChar(str, i) {\n var code = str.charCodeAt(i);\n\n if (isNaN(code)) {\n return ''; // Position not found\n }\n if (code < 0xD800 || code > 0xDFFF) {\n return str.charAt(i);\n }\n\n // High surrogate (could change last hex to 0xDB7F to treat high private\n // surrogates as single characters)\n if (0xD800 <= code && code <= 0xDBFF) {\n if (str.length <= (i + 1)) {\n throw 'High surrogate without following low surrogate';\n }\n var next = str.charCodeAt(i + 1);\n if (0xDC00 > next || next > 0xDFFF) {\n throw 'High surrogate without following low surrogate';\n }\n return str.charAt(i) + str.charAt(i + 1);\n }\n // Low surrogate (0xDC00 <= code && code <= 0xDFFF)\n if (i === 0) {\n throw 'Low surrogate without preceding high surrogate';\n }\n var prev = str.charCodeAt(i - 1);\n\n // (could change last hex to 0xDB7F to treat high private\n // surrogates as single characters)\n if (0xD800 > prev || prev > 0xDBFF) {\n throw 'Low surrogate without preceding high surrogate';\n }\n // We can pass over low surrogates now as the second component\n // in a pair which we have already processed\n return false;\n }\n\n\n /**\n * String utilities\n * @namespace fabric.util.string\n */\n fabric.util.string = {\n camelize: camelize,\n capitalize: capitalize,\n escapeXml: escapeXml,\n graphemeSplit: graphemeSplit\n };\n})();\n\n\n(function() {\n\n var slice = Array.prototype.slice, emptyFunction = function() { },\n\n IS_DONTENUM_BUGGY = (function() {\n for (var p in { toString: 1 }) {\n if (p === 'toString') {\n return false;\n }\n }\n return true;\n })(),\n\n /** @ignore */\n addMethods = function(klass, source, parent) {\n for (var property in source) {\n\n if (property in klass.prototype &&\n typeof klass.prototype[property] === 'function' &&\n (source[property] + '').indexOf('callSuper') > -1) {\n\n klass.prototype[property] = (function(property) {\n return function() {\n\n var superclass = this.constructor.superclass;\n this.constructor.superclass = parent;\n var returnValue = source[property].apply(this, arguments);\n this.constructor.superclass = superclass;\n\n if (property !== 'initialize') {\n return returnValue;\n }\n };\n })(property);\n }\n else {\n klass.prototype[property] = source[property];\n }\n\n if (IS_DONTENUM_BUGGY) {\n if (source.toString !== Object.prototype.toString) {\n klass.prototype.toString = source.toString;\n }\n if (source.valueOf !== Object.prototype.valueOf) {\n klass.prototype.valueOf = source.valueOf;\n }\n }\n }\n };\n\n function Subclass() { }\n\n function callSuper(methodName) {\n var parentMethod = null,\n _this = this;\n\n // climb prototype chain to find method not equal to callee's method\n while (_this.constructor.superclass) {\n var superClassMethod = _this.constructor.superclass.prototype[methodName];\n if (_this[methodName] !== superClassMethod) {\n parentMethod = superClassMethod;\n break;\n }\n // eslint-disable-next-line\n _this = _this.constructor.superclass.prototype;\n }\n\n if (!parentMethod) {\n return console.log('tried to callSuper ' + methodName + ', method not found in prototype chain', this);\n }\n\n return (arguments.length > 1)\n ? parentMethod.apply(this, slice.call(arguments, 1))\n : parentMethod.call(this);\n }\n\n /**\n * Helper for creation of \"classes\".\n * @memberOf fabric.util\n * @param {Function} [parent] optional \"Class\" to inherit from\n * @param {Object} [properties] Properties shared by all instances of this class\n * (be careful modifying objects defined here as this would affect all instances)\n */\n function createClass() {\n var parent = null,\n properties = slice.call(arguments, 0);\n\n if (typeof properties[0] === 'function') {\n parent = properties.shift();\n }\n function klass() {\n this.initialize.apply(this, arguments);\n }\n\n klass.superclass = parent;\n klass.subclasses = [];\n\n if (parent) {\n Subclass.prototype = parent.prototype;\n klass.prototype = new Subclass();\n parent.subclasses.push(klass);\n }\n for (var i = 0, length = properties.length; i < length; i++) {\n addMethods(klass, properties[i], parent);\n }\n if (!klass.prototype.initialize) {\n klass.prototype.initialize = emptyFunction;\n }\n klass.prototype.constructor = klass;\n klass.prototype.callSuper = callSuper;\n return klass;\n }\n\n fabric.util.createClass = createClass;\n})();\n\n\n(function () {\n // since ie10 or ie9 can use addEventListener but they do not support options, i need to check\n var couldUseAttachEvent = !!fabric.document.createElement('div').attachEvent;\n /**\n * Adds an event listener to an element\n * @function\n * @memberOf fabric.util\n * @param {HTMLElement} element\n * @param {String} eventName\n * @param {Function} handler\n */\n fabric.util.addListener = function(element, eventName, handler, options) {\n element && element.addEventListener(eventName, handler, couldUseAttachEvent ? false : options);\n };\n\n /**\n * Removes an event listener from an element\n * @function\n * @memberOf fabric.util\n * @param {HTMLElement} element\n * @param {String} eventName\n * @param {Function} handler\n */\n fabric.util.removeListener = function(element, eventName, handler, options) {\n element && element.removeEventListener(eventName, handler, couldUseAttachEvent ? false : options);\n };\n\n function getTouchInfo(event) {\n var touchProp = event.changedTouches;\n if (touchProp && touchProp[0]) {\n return touchProp[0];\n }\n return event;\n }\n\n fabric.util.getPointer = function(event) {\n var element = event.target,\n scroll = fabric.util.getScrollLeftTop(element),\n _evt = getTouchInfo(event);\n return {\n x: _evt.clientX + scroll.left,\n y: _evt.clientY + scroll.top\n };\n };\n})();\n\n\n(function () {\n\n /**\n * Cross-browser wrapper for setting element's style\n * @memberOf fabric.util\n * @param {HTMLElement} element\n * @param {Object} styles\n * @return {HTMLElement} Element that was passed as a first argument\n */\n function setStyle(element, styles) {\n var elementStyle = element.style;\n if (!elementStyle) {\n return element;\n }\n if (typeof styles === 'string') {\n element.style.cssText += ';' + styles;\n return styles.indexOf('opacity') > -1\n ? setOpacity(element, styles.match(/opacity:\\s*(\\d?\\.?\\d*)/)[1])\n : element;\n }\n for (var property in styles) {\n if (property === 'opacity') {\n setOpacity(element, styles[property]);\n }\n else {\n var normalizedProperty = (property === 'float' || property === 'cssFloat')\n ? (typeof elementStyle.styleFloat === 'undefined' ? 'cssFloat' : 'styleFloat')\n : property;\n elementStyle[normalizedProperty] = styles[property];\n }\n }\n return element;\n }\n\n var parseEl = fabric.document.createElement('div'),\n supportsOpacity = typeof parseEl.style.opacity === 'string',\n supportsFilters = typeof parseEl.style.filter === 'string',\n reOpacity = /alpha\\s*\\(\\s*opacity\\s*=\\s*([^\\)]+)\\)/,\n\n /** @ignore */\n setOpacity = function (element) { return element; };\n\n if (supportsOpacity) {\n /** @ignore */\n setOpacity = function(element, value) {\n element.style.opacity = value;\n return element;\n };\n }\n else if (supportsFilters) {\n /** @ignore */\n setOpacity = function(element, value) {\n var es = element.style;\n if (element.currentStyle && !element.currentStyle.hasLayout) {\n es.zoom = 1;\n }\n if (reOpacity.test(es.filter)) {\n value = value >= 0.9999 ? '' : ('alpha(opacity=' + (value * 100) + ')');\n es.filter = es.filter.replace(reOpacity, value);\n }\n else {\n es.filter += ' alpha(opacity=' + (value * 100) + ')';\n }\n return element;\n };\n }\n\n fabric.util.setStyle = setStyle;\n\n})();\n\n\n(function() {\n\n var _slice = Array.prototype.slice;\n\n /**\n * Takes id and returns an element with that id (if one exists in a document)\n * @memberOf fabric.util\n * @param {String|HTMLElement} id\n * @return {HTMLElement|null}\n */\n function getById(id) {\n return typeof id === 'string' ? fabric.document.getElementById(id) : id;\n }\n\n var sliceCanConvertNodelists,\n /**\n * Converts an array-like object (e.g. arguments or NodeList) to an array\n * @memberOf fabric.util\n * @param {Object} arrayLike\n * @return {Array}\n */\n toArray = function(arrayLike) {\n return _slice.call(arrayLike, 0);\n };\n\n try {\n sliceCanConvertNodelists = toArray(fabric.document.childNodes) instanceof Array;\n }\n catch (err) { }\n\n if (!sliceCanConvertNodelists) {\n toArray = function(arrayLike) {\n var arr = new Array(arrayLike.length), i = arrayLike.length;\n while (i--) {\n arr[i] = arrayLike[i];\n }\n return arr;\n };\n }\n\n /**\n * Creates specified element with specified attributes\n * @memberOf fabric.util\n * @param {String} tagName Type of an element to create\n * @param {Object} [attributes] Attributes to set on an element\n * @return {HTMLElement} Newly created element\n */\n function makeElement(tagName, attributes) {\n var el = fabric.document.createElement(tagName);\n for (var prop in attributes) {\n if (prop === 'class') {\n el.className = attributes[prop];\n }\n else if (prop === 'for') {\n el.htmlFor = attributes[prop];\n }\n else {\n el.setAttribute(prop, attributes[prop]);\n }\n }\n return el;\n }\n\n /**\n * Adds class to an element\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to add class to\n * @param {String} className Class to add to an element\n */\n function addClass(element, className) {\n if (element && (' ' + element.className + ' ').indexOf(' ' + className + ' ') === -1) {\n element.className += (element.className ? ' ' : '') + className;\n }\n }\n\n /**\n * Wraps element with another element\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to wrap\n * @param {HTMLElement|String} wrapper Element to wrap with\n * @param {Object} [attributes] Attributes to set on a wrapper\n * @return {HTMLElement} wrapper\n */\n function wrapElement(element, wrapper, attributes) {\n if (typeof wrapper === 'string') {\n wrapper = makeElement(wrapper, attributes);\n }\n if (element.parentNode) {\n element.parentNode.replaceChild(wrapper, element);\n }\n wrapper.appendChild(element);\n return wrapper;\n }\n\n /**\n * Returns element scroll offsets\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to operate on\n * @return {Object} Object with left/top values\n */\n function getScrollLeftTop(element) {\n\n var left = 0,\n top = 0,\n docElement = fabric.document.documentElement,\n body = fabric.document.body || {\n scrollLeft: 0, scrollTop: 0\n };\n\n // While loop checks (and then sets element to) .parentNode OR .host\n // to account for ShadowDOM. We still want to traverse up out of ShadowDOM,\n // but the .parentNode of a root ShadowDOM node will always be null, instead\n // it should be accessed through .host. See http://stackoverflow.com/a/24765528/4383938\n while (element && (element.parentNode || element.host)) {\n\n // Set element to element parent, or 'host' in case of ShadowDOM\n element = element.parentNode || element.host;\n\n if (element === fabric.document) {\n left = body.scrollLeft || docElement.scrollLeft || 0;\n top = body.scrollTop || docElement.scrollTop || 0;\n }\n else {\n left += element.scrollLeft || 0;\n top += element.scrollTop || 0;\n }\n\n if (element.nodeType === 1 && element.style.position === 'fixed') {\n break;\n }\n }\n\n return { left: left, top: top };\n }\n\n /**\n * Returns offset for a given element\n * @function\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to get offset for\n * @return {Object} Object with \"left\" and \"top\" properties\n */\n function getElementOffset(element) {\n var docElem,\n doc = element && element.ownerDocument,\n box = { left: 0, top: 0 },\n offset = { left: 0, top: 0 },\n scrollLeftTop,\n offsetAttributes = {\n borderLeftWidth: 'left',\n borderTopWidth: 'top',\n paddingLeft: 'left',\n paddingTop: 'top'\n };\n\n if (!doc) {\n return offset;\n }\n\n for (var attr in offsetAttributes) {\n offset[offsetAttributes[attr]] += parseInt(getElementStyle(element, attr), 10) || 0;\n }\n\n docElem = doc.documentElement;\n if ( typeof element.getBoundingClientRect !== 'undefined' ) {\n box = element.getBoundingClientRect();\n }\n\n scrollLeftTop = getScrollLeftTop(element);\n\n return {\n left: box.left + scrollLeftTop.left - (docElem.clientLeft || 0) + offset.left,\n top: box.top + scrollLeftTop.top - (docElem.clientTop || 0) + offset.top\n };\n }\n\n /**\n * Returns style attribute value of a given element\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to get style attribute for\n * @param {String} attr Style attribute to get for element\n * @return {String} Style attribute value of the given element.\n */\n var getElementStyle;\n if (fabric.document.defaultView && fabric.document.defaultView.getComputedStyle) {\n getElementStyle = function(element, attr) {\n var style = fabric.document.defaultView.getComputedStyle(element, null);\n return style ? style[attr] : undefined;\n };\n }\n else {\n getElementStyle = function(element, attr) {\n var value = element.style[attr];\n if (!value && element.currentStyle) {\n value = element.currentStyle[attr];\n }\n return value;\n };\n }\n\n (function () {\n var style = fabric.document.documentElement.style,\n selectProp = 'userSelect' in style\n ? 'userSelect'\n : 'MozUserSelect' in style\n ? 'MozUserSelect'\n : 'WebkitUserSelect' in style\n ? 'WebkitUserSelect'\n : 'KhtmlUserSelect' in style\n ? 'KhtmlUserSelect'\n : '';\n\n /**\n * Makes element unselectable\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to make unselectable\n * @return {HTMLElement} Element that was passed in\n */\n function makeElementUnselectable(element) {\n if (typeof element.onselectstart !== 'undefined') {\n element.onselectstart = fabric.util.falseFunction;\n }\n if (selectProp) {\n element.style[selectProp] = 'none';\n }\n else if (typeof element.unselectable === 'string') {\n element.unselectable = 'on';\n }\n return element;\n }\n\n /**\n * Makes element selectable\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to make selectable\n * @return {HTMLElement} Element that was passed in\n */\n function makeElementSelectable(element) {\n if (typeof element.onselectstart !== 'undefined') {\n element.onselectstart = null;\n }\n if (selectProp) {\n element.style[selectProp] = '';\n }\n else if (typeof element.unselectable === 'string') {\n element.unselectable = '';\n }\n return element;\n }\n\n fabric.util.makeElementUnselectable = makeElementUnselectable;\n fabric.util.makeElementSelectable = makeElementSelectable;\n })();\n\n (function() {\n\n /**\n * Inserts a script element with a given url into a document; invokes callback, when that script is finished loading\n * @memberOf fabric.util\n * @param {String} url URL of a script to load\n * @param {Function} callback Callback to execute when script is finished loading\n */\n function getScript(url, callback) {\n var headEl = fabric.document.getElementsByTagName('head')[0],\n scriptEl = fabric.document.createElement('script'),\n loading = true;\n\n /** @ignore */\n scriptEl.onload = /** @ignore */ scriptEl.onreadystatechange = function(e) {\n if (loading) {\n if (typeof this.readyState === 'string' &&\n this.readyState !== 'loaded' &&\n this.readyState !== 'complete') {\n return;\n }\n loading = false;\n callback(e || fabric.window.event);\n scriptEl = scriptEl.onload = scriptEl.onreadystatechange = null;\n }\n };\n scriptEl.src = url;\n headEl.appendChild(scriptEl);\n // causes issue in Opera\n // headEl.removeChild(scriptEl);\n }\n\n fabric.util.getScript = getScript;\n })();\n\n function getNodeCanvas(element) {\n var impl = fabric.jsdomImplForWrapper(element);\n return impl._canvas || impl._image;\n };\n\n function cleanUpJsdomNode(element) {\n if (!fabric.isLikelyNode) {\n return;\n }\n var impl = fabric.jsdomImplForWrapper(element);\n if (impl) {\n impl._image = null;\n impl._canvas = null;\n // unsure if necessary\n impl._currentSrc = null;\n impl._attributes = null;\n impl._classList = null;\n }\n }\n\n fabric.util.getById = getById;\n fabric.util.toArray = toArray;\n fabric.util.makeElement = makeElement;\n fabric.util.addClass = addClass;\n fabric.util.wrapElement = wrapElement;\n fabric.util.getScrollLeftTop = getScrollLeftTop;\n fabric.util.getElementOffset = getElementOffset;\n fabric.util.getElementStyle = getElementStyle;\n fabric.util.getNodeCanvas = getNodeCanvas;\n fabric.util.cleanUpJsdomNode = cleanUpJsdomNode;\n\n})();\n\n\n(function() {\n\n function addParamToUrl(url, param) {\n return url + (/\\?/.test(url) ? '&' : '?') + param;\n }\n\n function emptyFn() { }\n\n /**\n * Cross-browser abstraction for sending XMLHttpRequest\n * @memberOf fabric.util\n * @param {String} url URL to send XMLHttpRequest to\n * @param {Object} [options] Options object\n * @param {String} [options.method=\"GET\"]\n * @param {String} [options.parameters] parameters to append to url in GET or in body\n * @param {String} [options.body] body to send with POST or PUT request\n * @param {Function} options.onComplete Callback to invoke when request is completed\n * @return {XMLHttpRequest} request\n */\n function request(url, options) {\n options || (options = { });\n\n var method = options.method ? options.method.toUpperCase() : 'GET',\n onComplete = options.onComplete || function() { },\n xhr = new fabric.window.XMLHttpRequest(),\n body = options.body || options.parameters;\n\n /** @ignore */\n xhr.onreadystatechange = function() {\n if (xhr.readyState === 4) {\n onComplete(xhr);\n xhr.onreadystatechange = emptyFn;\n }\n };\n\n if (method === 'GET') {\n body = null;\n if (typeof options.parameters === 'string') {\n url = addParamToUrl(url, options.parameters);\n }\n }\n\n xhr.open(method, url, true);\n\n if (method === 'POST' || method === 'PUT') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n }\n\n xhr.send(body);\n return xhr;\n }\n\n fabric.util.request = request;\n})();\n\n\n/**\n * Wrapper around `console.log` (when available)\n * @param {*} [values] Values to log\n */\nfabric.log = function() { };\n\n/**\n * Wrapper around `console.warn` (when available)\n * @param {*} [values] Values to log as a warning\n */\nfabric.warn = function() { };\n\n/* eslint-disable */\nif (typeof console !== 'undefined') {\n\n ['log', 'warn'].forEach(function(methodName) {\n\n if (typeof console[methodName] !== 'undefined' &&\n typeof console[methodName].apply === 'function') {\n\n fabric[methodName] = function() {\n return console[methodName].apply(console, arguments);\n };\n }\n });\n}\n/* eslint-enable */\n\n\n(function() {\n\n function noop() {\n return false;\n }\n\n /**\n * Changes value from one to another within certain period of time, invoking callbacks as value is being changed.\n * @memberOf fabric.util\n * @param {Object} [options] Animation options\n * @param {Function} [options.onChange] Callback; invoked on every value change\n * @param {Function} [options.onComplete] Callback; invoked when value change is completed\n * @param {Number} [options.startValue=0] Starting value\n * @param {Number} [options.endValue=100] Ending value\n * @param {Number} [options.byValue=100] Value to modify the property by\n * @param {Function} [options.easing] Easing function\n * @param {Number} [options.duration=500] Duration of change (in ms)\n * @param {Function} [options.abort] Additional function with logic. If returns true, onComplete is called.\n */\n function animate(options) {\n\n requestAnimFrame(function(timestamp) {\n options || (options = { });\n\n var start = timestamp || +new Date(),\n duration = options.duration || 500,\n finish = start + duration, time,\n onChange = options.onChange || noop,\n abort = options.abort || noop,\n onComplete = options.onComplete || noop,\n easing = options.easing || function(t, b, c, d) {return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;},\n startValue = 'startValue' in options ? options.startValue : 0,\n endValue = 'endValue' in options ? options.endValue : 100,\n byValue = options.byValue || endValue - startValue;\n\n options.onStart && options.onStart();\n\n (function tick(ticktime) {\n // TODO: move abort call after calculation\n // and pass (current,valuePerc, timePerc) as arguments\n if (abort()) {\n onComplete(endValue, 1, 1);\n return;\n }\n time = ticktime || +new Date();\n var currentTime = time > finish ? duration : (time - start),\n timePerc = currentTime / duration,\n current = easing(currentTime, startValue, byValue, duration),\n valuePerc = Math.abs((current - startValue) / byValue);\n onChange(current, valuePerc, timePerc);\n if (time > finish) {\n options.onComplete && options.onComplete();\n return;\n }\n requestAnimFrame(tick);\n })(start);\n });\n\n }\n\n var _requestAnimFrame = fabric.window.requestAnimationFrame ||\n fabric.window.webkitRequestAnimationFrame ||\n fabric.window.mozRequestAnimationFrame ||\n fabric.window.oRequestAnimationFrame ||\n fabric.window.msRequestAnimationFrame ||\n function(callback) {\n return fabric.window.setTimeout(callback, 1000 / 60);\n };\n\n var _cancelAnimFrame = fabric.window.cancelAnimationFrame || fabric.window.clearTimeout;\n\n /**\n * requestAnimationFrame polyfill based on http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n * In order to get a precise start time, `requestAnimFrame` should be called as an entry into the method\n * @memberOf fabric.util\n * @param {Function} callback Callback to invoke\n * @param {DOMElement} element optional Element to associate with animation\n */\n function requestAnimFrame() {\n return _requestAnimFrame.apply(fabric.window, arguments);\n }\n\n function cancelAnimFrame() {\n return _cancelAnimFrame.apply(fabric.window, arguments);\n }\n\n fabric.util.animate = animate;\n fabric.util.requestAnimFrame = requestAnimFrame;\n fabric.util.cancelAnimFrame = cancelAnimFrame;\n})();\n\n\n(function() {\n // Calculate an in-between color. Returns a \"rgba()\" string.\n // Credit: Edwin Martin \n // http://www.bitstorm.org/jquery/color-animation/jquery.animate-colors.js\n function calculateColor(begin, end, pos) {\n var color = 'rgba('\n + parseInt((begin[0] + pos * (end[0] - begin[0])), 10) + ','\n + parseInt((begin[1] + pos * (end[1] - begin[1])), 10) + ','\n + parseInt((begin[2] + pos * (end[2] - begin[2])), 10);\n\n color += ',' + (begin && end ? parseFloat(begin[3] + pos * (end[3] - begin[3])) : 1);\n color += ')';\n return color;\n }\n\n /**\n * Changes the color from one to another within certain period of time, invoking callbacks as value is being changed.\n * @memberOf fabric.util\n * @param {String} fromColor The starting color in hex or rgb(a) format.\n * @param {String} toColor The starting color in hex or rgb(a) format.\n * @param {Number} [duration] Duration of change (in ms).\n * @param {Object} [options] Animation options\n * @param {Function} [options.onChange] Callback; invoked on every value change\n * @param {Function} [options.onComplete] Callback; invoked when value change is completed\n * @param {Function} [options.colorEasing] Easing function. Note that this function only take two arguments (currentTime, duration). Thus the regular animation easing functions cannot be used.\n * @param {Function} [options.abort] Additional function with logic. If returns true, onComplete is called.\n */\n function animateColor(fromColor, toColor, duration, options) {\n var startColor = new fabric.Color(fromColor).getSource(),\n endColor = new fabric.Color(toColor).getSource();\n\n options = options || {};\n\n fabric.util.animate(fabric.util.object.extend(options, {\n duration: duration || 500,\n startValue: startColor,\n endValue: endColor,\n byValue: endColor,\n easing: function (currentTime, startValue, byValue, duration) {\n var posValue = options.colorEasing\n ? options.colorEasing(currentTime, duration)\n : 1 - Math.cos(currentTime / duration * (Math.PI / 2));\n return calculateColor(startValue, byValue, posValue);\n }\n }));\n }\n\n fabric.util.animateColor = animateColor;\n\n})();\n\n\n(function() {\n\n function normalize(a, c, p, s) {\n if (a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n //handle the 0/0 case:\n if (c === 0 && a === 0) {\n s = p / (2 * Math.PI) * Math.asin(1);\n }\n else {\n s = p / (2 * Math.PI) * Math.asin(c / a);\n }\n }\n return { a: a, c: c, p: p, s: s };\n }\n\n function elastic(opts, t, d) {\n return opts.a *\n Math.pow(2, 10 * (t -= 1)) *\n Math.sin( (t * d - opts.s) * (2 * Math.PI) / opts.p );\n }\n\n /**\n * Cubic easing out\n * @memberOf fabric.util.ease\n */\n function easeOutCubic(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t + 1) + b;\n }\n\n /**\n * Cubic easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutCubic(t, b, c, d) {\n t /= d / 2;\n if (t < 1) {\n return c / 2 * t * t * t + b;\n }\n return c / 2 * ((t -= 2) * t * t + 2) + b;\n }\n\n /**\n * Quartic easing in\n * @memberOf fabric.util.ease\n */\n function easeInQuart(t, b, c, d) {\n return c * (t /= d) * t * t * t + b;\n }\n\n /**\n * Quartic easing out\n * @memberOf fabric.util.ease\n */\n function easeOutQuart(t, b, c, d) {\n return -c * ((t = t / d - 1) * t * t * t - 1) + b;\n }\n\n /**\n * Quartic easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutQuart(t, b, c, d) {\n t /= d / 2;\n if (t < 1) {\n return c / 2 * t * t * t * t + b;\n }\n return -c / 2 * ((t -= 2) * t * t * t - 2) + b;\n }\n\n /**\n * Quintic easing in\n * @memberOf fabric.util.ease\n */\n function easeInQuint(t, b, c, d) {\n return c * (t /= d) * t * t * t * t + b;\n }\n\n /**\n * Quintic easing out\n * @memberOf fabric.util.ease\n */\n function easeOutQuint(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t * t * t + 1) + b;\n }\n\n /**\n * Quintic easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutQuint(t, b, c, d) {\n t /= d / 2;\n if (t < 1) {\n return c / 2 * t * t * t * t * t + b;\n }\n return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;\n }\n\n /**\n * Sinusoidal easing in\n * @memberOf fabric.util.ease\n */\n function easeInSine(t, b, c, d) {\n return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;\n }\n\n /**\n * Sinusoidal easing out\n * @memberOf fabric.util.ease\n */\n function easeOutSine(t, b, c, d) {\n return c * Math.sin(t / d * (Math.PI / 2)) + b;\n }\n\n /**\n * Sinusoidal easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutSine(t, b, c, d) {\n return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;\n }\n\n /**\n * Exponential easing in\n * @memberOf fabric.util.ease\n */\n function easeInExpo(t, b, c, d) {\n return (t === 0) ? b : c * Math.pow(2, 10 * (t / d - 1)) + b;\n }\n\n /**\n * Exponential easing out\n * @memberOf fabric.util.ease\n */\n function easeOutExpo(t, b, c, d) {\n return (t === d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;\n }\n\n /**\n * Exponential easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutExpo(t, b, c, d) {\n if (t === 0) {\n return b;\n }\n if (t === d) {\n return b + c;\n }\n t /= d / 2;\n if (t < 1) {\n return c / 2 * Math.pow(2, 10 * (t - 1)) + b;\n }\n return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b;\n }\n\n /**\n * Circular easing in\n * @memberOf fabric.util.ease\n */\n function easeInCirc(t, b, c, d) {\n return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;\n }\n\n /**\n * Circular easing out\n * @memberOf fabric.util.ease\n */\n function easeOutCirc(t, b, c, d) {\n return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;\n }\n\n /**\n * Circular easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutCirc(t, b, c, d) {\n t /= d / 2;\n if (t < 1) {\n return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;\n }\n return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;\n }\n\n /**\n * Elastic easing in\n * @memberOf fabric.util.ease\n */\n function easeInElastic(t, b, c, d) {\n var s = 1.70158, p = 0, a = c;\n if (t === 0) {\n return b;\n }\n t /= d;\n if (t === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n var opts = normalize(a, c, p, s);\n return -elastic(opts, t, d) + b;\n }\n\n /**\n * Elastic easing out\n * @memberOf fabric.util.ease\n */\n function easeOutElastic(t, b, c, d) {\n var s = 1.70158, p = 0, a = c;\n if (t === 0) {\n return b;\n }\n t /= d;\n if (t === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n var opts = normalize(a, c, p, s);\n return opts.a * Math.pow(2, -10 * t) * Math.sin((t * d - opts.s) * (2 * Math.PI) / opts.p ) + opts.c + b;\n }\n\n /**\n * Elastic easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutElastic(t, b, c, d) {\n var s = 1.70158, p = 0, a = c;\n if (t === 0) {\n return b;\n }\n t /= d / 2;\n if (t === 2) {\n return b + c;\n }\n if (!p) {\n p = d * (0.3 * 1.5);\n }\n var opts = normalize(a, c, p, s);\n if (t < 1) {\n return -0.5 * elastic(opts, t, d) + b;\n }\n return opts.a * Math.pow(2, -10 * (t -= 1)) *\n Math.sin((t * d - opts.s) * (2 * Math.PI) / opts.p ) * 0.5 + opts.c + b;\n }\n\n /**\n * Backwards easing in\n * @memberOf fabric.util.ease\n */\n function easeInBack(t, b, c, d, s) {\n if (s === undefined) {\n s = 1.70158;\n }\n return c * (t /= d) * t * ((s + 1) * t - s) + b;\n }\n\n /**\n * Backwards easing out\n * @memberOf fabric.util.ease\n */\n function easeOutBack(t, b, c, d, s) {\n if (s === undefined) {\n s = 1.70158;\n }\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n }\n\n /**\n * Backwards easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutBack(t, b, c, d, s) {\n if (s === undefined) {\n s = 1.70158;\n }\n t /= d / 2;\n if (t < 1) {\n return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b;\n }\n return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b;\n }\n\n /**\n * Bouncing easing in\n * @memberOf fabric.util.ease\n */\n function easeInBounce(t, b, c, d) {\n return c - easeOutBounce (d - t, 0, c, d) + b;\n }\n\n /**\n * Bouncing easing out\n * @memberOf fabric.util.ease\n */\n function easeOutBounce(t, b, c, d) {\n if ((t /= d) < (1 / 2.75)) {\n return c * (7.5625 * t * t) + b;\n }\n else if (t < (2 / 2.75)) {\n return c * (7.5625 * (t -= (1.5 / 2.75)) * t + 0.75) + b;\n }\n else if (t < (2.5 / 2.75)) {\n return c * (7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375) + b;\n }\n else {\n return c * (7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375) + b;\n }\n }\n\n /**\n * Bouncing easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutBounce(t, b, c, d) {\n if (t < d / 2) {\n return easeInBounce (t * 2, 0, c, d) * 0.5 + b;\n }\n return easeOutBounce(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;\n }\n\n /**\n * Easing functions\n * See Easing Equations by Robert Penner\n * @namespace fabric.util.ease\n */\n fabric.util.ease = {\n\n /**\n * Quadratic easing in\n * @memberOf fabric.util.ease\n */\n easeInQuad: function(t, b, c, d) {\n return c * (t /= d) * t + b;\n },\n\n /**\n * Quadratic easing out\n * @memberOf fabric.util.ease\n */\n easeOutQuad: function(t, b, c, d) {\n return -c * (t /= d) * (t - 2) + b;\n },\n\n /**\n * Quadratic easing in and out\n * @memberOf fabric.util.ease\n */\n easeInOutQuad: function(t, b, c, d) {\n t /= (d / 2);\n if (t < 1) {\n return c / 2 * t * t + b;\n }\n return -c / 2 * ((--t) * (t - 2) - 1) + b;\n },\n\n /**\n * Cubic easing in\n * @memberOf fabric.util.ease\n */\n easeInCubic: function(t, b, c, d) {\n return c * (t /= d) * t * t + b;\n },\n\n easeOutCubic: easeOutCubic,\n easeInOutCubic: easeInOutCubic,\n easeInQuart: easeInQuart,\n easeOutQuart: easeOutQuart,\n easeInOutQuart: easeInOutQuart,\n easeInQuint: easeInQuint,\n easeOutQuint: easeOutQuint,\n easeInOutQuint: easeInOutQuint,\n easeInSine: easeInSine,\n easeOutSine: easeOutSine,\n easeInOutSine: easeInOutSine,\n easeInExpo: easeInExpo,\n easeOutExpo: easeOutExpo,\n easeInOutExpo: easeInOutExpo,\n easeInCirc: easeInCirc,\n easeOutCirc: easeOutCirc,\n easeInOutCirc: easeInOutCirc,\n easeInElastic: easeInElastic,\n easeOutElastic: easeOutElastic,\n easeInOutElastic: easeInOutElastic,\n easeInBack: easeInBack,\n easeOutBack: easeOutBack,\n easeInOutBack: easeInOutBack,\n easeInBounce: easeInBounce,\n easeOutBounce: easeOutBounce,\n easeInOutBounce: easeInOutBounce\n };\n\n})();\n\n\n(function(global) {\n\n 'use strict';\n\n /**\n * @name fabric\n * @namespace\n */\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n clone = fabric.util.object.clone,\n toFixed = fabric.util.toFixed,\n parseUnit = fabric.util.parseUnit,\n multiplyTransformMatrices = fabric.util.multiplyTransformMatrices,\n\n svgValidTagNames = ['path', 'circle', 'polygon', 'polyline', 'ellipse', 'rect', 'line',\n 'image', 'text'],\n svgViewBoxElements = ['symbol', 'image', 'marker', 'pattern', 'view', 'svg'],\n svgInvalidAncestors = ['pattern', 'defs', 'symbol', 'metadata', 'clipPath', 'mask', 'desc'],\n svgValidParents = ['symbol', 'g', 'a', 'svg', 'clipPath', 'defs'],\n\n attributesMap = {\n cx: 'left',\n x: 'left',\n r: 'radius',\n cy: 'top',\n y: 'top',\n display: 'visible',\n visibility: 'visible',\n transform: 'transformMatrix',\n 'fill-opacity': 'fillOpacity',\n 'fill-rule': 'fillRule',\n 'font-family': 'fontFamily',\n 'font-size': 'fontSize',\n 'font-style': 'fontStyle',\n 'font-weight': 'fontWeight',\n 'letter-spacing': 'charSpacing',\n 'paint-order': 'paintFirst',\n 'stroke-dasharray': 'strokeDashArray',\n 'stroke-dashoffset': 'strokeDashOffset',\n 'stroke-linecap': 'strokeLineCap',\n 'stroke-linejoin': 'strokeLineJoin',\n 'stroke-miterlimit': 'strokeMiterLimit',\n 'stroke-opacity': 'strokeOpacity',\n 'stroke-width': 'strokeWidth',\n 'text-decoration': 'textDecoration',\n 'text-anchor': 'textAnchor',\n opacity: 'opacity',\n 'clip-path': 'clipPath',\n 'clip-rule': 'clipRule',\n 'vector-effect': 'strokeUniform'\n },\n\n colorAttributes = {\n stroke: 'strokeOpacity',\n fill: 'fillOpacity'\n };\n\n fabric.svgValidTagNamesRegEx = getSvgRegex(svgValidTagNames);\n fabric.svgViewBoxElementsRegEx = getSvgRegex(svgViewBoxElements);\n fabric.svgInvalidAncestorsRegEx = getSvgRegex(svgInvalidAncestors);\n fabric.svgValidParentsRegEx = getSvgRegex(svgValidParents);\n\n fabric.cssRules = { };\n fabric.gradientDefs = { };\n fabric.clipPaths = { };\n\n function normalizeAttr(attr) {\n // transform attribute names\n if (attr in attributesMap) {\n return attributesMap[attr];\n }\n return attr;\n }\n\n function normalizeValue(attr, value, parentAttributes, fontSize) {\n var isArray = Object.prototype.toString.call(value) === '[object Array]',\n parsed;\n\n if ((attr === 'fill' || attr === 'stroke') && value === 'none') {\n value = '';\n }\n else if (attr === 'vector-effect') {\n value = value === 'non-scaling-stroke';\n }\n else if (attr === 'strokeDashArray') {\n if (value === 'none') {\n value = null;\n }\n else {\n value = value.replace(/,/g, ' ').split(/\\s+/).map(parseFloat);\n }\n }\n else if (attr === 'transformMatrix') {\n if (parentAttributes && parentAttributes.transformMatrix) {\n value = multiplyTransformMatrices(\n parentAttributes.transformMatrix, fabric.parseTransformAttribute(value));\n }\n else {\n value = fabric.parseTransformAttribute(value);\n }\n }\n else if (attr === 'visible') {\n value = value !== 'none' && value !== 'hidden';\n // display=none on parent element always takes precedence over child element\n if (parentAttributes && parentAttributes.visible === false) {\n value = false;\n }\n }\n else if (attr === 'opacity') {\n value = parseFloat(value);\n if (parentAttributes && typeof parentAttributes.opacity !== 'undefined') {\n value *= parentAttributes.opacity;\n }\n }\n else if (attr === 'textAnchor' /* text-anchor */) {\n value = value === 'start' ? 'left' : value === 'end' ? 'right' : 'center';\n }\n else if (attr === 'charSpacing') {\n // parseUnit returns px and we convert it to em\n parsed = parseUnit(value, fontSize) / fontSize * 1000;\n }\n else if (attr === 'paintFirst') {\n var fillIndex = value.indexOf('fill');\n var strokeIndex = value.indexOf('stroke');\n var value = 'fill';\n if (fillIndex > -1 && strokeIndex > -1 && strokeIndex < fillIndex) {\n value = 'stroke';\n }\n else if (fillIndex === -1 && strokeIndex > -1) {\n value = 'stroke';\n }\n }\n else if (attr === 'href' || attr === 'xlink:href') {\n return value;\n }\n else {\n parsed = isArray ? value.map(parseUnit) : parseUnit(value, fontSize);\n }\n\n return (!isArray && isNaN(parsed) ? value : parsed);\n }\n\n /**\n * @private\n */\n function getSvgRegex(arr) {\n return new RegExp('^(' + arr.join('|') + ')\\\\b', 'i');\n }\n\n /**\n * @private\n * @param {Object} attributes Array of attributes to parse\n */\n function _setStrokeFillOpacity(attributes) {\n for (var attr in colorAttributes) {\n\n if (typeof attributes[colorAttributes[attr]] === 'undefined' || attributes[attr] === '') {\n continue;\n }\n\n if (typeof attributes[attr] === 'undefined') {\n if (!fabric.Object.prototype[attr]) {\n continue;\n }\n attributes[attr] = fabric.Object.prototype[attr];\n }\n\n if (attributes[attr].indexOf('url(') === 0) {\n continue;\n }\n\n var color = new fabric.Color(attributes[attr]);\n attributes[attr] = color.setAlpha(toFixed(color.getAlpha() * attributes[colorAttributes[attr]], 2)).toRgba();\n }\n return attributes;\n }\n\n /**\n * @private\n */\n function _getMultipleNodes(doc, nodeNames) {\n var nodeName, nodeArray = [], nodeList, i, len;\n for (i = 0, len = nodeNames.length; i < len; i++) {\n nodeName = nodeNames[i];\n nodeList = doc.getElementsByTagName(nodeName);\n nodeArray = nodeArray.concat(Array.prototype.slice.call(nodeList));\n }\n return nodeArray;\n }\n\n /**\n * Parses \"transform\" attribute, returning an array of values\n * @static\n * @function\n * @memberOf fabric\n * @param {String} attributeValue String containing attribute value\n * @return {Array} Array of 6 elements representing transformation matrix\n */\n fabric.parseTransformAttribute = (function() {\n function rotateMatrix(matrix, args) {\n var cos = fabric.util.cos(args[0]), sin = fabric.util.sin(args[0]),\n x = 0, y = 0;\n if (args.length === 3) {\n x = args[1];\n y = args[2];\n }\n\n matrix[0] = cos;\n matrix[1] = sin;\n matrix[2] = -sin;\n matrix[3] = cos;\n matrix[4] = x - (cos * x - sin * y);\n matrix[5] = y - (sin * x + cos * y);\n }\n\n function scaleMatrix(matrix, args) {\n var multiplierX = args[0],\n multiplierY = (args.length === 2) ? args[1] : args[0];\n\n matrix[0] = multiplierX;\n matrix[3] = multiplierY;\n }\n\n function skewMatrix(matrix, args, pos) {\n matrix[pos] = Math.tan(fabric.util.degreesToRadians(args[0]));\n }\n\n function translateMatrix(matrix, args) {\n matrix[4] = args[0];\n if (args.length === 2) {\n matrix[5] = args[1];\n }\n }\n\n // identity matrix\n var iMatrix = fabric.iMatrix,\n\n // == begin transform regexp\n number = fabric.reNum,\n\n commaWsp = '(?:\\\\s+,?\\\\s*|,\\\\s*)',\n\n skewX = '(?:(skewX)\\\\s*\\\\(\\\\s*(' + number + ')\\\\s*\\\\))',\n\n skewY = '(?:(skewY)\\\\s*\\\\(\\\\s*(' + number + ')\\\\s*\\\\))',\n\n rotate = '(?:(rotate)\\\\s*\\\\(\\\\s*(' + number + ')(?:' +\n commaWsp + '(' + number + ')' +\n commaWsp + '(' + number + '))?\\\\s*\\\\))',\n\n scale = '(?:(scale)\\\\s*\\\\(\\\\s*(' + number + ')(?:' +\n commaWsp + '(' + number + '))?\\\\s*\\\\))',\n\n translate = '(?:(translate)\\\\s*\\\\(\\\\s*(' + number + ')(?:' +\n commaWsp + '(' + number + '))?\\\\s*\\\\))',\n\n matrix = '(?:(matrix)\\\\s*\\\\(\\\\s*' +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' +\n '\\\\s*\\\\))',\n\n transform = '(?:' +\n matrix + '|' +\n translate + '|' +\n scale + '|' +\n rotate + '|' +\n skewX + '|' +\n skewY +\n ')',\n\n transforms = '(?:' + transform + '(?:' + commaWsp + '*' + transform + ')*' + ')',\n\n transformList = '^\\\\s*(?:' + transforms + '?)\\\\s*$',\n\n // http://www.w3.org/TR/SVG/coords.html#TransformAttribute\n reTransformList = new RegExp(transformList),\n // == end transform regexp\n\n reTransform = new RegExp(transform, 'g');\n\n return function(attributeValue) {\n\n // start with identity matrix\n var matrix = iMatrix.concat(),\n matrices = [];\n\n // return if no argument was given or\n // an argument does not match transform attribute regexp\n if (!attributeValue || (attributeValue && !reTransformList.test(attributeValue))) {\n return matrix;\n }\n\n attributeValue.replace(reTransform, function(match) {\n\n var m = new RegExp(transform).exec(match).filter(function (match) {\n // match !== '' && match != null\n return (!!match);\n }),\n operation = m[1],\n args = m.slice(2).map(parseFloat);\n\n switch (operation) {\n case 'translate':\n translateMatrix(matrix, args);\n break;\n case 'rotate':\n args[0] = fabric.util.degreesToRadians(args[0]);\n rotateMatrix(matrix, args);\n break;\n case 'scale':\n scaleMatrix(matrix, args);\n break;\n case 'skewX':\n skewMatrix(matrix, args, 2);\n break;\n case 'skewY':\n skewMatrix(matrix, args, 1);\n break;\n case 'matrix':\n matrix = args;\n break;\n }\n\n // snapshot current matrix into matrices array\n matrices.push(matrix.concat());\n // reset\n matrix = iMatrix.concat();\n });\n\n var combinedMatrix = matrices[0];\n while (matrices.length > 1) {\n matrices.shift();\n combinedMatrix = fabric.util.multiplyTransformMatrices(combinedMatrix, matrices[0]);\n }\n return combinedMatrix;\n };\n })();\n\n /**\n * @private\n */\n function parseStyleString(style, oStyle) {\n var attr, value;\n style.replace(/;\\s*$/, '').split(';').forEach(function (chunk) {\n var pair = chunk.split(':');\n\n attr = pair[0].trim().toLowerCase();\n value = pair[1].trim();\n\n oStyle[attr] = value;\n });\n }\n\n /**\n * @private\n */\n function parseStyleObject(style, oStyle) {\n var attr, value;\n for (var prop in style) {\n if (typeof style[prop] === 'undefined') {\n continue;\n }\n\n attr = prop.toLowerCase();\n value = style[prop];\n\n oStyle[attr] = value;\n }\n }\n\n /**\n * @private\n */\n function getGlobalStylesForElement(element, svgUid) {\n var styles = { };\n for (var rule in fabric.cssRules[svgUid]) {\n if (elementMatchesRule(element, rule.split(' '))) {\n for (var property in fabric.cssRules[svgUid][rule]) {\n styles[property] = fabric.cssRules[svgUid][rule][property];\n }\n }\n }\n return styles;\n }\n\n /**\n * @private\n */\n function elementMatchesRule(element, selectors) {\n var firstMatching, parentMatching = true;\n //start from rightmost selector.\n firstMatching = selectorMatches(element, selectors.pop());\n if (firstMatching && selectors.length) {\n parentMatching = doesSomeParentMatch(element, selectors);\n }\n return firstMatching && parentMatching && (selectors.length === 0);\n }\n\n function doesSomeParentMatch(element, selectors) {\n var selector, parentMatching = true;\n while (element.parentNode && element.parentNode.nodeType === 1 && selectors.length) {\n if (parentMatching) {\n selector = selectors.pop();\n }\n element = element.parentNode;\n parentMatching = selectorMatches(element, selector);\n }\n return selectors.length === 0;\n }\n\n /**\n * @private\n */\n function selectorMatches(element, selector) {\n var nodeName = element.nodeName,\n classNames = element.getAttribute('class'),\n id = element.getAttribute('id'), matcher, i;\n // i check if a selector matches slicing away part from it.\n // if i get empty string i should match\n matcher = new RegExp('^' + nodeName, 'i');\n selector = selector.replace(matcher, '');\n if (id && selector.length) {\n matcher = new RegExp('#' + id + '(?![a-zA-Z\\\\-]+)', 'i');\n selector = selector.replace(matcher, '');\n }\n if (classNames && selector.length) {\n classNames = classNames.split(' ');\n for (i = classNames.length; i--;) {\n matcher = new RegExp('\\\\.' + classNames[i] + '(?![a-zA-Z\\\\-]+)', 'i');\n selector = selector.replace(matcher, '');\n }\n }\n return selector.length === 0;\n }\n\n /**\n * @private\n * to support IE8 missing getElementById on SVGdocument and on node xmlDOM\n */\n function elementById(doc, id) {\n var el;\n doc.getElementById && (el = doc.getElementById(id));\n if (el) {\n return el;\n }\n var node, i, len, nodelist = doc.getElementsByTagName('*');\n for (i = 0, len = nodelist.length; i < len; i++) {\n node = nodelist[i];\n if (id === node.getAttribute('id')) {\n return node;\n }\n }\n }\n\n /**\n * @private\n */\n function parseUseDirectives(doc) {\n var nodelist = _getMultipleNodes(doc, ['use', 'svg:use']), i = 0;\n while (nodelist.length && i < nodelist.length) {\n var el = nodelist[i],\n xlink = (el.getAttribute('xlink:href') || el.getAttribute('href')).substr(1),\n x = el.getAttribute('x') || 0,\n y = el.getAttribute('y') || 0,\n el2 = elementById(doc, xlink).cloneNode(true),\n currentTrans = (el2.getAttribute('transform') || '') + ' translate(' + x + ', ' + y + ')',\n parentNode, oldLength = nodelist.length, attr, j, attrs, len;\n\n applyViewboxTransform(el2);\n if (/^svg$/i.test(el2.nodeName)) {\n var el3 = el2.ownerDocument.createElement('g');\n for (j = 0, attrs = el2.attributes, len = attrs.length; j < len; j++) {\n attr = attrs.item(j);\n el3.setAttribute(attr.nodeName, attr.nodeValue);\n }\n // el2.firstChild != null\n while (el2.firstChild) {\n el3.appendChild(el2.firstChild);\n }\n el2 = el3;\n }\n\n for (j = 0, attrs = el.attributes, len = attrs.length; j < len; j++) {\n attr = attrs.item(j);\n if (attr.nodeName === 'x' || attr.nodeName === 'y' ||\n attr.nodeName === 'xlink:href' || attr.nodeName === 'href') {\n continue;\n }\n\n if (attr.nodeName === 'transform') {\n currentTrans = attr.nodeValue + ' ' + currentTrans;\n }\n else {\n el2.setAttribute(attr.nodeName, attr.nodeValue);\n }\n }\n\n el2.setAttribute('transform', currentTrans);\n el2.setAttribute('instantiated_by_use', '1');\n el2.removeAttribute('id');\n parentNode = el.parentNode;\n parentNode.replaceChild(el2, el);\n // some browsers do not shorten nodelist after replaceChild (IE8)\n if (nodelist.length === oldLength) {\n i++;\n }\n }\n }\n\n // http://www.w3.org/TR/SVG/coords.html#ViewBoxAttribute\n // matches, e.g.: +14.56e-12, etc.\n var reViewBoxAttrValue = new RegExp(\n '^' +\n '\\\\s*(' + fabric.reNum + '+)\\\\s*,?' +\n '\\\\s*(' + fabric.reNum + '+)\\\\s*,?' +\n '\\\\s*(' + fabric.reNum + '+)\\\\s*,?' +\n '\\\\s*(' + fabric.reNum + '+)\\\\s*' +\n '$'\n );\n\n /**\n * Add a element that envelop all child elements and makes the viewbox transformMatrix descend on all elements\n */\n function applyViewboxTransform(element) {\n\n var viewBoxAttr = element.getAttribute('viewBox'),\n scaleX = 1,\n scaleY = 1,\n minX = 0,\n minY = 0,\n viewBoxWidth, viewBoxHeight, matrix, el,\n widthAttr = element.getAttribute('width'),\n heightAttr = element.getAttribute('height'),\n x = element.getAttribute('x') || 0,\n y = element.getAttribute('y') || 0,\n preserveAspectRatio = element.getAttribute('preserveAspectRatio') || '',\n missingViewBox = (!viewBoxAttr || !fabric.svgViewBoxElementsRegEx.test(element.nodeName)\n || !(viewBoxAttr = viewBoxAttr.match(reViewBoxAttrValue))),\n missingDimAttr = (!widthAttr || !heightAttr || widthAttr === '100%' || heightAttr === '100%'),\n toBeParsed = missingViewBox && missingDimAttr,\n parsedDim = { }, translateMatrix = '', widthDiff = 0, heightDiff = 0;\n\n parsedDim.width = 0;\n parsedDim.height = 0;\n parsedDim.toBeParsed = toBeParsed;\n\n if (toBeParsed) {\n return parsedDim;\n }\n\n if (missingViewBox) {\n parsedDim.width = parseUnit(widthAttr);\n parsedDim.height = parseUnit(heightAttr);\n return parsedDim;\n }\n\n minX = -parseFloat(viewBoxAttr[1]);\n minY = -parseFloat(viewBoxAttr[2]);\n viewBoxWidth = parseFloat(viewBoxAttr[3]);\n viewBoxHeight = parseFloat(viewBoxAttr[4]);\n\n if (!missingDimAttr) {\n parsedDim.width = parseUnit(widthAttr);\n parsedDim.height = parseUnit(heightAttr);\n scaleX = parsedDim.width / viewBoxWidth;\n scaleY = parsedDim.height / viewBoxHeight;\n }\n else {\n parsedDim.width = viewBoxWidth;\n parsedDim.height = viewBoxHeight;\n }\n\n // default is to preserve aspect ratio\n preserveAspectRatio = fabric.util.parsePreserveAspectRatioAttribute(preserveAspectRatio);\n if (preserveAspectRatio.alignX !== 'none') {\n //translate all container for the effect of Mid, Min, Max\n if (preserveAspectRatio.meetOrSlice === 'meet') {\n scaleY = scaleX = (scaleX > scaleY ? scaleY : scaleX);\n // calculate additional translation to move the viewbox\n }\n if (preserveAspectRatio.meetOrSlice === 'slice') {\n scaleY = scaleX = (scaleX > scaleY ? scaleX : scaleY);\n // calculate additional translation to move the viewbox\n }\n widthDiff = parsedDim.width - viewBoxWidth * scaleX;\n heightDiff = parsedDim.height - viewBoxHeight * scaleX;\n if (preserveAspectRatio.alignX === 'Mid') {\n widthDiff /= 2;\n }\n if (preserveAspectRatio.alignY === 'Mid') {\n heightDiff /= 2;\n }\n if (preserveAspectRatio.alignX === 'Min') {\n widthDiff = 0;\n }\n if (preserveAspectRatio.alignY === 'Min') {\n heightDiff = 0;\n }\n }\n\n if (scaleX === 1 && scaleY === 1 && minX === 0 && minY === 0 && x === 0 && y === 0) {\n return parsedDim;\n }\n\n if (x || y) {\n translateMatrix = ' translate(' + parseUnit(x) + ' ' + parseUnit(y) + ') ';\n }\n\n matrix = translateMatrix + ' matrix(' + scaleX +\n ' 0' +\n ' 0 ' +\n scaleY + ' ' +\n (minX * scaleX + widthDiff) + ' ' +\n (minY * scaleY + heightDiff) + ') ';\n parsedDim.viewboxTransform = fabric.parseTransformAttribute(matrix);\n if (element.nodeName === 'svg') {\n el = element.ownerDocument.createElement('g');\n // element.firstChild != null\n while (element.firstChild) {\n el.appendChild(element.firstChild);\n }\n element.appendChild(el);\n }\n else {\n el = element;\n matrix = el.getAttribute('transform') + matrix;\n }\n el.setAttribute('transform', matrix);\n return parsedDim;\n }\n\n function hasAncestorWithNodeName(element, nodeName) {\n while (element && (element = element.parentNode)) {\n if (element.nodeName && nodeName.test(element.nodeName.replace('svg:', ''))\n && !element.getAttribute('instantiated_by_use')) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Parses an SVG document, converts it to an array of corresponding fabric.* instances and passes them to a callback\n * @static\n * @function\n * @memberOf fabric\n * @param {SVGDocument} doc SVG document to parse\n * @param {Function} callback Callback to call when parsing is finished;\n * It's being passed an array of elements (parsed from a document).\n * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created.\n * @param {Object} [parsingOptions] options for parsing document\n * @param {String} [parsingOptions.crossOrigin] crossOrigin settings\n */\n fabric.parseSVGDocument = function(doc, callback, reviver, parsingOptions) {\n if (!doc) {\n return;\n }\n\n parseUseDirectives(doc);\n\n var svgUid = fabric.Object.__uid++, i, len,\n options = applyViewboxTransform(doc),\n descendants = fabric.util.toArray(doc.getElementsByTagName('*'));\n options.crossOrigin = parsingOptions && parsingOptions.crossOrigin;\n options.svgUid = svgUid;\n\n if (descendants.length === 0 && fabric.isLikelyNode) {\n // we're likely in node, where \"o3-xml\" library fails to gEBTN(\"*\")\n // https://github.com/ajaxorg/node-o3-xml/issues/21\n descendants = doc.selectNodes('//*[name(.)!=\"svg\"]');\n var arr = [];\n for (i = 0, len = descendants.length; i < len; i++) {\n arr[i] = descendants[i];\n }\n descendants = arr;\n }\n\n var elements = descendants.filter(function(el) {\n applyViewboxTransform(el);\n return fabric.svgValidTagNamesRegEx.test(el.nodeName.replace('svg:', '')) &&\n !hasAncestorWithNodeName(el, fabric.svgInvalidAncestorsRegEx); // http://www.w3.org/TR/SVG/struct.html#DefsElement\n });\n\n if (!elements || (elements && !elements.length)) {\n callback && callback([], {});\n return;\n }\n var clipPaths = { };\n descendants.filter(function(el) {\n return el.nodeName.replace('svg:', '') === 'clipPath';\n }).forEach(function(el) {\n var id = el.getAttribute('id');\n clipPaths[id] = fabric.util.toArray(el.getElementsByTagName('*')).filter(function(el) {\n return fabric.svgValidTagNamesRegEx.test(el.nodeName.replace('svg:', ''));\n });\n });\n fabric.gradientDefs[svgUid] = fabric.getGradientDefs(doc);\n fabric.cssRules[svgUid] = fabric.getCSSRules(doc);\n fabric.clipPaths[svgUid] = clipPaths;\n // Precedence of rules: style > class > attribute\n fabric.parseElements(elements, function(instances, elements) {\n if (callback) {\n callback(instances, options, elements, descendants);\n delete fabric.gradientDefs[svgUid];\n delete fabric.cssRules[svgUid];\n delete fabric.clipPaths[svgUid];\n }\n }, clone(options), reviver, parsingOptions);\n };\n\n function recursivelyParseGradientsXlink(doc, gradient) {\n var gradientsAttrs = ['gradientTransform', 'x1', 'x2', 'y1', 'y2', 'gradientUnits', 'cx', 'cy', 'r', 'fx', 'fy'],\n xlinkAttr = 'xlink:href',\n xLink = gradient.getAttribute(xlinkAttr).substr(1),\n referencedGradient = elementById(doc, xLink);\n if (referencedGradient && referencedGradient.getAttribute(xlinkAttr)) {\n recursivelyParseGradientsXlink(doc, referencedGradient);\n }\n gradientsAttrs.forEach(function(attr) {\n if (!gradient.hasAttribute(attr)) {\n gradient.setAttribute(attr, referencedGradient.getAttribute(attr));\n }\n });\n if (!gradient.children.length) {\n var referenceClone = referencedGradient.cloneNode(true);\n while (referenceClone.firstChild) {\n gradient.appendChild(referenceClone.firstChild);\n }\n }\n gradient.removeAttribute(xlinkAttr);\n }\n\n var reFontDeclaration = new RegExp(\n '(normal|italic)?\\\\s*(normal|small-caps)?\\\\s*' +\n '(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\\\s*(' +\n fabric.reNum +\n '(?:px|cm|mm|em|pt|pc|in)*)(?:\\\\/(normal|' + fabric.reNum + '))?\\\\s+(.*)');\n\n extend(fabric, {\n /**\n * Parses a short font declaration, building adding its properties to a style object\n * @static\n * @function\n * @memberOf fabric\n * @param {String} value font declaration\n * @param {Object} oStyle definition\n */\n parseFontDeclaration: function(value, oStyle) {\n var match = value.match(reFontDeclaration);\n\n if (!match) {\n return;\n }\n var fontStyle = match[1],\n // font variant is not used\n // fontVariant = match[2],\n fontWeight = match[3],\n fontSize = match[4],\n lineHeight = match[5],\n fontFamily = match[6];\n\n if (fontStyle) {\n oStyle.fontStyle = fontStyle;\n }\n if (fontWeight) {\n oStyle.fontWeight = isNaN(parseFloat(fontWeight)) ? fontWeight : parseFloat(fontWeight);\n }\n if (fontSize) {\n oStyle.fontSize = parseUnit(fontSize);\n }\n if (fontFamily) {\n oStyle.fontFamily = fontFamily;\n }\n if (lineHeight) {\n oStyle.lineHeight = lineHeight === 'normal' ? 1 : lineHeight;\n }\n },\n\n /**\n * Parses an SVG document, returning all of the gradient declarations found in it\n * @static\n * @function\n * @memberOf fabric\n * @param {SVGDocument} doc SVG document to parse\n * @return {Object} Gradient definitions; key corresponds to element id, value -- to gradient definition element\n */\n getGradientDefs: function(doc) {\n var tagArray = [\n 'linearGradient',\n 'radialGradient',\n 'svg:linearGradient',\n 'svg:radialGradient'],\n elList = _getMultipleNodes(doc, tagArray),\n el, j = 0, gradientDefs = { };\n j = elList.length;\n while (j--) {\n el = elList[j];\n if (el.getAttribute('xlink:href')) {\n recursivelyParseGradientsXlink(doc, el);\n }\n gradientDefs[el.getAttribute('id')] = el;\n }\n return gradientDefs;\n },\n\n /**\n * Returns an object of attributes' name/value, given element and an array of attribute names;\n * Parses parent \"g\" nodes recursively upwards.\n * @static\n * @memberOf fabric\n * @param {DOMElement} element Element to parse\n * @param {Array} attributes Array of attributes to parse\n * @return {Object} object containing parsed attributes' names/values\n */\n parseAttributes: function(element, attributes, svgUid) {\n\n if (!element) {\n return;\n }\n\n var value,\n parentAttributes = { },\n fontSize, parentFontSize;\n\n if (typeof svgUid === 'undefined') {\n svgUid = element.getAttribute('svgUid');\n }\n // if there's a parent container (`g` or `a` or `symbol` node), parse its attributes recursively upwards\n if (element.parentNode && fabric.svgValidParentsRegEx.test(element.parentNode.nodeName)) {\n parentAttributes = fabric.parseAttributes(element.parentNode, attributes, svgUid);\n }\n\n var ownAttributes = attributes.reduce(function(memo, attr) {\n value = element.getAttribute(attr);\n if (value) { // eslint-disable-line\n memo[attr] = value;\n }\n return memo;\n }, { });\n // add values parsed from style, which take precedence over attributes\n // (see: http://www.w3.org/TR/SVG/styling.html#UsingPresentationAttributes)\n ownAttributes = extend(ownAttributes,\n extend(getGlobalStylesForElement(element, svgUid), fabric.parseStyleAttribute(element)));\n\n fontSize = parentFontSize = parentAttributes.fontSize || fabric.Text.DEFAULT_SVG_FONT_SIZE;\n if (ownAttributes['font-size']) {\n // looks like the minimum should be 9px when dealing with ems. this is what looks like in browsers.\n ownAttributes['font-size'] = fontSize = parseUnit(ownAttributes['font-size'], parentFontSize);\n }\n\n var normalizedAttr, normalizedValue, normalizedStyle = {};\n for (var attr in ownAttributes) {\n normalizedAttr = normalizeAttr(attr);\n normalizedValue = normalizeValue(normalizedAttr, ownAttributes[attr], parentAttributes, fontSize);\n normalizedStyle[normalizedAttr] = normalizedValue;\n }\n if (normalizedStyle && normalizedStyle.font) {\n fabric.parseFontDeclaration(normalizedStyle.font, normalizedStyle);\n }\n var mergedAttrs = extend(parentAttributes, normalizedStyle);\n return fabric.svgValidParentsRegEx.test(element.nodeName) ? mergedAttrs : _setStrokeFillOpacity(mergedAttrs);\n },\n\n /**\n * Transforms an array of svg elements to corresponding fabric.* instances\n * @static\n * @memberOf fabric\n * @param {Array} elements Array of elements to parse\n * @param {Function} callback Being passed an array of fabric instances (transformed from SVG elements)\n * @param {Object} [options] Options object\n * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created.\n */\n parseElements: function(elements, callback, options, reviver, parsingOptions) {\n new fabric.ElementsParser(elements, callback, options, reviver, parsingOptions).parse();\n },\n\n /**\n * Parses \"style\" attribute, retuning an object with values\n * @static\n * @memberOf fabric\n * @param {SVGElement} element Element to parse\n * @return {Object} Objects with values parsed from style attribute of an element\n */\n parseStyleAttribute: function(element) {\n var oStyle = { },\n style = element.getAttribute('style');\n\n if (!style) {\n return oStyle;\n }\n\n if (typeof style === 'string') {\n parseStyleString(style, oStyle);\n }\n else {\n parseStyleObject(style, oStyle);\n }\n\n return oStyle;\n },\n\n /**\n * Parses \"points\" attribute, returning an array of values\n * @static\n * @memberOf fabric\n * @param {String} points points attribute string\n * @return {Array} array of points\n */\n parsePointsAttribute: function(points) {\n\n // points attribute is required and must not be empty\n if (!points) {\n return null;\n }\n\n // replace commas with whitespace and remove bookending whitespace\n points = points.replace(/,/g, ' ').trim();\n\n points = points.split(/\\s+/);\n var parsedPoints = [], i, len;\n\n for (i = 0, len = points.length; i < len; i += 2) {\n parsedPoints.push({\n x: parseFloat(points[i]),\n y: parseFloat(points[i + 1])\n });\n }\n\n // odd number of points is an error\n // if (parsedPoints.length % 2 !== 0) {\n // return null;\n // }\n\n return parsedPoints;\n },\n\n /**\n * Returns CSS rules for a given SVG document\n * @static\n * @function\n * @memberOf fabric\n * @param {SVGDocument} doc SVG document to parse\n * @return {Object} CSS rules of this document\n */\n getCSSRules: function(doc) {\n var styles = doc.getElementsByTagName('style'), i, len,\n allRules = { }, rules;\n\n // very crude parsing of style contents\n for (i = 0, len = styles.length; i < len; i++) {\n // IE9 doesn't support textContent, but provides text instead.\n var styleContents = styles[i].textContent || styles[i].text;\n\n // remove comments\n styleContents = styleContents.replace(/\\/\\*[\\s\\S]*?\\*\\//g, '');\n if (styleContents.trim() === '') {\n continue;\n }\n rules = styleContents.match(/[^{]*\\{[\\s\\S]*?\\}/g);\n rules = rules.map(function(rule) { return rule.trim(); });\n // eslint-disable-next-line no-loop-func\n rules.forEach(function(rule) {\n\n var match = rule.match(/([\\s\\S]*?)\\s*\\{([^}]*)\\}/),\n ruleObj = { }, declaration = match[2].trim(),\n propertyValuePairs = declaration.replace(/;$/, '').split(/\\s*;\\s*/);\n\n for (i = 0, len = propertyValuePairs.length; i < len; i++) {\n var pair = propertyValuePairs[i].split(/\\s*:\\s*/),\n property = pair[0],\n value = pair[1];\n ruleObj[property] = value;\n }\n rule = match[1];\n rule.split(',').forEach(function(_rule) {\n _rule = _rule.replace(/^svg/i, '').trim();\n if (_rule === '') {\n return;\n }\n if (allRules[_rule]) {\n fabric.util.object.extend(allRules[_rule], ruleObj);\n }\n else {\n allRules[_rule] = fabric.util.object.clone(ruleObj);\n }\n });\n });\n }\n return allRules;\n },\n\n /**\n * Takes url corresponding to an SVG document, and parses it into a set of fabric objects.\n * Note that SVG is fetched via XMLHttpRequest, so it needs to conform to SOP (Same Origin Policy)\n * @memberOf fabric\n * @param {String} url\n * @param {Function} callback\n * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created.\n * @param {Object} [options] Object containing options for parsing\n * @param {String} [options.crossOrigin] crossOrigin crossOrigin setting to use for external resources\n */\n loadSVGFromURL: function(url, callback, reviver, options) {\n\n url = url.replace(/^\\n\\s*/, '').trim();\n new fabric.util.request(url, {\n method: 'get',\n onComplete: onComplete\n });\n\n function onComplete(r) {\n\n var xml = r.responseXML;\n if (xml && !xml.documentElement && fabric.window.ActiveXObject && r.responseText) {\n xml = new ActiveXObject('Microsoft.XMLDOM');\n xml.async = 'false';\n //IE chokes on DOCTYPE\n xml.loadXML(r.responseText.replace(//i, ''));\n }\n if (!xml || !xml.documentElement) {\n callback && callback(null);\n return false;\n }\n\n fabric.parseSVGDocument(xml.documentElement, function (results, _options, elements, allElements) {\n callback && callback(results, _options, elements, allElements);\n }, reviver, options);\n }\n },\n\n /**\n * Takes string corresponding to an SVG document, and parses it into a set of fabric objects\n * @memberOf fabric\n * @param {String} string\n * @param {Function} callback\n * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created.\n * @param {Object} [options] Object containing options for parsing\n * @param {String} [options.crossOrigin] crossOrigin crossOrigin setting to use for external resources\n */\n loadSVGFromString: function(string, callback, reviver, options) {\n string = string.trim();\n var doc;\n if (typeof fabric.window.DOMParser !== 'undefined') {\n var parser = new fabric.window.DOMParser();\n if (parser && parser.parseFromString) {\n doc = parser.parseFromString(string, 'text/xml');\n }\n }\n else if (fabric.window.ActiveXObject) {\n doc = new ActiveXObject('Microsoft.XMLDOM');\n doc.async = 'false';\n // IE chokes on DOCTYPE\n doc.loadXML(string.replace(//i, ''));\n }\n\n fabric.parseSVGDocument(doc.documentElement, function (results, _options, elements, allElements) {\n callback(results, _options, elements, allElements);\n }, reviver, options);\n }\n });\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\nfabric.ElementsParser = function(elements, callback, options, reviver, parsingOptions) {\n this.elements = elements;\n this.callback = callback;\n this.options = options;\n this.reviver = reviver;\n this.svgUid = (options && options.svgUid) || 0;\n this.parsingOptions = parsingOptions;\n this.regexUrl = /^url\\(['\"]?#([^'\"]+)['\"]?\\)/g;\n};\n\n(function(proto) {\n proto.parse = function() {\n this.instances = new Array(this.elements.length);\n this.numElements = this.elements.length;\n this.createObjects();\n };\n\n proto.createObjects = function() {\n var _this = this;\n this.elements.forEach(function(element, i) {\n element.setAttribute('svgUid', _this.svgUid);\n _this.createObject(element, i);\n });\n };\n\n proto.findTag = function(el) {\n return fabric[fabric.util.string.capitalize(el.tagName.replace('svg:', ''))];\n };\n\n proto.createObject = function(el, index) {\n var klass = this.findTag(el);\n if (klass && klass.fromElement) {\n try {\n klass.fromElement(el, this.createCallback(index, el), this.options);\n }\n catch (err) {\n fabric.log(err);\n }\n }\n else {\n this.checkIfDone();\n }\n };\n\n proto.createCallback = function(index, el) {\n var _this = this;\n return function(obj) {\n var _options;\n _this.resolveGradient(obj, 'fill');\n _this.resolveGradient(obj, 'stroke');\n if (obj instanceof fabric.Image && obj._originalElement) {\n _options = obj.parsePreserveAspectRatioAttribute(el);\n }\n obj._removeTransformMatrix(_options);\n _this.resolveClipPath(obj);\n _this.reviver && _this.reviver(el, obj);\n _this.instances[index] = obj;\n _this.checkIfDone();\n };\n };\n\n proto.extractPropertyDefinition = function(obj, property, storage) {\n var value = obj[property];\n if (!(/^url\\(/).test(value)) {\n return;\n }\n var id = this.regexUrl.exec(value)[1];\n this.regexUrl.lastIndex = 0;\n return fabric[storage][this.svgUid][id];\n };\n\n proto.resolveGradient = function(obj, property) {\n var gradientDef = this.extractPropertyDefinition(obj, property, 'gradientDefs');\n if (gradientDef) {\n obj.set(property, fabric.Gradient.fromElement(gradientDef, obj));\n }\n };\n\n proto.createClipPathCallback = function(obj, container) {\n return function(_newObj) {\n _newObj._removeTransformMatrix();\n _newObj.fillRule = _newObj.clipRule;\n container.push(_newObj);\n };\n };\n\n proto.resolveClipPath = function(obj) {\n var clipPath = this.extractPropertyDefinition(obj, 'clipPath', 'clipPaths'),\n element, klass, objTransformInv, container, gTransform, options;\n if (clipPath) {\n container = [];\n objTransformInv = fabric.util.invertTransform(obj.calcTransformMatrix());\n for (var i = 0; i < clipPath.length; i++) {\n element = clipPath[i];\n klass = this.findTag(element);\n klass.fromElement(\n element,\n this.createClipPathCallback(obj, container),\n this.options\n );\n }\n if (container.length === 1) {\n clipPath = container[0];\n }\n else {\n clipPath = new fabric.Group(container);\n }\n gTransform = fabric.util.multiplyTransformMatrices(\n objTransformInv,\n clipPath.calcTransformMatrix()\n );\n var options = fabric.util.qrDecompose(gTransform);\n clipPath.flipX = false;\n clipPath.flipY = false;\n clipPath.set('scaleX', options.scaleX);\n clipPath.set('scaleY', options.scaleY);\n clipPath.angle = options.angle;\n clipPath.skewX = options.skewX;\n clipPath.skewY = 0;\n clipPath.setPositionByOrigin({ x: options.translateX, y: options.translateY }, 'center', 'center');\n obj.clipPath = clipPath;\n }\n };\n\n proto.checkIfDone = function() {\n if (--this.numElements === 0) {\n this.instances = this.instances.filter(function(el) {\n // eslint-disable-next-line no-eq-null, eqeqeq\n return el != null;\n });\n this.callback(this.instances, this.elements);\n }\n };\n})(fabric.ElementsParser.prototype);\n\n\n(function(global) {\n\n 'use strict';\n\n /* Adaptation of work of Kevin Lindsey (kevin@kevlindev.com) */\n\n var fabric = global.fabric || (global.fabric = { });\n\n if (fabric.Point) {\n fabric.warn('fabric.Point is already defined');\n return;\n }\n\n fabric.Point = Point;\n\n /**\n * Point class\n * @class fabric.Point\n * @memberOf fabric\n * @constructor\n * @param {Number} x\n * @param {Number} y\n * @return {fabric.Point} thisArg\n */\n function Point(x, y) {\n this.x = x;\n this.y = y;\n }\n\n Point.prototype = /** @lends fabric.Point.prototype */ {\n\n type: 'point',\n\n constructor: Point,\n\n /**\n * Adds another point to this one and returns another one\n * @param {fabric.Point} that\n * @return {fabric.Point} new Point instance with added values\n */\n add: function (that) {\n return new Point(this.x + that.x, this.y + that.y);\n },\n\n /**\n * Adds another point to this one\n * @param {fabric.Point} that\n * @return {fabric.Point} thisArg\n * @chainable\n */\n addEquals: function (that) {\n this.x += that.x;\n this.y += that.y;\n return this;\n },\n\n /**\n * Adds value to this point and returns a new one\n * @param {Number} scalar\n * @return {fabric.Point} new Point with added value\n */\n scalarAdd: function (scalar) {\n return new Point(this.x + scalar, this.y + scalar);\n },\n\n /**\n * Adds value to this point\n * @param {Number} scalar\n * @return {fabric.Point} thisArg\n * @chainable\n */\n scalarAddEquals: function (scalar) {\n this.x += scalar;\n this.y += scalar;\n return this;\n },\n\n /**\n * Subtracts another point from this point and returns a new one\n * @param {fabric.Point} that\n * @return {fabric.Point} new Point object with subtracted values\n */\n subtract: function (that) {\n return new Point(this.x - that.x, this.y - that.y);\n },\n\n /**\n * Subtracts another point from this point\n * @param {fabric.Point} that\n * @return {fabric.Point} thisArg\n * @chainable\n */\n subtractEquals: function (that) {\n this.x -= that.x;\n this.y -= that.y;\n return this;\n },\n\n /**\n * Subtracts value from this point and returns a new one\n * @param {Number} scalar\n * @return {fabric.Point}\n */\n scalarSubtract: function (scalar) {\n return new Point(this.x - scalar, this.y - scalar);\n },\n\n /**\n * Subtracts value from this point\n * @param {Number} scalar\n * @return {fabric.Point} thisArg\n * @chainable\n */\n scalarSubtractEquals: function (scalar) {\n this.x -= scalar;\n this.y -= scalar;\n return this;\n },\n\n /**\n * Multiplies this point by a value and returns a new one\n * TODO: rename in scalarMultiply in 2.0\n * @param {Number} scalar\n * @return {fabric.Point}\n */\n multiply: function (scalar) {\n return new Point(this.x * scalar, this.y * scalar);\n },\n\n /**\n * Multiplies this point by a value\n * TODO: rename in scalarMultiplyEquals in 2.0\n * @param {Number} scalar\n * @return {fabric.Point} thisArg\n * @chainable\n */\n multiplyEquals: function (scalar) {\n this.x *= scalar;\n this.y *= scalar;\n return this;\n },\n\n /**\n * Divides this point by a value and returns a new one\n * TODO: rename in scalarDivide in 2.0\n * @param {Number} scalar\n * @return {fabric.Point}\n */\n divide: function (scalar) {\n return new Point(this.x / scalar, this.y / scalar);\n },\n\n /**\n * Divides this point by a value\n * TODO: rename in scalarDivideEquals in 2.0\n * @param {Number} scalar\n * @return {fabric.Point} thisArg\n * @chainable\n */\n divideEquals: function (scalar) {\n this.x /= scalar;\n this.y /= scalar;\n return this;\n },\n\n /**\n * Returns true if this point is equal to another one\n * @param {fabric.Point} that\n * @return {Boolean}\n */\n eq: function (that) {\n return (this.x === that.x && this.y === that.y);\n },\n\n /**\n * Returns true if this point is less than another one\n * @param {fabric.Point} that\n * @return {Boolean}\n */\n lt: function (that) {\n return (this.x < that.x && this.y < that.y);\n },\n\n /**\n * Returns true if this point is less than or equal to another one\n * @param {fabric.Point} that\n * @return {Boolean}\n */\n lte: function (that) {\n return (this.x <= that.x && this.y <= that.y);\n },\n\n /**\n\n * Returns true if this point is greater another one\n * @param {fabric.Point} that\n * @return {Boolean}\n */\n gt: function (that) {\n return (this.x > that.x && this.y > that.y);\n },\n\n /**\n * Returns true if this point is greater than or equal to another one\n * @param {fabric.Point} that\n * @return {Boolean}\n */\n gte: function (that) {\n return (this.x >= that.x && this.y >= that.y);\n },\n\n /**\n * Returns new point which is the result of linear interpolation with this one and another one\n * @param {fabric.Point} that\n * @param {Number} t , position of interpolation, between 0 and 1 default 0.5\n * @return {fabric.Point}\n */\n lerp: function (that, t) {\n if (typeof t === 'undefined') {\n t = 0.5;\n }\n t = Math.max(Math.min(1, t), 0);\n return new Point(this.x + (that.x - this.x) * t, this.y + (that.y - this.y) * t);\n },\n\n /**\n * Returns distance from this point and another one\n * @param {fabric.Point} that\n * @return {Number}\n */\n distanceFrom: function (that) {\n var dx = this.x - that.x,\n dy = this.y - that.y;\n return Math.sqrt(dx * dx + dy * dy);\n },\n\n /**\n * Returns the point between this point and another one\n * @param {fabric.Point} that\n * @return {fabric.Point}\n */\n midPointFrom: function (that) {\n return this.lerp(that);\n },\n\n /**\n * Returns a new point which is the min of this and another one\n * @param {fabric.Point} that\n * @return {fabric.Point}\n */\n min: function (that) {\n return new Point(Math.min(this.x, that.x), Math.min(this.y, that.y));\n },\n\n /**\n * Returns a new point which is the max of this and another one\n * @param {fabric.Point} that\n * @return {fabric.Point}\n */\n max: function (that) {\n return new Point(Math.max(this.x, that.x), Math.max(this.y, that.y));\n },\n\n /**\n * Returns string representation of this point\n * @return {String}\n */\n toString: function () {\n return this.x + ',' + this.y;\n },\n\n /**\n * Sets x/y of this point\n * @param {Number} x\n * @param {Number} y\n * @chainable\n */\n setXY: function (x, y) {\n this.x = x;\n this.y = y;\n return this;\n },\n\n /**\n * Sets x of this point\n * @param {Number} x\n * @chainable\n */\n setX: function (x) {\n this.x = x;\n return this;\n },\n\n /**\n * Sets y of this point\n * @param {Number} y\n * @chainable\n */\n setY: function (y) {\n this.y = y;\n return this;\n },\n\n /**\n * Sets x/y of this point from another point\n * @param {fabric.Point} that\n * @chainable\n */\n setFromPoint: function (that) {\n this.x = that.x;\n this.y = that.y;\n return this;\n },\n\n /**\n * Swaps x/y of this point and another point\n * @param {fabric.Point} that\n */\n swap: function (that) {\n var x = this.x,\n y = this.y;\n this.x = that.x;\n this.y = that.y;\n that.x = x;\n that.y = y;\n },\n\n /**\n * return a cloned instance of the point\n * @return {fabric.Point}\n */\n clone: function () {\n return new Point(this.x, this.y);\n }\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n /* Adaptation of work of Kevin Lindsey (kevin@kevlindev.com) */\n var fabric = global.fabric || (global.fabric = { });\n\n if (fabric.Intersection) {\n fabric.warn('fabric.Intersection is already defined');\n return;\n }\n\n /**\n * Intersection class\n * @class fabric.Intersection\n * @memberOf fabric\n * @constructor\n */\n function Intersection(status) {\n this.status = status;\n this.points = [];\n }\n\n fabric.Intersection = Intersection;\n\n fabric.Intersection.prototype = /** @lends fabric.Intersection.prototype */ {\n\n constructor: Intersection,\n\n /**\n * Appends a point to intersection\n * @param {fabric.Point} point\n * @return {fabric.Intersection} thisArg\n * @chainable\n */\n appendPoint: function (point) {\n this.points.push(point);\n return this;\n },\n\n /**\n * Appends points to intersection\n * @param {Array} points\n * @return {fabric.Intersection} thisArg\n * @chainable\n */\n appendPoints: function (points) {\n this.points = this.points.concat(points);\n return this;\n }\n };\n\n /**\n * Checks if one line intersects another\n * TODO: rename in intersectSegmentSegment\n * @static\n * @param {fabric.Point} a1\n * @param {fabric.Point} a2\n * @param {fabric.Point} b1\n * @param {fabric.Point} b2\n * @return {fabric.Intersection}\n */\n fabric.Intersection.intersectLineLine = function (a1, a2, b1, b2) {\n var result,\n uaT = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x),\n ubT = (a2.x - a1.x) * (a1.y - b1.y) - (a2.y - a1.y) * (a1.x - b1.x),\n uB = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y);\n if (uB !== 0) {\n var ua = uaT / uB,\n ub = ubT / uB;\n if (0 <= ua && ua <= 1 && 0 <= ub && ub <= 1) {\n result = new Intersection('Intersection');\n result.appendPoint(new fabric.Point(a1.x + ua * (a2.x - a1.x), a1.y + ua * (a2.y - a1.y)));\n }\n else {\n result = new Intersection();\n }\n }\n else {\n if (uaT === 0 || ubT === 0) {\n result = new Intersection('Coincident');\n }\n else {\n result = new Intersection('Parallel');\n }\n }\n return result;\n };\n\n /**\n * Checks if line intersects polygon\n * TODO: rename in intersectSegmentPolygon\n * fix detection of coincident\n * @static\n * @param {fabric.Point} a1\n * @param {fabric.Point} a2\n * @param {Array} points\n * @return {fabric.Intersection}\n */\n fabric.Intersection.intersectLinePolygon = function(a1, a2, points) {\n var result = new Intersection(),\n length = points.length,\n b1, b2, inter, i;\n\n for (i = 0; i < length; i++) {\n b1 = points[i];\n b2 = points[(i + 1) % length];\n inter = Intersection.intersectLineLine(a1, a2, b1, b2);\n\n result.appendPoints(inter.points);\n }\n if (result.points.length > 0) {\n result.status = 'Intersection';\n }\n return result;\n };\n\n /**\n * Checks if polygon intersects another polygon\n * @static\n * @param {Array} points1\n * @param {Array} points2\n * @return {fabric.Intersection}\n */\n fabric.Intersection.intersectPolygonPolygon = function (points1, points2) {\n var result = new Intersection(),\n length = points1.length, i;\n\n for (i = 0; i < length; i++) {\n var a1 = points1[i],\n a2 = points1[(i + 1) % length],\n inter = Intersection.intersectLinePolygon(a1, a2, points2);\n\n result.appendPoints(inter.points);\n }\n if (result.points.length > 0) {\n result.status = 'Intersection';\n }\n return result;\n };\n\n /**\n * Checks if polygon intersects rectangle\n * @static\n * @param {Array} points\n * @param {fabric.Point} r1\n * @param {fabric.Point} r2\n * @return {fabric.Intersection}\n */\n fabric.Intersection.intersectPolygonRectangle = function (points, r1, r2) {\n var min = r1.min(r2),\n max = r1.max(r2),\n topRight = new fabric.Point(max.x, min.y),\n bottomLeft = new fabric.Point(min.x, max.y),\n inter1 = Intersection.intersectLinePolygon(min, topRight, points),\n inter2 = Intersection.intersectLinePolygon(topRight, max, points),\n inter3 = Intersection.intersectLinePolygon(max, bottomLeft, points),\n inter4 = Intersection.intersectLinePolygon(bottomLeft, min, points),\n result = new Intersection();\n\n result.appendPoints(inter1.points);\n result.appendPoints(inter2.points);\n result.appendPoints(inter3.points);\n result.appendPoints(inter4.points);\n\n if (result.points.length > 0) {\n result.status = 'Intersection';\n }\n return result;\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { });\n\n if (fabric.Color) {\n fabric.warn('fabric.Color is already defined.');\n return;\n }\n\n /**\n * Color class\n * The purpose of {@link fabric.Color} is to abstract and encapsulate common color operations;\n * {@link fabric.Color} is a constructor and creates instances of {@link fabric.Color} objects.\n *\n * @class fabric.Color\n * @param {String} color optional in hex or rgb(a) or hsl format or from known color list\n * @return {fabric.Color} thisArg\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2/#colors}\n */\n function Color(color) {\n if (!color) {\n this.setSource([0, 0, 0, 1]);\n }\n else {\n this._tryParsingColor(color);\n }\n }\n\n fabric.Color = Color;\n\n fabric.Color.prototype = /** @lends fabric.Color.prototype */ {\n\n /**\n * @private\n * @param {String|Array} color Color value to parse\n */\n _tryParsingColor: function(color) {\n var source;\n\n if (color in Color.colorNameMap) {\n color = Color.colorNameMap[color];\n }\n\n if (color === 'transparent') {\n source = [255, 255, 255, 0];\n }\n\n if (!source) {\n source = Color.sourceFromHex(color);\n }\n if (!source) {\n source = Color.sourceFromRgb(color);\n }\n if (!source) {\n source = Color.sourceFromHsl(color);\n }\n if (!source) {\n //if color is not recognize let's make black as canvas does\n source = [0, 0, 0, 1];\n }\n if (source) {\n this.setSource(source);\n }\n },\n\n /**\n * Adapted from https://github.com/mjijackson\n * @private\n * @param {Number} r Red color value\n * @param {Number} g Green color value\n * @param {Number} b Blue color value\n * @return {Array} Hsl color\n */\n _rgbToHsl: function(r, g, b) {\n r /= 255; g /= 255; b /= 255;\n\n var h, s, l,\n max = fabric.util.array.max([r, g, b]),\n min = fabric.util.array.min([r, g, b]);\n\n l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0; // achromatic\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n\n return [\n Math.round(h * 360),\n Math.round(s * 100),\n Math.round(l * 100)\n ];\n },\n\n /**\n * Returns source of this color (where source is an array representation; ex: [200, 200, 100, 1])\n * @return {Array}\n */\n getSource: function() {\n return this._source;\n },\n\n /**\n * Sets source of this color (where source is an array representation; ex: [200, 200, 100, 1])\n * @param {Array} source\n */\n setSource: function(source) {\n this._source = source;\n },\n\n /**\n * Returns color representation in RGB format\n * @return {String} ex: rgb(0-255,0-255,0-255)\n */\n toRgb: function() {\n var source = this.getSource();\n return 'rgb(' + source[0] + ',' + source[1] + ',' + source[2] + ')';\n },\n\n /**\n * Returns color representation in RGBA format\n * @return {String} ex: rgba(0-255,0-255,0-255,0-1)\n */\n toRgba: function() {\n var source = this.getSource();\n return 'rgba(' + source[0] + ',' + source[1] + ',' + source[2] + ',' + source[3] + ')';\n },\n\n /**\n * Returns color representation in HSL format\n * @return {String} ex: hsl(0-360,0%-100%,0%-100%)\n */\n toHsl: function() {\n var source = this.getSource(),\n hsl = this._rgbToHsl(source[0], source[1], source[2]);\n\n return 'hsl(' + hsl[0] + ',' + hsl[1] + '%,' + hsl[2] + '%)';\n },\n\n /**\n * Returns color representation in HSLA format\n * @return {String} ex: hsla(0-360,0%-100%,0%-100%,0-1)\n */\n toHsla: function() {\n var source = this.getSource(),\n hsl = this._rgbToHsl(source[0], source[1], source[2]);\n\n return 'hsla(' + hsl[0] + ',' + hsl[1] + '%,' + hsl[2] + '%,' + source[3] + ')';\n },\n\n /**\n * Returns color representation in HEX format\n * @return {String} ex: FF5555\n */\n toHex: function() {\n var source = this.getSource(), r, g, b;\n\n r = source[0].toString(16);\n r = (r.length === 1) ? ('0' + r) : r;\n\n g = source[1].toString(16);\n g = (g.length === 1) ? ('0' + g) : g;\n\n b = source[2].toString(16);\n b = (b.length === 1) ? ('0' + b) : b;\n\n return r.toUpperCase() + g.toUpperCase() + b.toUpperCase();\n },\n\n /**\n * Returns color representation in HEXA format\n * @return {String} ex: FF5555CC\n */\n toHexa: function() {\n var source = this.getSource(), a;\n\n a = Math.round(source[3] * 255);\n a = a.toString(16);\n a = (a.length === 1) ? ('0' + a) : a;\n\n return this.toHex() + a.toUpperCase();\n },\n\n /**\n * Gets value of alpha channel for this color\n * @return {Number} 0-1\n */\n getAlpha: function() {\n return this.getSource()[3];\n },\n\n /**\n * Sets value of alpha channel for this color\n * @param {Number} alpha Alpha value 0-1\n * @return {fabric.Color} thisArg\n */\n setAlpha: function(alpha) {\n var source = this.getSource();\n source[3] = alpha;\n this.setSource(source);\n return this;\n },\n\n /**\n * Transforms color to its grayscale representation\n * @return {fabric.Color} thisArg\n */\n toGrayscale: function() {\n var source = this.getSource(),\n average = parseInt((source[0] * 0.3 + source[1] * 0.59 + source[2] * 0.11).toFixed(0), 10),\n currentAlpha = source[3];\n this.setSource([average, average, average, currentAlpha]);\n return this;\n },\n\n /**\n * Transforms color to its black and white representation\n * @param {Number} threshold\n * @return {fabric.Color} thisArg\n */\n toBlackWhite: function(threshold) {\n var source = this.getSource(),\n average = (source[0] * 0.3 + source[1] * 0.59 + source[2] * 0.11).toFixed(0),\n currentAlpha = source[3];\n\n threshold = threshold || 127;\n\n average = (Number(average) < Number(threshold)) ? 0 : 255;\n this.setSource([average, average, average, currentAlpha]);\n return this;\n },\n\n /**\n * Overlays color with another color\n * @param {String|fabric.Color} otherColor\n * @return {fabric.Color} thisArg\n */\n overlayWith: function(otherColor) {\n if (!(otherColor instanceof Color)) {\n otherColor = new Color(otherColor);\n }\n\n var result = [],\n alpha = this.getAlpha(),\n otherAlpha = 0.5,\n source = this.getSource(),\n otherSource = otherColor.getSource(), i;\n\n for (i = 0; i < 3; i++) {\n result.push(Math.round((source[i] * (1 - otherAlpha)) + (otherSource[i] * otherAlpha)));\n }\n\n result[3] = alpha;\n this.setSource(result);\n return this;\n }\n };\n\n /**\n * Regex matching color in RGB or RGBA formats (ex: rgb(0, 0, 0), rgba(255, 100, 10, 0.5), rgba( 255 , 100 , 10 , 0.5 ), rgb(1,1,1), rgba(100%, 60%, 10%, 0.5))\n * @static\n * @field\n * @memberOf fabric.Color\n */\n // eslint-disable-next-line max-len\n fabric.Color.reRGBa = /^rgba?\\(\\s*(\\d{1,3}(?:\\.\\d+)?\\%?)\\s*,\\s*(\\d{1,3}(?:\\.\\d+)?\\%?)\\s*,\\s*(\\d{1,3}(?:\\.\\d+)?\\%?)\\s*(?:\\s*,\\s*((?:\\d*\\.?\\d+)?)\\s*)?\\)$/i;\n\n /**\n * Regex matching color in HSL or HSLA formats (ex: hsl(200, 80%, 10%), hsla(300, 50%, 80%, 0.5), hsla( 300 , 50% , 80% , 0.5 ))\n * @static\n * @field\n * @memberOf fabric.Color\n */\n fabric.Color.reHSLa = /^hsla?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3}\\%)\\s*,\\s*(\\d{1,3}\\%)\\s*(?:\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)$/i;\n\n /**\n * Regex matching color in HEX format (ex: #FF5544CC, #FF5555, 010155, aff)\n * @static\n * @field\n * @memberOf fabric.Color\n */\n fabric.Color.reHex = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i;\n\n /**\n * Map of the 148 color names with HEX code\n * @static\n * @field\n * @memberOf fabric.Color\n * @see: https://www.w3.org/TR/css3-color/#svg-color\n */\n fabric.Color.colorNameMap = {\n aliceblue: '#F0F8FF',\n antiquewhite: '#FAEBD7',\n aqua: '#00FFFF',\n aquamarine: '#7FFFD4',\n azure: '#F0FFFF',\n beige: '#F5F5DC',\n bisque: '#FFE4C4',\n black: '#000000',\n blanchedalmond: '#FFEBCD',\n blue: '#0000FF',\n blueviolet: '#8A2BE2',\n brown: '#A52A2A',\n burlywood: '#DEB887',\n cadetblue: '#5F9EA0',\n chartreuse: '#7FFF00',\n chocolate: '#D2691E',\n coral: '#FF7F50',\n cornflowerblue: '#6495ED',\n cornsilk: '#FFF8DC',\n crimson: '#DC143C',\n cyan: '#00FFFF',\n darkblue: '#00008B',\n darkcyan: '#008B8B',\n darkgoldenrod: '#B8860B',\n darkgray: '#A9A9A9',\n darkgrey: '#A9A9A9',\n darkgreen: '#006400',\n darkkhaki: '#BDB76B',\n darkmagenta: '#8B008B',\n darkolivegreen: '#556B2F',\n darkorange: '#FF8C00',\n darkorchid: '#9932CC',\n darkred: '#8B0000',\n darksalmon: '#E9967A',\n darkseagreen: '#8FBC8F',\n darkslateblue: '#483D8B',\n darkslategray: '#2F4F4F',\n darkslategrey: '#2F4F4F',\n darkturquoise: '#00CED1',\n darkviolet: '#9400D3',\n deeppink: '#FF1493',\n deepskyblue: '#00BFFF',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1E90FF',\n firebrick: '#B22222',\n floralwhite: '#FFFAF0',\n forestgreen: '#228B22',\n fuchsia: '#FF00FF',\n gainsboro: '#DCDCDC',\n ghostwhite: '#F8F8FF',\n gold: '#FFD700',\n goldenrod: '#DAA520',\n gray: '#808080',\n grey: '#808080',\n green: '#008000',\n greenyellow: '#ADFF2F',\n honeydew: '#F0FFF0',\n hotpink: '#FF69B4',\n indianred: '#CD5C5C',\n indigo: '#4B0082',\n ivory: '#FFFFF0',\n khaki: '#F0E68C',\n lavender: '#E6E6FA',\n lavenderblush: '#FFF0F5',\n lawngreen: '#7CFC00',\n lemonchiffon: '#FFFACD',\n lightblue: '#ADD8E6',\n lightcoral: '#F08080',\n lightcyan: '#E0FFFF',\n lightgoldenrodyellow: '#FAFAD2',\n lightgray: '#D3D3D3',\n lightgrey: '#D3D3D3',\n lightgreen: '#90EE90',\n lightpink: '#FFB6C1',\n lightsalmon: '#FFA07A',\n lightseagreen: '#20B2AA',\n lightskyblue: '#87CEFA',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#B0C4DE',\n lightyellow: '#FFFFE0',\n lime: '#00FF00',\n limegreen: '#32CD32',\n linen: '#FAF0E6',\n magenta: '#FF00FF',\n maroon: '#800000',\n mediumaquamarine: '#66CDAA',\n mediumblue: '#0000CD',\n mediumorchid: '#BA55D3',\n mediumpurple: '#9370DB',\n mediumseagreen: '#3CB371',\n mediumslateblue: '#7B68EE',\n mediumspringgreen: '#00FA9A',\n mediumturquoise: '#48D1CC',\n mediumvioletred: '#C71585',\n midnightblue: '#191970',\n mintcream: '#F5FFFA',\n mistyrose: '#FFE4E1',\n moccasin: '#FFE4B5',\n navajowhite: '#FFDEAD',\n navy: '#000080',\n oldlace: '#FDF5E6',\n olive: '#808000',\n olivedrab: '#6B8E23',\n orange: '#FFA500',\n orangered: '#FF4500',\n orchid: '#DA70D6',\n palegoldenrod: '#EEE8AA',\n palegreen: '#98FB98',\n paleturquoise: '#AFEEEE',\n palevioletred: '#DB7093',\n papayawhip: '#FFEFD5',\n peachpuff: '#FFDAB9',\n peru: '#CD853F',\n pink: '#FFC0CB',\n plum: '#DDA0DD',\n powderblue: '#B0E0E6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#FF0000',\n rosybrown: '#BC8F8F',\n royalblue: '#4169E1',\n saddlebrown: '#8B4513',\n salmon: '#FA8072',\n sandybrown: '#F4A460',\n seagreen: '#2E8B57',\n seashell: '#FFF5EE',\n sienna: '#A0522D',\n silver: '#C0C0C0',\n skyblue: '#87CEEB',\n slateblue: '#6A5ACD',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#FFFAFA',\n springgreen: '#00FF7F',\n steelblue: '#4682B4',\n tan: '#D2B48C',\n teal: '#008080',\n thistle: '#D8BFD8',\n tomato: '#FF6347',\n turquoise: '#40E0D0',\n violet: '#EE82EE',\n wheat: '#F5DEB3',\n white: '#FFFFFF',\n whitesmoke: '#F5F5F5',\n yellow: '#FFFF00',\n yellowgreen: '#9ACD32'\n };\n\n /**\n * @private\n * @param {Number} p\n * @param {Number} q\n * @param {Number} t\n * @return {Number}\n */\n function hue2rgb(p, q, t) {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n }\n\n /**\n * Returns new color object, when given a color in RGB format\n * @memberOf fabric.Color\n * @param {String} color Color value ex: rgb(0-255,0-255,0-255)\n * @return {fabric.Color}\n */\n fabric.Color.fromRgb = function(color) {\n return Color.fromSource(Color.sourceFromRgb(color));\n };\n\n /**\n * Returns array representation (ex: [100, 100, 200, 1]) of a color that's in RGB or RGBA format\n * @memberOf fabric.Color\n * @param {String} color Color value ex: rgb(0-255,0-255,0-255), rgb(0%-100%,0%-100%,0%-100%)\n * @return {Array} source\n */\n fabric.Color.sourceFromRgb = function(color) {\n var match = color.match(Color.reRGBa);\n if (match) {\n var r = parseInt(match[1], 10) / (/%$/.test(match[1]) ? 100 : 1) * (/%$/.test(match[1]) ? 255 : 1),\n g = parseInt(match[2], 10) / (/%$/.test(match[2]) ? 100 : 1) * (/%$/.test(match[2]) ? 255 : 1),\n b = parseInt(match[3], 10) / (/%$/.test(match[3]) ? 100 : 1) * (/%$/.test(match[3]) ? 255 : 1);\n\n return [\n parseInt(r, 10),\n parseInt(g, 10),\n parseInt(b, 10),\n match[4] ? parseFloat(match[4]) : 1\n ];\n }\n };\n\n /**\n * Returns new color object, when given a color in RGBA format\n * @static\n * @function\n * @memberOf fabric.Color\n * @param {String} color\n * @return {fabric.Color}\n */\n fabric.Color.fromRgba = Color.fromRgb;\n\n /**\n * Returns new color object, when given a color in HSL format\n * @param {String} color Color value ex: hsl(0-260,0%-100%,0%-100%)\n * @memberOf fabric.Color\n * @return {fabric.Color}\n */\n fabric.Color.fromHsl = function(color) {\n return Color.fromSource(Color.sourceFromHsl(color));\n };\n\n /**\n * Returns array representation (ex: [100, 100, 200, 1]) of a color that's in HSL or HSLA format.\n * Adapted from https://github.com/mjijackson\n * @memberOf fabric.Color\n * @param {String} color Color value ex: hsl(0-360,0%-100%,0%-100%) or hsla(0-360,0%-100%,0%-100%, 0-1)\n * @return {Array} source\n * @see http://http://www.w3.org/TR/css3-color/#hsl-color\n */\n fabric.Color.sourceFromHsl = function(color) {\n var match = color.match(Color.reHSLa);\n if (!match) {\n return;\n }\n\n var h = (((parseFloat(match[1]) % 360) + 360) % 360) / 360,\n s = parseFloat(match[2]) / (/%$/.test(match[2]) ? 100 : 1),\n l = parseFloat(match[3]) / (/%$/.test(match[3]) ? 100 : 1),\n r, g, b;\n\n if (s === 0) {\n r = g = b = l;\n }\n else {\n var q = l <= 0.5 ? l * (s + 1) : l + s - l * s,\n p = l * 2 - q;\n\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return [\n Math.round(r * 255),\n Math.round(g * 255),\n Math.round(b * 255),\n match[4] ? parseFloat(match[4]) : 1\n ];\n };\n\n /**\n * Returns new color object, when given a color in HSLA format\n * @static\n * @function\n * @memberOf fabric.Color\n * @param {String} color\n * @return {fabric.Color}\n */\n fabric.Color.fromHsla = Color.fromHsl;\n\n /**\n * Returns new color object, when given a color in HEX format\n * @static\n * @memberOf fabric.Color\n * @param {String} color Color value ex: FF5555\n * @return {fabric.Color}\n */\n fabric.Color.fromHex = function(color) {\n return Color.fromSource(Color.sourceFromHex(color));\n };\n\n /**\n * Returns array representation (ex: [100, 100, 200, 1]) of a color that's in HEX format\n * @static\n * @memberOf fabric.Color\n * @param {String} color ex: FF5555 or FF5544CC (RGBa)\n * @return {Array} source\n */\n fabric.Color.sourceFromHex = function(color) {\n if (color.match(Color.reHex)) {\n var value = color.slice(color.indexOf('#') + 1),\n isShortNotation = (value.length === 3 || value.length === 4),\n isRGBa = (value.length === 8 || value.length === 4),\n r = isShortNotation ? (value.charAt(0) + value.charAt(0)) : value.substring(0, 2),\n g = isShortNotation ? (value.charAt(1) + value.charAt(1)) : value.substring(2, 4),\n b = isShortNotation ? (value.charAt(2) + value.charAt(2)) : value.substring(4, 6),\n a = isRGBa ? (isShortNotation ? (value.charAt(3) + value.charAt(3)) : value.substring(6, 8)) : 'FF';\n\n return [\n parseInt(r, 16),\n parseInt(g, 16),\n parseInt(b, 16),\n parseFloat((parseInt(a, 16) / 255).toFixed(2))\n ];\n }\n };\n\n /**\n * Returns new color object, when given color in array representation (ex: [200, 100, 100, 0.5])\n * @static\n * @memberOf fabric.Color\n * @param {Array} source\n * @return {fabric.Color}\n */\n fabric.Color.fromSource = function(source) {\n var oColor = new Color();\n oColor.setSource(source);\n return oColor;\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function() {\n\n /* _FROM_SVG_START_ */\n function getColorStop(el) {\n var style = el.getAttribute('style'),\n offset = el.getAttribute('offset') || 0,\n color, colorAlpha, opacity, i;\n\n // convert percents to absolute values\n offset = parseFloat(offset) / (/%$/.test(offset) ? 100 : 1);\n offset = offset < 0 ? 0 : offset > 1 ? 1 : offset;\n if (style) {\n var keyValuePairs = style.split(/\\s*;\\s*/);\n\n if (keyValuePairs[keyValuePairs.length - 1] === '') {\n keyValuePairs.pop();\n }\n\n for (i = keyValuePairs.length; i--; ) {\n\n var split = keyValuePairs[i].split(/\\s*:\\s*/),\n key = split[0].trim(),\n value = split[1].trim();\n\n if (key === 'stop-color') {\n color = value;\n }\n else if (key === 'stop-opacity') {\n opacity = value;\n }\n }\n }\n\n if (!color) {\n color = el.getAttribute('stop-color') || 'rgb(0,0,0)';\n }\n if (!opacity) {\n opacity = el.getAttribute('stop-opacity');\n }\n\n color = new fabric.Color(color);\n colorAlpha = color.getAlpha();\n opacity = isNaN(parseFloat(opacity)) ? 1 : parseFloat(opacity);\n opacity *= colorAlpha;\n\n return {\n offset: offset,\n color: color.toRgb(),\n opacity: opacity\n };\n }\n\n function getLinearCoords(el) {\n return {\n x1: el.getAttribute('x1') || 0,\n y1: el.getAttribute('y1') || 0,\n x2: el.getAttribute('x2') || '100%',\n y2: el.getAttribute('y2') || 0\n };\n }\n\n function getRadialCoords(el) {\n return {\n x1: el.getAttribute('fx') || el.getAttribute('cx') || '50%',\n y1: el.getAttribute('fy') || el.getAttribute('cy') || '50%',\n r1: 0,\n x2: el.getAttribute('cx') || '50%',\n y2: el.getAttribute('cy') || '50%',\n r2: el.getAttribute('r') || '50%'\n };\n }\n /* _FROM_SVG_END_ */\n\n var clone = fabric.util.object.clone;\n\n /**\n * Gradient class\n * @class fabric.Gradient\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#gradients}\n * @see {@link fabric.Gradient#initialize} for constructor definition\n */\n fabric.Gradient = fabric.util.createClass(/** @lends fabric.Gradient.prototype */ {\n\n /**\n * Horizontal offset for aligning gradients coming from SVG when outside pathgroups\n * @type Number\n * @default 0\n */\n offsetX: 0,\n\n /**\n * Vertical offset for aligning gradients coming from SVG when outside pathgroups\n * @type Number\n * @default 0\n */\n offsetY: 0,\n\n /**\n * Constructor\n * @param {Object} [options] Options object with type, coords, gradientUnits and colorStops\n * @return {fabric.Gradient} thisArg\n */\n initialize: function(options) {\n options || (options = { });\n\n var coords = { };\n\n this.id = fabric.Object.__uid++;\n this.type = options.type || 'linear';\n\n coords = {\n x1: options.coords.x1 || 0,\n y1: options.coords.y1 || 0,\n x2: options.coords.x2 || 0,\n y2: options.coords.y2 || 0\n };\n\n if (this.type === 'radial') {\n coords.r1 = options.coords.r1 || 0;\n coords.r2 = options.coords.r2 || 0;\n }\n this.coords = coords;\n this.colorStops = options.colorStops.slice();\n if (options.gradientTransform) {\n this.gradientTransform = options.gradientTransform;\n }\n this.offsetX = options.offsetX || this.offsetX;\n this.offsetY = options.offsetY || this.offsetY;\n },\n\n /**\n * Adds another colorStop\n * @param {Object} colorStop Object with offset and color\n * @return {fabric.Gradient} thisArg\n */\n addColorStop: function(colorStops) {\n for (var position in colorStops) {\n var color = new fabric.Color(colorStops[position]);\n this.colorStops.push({\n offset: parseFloat(position),\n color: color.toRgb(),\n opacity: color.getAlpha()\n });\n }\n return this;\n },\n\n /**\n * Returns object representation of a gradient\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object}\n */\n toObject: function(propertiesToInclude) {\n var object = {\n type: this.type,\n coords: this.coords,\n colorStops: this.colorStops,\n offsetX: this.offsetX,\n offsetY: this.offsetY,\n gradientTransform: this.gradientTransform ? this.gradientTransform.concat() : this.gradientTransform\n };\n fabric.util.populateWithProperties(this, object, propertiesToInclude);\n\n return object;\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns SVG representation of an gradient\n * @param {Object} object Object to create a gradient for\n * @return {String} SVG representation of an gradient (linear/radial)\n */\n toSVG: function(object, options) {\n var coords = clone(this.coords, true), i, len, options = options || {},\n markup, commonAttributes, colorStops = clone(this.colorStops, true),\n needsSwap = coords.r1 > coords.r2,\n transform = this.gradientTransform ? this.gradientTransform.concat() : fabric.iMatrix.concat(),\n offsetX = object.width / 2 - this.offsetX, offsetY = object.height / 2 - this.offsetY,\n withViewport = !!options.additionalTransform;\n // colorStops must be sorted ascending\n colorStops.sort(function(a, b) {\n return a.offset - b.offset;\n });\n\n if (object.type === 'path') {\n offsetX -= object.pathOffset.x;\n offsetY -= object.pathOffset.y;\n }\n\n transform[4] -= offsetX;\n transform[5] -= offsetY;\n\n commonAttributes = 'id=\"SVGID_' + this.id +\n '\" gradientUnits=\"userSpaceOnUse\"';\n commonAttributes += ' gradientTransform=\"' + (withViewport ?\n options.additionalTransform + ' ' : '') + fabric.util.matrixToSVG(transform) + '\" ';\n\n if (this.type === 'linear') {\n markup = [\n '\\n'\n ];\n }\n else if (this.type === 'radial') {\n // svg radial gradient has just 1 radius. the biggest.\n markup = [\n '\\n'\n ];\n }\n\n if (this.type === 'radial') {\n if (needsSwap) {\n // svg goes from internal to external radius. if radius are inverted, swap color stops.\n colorStops = colorStops.concat();\n colorStops.reverse();\n for (i = 0, len = colorStops.length; i < len; i++) {\n colorStops[i].offset = 1 - colorStops[i].offset;\n }\n }\n var minRadius = Math.min(coords.r1, coords.r2);\n if (minRadius > 0) {\n // i have to shift all colorStops and add new one in 0.\n var maxRadius = Math.max(coords.r1, coords.r2),\n percentageShift = minRadius / maxRadius;\n for (i = 0, len = colorStops.length; i < len; i++) {\n colorStops[i].offset += percentageShift * (1 - colorStops[i].offset);\n }\n }\n }\n\n for (i = 0, len = colorStops.length; i < len; i++) {\n var colorStop = colorStops[i];\n markup.push(\n '\\n'\n );\n }\n\n markup.push((this.type === 'linear' ? '\\n' : '\\n'));\n\n return markup.join('');\n },\n /* _TO_SVG_END_ */\n\n /**\n * Returns an instance of CanvasGradient\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @return {CanvasGradient}\n */\n toLive: function(ctx) {\n var gradient, coords = fabric.util.object.clone(this.coords), i, len;\n\n if (!this.type) {\n return;\n }\n\n if (this.type === 'linear') {\n gradient = ctx.createLinearGradient(\n coords.x1, coords.y1, coords.x2, coords.y2);\n }\n else if (this.type === 'radial') {\n gradient = ctx.createRadialGradient(\n coords.x1, coords.y1, coords.r1, coords.x2, coords.y2, coords.r2);\n }\n\n for (i = 0, len = this.colorStops.length; i < len; i++) {\n var color = this.colorStops[i].color,\n opacity = this.colorStops[i].opacity,\n offset = this.colorStops[i].offset;\n\n if (typeof opacity !== 'undefined') {\n color = new fabric.Color(color).setAlpha(opacity).toRgba();\n }\n gradient.addColorStop(offset, color);\n }\n\n return gradient;\n }\n });\n\n fabric.util.object.extend(fabric.Gradient, {\n\n /* _FROM_SVG_START_ */\n /**\n * Returns {@link fabric.Gradient} instance from an SVG element\n * @static\n * @memberOf fabric.Gradient\n * @param {SVGGradientElement} el SVG gradient element\n * @param {fabric.Object} instance\n * @return {fabric.Gradient} Gradient instance\n * @see http://www.w3.org/TR/SVG/pservers.html#LinearGradientElement\n * @see http://www.w3.org/TR/SVG/pservers.html#RadialGradientElement\n */\n fromElement: function(el, instance) {\n /**\n * @example:\n *\n * \n * \n * \n * \n *\n * OR\n *\n * \n * \n * \n * \n *\n * OR\n *\n * \n * \n * \n * \n * \n *\n * OR\n *\n * \n * \n * \n * \n * \n *\n */\n\n var colorStopEls = el.getElementsByTagName('stop'),\n type,\n gradientUnits = el.getAttribute('gradientUnits') || 'objectBoundingBox',\n gradientTransform = el.getAttribute('gradientTransform'),\n colorStops = [],\n coords, ellipseMatrix, i;\n\n if (el.nodeName === 'linearGradient' || el.nodeName === 'LINEARGRADIENT') {\n type = 'linear';\n }\n else {\n type = 'radial';\n }\n\n if (type === 'linear') {\n coords = getLinearCoords(el);\n }\n else if (type === 'radial') {\n coords = getRadialCoords(el);\n }\n\n for (i = colorStopEls.length; i--; ) {\n colorStops.push(getColorStop(colorStopEls[i]));\n }\n\n ellipseMatrix = _convertPercentUnitsToValues(instance, coords, gradientUnits);\n\n var gradient = new fabric.Gradient({\n type: type,\n coords: coords,\n colorStops: colorStops,\n offsetX: -instance.left,\n offsetY: -instance.top\n });\n\n if (gradientTransform || ellipseMatrix !== '') {\n gradient.gradientTransform = fabric.parseTransformAttribute((gradientTransform || '') + ellipseMatrix);\n }\n\n return gradient;\n },\n /* _FROM_SVG_END_ */\n\n /**\n * Returns {@link fabric.Gradient} instance from its object representation\n * @static\n * @memberOf fabric.Gradient\n * @param {Object} obj\n * @param {Object} [options] Options object\n */\n forObject: function(obj, options) {\n options || (options = { });\n _convertPercentUnitsToValues(obj, options.coords, 'userSpaceOnUse');\n return new fabric.Gradient(options);\n }\n });\n\n /**\n * @private\n */\n function _convertPercentUnitsToValues(object, options, gradientUnits) {\n var propValue, addFactor = 0, multFactor = 1, ellipseMatrix = '';\n for (var prop in options) {\n if (options[prop] === 'Infinity') {\n options[prop] = 1;\n }\n else if (options[prop] === '-Infinity') {\n options[prop] = 0;\n }\n propValue = parseFloat(options[prop], 10);\n if (typeof options[prop] === 'string' && /^(\\d+\\.\\d+)%|(\\d+)%$/.test(options[prop])) {\n multFactor = 0.01;\n }\n else {\n multFactor = 1;\n }\n if (prop === 'x1' || prop === 'x2' || prop === 'r2') {\n multFactor *= gradientUnits === 'objectBoundingBox' ? object.width : 1;\n addFactor = gradientUnits === 'objectBoundingBox' ? object.left || 0 : 0;\n }\n else if (prop === 'y1' || prop === 'y2') {\n multFactor *= gradientUnits === 'objectBoundingBox' ? object.height : 1;\n addFactor = gradientUnits === 'objectBoundingBox' ? object.top || 0 : 0;\n }\n options[prop] = propValue * multFactor + addFactor;\n }\n if (object.type === 'ellipse' &&\n options.r2 !== null &&\n gradientUnits === 'objectBoundingBox' &&\n object.rx !== object.ry) {\n\n var scaleFactor = object.ry / object.rx;\n ellipseMatrix = ' scale(1, ' + scaleFactor + ')';\n if (options.y1) {\n options.y1 /= scaleFactor;\n }\n if (options.y2) {\n options.y2 /= scaleFactor;\n }\n }\n return ellipseMatrix;\n }\n})();\n\n\n(function() {\n\n 'use strict';\n\n var toFixed = fabric.util.toFixed;\n\n /**\n * Pattern class\n * @class fabric.Pattern\n * @see {@link http://fabricjs.com/patterns|Pattern demo}\n * @see {@link http://fabricjs.com/dynamic-patterns|DynamicPattern demo}\n * @see {@link fabric.Pattern#initialize} for constructor definition\n */\n\n\n fabric.Pattern = fabric.util.createClass(/** @lends fabric.Pattern.prototype */ {\n\n /**\n * Repeat property of a pattern (one of repeat, repeat-x, repeat-y or no-repeat)\n * @type String\n * @default\n */\n repeat: 'repeat',\n\n /**\n * Pattern horizontal offset from object's left/top corner\n * @type Number\n * @default\n */\n offsetX: 0,\n\n /**\n * Pattern vertical offset from object's left/top corner\n * @type Number\n * @default\n */\n offsetY: 0,\n\n /**\n * crossOrigin value (one of \"\", \"anonymous\", \"use-credentials\")\n * @see https://developer.mozilla.org/en-US/docs/HTML/CORS_settings_attributes\n * @type String\n * @default\n */\n crossOrigin: '',\n\n /**\n * transform matrix to change the pattern, imported from svgs.\n * @type Array\n * @default\n */\n patternTransform: null,\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n * @param {Function} [callback] function to invoke after callback init.\n * @return {fabric.Pattern} thisArg\n */\n initialize: function(options, callback) {\n options || (options = { });\n\n this.id = fabric.Object.__uid++;\n this.setOptions(options);\n if (!options.source || (options.source && typeof options.source !== 'string')) {\n callback && callback(this);\n return;\n }\n // function string\n if (typeof fabric.util.getFunctionBody(options.source) !== 'undefined') {\n this.source = new Function(fabric.util.getFunctionBody(options.source));\n callback && callback(this);\n }\n else {\n // img src string\n var _this = this;\n this.source = fabric.util.createImage();\n fabric.util.loadImage(options.source, function(img) {\n _this.source = img;\n callback && callback(_this);\n }, null, this.crossOrigin);\n }\n },\n\n /**\n * Returns object representation of a pattern\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of a pattern instance\n */\n toObject: function(propertiesToInclude) {\n var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS,\n source, object;\n\n // callback\n if (typeof this.source === 'function') {\n source = String(this.source);\n }\n // element\n else if (typeof this.source.src === 'string') {\n source = this.source.src;\n }\n //