React = require 'react' ReactCSSTransitionGroup = require 'react-addons-css-transition-group' Sheet = require './sheet' Toolbar = require './sheet-toolbar' Flexbox = require './components/flexbox' RetinaImg = require('./components/retina-img').default InjectedComponentSet = require './components/injected-component-set' _ = require 'underscore' {Actions, ComponentRegistry, WorkspaceStore} = require "nylas-exports" class SheetContainer extends React.Component displayName = 'SheetContainer' constructor: (@props) -> @state = @_getStateFromStores() componentDidMount: => @unsubscribe = WorkspaceStore.listen @_onStoreChange componentWillUnmount: => @unsubscribe() if @unsubscribe render: => totalSheets = @state.stack.length topSheet = @state.stack[totalSheets - 1] return
unless topSheet sheetElements = @_sheetElements() {@_toolbarContainerElement()}
{sheetElements[0]} {sheetElements[1..-1]}
_toolbarContainerElement: => {toolbar} = NylasEnv.getLoadSettings() return [] unless toolbar toolbarElements = @_toolbarElements()
{toolbarElements[0]} {toolbarElements[1..-1]}
_toolbarElements: => @state.stack.map (sheet, index) -> _sheetElements: => @state.stack.map (sheet, index) => _onColumnSizeChanged: (sheet) => @refs["toolbar-#{sheet.props.depth}"]?.recomputeLayout() window.dispatchEvent(new Event('resize')) _onStoreChange: => @setState(@_getStateFromStores()) _getStateFromStores: => stack: WorkspaceStore.sheetStack() mode: WorkspaceStore.layoutMode() module.exports = SheetContainer