From e2e737369aab2c38fd870a2da1de47e3ff0ebdc8 Mon Sep 17 00:00:00 2001 From: Jess Lin Date: Mon, 30 Mar 2015 15:28:41 -0700 Subject: [PATCH] [Gutter] Factor out method to set common gutter component properties --- src/custom-gutter-component.coffee | 12 +++--------- src/gutter-component-helpers.coffee | 16 ++++++++++++++++ src/line-number-gutter-component.coffee | 13 ++----------- 3 files changed, 21 insertions(+), 20 deletions(-) create mode 100644 src/gutter-component-helpers.coffee diff --git a/src/custom-gutter-component.coffee b/src/custom-gutter-component.coffee index 78abf92ec..3ffc2ec73 100644 --- a/src/custom-gutter-component.coffee +++ b/src/custom-gutter-component.coffee @@ -1,3 +1,5 @@ +{setDimensionsAndBackground} = require './gutter-component-helpers' + # This class represents a gutter other than the 'line-numbers' gutter. # The contents of this gutter may be specified by Decorations. @@ -33,15 +35,7 @@ class CustomGutterComponent decorationState = state.gutters.customDecorations[@getName()] @oldState ?= {} - # TODO (jessicalin) Factor this out (also in LineNumberGutterComponent). - # Also, set backgroundColor? - if gutterProps.scrollHeight isnt @oldState.scrollHeight - @decorationsNode.style.height = gutterProps.scrollHeight + 'px' - @oldState.scrollHeight = gutterProps.scrollHeight - - if gutterProps.scrollTop isnt @oldState.scrollTop - @decorationsNode.style['-webkit-transform'] = "translate3d(0px, #{-gutterProps.scrollTop}px, 0px)" - @oldState.scrollTop = gutterProps.scrollTop + setDimensionsAndBackground(@oldState, gutterProps, @decorationsNode) return if !decorationState diff --git a/src/gutter-component-helpers.coffee b/src/gutter-component-helpers.coffee new file mode 100644 index 000000000..ba7cdb613 --- /dev/null +++ b/src/gutter-component-helpers.coffee @@ -0,0 +1,16 @@ +# Helper methods shared among GutterComponent classes. + +module.exports = + # Sets scrollHeight, scrollTop, and backgroundColor on the given domNode. + setDimensionsAndBackground: (oldState, newState, domNode) -> + if newState.scrollHeight isnt oldState.scrollHeight + domNode.style.height = newState.scrollHeight + 'px' + oldState.scrollHeight = newState.scrollHeight + + if newState.scrollTop isnt oldState.scrollTop + domNode.style['-webkit-transform'] = "translate3d(0px, #{-newState.scrollTop}px, 0px)" + oldState.scrollTop = newState.scrollTop + + if newState.backgroundColor isnt oldState.backgroundColor + domNode.style.backgroundColor = newState.backgroundColor + oldState.backgroundColor = newState.backgroundColor diff --git a/src/line-number-gutter-component.coffee b/src/line-number-gutter-component.coffee index 87d33619c..0f9571865 100644 --- a/src/line-number-gutter-component.coffee +++ b/src/line-number-gutter-component.coffee @@ -1,4 +1,5 @@ _ = require 'underscore-plus' +{setDimensionsAndBackground} = require './gutter-component-helpers' WrapperDiv = document.createElement('div') @@ -30,17 +31,7 @@ class LineNumberGutterComponent @appendDummyLineNumber() unless @dummyLineNumberNode? - if @newState.scrollHeight isnt @oldState.scrollHeight - @lineNumbersNode.style.height = @newState.scrollHeight + 'px' - @oldState.scrollHeight = @newState.scrollHeight - - if @newState.scrollTop isnt @oldState.scrollTop - @lineNumbersNode.style['-webkit-transform'] = "translate3d(0px, #{-@newState.scrollTop}px, 0px)" - @oldState.scrollTop = @newState.scrollTop - - if @newState.backgroundColor isnt @oldState.backgroundColor - @lineNumbersNode.style.backgroundColor = @newState.backgroundColor - @oldState.backgroundColor = @newState.backgroundColor + setDimensionsAndBackground(@oldState, @newState, @lineNumbersNode) if @newState.maxLineNumberDigits isnt @oldState.maxLineNumberDigits @updateDummyLineNumber()