2015-02-10 08:19:44 +08:00
/*! Konva v0.9.0 2015-02-10 http://konvajs.github.io/ by Anton Lavrenov @lavrton - MIT License https://github.com/konvajs/konva/wiki/License*/
var Konva = { } ; ! function ( a ) { var b = Math . PI / 180 ; Konva = { version : "0.9.0" , stages : [ ] , idCounter : 0 , ids : { } , names : { } , shapes : { } , listenClickTap : ! 1 , inDblClickWindow : ! 1 , enableTrace : ! 1 , traceArrMax : 100 , dblClickWindow : 400 , pixelRatio : void 0 , dragDistance : 0 , angleDeg : ! 0 , showWarnings : ! 0 , Filters : { } , Node : function ( a ) { this . _init ( a ) } , Shape : function ( a ) { this . _ _init ( a ) } , Container : function ( a ) { this . _ _init ( a ) } , Stage : function ( a ) { this . _ _ _init ( a ) } , BaseLayer : function ( a ) { this . _ _ _init ( a ) } , Layer : function ( a ) { this . _ _ _ _init ( a ) } , FastLayer : function ( a ) { this . _ _ _ _init ( a ) } , Group : function ( a ) { this . _ _ _init ( a ) } , isDragging : function ( ) { var a = Konva . DD ; return a ? a . isDragging : ! 1 } , isDragReady : function ( ) { var a = Konva . DD ; return a ? ! ! a . node : ! 1 } , _addId : function ( a , b ) { void 0 !== b && ( this . ids [ b ] = a ) } , _removeId : function ( a ) { void 0 !== a && delete this . ids [ a ] } , _addName : function ( a , b ) { b && ( this . names [ b ] || ( this . names [ b ] = [ ] ) , this . names [ b ] . push ( a ) ) } , _removeName : function ( a , b ) { if ( void 0 !== a ) { var c = this . names [ a ] ; if ( void 0 !== c ) { for ( var d = 0 ; d < c . length ; d ++ ) { var e = c [ d ] ; e . _id === b && c . splice ( d , 1 ) } 0 === c . length && delete this . names [ a ] } } } , getAngle : function ( a ) { return this . angleDeg ? a * b : a } , _parseUA : function ( a ) { var b = a . toLowerCase ( ) , c = /(chrome)[ \/]([\w.]+)/ . exec ( b ) || /(webkit)[ \/]([\w.]+)/ . exec ( b ) || /(opera)(?:.*version|)[ \/]([\w.]+)/ . exec ( b ) || /(msie) ([\w.]+)/ . exec ( b ) || b . indexOf ( "compatible" ) < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/ . exec ( b ) || [ ] , d = ! ! a . match ( /Android|BlackBerry|iPhone|iPad|iPod|Opera Mini|IEMobile/i ) , e = ! ! a . match ( /IEMobile/i ) ; return { browser : c [ 1 ] || "" , version : c [ 2 ] || "0" , mobile : d , ieMobile : e } } , UA : void 0 } , Konva . UA = Konva . _parseUA ( a . navigator && a . navigator . userAgent || "" ) } ( this ) , function ( a , b ) { if ( "object" == typeof exports ) { var c = b ( ) ; if ( global . window === global ) Konva . document = global . document , Konva . window = global ; else { var d = require ( "canvas" ) , e = require ( "jsdom" ) . jsdom ; Konva . document = e ( "<!DOCTYPE html><html><head></head><body></body></html>" ) , Konva . window = Konva . document . createWindow ( ) , Konva . window . Image = d . Image , Konva . _nodeCanvas = d } return Konva . root = a , void ( module . exports = c ) } "function" == typeof define && define . amd && define ( b ) , Konva . document = document , Konva . window = window , Konva . root = a } ( this , function ( ) { return Konva } ) , function ( ) { Konva . Collection = function ( ) { var a = [ ] . slice . call ( arguments ) , b = a . length , c = 0 ; for ( this . length = b ; b > c ; c ++ ) this [ c ] = a [ c ] ; return this } , Konva . Collection . prototype = [ ] , Konva . Collection . prototype . each = function ( a ) { for ( var b = 0 ; b < this . length ; b ++ ) a ( this [ b ] , b ) } , Konva . Collection . prototype . toArray = function ( ) { var a , b = [ ] , c = this . length ; for ( a = 0 ; c > a ; a ++ ) b . push ( this [ a ] ) ; return b } , Konva . Collection . toCollection = function ( a ) { var b , c = new Konva . Collection , d = a . length ; for ( b = 0 ; d > b ; b ++ ) c . push ( a [ b ] ) ; return c } , Konva . Collection . _mapMethod = function ( a ) { Konva . Collection . prototype [ a ] = function ( ) { var b , c = this . length , d = [ ] . slice . call ( arguments ) ; for ( b = 0 ; c > b ; b ++ ) this [ b ] [ a ] . apply ( this [ b ] , d ) ; return this } } , Konva . Collection . mapMethods = function ( a ) { var b = a . prototype ; for ( var c in b ) Konva . Collection . _mapMethod ( c ) } , Konva . Transform = function ( a ) { this . m = a && a . slice ( ) || [ 1 , 0 , 0 , 1 , 0 , 0 ] } , Konva . Transform . prototype = { copy : function ( ) { return new Konva . Transform ( this . m ) } , point : function ( a ) { var b = this . m ; return { x : b [ 0 ] * a . x + b [ 2 ] * a . y + b [ 4 ] , y : b [ 1 ] * a . x + b [ 3 ] * a . y + b [ 5 ] } } , translate : function ( a , b ) { return this . m [ 4 ] += this . m [ 0 ] * a + this . m [ 2 ] * b , this . m [ 5 ] += this . m [ 1 ] * a + this . m [ 3 ] * b , this } , scale : function ( a , b ) { return this . m [ 0 ] *= a , this . m [ 1 ] *= a , this . m [ 2 ] *= b , this . m [ 3 ] *= b , this } , rotate : function ( a ) { var b = Math . cos ( a ) , c = Math . sin ( a ) , d = this . m [ 0 ] * b + this . m [ 2 ] * c , e = this . m [ 1 ] * b + this . m [ 3 ] * c , f = this . m [ 0 ] * - c + this . m [ 2 ] * b , g = this . m [ 1 ] * - c + this . m [ 3 ] * b ; return this . m [ 0 ] = d , this . m [ 1 ] = e , this . m [ 2 ] = f , this . m [ 3 ] = g , this } , getTranslation : function ( ) { return { x : this . m [ 4 ] , y : this . m [ 5 ] } } , skew : function ( a , b ) { var c = this . m [ 0 ] + this . m [ 2 ] * b , d = this . m [ 1 ] + this . m [ 3 ] * b , e = this . m [ 2 ] + this . m [ 0 ] * a , f = this . m [ 3 ] + this . m [ 1 ] * a ; return this . m [ 0 ] = c , this . m [ 1 ] = d , this . m [ 2 ] = e , this . m [ 3 ] = f , this } , multiply : function ( a ) { var b = this . m [ 0 ] * a . m [ 0 ] + this . m [ 2 ] * a . m [ 1 ] , c = this . m [ 1 ] * a . m [ 0 ] + this . m [ 3 ] * a . m [ 1 ] , d = this . m [ 0 ] * a . m [ 2 ] + this . m [ 2 ] * a . m [ 3 ] , e = this . m [ 1 ] * a . m [ 2 ] + this . m [ 3 ] * a . m [ 3 ] , f = this . m [ 0 ] * a . m [ 4 ] + this . m [ 2 ] * a . m [ 5 ] + this . m [ 4 ] , g = this . m [ 1 ] * a . m [ 4 ] + this . m [ 3 ] * a . m [ 5 ] + this . m [ 5 ] ; return this . m [ 0 ] = b , this . m [ 1 ] = c , this . m [ 2 ] =
} , moveDown : function ( ) { if ( ! this . parent ) return void Konva . Util . warn ( "Node has no parent. moveDown function is ignored." ) ; var a = this . index ; return a > 0 ? ( this . parent . children . splice ( a , 1 ) , this . parent . children . splice ( a - 1 , 0 , this ) , this . parent . _setChildrenIndices ( ) , ! 0 ) : ! 1 } , moveToBottom : function ( ) { if ( ! this . parent ) return void Konva . Util . warn ( "Node has no parent. moveToBottom function is ignored." ) ; var a = this . index ; return a > 0 ? ( this . parent . children . splice ( a , 1 ) , this . parent . children . unshift ( this ) , this . parent . _setChildrenIndices ( ) , ! 0 ) : ! 1 } , setZIndex : function ( a ) { if ( ! this . parent ) return void Konva . Util . warn ( "Node has no parent. zIndex parameter is ignored." ) ; var b = this . index ; return this . parent . children . splice ( b , 1 ) , this . parent . children . splice ( a , 0 , this ) , this . parent . _setChildrenIndices ( ) , this } , getAbsoluteOpacity : function ( ) { return this . _getCache ( a , this . _getAbsoluteOpacity ) } , _getAbsoluteOpacity : function ( ) { var a = this . getOpacity ( ) ; return this . getParent ( ) && ( a *= this . getParent ( ) . getAbsoluteOpacity ( ) ) , a } , moveTo : function ( a ) { return this . getParent ( ) !== a && ( this . remove ( ) , a . add ( this ) ) , this } , toObject : function ( ) { var a , b , c , d , e = Konva . Util , f = { } , g = this . getAttrs ( ) ; f . attrs = { } ; for ( a in g ) b = g [ a ] , e . _isFunction ( b ) || e . _isElement ( b ) || e . _isObject ( b ) && e . _hasMethods ( b ) || ( c = this [ a ] , delete g [ a ] , d = c ? c . call ( this ) : null , g [ a ] = b , d !== b && ( f . attrs [ a ] = b ) ) ; return f . className = this . getClassName ( ) , f } , toJSON : function ( ) { return JSON . stringify ( this . toObject ( ) ) } , getParent : function ( ) { return this . parent } , getLayer : function ( ) { var a = this . getParent ( ) ; return a ? a . getLayer ( ) : null } , getStage : function ( ) { return this . _getCache ( q , this . _getStage ) } , _getStage : function ( ) { var a = this . getParent ( ) ; return a ? a . getStage ( ) : void 0 } , fire : function ( a , b , c ) { return c ? this . _fireAndBubble ( a , b || { } ) : this . _fire ( a , b || { } ) , this } , getAbsoluteTransform : function ( a ) { return a ? this . _getAbsoluteTransform ( a ) : this . _getCache ( b , this . _getAbsoluteTransform ) } , _getAbsoluteTransform : function ( a ) { var b , c , d = new Konva . Transform ; return this . _eachAncestorReverse ( function ( a ) { b = a . transformsEnabled ( ) , c = a . getTransform ( ) , "all" === b ? d . multiply ( c ) : "position" === b && d . translate ( a . x ( ) , a . y ( ) ) } , a ) , d } , getTransform : function ( ) { return this . _getCache ( r , this . _getTransform ) } , _getTransform : function ( ) { var a = new Konva . Transform , b = this . getX ( ) , c = this . getY ( ) , d = Konva . getAngle ( this . getRotation ( ) ) , e = this . getScaleX ( ) , f = this . getScaleY ( ) , g = this . getSkewX ( ) , h = this . getSkewY ( ) , i = this . getOffsetX ( ) , j = this . getOffsetY ( ) ; return ( 0 !== b || 0 !== c ) && a . translate ( b , c ) , 0 !== d && a . rotate ( d ) , ( 0 !== g || 0 !== h ) && a . skew ( g , h ) , ( 1 !== e || 1 !== f ) && a . scale ( e , f ) , ( 0 !== i || 0 !== j ) && a . translate ( - 1 * i , - 1 * j ) , a } , clone : function ( a ) { var b , c , d , e , f , g = this . getClassName ( ) , h = Konva . Util . cloneObject ( this . attrs ) ; for ( var j in u ) { var k = u [ j ] ; delete h [ k ] } for ( b in a ) h [ b ] = a [ b ] ; var l = new Konva [ g ] ( h ) ; for ( b in this . eventListeners ) for ( c = this . eventListeners [ b ] , d = c . length , e = 0 ; d > e ; e ++ ) f = c [ e ] , f . name . indexOf ( i ) < 0 && ( l . eventListeners [ b ] || ( l . eventListeners [ b ] = [ ] ) , l . eventListeners [ b ] . push ( f ) ) ; return l } , toDataURL : function ( a ) { a = a || { } ; var b = a . mimeType || null , c = a . quality || null , d = this . getStage ( ) , e = a . x || 0 , f = a . y || 0 , g = new Konva . SceneCanvas ( { width : a . width || this . getWidth ( ) || ( d ? d . getWidth ( ) : 0 ) , height : a . height || this . getHeight ( ) || ( d ? d . getHeight ( ) : 0 ) , pixelRatio : 1 } ) , h = g . getContext ( ) ; return h . save ( ) , ( e || f ) && h . translate ( - 1 * e , - 1 * f ) , this . drawScene ( g ) , h . restore ( ) , g . toDataURL ( b , c ) } , toImage : function ( a ) { Konva . Util . _getImage ( this . toDataURL ( a ) , function ( b ) { a . callback ( b ) } ) } , setSize : function ( a ) { return this . setWidth ( a . width ) , this . setHeight ( a . height ) , this } , getSize : function ( ) { return { width : this . getWidth ( ) , height : this . getHeight ( ) } } , getWidth : function ( ) { return this . attrs . width || 0 } , getHeight : function ( ) { return this . attrs . height || 0 } , getClassName : function ( ) { return this . className || this . nodeType } , getType : function ( ) { return this . nodeType } , getDragDistance : function ( ) { return void 0 !== this . attrs . dragDistance ? this . attrs . dragDistance : this . parent ? this . parent . getDragDistance ( ) : Konva . dragDistance } , _get : function ( a ) { return this . className === a || this . nodeType === a ? [ this ] : [ ] } , _off : function ( a , b ) { var c , d , e = this . eventListeners [ a ] ; for ( c = 0 ; c < e . length ; c ++ ) if ( d = e [ c ] . name , ! ( "konva" === d && "konva" !== b || b && d !== b ) ) { if ( e . splice ( c , 1 ) , 0 === e .
if ( c ) { var e = { x : c . x - b . offset . x , y : c . y - b . offset . y } ; void 0 !== d && ( e = d . call ( this , e , a ) ) , this . setAbsolutePosition ( e ) , this . _lastPos && this . _lastPos . x === e . x && this . _lastPos . y === e . y || ( b . anim . dirty = ! 0 ) , this . _lastPos = e } } , Konva . Node . prototype . stopDrag = function ( ) { var a = Konva . DD , b = { } ; a . _endDragBefore ( b ) , a . _endDragAfter ( b ) } , Konva . Node . prototype . setDraggable = function ( a ) { this . _setAttr ( "draggable" , a ) , this . _dragChange ( ) } ; var a = Konva . Node . prototype . destroy ; Konva . Node . prototype . destroy = function ( ) { var b = Konva . DD ; b . node && b . node . _id === this . _id && this . stopDrag ( ) , a . call ( this ) } , Konva . Node . prototype . isDragging = function ( ) { var a = Konva . DD ; return ! ( ! a . node || a . node . _id !== this . _id || ! a . isDragging ) } , Konva . Node . prototype . _listenDrag = function ( ) { var a = this ; this . _dragCleanup ( ) , "Stage" === this . getClassName ( ) ? this . on ( "contentMousedown.konva contentTouchstart.konva" , function ( b ) { Konva . DD . node || a . startDrag ( b ) } ) : this . on ( "mousedown.konva touchstart.konva" , function ( b ) { 1 !== b . evt . button && 2 !== b . evt . button && ( Konva . DD . node || a . startDrag ( b ) ) } ) } , Konva . Node . prototype . _dragChange = function ( ) { if ( this . attrs . draggable ) this . _listenDrag ( ) ; else { this . _dragCleanup ( ) ; var a = this . getStage ( ) , b = Konva . DD ; a && b . node && b . node . _id === this . _id && b . node . stopDrag ( ) } } , Konva . Node . prototype . _dragCleanup = function ( ) { "Stage" === this . getClassName ( ) ? ( this . off ( "contentMousedown.konva" ) , this . off ( "contentTouchstart.konva" ) ) : ( this . off ( "mousedown.konva" ) , this . off ( "touchstart.konva" ) ) } , Konva . Factory . addGetterSetter ( Konva . Node , "dragBoundFunc" ) , Konva . Factory . addGetter ( Konva . Node , "draggable" , ! 1 ) , Konva . Factory . addOverloadedGetterSetter ( Konva . Node , "draggable" ) ; var b = Konva . document . documentElement ; b . addEventListener ( "mouseup" , Konva . DD . _endDragBefore , ! 0 ) , b . addEventListener ( "touchend" , Konva . DD . _endDragBefore , ! 0 ) , b . addEventListener ( "mouseup" , Konva . DD . _endDragAfter , ! 1 ) , b . addEventListener ( "touchend" , Konva . DD . _endDragAfter , ! 1 ) } ( ) , function ( ) { Konva . Util . addMethods ( Konva . Container , { _ _init : function ( a ) { this . children = new Konva . Collection , Konva . Node . call ( this , a ) } , getChildren : function ( a ) { if ( a ) { var b = new Konva . Collection ; return this . children . each ( function ( c ) { a ( c ) && b . push ( c ) } ) , b } return this . children } , hasChildren : function ( ) { return this . getChildren ( ) . length > 0 } , removeChildren : function ( ) { for ( var a , b = Konva . Collection . toCollection ( this . children ) , c = 0 ; c < b . length ; c ++ ) a = b [ c ] , delete a . parent , a . index = 0 , a . hasChildren ( ) && a . removeChildren ( ) , a . remove ( ) ; return b = null , this . children = new Konva . Collection , this } , destroyChildren : function ( ) { for ( var a , b = Konva . Collection . toCollection ( this . children ) , c = 0 ; c < b . length ; c ++ ) a = b [ c ] , delete a . parent , a . index = 0 , a . destroy ( ) ; return b = null , this . children = new Konva . Collection , this } , add : function ( a ) { if ( arguments . length > 1 ) { for ( var b = 0 ; b < arguments . length ; b ++ ) this . add ( arguments [ b ] ) ; return this } if ( a . getParent ( ) ) return a . moveTo ( this ) , this ; var c = this . children ; return this . _validateAdd ( a ) , a . index = c . length , a . parent = this , c . push ( a ) , this . _fire ( "add" , { child : a } ) , a . isDragging ( ) && Konva . DD . anim . setLayers ( a . getLayer ( ) ) , this } , destroy : function ( ) { this . hasChildren ( ) && this . destroyChildren ( ) , Konva . Node . prototype . destroy . call ( this ) } , find : function ( a ) { var b , c , d , e , f , g , h , i = [ ] , j = a . replace ( / /g , "" ) . split ( "," ) , k = j . length ; for ( b = 0 ; k > b ; b ++ ) if ( d = j [ b ] , "#" === d . charAt ( 0 ) ) f = this . _getNodeById ( d . slice ( 1 ) ) , f && i . push ( f ) ; else if ( "." === d . charAt ( 0 ) ) e = this . _getNodesByName ( d . slice ( 1 ) ) , i = i . concat ( e ) ; else for ( g = this . getChildren ( ) , h = g . length , c = 0 ; h > c ; c ++ ) i = i . concat ( g [ c ] . _get ( d ) ) ; return Konva . Collection . toCollection ( i ) } , findOne : function ( a ) { return this . find ( a ) [ 0 ] } , _getNodeById : function ( a ) { var b = Konva . ids [ a ] ; return void 0 !== b && this . isAncestorOf ( b ) ? b : null } , _getNodesByName : function ( a ) { var b = Konva . names [ a ] || [ ] ; return this . _getDescendants ( b ) } , _get : function ( a ) { for ( var b = Konva . Node . prototype . _get . call ( this , a ) , c = this . getChildren ( ) , d = c . length , e = 0 ; d > e ; e ++ ) b = b . concat ( c [ e ] . _get ( a ) ) ; return b } , toObject : function ( ) { var a = Konva . Node . prototype . toObject . call ( this ) ; a . children = [ ] ; for ( var b = this . getChildren ( ) , c = b . length , d = 0 ; c > d ; d ++ ) { var e = b [ d ] ; a . children . push ( e . toObject ( ) ) } return a } , _getDescendants : function ( a ) { for ( var b = [ ] , c = a . length , d = 0 ; c > d ; d ++ ) { var e = a [ d ] ; this . isAncestorOf ( e ) && b . push ( e ) } return b } , isAncestorOf : fu
} ( ) , function ( ) { var a = 2 * Math . PI - 1e-4 , b = "Ellipse" ; Konva . Ellipse = function ( a ) { this . _ _ _init ( a ) } , Konva . Ellipse . prototype = { _ _ _init : function ( a ) { Konva . Shape . call ( this , a ) , this . className = b , this . sceneFunc ( this . _sceneFunc ) } , _sceneFunc : function ( b ) { var c = this . getRadiusX ( ) , d = this . getRadiusY ( ) ; b . beginPath ( ) , b . save ( ) , c !== d && b . scale ( 1 , d / c ) , b . arc ( 0 , 0 , c , 0 , a , ! 1 ) , b . restore ( ) , b . closePath ( ) , b . fillStrokeShape ( this ) } , getWidth : function ( ) { return 2 * this . getRadiusX ( ) } , getHeight : function ( ) { return 2 * this . getRadiusY ( ) } , setWidth : function ( a ) { Konva . Node . prototype . setWidth . call ( this , a ) , this . setRadius ( { x : a / 2 } ) } , setHeight : function ( a ) { Konva . Node . prototype . setHeight . call ( this , a ) , this . setRadius ( { y : a / 2 } ) } } , Konva . Util . extend ( Konva . Ellipse , Konva . Shape ) , Konva . Factory . addComponentsGetterSetter ( Konva . Ellipse , "radius" , [ "x" , "y" ] ) , Konva . Factory . addGetterSetter ( Konva . Ellipse , "radiusX" , 0 ) , Konva . Factory . addGetterSetter ( Konva . Ellipse , "radiusY" , 0 ) , Konva . Collection . mapMethods ( Konva . Ellipse ) } ( ) , function ( ) { var a = 2 * Math . PI - 1e-4 ; Konva . Ring = function ( a ) { this . _ _ _init ( a ) } , Konva . Ring . prototype = { _ _ _init : function ( a ) { Konva . Shape . call ( this , a ) , this . className = "Ring" , this . sceneFunc ( this . _sceneFunc ) } , _sceneFunc : function ( b ) { b . beginPath ( ) , b . arc ( 0 , 0 , this . getInnerRadius ( ) , 0 , a , ! 1 ) , b . moveTo ( this . getOuterRadius ( ) , 0 ) , b . arc ( 0 , 0 , this . getOuterRadius ( ) , a , 0 , ! 0 ) , b . closePath ( ) , b . fillStrokeShape ( this ) } , getWidth : function ( ) { return 2 * this . getOuterRadius ( ) } , getHeight : function ( ) { return 2 * this . getOuterRadius ( ) } , setWidth : function ( a ) { Konva . Node . prototype . setWidth . call ( this , a ) , this . outerRadius ( ) !== a / 2 && this . setOuterRadius ( a / 2 ) } , setHeight : function ( a ) { Konva . Node . prototype . setHeight . call ( this , a ) , this . outerRadius ( ) !== a / 2 && this . setOuterRadius ( a / 2 ) } , setOuterRadius : function ( a ) { this . _setAttr ( "outerRadius" , a ) , this . setWidth ( 2 * a ) , this . setHeight ( 2 * a ) } } , Konva . Util . extend ( Konva . Ring , Konva . Shape ) , Konva . Factory . addGetterSetter ( Konva . Ring , "innerRadius" , 0 ) , Konva . Factory . addGetter ( Konva . Ring , "outerRadius" , 0 ) , Konva . Factory . addOverloadedGetterSetter ( Konva . Ring , "outerRadius" ) , Konva . Collection . mapMethods ( Konva . Ring ) } ( ) , function ( ) { Konva . Wedge = function ( a ) { this . _ _ _init ( a ) } , Konva . Wedge . prototype = { _ _ _init : function ( a ) { Konva . Shape . call ( this , a ) , this . className = "Wedge" , this . sceneFunc ( this . _sceneFunc ) } , _sceneFunc : function ( a ) { a . beginPath ( ) , a . arc ( 0 , 0 , this . getRadius ( ) , 0 , Konva . getAngle ( this . getAngle ( ) ) , this . getClockwise ( ) ) , a . lineTo ( 0 , 0 ) , a . closePath ( ) , a . fillStrokeShape ( this ) } } , Konva . Util . extend ( Konva . Wedge , Konva . Shape ) , Konva . Factory . addGetterSetter ( Konva . Wedge , "radius" , 0 ) , Konva . Factory . addGetterSetter ( Konva . Wedge , "angle" , 0 ) , Konva . Factory . addGetterSetter ( Konva . Wedge , "clockwise" , ! 1 ) , Konva . Factory . backCompat ( Konva . Wedge , { angleDeg : "angle" , getAngleDeg : "getAngle" , setAngleDeg : "setAngle" } ) , Konva . Collection . mapMethods ( Konva . Wedge ) } ( ) , function ( ) { Konva . Arc = function ( a ) { this . _ _ _init ( a ) } , Konva . Arc . prototype = { _ _ _init : function ( a ) { Konva . Shape . call ( this , a ) , this . className = "Arc" , this . sceneFunc ( this . _sceneFunc ) } , _sceneFunc : function ( a ) { var b = Konva . getAngle ( this . angle ( ) ) , c = this . clockwise ( ) ; a . beginPath ( ) , a . arc ( 0 , 0 , this . getOuterRadius ( ) , 0 , b , c ) , a . arc ( 0 , 0 , this . getInnerRadius ( ) , b , 0 , ! c ) , a . closePath ( ) , a . fillStrokeShape ( this ) } } , Konva . Util . extend ( Konva . Arc , Konva . Shape ) , Konva . Factory . addGetterSetter ( Konva . Arc , "innerRadius" , 0 ) , Konva . Factory . addGetterSetter ( Konva . Arc , "outerRadius" , 0 ) , Konva . Factory . addGetterSetter ( Konva . Arc , "angle" , 0 ) , Konva . Factory . addGetterSetter ( Konva . Arc , "clockwise" , ! 1 ) , Konva . Collection . mapMethods ( Konva . Arc ) } ( ) , function ( ) { var a = "Image" ; Konva . Image = function ( a ) { this . _ _ _init ( a ) } , Konva . Image . prototype = { _ _ _init : function ( b ) { Konva . Shape . call ( this , b ) , this . className = a , this . sceneFunc ( this . _sceneFunc ) , this . hitFunc ( this . _hitFunc ) } , _useBufferCanvas : function ( ) { return ( this . hasShadow ( ) || 1 !== this . getAbsoluteOpacity ( ) ) && this . hasStroke ( ) && this . getStage ( ) } , _sceneFunc : function ( a ) { var b , c , d , e = this . getWidth ( ) , f = this . getHeight ( ) , g = this . getImage ( ) ; g && ( b = this . getCropWidth ( ) , c = this . getCropHeight ( ) , d = b && c ? [ g , this . getCropX ( ) , this . getCropY ( ) , b , c , 0 , 0 , e , f ] : [ g , 0 , 0 , e , f ] ) , ( this . hasFill ( ) || this . hasStroke ( ) ) && ( a . beginPath ( ) , a . rect ( 0 , 0 , e , f ) , a . closePath ( ) , a . fillStrokeShape ( this ) ) , g && a . drawImage . apply ( a , d ) } , _hi