{"version":3,"sources":["webpack:///./node_modules/konva/lib/Tween.js","webpack:///./node_modules/konva/lib/Layer.js","webpack:///./node_modules/konva/lib/filters/Threshold.js","webpack:///./node_modules/konva/lib/filters/Kaleidoscope.js","webpack:///./node_modules/konva/lib/filters/Posterize.js","webpack:///./node_modules/konva/lib/FastLayer.js","webpack:///./node_modules/konva/lib/index.js","webpack:///./node_modules/konva/lib/_CoreInternals.js","webpack:///./node_modules/konva/lib/filters/Pixelate.js","webpack:///./node_modules/konva/lib/Validators.js","webpack:///./node_modules/konva/lib/filters/HSV.js","webpack:///./node_modules/konva/lib/Node.js","webpack:///./node_modules/konva/lib/filters/Brighten.js","webpack:///./node_modules/konva/lib/filters/Sepia.js","webpack:///./node_modules/konva/lib/filters/Solarize.js","webpack:///./node_modules/konva/lib/PointerEvents.js","webpack:///./node_modules/konva/lib/filters/Invert.js","webpack:///./node_modules/konva/lib/filters/RGB.js","webpack:///./node_modules/konva/lib/filters/HSL.js","webpack:///./node_modules/konva/lib/filters/Mask.js","webpack:///./node_modules/konva/lib/Util.js","webpack:///./node_modules/konva/lib/filters/RGBA.js","webpack:///./node_modules/konva/lib/filters/Noise.js","webpack:///./node_modules/konva/lib/filters/Enhance.js","webpack:///./node_modules/konva/lib/filters/Blur.js","webpack:///./node_modules/konva/lib/filters/Contrast.js","webpack:///./node_modules/konva/lib/filters/Grayscale.js","webpack:///./node_modules/konva/lib/Global.js","webpack:///./node_modules/konva/lib/filters/Emboss.js","webpack:///./node_modules/konva/lib/Stage.js","webpack:///./node_modules/konva/lib/Factory.js","webpack:///./node_modules/konva/lib/Group.js","webpack:///./node_modules/konva/lib/Shape.js","webpack:///./node_modules/konva/lib/_FullInternals.js"],"names":["Object","defineProperty","exports","value","Easings","Tween","Util_1","Animation_1","Node_1","Global_1","blacklist","node","duration","easing","onFinish","yoyo","PAUSED","PLAYING","REVERSING","idCounter","colorAttrs","TweenEngine","prop","propFunc","func","begin","finish","this","_pos","_change","prevPos","_time","_position","_startTime","_finish","pause","prototype","fire","str","handler","setTime","t","reverse","play","reset","update","getTime","setPosition","p","getPosition","undefined","state","getTimer","onEnterFrame","seek","Date","config","key","that","nodeId","_id","Linear","layers","getLayer","Konva","getLayers","Util","error","anim","Animation","tween","i","_tweenFunc","_addListeners","attrs","tweens","_addAttr","onReset","onUpdate","end","start","diff","tweenId","n","len","trueEnd","trueStart","endRGBA","getAttr","_isArray","Math","max","length","_prepareArrayForTween","closed","indexOf","push","startRGBA","colorToRGBA","r","g","b","a","attr","newVal","round","setAttr","_this","onPlay","onReverse","onPause","stop","points","call","destroy","thisId","Node","to","params","BackEaseIn","c","d","s","BackEaseOut","BackEaseInOut","ElasticEaseIn","abs","PI","asin","pow","sin","ElasticEaseOut","ElasticEaseInOut","BounceEaseOut","BounceEaseIn","BounceEaseInOut","EaseIn","EaseOut","EaseInOut","StrongEaseIn","StrongEaseOut","StrongEaseInOut","__extends","extendStatics","setPrototypeOf","__proto__","Array","hasOwnProperty","__","constructor","create","Layer","Container_1","Factory_1","Canvas_1","Validators_1","Shape_1","HASH","BEFORE_DRAW","DRAW","INTERSECTION_OFFSETS","x","y","INTERSECTION_OFFSETS_LEN","_super","canvas","SceneCanvas","hitCanvas","HitCanvas","pixelRatio","_waitingForDraw","on","_checkVisibility","_setSmoothEnabled","createPNGStream","_canvas","getCanvas","getHitCanvas","getContext","clear","bounds","setZIndex","index","stage","getStage","content","removeChild","children","insertBefore","appendChild","moveToTop","moveUp","moved","moveDown","moveToBottom","remove","parentNode","_isInDocument","parent","setSize","_a","width","height","_validateAdd","child","type","getType","throw","_toKonvaCanvas","getWidth","getHeight","visible","style","display","_context","imageSmoothingEnabled","setWidth","warn","setHeight","batchDraw","requestAnimFrame","draw","getIntersection","pos","selector","isListening","isVisible","spiralSearchDistance","continueSearch","intersectionOffset","obj","_getIntersection","shape","findAncestor","antialiased","ratio","context","getImageData","data","p3","colorKey","_rgbToHex","shapes","drawScene","can","top","layer","_fire","clearBeforeDraw","Container","drawHit","enableHitGraph","hitGraphEnabled","disableHitGraph","setHitGraphEnabled","val","listening","getHitGraphEnabled","toggleHitCanvas","added","nodeType","_registerNode","Factory","addGetterSetter","getBooleanValidator","Collection","mapMethods","Threshold","imageData","level","threshold","getNumberValidator","afterSetFilter","Kaleidoscope","ToPolar","src","dst","opt","rad","srcPixels","dstPixels","xSize","ySize","xMid","polarCenterX","yMid","polarCenterY","rMax","sqrt","radius","theta","cos","rSize","tSize","conversion","floor","FromPolar","dx","dy","x1","y1","phaseShift","polarRotation","atan2","xoff","srcPos","dstPos","power","kaleidoscopePower","angle","kaleidoscopeAngle","offset","tempCanvas","createCanvasElement","scratchData","minSectionSize","ceil","sectionSize","xStart","xEnd","xDelta","Posterize","levels","scale","FastLayer","Layer_1","_injectGlobal","module","Stage_1","FastLayer_1","Group_1","DragAndDrop_1","Tween_1","Context_1","_assign","Transform","ids","names","Stage","stages","Group","DD","Shape","Context","Canvas","Pixelate","red","green","blue","alpha","xBinStart","xBinEnd","yBinStart","yBinEnd","xBin","yBin","pixelsInBin","pixelSize","nBinsX","nBinsY","getComponentValidator","getNumberArrayValidator","getFunctionValidator","getStringOrGradientValidator","getStringValidator","getNumberOrAutoValidator","getNumberOrArrayOfNumbersValidator","alphaComponent","RGBComponent","_formatValue","_isString","toString","_isBoolean","isUnminified","_isNumber","noOfElements","isNumber","isValidArray","isAuto","isString","isGradient","_isFunction","forEach","item","isBool","components","isObject","HSV","nPixels","v","saturation","h","hue","vsu","vsw","rr","rg","rb","gr","gg","gb","br","bg","bb","_removeName","_addName","_removeId","_addId","id","name","nodes","no","splice","ABSOLUTE_OPACITY","ALL_LISTENERS","ABSOLUTE_TRANSFORM","ABSOLUTE_SCALE","CANVAS","CHANGE","CHILDREN","KONVA","LISTENING","MOUSEENTER","MOUSELEAVE","NAME","SET","SHAPE","SPACE","STAGE","TRANSFORM","UPPER_STAGE","VISIBLE","TRANSFORM_CHANGE_STR","join","emptyChildren","eventListeners","_allEventListeners","_cache","Map","_attachedDepsListeners","_lastPos","_batchingTransformChange","_needClearTransformCache","_filterUpToDate","_isUnderCache","_dragEventId","_shouldFireChangeEvents","setAttrs","hasChildren","getChildren","_clearCache","get","delete","dirty","_getCache","privateGetter","cache","isTransform","invalid","set","_calculate","deps","getter","depsString","map","dep","_getCanvasCache","_clearSelfAndDescendantCache","forceEvent","isCached","each","clearCache","conf","rect","getClientRect","skipTransform","relativeTo","getParent","drawBorder","cachedSceneCanvas","cachedFilterCanvas","cachedHitCanvas","sceneContext","hitContext","isCache","save","translate","restore","beginPath","closePath","stroke","scene","filter","hit","has","Error","_transformedRect","minX","minY","maxX","maxY","trans","getAbsoluteTransform","point","transformed","min","_drawCachedSceneCanvas","_applyOpacity","_applyGlobalCompositeOperation","canvasCache","cacheCanvas","_getCachedSceneCanvas","drawImage","_drawCachedHitCanvas","filters","cachedCanvas","sceneCanvas","filterCanvas","filterContext","putImageData","e","message","evtStr","arguments","_delegate","apply","event","parts","baseEvent","events","split","off","callback","_off","dispatchEvent","evt","target","addEventListener","removeEventListener","stopNode","targets","findAncestors","cloneObject","currentTarget","isDragging","stopDrag","_dragElements","_remove","_clearCaches","_setChildrenIndices","subname","method","_capitalize","getAncestors","ancestors","getAttrs","_batchTransformChanges","_setAttr","_isListening","_isVisible","shouldDrawHit","skipDragCheck","layerUnderDrag","elem","dragStatus","dragSkip","hitOnDragEnabled","show","hide","getZIndex","getAbsoluteZIndex","depth","getDepth","addChildren","concat","toArray","getAbsolutePosition","haveCachedParent","absoluteMatrix","getMatrix","absoluteTransform","m","slice","getTranslation","setAbsolutePosition","origTrans","_clearTransform","it","_getAbsoluteTransform","copy","invert","_setTransform","rotation","scaleX","scaleY","offsetX","offsetY","skewX","skewY","move","change","changeX","changeY","_eachAncestorReverse","family","unshift","rotate","zIndex","getAbsoluteOpacity","_getAbsoluteOpacity","absOpacity","opacity","moveTo","newContainer","add","toObject","defaultValue","nonPlainObject","_isPlainObject","className","getClassName","_prepareToStringify","toJSON","JSON","stringify","includeSelf","res","_isMatch","ancestor","isAncestorOf","sel","selectorArr","replace","isValidSelector","charAt","hasName","_getStage","eventType","bubble","_fireAndBubble","at","transformsEnabled","multiply","getTransform","copyInto","getAbsoluteScale","transform","decompose","getAbsoluteRotation","_getTransform","_b","getAngle","skew","clone","allListeners","listener","box","toCanvas","toDataURL","mimeType","quality","url","toImage","_urlToImage","img","size","getSize","getDragDistance","dragDistance","evtName","evtListeners","_fireChangeEvent","oldVal","setId","oldId","setName","oldNames","newNames","addName","oldName","newName","fullName","removeName","skipFire","_setComponentAttr","component","compareShape","shouldStop","stopBubble","cancelBubble","_getProtoListeners","listeners","getPrototypeOf","newEvents","oldEvents","topListeners","selfListeners","_createDragElement","pointerId","ap","_getPointerById","_changedPointerPositions","startPointerPos","startDrag","bubbleEvent","_setDragPosition","newNodePos","dbf","dragBoundFunc","bounded","_endDragBefore","_endDragAfter","setDraggable","draggable","_dragChange","_listenDrag","_dragCleanup","shouldCheckButton","canDrag","dragButtons","hasDraggingChild","dragElement","isReady","container","parse","_createNode","_NODES_REGISTRY","Class","_attrsAffectingSize","addComponentsGetterSetter","backCompat","rotateDeg","setRotationDeg","getRotationDeg","Brighten","brightness","Sepia","Solarize","w","w4","releaseCapture","setPointerCapture","hasPointerCapture","createEvent","getCapturedShape","Captures","SUPPORT_POINTER_EVENTS","_global","PointerEvent","Invert","RGB","HSL","l","luminance","Mask","pixelAt","idata","idx","rgbDistance","p1","p2","rgbMean","pTab","backgroundMask","rgbv_no","rgbv_ne","rgbv_so","rgbv_se","thres","mean","mask","applyMask","erodeMask","sw","sh","weights","side","halfSide","maskResult","so","cy","cx","scy","scx","srcOff","wt","dilateMask","smoothEdgeMask","toCollection","arr","collection","_mapMethod","methodName","args","prot","tr","sx","sy","m11","m12","m21","m22","matrix","m0","m1","m2","m3","m4","m5","yt","xt","f","delta","result","acos","_getRotation","OBJECT_ARRAY","OBJECT_NUMBER","OBJECT_STRING","OBJECT_BOOLEAN","PI_OVER_DEG180","DEG180_OVER_PI","EMPTY_STRING","ZERO","KONVA_WARNING","KONVA_ERROR","RGB_PAREN","COLORS","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","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","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","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","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","transparent","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","RGB_REGEX","animQueue","_isElement","isNaN","isFinite","firstChar","toUpperCase","_sign","number","requestAnimationFrame","queue","cb","document","createElement","createImageElement","el","_simplifyArray","retArr","util","imageObj","glob","Image","onload","_hexToRgb","hex","bigint","parseInt","getRandomColor","randColor","random","def","getRGB","color","rgb","substring","substr","exec","_namedColorToRBA","_hex3ColorToRGBA","_hex6ColorToRGBA","_rgbColorToRGBA","_rgbaColorToRGBA","_hslColorToRGBA","toLowerCase","match","Number","test","hsl","t2","t3","t1","haveIntersection","r1","r2","retObj","cloneArray","_degToRad","deg","_radToDeg","radians","angleDeg","console","showWarnings","extend","Ctor","oldProto","__super__","super","_getControlPoints","x0","y0","x2","y2","d01","d12","fa","fb","p1x","p1y","p2x","p2y","_expandPoints","tension","cp","allPoints","_inRange","left","right","_getProjectionToSegment","x3","y3","dist","pd2","u","_getProjectionToLine","pt","line","isClosed","pc","MAX_VALUE","proj","px","py","pdist","startArray","endArray","temp","newStart","pr","desc","visitedByCircularReferenceRemoval","getOwnPropertyDescriptor","configurable","source","_getFirstPointerId","touches","changedTouches","identifier","RGBA","ia","Noise","amount","noise","half","Enhance","remap","fromValue","fromMin","fromMax","toMin","toMax","toValue","fromRange","toRange","nSubPixels","rMin","gMin","gMax","bMin","bMax","enhanceAmount","enhance","rMid","rGoalMax","rGoalMin","gMid","gGoalMax","gGoalMin","bMid","bGoalMax","bGoalMin","Blur","BlurStack","next","mul_table","shg_table","filterGaussBlurRGBA","yp","yi","yw","r_sum","g_sum","b_sum","a_sum","r_out_sum","g_out_sum","b_out_sum","a_out_sum","r_in_sum","g_in_sum","b_in_sum","a_in_sum","pg","pb","pa","rbs","pixels","div","widthMinus1","heightMinus1","radiusPlus1","sumFactor","stackStart","stackEnd","stack","stackIn","stackOut","mul_sum","shg_sum","blurRadius","Contrast","adjust","contrast","Grayscale","_parseUA","PI_OVER_180","detectBrowser","window","_detectIE","ua","msie","trident","rv","edge","userAgent","mobile","ieMobile","browser","version","isIE","global","WorkerGlobalScope","self","isBrowser","param","dblClickWindow","enableTrace","_pointerEventsEnabled","captureTouchEventsEnabled","listenClickTap","inDblClickWindow","isDragReady","UA","navigator","NodeClass","Emboss","strength","embossStrength","greyLevel","embossWhiteLevel","direction","embossDirection","blend","embossBlend","dirY","dirX","otherY","offsetYOther","otherX","offsetOther","dR","dG","dB","dif","absDif","absG","absB","Global_2","PointerEvents","STRING","PX","MOUSEOUT","MOUSEOVER","MOUSEMOVE","MOUSEDOWN","MOUSEUP","POINTERMOVE","POINTERDOWN","POINTERUP","POINTERCANCEL","LOSTPOINTERCAPTURE","CONTEXTMENU","CLICK","DBL_CLICK","TOUCHSTART","TOUCHEND","TAP","DBL_TAP","TOUCHMOVE","WHEEL","CONTENT_MOUSEOUT","CONTENT_MOUSEOVER","CONTENT_MOUSEMOVE","CONTENT_MOUSEDOWN","CONTENT_MOUSEUP","CONTENT_CONTEXTMENU","CONTENT_CLICK","CONTENT_DBL_CLICK","CONTENT_TOUCHSTART","CONTENT_TOUCHEND","CONTENT_DBL_TAP","CONTENT_TAP","CONTENT_TOUCHMOVE","CONTENT_WHEEL","RELATIVE","KONVA_CONTENT","UNDERSCORE","CONTAINER","MAX_LAYERS_NUMBER","EVENTS","eventsLength","addEvent","ctx","eventName","NO_POINTERS_MESSAGE","checkNoClip","clipFunc","clipWidth","clipHeight","_pointerPositions","_buildDOM","_bindContentEvents","_resizeDOM","isLayer","isFastLayer","valid","setContainer","getElementsByClassName","getElementById","parentElement","getPointerPosition","find","getPointersPositions","getContent","layerCanvas","getPixelRatio","bufferCanvas","bufferHitCanvas","_mouseenter","setPointersPositions","_mouseover","_mouseleave","targetShape","eventsEnabled","pointerPos","_mousemove","_touchmove","differentTarget","cancelable","preventDefault","_mousedown","_touchstart","justDragged","clickStartShape","_mouseup","_touchend","clickEndShape","fireDblClick","clearTimeout","dblTimeout","setTimeout","_contextmenu","triggeredOnShape","hasShape","tapStartShape","processedShapesIds","tapEndShape","tapTriggered","dblTapTriggered","_wheel","_pointerdown","_pointermove","_pointerup","_pointercancel","_lostpointercapture","contentPosition","_getContentPosition","touch","clientX","clientY","_setPointerPosition","getBoundingClientRect","clientWidth","clientHeight","innerHTML","position","userSelect","setAttribute","GET","validator","after","addGetter","addSetter","addOverloadedGetterSetter","overWriteSetter","capitalize","setter","ret","basicValidator","capitalizedAttr","addDeprecatedGetterSetter","methods","oldMethodName","newMethodName","oldGetter","oldSetter","deprecated","dummyContext","HAS_SHADOW","SHADOW_RGBA","patternImage","linearGradient","radialGradient","getDummyContext","_fillFunc","fill","_strokeFunc","_fillFuncHit","_strokeFuncHit","_clearHasShadowCache","_clearGetShadowRGBACache","_clearFillPatternCache","_clearLinearGradientCache","_clearRadialGradientCache","getSceneFunc","sceneFunc","getHitFunc","hitFunc","hasShadow","_hasShadow","shadowEnabled","shadowOpacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","_getFillPattern","__getFillPattern","fillPatternImage","pattern","createPattern","fillPatternRepeat","setTransform","fillPatternScaleX","fillPatternScaleY","_getLinearGradient","__getLinearGradient","colorStops","fillLinearGradientColorStops","fillLinearGradientStartPoint","fillLinearGradientEndPoint","grd","createLinearGradient","addColorStop","_getRadialGradient","__getRadialGradient","fillRadialGradientColorStops","fillRadialGradientStartPoint","fillRadialGradientEndPoint","createRadialGradient","fillRadialGradientStartRadius","fillRadialGradientEndRadius","getShadowRGBA","_getShadowRGBA","rgba","hasFill","fillEnabled","hasStroke","strokeEnabled","strokeWidth","strokeLinearGradientColorStops","hasHitStroke","hitStrokeWidth","intersects","_useBufferCanvas","forceFill","perfectDrawEnabled","isTransparent","strokeForShadow","shadowForStrokeEnabled","setStrokeHitEnabled","getStrokeHitEnabled","getSelfRect","_centroid","fillRect","applyStroke","skipStroke","fillAndStrokeWidth","fillAndStrokeHeight","applyShadow","skipShadow","preWidth","preHeight","roundingOffset","bufferContext","drawFunc","caching","skipBuffer","cachingSelf","_applyLineJoin","o","_applyShadow","log","selfCache","drawHitFromCache","alphaThreshold","hitImageData","hitData","rgbColorKey","hitWidth","hitHeight","dashArray","getDashArray","setDashArray","getDrawFunc","setDrawFunc","drawHitFunc","getDrawHitFunc","setDrawHitFunc","_CoreInternals_1","Arc_1","Arrow_1","Circle_1","Ellipse_1","Image_1","Label_1","Line_1","Path_1","Rect_1","RegularPolygon_1","Ring_1","Sprite_1","Star_1","Text_1","TextPath_1","Transformer_1","Wedge_1","Blur_1","Brighten_1","Contrast_1","Emboss_1","Enhance_1","Grayscale_1","HSL_1","HSV_1","Invert_1","Kaleidoscope_1","Mask_1","Noise_1","Pixelate_1","Posterize_1","RGB_1","RGBA_1","Sepia_1","Solarize_1","Threshold_1","Arc","Arrow","Circle","Ellipse","Label","Tag","Line","Path","Rect","RegularPolygon","Ring","Sprite","Star","Text","TextPath","Transformer","Wedge","Filters"],"mappings":"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BD,EAAOS,GAC1CE,EAAWZ,EAAOE,GAAiBF,EAAOU,IAEzC3hC,EAAI,EAAGA,EAAI6gC,EAAY7gC,GAAK,EAC7BuK,EAAKvK,EAAI,GAAKogC,EAAM71B,EAAKvK,EAAI,GAAI8gC,EAAMtzB,EAAM+zB,EAAUD,GACvD/2B,EAAKvK,EAAI,GAAKogC,EAAM71B,EAAKvK,EAAI,GAAI+gC,EAAMC,EAAMU,EAAUD,GACvDl3B,EAAKvK,EAAI,GAAKogC,EAAM71B,EAAKvK,EAAI,GAAIihC,EAAMC,EAAMW,EAAUD,KAG/DjmC,EAAQwkC,QAAUA,EAClBj7B,EAAU6G,QAAQC,gBAAgB/P,EAAO4G,KAAM,UAAW,EAAGuC,EAAaoH,qBAAsBtH,EAAU6G,QAAQU,iB,kCCrFlHhR,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQmmC,UAAO,EACf,IAAI58B,EAAY,EAAQ,QACpBjJ,EAAS,EAAQ,QACjBmJ,EAAe,EAAQ,QAC3B,SAAS28B,IACL3kC,KAAKwE,EAAI,EACTxE,KAAKyE,EAAI,EACTzE,KAAK0E,EAAI,EACT1E,KAAK2E,EAAI,EACT3E,KAAK4kC,KAAO,KAEhB,IAAIC,EAAY,CACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEAC,EAAY,CACZ,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEJ,SAASC,EAAoB91B,EAAWqB,GACpC,IACIhI,EAAGC,EAAG3F,EAAGvB,EAAG2jC,EAAIC,EAAIC,EAAIC,EAAOC,EAAOC,EAAOC,EAAOC,EAAWC,EAAWC,EAAWC,EAAWC,EAAUC,EAAUC,EAAUC,EAAU/D,EAAIgE,EAAIC,EAAIC,EAAIC,EADxJC,EAASl3B,EAAU9B,KAAMrC,EAAQmE,EAAUnE,MAAOC,EAASkE,EAAUlE,OAErEq7B,EAAM91B,EAASA,EAAS,EAAG+1B,EAAcv7B,EAAQ,EAAGw7B,EAAev7B,EAAS,EAAGw7B,EAAcj2B,EAAS,EAAGk2B,EAAaD,GAAeA,EAAc,GAAM,E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","file":"js/chunk-vendors~3c6053a0.341c5306.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Easings = exports.Tween = void 0;\nvar Util_1 = require(\"./Util\");\nvar Animation_1 = require(\"./Animation\");\nvar Node_1 = require(\"./Node\");\nvar Global_1 = require(\"./Global\");\nvar blacklist = {\n node: 1,\n duration: 1,\n easing: 1,\n onFinish: 1,\n yoyo: 1,\n}, PAUSED = 1, PLAYING = 2, REVERSING = 3, idCounter = 0, colorAttrs = ['fill', 'stroke', 'shadowColor'];\nvar TweenEngine = (function () {\n function TweenEngine(prop, propFunc, func, begin, finish, duration, yoyo) {\n this.prop = prop;\n this.propFunc = propFunc;\n this.begin = begin;\n this._pos = begin;\n this.duration = duration;\n this._change = 0;\n this.prevPos = 0;\n this.yoyo = yoyo;\n this._time = 0;\n this._position = 0;\n this._startTime = 0;\n this._finish = 0;\n this.func = func;\n this._change = finish - this.begin;\n this.pause();\n }\n TweenEngine.prototype.fire = function (str) {\n var handler = this[str];\n if (handler) {\n handler();\n }\n };\n TweenEngine.prototype.setTime = function (t) {\n if (t > this.duration) {\n if (this.yoyo) {\n this._time = this.duration;\n this.reverse();\n }\n else {\n this.finish();\n }\n }\n else if (t < 0) {\n if (this.yoyo) {\n this._time = 0;\n this.play();\n }\n else {\n this.reset();\n }\n }\n else {\n this._time = t;\n this.update();\n }\n };\n TweenEngine.prototype.getTime = function () {\n return this._time;\n };\n TweenEngine.prototype.setPosition = function (p) {\n this.prevPos = this._pos;\n this.propFunc(p);\n this._pos = p;\n };\n TweenEngine.prototype.getPosition = function (t) {\n if (t === undefined) {\n t = this._time;\n }\n return this.func(t, this.begin, this._change, this.duration);\n };\n TweenEngine.prototype.play = function () {\n this.state = PLAYING;\n this._startTime = this.getTimer() - this._time;\n this.onEnterFrame();\n this.fire('onPlay');\n };\n TweenEngine.prototype.reverse = function () {\n this.state = REVERSING;\n this._time = this.duration - this._time;\n this._startTime = this.getTimer() - this._time;\n this.onEnterFrame();\n this.fire('onReverse');\n };\n TweenEngine.prototype.seek = function (t) {\n this.pause();\n this._time = t;\n this.update();\n this.fire('onSeek');\n };\n TweenEngine.prototype.reset = function () {\n this.pause();\n this._time = 0;\n this.update();\n this.fire('onReset');\n };\n TweenEngine.prototype.finish = function () {\n this.pause();\n this._time = this.duration;\n this.update();\n this.fire('onFinish');\n };\n TweenEngine.prototype.update = function () {\n this.setPosition(this.getPosition(this._time));\n this.fire('onUpdate');\n };\n TweenEngine.prototype.onEnterFrame = function () {\n var t = this.getTimer() - this._startTime;\n if (this.state === PLAYING) {\n this.setTime(t);\n }\n else if (this.state === REVERSING) {\n this.setTime(this.duration - t);\n }\n };\n TweenEngine.prototype.pause = function () {\n this.state = PAUSED;\n this.fire('onPause');\n };\n TweenEngine.prototype.getTimer = function () {\n return new Date().getTime();\n };\n return TweenEngine;\n}());\nvar Tween = (function () {\n function Tween(config) {\n var that = this, node = config.node, nodeId = node._id, duration, easing = config.easing || exports.Easings.Linear, yoyo = !!config.yoyo, key;\n if (typeof config.duration === 'undefined') {\n duration = 0.3;\n }\n else if (config.duration === 0) {\n duration = 0.001;\n }\n else {\n duration = config.duration;\n }\n this.node = node;\n this._id = idCounter++;\n var layers = node.getLayer() ||\n (node instanceof Global_1.Konva['Stage'] ? node.getLayers() : null);\n if (!layers) {\n Util_1.Util.error('Tween constructor have `node` that is not in a layer. Please add node into layer first.');\n }\n this.anim = new Animation_1.Animation(function () {\n that.tween.onEnterFrame();\n }, layers);\n this.tween = new TweenEngine(key, function (i) {\n that._tweenFunc(i);\n }, easing, 0, 1, duration * 1000, yoyo);\n this._addListeners();\n if (!Tween.attrs[nodeId]) {\n Tween.attrs[nodeId] = {};\n }\n if (!Tween.attrs[nodeId][this._id]) {\n Tween.attrs[nodeId][this._id] = {};\n }\n if (!Tween.tweens[nodeId]) {\n Tween.tweens[nodeId] = {};\n }\n for (key in config) {\n if (blacklist[key] === undefined) {\n this._addAttr(key, config[key]);\n }\n }\n this.reset();\n this.onFinish = config.onFinish;\n this.onReset = config.onReset;\n this.onUpdate = config.onUpdate;\n }\n Tween.prototype._addAttr = function (key, end) {\n var node = this.node, nodeId = node._id, start, diff, tweenId, n, len, trueEnd, trueStart, endRGBA;\n tweenId = Tween.tweens[nodeId][key];\n if (tweenId) {\n delete Tween.attrs[nodeId][tweenId][key];\n }\n start = node.getAttr(key);\n if (Util_1.Util._isArray(end)) {\n diff = [];\n len = Math.max(end.length, start.length);\n if (key === 'points' && end.length !== start.length) {\n if (end.length > start.length) {\n trueStart = start;\n start = Util_1.Util._prepareArrayForTween(start, end, node.closed());\n }\n else {\n trueEnd = end;\n end = Util_1.Util._prepareArrayForTween(end, start, node.closed());\n }\n }\n if (key.indexOf('fill') === 0) {\n for (n = 0; n < len; n++) {\n if (n % 2 === 0) {\n diff.push(end[n] - start[n]);\n }\n else {\n var startRGBA = Util_1.Util.colorToRGBA(start[n]);\n endRGBA = Util_1.Util.colorToRGBA(end[n]);\n start[n] = startRGBA;\n diff.push({\n r: endRGBA.r - startRGBA.r,\n g: endRGBA.g - startRGBA.g,\n b: endRGBA.b - startRGBA.b,\n a: endRGBA.a - startRGBA.a,\n });\n }\n }\n }\n else {\n for (n = 0; n < len; n++) {\n diff.push(end[n] - start[n]);\n }\n }\n }\n else if (colorAttrs.indexOf(key) !== -1) {\n start = Util_1.Util.colorToRGBA(start);\n endRGBA = Util_1.Util.colorToRGBA(end);\n diff = {\n r: endRGBA.r - start.r,\n g: endRGBA.g - start.g,\n b: endRGBA.b - start.b,\n a: endRGBA.a - start.a,\n };\n }\n else {\n diff = end - start;\n }\n Tween.attrs[nodeId][this._id][key] = {\n start: start,\n diff: diff,\n end: end,\n trueEnd: trueEnd,\n trueStart: trueStart,\n };\n Tween.tweens[nodeId][key] = this._id;\n };\n Tween.prototype._tweenFunc = function (i) {\n var node = this.node, attrs = Tween.attrs[node._id][this._id], key, attr, start, diff, newVal, n, len, end;\n for (key in attrs) {\n attr = attrs[key];\n start = attr.start;\n diff = attr.diff;\n end = attr.end;\n if (Util_1.Util._isArray(start)) {\n newVal = [];\n len = Math.max(start.length, end.length);\n if (key.indexOf('fill') === 0) {\n for (n = 0; n < len; n++) {\n if (n % 2 === 0) {\n newVal.push((start[n] || 0) + diff[n] * i);\n }\n else {\n newVal.push('rgba(' +\n Math.round(start[n].r + diff[n].r * i) +\n ',' +\n Math.round(start[n].g + diff[n].g * i) +\n ',' +\n Math.round(start[n].b + diff[n].b * i) +\n ',' +\n (start[n].a + diff[n].a * i) +\n ')');\n }\n }\n }\n else {\n for (n = 0; n < len; n++) {\n newVal.push((start[n] || 0) + diff[n] * i);\n }\n }\n }\n else if (colorAttrs.indexOf(key) !== -1) {\n newVal =\n 'rgba(' +\n Math.round(start.r + diff.r * i) +\n ',' +\n Math.round(start.g + diff.g * i) +\n ',' +\n Math.round(start.b + diff.b * i) +\n ',' +\n (start.a + diff.a * i) +\n ')';\n }\n else {\n newVal = start + diff * i;\n }\n node.setAttr(key, newVal);\n }\n };\n Tween.prototype._addListeners = function () {\n var _this = this;\n this.tween.onPlay = function () {\n _this.anim.start();\n };\n this.tween.onReverse = function () {\n _this.anim.start();\n };\n this.tween.onPause = function () {\n _this.anim.stop();\n };\n this.tween.onFinish = function () {\n var node = _this.node;\n var attrs = Tween.attrs[node._id][_this._id];\n if (attrs.points && attrs.points.trueEnd) {\n node.setAttr('points', attrs.points.trueEnd);\n }\n if (_this.onFinish) {\n _this.onFinish.call(_this);\n }\n };\n this.tween.onReset = function () {\n var node = _this.node;\n var attrs = Tween.attrs[node._id][_this._id];\n if (attrs.points && attrs.points.trueStart) {\n node.points(attrs.points.trueStart);\n }\n if (_this.onReset) {\n _this.onReset();\n }\n };\n this.tween.onUpdate = function () {\n if (_this.onUpdate) {\n _this.onUpdate.call(_this);\n }\n };\n };\n Tween.prototype.play = function () {\n this.tween.play();\n return this;\n };\n Tween.prototype.reverse = function () {\n this.tween.reverse();\n return this;\n };\n Tween.prototype.reset = function () {\n this.tween.reset();\n return this;\n };\n Tween.prototype.seek = function (t) {\n this.tween.seek(t * 1000);\n return this;\n };\n Tween.prototype.pause = function () {\n this.tween.pause();\n return this;\n };\n Tween.prototype.finish = function () {\n this.tween.finish();\n return this;\n };\n Tween.prototype.destroy = function () {\n var nodeId = this.node._id, thisId = this._id, attrs = Tween.tweens[nodeId], key;\n this.pause();\n for (key in attrs) {\n delete Tween.tweens[nodeId][key];\n }\n delete Tween.attrs[nodeId][thisId];\n };\n Tween.attrs = {};\n Tween.tweens = {};\n return Tween;\n}());\nexports.Tween = Tween;\nNode_1.Node.prototype.to = function (params) {\n var onFinish = params.onFinish;\n params.node = this;\n params.onFinish = function () {\n this.destroy();\n if (onFinish) {\n onFinish();\n }\n };\n var tween = new Tween(params);\n tween.play();\n};\nexports.Easings = {\n BackEaseIn: function (t, b, c, d) {\n var s = 1.70158;\n return c * (t /= d) * t * ((s + 1) * t - s) + b;\n },\n BackEaseOut: function (t, b, c, d) {\n var s = 1.70158;\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n },\n BackEaseInOut: function (t, b, c, d) {\n var s = 1.70158;\n if ((t /= d / 2) < 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 ElasticEaseIn: function (t, b, c, d, a, p) {\n var s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n return (-(a *\n Math.pow(2, 10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p)) + b);\n },\n ElasticEaseOut: function (t, b, c, d, a, p) {\n var s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n return (a * Math.pow(2, -10 * t) * Math.sin(((t * d - s) * (2 * Math.PI)) / p) +\n c +\n b);\n },\n ElasticEaseInOut: function (t, b, c, d, a, p) {\n var s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d / 2) === 2) {\n return b + c;\n }\n if (!p) {\n p = d * (0.3 * 1.5);\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n if (t < 1) {\n return (-0.5 *\n (a *\n Math.pow(2, 10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p)) +\n b);\n }\n return (a *\n Math.pow(2, -10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p) *\n 0.5 +\n c +\n b);\n },\n BounceEaseOut: function (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 BounceEaseIn: function (t, b, c, d) {\n return c - exports.Easings.BounceEaseOut(d - t, 0, c, d) + b;\n },\n BounceEaseInOut: function (t, b, c, d) {\n if (t < d / 2) {\n return exports.Easings.BounceEaseIn(t * 2, 0, c, d) * 0.5 + b;\n }\n else {\n return exports.Easings.BounceEaseOut(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;\n }\n },\n EaseIn: function (t, b, c, d) {\n return c * (t /= d) * t + b;\n },\n EaseOut: function (t, b, c, d) {\n return -c * (t /= d) * (t - 2) + b;\n },\n EaseInOut: function (t, b, c, d) {\n if ((t /= d / 2) < 1) {\n return (c / 2) * t * t + b;\n }\n return (-c / 2) * (--t * (t - 2) - 1) + b;\n },\n StrongEaseIn: function (t, b, c, d) {\n return c * (t /= d) * t * t * t * t + b;\n },\n StrongEaseOut: function (t, b, c, d) {\n return c * ((t = t / d - 1) * t * t * t * t + 1) + b;\n },\n StrongEaseInOut: function (t, b, c, d) {\n if ((t /= d / 2) < 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 Linear: function (t, b, c, d) {\n return (c * t) / d + b;\n },\n};\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Layer = void 0;\nvar Util_1 = require(\"./Util\");\nvar Container_1 = require(\"./Container\");\nvar Node_1 = require(\"./Node\");\nvar Factory_1 = require(\"./Factory\");\nvar Canvas_1 = require(\"./Canvas\");\nvar Validators_1 = require(\"./Validators\");\nvar Shape_1 = require(\"./Shape\");\nvar Global_1 = require(\"./Global\");\nvar HASH = '#', BEFORE_DRAW = 'beforeDraw', DRAW = 'draw', INTERSECTION_OFFSETS = [\n { x: 0, y: 0 },\n { x: -1, y: -1 },\n { x: 1, y: -1 },\n { x: 1, y: 1 },\n { x: -1, y: 1 },\n], INTERSECTION_OFFSETS_LEN = INTERSECTION_OFFSETS.length;\nvar Layer = (function (_super) {\n __extends(Layer, _super);\n function Layer(config) {\n var _this = _super.call(this, config) || this;\n _this.canvas = new Canvas_1.SceneCanvas();\n _this.hitCanvas = new Canvas_1.HitCanvas({\n pixelRatio: 1,\n });\n _this._waitingForDraw = false;\n _this.on('visibleChange.konva', _this._checkVisibility);\n _this._checkVisibility();\n _this.on('imageSmoothingEnabledChange.konva', _this._setSmoothEnabled);\n _this._setSmoothEnabled();\n return _this;\n }\n Layer.prototype.createPNGStream = function () {\n var c = this.canvas._canvas;\n return c.createPNGStream();\n };\n Layer.prototype.getCanvas = function () {\n return this.canvas;\n };\n Layer.prototype.getHitCanvas = function () {\n return this.hitCanvas;\n };\n Layer.prototype.getContext = function () {\n return this.getCanvas().getContext();\n };\n Layer.prototype.clear = function (bounds) {\n this.getContext().clear(bounds);\n this.getHitCanvas().getContext().clear(bounds);\n return this;\n };\n Layer.prototype.setZIndex = function (index) {\n _super.prototype.setZIndex.call(this, index);\n var stage = this.getStage();\n if (stage) {\n stage.content.removeChild(this.getCanvas()._canvas);\n if (index < stage.children.length - 1) {\n stage.content.insertBefore(this.getCanvas()._canvas, stage.children[index + 1].getCanvas()._canvas);\n }\n else {\n stage.content.appendChild(this.getCanvas()._canvas);\n }\n }\n return this;\n };\n Layer.prototype.moveToTop = function () {\n Node_1.Node.prototype.moveToTop.call(this);\n var stage = this.getStage();\n if (stage) {\n stage.content.removeChild(this.getCanvas()._canvas);\n stage.content.appendChild(this.getCanvas()._canvas);\n }\n return true;\n };\n Layer.prototype.moveUp = function () {\n var moved = Node_1.Node.prototype.moveUp.call(this);\n if (!moved) {\n return false;\n }\n var stage = this.getStage();\n if (!stage) {\n return false;\n }\n stage.content.removeChild(this.getCanvas()._canvas);\n if (this.index < stage.children.length - 1) {\n stage.content.insertBefore(this.getCanvas()._canvas, stage.children[this.index + 1].getCanvas()._canvas);\n }\n else {\n stage.content.appendChild(this.getCanvas()._canvas);\n }\n return true;\n };\n Layer.prototype.moveDown = function () {\n if (Node_1.Node.prototype.moveDown.call(this)) {\n var stage = this.getStage();\n if (stage) {\n var children = stage.children;\n stage.content.removeChild(this.getCanvas()._canvas);\n stage.content.insertBefore(this.getCanvas()._canvas, children[this.index + 1].getCanvas()._canvas);\n }\n return true;\n }\n return false;\n };\n Layer.prototype.moveToBottom = function () {\n if (Node_1.Node.prototype.moveToBottom.call(this)) {\n var stage = this.getStage();\n if (stage) {\n var children = stage.children;\n stage.content.removeChild(this.getCanvas()._canvas);\n stage.content.insertBefore(this.getCanvas()._canvas, children[1].getCanvas()._canvas);\n }\n return true;\n }\n return false;\n };\n Layer.prototype.getLayer = function () {\n return this;\n };\n Layer.prototype.remove = function () {\n var _canvas = this.getCanvas()._canvas;\n Node_1.Node.prototype.remove.call(this);\n if (_canvas && _canvas.parentNode && Util_1.Util._isInDocument(_canvas)) {\n _canvas.parentNode.removeChild(_canvas);\n }\n return this;\n };\n Layer.prototype.getStage = function () {\n return this.parent;\n };\n Layer.prototype.setSize = function (_a) {\n var width = _a.width, height = _a.height;\n this.canvas.setSize(width, height);\n this.hitCanvas.setSize(width, height);\n this._setSmoothEnabled();\n return this;\n };\n Layer.prototype._validateAdd = function (child) {\n var type = child.getType();\n if (type !== 'Group' && type !== 'Shape') {\n Util_1.Util.throw('You may only add groups and shapes to a layer.');\n }\n };\n Layer.prototype._toKonvaCanvas = function (config) {\n config = config || {};\n config.width = config.width || this.getWidth();\n config.height = config.height || this.getHeight();\n config.x = config.x !== undefined ? config.x : this.x();\n config.y = config.y !== undefined ? config.y : this.y();\n return Node_1.Node.prototype._toKonvaCanvas.call(this, config);\n };\n Layer.prototype._checkVisibility = function () {\n var visible = this.visible();\n if (visible) {\n this.canvas._canvas.style.display = 'block';\n }\n else {\n this.canvas._canvas.style.display = 'none';\n }\n };\n Layer.prototype._setSmoothEnabled = function () {\n this.getContext()._context.imageSmoothingEnabled = this.imageSmoothingEnabled();\n };\n Layer.prototype.getWidth = function () {\n if (this.parent) {\n return this.parent.width();\n }\n };\n Layer.prototype.setWidth = function () {\n Util_1.Util.warn('Can not change width of layer. Use \"stage.width(value)\" function instead.');\n };\n Layer.prototype.getHeight = function () {\n if (this.parent) {\n return this.parent.height();\n }\n };\n Layer.prototype.setHeight = function () {\n Util_1.Util.warn('Can not change height of layer. Use \"stage.height(value)\" function instead.');\n };\n Layer.prototype.batchDraw = function () {\n var _this = this;\n if (!this._waitingForDraw) {\n this._waitingForDraw = true;\n Util_1.Util.requestAnimFrame(function () {\n _this.draw();\n _this._waitingForDraw = false;\n });\n }\n return this;\n };\n Layer.prototype.getIntersection = function (pos, selector) {\n if (!this.isListening() || !this.isVisible()) {\n return null;\n }\n var spiralSearchDistance = 1;\n var continueSearch = false;\n while (true) {\n for (var i = 0; i < INTERSECTION_OFFSETS_LEN; i++) {\n var intersectionOffset = INTERSECTION_OFFSETS[i];\n var obj = this._getIntersection({\n x: pos.x + intersectionOffset.x * spiralSearchDistance,\n y: pos.y + intersectionOffset.y * spiralSearchDistance,\n });\n var shape = obj.shape;\n if (shape && selector) {\n return shape.findAncestor(selector, true);\n }\n else if (shape) {\n return shape;\n }\n continueSearch = !!obj.antialiased;\n if (!obj.antialiased) {\n break;\n }\n }\n if (continueSearch) {\n spiralSearchDistance += 1;\n }\n else {\n return null;\n }\n }\n };\n Layer.prototype._getIntersection = function (pos) {\n var ratio = this.hitCanvas.pixelRatio;\n var p = this.hitCanvas.context.getImageData(Math.round(pos.x * ratio), Math.round(pos.y * ratio), 1, 1).data;\n var p3 = p[3];\n if (p3 === 255) {\n var colorKey = Util_1.Util._rgbToHex(p[0], p[1], p[2]);\n var shape = Shape_1.shapes[HASH + colorKey];\n if (shape) {\n return {\n shape: shape,\n };\n }\n return {\n antialiased: true,\n };\n }\n else if (p3 > 0) {\n return {\n antialiased: true,\n };\n }\n return {};\n };\n Layer.prototype.drawScene = function (can, top) {\n var layer = this.getLayer(), canvas = can || (layer && layer.getCanvas());\n this._fire(BEFORE_DRAW, {\n node: this,\n });\n if (this.clearBeforeDraw()) {\n canvas.getContext().clear();\n }\n Container_1.Container.prototype.drawScene.call(this, canvas, top);\n this._fire(DRAW, {\n node: this,\n });\n return this;\n };\n Layer.prototype.drawHit = function (can, top) {\n var layer = this.getLayer(), canvas = can || (layer && layer.hitCanvas);\n if (layer && layer.clearBeforeDraw()) {\n layer.getHitCanvas().getContext().clear();\n }\n Container_1.Container.prototype.drawHit.call(this, canvas, top);\n return this;\n };\n Layer.prototype.enableHitGraph = function () {\n this.hitGraphEnabled(true);\n return this;\n };\n Layer.prototype.disableHitGraph = function () {\n this.hitGraphEnabled(false);\n return this;\n };\n Layer.prototype.setHitGraphEnabled = function (val) {\n Util_1.Util.warn('hitGraphEnabled method is deprecated. Please use layer.listening() instead.');\n this.listening(val);\n };\n Layer.prototype.getHitGraphEnabled = function (val) {\n Util_1.Util.warn('hitGraphEnabled method is deprecated. Please use layer.listening() instead.');\n return this.listening();\n };\n Layer.prototype.toggleHitCanvas = function () {\n if (!this.parent) {\n return;\n }\n var parent = this.parent;\n var added = !!this.hitCanvas._canvas.parentNode;\n if (added) {\n parent.content.removeChild(this.hitCanvas._canvas);\n }\n else {\n parent.content.appendChild(this.hitCanvas._canvas);\n }\n };\n return Layer;\n}(Container_1.Container));\nexports.Layer = Layer;\nLayer.prototype.nodeType = 'Layer';\nGlobal_1._registerNode(Layer);\nFactory_1.Factory.addGetterSetter(Layer, 'imageSmoothingEnabled', true);\nFactory_1.Factory.addGetterSetter(Layer, 'clearBeforeDraw', true);\nFactory_1.Factory.addGetterSetter(Layer, 'hitGraphEnabled', true, Validators_1.getBooleanValidator());\nUtil_1.Collection.mapMethods(Layer);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Threshold = void 0;\nvar Factory_1 = require(\"../Factory\");\nvar Node_1 = require(\"../Node\");\nvar Validators_1 = require(\"../Validators\");\nvar Threshold = function (imageData) {\n var level = this.threshold() * 255, data = imageData.data, len = data.length, i;\n for (i = 0; i < len; i += 1) {\n data[i] = data[i] < level ? 0 : 255;\n }\n};\nexports.Threshold = Threshold;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'threshold', 0.5, Validators_1.getNumberValidator(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Kaleidoscope = void 0;\nvar Factory_1 = require(\"../Factory\");\nvar Node_1 = require(\"../Node\");\nvar Util_1 = require(\"../Util\");\nvar Validators_1 = require(\"../Validators\");\nvar ToPolar = function (src, dst, opt) {\n var srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2, i, x, y, r = 0, g = 0, b = 0, a = 0;\n var rad, rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n x = xSize - xMid;\n y = ySize - yMid;\n rad = Math.sqrt(x * x + y * y);\n rMax = rad > rMax ? rad : rMax;\n var rSize = ySize, tSize = xSize, radius, theta;\n var conversion = ((360 / tSize) * Math.PI) / 180, sin, cos;\n for (theta = 0; theta < tSize; theta += 1) {\n sin = Math.sin(theta * conversion);\n cos = Math.cos(theta * conversion);\n for (radius = 0; radius < rSize; radius += 1) {\n x = Math.floor(xMid + ((rMax * radius) / rSize) * cos);\n y = Math.floor(yMid + ((rMax * radius) / rSize) * sin);\n i = (y * xSize + x) * 4;\n r = srcPixels[i + 0];\n g = srcPixels[i + 1];\n b = srcPixels[i + 2];\n a = srcPixels[i + 3];\n i = (theta + radius * xSize) * 4;\n dstPixels[i + 0] = r;\n dstPixels[i + 1] = g;\n dstPixels[i + 2] = b;\n dstPixels[i + 3] = a;\n }\n }\n};\nvar FromPolar = function (src, dst, opt) {\n var srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2, i, x, y, dx, dy, r = 0, g = 0, b = 0, a = 0;\n var rad, rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n x = xSize - xMid;\n y = ySize - yMid;\n rad = Math.sqrt(x * x + y * y);\n rMax = rad > rMax ? rad : rMax;\n var rSize = ySize, tSize = xSize, radius, theta, phaseShift = opt.polarRotation || 0;\n var x1, y1;\n for (x = 0; x < xSize; x += 1) {\n for (y = 0; y < ySize; y += 1) {\n dx = x - xMid;\n dy = y - yMid;\n radius = (Math.sqrt(dx * dx + dy * dy) * rSize) / rMax;\n theta = ((Math.atan2(dy, dx) * 180) / Math.PI + 360 + phaseShift) % 360;\n theta = (theta * tSize) / 360;\n x1 = Math.floor(theta);\n y1 = Math.floor(radius);\n i = (y1 * xSize + x1) * 4;\n r = srcPixels[i + 0];\n g = srcPixels[i + 1];\n b = srcPixels[i + 2];\n a = srcPixels[i + 3];\n i = (y * xSize + x) * 4;\n dstPixels[i + 0] = r;\n dstPixels[i + 1] = g;\n dstPixels[i + 2] = b;\n dstPixels[i + 3] = a;\n }\n }\n};\nvar Kaleidoscope = function (imageData) {\n var xSize = imageData.width, ySize = imageData.height;\n var x, y, xoff, i, r, g, b, a, srcPos, dstPos;\n var power = Math.round(this.kaleidoscopePower());\n var angle = Math.round(this.kaleidoscopeAngle());\n var offset = Math.floor((xSize * (angle % 360)) / 360);\n if (power < 1) {\n return;\n }\n var tempCanvas = Util_1.Util.createCanvasElement();\n tempCanvas.width = xSize;\n tempCanvas.height = ySize;\n var scratchData = tempCanvas\n .getContext('2d')\n .getImageData(0, 0, xSize, ySize);\n ToPolar(imageData, scratchData, {\n polarCenterX: xSize / 2,\n polarCenterY: ySize / 2\n });\n var minSectionSize = xSize / Math.pow(2, power);\n while (minSectionSize <= 8) {\n minSectionSize = minSectionSize * 2;\n power -= 1;\n }\n minSectionSize = Math.ceil(minSectionSize);\n var sectionSize = minSectionSize;\n var xStart = 0, xEnd = sectionSize, xDelta = 1;\n if (offset + minSectionSize > xSize) {\n xStart = sectionSize;\n xEnd = 0;\n xDelta = -1;\n }\n for (y = 0; y < ySize; y += 1) {\n for (x = xStart; x !== xEnd; x += xDelta) {\n xoff = Math.round(x + offset) % xSize;\n srcPos = (xSize * y + xoff) * 4;\n r = scratchData.data[srcPos + 0];\n g = scratchData.data[srcPos + 1];\n b = scratchData.data[srcPos + 2];\n a = scratchData.data[srcPos + 3];\n dstPos = (xSize * y + x) * 4;\n scratchData.data[dstPos + 0] = r;\n scratchData.data[dstPos + 1] = g;\n scratchData.data[dstPos + 2] = b;\n scratchData.data[dstPos + 3] = a;\n }\n }\n for (y = 0; y < ySize; y += 1) {\n sectionSize = Math.floor(minSectionSize);\n for (i = 0; i < power; i += 1) {\n for (x = 0; x < sectionSize + 1; x += 1) {\n srcPos = (xSize * y + x) * 4;\n r = scratchData.data[srcPos + 0];\n g = scratchData.data[srcPos + 1];\n b = scratchData.data[srcPos + 2];\n a = scratchData.data[srcPos + 3];\n dstPos = (xSize * y + sectionSize * 2 - x - 1) * 4;\n scratchData.data[dstPos + 0] = r;\n scratchData.data[dstPos + 1] = g;\n scratchData.data[dstPos + 2] = b;\n scratchData.data[dstPos + 3] = a;\n }\n sectionSize *= 2;\n }\n }\n FromPolar(scratchData, imageData, { polarRotation: 0 });\n};\nexports.Kaleidoscope = Kaleidoscope;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'kaleidoscopePower', 2, Validators_1.getNumberValidator(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'kaleidoscopeAngle', 0, Validators_1.getNumberValidator(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Posterize = void 0;\nvar Factory_1 = require(\"../Factory\");\nvar Node_1 = require(\"../Node\");\nvar Validators_1 = require(\"../Validators\");\nvar Posterize = function (imageData) {\n var levels = Math.round(this.levels() * 254) + 1, data = imageData.data, len = data.length, scale = 255 / levels, i;\n for (i = 0; i < len; i += 1) {\n data[i] = Math.floor(data[i] / scale) * scale;\n }\n};\nexports.Posterize = Posterize;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'levels', 0.5, Validators_1.getNumberValidator(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FastLayer = void 0;\nvar Util_1 = require(\"./Util\");\nvar Layer_1 = require(\"./Layer\");\nvar Global_1 = require(\"./Global\");\nvar FastLayer = (function (_super) {\n __extends(FastLayer, _super);\n function FastLayer(attrs) {\n var _this = _super.call(this, attrs) || this;\n _this.listening(false);\n Util_1.Util.warn('Konva.Fast layer is deprecated. Please use \"new Konva.Layer({ listening: false })\" instead.');\n return _this;\n }\n return FastLayer;\n}(Layer_1.Layer));\nexports.FastLayer = FastLayer;\nFastLayer.prototype.nodeType = 'FastLayer';\nGlobal_1._registerNode(FastLayer);\nUtil_1.Collection.mapMethods(FastLayer);\n","var Konva = require('./_FullInternals').Konva;\nKonva._injectGlobal(Konva);\nexports['default'] = Konva;\nmodule.exports = exports['default'];\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Konva = void 0;\nvar Global_1 = require(\"./Global\");\nvar Util_1 = require(\"./Util\");\nvar Node_1 = require(\"./Node\");\nvar Container_1 = require(\"./Container\");\nvar Stage_1 = require(\"./Stage\");\nvar Layer_1 = require(\"./Layer\");\nvar FastLayer_1 = require(\"./FastLayer\");\nvar Group_1 = require(\"./Group\");\nvar DragAndDrop_1 = require(\"./DragAndDrop\");\nvar Shape_1 = require(\"./Shape\");\nvar Animation_1 = require(\"./Animation\");\nvar Tween_1 = require(\"./Tween\");\nvar Context_1 = require(\"./Context\");\nvar Canvas_1 = require(\"./Canvas\");\nexports.Konva = Util_1.Util._assign(Global_1.Konva, {\n Collection: Util_1.Collection,\n Util: Util_1.Util,\n Transform: Util_1.Transform,\n Node: Node_1.Node,\n ids: Node_1.ids,\n names: Node_1.names,\n Container: Container_1.Container,\n Stage: Stage_1.Stage,\n stages: Stage_1.stages,\n Layer: Layer_1.Layer,\n FastLayer: FastLayer_1.FastLayer,\n Group: Group_1.Group,\n DD: DragAndDrop_1.DD,\n Shape: Shape_1.Shape,\n shapes: Shape_1.shapes,\n Animation: Animation_1.Animation,\n Tween: Tween_1.Tween,\n Easings: Tween_1.Easings,\n Context: Context_1.Context,\n Canvas: Canvas_1.Canvas\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Pixelate = void 0;\nvar Factory_1 = require(\"../Factory\");\nvar Util_1 = require(\"../Util\");\nvar Node_1 = require(\"../Node\");\nvar Validators_1 = require(\"../Validators\");\nvar Pixelate = function (imageData) {\n var pixelSize = Math.ceil(this.pixelSize()), width = imageData.width, height = imageData.height, x, y, i, red, green, blue, alpha, nBinsX = Math.ceil(width / pixelSize), nBinsY = Math.ceil(height / pixelSize), xBinStart, xBinEnd, yBinStart, yBinEnd, xBin, yBin, pixelsInBin, data = imageData.data;\n if (pixelSize <= 0) {\n Util_1.Util.error('pixelSize value can not be <= 0');\n return;\n }\n for (xBin = 0; xBin < nBinsX; xBin += 1) {\n for (yBin = 0; yBin < nBinsY; yBin += 1) {\n red = 0;\n green = 0;\n blue = 0;\n alpha = 0;\n xBinStart = xBin * pixelSize;\n xBinEnd = xBinStart + pixelSize;\n yBinStart = yBin * pixelSize;\n yBinEnd = yBinStart + pixelSize;\n pixelsInBin = 0;\n for (x = xBinStart; x < xBinEnd; x += 1) {\n if (x >= width) {\n continue;\n }\n for (y = yBinStart; y < yBinEnd; y += 1) {\n if (y >= height) {\n continue;\n }\n i = (width * y + x) * 4;\n red += data[i + 0];\n green += data[i + 1];\n blue += data[i + 2];\n alpha += data[i + 3];\n pixelsInBin += 1;\n }\n }\n red = red / pixelsInBin;\n green = green / pixelsInBin;\n blue = blue / pixelsInBin;\n alpha = alpha / pixelsInBin;\n for (x = xBinStart; x < xBinEnd; x += 1) {\n if (x >= width) {\n continue;\n }\n for (y = yBinStart; y < yBinEnd; y += 1) {\n if (y >= height) {\n continue;\n }\n i = (width * y + x) * 4;\n data[i + 0] = red;\n data[i + 1] = green;\n data[i + 2] = blue;\n data[i + 3] = alpha;\n }\n }\n }\n }\n};\nexports.Pixelate = Pixelate;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'pixelSize', 8, Validators_1.getNumberValidator(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getComponentValidator = exports.getBooleanValidator = exports.getNumberArrayValidator = exports.getFunctionValidator = exports.getStringOrGradientValidator = exports.getStringValidator = exports.getNumberOrAutoValidator = exports.getNumberOrArrayOfNumbersValidator = exports.getNumberValidator = exports.alphaComponent = exports.RGBComponent = void 0;\nvar Global_1 = require(\"./Global\");\nvar Util_1 = require(\"./Util\");\nfunction _formatValue(val) {\n if (Util_1.Util._isString(val)) {\n return '\"' + val + '\"';\n }\n if (Object.prototype.toString.call(val) === '[object Number]') {\n return val;\n }\n if (Util_1.Util._isBoolean(val)) {\n return val;\n }\n return Object.prototype.toString.call(val);\n}\nfunction RGBComponent(val) {\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n return Math.round(val);\n}\nexports.RGBComponent = RGBComponent;\nfunction alphaComponent(val) {\n if (val > 1) {\n return 1;\n }\n else if (val < 0.0001) {\n return 0.0001;\n }\n return val;\n}\nexports.alphaComponent = alphaComponent;\nfunction getNumberValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n if (!Util_1.Util._isNumber(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number.');\n }\n return val;\n };\n }\n}\nexports.getNumberValidator = getNumberValidator;\nfunction getNumberOrArrayOfNumbersValidator(noOfElements) {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n var isNumber = Util_1.Util._isNumber(val);\n var isValidArray = Util_1.Util._isArray(val) && val.length == noOfElements;\n if (!isNumber && !isValidArray) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number or Array(' + noOfElements + ')');\n }\n return val;\n };\n }\n}\nexports.getNumberOrArrayOfNumbersValidator = getNumberOrArrayOfNumbersValidator;\nfunction getNumberOrAutoValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n var isNumber = Util_1.Util._isNumber(val);\n var isAuto = val === 'auto';\n if (!(isNumber || isAuto)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number or \"auto\".');\n }\n return val;\n };\n }\n}\nexports.getNumberOrAutoValidator = getNumberOrAutoValidator;\nfunction getStringValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n if (!Util_1.Util._isString(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a string.');\n }\n return val;\n };\n }\n}\nexports.getStringValidator = getStringValidator;\nfunction getStringOrGradientValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n var isString = Util_1.Util._isString(val);\n var isGradient = Object.prototype.toString.call(val) === '[object CanvasGradient]';\n if (!(isString || isGradient)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a string or a native gradient.');\n }\n return val;\n };\n }\n}\nexports.getStringOrGradientValidator = getStringOrGradientValidator;\nfunction getFunctionValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n if (!Util_1.Util._isFunction(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a function.');\n }\n return val;\n };\n }\n}\nexports.getFunctionValidator = getFunctionValidator;\nfunction getNumberArrayValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n if (!Util_1.Util._isArray(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a array of numbers.');\n }\n else {\n val.forEach(function (item) {\n if (!Util_1.Util._isNumber(item)) {\n Util_1.Util.warn('\"' +\n attr +\n '\" attribute has non numeric element ' +\n item +\n '. Make sure that all elements are numbers.');\n }\n });\n }\n return val;\n };\n }\n}\nexports.getNumberArrayValidator = getNumberArrayValidator;\nfunction getBooleanValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n var isBool = val === true || val === false;\n if (!isBool) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a boolean.');\n }\n return val;\n };\n }\n}\nexports.getBooleanValidator = getBooleanValidator;\nfunction getComponentValidator(components) {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n if (!Util_1.Util.isObject(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be an object with properties ' +\n components);\n }\n return val;\n };\n }\n}\nexports.getComponentValidator = getComponentValidator;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HSV = void 0;\nvar Factory_1 = require(\"../Factory\");\nvar Node_1 = require(\"../Node\");\nvar Validators_1 = require(\"../Validators\");\nvar HSV = function (imageData) {\n var data = imageData.data, nPixels = data.length, v = Math.pow(2, this.value()), s = Math.pow(2, this.saturation()), h = Math.abs(this.hue() + 360) % 360, i;\n var vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\n var rr = 0.299 * v + 0.701 * vsu + 0.167 * vsw, rg = 0.587 * v - 0.587 * vsu + 0.33 * vsw, rb = 0.114 * v - 0.114 * vsu - 0.497 * vsw;\n var gr = 0.299 * v - 0.299 * vsu - 0.328 * vsw, gg = 0.587 * v + 0.413 * vsu + 0.035 * vsw, gb = 0.114 * v - 0.114 * vsu + 0.293 * vsw;\n var br = 0.299 * v - 0.3 * vsu + 1.25 * vsw, bg = 0.587 * v - 0.586 * vsu - 1.05 * vsw, bb = 0.114 * v + 0.886 * vsu - 0.2 * vsw;\n var r, g, b, a;\n for (i = 0; i < nPixels; i += 4) {\n r = data[i + 0];\n g = data[i + 1];\n b = data[i + 2];\n a = data[i + 3];\n data[i + 0] = rr * r + rg * g + rb * b;\n data[i + 1] = gr * r + gg * g + gb * b;\n data[i + 2] = br * r + bg * g + bb * b;\n data[i + 3] = a;\n }\n};\nexports.HSV = HSV;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'hue', 0, Validators_1.getNumberValidator(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'saturation', 0, Validators_1.getNumberValidator(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'value', 0, Validators_1.getNumberValidator(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Node = exports._removeName = exports._addName = exports._removeId = exports.names = exports.ids = void 0;\nvar Util_1 = require(\"./Util\");\nvar Factory_1 = require(\"./Factory\");\nvar Canvas_1 = require(\"./Canvas\");\nvar Global_1 = require(\"./Global\");\nvar DragAndDrop_1 = require(\"./DragAndDrop\");\nvar Validators_1 = require(\"./Validators\");\nexports.ids = {};\nexports.names = {};\nvar _addId = function (node, id) {\n if (!id) {\n return;\n }\n exports.ids[id] = node;\n};\nvar _removeId = function (id, node) {\n if (!id) {\n return;\n }\n if (exports.ids[id] !== node) {\n return;\n }\n delete exports.ids[id];\n};\nexports._removeId = _removeId;\nvar _addName = function (node, name) {\n if (name) {\n if (!exports.names[name]) {\n exports.names[name] = [];\n }\n exports.names[name].push(node);\n }\n};\nexports._addName = _addName;\nvar _removeName = function (name, _id) {\n if (!name) {\n return;\n }\n var nodes = exports.names[name];\n if (!nodes) {\n return;\n }\n for (var n = 0; n < nodes.length; n++) {\n var no = nodes[n];\n if (no._id === _id) {\n nodes.splice(n, 1);\n }\n }\n if (nodes.length === 0) {\n delete exports.names[name];\n }\n};\nexports._removeName = _removeName;\nvar ABSOLUTE_OPACITY = 'absoluteOpacity', ALL_LISTENERS = 'allEventListeners', ABSOLUTE_TRANSFORM = 'absoluteTransform', ABSOLUTE_SCALE = 'absoluteScale', CANVAS = 'canvas', CHANGE = 'Change', CHILDREN = 'children', KONVA = 'konva', LISTENING = 'listening', MOUSEENTER = 'mouseenter', MOUSELEAVE = 'mouseleave', NAME = 'name', SET = 'set', SHAPE = 'Shape', SPACE = ' ', STAGE = 'stage', TRANSFORM = 'transform', UPPER_STAGE = 'Stage', VISIBLE = 'visible', TRANSFORM_CHANGE_STR = [\n 'xChange.konva',\n 'yChange.konva',\n 'scaleXChange.konva',\n 'scaleYChange.konva',\n 'skewXChange.konva',\n 'skewYChange.konva',\n 'rotationChange.konva',\n 'offsetXChange.konva',\n 'offsetYChange.konva',\n 'transformsEnabledChange.konva',\n].join(SPACE), SCALE_CHANGE_STR = ['scaleXChange.konva', 'scaleYChange.konva'].join(SPACE);\nvar emptyChildren = new Util_1.Collection();\nvar idCounter = 1;\nvar Node = (function () {\n function Node(config) {\n this._id = idCounter++;\n this.eventListeners = {};\n this.attrs = {};\n this.index = 0;\n this._allEventListeners = null;\n this.parent = null;\n this._cache = new Map();\n this._attachedDepsListeners = new Map();\n this._lastPos = null;\n this._batchingTransformChange = false;\n this._needClearTransformCache = false;\n this._filterUpToDate = false;\n this._isUnderCache = false;\n this.children = emptyChildren;\n this._dragEventId = null;\n this._shouldFireChangeEvents = false;\n this.setAttrs(config);\n this._shouldFireChangeEvents = true;\n }\n Node.prototype.hasChildren = function () {\n return false;\n };\n Node.prototype.getChildren = function () {\n return emptyChildren;\n };\n Node.prototype._clearCache = function (attr) {\n if ((attr === TRANSFORM || attr === ABSOLUTE_TRANSFORM) &&\n this._cache.get(attr)) {\n this._cache.get(attr).dirty = true;\n }\n else if (attr) {\n this._cache.delete(attr);\n }\n else {\n this._cache.clear();\n }\n };\n Node.prototype._getCache = function (attr, privateGetter) {\n var cache = this._cache.get(attr);\n var isTransform = attr === TRANSFORM || attr === ABSOLUTE_TRANSFORM;\n var invalid = cache === undefined || (isTransform && cache.dirty === true);\n if (invalid) {\n cache = privateGetter.call(this);\n this._cache.set(attr, cache);\n }\n return cache;\n };\n Node.prototype._calculate = function (name, deps, getter) {\n var _this = this;\n if (!this._attachedDepsListeners.get(name)) {\n var depsString = deps.map(function (dep) { return dep + 'Change.konva'; }).join(SPACE);\n this.on(depsString, function () {\n _this._clearCache(name);\n });\n this._attachedDepsListeners.set(name, true);\n }\n return this._getCache(name, getter);\n };\n Node.prototype._getCanvasCache = function () {\n return this._cache.get(CANVAS);\n };\n Node.prototype._clearSelfAndDescendantCache = function (attr, forceEvent) {\n this._clearCache(attr);\n if (forceEvent && attr === ABSOLUTE_TRANSFORM) {\n this.fire('_clearTransformCache');\n }\n if (this.isCached()) {\n return;\n }\n if (this.children) {\n this.children.each(function (node) {\n node._clearSelfAndDescendantCache(attr, true);\n });\n }\n };\n Node.prototype.clearCache = function () {\n this._cache.delete(CANVAS);\n this._clearSelfAndDescendantCache();\n return this;\n };\n Node.prototype.cache = function (config) {\n var conf = config || {};\n var rect = {};\n if (conf.x === undefined ||\n conf.y === undefined ||\n conf.width === undefined ||\n conf.height === undefined) {\n rect = this.getClientRect({\n skipTransform: true,\n relativeTo: this.getParent(),\n });\n }\n var width = Math.ceil(conf.width || rect.width), height = Math.ceil(conf.height || rect.height), pixelRatio = conf.pixelRatio, x = conf.x === undefined ? rect.x : conf.x, y = conf.y === undefined ? rect.y : conf.y, offset = conf.offset || 0, drawBorder = conf.drawBorder || false;\n if (!width || !height) {\n Util_1.Util.error('Can not cache the node. Width or height of the node equals 0. Caching is skipped.');\n return;\n }\n width += offset * 2;\n height += offset * 2;\n x -= offset;\n y -= offset;\n var cachedSceneCanvas = new Canvas_1.SceneCanvas({\n pixelRatio: pixelRatio,\n width: width,\n height: height,\n }), cachedFilterCanvas = new Canvas_1.SceneCanvas({\n pixelRatio: pixelRatio,\n width: 0,\n height: 0,\n }), cachedHitCanvas = new Canvas_1.HitCanvas({\n pixelRatio: 1,\n width: width,\n height: height,\n }), sceneContext = cachedSceneCanvas.getContext(), hitContext = cachedHitCanvas.getContext();\n cachedHitCanvas.isCache = true;\n cachedSceneCanvas.isCache = true;\n this._cache.delete('canvas');\n this._filterUpToDate = false;\n if (conf.imageSmoothingEnabled === false) {\n cachedSceneCanvas.getContext()._context.imageSmoothingEnabled = false;\n cachedFilterCanvas.getContext()._context.imageSmoothingEnabled = false;\n }\n sceneContext.save();\n hitContext.save();\n sceneContext.translate(-x, -y);\n hitContext.translate(-x, -y);\n this._isUnderCache = true;\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n this._clearSelfAndDescendantCache(ABSOLUTE_SCALE);\n this.drawScene(cachedSceneCanvas, this);\n this.drawHit(cachedHitCanvas, this);\n this._isUnderCache = false;\n sceneContext.restore();\n hitContext.restore();\n if (drawBorder) {\n sceneContext.save();\n sceneContext.beginPath();\n sceneContext.rect(0, 0, width, height);\n sceneContext.closePath();\n sceneContext.setAttr('strokeStyle', 'red');\n sceneContext.setAttr('lineWidth', 5);\n sceneContext.stroke();\n sceneContext.restore();\n }\n this._cache.set(CANVAS, {\n scene: cachedSceneCanvas,\n filter: cachedFilterCanvas,\n hit: cachedHitCanvas,\n x: x,\n y: y,\n });\n return this;\n };\n Node.prototype.isCached = function () {\n return this._cache.has('canvas');\n };\n Node.prototype.getClientRect = function (config) {\n throw new Error('abstract \"getClientRect\" method call');\n };\n Node.prototype._transformedRect = function (rect, top) {\n var points = [\n { x: rect.x, y: rect.y },\n { x: rect.x + rect.width, y: rect.y },\n { x: rect.x + rect.width, y: rect.y + rect.height },\n { x: rect.x, y: rect.y + rect.height },\n ];\n var minX, minY, maxX, maxY;\n var trans = this.getAbsoluteTransform(top);\n points.forEach(function (point) {\n var transformed = trans.point(point);\n if (minX === undefined) {\n minX = maxX = transformed.x;\n minY = maxY = transformed.y;\n }\n minX = Math.min(minX, transformed.x);\n minY = Math.min(minY, transformed.y);\n maxX = Math.max(maxX, transformed.x);\n maxY = Math.max(maxY, transformed.y);\n });\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n };\n Node.prototype._drawCachedSceneCanvas = function (context) {\n context.save();\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n var canvasCache = this._getCanvasCache();\n context.translate(canvasCache.x, canvasCache.y);\n var cacheCanvas = this._getCachedSceneCanvas();\n var ratio = cacheCanvas.pixelRatio;\n context.drawImage(cacheCanvas._canvas, 0, 0, cacheCanvas.width / ratio, cacheCanvas.height / ratio);\n context.restore();\n };\n Node.prototype._drawCachedHitCanvas = function (context) {\n var canvasCache = this._getCanvasCache(), hitCanvas = canvasCache.hit;\n context.save();\n context.translate(canvasCache.x, canvasCache.y);\n context.drawImage(hitCanvas._canvas, 0, 0);\n context.restore();\n };\n Node.prototype._getCachedSceneCanvas = function () {\n var filters = this.filters(), cachedCanvas = this._getCanvasCache(), sceneCanvas = cachedCanvas.scene, filterCanvas = cachedCanvas.filter, filterContext = filterCanvas.getContext(), len, imageData, n, filter;\n if (filters) {\n if (!this._filterUpToDate) {\n var ratio = sceneCanvas.pixelRatio;\n filterCanvas.setSize(sceneCanvas.width / sceneCanvas.pixelRatio, sceneCanvas.height / sceneCanvas.pixelRatio);\n try {\n len = filters.length;\n filterContext.clear();\n filterContext.drawImage(sceneCanvas._canvas, 0, 0, sceneCanvas.getWidth() / ratio, sceneCanvas.getHeight() / ratio);\n imageData = filterContext.getImageData(0, 0, filterCanvas.getWidth(), filterCanvas.getHeight());\n for (n = 0; n < len; n++) {\n filter = filters[n];\n if (typeof filter !== 'function') {\n Util_1.Util.error('Filter should be type of function, but got ' +\n typeof filter +\n ' instead. Please check correct filters');\n continue;\n }\n filter.call(this, imageData);\n filterContext.putImageData(imageData, 0, 0);\n }\n }\n catch (e) {\n Util_1.Util.error('Unable to apply filter. ' +\n e.message +\n ' This post my help you https://konvajs.org/docs/posts/Tainted_Canvas.html.');\n }\n this._filterUpToDate = true;\n }\n return filterCanvas;\n }\n return sceneCanvas;\n };\n Node.prototype.on = function (evtStr, handler) {\n this._cache && this._cache.delete(ALL_LISTENERS);\n if (arguments.length === 3) {\n return this._delegate.apply(this, arguments);\n }\n var events = evtStr.split(SPACE), len = events.length, n, event, parts, baseEvent, name;\n for (n = 0; n < len; n++) {\n event = events[n];\n parts = event.split('.');\n baseEvent = parts[0];\n name = parts[1] || '';\n if (!this.eventListeners[baseEvent]) {\n this.eventListeners[baseEvent] = [];\n }\n this.eventListeners[baseEvent].push({\n name: name,\n handler: handler,\n });\n }\n return this;\n };\n Node.prototype.off = function (evtStr, callback) {\n var events = (evtStr || '').split(SPACE), len = events.length, n, t, event, parts, baseEvent, name;\n this._cache && this._cache.delete(ALL_LISTENERS);\n if (!evtStr) {\n for (t in this.eventListeners) {\n this._off(t);\n }\n }\n for (n = 0; n < len; n++) {\n event = events[n];\n parts = event.split('.');\n baseEvent = parts[0];\n name = parts[1];\n if (baseEvent) {\n if (this.eventListeners[baseEvent]) {\n this._off(baseEvent, name, callback);\n }\n }\n else {\n for (t in this.eventListeners) {\n this._off(t, name, callback);\n }\n }\n }\n return this;\n };\n Node.prototype.dispatchEvent = function (evt) {\n var e = {\n target: this,\n type: evt.type,\n evt: evt,\n };\n this.fire(evt.type, e);\n return this;\n };\n Node.prototype.addEventListener = function (type, handler) {\n this.on(type, function (evt) {\n handler.call(this, evt.evt);\n });\n return this;\n };\n Node.prototype.removeEventListener = function (type) {\n this.off(type);\n return this;\n };\n Node.prototype._delegate = function (event, selector, handler) {\n var stopNode = this;\n this.on(event, function (evt) {\n var targets = evt.target.findAncestors(selector, true, stopNode);\n for (var i = 0; i < targets.length; i++) {\n evt = Util_1.Util.cloneObject(evt);\n evt.currentTarget = targets[i];\n handler.call(targets[i], evt);\n }\n });\n };\n Node.prototype.remove = function () {\n if (this.isDragging()) {\n this.stopDrag();\n }\n DragAndDrop_1.DD._dragElements.delete(this._id);\n this._remove();\n return this;\n };\n Node.prototype._clearCaches = function () {\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n this._clearSelfAndDescendantCache(ABSOLUTE_SCALE);\n this._clearSelfAndDescendantCache(STAGE);\n this._clearSelfAndDescendantCache(VISIBLE);\n this._clearSelfAndDescendantCache(LISTENING);\n };\n Node.prototype._remove = function () {\n this._clearCaches();\n var parent = this.getParent();\n if (parent && parent.children) {\n parent.children.splice(this.index, 1);\n parent._setChildrenIndices();\n this.parent = null;\n }\n };\n Node.prototype.destroy = function () {\n exports._removeId(this.id(), this);\n var names = (this.name() || '').split(/\\s/g);\n for (var i = 0; i < names.length; i++) {\n var subname = names[i];\n exports._removeName(subname, this._id);\n }\n this.remove();\n return this;\n };\n Node.prototype.getAttr = function (attr) {\n var method = 'get' + Util_1.Util._capitalize(attr);\n if (Util_1.Util._isFunction(this[method])) {\n return this[method]();\n }\n return this.attrs[attr];\n };\n Node.prototype.getAncestors = function () {\n var parent = this.getParent(), ancestors = new Util_1.Collection();\n while (parent) {\n ancestors.push(parent);\n parent = parent.getParent();\n }\n return ancestors;\n };\n Node.prototype.getAttrs = function () {\n return this.attrs || {};\n };\n Node.prototype.setAttrs = function (config) {\n var _this = this;\n this._batchTransformChanges(function () {\n var key, method;\n if (!config) {\n return _this;\n }\n for (key in config) {\n if (key === CHILDREN) {\n continue;\n }\n method = SET + Util_1.Util._capitalize(key);\n if (Util_1.Util._isFunction(_this[method])) {\n _this[method](config[key]);\n }\n else {\n _this._setAttr(key, config[key]);\n }\n }\n });\n return this;\n };\n Node.prototype.isListening = function () {\n return this._getCache(LISTENING, this._isListening);\n };\n Node.prototype._isListening = function (relativeTo) {\n var listening = this.listening();\n if (!listening) {\n return false;\n }\n var parent = this.getParent();\n if (parent && parent !== relativeTo && this !== relativeTo) {\n return parent._isListening(relativeTo);\n }\n else {\n return true;\n }\n };\n Node.prototype.isVisible = function () {\n return this._getCache(VISIBLE, this._isVisible);\n };\n Node.prototype._isVisible = function (relativeTo) {\n var visible = this.visible();\n if (!visible) {\n return false;\n }\n var parent = this.getParent();\n if (parent && parent !== relativeTo && this !== relativeTo) {\n return parent._isVisible(relativeTo);\n }\n else {\n return true;\n }\n };\n Node.prototype.shouldDrawHit = function (top, skipDragCheck) {\n if (skipDragCheck === void 0) { skipDragCheck = false; }\n if (top) {\n return this._isVisible(top) && this._isListening(top);\n }\n var layer = this.getLayer();\n var layerUnderDrag = false;\n DragAndDrop_1.DD._dragElements.forEach(function (elem) {\n if (elem.dragStatus !== 'dragging') {\n return;\n }\n else if (elem.node.nodeType === 'Stage') {\n layerUnderDrag = true;\n }\n else if (elem.node.getLayer() === layer) {\n layerUnderDrag = true;\n }\n });\n var dragSkip = !skipDragCheck && !Global_1.Konva.hitOnDragEnabled && layerUnderDrag;\n return this.isListening() && this.isVisible() && !dragSkip;\n };\n Node.prototype.show = function () {\n this.visible(true);\n return this;\n };\n Node.prototype.hide = function () {\n this.visible(false);\n return this;\n };\n Node.prototype.getZIndex = function () {\n return this.index || 0;\n };\n Node.prototype.getAbsoluteZIndex = function () {\n var depth = this.getDepth(), that = this, index = 0, nodes, len, n, child;\n function addChildren(children) {\n nodes = [];\n len = children.length;\n for (n = 0; n < len; n++) {\n child = children[n];\n index++;\n if (child.nodeType !== SHAPE) {\n nodes = nodes.concat(child.getChildren().toArray());\n }\n if (child._id === that._id) {\n n = len;\n }\n }\n if (nodes.length > 0 && nodes[0].getDepth() <= depth) {\n addChildren(nodes);\n }\n }\n if (that.nodeType !== UPPER_STAGE) {\n addChildren(that.getStage().getChildren());\n }\n return index;\n };\n Node.prototype.getDepth = function () {\n var depth = 0, parent = this.parent;\n while (parent) {\n depth++;\n parent = parent.parent;\n }\n return depth;\n };\n Node.prototype._batchTransformChanges = function (func) {\n this._batchingTransformChange = true;\n func();\n this._batchingTransformChange = false;\n if (this._needClearTransformCache) {\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM, true);\n }\n this._needClearTransformCache = false;\n };\n Node.prototype.setPosition = function (pos) {\n var _this = this;\n this._batchTransformChanges(function () {\n _this.x(pos.x);\n _this.y(pos.y);\n });\n return this;\n };\n Node.prototype.getPosition = function () {\n return {\n x: this.x(),\n y: this.y(),\n };\n };\n Node.prototype.getAbsolutePosition = function (top) {\n var haveCachedParent = false;\n var parent = this.parent;\n while (parent) {\n if (parent.isCached()) {\n haveCachedParent = true;\n break;\n }\n parent = parent.parent;\n }\n if (haveCachedParent && !top) {\n top = true;\n }\n var absoluteMatrix = this.getAbsoluteTransform(top).getMatrix(), absoluteTransform = new Util_1.Transform(), offset = this.offset();\n absoluteTransform.m = absoluteMatrix.slice();\n absoluteTransform.translate(offset.x, offset.y);\n return absoluteTransform.getTranslation();\n };\n Node.prototype.setAbsolutePosition = function (pos) {\n var origTrans = this._clearTransform();\n this.attrs.x = origTrans.x;\n this.attrs.y = origTrans.y;\n delete origTrans.x;\n delete origTrans.y;\n this._clearCache(TRANSFORM);\n var it = this._getAbsoluteTransform().copy();\n it.invert();\n it.translate(pos.x, pos.y);\n pos = {\n x: this.attrs.x + it.getTranslation().x,\n y: this.attrs.y + it.getTranslation().y,\n };\n this._setTransform(origTrans);\n this.setPosition({ x: pos.x, y: pos.y });\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n return this;\n };\n Node.prototype._setTransform = function (trans) {\n var key;\n for (key in trans) {\n this.attrs[key] = trans[key];\n }\n };\n Node.prototype._clearTransform = function () {\n var trans = {\n x: this.x(),\n y: this.y(),\n rotation: this.rotation(),\n scaleX: this.scaleX(),\n scaleY: this.scaleY(),\n offsetX: this.offsetX(),\n offsetY: this.offsetY(),\n skewX: this.skewX(),\n skewY: this.skewY(),\n };\n this.attrs.x = 0;\n this.attrs.y = 0;\n this.attrs.rotation = 0;\n this.attrs.scaleX = 1;\n this.attrs.scaleY = 1;\n this.attrs.offsetX = 0;\n this.attrs.offsetY = 0;\n this.attrs.skewX = 0;\n this.attrs.skewY = 0;\n return trans;\n };\n Node.prototype.move = function (change) {\n var changeX = change.x, changeY = change.y, x = this.x(), y = this.y();\n if (changeX !== undefined) {\n x += changeX;\n }\n if (changeY !== undefined) {\n y += changeY;\n }\n this.setPosition({ x: x, y: y });\n return this;\n };\n Node.prototype._eachAncestorReverse = function (func, top) {\n var family = [], parent = this.getParent(), len, n;\n if (top && top._id === this._id) {\n return;\n }\n family.unshift(this);\n while (parent && (!top || parent._id !== top._id)) {\n family.unshift(parent);\n parent = parent.parent;\n }\n len = family.length;\n for (n = 0; n < len; n++) {\n func(family[n]);\n }\n };\n Node.prototype.rotate = function (theta) {\n this.rotation(this.rotation() + theta);\n return this;\n };\n Node.prototype.moveToTop = function () {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. moveToTop function is ignored.');\n return false;\n }\n var index = this.index;\n this.parent.children.splice(index, 1);\n this.parent.children.push(this);\n this.parent._setChildrenIndices();\n return true;\n };\n Node.prototype.moveUp = function () {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. moveUp function is ignored.');\n return false;\n }\n var index = this.index, len = this.parent.getChildren().length;\n if (index < len - 1) {\n this.parent.children.splice(index, 1);\n this.parent.children.splice(index + 1, 0, this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n };\n Node.prototype.moveDown = function () {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. moveDown function is ignored.');\n return false;\n }\n var index = this.index;\n if (index > 0) {\n this.parent.children.splice(index, 1);\n this.parent.children.splice(index - 1, 0, this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n };\n Node.prototype.moveToBottom = function () {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. moveToBottom function is ignored.');\n return false;\n }\n var index = this.index;\n if (index > 0) {\n this.parent.children.splice(index, 1);\n this.parent.children.unshift(this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n };\n Node.prototype.setZIndex = function (zIndex) {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. zIndex parameter is ignored.');\n return this;\n }\n if (zIndex < 0 || zIndex >= this.parent.children.length) {\n Util_1.Util.warn('Unexpected value ' +\n zIndex +\n ' for zIndex property. zIndex is just index of a node in children of its parent. Expected value is from 0 to ' +\n (this.parent.children.length - 1) +\n '.');\n }\n var index = this.index;\n this.parent.children.splice(index, 1);\n this.parent.children.splice(zIndex, 0, this);\n this.parent._setChildrenIndices();\n return this;\n };\n Node.prototype.getAbsoluteOpacity = function () {\n return this._getCache(ABSOLUTE_OPACITY, this._getAbsoluteOpacity);\n };\n Node.prototype._getAbsoluteOpacity = function () {\n var absOpacity = this.opacity();\n var parent = this.getParent();\n if (parent && !parent._isUnderCache) {\n absOpacity *= parent.getAbsoluteOpacity();\n }\n return absOpacity;\n };\n Node.prototype.moveTo = function (newContainer) {\n if (this.getParent() !== newContainer) {\n this._remove();\n newContainer.add(this);\n }\n return this;\n };\n Node.prototype.toObject = function () {\n var obj = {}, attrs = this.getAttrs(), key, val, getter, defaultValue, nonPlainObject;\n obj.attrs = {};\n for (key in attrs) {\n val = attrs[key];\n nonPlainObject =\n Util_1.Util.isObject(val) && !Util_1.Util._isPlainObject(val) && !Util_1.Util._isArray(val);\n if (nonPlainObject) {\n continue;\n }\n getter = typeof this[key] === 'function' && this[key];\n delete attrs[key];\n defaultValue = getter ? getter.call(this) : null;\n attrs[key] = val;\n if (defaultValue !== val) {\n obj.attrs[key] = val;\n }\n }\n obj.className = this.getClassName();\n return Util_1.Util._prepareToStringify(obj);\n };\n Node.prototype.toJSON = function () {\n return JSON.stringify(this.toObject());\n };\n Node.prototype.getParent = function () {\n return this.parent;\n };\n Node.prototype.findAncestors = function (selector, includeSelf, stopNode) {\n var res = [];\n if (includeSelf && this._isMatch(selector)) {\n res.push(this);\n }\n var ancestor = this.parent;\n while (ancestor) {\n if (ancestor === stopNode) {\n return res;\n }\n if (ancestor._isMatch(selector)) {\n res.push(ancestor);\n }\n ancestor = ancestor.parent;\n }\n return res;\n };\n Node.prototype.isAncestorOf = function (node) {\n return false;\n };\n Node.prototype.findAncestor = function (selector, includeSelf, stopNode) {\n return this.findAncestors(selector, includeSelf, stopNode)[0];\n };\n Node.prototype._isMatch = function (selector) {\n if (!selector) {\n return false;\n }\n if (typeof selector === 'function') {\n return selector(this);\n }\n var selectorArr = selector.replace(/ /g, '').split(','), len = selectorArr.length, n, sel;\n for (n = 0; n < len; n++) {\n sel = selectorArr[n];\n if (!Util_1.Util.isValidSelector(sel)) {\n Util_1.Util.warn('Selector \"' +\n sel +\n '\" is invalid. Allowed selectors examples are \"#foo\", \".bar\" or \"Group\".');\n Util_1.Util.warn('If you have a custom shape with such className, please change it to start with upper letter like \"Triangle\".');\n Util_1.Util.warn('Konva is awesome, right?');\n }\n if (sel.charAt(0) === '#') {\n if (this.id() === sel.slice(1)) {\n return true;\n }\n }\n else if (sel.charAt(0) === '.') {\n if (this.hasName(sel.slice(1))) {\n return true;\n }\n }\n else if (this.className === sel || this.nodeType === sel) {\n return true;\n }\n }\n return false;\n };\n Node.prototype.getLayer = function () {\n var parent = this.getParent();\n return parent ? parent.getLayer() : null;\n };\n Node.prototype.getStage = function () {\n return this._getCache(STAGE, this._getStage);\n };\n Node.prototype._getStage = function () {\n var parent = this.getParent();\n if (parent) {\n return parent.getStage();\n }\n else {\n return undefined;\n }\n };\n Node.prototype.fire = function (eventType, evt, bubble) {\n if (evt === void 0) { evt = {}; }\n evt.target = evt.target || this;\n if (bubble) {\n this._fireAndBubble(eventType, evt);\n }\n else {\n this._fire(eventType, evt);\n }\n return this;\n };\n Node.prototype.getAbsoluteTransform = function (top) {\n if (top) {\n return this._getAbsoluteTransform(top);\n }\n else {\n return this._getCache(ABSOLUTE_TRANSFORM, this._getAbsoluteTransform);\n }\n };\n Node.prototype._getAbsoluteTransform = function (top) {\n var at;\n if (top) {\n at = new Util_1.Transform();\n this._eachAncestorReverse(function (node) {\n var transformsEnabled = node.transformsEnabled();\n if (transformsEnabled === 'all') {\n at.multiply(node.getTransform());\n }\n else if (transformsEnabled === 'position') {\n at.translate(node.x() - node.offsetX(), node.y() - node.offsetY());\n }\n }, top);\n return at;\n }\n else {\n at = this._cache.get(ABSOLUTE_TRANSFORM) || new Util_1.Transform();\n if (this.parent) {\n this.parent.getAbsoluteTransform().copyInto(at);\n }\n else {\n at.reset();\n }\n var transformsEnabled = this.transformsEnabled();\n if (transformsEnabled === 'all') {\n at.multiply(this.getTransform());\n }\n else if (transformsEnabled === 'position') {\n var x = this.attrs.x || 0;\n var y = this.attrs.y || 0;\n var offsetX = this.attrs.offsetX || 0;\n var offsetY = this.attrs.offsetY || 0;\n at.translate(x - offsetX, y - offsetY);\n }\n at.dirty = false;\n return at;\n }\n };\n Node.prototype.getAbsoluteScale = function (top) {\n var parent = this;\n while (parent) {\n if (parent._isUnderCache) {\n top = parent;\n }\n parent = parent.getParent();\n }\n var transform = this.getAbsoluteTransform(top);\n var attrs = transform.decompose();\n return {\n x: attrs.scaleX,\n y: attrs.scaleY,\n };\n };\n Node.prototype.getAbsoluteRotation = function () {\n return this.getAbsoluteTransform().decompose().rotation;\n };\n Node.prototype.getTransform = function () {\n return this._getCache(TRANSFORM, this._getTransform);\n };\n Node.prototype._getTransform = function () {\n var _a, _b;\n var m = this._cache.get(TRANSFORM) || new Util_1.Transform();\n m.reset();\n var x = this.x(), y = this.y(), rotation = Global_1.Konva.getAngle(this.rotation()), scaleX = (_a = this.attrs.scaleX) !== null && _a !== void 0 ? _a : 1, scaleY = (_b = this.attrs.scaleY) !== null && _b !== void 0 ? _b : 1, skewX = this.attrs.skewX || 0, skewY = this.attrs.skewY || 0, offsetX = this.attrs.offsetX || 0, offsetY = this.attrs.offsetY || 0;\n if (x !== 0 || y !== 0) {\n m.translate(x, y);\n }\n if (rotation !== 0) {\n m.rotate(rotation);\n }\n if (skewX !== 0 || skewY !== 0) {\n m.skew(skewX, skewY);\n }\n if (scaleX !== 1 || scaleY !== 1) {\n m.scale(scaleX, scaleY);\n }\n if (offsetX !== 0 || offsetY !== 0) {\n m.translate(-1 * offsetX, -1 * offsetY);\n }\n m.dirty = false;\n return m;\n };\n Node.prototype.clone = function (obj) {\n var attrs = Util_1.Util.cloneObject(this.attrs), key, allListeners, len, n, listener;\n for (key in obj) {\n attrs[key] = obj[key];\n }\n var node = new this.constructor(attrs);\n for (key in this.eventListeners) {\n allListeners = this.eventListeners[key];\n len = allListeners.length;\n for (n = 0; n < len; n++) {\n listener = allListeners[n];\n if (listener.name.indexOf(KONVA) < 0) {\n if (!node.eventListeners[key]) {\n node.eventListeners[key] = [];\n }\n node.eventListeners[key].push(listener);\n }\n }\n }\n return node;\n };\n Node.prototype._toKonvaCanvas = function (config) {\n config = config || {};\n var box = this.getClientRect();\n var stage = this.getStage(), x = config.x !== undefined ? config.x : box.x, y = config.y !== undefined ? config.y : box.y, pixelRatio = config.pixelRatio || 1, canvas = new Canvas_1.SceneCanvas({\n width: config.width || box.width || (stage ? stage.width() : 0),\n height: config.height || box.height || (stage ? stage.height() : 0),\n pixelRatio: pixelRatio,\n }), context = canvas.getContext();\n context.save();\n if (x || y) {\n context.translate(-1 * x, -1 * y);\n }\n this.drawScene(canvas);\n context.restore();\n return canvas;\n };\n Node.prototype.toCanvas = function (config) {\n return this._toKonvaCanvas(config)._canvas;\n };\n Node.prototype.toDataURL = function (config) {\n config = config || {};\n var mimeType = config.mimeType || null, quality = config.quality || null;\n var url = this._toKonvaCanvas(config).toDataURL(mimeType, quality);\n if (config.callback) {\n config.callback(url);\n }\n return url;\n };\n Node.prototype.toImage = function (config) {\n if (!config || !config.callback) {\n throw 'callback required for toImage method config argument';\n }\n var callback = config.callback;\n delete config.callback;\n Util_1.Util._urlToImage(this.toDataURL(config), function (img) {\n callback(img);\n });\n };\n Node.prototype.setSize = function (size) {\n this.width(size.width);\n this.height(size.height);\n return this;\n };\n Node.prototype.getSize = function () {\n return {\n width: this.width(),\n height: this.height(),\n };\n };\n Node.prototype.getClassName = function () {\n return this.className || this.nodeType;\n };\n Node.prototype.getType = function () {\n return this.nodeType;\n };\n Node.prototype.getDragDistance = function () {\n if (this.attrs.dragDistance !== undefined) {\n return this.attrs.dragDistance;\n }\n else if (this.parent) {\n return this.parent.getDragDistance();\n }\n else {\n return Global_1.Konva.dragDistance;\n }\n };\n Node.prototype._off = function (type, name, callback) {\n var evtListeners = this.eventListeners[type], i, evtName, handler;\n for (i = 0; i < evtListeners.length; i++) {\n evtName = evtListeners[i].name;\n handler = evtListeners[i].handler;\n if ((evtName !== 'konva' || name === 'konva') &&\n (!name || evtName === name) &&\n (!callback || callback === handler)) {\n evtListeners.splice(i, 1);\n if (evtListeners.length === 0) {\n delete this.eventListeners[type];\n break;\n }\n i--;\n }\n }\n };\n Node.prototype._fireChangeEvent = function (attr, oldVal, newVal) {\n this._fire(attr + CHANGE, {\n oldVal: oldVal,\n newVal: newVal,\n });\n };\n Node.prototype.setId = function (id) {\n var oldId = this.id();\n exports._removeId(oldId, this);\n _addId(this, id);\n this._setAttr('id', id);\n return this;\n };\n Node.prototype.setName = function (name) {\n var oldNames = (this.name() || '').split(/\\s/g);\n var newNames = (name || '').split(/\\s/g);\n var subname, i;\n for (i = 0; i < oldNames.length; i++) {\n subname = oldNames[i];\n if (newNames.indexOf(subname) === -1 && subname) {\n exports._removeName(subname, this._id);\n }\n }\n for (i = 0; i < newNames.length; i++) {\n subname = newNames[i];\n if (oldNames.indexOf(subname) === -1 && subname) {\n exports._addName(this, subname);\n }\n }\n this._setAttr(NAME, name);\n return this;\n };\n Node.prototype.addName = function (name) {\n if (!this.hasName(name)) {\n var oldName = this.name();\n var newName = oldName ? oldName + ' ' + name : name;\n this.setName(newName);\n }\n return this;\n };\n Node.prototype.hasName = function (name) {\n if (!name) {\n return false;\n }\n var fullName = this.name();\n if (!fullName) {\n return false;\n }\n var names = (fullName || '').split(/\\s/g);\n return names.indexOf(name) !== -1;\n };\n Node.prototype.removeName = function (name) {\n var names = (this.name() || '').split(/\\s/g);\n var index = names.indexOf(name);\n if (index !== -1) {\n names.splice(index, 1);\n this.setName(names.join(' '));\n }\n return this;\n };\n Node.prototype.setAttr = function (attr, val) {\n var func = this[SET + Util_1.Util._capitalize(attr)];\n if (Util_1.Util._isFunction(func)) {\n func.call(this, val);\n }\n else {\n this._setAttr(attr, val);\n }\n return this;\n };\n Node.prototype._setAttr = function (key, val, skipFire) {\n if (skipFire === void 0) { skipFire = false; }\n var oldVal = this.attrs[key];\n if (oldVal === val && !Util_1.Util.isObject(val)) {\n return;\n }\n if (val === undefined || val === null) {\n delete this.attrs[key];\n }\n else {\n this.attrs[key] = val;\n }\n if (this._shouldFireChangeEvents) {\n this._fireChangeEvent(key, oldVal, val);\n }\n };\n Node.prototype._setComponentAttr = function (key, component, val) {\n var oldVal;\n if (val !== undefined) {\n oldVal = this.attrs[key];\n if (!oldVal) {\n this.attrs[key] = this.getAttr(key);\n }\n this.attrs[key][component] = val;\n this._fireChangeEvent(key, oldVal, val);\n }\n };\n Node.prototype._fireAndBubble = function (eventType, evt, compareShape) {\n if (evt && this.nodeType === SHAPE) {\n evt.target = this;\n }\n var shouldStop = (eventType === MOUSEENTER || eventType === MOUSELEAVE) &&\n ((compareShape &&\n (this === compareShape ||\n (this.isAncestorOf && this.isAncestorOf(compareShape)))) ||\n (this.nodeType === 'Stage' && !compareShape));\n if (!shouldStop) {\n this._fire(eventType, evt);\n var stopBubble = (eventType === MOUSEENTER || eventType === MOUSELEAVE) &&\n compareShape &&\n compareShape.isAncestorOf &&\n compareShape.isAncestorOf(this) &&\n !compareShape.isAncestorOf(this.parent);\n if (((evt && !evt.cancelBubble) || !evt) &&\n this.parent &&\n this.parent.isListening() &&\n !stopBubble) {\n if (compareShape && compareShape.parent) {\n this._fireAndBubble.call(this.parent, eventType, evt, compareShape);\n }\n else {\n this._fireAndBubble.call(this.parent, eventType, evt);\n }\n }\n }\n };\n Node.prototype._getProtoListeners = function (eventType) {\n var listeners = this._cache.get(ALL_LISTENERS);\n if (!listeners) {\n listeners = {};\n var obj = Object.getPrototypeOf(this);\n while (obj) {\n if (!obj.eventListeners) {\n obj = Object.getPrototypeOf(obj);\n continue;\n }\n for (var event in obj.eventListeners) {\n var newEvents = obj.eventListeners[event];\n var oldEvents = listeners[event] || [];\n listeners[event] = newEvents.concat(oldEvents);\n }\n obj = Object.getPrototypeOf(obj);\n }\n this._cache.set(ALL_LISTENERS, listeners);\n }\n return listeners[eventType];\n };\n Node.prototype._fire = function (eventType, evt) {\n evt = evt || {};\n evt.currentTarget = this;\n evt.type = eventType;\n var topListeners = this._getProtoListeners(eventType);\n if (topListeners) {\n for (var i = 0; i < topListeners.length; i++) {\n topListeners[i].handler.call(this, evt);\n }\n }\n var selfListeners = this.eventListeners[eventType];\n if (selfListeners) {\n for (var i = 0; i < selfListeners.length; i++) {\n selfListeners[i].handler.call(this, evt);\n }\n }\n };\n Node.prototype.draw = function () {\n this.drawScene();\n this.drawHit();\n return this;\n };\n Node.prototype._createDragElement = function (evt) {\n var pointerId = evt ? evt.pointerId : undefined;\n var stage = this.getStage();\n var ap = this.getAbsolutePosition();\n var pos = stage._getPointerById(pointerId) ||\n stage._changedPointerPositions[0] ||\n ap;\n DragAndDrop_1.DD._dragElements.set(this._id, {\n node: this,\n startPointerPos: pos,\n offset: {\n x: pos.x - ap.x,\n y: pos.y - ap.y,\n },\n dragStatus: 'ready',\n pointerId: pointerId,\n });\n };\n Node.prototype.startDrag = function (evt, bubbleEvent) {\n if (bubbleEvent === void 0) { bubbleEvent = true; }\n if (!DragAndDrop_1.DD._dragElements.has(this._id)) {\n this._createDragElement(evt);\n }\n var elem = DragAndDrop_1.DD._dragElements.get(this._id);\n elem.dragStatus = 'dragging';\n this.fire('dragstart', {\n type: 'dragstart',\n target: this,\n evt: evt && evt.evt,\n }, bubbleEvent);\n };\n Node.prototype._setDragPosition = function (evt, elem) {\n var pos = this.getStage()._getPointerById(elem.pointerId);\n if (!pos) {\n return;\n }\n var newNodePos = {\n x: pos.x - elem.offset.x,\n y: pos.y - elem.offset.y,\n };\n var dbf = this.dragBoundFunc();\n if (dbf !== undefined) {\n var bounded = dbf.call(this, newNodePos, evt);\n if (!bounded) {\n Util_1.Util.warn('dragBoundFunc did not return any value. That is unexpected behavior. You must return new absolute position from dragBoundFunc.');\n }\n else {\n newNodePos = bounded;\n }\n }\n if (!this._lastPos ||\n this._lastPos.x !== newNodePos.x ||\n this._lastPos.y !== newNodePos.y) {\n this.setAbsolutePosition(newNodePos);\n if (this.getLayer()) {\n this.getLayer().batchDraw();\n }\n else if (this.getStage()) {\n this.getStage().batchDraw();\n }\n }\n this._lastPos = newNodePos;\n };\n Node.prototype.stopDrag = function (evt) {\n var elem = DragAndDrop_1.DD._dragElements.get(this._id);\n if (elem) {\n elem.dragStatus = 'stopped';\n }\n DragAndDrop_1.DD._endDragBefore(evt);\n DragAndDrop_1.DD._endDragAfter(evt);\n };\n Node.prototype.setDraggable = function (draggable) {\n this._setAttr('draggable', draggable);\n this._dragChange();\n };\n Node.prototype.isDragging = function () {\n var elem = DragAndDrop_1.DD._dragElements.get(this._id);\n return elem ? elem.dragStatus === 'dragging' : false;\n };\n Node.prototype._listenDrag = function () {\n this._dragCleanup();\n this.on('mousedown.konva touchstart.konva', function (evt) {\n var _this = this;\n var shouldCheckButton = evt.evt['button'] !== undefined;\n var canDrag = !shouldCheckButton || Global_1.Konva.dragButtons.indexOf(evt.evt['button']) >= 0;\n if (!canDrag) {\n return;\n }\n if (this.isDragging()) {\n return;\n }\n var hasDraggingChild = false;\n DragAndDrop_1.DD._dragElements.forEach(function (elem) {\n if (_this.isAncestorOf(elem.node)) {\n hasDraggingChild = true;\n }\n });\n if (!hasDraggingChild) {\n this._createDragElement(evt);\n }\n });\n };\n Node.prototype._dragChange = function () {\n if (this.attrs.draggable) {\n this._listenDrag();\n }\n else {\n this._dragCleanup();\n var stage = this.getStage();\n if (!stage) {\n return;\n }\n var dragElement = DragAndDrop_1.DD._dragElements.get(this._id);\n var isDragging = dragElement && dragElement.dragStatus === 'dragging';\n var isReady = dragElement && dragElement.dragStatus === 'ready';\n if (isDragging) {\n this.stopDrag();\n }\n else if (isReady) {\n DragAndDrop_1.DD._dragElements.delete(this._id);\n }\n }\n };\n Node.prototype._dragCleanup = function () {\n this.off('mousedown.konva');\n this.off('touchstart.konva');\n };\n Node.create = function (data, container) {\n if (Util_1.Util._isString(data)) {\n data = JSON.parse(data);\n }\n return this._createNode(data, container);\n };\n Node._createNode = function (obj, container) {\n var className = Node.prototype.getClassName.call(obj), children = obj.children, no, len, n;\n if (container) {\n obj.attrs.container = container;\n }\n if (!Global_1._NODES_REGISTRY[className]) {\n Util_1.Util.warn('Can not find a node with class name \"' +\n className +\n '\". Fallback to \"Shape\".');\n className = 'Shape';\n }\n var Class = Global_1._NODES_REGISTRY[className];\n no = new Class(obj.attrs);\n if (children) {\n len = children.length;\n for (n = 0; n < len; n++) {\n no.add(Node._createNode(children[n]));\n }\n }\n return no;\n };\n return Node;\n}());\nexports.Node = Node;\nNode.prototype.nodeType = 'Node';\nNode.prototype._attrsAffectingSize = [];\nNode.prototype.eventListeners = {};\nNode.prototype.on.call(Node.prototype, TRANSFORM_CHANGE_STR, function () {\n if (this._batchingTransformChange) {\n this._needClearTransformCache = true;\n return;\n }\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n});\nNode.prototype.on.call(Node.prototype, 'visibleChange.konva', function () {\n this._clearSelfAndDescendantCache(VISIBLE);\n});\nNode.prototype.on.call(Node.prototype, 'listeningChange.konva', function () {\n this._clearSelfAndDescendantCache(LISTENING);\n});\nNode.prototype.on.call(Node.prototype, 'opacityChange.konva', function () {\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n});\nvar addGetterSetter = Factory_1.Factory.addGetterSetter;\naddGetterSetter(Node, 'zIndex');\naddGetterSetter(Node, 'absolutePosition');\naddGetterSetter(Node, 'position');\naddGetterSetter(Node, 'x', 0, Validators_1.getNumberValidator());\naddGetterSetter(Node, 'y', 0, Validators_1.getNumberValidator());\naddGetterSetter(Node, 'globalCompositeOperation', 'source-over', Validators_1.getStringValidator());\naddGetterSetter(Node, 'opacity', 1, Validators_1.getNumberValidator());\naddGetterSetter(Node, 'name', '', Validators_1.getStringValidator());\naddGetterSetter(Node, 'id', '', Validators_1.getStringValidator());\naddGetterSetter(Node, 'rotation', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addComponentsGetterSetter(Node, 'scale', ['x', 'y']);\naddGetterSetter(Node, 'scaleX', 1, Validators_1.getNumberValidator());\naddGetterSetter(Node, 'scaleY', 1, Validators_1.getNumberValidator());\nFactory_1.Factory.addComponentsGetterSetter(Node, 'skew', ['x', 'y']);\naddGetterSetter(Node, 'skewX', 0, Validators_1.getNumberValidator());\naddGetterSetter(Node, 'skewY', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addComponentsGetterSetter(Node, 'offset', ['x', 'y']);\naddGetterSetter(Node, 'offsetX', 0, Validators_1.getNumberValidator());\naddGetterSetter(Node, 'offsetY', 0, Validators_1.getNumberValidator());\naddGetterSetter(Node, 'dragDistance', null, Validators_1.getNumberValidator());\naddGetterSetter(Node, 'width', 0, Validators_1.getNumberValidator());\naddGetterSetter(Node, 'height', 0, Validators_1.getNumberValidator());\naddGetterSetter(Node, 'listening', true, Validators_1.getBooleanValidator());\naddGetterSetter(Node, 'preventDefault', true, Validators_1.getBooleanValidator());\naddGetterSetter(Node, 'filters', null, function (val) {\n this._filterUpToDate = false;\n return val;\n});\naddGetterSetter(Node, 'visible', true, Validators_1.getBooleanValidator());\naddGetterSetter(Node, 'transformsEnabled', 'all', Validators_1.getStringValidator());\naddGetterSetter(Node, 'size');\naddGetterSetter(Node, 'dragBoundFunc');\naddGetterSetter(Node, 'draggable', false, Validators_1.getBooleanValidator());\nFactory_1.Factory.backCompat(Node, {\n rotateDeg: 'rotate',\n setRotationDeg: 'setRotation',\n getRotationDeg: 'getRotation',\n});\nUtil_1.Collection.mapMethods(Node);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Brighten = void 0;\nvar Factory_1 = require(\"../Factory\");\nvar Node_1 = require(\"../Node\");\nvar Validators_1 = require(\"../Validators\");\nvar Brighten = function (imageData) {\n var brightness = this.brightness() * 255, data = imageData.data, len = data.length, i;\n for (i = 0; i < len; i += 4) {\n data[i] += brightness;\n data[i + 1] += brightness;\n data[i + 2] += brightness;\n }\n};\nexports.Brighten = Brighten;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'brightness', 0, Validators_1.getNumberValidator(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Sepia = void 0;\nvar Sepia = function (imageData) {\n var data = imageData.data, nPixels = data.length, i, r, g, b;\n for (i = 0; i < nPixels; i += 4) {\n r = data[i + 0];\n g = data[i + 1];\n b = data[i + 2];\n data[i + 0] = Math.min(255, r * 0.393 + g * 0.769 + b * 0.189);\n data[i + 1] = Math.min(255, r * 0.349 + g * 0.686 + b * 0.168);\n data[i + 2] = Math.min(255, r * 0.272 + g * 0.534 + b * 0.131);\n }\n};\nexports.Sepia = Sepia;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Solarize = void 0;\nvar Solarize = function (imageData) {\n var data = imageData.data, w = imageData.width, h = imageData.height, w4 = w * 4, y = h;\n do {\n var offsetY = (y - 1) * w4;\n var x = w;\n do {\n var offset = offsetY + (x - 1) * 4;\n var r = data[offset];\n var g = data[offset + 1];\n var b = data[offset + 2];\n if (r > 127) {\n r = 255 - r;\n }\n if (g > 127) {\n g = 255 - g;\n }\n if (b > 127) {\n b = 255 - b;\n }\n data[offset] = r;\n data[offset + 1] = g;\n data[offset + 2] = b;\n } while (--x);\n } while (--y);\n};\nexports.Solarize = Solarize;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.releaseCapture = exports.setPointerCapture = exports.hasPointerCapture = exports.createEvent = exports.getCapturedShape = void 0;\nvar Global_1 = require(\"./Global\");\nvar Captures = new Map();\nvar SUPPORT_POINTER_EVENTS = Global_1.Konva._global['PointerEvent'] !== undefined;\nfunction getCapturedShape(pointerId) {\n return Captures.get(pointerId);\n}\nexports.getCapturedShape = getCapturedShape;\nfunction createEvent(evt) {\n return {\n evt: evt,\n pointerId: evt.pointerId\n };\n}\nexports.createEvent = createEvent;\nfunction hasPointerCapture(pointerId, shape) {\n return Captures.get(pointerId) === shape;\n}\nexports.hasPointerCapture = hasPointerCapture;\nfunction setPointerCapture(pointerId, shape) {\n releaseCapture(pointerId);\n var stage = shape.getStage();\n if (!stage)\n return;\n Captures.set(pointerId, shape);\n if (SUPPORT_POINTER_EVENTS) {\n shape._fire('gotpointercapture', createEvent(new PointerEvent('gotpointercapture')));\n }\n}\nexports.setPointerCapture = setPointerCapture;\nfunction releaseCapture(pointerId, target) {\n var shape = Captures.get(pointerId);\n if (!shape)\n return;\n var stage = shape.getStage();\n if (stage && stage.content) {\n }\n Captures.delete(pointerId);\n if (SUPPORT_POINTER_EVENTS) {\n shape._fire('lostpointercapture', createEvent(new PointerEvent('lostpointercapture')));\n }\n}\nexports.releaseCapture = releaseCapture;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Invert = void 0;\nvar Invert = function (imageData) {\n var data = imageData.data, len = data.length, i;\n for (i = 0; i < len; i += 4) {\n data[i] = 255 - data[i];\n data[i + 1] = 255 - data[i + 1];\n data[i + 2] = 255 - data[i + 2];\n }\n};\nexports.Invert = Invert;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RGB = void 0;\nvar Factory_1 = require(\"../Factory\");\nvar Node_1 = require(\"../Node\");\nvar Validators_1 = require(\"../Validators\");\nvar RGB = function (imageData) {\n var data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue(), i, brightness;\n for (i = 0; i < nPixels; i += 4) {\n brightness =\n (0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2]) / 255;\n data[i] = brightness * red;\n data[i + 1] = brightness * green;\n data[i + 2] = brightness * blue;\n data[i + 3] = data[i + 3];\n }\n};\nexports.RGB = RGB;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'red', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'green', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'blue', 0, Validators_1.RGBComponent, Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HSL = void 0;\nvar Factory_1 = require(\"../Factory\");\nvar Node_1 = require(\"../Node\");\nvar Validators_1 = require(\"../Validators\");\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'hue', 0, Validators_1.getNumberValidator(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'saturation', 0, Validators_1.getNumberValidator(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'luminance', 0, Validators_1.getNumberValidator(), Factory_1.Factory.afterSetFilter);\nvar HSL = function (imageData) {\n var data = imageData.data, nPixels = data.length, v = 1, s = Math.pow(2, this.saturation()), h = Math.abs(this.hue() + 360) % 360, l = this.luminance() * 127, i;\n var vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\n var rr = 0.299 * v + 0.701 * vsu + 0.167 * vsw, rg = 0.587 * v - 0.587 * vsu + 0.33 * vsw, rb = 0.114 * v - 0.114 * vsu - 0.497 * vsw;\n var gr = 0.299 * v - 0.299 * vsu - 0.328 * vsw, gg = 0.587 * v + 0.413 * vsu + 0.035 * vsw, gb = 0.114 * v - 0.114 * vsu + 0.293 * vsw;\n var br = 0.299 * v - 0.3 * vsu + 1.25 * vsw, bg = 0.587 * v - 0.586 * vsu - 1.05 * vsw, bb = 0.114 * v + 0.886 * vsu - 0.2 * vsw;\n var r, g, b, a;\n for (i = 0; i < nPixels; i += 4) {\n r = data[i + 0];\n g = data[i + 1];\n b = data[i + 2];\n a = data[i + 3];\n data[i + 0] = rr * r + rg * g + rb * b + l;\n data[i + 1] = gr * r + gg * g + gb * b + l;\n data[i + 2] = br * r + bg * g + bb * b + l;\n data[i + 3] = a;\n }\n};\nexports.HSL = HSL;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Mask = void 0;\nvar Factory_1 = require(\"../Factory\");\nvar Node_1 = require(\"../Node\");\nvar Validators_1 = require(\"../Validators\");\nfunction pixelAt(idata, x, y) {\n var idx = (y * idata.width + x) * 4;\n var d = [];\n d.push(idata.data[idx++], idata.data[idx++], idata.data[idx++], idata.data[idx++]);\n return d;\n}\nfunction rgbDistance(p1, p2) {\n return Math.sqrt(Math.pow(p1[0] - p2[0], 2) +\n Math.pow(p1[1] - p2[1], 2) +\n Math.pow(p1[2] - p2[2], 2));\n}\nfunction rgbMean(pTab) {\n var m = [0, 0, 0];\n for (var i = 0; i < pTab.length; i++) {\n m[0] += pTab[i][0];\n m[1] += pTab[i][1];\n m[2] += pTab[i][2];\n }\n m[0] /= pTab.length;\n m[1] /= pTab.length;\n m[2] /= pTab.length;\n return m;\n}\nfunction backgroundMask(idata, threshold) {\n var rgbv_no = pixelAt(idata, 0, 0);\n var rgbv_ne = pixelAt(idata, idata.width - 1, 0);\n var rgbv_so = pixelAt(idata, 0, idata.height - 1);\n var rgbv_se = pixelAt(idata, idata.width - 1, idata.height - 1);\n var thres = threshold || 10;\n if (rgbDistance(rgbv_no, rgbv_ne) < thres &&\n rgbDistance(rgbv_ne, rgbv_se) < thres &&\n rgbDistance(rgbv_se, rgbv_so) < thres &&\n rgbDistance(rgbv_so, rgbv_no) < thres) {\n var mean = rgbMean([rgbv_ne, rgbv_no, rgbv_se, rgbv_so]);\n var mask = [];\n for (var i = 0; i < idata.width * idata.height; i++) {\n var d = rgbDistance(mean, [\n idata.data[i * 4],\n idata.data[i * 4 + 1],\n idata.data[i * 4 + 2]\n ]);\n mask[i] = d < thres ? 0 : 255;\n }\n return mask;\n }\n}\nfunction applyMask(idata, mask) {\n for (var i = 0; i < idata.width * idata.height; i++) {\n idata.data[4 * i + 3] = mask[i];\n }\n}\nfunction erodeMask(mask, sw, sh) {\n var weights = [1, 1, 1, 1, 0, 1, 1, 1, 1];\n var side = Math.round(Math.sqrt(weights.length));\n var halfSide = Math.floor(side / 2);\n var maskResult = [];\n for (var y = 0; y < sh; y++) {\n for (var x = 0; x < sw; x++) {\n var so = y * sw + x;\n var a = 0;\n for (var cy = 0; cy < side; cy++) {\n for (var cx = 0; cx < side; cx++) {\n var scy = y + cy - halfSide;\n var scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n var srcOff = scy * sw + scx;\n var wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a === 255 * 8 ? 255 : 0;\n }\n }\n return maskResult;\n}\nfunction dilateMask(mask, sw, sh) {\n var weights = [1, 1, 1, 1, 1, 1, 1, 1, 1];\n var side = Math.round(Math.sqrt(weights.length));\n var halfSide = Math.floor(side / 2);\n var maskResult = [];\n for (var y = 0; y < sh; y++) {\n for (var x = 0; x < sw; x++) {\n var so = y * sw + x;\n var a = 0;\n for (var cy = 0; cy < side; cy++) {\n for (var cx = 0; cx < side; cx++) {\n var scy = y + cy - halfSide;\n var scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n var srcOff = scy * sw + scx;\n var wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a >= 255 * 4 ? 255 : 0;\n }\n }\n return maskResult;\n}\nfunction smoothEdgeMask(mask, sw, sh) {\n var weights = [1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9];\n var side = Math.round(Math.sqrt(weights.length));\n var halfSide = Math.floor(side / 2);\n var maskResult = [];\n for (var y = 0; y < sh; y++) {\n for (var x = 0; x < sw; x++) {\n var so = y * sw + x;\n var a = 0;\n for (var cy = 0; cy < side; cy++) {\n for (var cx = 0; cx < side; cx++) {\n var scy = y + cy - halfSide;\n var scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n var srcOff = scy * sw + scx;\n var wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a;\n }\n }\n return maskResult;\n}\nvar Mask = function (imageData) {\n var threshold = this.threshold(), mask = backgroundMask(imageData, threshold);\n if (mask) {\n mask = erodeMask(mask, imageData.width, imageData.height);\n mask = dilateMask(mask, imageData.width, imageData.height);\n mask = smoothEdgeMask(mask, imageData.width, imageData.height);\n applyMask(imageData, mask);\n }\n return imageData;\n};\nexports.Mask = Mask;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'threshold', 0, Validators_1.getNumberValidator(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = exports.Transform = exports.Collection = void 0;\nvar Global_1 = require(\"./Global\");\nvar Collection = (function () {\n function Collection() {\n }\n Collection.toCollection = function (arr) {\n var collection = new Collection(), len = arr.length, n;\n for (n = 0; n < len; n++) {\n collection.push(arr[n]);\n }\n return collection;\n };\n Collection._mapMethod = function (methodName) {\n Collection.prototype[methodName] = function () {\n var len = this.length, i;\n var args = [].slice.call(arguments);\n for (i = 0; i < len; i++) {\n this[i][methodName].apply(this[i], args);\n }\n return this;\n };\n };\n Collection.mapMethods = function (constructor) {\n var prot = constructor.prototype;\n for (var methodName in prot) {\n Collection._mapMethod(methodName);\n }\n };\n return Collection;\n}());\nexports.Collection = Collection;\nCollection.prototype = [];\nCollection.prototype.each = function (func) {\n for (var n = 0; n < this.length; n++) {\n func(this[n], n);\n }\n};\nCollection.prototype.toArray = function () {\n var arr = [], len = this.length, n;\n for (n = 0; n < len; n++) {\n arr.push(this[n]);\n }\n return arr;\n};\nvar Transform = (function () {\n function Transform(m) {\n if (m === void 0) { m = [1, 0, 0, 1, 0, 0]; }\n this.dirty = false;\n this.m = (m && m.slice()) || [1, 0, 0, 1, 0, 0];\n }\n Transform.prototype.reset = function () {\n this.m[0] = 1;\n this.m[1] = 0;\n this.m[2] = 0;\n this.m[3] = 1;\n this.m[4] = 0;\n this.m[5] = 0;\n };\n Transform.prototype.copy = function () {\n return new Transform(this.m);\n };\n Transform.prototype.copyInto = function (tr) {\n tr.m[0] = this.m[0];\n tr.m[1] = this.m[1];\n tr.m[2] = this.m[2];\n tr.m[3] = this.m[3];\n tr.m[4] = this.m[4];\n tr.m[5] = this.m[5];\n };\n Transform.prototype.point = function (point) {\n var m = this.m;\n return {\n x: m[0] * point.x + m[2] * point.y + m[4],\n y: m[1] * point.x + m[3] * point.y + m[5],\n };\n };\n Transform.prototype.translate = function (x, y) {\n this.m[4] += this.m[0] * x + this.m[2] * y;\n this.m[5] += this.m[1] * x + this.m[3] * y;\n return this;\n };\n Transform.prototype.scale = function (sx, sy) {\n this.m[0] *= sx;\n this.m[1] *= sx;\n this.m[2] *= sy;\n this.m[3] *= sy;\n return this;\n };\n Transform.prototype.rotate = function (rad) {\n var c = Math.cos(rad);\n var s = Math.sin(rad);\n var m11 = this.m[0] * c + this.m[2] * s;\n var m12 = this.m[1] * c + this.m[3] * s;\n var m21 = this.m[0] * -s + this.m[2] * c;\n var m22 = this.m[1] * -s + this.m[3] * c;\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n return this;\n };\n Transform.prototype.getTranslation = function () {\n return {\n x: this.m[4],\n y: this.m[5],\n };\n };\n Transform.prototype.skew = function (sx, sy) {\n var m11 = this.m[0] + this.m[2] * sy;\n var m12 = this.m[1] + this.m[3] * sy;\n var m21 = this.m[2] + this.m[0] * sx;\n var m22 = this.m[3] + this.m[1] * sx;\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n return this;\n };\n Transform.prototype.multiply = function (matrix) {\n var m11 = this.m[0] * matrix.m[0] + this.m[2] * matrix.m[1];\n var m12 = this.m[1] * matrix.m[0] + this.m[3] * matrix.m[1];\n var m21 = this.m[0] * matrix.m[2] + this.m[2] * matrix.m[3];\n var m22 = this.m[1] * matrix.m[2] + this.m[3] * matrix.m[3];\n var dx = this.m[0] * matrix.m[4] + this.m[2] * matrix.m[5] + this.m[4];\n var dy = this.m[1] * matrix.m[4] + this.m[3] * matrix.m[5] + this.m[5];\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n this.m[4] = dx;\n this.m[5] = dy;\n return this;\n };\n Transform.prototype.invert = function () {\n var d = 1 / (this.m[0] * this.m[3] - this.m[1] * this.m[2]);\n var m0 = this.m[3] * d;\n var m1 = -this.m[1] * d;\n var m2 = -this.m[2] * d;\n var m3 = this.m[0] * d;\n var m4 = d * (this.m[2] * this.m[5] - this.m[3] * this.m[4]);\n var m5 = d * (this.m[1] * this.m[4] - this.m[0] * this.m[5]);\n this.m[0] = m0;\n this.m[1] = m1;\n this.m[2] = m2;\n this.m[3] = m3;\n this.m[4] = m4;\n this.m[5] = m5;\n return this;\n };\n Transform.prototype.getMatrix = function () {\n return this.m;\n };\n Transform.prototype.setAbsolutePosition = function (x, y) {\n var m0 = this.m[0], m1 = this.m[1], m2 = this.m[2], m3 = this.m[3], m4 = this.m[4], m5 = this.m[5], yt = (m0 * (y - m5) - m1 * (x - m4)) / (m0 * m3 - m1 * m2), xt = (x - m4 - m2 * yt) / m0;\n return this.translate(xt, yt);\n };\n Transform.prototype.decompose = function () {\n var a = this.m[0];\n var b = this.m[1];\n var c = this.m[2];\n var d = this.m[3];\n var e = this.m[4];\n var f = this.m[5];\n var delta = a * d - b * c;\n var result = {\n x: e,\n y: f,\n rotation: 0,\n scaleX: 0,\n scaleY: 0,\n skewX: 0,\n skewY: 0,\n };\n if (a != 0 || b != 0) {\n var r = Math.sqrt(a * a + b * b);\n result.rotation = b > 0 ? Math.acos(a / r) : -Math.acos(a / r);\n result.scaleX = r;\n result.scaleY = delta / r;\n result.skewX = (a * c + b * d) / delta;\n result.skewY = 0;\n }\n else if (c != 0 || d != 0) {\n var s = Math.sqrt(c * c + d * d);\n result.rotation =\n Math.PI / 2 - (d > 0 ? Math.acos(-c / s) : -Math.acos(c / s));\n result.scaleX = delta / s;\n result.scaleY = s;\n result.skewX = 0;\n result.skewY = (a * c + b * d) / delta;\n }\n else {\n }\n result.rotation = exports.Util._getRotation(result.rotation);\n return result;\n };\n return Transform;\n}());\nexports.Transform = Transform;\nvar OBJECT_ARRAY = '[object Array]', OBJECT_NUMBER = '[object Number]', OBJECT_STRING = '[object String]', OBJECT_BOOLEAN = '[object Boolean]', PI_OVER_DEG180 = Math.PI / 180, DEG180_OVER_PI = 180 / Math.PI, HASH = '#', EMPTY_STRING = '', ZERO = '0', KONVA_WARNING = 'Konva warning: ', KONVA_ERROR = 'Konva error: ', RGB_PAREN = 'rgb(', COLORS = {\n aliceblue: [240, 248, 255],\n antiquewhite: [250, 235, 215],\n aqua: [0, 255, 255],\n aquamarine: [127, 255, 212],\n azure: [240, 255, 255],\n beige: [245, 245, 220],\n bisque: [255, 228, 196],\n black: [0, 0, 0],\n blanchedalmond: [255, 235, 205],\n blue: [0, 0, 255],\n blueviolet: [138, 43, 226],\n brown: [165, 42, 42],\n burlywood: [222, 184, 135],\n cadetblue: [95, 158, 160],\n chartreuse: [127, 255, 0],\n chocolate: [210, 105, 30],\n coral: [255, 127, 80],\n cornflowerblue: [100, 149, 237],\n cornsilk: [255, 248, 220],\n crimson: [220, 20, 60],\n cyan: [0, 255, 255],\n darkblue: [0, 0, 139],\n darkcyan: [0, 139, 139],\n darkgoldenrod: [184, 132, 11],\n darkgray: [169, 169, 169],\n darkgreen: [0, 100, 0],\n darkgrey: [169, 169, 169],\n darkkhaki: [189, 183, 107],\n darkmagenta: [139, 0, 139],\n darkolivegreen: [85, 107, 47],\n darkorange: [255, 140, 0],\n darkorchid: [153, 50, 204],\n darkred: [139, 0, 0],\n darksalmon: [233, 150, 122],\n darkseagreen: [143, 188, 143],\n darkslateblue: [72, 61, 139],\n darkslategray: [47, 79, 79],\n darkslategrey: [47, 79, 79],\n darkturquoise: [0, 206, 209],\n darkviolet: [148, 0, 211],\n deeppink: [255, 20, 147],\n deepskyblue: [0, 191, 255],\n dimgray: [105, 105, 105],\n dimgrey: [105, 105, 105],\n dodgerblue: [30, 144, 255],\n firebrick: [178, 34, 34],\n floralwhite: [255, 255, 240],\n forestgreen: [34, 139, 34],\n fuchsia: [255, 0, 255],\n gainsboro: [220, 220, 220],\n ghostwhite: [248, 248, 255],\n gold: [255, 215, 0],\n goldenrod: [218, 165, 32],\n gray: [128, 128, 128],\n green: [0, 128, 0],\n greenyellow: [173, 255, 47],\n grey: [128, 128, 128],\n honeydew: [240, 255, 240],\n hotpink: [255, 105, 180],\n indianred: [205, 92, 92],\n indigo: [75, 0, 130],\n ivory: [255, 255, 240],\n khaki: [240, 230, 140],\n lavender: [230, 230, 250],\n lavenderblush: [255, 240, 245],\n lawngreen: [124, 252, 0],\n lemonchiffon: [255, 250, 205],\n lightblue: [173, 216, 230],\n lightcoral: [240, 128, 128],\n lightcyan: [224, 255, 255],\n lightgoldenrodyellow: [250, 250, 210],\n lightgray: [211, 211, 211],\n lightgreen: [144, 238, 144],\n lightgrey: [211, 211, 211],\n lightpink: [255, 182, 193],\n lightsalmon: [255, 160, 122],\n lightseagreen: [32, 178, 170],\n lightskyblue: [135, 206, 250],\n lightslategray: [119, 136, 153],\n lightslategrey: [119, 136, 153],\n lightsteelblue: [176, 196, 222],\n lightyellow: [255, 255, 224],\n lime: [0, 255, 0],\n limegreen: [50, 205, 50],\n linen: [250, 240, 230],\n magenta: [255, 0, 255],\n maroon: [128, 0, 0],\n mediumaquamarine: [102, 205, 170],\n mediumblue: [0, 0, 205],\n mediumorchid: [186, 85, 211],\n mediumpurple: [147, 112, 219],\n mediumseagreen: [60, 179, 113],\n mediumslateblue: [123, 104, 238],\n mediumspringgreen: [0, 250, 154],\n mediumturquoise: [72, 209, 204],\n mediumvioletred: [199, 21, 133],\n midnightblue: [25, 25, 112],\n mintcream: [245, 255, 250],\n mistyrose: [255, 228, 225],\n moccasin: [255, 228, 181],\n navajowhite: [255, 222, 173],\n navy: [0, 0, 128],\n oldlace: [253, 245, 230],\n olive: [128, 128, 0],\n olivedrab: [107, 142, 35],\n orange: [255, 165, 0],\n orangered: [255, 69, 0],\n orchid: [218, 112, 214],\n palegoldenrod: [238, 232, 170],\n palegreen: [152, 251, 152],\n paleturquoise: [175, 238, 238],\n palevioletred: [219, 112, 147],\n papayawhip: [255, 239, 213],\n peachpuff: [255, 218, 185],\n peru: [205, 133, 63],\n pink: [255, 192, 203],\n plum: [221, 160, 203],\n powderblue: [176, 224, 230],\n purple: [128, 0, 128],\n rebeccapurple: [102, 51, 153],\n red: [255, 0, 0],\n rosybrown: [188, 143, 143],\n royalblue: [65, 105, 225],\n saddlebrown: [139, 69, 19],\n salmon: [250, 128, 114],\n sandybrown: [244, 164, 96],\n seagreen: [46, 139, 87],\n seashell: [255, 245, 238],\n sienna: [160, 82, 45],\n silver: [192, 192, 192],\n skyblue: [135, 206, 235],\n slateblue: [106, 90, 205],\n slategray: [119, 128, 144],\n slategrey: [119, 128, 144],\n snow: [255, 255, 250],\n springgreen: [0, 255, 127],\n steelblue: [70, 130, 180],\n tan: [210, 180, 140],\n teal: [0, 128, 128],\n thistle: [216, 191, 216],\n transparent: [255, 255, 255, 0],\n tomato: [255, 99, 71],\n turquoise: [64, 224, 208],\n violet: [238, 130, 238],\n wheat: [245, 222, 179],\n white: [255, 255, 255],\n whitesmoke: [245, 245, 245],\n yellow: [255, 255, 0],\n yellowgreen: [154, 205, 5],\n}, RGB_REGEX = /rgb\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3})\\)/, animQueue = [];\nexports.Util = {\n _isElement: function (obj) {\n return !!(obj && obj.nodeType == 1);\n },\n _isFunction: function (obj) {\n return !!(obj && obj.constructor && obj.call && obj.apply);\n },\n _isPlainObject: function (obj) {\n return !!obj && obj.constructor === Object;\n },\n _isArray: function (obj) {\n return Object.prototype.toString.call(obj) === OBJECT_ARRAY;\n },\n _isNumber: function (obj) {\n return (Object.prototype.toString.call(obj) === OBJECT_NUMBER &&\n !isNaN(obj) &&\n isFinite(obj));\n },\n _isString: function (obj) {\n return Object.prototype.toString.call(obj) === OBJECT_STRING;\n },\n _isBoolean: function (obj) {\n return Object.prototype.toString.call(obj) === OBJECT_BOOLEAN;\n },\n isObject: function (val) {\n return val instanceof Object;\n },\n isValidSelector: function (selector) {\n if (typeof selector !== 'string') {\n return false;\n }\n var firstChar = selector[0];\n return (firstChar === '#' ||\n firstChar === '.' ||\n firstChar === firstChar.toUpperCase());\n },\n _sign: function (number) {\n if (number === 0) {\n return 1;\n }\n if (number > 0) {\n return 1;\n }\n else {\n return -1;\n }\n },\n requestAnimFrame: function (callback) {\n animQueue.push(callback);\n if (animQueue.length === 1) {\n requestAnimationFrame(function () {\n var queue = animQueue;\n animQueue = [];\n queue.forEach(function (cb) {\n cb();\n });\n });\n }\n },\n createCanvasElement: function () {\n var canvas = document.createElement('canvas');\n try {\n canvas.style = canvas.style || {};\n }\n catch (e) { }\n return canvas;\n },\n createImageElement: function () {\n return document.createElement('img');\n },\n _isInDocument: function (el) {\n while ((el = el.parentNode)) {\n if (el == document) {\n return true;\n }\n }\n return false;\n },\n _simplifyArray: function (arr) {\n var retArr = [], len = arr.length, util = exports.Util, n, val;\n for (n = 0; n < len; n++) {\n val = arr[n];\n if (util._isNumber(val)) {\n val = Math.round(val * 1000) / 1000;\n }\n else if (!util._isString(val)) {\n val = val.toString();\n }\n retArr.push(val);\n }\n return retArr;\n },\n _urlToImage: function (url, callback) {\n var imageObj = new Global_1.glob.Image();\n imageObj.onload = function () {\n callback(imageObj);\n };\n imageObj.src = url;\n },\n _rgbToHex: function (r, g, b) {\n return ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);\n },\n _hexToRgb: function (hex) {\n hex = hex.replace(HASH, EMPTY_STRING);\n var bigint = parseInt(hex, 16);\n return {\n r: (bigint >> 16) & 255,\n g: (bigint >> 8) & 255,\n b: bigint & 255,\n };\n },\n getRandomColor: function () {\n var randColor = ((Math.random() * 0xffffff) << 0).toString(16);\n while (randColor.length < 6) {\n randColor = ZERO + randColor;\n }\n return HASH + randColor;\n },\n get: function (val, def) {\n if (val === undefined) {\n return def;\n }\n else {\n return val;\n }\n },\n getRGB: function (color) {\n var rgb;\n if (color in COLORS) {\n rgb = COLORS[color];\n return {\n r: rgb[0],\n g: rgb[1],\n b: rgb[2],\n };\n }\n else if (color[0] === HASH) {\n return this._hexToRgb(color.substring(1));\n }\n else if (color.substr(0, 4) === RGB_PAREN) {\n rgb = RGB_REGEX.exec(color.replace(/ /g, ''));\n return {\n r: parseInt(rgb[1], 10),\n g: parseInt(rgb[2], 10),\n b: parseInt(rgb[3], 10),\n };\n }\n else {\n return {\n r: 0,\n g: 0,\n b: 0,\n };\n }\n },\n colorToRGBA: function (str) {\n str = str || 'black';\n return (exports.Util._namedColorToRBA(str) ||\n exports.Util._hex3ColorToRGBA(str) ||\n exports.Util._hex6ColorToRGBA(str) ||\n exports.Util._rgbColorToRGBA(str) ||\n exports.Util._rgbaColorToRGBA(str) ||\n exports.Util._hslColorToRGBA(str));\n },\n _namedColorToRBA: function (str) {\n var c = COLORS[str.toLowerCase()];\n if (!c) {\n return null;\n }\n return {\n r: c[0],\n g: c[1],\n b: c[2],\n a: 1,\n };\n },\n _rgbColorToRGBA: function (str) {\n if (str.indexOf('rgb(') === 0) {\n str = str.match(/rgb\\(([^)]+)\\)/)[1];\n var parts = str.split(/ *, */).map(Number);\n return {\n r: parts[0],\n g: parts[1],\n b: parts[2],\n a: 1,\n };\n }\n },\n _rgbaColorToRGBA: function (str) {\n if (str.indexOf('rgba(') === 0) {\n str = str.match(/rgba\\(([^)]+)\\)/)[1];\n var parts = str.split(/ *, */).map(Number);\n return {\n r: parts[0],\n g: parts[1],\n b: parts[2],\n a: parts[3],\n };\n }\n },\n _hex6ColorToRGBA: function (str) {\n if (str[0] === '#' && str.length === 7) {\n return {\n r: parseInt(str.slice(1, 3), 16),\n g: parseInt(str.slice(3, 5), 16),\n b: parseInt(str.slice(5, 7), 16),\n a: 1,\n };\n }\n },\n _hex3ColorToRGBA: function (str) {\n if (str[0] === '#' && str.length === 4) {\n return {\n r: parseInt(str[1] + str[1], 16),\n g: parseInt(str[2] + str[2], 16),\n b: parseInt(str[3] + str[3], 16),\n a: 1,\n };\n }\n },\n _hslColorToRGBA: function (str) {\n if (/hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.test(str)) {\n var _a = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(str), _ = _a[0], hsl = _a.slice(1);\n var h = Number(hsl[0]) / 360;\n var s = Number(hsl[1]) / 100;\n var l = Number(hsl[2]) / 100;\n var t2 = void 0;\n var t3 = void 0;\n var val = void 0;\n if (s === 0) {\n val = l * 255;\n return {\n r: Math.round(val),\n g: Math.round(val),\n b: Math.round(val),\n a: 1,\n };\n }\n if (l < 0.5) {\n t2 = l * (1 + s);\n }\n else {\n t2 = l + s - l * s;\n }\n var t1 = 2 * l - t2;\n var rgb = [0, 0, 0];\n for (var i = 0; i < 3; i++) {\n t3 = h + (1 / 3) * -(i - 1);\n if (t3 < 0) {\n t3++;\n }\n if (t3 > 1) {\n t3--;\n }\n if (6 * t3 < 1) {\n val = t1 + (t2 - t1) * 6 * t3;\n }\n else if (2 * t3 < 1) {\n val = t2;\n }\n else if (3 * t3 < 2) {\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n }\n else {\n val = t1;\n }\n rgb[i] = val * 255;\n }\n return {\n r: Math.round(rgb[0]),\n g: Math.round(rgb[1]),\n b: Math.round(rgb[2]),\n a: 1,\n };\n }\n },\n haveIntersection: function (r1, r2) {\n return !(r2.x > r1.x + r1.width ||\n r2.x + r2.width < r1.x ||\n r2.y > r1.y + r1.height ||\n r2.y + r2.height < r1.y);\n },\n cloneObject: function (obj) {\n var retObj = {};\n for (var key in obj) {\n if (this._isPlainObject(obj[key])) {\n retObj[key] = this.cloneObject(obj[key]);\n }\n else if (this._isArray(obj[key])) {\n retObj[key] = this.cloneArray(obj[key]);\n }\n else {\n retObj[key] = obj[key];\n }\n }\n return retObj;\n },\n cloneArray: function (arr) {\n return arr.slice(0);\n },\n _degToRad: function (deg) {\n return deg * PI_OVER_DEG180;\n },\n _radToDeg: function (rad) {\n return rad * DEG180_OVER_PI;\n },\n _getRotation: function (radians) {\n return Global_1.Konva.angleDeg ? exports.Util._radToDeg(radians) : radians;\n },\n _capitalize: function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n },\n throw: function (str) {\n throw new Error(KONVA_ERROR + str);\n },\n error: function (str) {\n console.error(KONVA_ERROR + str);\n },\n warn: function (str) {\n if (!Global_1.Konva.showWarnings) {\n return;\n }\n console.warn(KONVA_WARNING + str);\n },\n extend: function (child, parent) {\n function Ctor() {\n this.constructor = child;\n }\n Ctor.prototype = parent.prototype;\n var oldProto = child.prototype;\n child.prototype = new Ctor();\n for (var key in oldProto) {\n if (oldProto.hasOwnProperty(key)) {\n child.prototype[key] = oldProto[key];\n }\n }\n child.__super__ = parent.prototype;\n child.super = parent;\n },\n _getControlPoints: function (x0, y0, x1, y1, x2, y2, t) {\n var d01 = Math.sqrt(Math.pow(x1 - x0, 2) + Math.pow(y1 - y0, 2)), d12 = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)), fa = (t * d01) / (d01 + d12), fb = (t * d12) / (d01 + d12), p1x = x1 - fa * (x2 - x0), p1y = y1 - fa * (y2 - y0), p2x = x1 + fb * (x2 - x0), p2y = y1 + fb * (y2 - y0);\n return [p1x, p1y, p2x, p2y];\n },\n _expandPoints: function (p, tension) {\n var len = p.length, allPoints = [], n, cp;\n for (n = 2; n < len - 2; n += 2) {\n cp = exports.Util._getControlPoints(p[n - 2], p[n - 1], p[n], p[n + 1], p[n + 2], p[n + 3], tension);\n if (isNaN(cp[0])) {\n continue;\n }\n allPoints.push(cp[0]);\n allPoints.push(cp[1]);\n allPoints.push(p[n]);\n allPoints.push(p[n + 1]);\n allPoints.push(cp[2]);\n allPoints.push(cp[3]);\n }\n return allPoints;\n },\n each: function (obj, func) {\n for (var key in obj) {\n func(key, obj[key]);\n }\n },\n _inRange: function (val, left, right) {\n return left <= val && val < right;\n },\n _getProjectionToSegment: function (x1, y1, x2, y2, x3, y3) {\n var x, y, dist;\n var pd2 = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);\n if (pd2 == 0) {\n x = x1;\n y = y1;\n dist = (x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2);\n }\n else {\n var u = ((x3 - x1) * (x2 - x1) + (y3 - y1) * (y2 - y1)) / pd2;\n if (u < 0) {\n x = x1;\n y = y1;\n dist = (x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3);\n }\n else if (u > 1.0) {\n x = x2;\n y = y2;\n dist = (x2 - x3) * (x2 - x3) + (y2 - y3) * (y2 - y3);\n }\n else {\n x = x1 + u * (x2 - x1);\n y = y1 + u * (y2 - y1);\n dist = (x - x3) * (x - x3) + (y - y3) * (y - y3);\n }\n }\n return [x, y, dist];\n },\n _getProjectionToLine: function (pt, line, isClosed) {\n var pc = exports.Util.cloneObject(pt);\n var dist = Number.MAX_VALUE;\n line.forEach(function (p1, i) {\n if (!isClosed && i === line.length - 1) {\n return;\n }\n var p2 = line[(i + 1) % line.length];\n var proj = exports.Util._getProjectionToSegment(p1.x, p1.y, p2.x, p2.y, pt.x, pt.y);\n var px = proj[0], py = proj[1], pdist = proj[2];\n if (pdist < dist) {\n pc.x = px;\n pc.y = py;\n dist = pdist;\n }\n });\n return pc;\n },\n _prepareArrayForTween: function (startArray, endArray, isClosed) {\n var n, start = [], end = [];\n if (startArray.length > endArray.length) {\n var temp = endArray;\n endArray = startArray;\n startArray = temp;\n }\n for (n = 0; n < startArray.length; n += 2) {\n start.push({\n x: startArray[n],\n y: startArray[n + 1],\n });\n }\n for (n = 0; n < endArray.length; n += 2) {\n end.push({\n x: endArray[n],\n y: endArray[n + 1],\n });\n }\n var newStart = [];\n end.forEach(function (point) {\n var pr = exports.Util._getProjectionToLine(point, start, isClosed);\n newStart.push(pr.x);\n newStart.push(pr.y);\n });\n return newStart;\n },\n _prepareToStringify: function (obj) {\n var desc;\n obj.visitedByCircularReferenceRemoval = true;\n for (var key in obj) {\n if (!(obj.hasOwnProperty(key) && obj[key] && typeof obj[key] == 'object')) {\n continue;\n }\n desc = Object.getOwnPropertyDescriptor(obj, key);\n if (obj[key].visitedByCircularReferenceRemoval ||\n exports.Util._isElement(obj[key])) {\n if (desc.configurable) {\n delete obj[key];\n }\n else {\n return null;\n }\n }\n else if (exports.Util._prepareToStringify(obj[key]) === null) {\n if (desc.configurable) {\n delete obj[key];\n }\n else {\n return null;\n }\n }\n }\n delete obj.visitedByCircularReferenceRemoval;\n return obj;\n },\n _assign: function (target, source) {\n for (var key in source) {\n target[key] = source[key];\n }\n return target;\n },\n _getFirstPointerId: function (evt) {\n if (!evt.touches) {\n return 999;\n }\n else {\n return evt.changedTouches[0].identifier;\n }\n },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RGBA = void 0;\nvar Factory_1 = require(\"../Factory\");\nvar Node_1 = require(\"../Node\");\nvar Validators_1 = require(\"../Validators\");\nvar RGBA = function (imageData) {\n var data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue(), alpha = this.alpha(), i, ia;\n for (i = 0; i < nPixels; i += 4) {\n ia = 1 - alpha;\n data[i] = red * alpha + data[i] * ia;\n data[i + 1] = green * alpha + data[i + 1] * ia;\n data[i + 2] = blue * alpha + data[i + 2] * ia;\n }\n};\nexports.RGBA = RGBA;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'red', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'green', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'blue', 0, Validators_1.RGBComponent, Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'alpha', 1, function (val) {\n this._filterUpToDate = false;\n if (val > 1) {\n return 1;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return val;\n }\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Noise = void 0;\nvar Factory_1 = require(\"../Factory\");\nvar Node_1 = require(\"../Node\");\nvar Validators_1 = require(\"../Validators\");\nvar Noise = function (imageData) {\n var amount = this.noise() * 255, data = imageData.data, nPixels = data.length, half = amount / 2, i;\n for (i = 0; i < nPixels; i += 4) {\n data[i + 0] += half - 2 * half * Math.random();\n data[i + 1] += half - 2 * half * Math.random();\n data[i + 2] += half - 2 * half * Math.random();\n }\n};\nexports.Noise = Noise;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'noise', 0.2, Validators_1.getNumberValidator(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Enhance = void 0;\nvar Factory_1 = require(\"../Factory\");\nvar Node_1 = require(\"../Node\");\nvar Validators_1 = require(\"../Validators\");\nfunction remap(fromValue, fromMin, fromMax, toMin, toMax) {\n var fromRange = fromMax - fromMin, toRange = toMax - toMin, toValue;\n if (fromRange === 0) {\n return toMin + toRange / 2;\n }\n if (toRange === 0) {\n return toMin;\n }\n toValue = (fromValue - fromMin) / fromRange;\n toValue = toRange * toValue + toMin;\n return toValue;\n}\nvar Enhance = function (imageData) {\n var data = imageData.data, nSubPixels = data.length, rMin = data[0], rMax = rMin, r, gMin = data[1], gMax = gMin, g, bMin = data[2], bMax = bMin, b, i;\n var enhanceAmount = this.enhance();\n if (enhanceAmount === 0) {\n return;\n }\n for (i = 0; i < nSubPixels; i += 4) {\n r = data[i + 0];\n if (r < rMin) {\n rMin = r;\n }\n else if (r > rMax) {\n rMax = r;\n }\n g = data[i + 1];\n if (g < gMin) {\n gMin = g;\n }\n else if (g > gMax) {\n gMax = g;\n }\n b = data[i + 2];\n if (b < bMin) {\n bMin = b;\n }\n else if (b > bMax) {\n bMax = b;\n }\n }\n if (rMax === rMin) {\n rMax = 255;\n rMin = 0;\n }\n if (gMax === gMin) {\n gMax = 255;\n gMin = 0;\n }\n if (bMax === bMin) {\n bMax = 255;\n bMin = 0;\n }\n var rMid, rGoalMax, rGoalMin, gMid, gGoalMax, gGoalMin, bMid, bGoalMax, bGoalMin;\n if (enhanceAmount > 0) {\n rGoalMax = rMax + enhanceAmount * (255 - rMax);\n rGoalMin = rMin - enhanceAmount * (rMin - 0);\n gGoalMax = gMax + enhanceAmount * (255 - gMax);\n gGoalMin = gMin - enhanceAmount * (gMin - 0);\n bGoalMax = bMax + enhanceAmount * (255 - bMax);\n bGoalMin = bMin - enhanceAmount * (bMin - 0);\n }\n else {\n rMid = (rMax + rMin) * 0.5;\n rGoalMax = rMax + enhanceAmount * (rMax - rMid);\n rGoalMin = rMin + enhanceAmount * (rMin - rMid);\n gMid = (gMax + gMin) * 0.5;\n gGoalMax = gMax + enhanceAmount * (gMax - gMid);\n gGoalMin = gMin + enhanceAmount * (gMin - gMid);\n bMid = (bMax + bMin) * 0.5;\n bGoalMax = bMax + enhanceAmount * (bMax - bMid);\n bGoalMin = bMin + enhanceAmount * (bMin - bMid);\n }\n for (i = 0; i < nSubPixels; i += 4) {\n data[i + 0] = remap(data[i + 0], rMin, rMax, rGoalMin, rGoalMax);\n data[i + 1] = remap(data[i + 1], gMin, gMax, gGoalMin, gGoalMax);\n data[i + 2] = remap(data[i + 2], bMin, bMax, bGoalMin, bGoalMax);\n }\n};\nexports.Enhance = Enhance;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'enhance', 0, Validators_1.getNumberValidator(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Blur = void 0;\nvar Factory_1 = require(\"../Factory\");\nvar Node_1 = require(\"../Node\");\nvar Validators_1 = require(\"../Validators\");\nfunction BlurStack() {\n this.r = 0;\n this.g = 0;\n this.b = 0;\n this.a = 0;\n this.next = null;\n}\nvar mul_table = [\n 512,\n 512,\n 456,\n 512,\n 328,\n 456,\n 335,\n 512,\n 405,\n 328,\n 271,\n 456,\n 388,\n 335,\n 292,\n 512,\n 454,\n 405,\n 364,\n 328,\n 298,\n 271,\n 496,\n 456,\n 420,\n 388,\n 360,\n 335,\n 312,\n 292,\n 273,\n 512,\n 482,\n 454,\n 428,\n 405,\n 383,\n 364,\n 345,\n 328,\n 312,\n 298,\n 284,\n 271,\n 259,\n 496,\n 475,\n 456,\n 437,\n 420,\n 404,\n 388,\n 374,\n 360,\n 347,\n 335,\n 323,\n 312,\n 302,\n 292,\n 282,\n 273,\n 265,\n 512,\n 497,\n 482,\n 468,\n 454,\n 441,\n 428,\n 417,\n 405,\n 394,\n 383,\n 373,\n 364,\n 354,\n 345,\n 337,\n 328,\n 320,\n 312,\n 305,\n 298,\n 291,\n 284,\n 278,\n 271,\n 265,\n 259,\n 507,\n 496,\n 485,\n 475,\n 465,\n 456,\n 446,\n 437,\n 428,\n 420,\n 412,\n 404,\n 396,\n 388,\n 381,\n 374,\n 367,\n 360,\n 354,\n 347,\n 341,\n 335,\n 329,\n 323,\n 318,\n 312,\n 307,\n 302,\n 297,\n 292,\n 287,\n 282,\n 278,\n 273,\n 269,\n 265,\n 261,\n 512,\n 505,\n 497,\n 489,\n 482,\n 475,\n 468,\n 461,\n 454,\n 447,\n 441,\n 435,\n 428,\n 422,\n 417,\n 411,\n 405,\n 399,\n 394,\n 389,\n 383,\n 378,\n 373,\n 368,\n 364,\n 359,\n 354,\n 350,\n 345,\n 341,\n 337,\n 332,\n 328,\n 324,\n 320,\n 316,\n 312,\n 309,\n 305,\n 301,\n 298,\n 294,\n 291,\n 287,\n 284,\n 281,\n 278,\n 274,\n 271,\n 268,\n 265,\n 262,\n 259,\n 257,\n 507,\n 501,\n 496,\n 491,\n 485,\n 480,\n 475,\n 470,\n 465,\n 460,\n 456,\n 451,\n 446,\n 442,\n 437,\n 433,\n 428,\n 424,\n 420,\n 416,\n 412,\n 408,\n 404,\n 400,\n 396,\n 392,\n 388,\n 385,\n 381,\n 377,\n 374,\n 370,\n 367,\n 363,\n 360,\n 357,\n 354,\n 350,\n 347,\n 344,\n 341,\n 338,\n 335,\n 332,\n 329,\n 326,\n 323,\n 320,\n 318,\n 315,\n 312,\n 310,\n 307,\n 304,\n 302,\n 299,\n 297,\n 294,\n 292,\n 289,\n 287,\n 285,\n 282,\n 280,\n 278,\n 275,\n 273,\n 271,\n 269,\n 267,\n 265,\n 263,\n 261,\n 259\n];\nvar shg_table = [\n 9,\n 11,\n 12,\n 13,\n 13,\n 14,\n 14,\n 15,\n 15,\n 15,\n 15,\n 16,\n 16,\n 16,\n 16,\n 17,\n 17,\n 17,\n 17,\n 17,\n 17,\n 17,\n 18,\n 18,\n 18,\n 18,\n 18,\n 18,\n 18,\n 18,\n 18,\n 19,\n 19,\n 19,\n 19,\n 19,\n 19,\n 19,\n 19,\n 19,\n 19,\n 19,\n 19,\n 19,\n 19,\n 20,\n 20,\n 20,\n 20,\n 20,\n 20,\n 20,\n 20,\n 20,\n 20,\n 20,\n 20,\n 20,\n 20,\n 20,\n 20,\n 20,\n 20,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 21,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 22,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 23,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24,\n 24\n];\nfunction filterGaussBlurRGBA(imageData, radius) {\n var pixels = imageData.data, width = imageData.width, height = imageData.height;\n var x, y, i, p, yp, yi, yw, r_sum, g_sum, b_sum, a_sum, r_out_sum, g_out_sum, b_out_sum, a_out_sum, r_in_sum, g_in_sum, b_in_sum, a_in_sum, pr, pg, pb, pa, rbs;\n var div = radius + radius + 1, widthMinus1 = width - 1, heightMinus1 = height - 1, radiusPlus1 = radius + 1, sumFactor = (radiusPlus1 * (radiusPlus1 + 1)) / 2, stackStart = new BlurStack(), stackEnd = null, stack = stackStart, stackIn = null, stackOut = null, mul_sum = mul_table[radius], shg_sum = shg_table[radius];\n for (i = 1; i < div; i++) {\n stack = stack.next = new BlurStack();\n if (i === radiusPlus1) {\n stackEnd = stack;\n }\n }\n stack.next = stackStart;\n yw = yi = 0;\n for (y = 0; y < height; y++) {\n r_in_sum = g_in_sum = b_in_sum = a_in_sum = r_sum = g_sum = b_sum = a_sum = 0;\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n a_sum += sumFactor * pa;\n stack = stackStart;\n for (i = 0; i < radiusPlus1; i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n for (i = 1; i < radiusPlus1; i++) {\n p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);\n r_sum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = pg = pixels[p + 1]) * rbs;\n b_sum += (stack.b = pb = pixels[p + 2]) * rbs;\n a_sum += (stack.a = pa = pixels[p + 3]) * rbs;\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n a_in_sum += pa;\n stack = stack.next;\n }\n stackIn = stackStart;\n stackOut = stackEnd;\n for (x = 0; x < width; x++) {\n pixels[yi + 3] = pa = (a_sum * mul_sum) >> shg_sum;\n if (pa !== 0) {\n pa = 255 / pa;\n pixels[yi] = ((r_sum * mul_sum) >> shg_sum) * pa;\n pixels[yi + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n pixels[yi + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n }\n else {\n pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\n }\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n a_sum -= a_out_sum;\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n a_out_sum -= stackIn.a;\n p = (yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1)) << 2;\n r_in_sum += stackIn.r = pixels[p];\n g_in_sum += stackIn.g = pixels[p + 1];\n b_in_sum += stackIn.b = pixels[p + 2];\n a_in_sum += stackIn.a = pixels[p + 3];\n r_sum += r_in_sum;\n g_sum += g_in_sum;\n b_sum += b_in_sum;\n a_sum += a_in_sum;\n stackIn = stackIn.next;\n r_out_sum += pr = stackOut.r;\n g_out_sum += pg = stackOut.g;\n b_out_sum += pb = stackOut.b;\n a_out_sum += pa = stackOut.a;\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n a_in_sum -= pa;\n stackOut = stackOut.next;\n yi += 4;\n }\n yw += width;\n }\n for (x = 0; x < width; x++) {\n g_in_sum = b_in_sum = a_in_sum = r_in_sum = g_sum = b_sum = a_sum = r_sum = 0;\n yi = x << 2;\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n a_sum += sumFactor * pa;\n stack = stackStart;\n for (i = 0; i < radiusPlus1; i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n yp = width;\n for (i = 1; i <= radius; i++) {\n yi = (yp + x) << 2;\n r_sum += (stack.r = pr = pixels[yi]) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = pg = pixels[yi + 1]) * rbs;\n b_sum += (stack.b = pb = pixels[yi + 2]) * rbs;\n a_sum += (stack.a = pa = pixels[yi + 3]) * rbs;\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n a_in_sum += pa;\n stack = stack.next;\n if (i < heightMinus1) {\n yp += width;\n }\n }\n yi = x;\n stackIn = stackStart;\n stackOut = stackEnd;\n for (y = 0; y < height; y++) {\n p = yi << 2;\n pixels[p + 3] = pa = (a_sum * mul_sum) >> shg_sum;\n if (pa > 0) {\n pa = 255 / pa;\n pixels[p] = ((r_sum * mul_sum) >> shg_sum) * pa;\n pixels[p + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n pixels[p + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n }\n else {\n pixels[p] = pixels[p + 1] = pixels[p + 2] = 0;\n }\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n a_sum -= a_out_sum;\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n a_out_sum -= stackIn.a;\n p =\n (x +\n ((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width) <<\n 2;\n r_sum += r_in_sum += stackIn.r = pixels[p];\n g_sum += g_in_sum += stackIn.g = pixels[p + 1];\n b_sum += b_in_sum += stackIn.b = pixels[p + 2];\n a_sum += a_in_sum += stackIn.a = pixels[p + 3];\n stackIn = stackIn.next;\n r_out_sum += pr = stackOut.r;\n g_out_sum += pg = stackOut.g;\n b_out_sum += pb = stackOut.b;\n a_out_sum += pa = stackOut.a;\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n a_in_sum -= pa;\n stackOut = stackOut.next;\n yi += width;\n }\n }\n}\nvar Blur = function Blur(imageData) {\n var radius = Math.round(this.blurRadius());\n if (radius > 0) {\n filterGaussBlurRGBA(imageData, radius);\n }\n};\nexports.Blur = Blur;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'blurRadius', 0, Validators_1.getNumberValidator(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Contrast = void 0;\nvar Factory_1 = require(\"../Factory\");\nvar Node_1 = require(\"../Node\");\nvar Validators_1 = require(\"../Validators\");\nvar Contrast = function (imageData) {\n var adjust = Math.pow((this.contrast() + 100) / 100, 2);\n var data = imageData.data, nPixels = data.length, red = 150, green = 150, blue = 150, i;\n for (i = 0; i < nPixels; i += 4) {\n red = data[i];\n green = data[i + 1];\n blue = data[i + 2];\n red /= 255;\n red -= 0.5;\n red *= adjust;\n red += 0.5;\n red *= 255;\n green /= 255;\n green -= 0.5;\n green *= adjust;\n green += 0.5;\n green *= 255;\n blue /= 255;\n blue -= 0.5;\n blue *= adjust;\n blue += 0.5;\n blue *= 255;\n red = red < 0 ? 0 : red > 255 ? 255 : red;\n green = green < 0 ? 0 : green > 255 ? 255 : green;\n blue = blue < 0 ? 0 : blue > 255 ? 255 : blue;\n data[i] = red;\n data[i + 1] = green;\n data[i + 2] = blue;\n }\n};\nexports.Contrast = Contrast;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'contrast', 0, Validators_1.getNumberValidator(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Grayscale = void 0;\nvar Grayscale = function (imageData) {\n var data = imageData.data, len = data.length, i, brightness;\n for (i = 0; i < len; i += 4) {\n brightness = 0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2];\n data[i] = brightness;\n data[i + 1] = brightness;\n data[i + 2] = brightness;\n }\n};\nexports.Grayscale = Grayscale;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._registerNode = exports._NODES_REGISTRY = exports.Konva = exports.glob = exports._parseUA = void 0;\nvar PI_OVER_180 = Math.PI / 180;\nfunction detectBrowser() {\n return (typeof window !== 'undefined' &&\n ({}.toString.call(window) === '[object Window]' ||\n {}.toString.call(window) === '[object global]'));\n}\nvar _detectIE = function (ua) {\n var msie = ua.indexOf('msie ');\n if (msie > 0) {\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n }\n var trident = ua.indexOf('trident/');\n if (trident > 0) {\n var rv = ua.indexOf('rv:');\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\n }\n var edge = ua.indexOf('edge/');\n if (edge > 0) {\n return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\n }\n return false;\n};\nvar _parseUA = function (userAgent) {\n var ua = userAgent.toLowerCase(), match = /(chrome)[ /]([\\w.]+)/.exec(ua) ||\n /(webkit)[ /]([\\w.]+)/.exec(ua) ||\n /(opera)(?:.*version|)[ /]([\\w.]+)/.exec(ua) ||\n /(msie) ([\\w.]+)/.exec(ua) ||\n (ua.indexOf('compatible') < 0 &&\n /(mozilla)(?:.*? rv:([\\w.]+)|)/.exec(ua)) ||\n [], mobile = !!userAgent.match(/Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile/i), ieMobile = !!userAgent.match(/IEMobile/i);\n return {\n browser: match[1] || '',\n version: match[2] || '0',\n isIE: _detectIE(ua),\n mobile: mobile,\n ieMobile: ieMobile\n };\n};\nexports._parseUA = _parseUA;\nexports.glob = typeof global !== 'undefined'\n ? global\n : typeof window !== 'undefined'\n ? window\n : typeof WorkerGlobalScope !== 'undefined'\n ? self\n : {};\nexports.Konva = {\n _global: exports.glob,\n version: '7.2.5',\n isBrowser: detectBrowser(),\n isUnminified: /param/.test(function (param) { }.toString()),\n dblClickWindow: 400,\n getAngle: function (angle) {\n return exports.Konva.angleDeg ? angle * PI_OVER_180 : angle;\n },\n enableTrace: false,\n _pointerEventsEnabled: false,\n hitOnDragEnabled: false,\n captureTouchEventsEnabled: false,\n listenClickTap: false,\n inDblClickWindow: false,\n pixelRatio: undefined,\n dragDistance: 3,\n angleDeg: true,\n showWarnings: true,\n dragButtons: [0, 1],\n isDragging: function () {\n return exports.Konva['DD'].isDragging;\n },\n isDragReady: function () {\n return !!exports.Konva['DD'].node;\n },\n UA: exports._parseUA((exports.glob.navigator && exports.glob.navigator.userAgent) || ''),\n document: exports.glob.document,\n _injectGlobal: function (Konva) {\n exports.glob.Konva = Konva;\n },\n _parseUA: exports._parseUA\n};\nexports._NODES_REGISTRY = {};\nvar _registerNode = function (NodeClass) {\n exports._NODES_REGISTRY[NodeClass.prototype.getClassName()] = NodeClass;\n exports.Konva[NodeClass.prototype.getClassName()] = NodeClass;\n};\nexports._registerNode = _registerNode;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Emboss = void 0;\nvar Factory_1 = require(\"../Factory\");\nvar Node_1 = require(\"../Node\");\nvar Util_1 = require(\"../Util\");\nvar Validators_1 = require(\"../Validators\");\nvar Emboss = function (imageData) {\n var strength = this.embossStrength() * 10, greyLevel = this.embossWhiteLevel() * 255, direction = this.embossDirection(), blend = this.embossBlend(), dirY = 0, dirX = 0, data = imageData.data, w = imageData.width, h = imageData.height, w4 = w * 4, y = h;\n switch (direction) {\n case 'top-left':\n dirY = -1;\n dirX = -1;\n break;\n case 'top':\n dirY = -1;\n dirX = 0;\n break;\n case 'top-right':\n dirY = -1;\n dirX = 1;\n break;\n case 'right':\n dirY = 0;\n dirX = 1;\n break;\n case 'bottom-right':\n dirY = 1;\n dirX = 1;\n break;\n case 'bottom':\n dirY = 1;\n dirX = 0;\n break;\n case 'bottom-left':\n dirY = 1;\n dirX = -1;\n break;\n case 'left':\n dirY = 0;\n dirX = -1;\n break;\n default:\n Util_1.Util.error('Unknown emboss direction: ' + direction);\n }\n do {\n var offsetY = (y - 1) * w4;\n var otherY = dirY;\n if (y + otherY < 1) {\n otherY = 0;\n }\n if (y + otherY > h) {\n otherY = 0;\n }\n var offsetYOther = (y - 1 + otherY) * w * 4;\n var x = w;\n do {\n var offset = offsetY + (x - 1) * 4;\n var otherX = dirX;\n if (x + otherX < 1) {\n otherX = 0;\n }\n if (x + otherX > w) {\n otherX = 0;\n }\n var offsetOther = offsetYOther + (x - 1 + otherX) * 4;\n var dR = data[offset] - data[offsetOther];\n var dG = data[offset + 1] - data[offsetOther + 1];\n var dB = data[offset + 2] - data[offsetOther + 2];\n var dif = dR;\n var absDif = dif > 0 ? dif : -dif;\n var absG = dG > 0 ? dG : -dG;\n var absB = dB > 0 ? dB : -dB;\n if (absG > absDif) {\n dif = dG;\n }\n if (absB > absDif) {\n dif = dB;\n }\n dif *= strength;\n if (blend) {\n var r = data[offset] + dif;\n var g = data[offset + 1] + dif;\n var b = data[offset + 2] + dif;\n data[offset] = r > 255 ? 255 : r < 0 ? 0 : r;\n data[offset + 1] = g > 255 ? 255 : g < 0 ? 0 : g;\n data[offset + 2] = b > 255 ? 255 : b < 0 ? 0 : b;\n }\n else {\n var grey = greyLevel - dif;\n if (grey < 0) {\n grey = 0;\n }\n else if (grey > 255) {\n grey = 255;\n }\n data[offset] = data[offset + 1] = data[offset + 2] = grey;\n }\n } while (--x);\n } while (--y);\n};\nexports.Emboss = Emboss;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossStrength', 0.5, Validators_1.getNumberValidator(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossWhiteLevel', 0.5, Validators_1.getNumberValidator(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossDirection', 'top-left', null, Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossBlend', false, null, Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Stage = exports.stages = void 0;\nvar Util_1 = require(\"./Util\");\nvar Factory_1 = require(\"./Factory\");\nvar Container_1 = require(\"./Container\");\nvar Global_1 = require(\"./Global\");\nvar Canvas_1 = require(\"./Canvas\");\nvar DragAndDrop_1 = require(\"./DragAndDrop\");\nvar Global_2 = require(\"./Global\");\nvar PointerEvents = require(\"./PointerEvents\");\nvar STAGE = 'Stage', STRING = 'string', PX = 'px', MOUSEOUT = 'mouseout', MOUSELEAVE = 'mouseleave', MOUSEOVER = 'mouseover', MOUSEENTER = 'mouseenter', MOUSEMOVE = 'mousemove', MOUSEDOWN = 'mousedown', MOUSEUP = 'mouseup', POINTERMOVE = 'pointermove', POINTERDOWN = 'pointerdown', POINTERUP = 'pointerup', POINTERCANCEL = 'pointercancel', LOSTPOINTERCAPTURE = 'lostpointercapture', CONTEXTMENU = 'contextmenu', CLICK = 'click', DBL_CLICK = 'dblclick', TOUCHSTART = 'touchstart', TOUCHEND = 'touchend', TAP = 'tap', DBL_TAP = 'dbltap', TOUCHMOVE = 'touchmove', WHEEL = 'wheel', CONTENT_MOUSEOUT = 'contentMouseout', CONTENT_MOUSEOVER = 'contentMouseover', CONTENT_MOUSEMOVE = 'contentMousemove', CONTENT_MOUSEDOWN = 'contentMousedown', CONTENT_MOUSEUP = 'contentMouseup', CONTENT_CONTEXTMENU = 'contentContextmenu', CONTENT_CLICK = 'contentClick', CONTENT_DBL_CLICK = 'contentDblclick', CONTENT_TOUCHSTART = 'contentTouchstart', CONTENT_TOUCHEND = 'contentTouchend', CONTENT_DBL_TAP = 'contentDbltap', CONTENT_TAP = 'contentTap', CONTENT_TOUCHMOVE = 'contentTouchmove', CONTENT_POINTERMOVE = 'contentPointermove', CONTENT_POINTERDOWN = 'contentPointerdown', CONTENT_POINTERUP = 'contentPointerup', CONTENT_WHEEL = 'contentWheel', RELATIVE = 'relative', KONVA_CONTENT = 'konvajs-content', SPACE = ' ', UNDERSCORE = '_', CONTAINER = 'container', MAX_LAYERS_NUMBER = 5, EMPTY_STRING = '', EVENTS = [\n MOUSEENTER,\n MOUSEDOWN,\n MOUSEMOVE,\n MOUSEUP,\n MOUSELEAVE,\n TOUCHSTART,\n TOUCHMOVE,\n TOUCHEND,\n MOUSEOVER,\n WHEEL,\n CONTEXTMENU,\n POINTERDOWN,\n POINTERMOVE,\n POINTERUP,\n POINTERCANCEL,\n LOSTPOINTERCAPTURE,\n], eventsLength = EVENTS.length;\nfunction addEvent(ctx, eventName) {\n ctx.content.addEventListener(eventName, function (evt) {\n ctx[UNDERSCORE + eventName](evt);\n }, false);\n}\nvar NO_POINTERS_MESSAGE = \"Pointer position is missing and not registered by the stage. Looks like it is outside of the stage container. You can set it manually from event: stage.setPointersPositions(event);\";\nexports.stages = [];\nfunction checkNoClip(attrs) {\n if (attrs === void 0) { attrs = {}; }\n if (attrs.clipFunc || attrs.clipWidth || attrs.clipHeight) {\n Util_1.Util.warn('Stage does not support clipping. Please use clip for Layers or Groups.');\n }\n return attrs;\n}\nvar Stage = (function (_super) {\n __extends(Stage, _super);\n function Stage(config) {\n var _this = _super.call(this, checkNoClip(config)) || this;\n _this._pointerPositions = [];\n _this._changedPointerPositions = [];\n _this._buildDOM();\n _this._bindContentEvents();\n exports.stages.push(_this);\n _this.on('widthChange.konva heightChange.konva', _this._resizeDOM);\n _this.on('visibleChange.konva', _this._checkVisibility);\n _this.on('clipWidthChange.konva clipHeightChange.konva clipFuncChange.konva', function () {\n checkNoClip(_this.attrs);\n });\n _this._checkVisibility();\n return _this;\n }\n Stage.prototype._validateAdd = function (child) {\n var isLayer = child.getType() === 'Layer';\n var isFastLayer = child.getType() === 'FastLayer';\n var valid = isLayer || isFastLayer;\n if (!valid) {\n Util_1.Util.throw('You may only add layers to the stage.');\n }\n };\n Stage.prototype._checkVisibility = function () {\n if (!this.content) {\n return;\n }\n var style = this.visible() ? '' : 'none';\n this.content.style.display = style;\n };\n Stage.prototype.setContainer = function (container) {\n if (typeof container === STRING) {\n if (container.charAt(0) === '.') {\n var className = container.slice(1);\n container = document.getElementsByClassName(className)[0];\n }\n else {\n var id;\n if (container.charAt(0) !== '#') {\n id = container;\n }\n else {\n id = container.slice(1);\n }\n container = document.getElementById(id);\n }\n if (!container) {\n throw 'Can not find container in document with id ' + id;\n }\n }\n this._setAttr(CONTAINER, container);\n if (this.content) {\n if (this.content.parentElement) {\n this.content.parentElement.removeChild(this.content);\n }\n container.appendChild(this.content);\n }\n return this;\n };\n Stage.prototype.shouldDrawHit = function () {\n return true;\n };\n Stage.prototype.clear = function () {\n var layers = this.children, len = layers.length, n;\n for (n = 0; n < len; n++) {\n layers[n].clear();\n }\n return this;\n };\n Stage.prototype.clone = function (obj) {\n if (!obj) {\n obj = {};\n }\n obj.container = document.createElement('div');\n return Container_1.Container.prototype.clone.call(this, obj);\n };\n Stage.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n var content = this.content;\n if (content && Util_1.Util._isInDocument(content)) {\n this.container().removeChild(content);\n }\n var index = exports.stages.indexOf(this);\n if (index > -1) {\n exports.stages.splice(index, 1);\n }\n return this;\n };\n Stage.prototype.getPointerPosition = function () {\n var pos = this._pointerPositions[0] || this._changedPointerPositions[0];\n if (!pos) {\n Util_1.Util.warn(NO_POINTERS_MESSAGE);\n return null;\n }\n return {\n x: pos.x,\n y: pos.y,\n };\n };\n Stage.prototype._getPointerById = function (id) {\n return this._pointerPositions.find(function (p) { return p.id === id; });\n };\n Stage.prototype.getPointersPositions = function () {\n return this._pointerPositions;\n };\n Stage.prototype.getStage = function () {\n return this;\n };\n Stage.prototype.getContent = function () {\n return this.content;\n };\n Stage.prototype._toKonvaCanvas = function (config) {\n config = config || {};\n config.x = config.x || 0;\n config.y = config.y || 0;\n config.width = config.width || this.width();\n config.height = config.height || this.height();\n var canvas = new Canvas_1.SceneCanvas({\n width: config.width,\n height: config.height,\n pixelRatio: config.pixelRatio || 1,\n });\n var _context = canvas.getContext()._context;\n var layers = this.children;\n if (config.x || config.y) {\n _context.translate(-1 * config.x, -1 * config.y);\n }\n layers.each(function (layer) {\n if (!layer.isVisible()) {\n return;\n }\n var layerCanvas = layer._toKonvaCanvas(config);\n _context.drawImage(layerCanvas._canvas, config.x, config.y, layerCanvas.getWidth() / layerCanvas.getPixelRatio(), layerCanvas.getHeight() / layerCanvas.getPixelRatio());\n });\n return canvas;\n };\n Stage.prototype.getIntersection = function (pos, selector) {\n if (!pos) {\n return null;\n }\n var layers = this.children, len = layers.length, end = len - 1, n, shape;\n for (n = end; n >= 0; n--) {\n shape = layers[n].getIntersection(pos, selector);\n if (shape) {\n return shape;\n }\n }\n return null;\n };\n Stage.prototype._resizeDOM = function () {\n var width = this.width();\n var height = this.height();\n if (this.content) {\n this.content.style.width = width + PX;\n this.content.style.height = height + PX;\n }\n this.bufferCanvas.setSize(width, height);\n this.bufferHitCanvas.setSize(width, height);\n this.children.each(function (layer) {\n layer.setSize({ width: width, height: height });\n layer.draw();\n });\n };\n Stage.prototype.add = function (layer) {\n if (arguments.length > 1) {\n for (var i = 0; i < arguments.length; i++) {\n this.add(arguments[i]);\n }\n return this;\n }\n _super.prototype.add.call(this, layer);\n var length = this.children.length;\n if (length > MAX_LAYERS_NUMBER) {\n Util_1.Util.warn('The stage has ' +\n length +\n ' layers. Recommended maximum number of layers is 3-5. Adding more layers into the stage may drop the performance. Rethink your tree structure, you can use Konva.Group.');\n }\n layer.setSize({ width: this.width(), height: this.height() });\n layer.draw();\n if (Global_1.Konva.isBrowser) {\n this.content.appendChild(layer.canvas._canvas);\n }\n return this;\n };\n Stage.prototype.getParent = function () {\n return null;\n };\n Stage.prototype.getLayer = function () {\n return null;\n };\n Stage.prototype.hasPointerCapture = function (pointerId) {\n return PointerEvents.hasPointerCapture(pointerId, this);\n };\n Stage.prototype.setPointerCapture = function (pointerId) {\n PointerEvents.setPointerCapture(pointerId, this);\n };\n Stage.prototype.releaseCapture = function (pointerId) {\n PointerEvents.releaseCapture(pointerId, this);\n };\n Stage.prototype.getLayers = function () {\n return this.getChildren();\n };\n Stage.prototype._bindContentEvents = function () {\n if (!Global_1.Konva.isBrowser) {\n return;\n }\n for (var n = 0; n < eventsLength; n++) {\n addEvent(this, EVENTS[n]);\n }\n };\n Stage.prototype._mouseenter = function (evt) {\n this.setPointersPositions(evt);\n this._fire(MOUSEENTER, { evt: evt, target: this, currentTarget: this });\n };\n Stage.prototype._mouseover = function (evt) {\n this.setPointersPositions(evt);\n this._fire(CONTENT_MOUSEOVER, { evt: evt });\n this._fire(MOUSEOVER, { evt: evt, target: this, currentTarget: this });\n };\n Stage.prototype._mouseleave = function (evt) {\n var _a;\n this.setPointersPositions(evt);\n var targetShape = ((_a = this.targetShape) === null || _a === void 0 ? void 0 : _a.getStage()) ? this.targetShape : null;\n var eventsEnabled = !DragAndDrop_1.DD.isDragging || Global_1.Konva.hitOnDragEnabled;\n if (targetShape && eventsEnabled) {\n targetShape._fireAndBubble(MOUSEOUT, { evt: evt });\n targetShape._fireAndBubble(MOUSELEAVE, { evt: evt });\n this._fire(MOUSELEAVE, { evt: evt, target: this, currentTarget: this });\n this.targetShape = null;\n }\n else if (eventsEnabled) {\n this._fire(MOUSELEAVE, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n this._fire(MOUSEOUT, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n this.pointerPos = undefined;\n this._pointerPositions = [];\n this._fire(CONTENT_MOUSEOUT, { evt: evt });\n };\n Stage.prototype._mousemove = function (evt) {\n var _a;\n if (Global_1.Konva.UA.ieMobile) {\n return this._touchmove(evt);\n }\n this.setPointersPositions(evt);\n var pointerId = Util_1.Util._getFirstPointerId(evt);\n var shape;\n var targetShape = ((_a = this.targetShape) === null || _a === void 0 ? void 0 : _a.getStage()) ? this.targetShape : null;\n var eventsEnabled = !DragAndDrop_1.DD.isDragging || Global_1.Konva.hitOnDragEnabled;\n if (eventsEnabled) {\n shape = this.getIntersection(this.getPointerPosition());\n if (shape && shape.isListening()) {\n var differentTarget = targetShape !== shape;\n if (eventsEnabled && differentTarget) {\n if (targetShape) {\n targetShape._fireAndBubble(MOUSEOUT, { evt: evt, pointerId: pointerId }, shape);\n targetShape._fireAndBubble(MOUSELEAVE, { evt: evt, pointerId: pointerId }, shape);\n }\n shape._fireAndBubble(MOUSEOVER, { evt: evt, pointerId: pointerId }, targetShape);\n shape._fireAndBubble(MOUSEENTER, { evt: evt, pointerId: pointerId }, targetShape);\n shape._fireAndBubble(MOUSEMOVE, { evt: evt, pointerId: pointerId });\n this.targetShape = shape;\n }\n else {\n shape._fireAndBubble(MOUSEMOVE, { evt: evt, pointerId: pointerId });\n }\n }\n else {\n if (targetShape && eventsEnabled) {\n targetShape._fireAndBubble(MOUSEOUT, { evt: evt, pointerId: pointerId });\n targetShape._fireAndBubble(MOUSELEAVE, { evt: evt, pointerId: pointerId });\n this._fire(MOUSEOVER, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: pointerId,\n });\n this.targetShape = null;\n }\n this._fire(MOUSEMOVE, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: pointerId,\n });\n }\n this._fire(CONTENT_MOUSEMOVE, { evt: evt });\n }\n if (evt.cancelable) {\n evt.preventDefault();\n }\n };\n Stage.prototype._mousedown = function (evt) {\n if (Global_1.Konva.UA.ieMobile) {\n return this._touchstart(evt);\n }\n this.setPointersPositions(evt);\n var pointerId = Util_1.Util._getFirstPointerId(evt);\n var shape = this.getIntersection(this.getPointerPosition());\n DragAndDrop_1.DD.justDragged = false;\n Global_1.Konva.listenClickTap = true;\n if (shape && shape.isListening()) {\n this.clickStartShape = shape;\n shape._fireAndBubble(MOUSEDOWN, { evt: evt, pointerId: pointerId });\n }\n else {\n this._fire(MOUSEDOWN, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: pointerId,\n });\n }\n this._fire(CONTENT_MOUSEDOWN, { evt: evt });\n };\n Stage.prototype._mouseup = function (evt) {\n if (Global_1.Konva.UA.ieMobile) {\n return this._touchend(evt);\n }\n this.setPointersPositions(evt);\n var pointerId = Util_1.Util._getFirstPointerId(evt);\n var shape = this.getIntersection(this.getPointerPosition()), clickStartShape = this.clickStartShape, clickEndShape = this.clickEndShape, fireDblClick = false;\n if (Global_1.Konva.inDblClickWindow) {\n fireDblClick = true;\n clearTimeout(this.dblTimeout);\n }\n else if (!DragAndDrop_1.DD.justDragged) {\n Global_1.Konva.inDblClickWindow = true;\n clearTimeout(this.dblTimeout);\n }\n this.dblTimeout = setTimeout(function () {\n Global_1.Konva.inDblClickWindow = false;\n }, Global_1.Konva.dblClickWindow);\n if (shape && shape.isListening()) {\n this.clickEndShape = shape;\n shape._fireAndBubble(MOUSEUP, { evt: evt, pointerId: pointerId });\n if (Global_1.Konva.listenClickTap &&\n clickStartShape &&\n clickStartShape._id === shape._id) {\n shape._fireAndBubble(CLICK, { evt: evt, pointerId: pointerId });\n if (fireDblClick && clickEndShape && clickEndShape === shape) {\n shape._fireAndBubble(DBL_CLICK, { evt: evt, pointerId: pointerId });\n }\n }\n }\n else {\n this.clickEndShape = null;\n this._fire(MOUSEUP, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: pointerId,\n });\n if (Global_1.Konva.listenClickTap) {\n this._fire(CLICK, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: pointerId,\n });\n }\n if (fireDblClick) {\n this._fire(DBL_CLICK, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: pointerId,\n });\n }\n }\n this._fire(CONTENT_MOUSEUP, { evt: evt });\n if (Global_1.Konva.listenClickTap) {\n this._fire(CONTENT_CLICK, { evt: evt });\n if (fireDblClick) {\n this._fire(CONTENT_DBL_CLICK, { evt: evt });\n }\n }\n Global_1.Konva.listenClickTap = false;\n if (evt.cancelable) {\n evt.preventDefault();\n }\n };\n Stage.prototype._contextmenu = function (evt) {\n this.setPointersPositions(evt);\n var shape = this.getIntersection(this.getPointerPosition());\n if (shape && shape.isListening()) {\n shape._fireAndBubble(CONTEXTMENU, { evt: evt });\n }\n else {\n this._fire(CONTEXTMENU, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n this._fire(CONTENT_CONTEXTMENU, { evt: evt });\n };\n Stage.prototype._touchstart = function (evt) {\n var _this = this;\n this.setPointersPositions(evt);\n var triggeredOnShape = false;\n this._changedPointerPositions.forEach(function (pos) {\n var shape = _this.getIntersection(pos);\n Global_1.Konva.listenClickTap = true;\n DragAndDrop_1.DD.justDragged = false;\n var hasShape = shape && shape.isListening();\n if (!hasShape) {\n return;\n }\n if (Global_1.Konva.captureTouchEventsEnabled) {\n shape.setPointerCapture(pos.id);\n }\n _this.tapStartShape = shape;\n shape._fireAndBubble(TOUCHSTART, { evt: evt, pointerId: pos.id }, _this);\n triggeredOnShape = true;\n if (shape.isListening() && shape.preventDefault() && evt.cancelable) {\n evt.preventDefault();\n }\n });\n if (!triggeredOnShape) {\n this._fire(TOUCHSTART, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._changedPointerPositions[0].id,\n });\n }\n this._fire(CONTENT_TOUCHSTART, { evt: evt });\n };\n Stage.prototype._touchmove = function (evt) {\n var _this = this;\n this.setPointersPositions(evt);\n var eventsEnabled = !DragAndDrop_1.DD.isDragging || Global_1.Konva.hitOnDragEnabled;\n if (eventsEnabled) {\n var triggeredOnShape = false;\n var processedShapesIds = {};\n this._changedPointerPositions.forEach(function (pos) {\n var shape = PointerEvents.getCapturedShape(pos.id) || _this.getIntersection(pos);\n var hasShape = shape && shape.isListening();\n if (!hasShape) {\n return;\n }\n if (processedShapesIds[shape._id]) {\n return;\n }\n processedShapesIds[shape._id] = true;\n shape._fireAndBubble(TOUCHMOVE, { evt: evt, pointerId: pos.id });\n triggeredOnShape = true;\n if (shape.isListening() && shape.preventDefault() && evt.cancelable) {\n evt.preventDefault();\n }\n });\n if (!triggeredOnShape) {\n this._fire(TOUCHMOVE, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._changedPointerPositions[0].id,\n });\n }\n this._fire(CONTENT_TOUCHMOVE, { evt: evt });\n }\n if (DragAndDrop_1.DD.isDragging && DragAndDrop_1.DD.node.preventDefault() && evt.cancelable) {\n evt.preventDefault();\n }\n };\n Stage.prototype._touchend = function (evt) {\n var _this = this;\n this.setPointersPositions(evt);\n var tapEndShape = this.tapEndShape, fireDblClick = false;\n if (Global_1.Konva.inDblClickWindow) {\n fireDblClick = true;\n clearTimeout(this.dblTimeout);\n }\n else if (!DragAndDrop_1.DD.justDragged) {\n Global_1.Konva.inDblClickWindow = true;\n clearTimeout(this.dblTimeout);\n }\n this.dblTimeout = setTimeout(function () {\n Global_1.Konva.inDblClickWindow = false;\n }, Global_1.Konva.dblClickWindow);\n var triggeredOnShape = false;\n var processedShapesIds = {};\n var tapTriggered = false;\n var dblTapTriggered = false;\n this._changedPointerPositions.forEach(function (pos) {\n var shape = PointerEvents.getCapturedShape(pos.id) ||\n _this.getIntersection(pos);\n if (shape) {\n shape.releaseCapture(pos.id);\n }\n var hasShape = shape && shape.isListening();\n if (!hasShape) {\n return;\n }\n if (processedShapesIds[shape._id]) {\n return;\n }\n processedShapesIds[shape._id] = true;\n _this.tapEndShape = shape;\n shape._fireAndBubble(TOUCHEND, { evt: evt, pointerId: pos.id });\n triggeredOnShape = true;\n if (Global_1.Konva.listenClickTap && shape === _this.tapStartShape) {\n tapTriggered = true;\n shape._fireAndBubble(TAP, { evt: evt, pointerId: pos.id });\n if (fireDblClick && tapEndShape && tapEndShape === shape) {\n dblTapTriggered = true;\n shape._fireAndBubble(DBL_TAP, { evt: evt, pointerId: pos.id });\n }\n }\n if (shape.isListening() && shape.preventDefault() && evt.cancelable) {\n evt.preventDefault();\n }\n });\n if (!triggeredOnShape) {\n this._fire(TOUCHEND, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._changedPointerPositions[0].id,\n });\n }\n if (Global_1.Konva.listenClickTap && !tapTriggered) {\n this.tapEndShape = null;\n this._fire(TAP, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._changedPointerPositions[0].id,\n });\n }\n if (fireDblClick && !dblTapTriggered) {\n this._fire(DBL_TAP, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._changedPointerPositions[0].id,\n });\n }\n this._fire(CONTENT_TOUCHEND, { evt: evt });\n if (Global_1.Konva.listenClickTap) {\n this._fire(CONTENT_TAP, { evt: evt });\n if (fireDblClick) {\n this._fire(CONTENT_DBL_TAP, { evt: evt });\n }\n }\n if (this.preventDefault() && evt.cancelable) {\n evt.preventDefault();\n }\n Global_1.Konva.listenClickTap = false;\n };\n Stage.prototype._wheel = function (evt) {\n this.setPointersPositions(evt);\n var shape = this.getIntersection(this.getPointerPosition());\n if (shape && shape.isListening()) {\n shape._fireAndBubble(WHEEL, { evt: evt });\n }\n else {\n this._fire(WHEEL, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n this._fire(CONTENT_WHEEL, { evt: evt });\n };\n Stage.prototype._pointerdown = function (evt) {\n if (!Global_1.Konva._pointerEventsEnabled) {\n return;\n }\n this.setPointersPositions(evt);\n var shape = PointerEvents.getCapturedShape(evt.pointerId) ||\n this.getIntersection(this.getPointerPosition());\n if (shape) {\n shape._fireAndBubble(POINTERDOWN, PointerEvents.createEvent(evt));\n }\n };\n Stage.prototype._pointermove = function (evt) {\n if (!Global_1.Konva._pointerEventsEnabled) {\n return;\n }\n this.setPointersPositions(evt);\n var shape = PointerEvents.getCapturedShape(evt.pointerId) ||\n this.getIntersection(this.getPointerPosition());\n if (shape) {\n shape._fireAndBubble(POINTERMOVE, PointerEvents.createEvent(evt));\n }\n };\n Stage.prototype._pointerup = function (evt) {\n if (!Global_1.Konva._pointerEventsEnabled) {\n return;\n }\n this.setPointersPositions(evt);\n var shape = PointerEvents.getCapturedShape(evt.pointerId) ||\n this.getIntersection(this.getPointerPosition());\n if (shape) {\n shape._fireAndBubble(POINTERUP, PointerEvents.createEvent(evt));\n }\n PointerEvents.releaseCapture(evt.pointerId);\n };\n Stage.prototype._pointercancel = function (evt) {\n if (!Global_1.Konva._pointerEventsEnabled) {\n return;\n }\n this.setPointersPositions(evt);\n var shape = PointerEvents.getCapturedShape(evt.pointerId) ||\n this.getIntersection(this.getPointerPosition());\n if (shape) {\n shape._fireAndBubble(POINTERUP, PointerEvents.createEvent(evt));\n }\n PointerEvents.releaseCapture(evt.pointerId);\n };\n Stage.prototype._lostpointercapture = function (evt) {\n PointerEvents.releaseCapture(evt.pointerId);\n };\n Stage.prototype.setPointersPositions = function (evt) {\n var _this = this;\n var contentPosition = this._getContentPosition(), x = null, y = null;\n evt = evt ? evt : window.event;\n if (evt.touches !== undefined) {\n this._pointerPositions = [];\n this._changedPointerPositions = [];\n Util_1.Collection.prototype.each.call(evt.touches, function (touch) {\n _this._pointerPositions.push({\n id: touch.identifier,\n x: (touch.clientX - contentPosition.left) / contentPosition.scaleX,\n y: (touch.clientY - contentPosition.top) / contentPosition.scaleY,\n });\n });\n Util_1.Collection.prototype.each.call(evt.changedTouches || evt.touches, function (touch) {\n _this._changedPointerPositions.push({\n id: touch.identifier,\n x: (touch.clientX - contentPosition.left) / contentPosition.scaleX,\n y: (touch.clientY - contentPosition.top) / contentPosition.scaleY,\n });\n });\n }\n else {\n x = (evt.clientX - contentPosition.left) / contentPosition.scaleX;\n y = (evt.clientY - contentPosition.top) / contentPosition.scaleY;\n this.pointerPos = {\n x: x,\n y: y,\n };\n this._pointerPositions = [{ x: x, y: y, id: Util_1.Util._getFirstPointerId(evt) }];\n this._changedPointerPositions = [\n { x: x, y: y, id: Util_1.Util._getFirstPointerId(evt) },\n ];\n }\n };\n Stage.prototype._setPointerPosition = function (evt) {\n Util_1.Util.warn('Method _setPointerPosition is deprecated. Use \"stage.setPointersPositions(event)\" instead.');\n this.setPointersPositions(evt);\n };\n Stage.prototype._getContentPosition = function () {\n if (!this.content || !this.content.getBoundingClientRect) {\n return {\n top: 0,\n left: 0,\n scaleX: 1,\n scaleY: 1,\n };\n }\n var rect = this.content.getBoundingClientRect();\n return {\n top: rect.top,\n left: rect.left,\n scaleX: rect.width / this.content.clientWidth || 1,\n scaleY: rect.height / this.content.clientHeight || 1,\n };\n };\n Stage.prototype._buildDOM = function () {\n this.bufferCanvas = new Canvas_1.SceneCanvas({\n width: this.width(),\n height: this.height(),\n });\n this.bufferHitCanvas = new Canvas_1.HitCanvas({\n pixelRatio: 1,\n width: this.width(),\n height: this.height(),\n });\n if (!Global_1.Konva.isBrowser) {\n return;\n }\n var container = this.container();\n if (!container) {\n throw 'Stage has no container. A container is required.';\n }\n container.innerHTML = EMPTY_STRING;\n this.content = document.createElement('div');\n this.content.style.position = RELATIVE;\n this.content.style.userSelect = 'none';\n this.content.className = KONVA_CONTENT;\n this.content.setAttribute('role', 'presentation');\n container.appendChild(this.content);\n this._resizeDOM();\n };\n Stage.prototype.cache = function () {\n Util_1.Util.warn('Cache function is not allowed for stage. You may use cache only for layers, groups and shapes.');\n return this;\n };\n Stage.prototype.clearCache = function () {\n return this;\n };\n Stage.prototype.batchDraw = function () {\n this.children.each(function (layer) {\n layer.batchDraw();\n });\n return this;\n };\n return Stage;\n}(Container_1.Container));\nexports.Stage = Stage;\nStage.prototype.nodeType = STAGE;\nGlobal_2._registerNode(Stage);\nFactory_1.Factory.addGetterSetter(Stage, 'container');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Factory = void 0;\nvar Util_1 = require(\"./Util\");\nvar Validators_1 = require(\"./Validators\");\nvar GET = 'get', SET = 'set';\nexports.Factory = {\n addGetterSetter: function (constructor, attr, def, validator, after) {\n exports.Factory.addGetter(constructor, attr, def);\n exports.Factory.addSetter(constructor, attr, validator, after);\n exports.Factory.addOverloadedGetterSetter(constructor, attr);\n },\n addGetter: function (constructor, attr, def) {\n var method = GET + Util_1.Util._capitalize(attr);\n constructor.prototype[method] =\n constructor.prototype[method] ||\n function () {\n var val = this.attrs[attr];\n return val === undefined ? def : val;\n };\n },\n addSetter: function (constructor, attr, validator, after) {\n var method = SET + Util_1.Util._capitalize(attr);\n if (!constructor.prototype[method]) {\n exports.Factory.overWriteSetter(constructor, attr, validator, after);\n }\n },\n overWriteSetter: function (constructor, attr, validator, after) {\n var method = SET + Util_1.Util._capitalize(attr);\n constructor.prototype[method] = function (val) {\n if (validator && val !== undefined && val !== null) {\n val = validator.call(this, val, attr);\n }\n this._setAttr(attr, val);\n if (after) {\n after.call(this);\n }\n return this;\n };\n },\n addComponentsGetterSetter: function (constructor, attr, components, validator, after) {\n var len = components.length, capitalize = Util_1.Util._capitalize, getter = GET + capitalize(attr), setter = SET + capitalize(attr), n, component;\n constructor.prototype[getter] = function () {\n var ret = {};\n for (n = 0; n < len; n++) {\n component = components[n];\n ret[component] = this.getAttr(attr + capitalize(component));\n }\n return ret;\n };\n var basicValidator = Validators_1.getComponentValidator(components);\n constructor.prototype[setter] = function (val) {\n var oldVal = this.attrs[attr], key;\n if (validator) {\n val = validator.call(this, val);\n }\n if (basicValidator) {\n basicValidator.call(this, val, attr);\n }\n for (key in val) {\n if (!val.hasOwnProperty(key)) {\n continue;\n }\n this._setAttr(attr + capitalize(key), val[key]);\n }\n this._fireChangeEvent(attr, oldVal, val);\n if (after) {\n after.call(this);\n }\n return this;\n };\n exports.Factory.addOverloadedGetterSetter(constructor, attr);\n },\n addOverloadedGetterSetter: function (constructor, attr) {\n var capitalizedAttr = Util_1.Util._capitalize(attr), setter = SET + capitalizedAttr, getter = GET + capitalizedAttr;\n constructor.prototype[attr] = function () {\n if (arguments.length) {\n this[setter](arguments[0]);\n return this;\n }\n return this[getter]();\n };\n },\n addDeprecatedGetterSetter: function (constructor, attr, def, validator) {\n Util_1.Util.error('Adding deprecated ' + attr);\n var method = GET + Util_1.Util._capitalize(attr);\n var message = attr +\n ' property is deprecated and will be removed soon. Look at Konva change log for more information.';\n constructor.prototype[method] = function () {\n Util_1.Util.error(message);\n var val = this.attrs[attr];\n return val === undefined ? def : val;\n };\n exports.Factory.addSetter(constructor, attr, validator, function () {\n Util_1.Util.error(message);\n });\n exports.Factory.addOverloadedGetterSetter(constructor, attr);\n },\n backCompat: function (constructor, methods) {\n Util_1.Util.each(methods, function (oldMethodName, newMethodName) {\n var method = constructor.prototype[newMethodName];\n var oldGetter = GET + Util_1.Util._capitalize(oldMethodName);\n var oldSetter = SET + Util_1.Util._capitalize(oldMethodName);\n function deprecated() {\n method.apply(this, arguments);\n Util_1.Util.error('\"' +\n oldMethodName +\n '\" method is deprecated and will be removed soon. Use \"\"' +\n newMethodName +\n '\" instead.');\n }\n constructor.prototype[oldMethodName] = deprecated;\n constructor.prototype[oldGetter] = deprecated;\n constructor.prototype[oldSetter] = deprecated;\n });\n },\n afterSetFilter: function () {\n this._filterUpToDate = false;\n },\n};\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Group = void 0;\nvar Util_1 = require(\"./Util\");\nvar Container_1 = require(\"./Container\");\nvar Global_1 = require(\"./Global\");\nvar Group = (function (_super) {\n __extends(Group, _super);\n function Group() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Group.prototype._validateAdd = function (child) {\n var type = child.getType();\n if (type !== 'Group' && type !== 'Shape') {\n Util_1.Util.throw('You may only add groups and shapes to groups.');\n }\n };\n return Group;\n}(Container_1.Container));\nexports.Group = Group;\nGroup.prototype.nodeType = 'Group';\nGlobal_1._registerNode(Group);\nUtil_1.Collection.mapMethods(Group);\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Shape = exports.shapes = void 0;\nvar Util_1 = require(\"./Util\");\nvar Factory_1 = require(\"./Factory\");\nvar Node_1 = require(\"./Node\");\nvar Validators_1 = require(\"./Validators\");\nvar Global_1 = require(\"./Global\");\nvar PointerEvents = require(\"./PointerEvents\");\nvar HAS_SHADOW = 'hasShadow';\nvar SHADOW_RGBA = 'shadowRGBA';\nvar patternImage = 'patternImage';\nvar linearGradient = 'linearGradient';\nvar radialGradient = 'radialGradient';\nvar dummyContext;\nfunction getDummyContext() {\n if (dummyContext) {\n return dummyContext;\n }\n dummyContext = Util_1.Util.createCanvasElement().getContext('2d');\n return dummyContext;\n}\nexports.shapes = {};\nfunction _fillFunc(context) {\n context.fill();\n}\nfunction _strokeFunc(context) {\n context.stroke();\n}\nfunction _fillFuncHit(context) {\n context.fill();\n}\nfunction _strokeFuncHit(context) {\n context.stroke();\n}\nfunction _clearHasShadowCache() {\n this._clearCache(HAS_SHADOW);\n}\nfunction _clearGetShadowRGBACache() {\n this._clearCache(SHADOW_RGBA);\n}\nfunction _clearFillPatternCache() {\n this._clearCache(patternImage);\n}\nfunction _clearLinearGradientCache() {\n this._clearCache(linearGradient);\n}\nfunction _clearRadialGradientCache() {\n this._clearCache(radialGradient);\n}\nvar Shape = (function (_super) {\n __extends(Shape, _super);\n function Shape(config) {\n var _this = _super.call(this, config) || this;\n var key;\n while (true) {\n key = Util_1.Util.getRandomColor();\n if (key && !(key in exports.shapes)) {\n break;\n }\n }\n _this.colorKey = key;\n exports.shapes[key] = _this;\n return _this;\n }\n Shape.prototype.getContext = function () {\n return this.getLayer().getContext();\n };\n Shape.prototype.getCanvas = function () {\n return this.getLayer().getCanvas();\n };\n Shape.prototype.getSceneFunc = function () {\n return this.attrs.sceneFunc || this['_sceneFunc'];\n };\n Shape.prototype.getHitFunc = function () {\n return this.attrs.hitFunc || this['_hitFunc'];\n };\n Shape.prototype.hasShadow = function () {\n return this._getCache(HAS_SHADOW, this._hasShadow);\n };\n Shape.prototype._hasShadow = function () {\n return (this.shadowEnabled() &&\n this.shadowOpacity() !== 0 &&\n !!(this.shadowColor() ||\n this.shadowBlur() ||\n this.shadowOffsetX() ||\n this.shadowOffsetY()));\n };\n Shape.prototype._getFillPattern = function () {\n return this._getCache(patternImage, this.__getFillPattern);\n };\n Shape.prototype.__getFillPattern = function () {\n if (this.fillPatternImage()) {\n var ctx = getDummyContext();\n var pattern = ctx.createPattern(this.fillPatternImage(), this.fillPatternRepeat() || 'repeat');\n if (pattern && pattern.setTransform) {\n pattern.setTransform({\n a: this.fillPatternScaleX(),\n b: 0,\n c: 0,\n d: this.fillPatternScaleY(),\n e: 0,\n f: 0,\n });\n }\n return pattern;\n }\n };\n Shape.prototype._getLinearGradient = function () {\n return this._getCache(linearGradient, this.__getLinearGradient);\n };\n Shape.prototype.__getLinearGradient = function () {\n var colorStops = this.fillLinearGradientColorStops();\n if (colorStops) {\n var ctx = getDummyContext();\n var start = this.fillLinearGradientStartPoint();\n var end = this.fillLinearGradientEndPoint();\n var grd = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n for (var n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n return grd;\n }\n };\n Shape.prototype._getRadialGradient = function () {\n return this._getCache(radialGradient, this.__getRadialGradient);\n };\n Shape.prototype.__getRadialGradient = function () {\n var colorStops = this.fillRadialGradientColorStops();\n if (colorStops) {\n var ctx = getDummyContext();\n var start = this.fillRadialGradientStartPoint();\n var end = this.fillRadialGradientEndPoint();\n var grd = ctx.createRadialGradient(start.x, start.y, this.fillRadialGradientStartRadius(), end.x, end.y, this.fillRadialGradientEndRadius());\n for (var n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n return grd;\n }\n };\n Shape.prototype.getShadowRGBA = function () {\n return this._getCache(SHADOW_RGBA, this._getShadowRGBA);\n };\n Shape.prototype._getShadowRGBA = function () {\n if (this.hasShadow()) {\n var rgba = Util_1.Util.colorToRGBA(this.shadowColor());\n return ('rgba(' +\n rgba.r +\n ',' +\n rgba.g +\n ',' +\n rgba.b +\n ',' +\n rgba.a * (this.shadowOpacity() || 1) +\n ')');\n }\n };\n Shape.prototype.hasFill = function () {\n var _this = this;\n return this._calculate('hasFill', [\n 'fillEnabled',\n 'fill',\n 'fillPatternImage',\n 'fillLinearGradientColorStops',\n 'fillRadialGradientColorStops',\n ], function () {\n return (_this.fillEnabled() &&\n !!(_this.fill() ||\n _this.fillPatternImage() ||\n _this.fillLinearGradientColorStops() ||\n _this.fillRadialGradientColorStops()));\n });\n };\n Shape.prototype.hasStroke = function () {\n var _this = this;\n return this._calculate('hasStroke', [\n 'strokeEnabled',\n 'strokeWidth',\n 'stroke',\n 'strokeLinearGradientColorStops',\n ], function () {\n return (_this.strokeEnabled() &&\n _this.strokeWidth() &&\n !!(_this.stroke() || _this.strokeLinearGradientColorStops()));\n });\n };\n Shape.prototype.hasHitStroke = function () {\n var width = this.hitStrokeWidth();\n if (width === 'auto') {\n return this.hasStroke();\n }\n return this.strokeEnabled() && !!width;\n };\n Shape.prototype.intersects = function (point) {\n var stage = this.getStage(), bufferHitCanvas = stage.bufferHitCanvas, p;\n bufferHitCanvas.getContext().clear();\n this.drawHit(bufferHitCanvas, null, true);\n p = bufferHitCanvas.context.getImageData(Math.round(point.x), Math.round(point.y), 1, 1).data;\n return p[3] > 0;\n };\n Shape.prototype.destroy = function () {\n Node_1.Node.prototype.destroy.call(this);\n delete exports.shapes[this.colorKey];\n delete this.colorKey;\n return this;\n };\n Shape.prototype._useBufferCanvas = function (forceFill) {\n var _a;\n if (!this.getStage()) {\n return false;\n }\n var perfectDrawEnabled = (_a = this.attrs.perfectDrawEnabled) !== null && _a !== void 0 ? _a : true;\n if (!perfectDrawEnabled) {\n return false;\n }\n var hasFill = forceFill || this.hasFill();\n var hasStroke = this.hasStroke();\n var isTransparent = this.getAbsoluteOpacity() !== 1;\n if (hasFill && hasStroke && isTransparent) {\n return true;\n }\n var hasShadow = this.hasShadow();\n var strokeForShadow = this.shadowForStrokeEnabled();\n if (hasFill && hasStroke && hasShadow && strokeForShadow) {\n return true;\n }\n return false;\n };\n Shape.prototype.setStrokeHitEnabled = function (val) {\n Util_1.Util.warn('strokeHitEnabled property is deprecated. Please use hitStrokeWidth instead.');\n if (val) {\n this.hitStrokeWidth('auto');\n }\n else {\n this.hitStrokeWidth(0);\n }\n };\n Shape.prototype.getStrokeHitEnabled = function () {\n if (this.hitStrokeWidth() === 0) {\n return false;\n }\n else {\n return true;\n }\n };\n Shape.prototype.getSelfRect = function () {\n var size = this.size();\n return {\n x: this._centroid ? -size.width / 2 : 0,\n y: this._centroid ? -size.height / 2 : 0,\n width: size.width,\n height: size.height,\n };\n };\n Shape.prototype.getClientRect = function (config) {\n if (config === void 0) { config = {}; }\n var skipTransform = config.skipTransform;\n var relativeTo = config.relativeTo;\n var fillRect = this.getSelfRect();\n var applyStroke = !config.skipStroke && this.hasStroke();\n var strokeWidth = (applyStroke && this.strokeWidth()) || 0;\n var fillAndStrokeWidth = fillRect.width + strokeWidth;\n var fillAndStrokeHeight = fillRect.height + strokeWidth;\n var applyShadow = !config.skipShadow && this.hasShadow();\n var shadowOffsetX = applyShadow ? this.shadowOffsetX() : 0;\n var shadowOffsetY = applyShadow ? this.shadowOffsetY() : 0;\n var preWidth = fillAndStrokeWidth + Math.abs(shadowOffsetX);\n var preHeight = fillAndStrokeHeight + Math.abs(shadowOffsetY);\n var blurRadius = (applyShadow && this.shadowBlur()) || 0;\n var width = preWidth + blurRadius * 2;\n var height = preHeight + blurRadius * 2;\n var roundingOffset = 0;\n if (Math.round(strokeWidth / 2) !== strokeWidth / 2) {\n roundingOffset = 1;\n }\n var rect = {\n width: width + roundingOffset,\n height: height + roundingOffset,\n x: -Math.round(strokeWidth / 2 + blurRadius) +\n Math.min(shadowOffsetX, 0) +\n fillRect.x,\n y: -Math.round(strokeWidth / 2 + blurRadius) +\n Math.min(shadowOffsetY, 0) +\n fillRect.y,\n };\n if (!skipTransform) {\n return this._transformedRect(rect, relativeTo);\n }\n return rect;\n };\n Shape.prototype.drawScene = function (can, top) {\n var layer = this.getLayer(), canvas = can || layer.getCanvas(), context = canvas.getContext(), cachedCanvas = this._getCanvasCache(), drawFunc = this.getSceneFunc(), hasShadow = this.hasShadow(), stage, bufferCanvas, bufferContext;\n var caching = canvas.isCache;\n var skipBuffer = canvas.isCache;\n var cachingSelf = top === this;\n if (!this.isVisible() && !caching) {\n return this;\n }\n if (cachedCanvas) {\n context.save();\n var m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedSceneCanvas(context);\n context.restore();\n return this;\n }\n if (!drawFunc) {\n return this;\n }\n context.save();\n if (this._useBufferCanvas() && !skipBuffer) {\n stage = this.getStage();\n bufferCanvas = stage.bufferCanvas;\n bufferContext = bufferCanvas.getContext();\n bufferContext.clear();\n bufferContext.save();\n bufferContext._applyLineJoin(this);\n var o = this.getAbsoluteTransform(top).getMatrix();\n bufferContext.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n drawFunc.call(this, bufferContext, this);\n bufferContext.restore();\n var ratio = bufferCanvas.pixelRatio;\n if (hasShadow) {\n context._applyShadow(this);\n }\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n context.drawImage(bufferCanvas._canvas, 0, 0, bufferCanvas.width / ratio, bufferCanvas.height / ratio);\n }\n else {\n context._applyLineJoin(this);\n if (!cachingSelf) {\n var o = this.getAbsoluteTransform(top).getMatrix();\n context.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n }\n if (hasShadow) {\n context._applyShadow(this);\n }\n drawFunc.call(this, context, this);\n }\n context.restore();\n return this;\n };\n Shape.prototype.drawHit = function (can, top, skipDragCheck) {\n if (skipDragCheck === void 0) { skipDragCheck = false; }\n if (!this.shouldDrawHit(top, skipDragCheck)) {\n return this;\n }\n var layer = this.getLayer(), canvas = can || layer.hitCanvas, context = canvas && canvas.getContext(), drawFunc = this.hitFunc() || this.sceneFunc(), cachedCanvas = this._getCanvasCache(), cachedHitCanvas = cachedCanvas && cachedCanvas.hit;\n if (!this.colorKey) {\n console.log(this);\n Util_1.Util.warn('Looks like your canvas has a destroyed shape in it. Do not reuse shape after you destroyed it. See the shape in logs above. If you want to reuse shape you should call remove() instead of destroy()');\n }\n if (cachedHitCanvas) {\n context.save();\n var m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedHitCanvas(context);\n context.restore();\n return this;\n }\n if (!drawFunc) {\n return this;\n }\n context.save();\n context._applyLineJoin(this);\n var selfCache = this === top;\n if (!selfCache) {\n var o = this.getAbsoluteTransform(top).getMatrix();\n context.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n }\n drawFunc.call(this, context, this);\n context.restore();\n return this;\n };\n Shape.prototype.drawHitFromCache = function (alphaThreshold) {\n if (alphaThreshold === void 0) { alphaThreshold = 0; }\n var cachedCanvas = this._getCanvasCache(), sceneCanvas = this._getCachedSceneCanvas(), hitCanvas = cachedCanvas.hit, hitContext = hitCanvas.getContext(), hitWidth = hitCanvas.getWidth(), hitHeight = hitCanvas.getHeight(), hitImageData, hitData, len, rgbColorKey, i, alpha;\n hitContext.clear();\n hitContext.drawImage(sceneCanvas._canvas, 0, 0, hitWidth, hitHeight);\n try {\n hitImageData = hitContext.getImageData(0, 0, hitWidth, hitHeight);\n hitData = hitImageData.data;\n len = hitData.length;\n rgbColorKey = Util_1.Util._hexToRgb(this.colorKey);\n for (i = 0; i < len; i += 4) {\n alpha = hitData[i + 3];\n if (alpha > alphaThreshold) {\n hitData[i] = rgbColorKey.r;\n hitData[i + 1] = rgbColorKey.g;\n hitData[i + 2] = rgbColorKey.b;\n hitData[i + 3] = 255;\n }\n else {\n hitData[i + 3] = 0;\n }\n }\n hitContext.putImageData(hitImageData, 0, 0);\n }\n catch (e) {\n Util_1.Util.error('Unable to draw hit graph from cached scene canvas. ' + e.message);\n }\n return this;\n };\n Shape.prototype.hasPointerCapture = function (pointerId) {\n return PointerEvents.hasPointerCapture(pointerId, this);\n };\n Shape.prototype.setPointerCapture = function (pointerId) {\n PointerEvents.setPointerCapture(pointerId, this);\n };\n Shape.prototype.releaseCapture = function (pointerId) {\n PointerEvents.releaseCapture(pointerId, this);\n };\n return Shape;\n}(Node_1.Node));\nexports.Shape = Shape;\nShape.prototype._fillFunc = _fillFunc;\nShape.prototype._strokeFunc = _strokeFunc;\nShape.prototype._fillFuncHit = _fillFuncHit;\nShape.prototype._strokeFuncHit = _strokeFuncHit;\nShape.prototype._centroid = false;\nShape.prototype.nodeType = 'Shape';\nGlobal_1._registerNode(Shape);\nShape.prototype.eventListeners = {};\nShape.prototype.on.call(Shape.prototype, 'shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearHasShadowCache);\nShape.prototype.on.call(Shape.prototype, 'shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearGetShadowRGBACache);\nShape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillPatternImageChange.konva fillPatternRepeatChange.konva fillPatternScaleXChange.konva fillPatternScaleYChange.konva', _clearFillPatternCache);\nShape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillLinearGradientColorStopsChange.konva fillLinearGradientStartPointXChange.konva fillLinearGradientStartPointYChange.konva fillLinearGradientEndPointXChange.konva fillLinearGradientEndPointYChange.konva', _clearLinearGradientCache);\nShape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillRadialGradientColorStopsChange.konva fillRadialGradientStartPointXChange.konva fillRadialGradientStartPointYChange.konva fillRadialGradientEndPointXChange.konva fillRadialGradientEndPointYChange.konva fillRadialGradientStartRadiusChange.konva fillRadialGradientEndRadiusChange.konva', _clearRadialGradientCache);\nFactory_1.Factory.addGetterSetter(Shape, 'stroke', undefined, Validators_1.getStringOrGradientValidator());\nFactory_1.Factory.addGetterSetter(Shape, 'strokeWidth', 2, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Shape, 'fillAfterStrokeEnabled', false);\nFactory_1.Factory.addGetterSetter(Shape, 'hitStrokeWidth', 'auto', Validators_1.getNumberOrAutoValidator());\nFactory_1.Factory.addGetterSetter(Shape, 'strokeHitEnabled', true, Validators_1.getBooleanValidator());\nFactory_1.Factory.addGetterSetter(Shape, 'perfectDrawEnabled', true, Validators_1.getBooleanValidator());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowForStrokeEnabled', true, Validators_1.getBooleanValidator());\nFactory_1.Factory.addGetterSetter(Shape, 'lineJoin');\nFactory_1.Factory.addGetterSetter(Shape, 'lineCap');\nFactory_1.Factory.addGetterSetter(Shape, 'sceneFunc');\nFactory_1.Factory.addGetterSetter(Shape, 'hitFunc');\nFactory_1.Factory.addGetterSetter(Shape, 'dash');\nFactory_1.Factory.addGetterSetter(Shape, 'dashOffset', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowColor', undefined, Validators_1.getStringValidator());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowBlur', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowOpacity', 1, Validators_1.getNumberValidator());\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'shadowOffset', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Shape, 'shadowOffsetX', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowOffsetY', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternImage');\nFactory_1.Factory.addGetterSetter(Shape, 'fill', undefined, Validators_1.getStringOrGradientValidator());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternX', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternY', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientColorStops');\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientColorStops');\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientStartRadius', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientEndRadius', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientColorStops');\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternRepeat', 'repeat');\nFactory_1.Factory.addGetterSetter(Shape, 'fillEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'shadowEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'dashEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeScaleEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPriority', 'color');\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillPatternOffset', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternOffsetX', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternOffsetY', 0, Validators_1.getNumberValidator());\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillPatternScale', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternScaleX', 1, Validators_1.getNumberValidator());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternScaleY', 1, Validators_1.getNumberValidator());\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillLinearGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'strokeLinearGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientStartPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientStartPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientStartPointY', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientStartPointY', 0);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillLinearGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'strokeLinearGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientEndPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientEndPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientEndPointY', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientEndPointY', 0);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillRadialGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientStartPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientStartPointY', 0);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillRadialGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientEndPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientEndPointY', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternRotation', 0);\nFactory_1.Factory.backCompat(Shape, {\n dashArray: 'dash',\n getDashArray: 'getDash',\n setDashArray: 'getDash',\n drawFunc: 'sceneFunc',\n getDrawFunc: 'getSceneFunc',\n setDrawFunc: 'setSceneFunc',\n drawHitFunc: 'hitFunc',\n getDrawHitFunc: 'getHitFunc',\n setDrawHitFunc: 'setHitFunc',\n});\nUtil_1.Collection.mapMethods(Shape);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Konva = void 0;\nvar _CoreInternals_1 = require(\"./_CoreInternals\");\nvar Arc_1 = require(\"./shapes/Arc\");\nvar Arrow_1 = require(\"./shapes/Arrow\");\nvar Circle_1 = require(\"./shapes/Circle\");\nvar Ellipse_1 = require(\"./shapes/Ellipse\");\nvar Image_1 = require(\"./shapes/Image\");\nvar Label_1 = require(\"./shapes/Label\");\nvar Line_1 = require(\"./shapes/Line\");\nvar Path_1 = require(\"./shapes/Path\");\nvar Rect_1 = require(\"./shapes/Rect\");\nvar RegularPolygon_1 = require(\"./shapes/RegularPolygon\");\nvar Ring_1 = require(\"./shapes/Ring\");\nvar Sprite_1 = require(\"./shapes/Sprite\");\nvar Star_1 = require(\"./shapes/Star\");\nvar Text_1 = require(\"./shapes/Text\");\nvar TextPath_1 = require(\"./shapes/TextPath\");\nvar Transformer_1 = require(\"./shapes/Transformer\");\nvar Wedge_1 = require(\"./shapes/Wedge\");\nvar Blur_1 = require(\"./filters/Blur\");\nvar Brighten_1 = require(\"./filters/Brighten\");\nvar Contrast_1 = require(\"./filters/Contrast\");\nvar Emboss_1 = require(\"./filters/Emboss\");\nvar Enhance_1 = require(\"./filters/Enhance\");\nvar Grayscale_1 = require(\"./filters/Grayscale\");\nvar HSL_1 = require(\"./filters/HSL\");\nvar HSV_1 = require(\"./filters/HSV\");\nvar Invert_1 = require(\"./filters/Invert\");\nvar Kaleidoscope_1 = require(\"./filters/Kaleidoscope\");\nvar Mask_1 = require(\"./filters/Mask\");\nvar Noise_1 = require(\"./filters/Noise\");\nvar Pixelate_1 = require(\"./filters/Pixelate\");\nvar Posterize_1 = require(\"./filters/Posterize\");\nvar RGB_1 = require(\"./filters/RGB\");\nvar RGBA_1 = require(\"./filters/RGBA\");\nvar Sepia_1 = require(\"./filters/Sepia\");\nvar Solarize_1 = require(\"./filters/Solarize\");\nvar Threshold_1 = require(\"./filters/Threshold\");\nexports.Konva = _CoreInternals_1.Konva.Util._assign(_CoreInternals_1.Konva, {\n Arc: Arc_1.Arc,\n Arrow: Arrow_1.Arrow,\n Circle: Circle_1.Circle,\n Ellipse: Ellipse_1.Ellipse,\n Image: Image_1.Image,\n Label: Label_1.Label,\n Tag: Label_1.Tag,\n Line: Line_1.Line,\n Path: Path_1.Path,\n Rect: Rect_1.Rect,\n RegularPolygon: RegularPolygon_1.RegularPolygon,\n Ring: Ring_1.Ring,\n Sprite: Sprite_1.Sprite,\n Star: Star_1.Star,\n Text: Text_1.Text,\n TextPath: TextPath_1.TextPath,\n Transformer: Transformer_1.Transformer,\n Wedge: Wedge_1.Wedge,\n Filters: {\n Blur: Blur_1.Blur,\n Brighten: Brighten_1.Brighten,\n Contrast: Contrast_1.Contrast,\n Emboss: Emboss_1.Emboss,\n Enhance: Enhance_1.Enhance,\n Grayscale: Grayscale_1.Grayscale,\n HSL: HSL_1.HSL,\n HSV: HSV_1.HSV,\n Invert: Invert_1.Invert,\n Kaleidoscope: Kaleidoscope_1.Kaleidoscope,\n Mask: Mask_1.Mask,\n Noise: Noise_1.Noise,\n Pixelate: Pixelate_1.Pixelate,\n Posterize: Posterize_1.Posterize,\n RGB: RGB_1.RGB,\n RGBA: RGBA_1.RGBA,\n Sepia: Sepia_1.Sepia,\n Solarize: Solarize_1.Solarize,\n Threshold: Threshold_1.Threshold,\n },\n});\n"],"sourceRoot":""}