_ = require 'underscore' path = require 'path' React = require 'react' classNames = require 'classnames' {RetinaImg, TimeoutTransitionGroup} = require 'nylas-component-kit' {Actions, Utils, ComponentRegistry, UndoRedoStore, AccountStore} = require 'nylas-exports' class UndoRedoComponent extends React.Component @displayName: 'UndoRedoComponent' @containerRequired: false constructor: (@props) -> @state = @_getStateFromStores() @_timeout = null _onChange: => @setState(@_getStateFromStores(), => @_setNewTimeout()) _clearTimeout: => clearTimeout(@_timeout) _setNewTimeout: => @_clearTimeout() @_timeout = setTimeout (=> @_hide() return ), 3000 _getStateFromStores: -> task = UndoRedoStore.getMostRecentTask() show = false if task show = true return {show, task} componentWillMount: -> @_unsubscribe = UndoRedoStore.listen(@_onChange) componentWillUnmount: -> @_clearTimeout() @_unsubscribe() render: => inner = @_renderUndoRedoManager() names = classNames "undo-redo-manager": true {inner} _renderUndoRedoManager: => if @state.show
{@state.task.description()}
Undo
else [] _onClick: => atom.commands.dispatch(document.querySelector('body'), 'core:undo') @_hide() _hide: => @setState({show: false, task: null}) module.exports = UndoRedoComponent