blob: c7de02a5cd0731358c12ac00958e39f25e6fb15b [file] [log] [blame]
var $ = window.$ = require('jquery');
var jQuery = window.jQuery = $;
require('bootstrap');
import React from 'react';
import { render } from 'react-dom';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import * as Actions from './actions';
import SplitPane from 'react-split-pane';
import { Label, Tab, Tabs } from 'react-bootstrap';
import LeftPane from './components/LeftPane';
import TabbedSqlEditors from './components/TabbedSqlEditors';
import Alerts from './components/Alerts';
import { compose, createStore } from 'redux';
import { Provider } from 'react-redux';
import { initialState, sqlLabReducer } from './reducers';
import persistState from 'redux-localstorage';
require('./main.css');
let store = createStore(sqlLabReducer, initialState, compose(persistState(), window.devToolsExtension && window.devToolsExtension()));
// jquery hack to highlight the navbar menu
$('a[href="/caravel/sqllab"]').parent().addClass('active');
class App extends React.Component {
render() {
return (
<div className="App SqlLab">
<div className="container-fluid">
<Alerts alerts={this.props.alerts} />
<SplitPane split="vertical" minSize={200} defaultSize={300}>
<div className="pane-cell pane-west m-t-5">
<LeftPane />
</div>
<div className="pane-cell">
<TabbedSqlEditors />
</div>
</SplitPane>
</div>
</div>
);
}
}
function mapStateToProps(state) {
return {
alerts: state.alerts,
};
}
function mapDispatchToProps(dispatch) {
return {
actions: bindActionCreators(Actions, dispatch),
};
}
App = connect(mapStateToProps, mapDispatchToProps)(App);
render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('app')
);