UNPKG

kdf

Version:

KD: a non-document focused UI Framework for web applications.

65 lines (45 loc) 1.58 kB
KDView = require './../../core/view.coffee' module.exports = class KDSplitResizer extends KDView constructor: (options = {}, data) -> options.handleSize or= 2 @isVertical = options.type.toLowerCase() is "vertical" axis = if @isVertical then "x" else "y" options.draggable ?= { axis } super options, data {@panel0, @panel1} = @getOptions() @on "DragFinished", @dragFinished @on "DragInAction", @dragInAction @on "DragStarted", @dragStarted _setOffset:(offset)-> offset = 0 if offset < 0 newOffset = offset - @getOption('handleSize') if @isVertical then @$().css left : newOffset else @$().css top : newOffset _getOffset:(offset)-> if @isVertical then @getRelativeX() else @getRelativeY() _animateTo:(offset)-> d = @parent.options.duration if @isVertical offset -= @getWidth() / 2 @$().animate left : offset,d else offset -= @getHeight() / 2 @$().animate top : offset,d dragFinished:(event, dragState)-> @parent._resizeDidStop event dragStarted:(event, dragState)-> @parent._resizeDidStart() @rOffset = @_getOffset() @p0Size = @panel0._getSize() @p1Size = @panel1._getSize() @p1Offset = @panel1._getOffset() dragInAction:(x, y)-> if @isVertical if @panel0._wouldResize x + @p0Size @parent.resizePanel x + @p0Size else @_setOffset @panel1._getOffset() else if @panel0._wouldResize y + @p0Size @parent.resizePanel y + @p0Size else @_setOffset @panel1._getOffset()