Skip to content

Commit 2e9c975

Browse files
committed
Merge pull request #314 from parallaxinc/router
Router
2 parents b730886 + 3c3db3b commit 2e9c975

File tree

14 files changed

+280
-207
lines changed

14 files changed

+280
-207
lines changed

client.js

Lines changed: 45 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,21 @@
22

33
const _ = require('lodash');
44
const Irken = require('irken');
5+
const React = require('react');
6+
const { Router, Route, History, Link } = require('react-router');
7+
const memoryHistory = require('./src/lib/history');
8+
9+
const Layout = require('./src/views/layout');
10+
const HelpOverlay = require('./src/views/help-overlay');
11+
const SaveOverlay = require('./src/views/save-overlay');
12+
const NewVersionOverlay = require('./src/views/new-version-overlay');
13+
const ProjectOverlay = require('./src/views/project-overlay');
14+
const DownloadOverlay = require('./src/views/download-overlay');
15+
const OverwriteOverlay = require('./src/views/overwrite-overlay');
16+
const DeleteFileOverlay = require('./src/views/delete-file-overlay');
17+
const DeleteProjectOverlay = require('./src/views/delete-project-overlay');
18+
19+
const store = require('./src/store');
520

621
const app = new Irken();
722

@@ -25,9 +40,6 @@ const plugins = [
2540
{
2641
register: require('snacks')
2742
},
28-
{
29-
register: require('holovisor')
30-
},
3143
{
3244
register: require('skrim')
3345
},
@@ -47,24 +59,9 @@ const plugins = [
4759
{
4860
register: require('./src/plugins/keyboard-shortcuts')
4961
},
50-
{
51-
register: require('./src/plugins/appbar')
52-
},
5362
{
5463
register: require('./src/plugins/notifications')
5564
},
56-
{
57-
register: require('./src/plugins/editor')
58-
},
59-
{
60-
register: require('./src/plugins/terminal')
61-
},
62-
{
63-
register: require('./src/plugins/rxtx')
64-
},
65-
{
66-
register: require('./src/plugins/sidebar')
67-
},
6865
{
6966
register: require('./src/plugins/overlays')
7067
}
@@ -114,15 +111,44 @@ function onRender(err){
114111

115112
function onRegister(err){
116113
console.log('registered', err, app);
114+
const addMountpoint = app.addMountpoint.bind(app);
115+
const removeMountpoint = app.removeMountpoint.bind(app);
116+
const { workspace, handlers } = app;
117117

118118
if(err){
119119
return;
120120
}
121121

122-
app.render(onRender);
122+
const RouterLayout = React.createClass({
123+
render() {
124+
console.log('render layout', this.props);
125+
return (<Layout addMountpoint={addMountpoint} removeMountpoint={removeMountpoint} app={app}>
126+
{this.props.children && React.cloneElement(this.props.children, { handlers, workspace, store })}
127+
</Layout>
128+
);
129+
}
130+
});
131+
132+
const Component = (
133+
<Router history={memoryHistory}>
134+
<Route path="/" component={RouterLayout}>
135+
<Route path="overlay/help" component={HelpOverlay} />
136+
<Route path="overlay/save" component={SaveOverlay} />
137+
<Route path="overlay/newversion" component={NewVersionOverlay} />
138+
<Route path="overlay/project" component={ProjectOverlay} />
139+
<Route path="overlay/download" component={DownloadOverlay} />
140+
<Route path="overlay/overwrite" component={OverwriteOverlay} />
141+
<Route path="overlay/deletefile" component={DeleteFileOverlay} />
142+
<Route path="overlay/deleteproject" component={DeleteProjectOverlay} />
143+
</Route>
144+
</Router>
145+
);
146+
147+
React.render(Component, document.body.firstChild, onRender);
123148
}
124149

125150
app.register(plugins, onRegister);
126151

127152
// for debugging purposes
128153
window.app = app;
154+
window.memoryHistory = memoryHistory;

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,17 @@
1111
"bs2-serial": "^0.15.0",
1212
"codemirror": "^4.13.0",
1313
"frylord": "^0.7.4",
14-
"holovisor": "^0.2.0",
14+
"history": "^1.12.5",
1515
"iggins": "^0.4.0",
16+
"invariant": "^2.1.1",
1617
"irken": "^0.8.0",
1718
"lodash": "^3.9.1",
1819
"raw-loader": "^0.5.1",
1920
"react": "^0.13.1",
2021
"react-loader": "^1.2.0",
2122
"react-material": "git://github.com/iceddev/react-material#fake-release-13",
2223
"react-mfb-iceddev": "^0.1.0",
24+
"react-router": "^1.0.0-rc1",
2325
"react-style": "^0.4.0",
2426
"skrim": "0.0.3",
2527
"snacks": "^0.3.1",

src/components/overlay.js

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,16 @@ const styles = {
1515
},
1616
overlayLarge: {
1717
height: 400
18+
},
19+
backdrop:{
20+
display: 'flex',
21+
position: 'fixed',
22+
top: 0,
23+
bottom: 0,
24+
left: 0,
25+
right: 0,
26+
backgroundColor: 'rgba(0,0,0,0.5)',
27+
zIndex: 10
1828
}
1929
};
2030

@@ -32,9 +42,11 @@ class Overlay extends React.Component {
3242
}
3343

3444
return (
35-
<Card style={cardStyle}>
36-
{children}
37-
</Card>
45+
<div style={styles.backdrop}>
46+
<Card style={cardStyle}>
47+
{children}
48+
</Card>
49+
</div>
3850
);
3951
}
4052
}

src/lib/history.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
'use strict';
2+
3+
const memoryHistory = require('history/lib/createMemoryHistory')();
4+
5+
module.exports = memoryHistory;

src/plugins/appbar.js

Lines changed: 0 additions & 18 deletions
This file was deleted.

src/plugins/editor.js

Lines changed: 0 additions & 34 deletions
This file was deleted.

src/plugins/overlays.js

Lines changed: 12 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,7 @@
22

33
const React = require('react');
44

5-
const HelpOverlay = require('../views/help-overlay');
6-
const SaveOverlay = require('../views/save-overlay');
7-
const NewVersionOverlay = require('../views/new-version-overlay');
8-
const ProjectOverlay = require('../views/project-overlay');
9-
const DownloadOverlay = require('../views/download-overlay');
10-
const OverwriteOverlay = require('../views/overwrite-overlay');
11-
const DeleteFileOverlay = require('../views/delete-file-overlay');
12-
const DeleteProjectOverlay = require('../views/delete-project-overlay');
13-
5+
const history = require('../lib/history');
146
const store = require('../store');
157

168
const {
@@ -28,49 +20,41 @@ const {
2820

2921
function overlays(app, opts, done){
3022

31-
const { overlay, workspace, handlers } = app;
32-
33-
function renderOverlay(component){
34-
function renderer(el){
35-
React.render(component, el);
36-
}
37-
38-
overlay.render(renderer, { backdrop: true });
39-
}
23+
const { workspace, handlers } = app;
4024

4125
function onOverlayChange(){
4226
const { overlayState } = store.getState();
4327

4428
switch(overlayState){
4529
case HELP_OVERLAY:
46-
renderOverlay(<HelpOverlay workspace={workspace} handlers={handlers} />);
30+
history.pushState({}, '/overlay/help');
4731
break;
4832
case SAVE_OVERLAY:
49-
renderOverlay(<SaveOverlay workspace={workspace} handlers={handlers} />);
33+
history.pushState({}, '/overlay/save');
5034
break;
5135
case SAVE_ON_CHANGE_OVERLAY:
52-
renderOverlay(<SaveOverlay workspace={workspace} handlers={handlers} showDontSaveButton={true} />);
36+
history.pushState({}, '/overlay/save?showDontSaveButton=true');
5337
break;
5438
case OVERWRITE_OVERLAY:
55-
renderOverlay(<OverwriteOverlay store={store} handlers={handlers} />);
39+
history.pushState({}, '/overlay/overwrite');
5640
break;
5741
case NEW_VERSION_OVERLAY:
58-
renderOverlay(<NewVersionOverlay handlers={handlers} />);
42+
history.pushState({}, '/overlay/newversion');
5943
break;
6044
case DOWNLOAD_OVERLAY:
61-
renderOverlay(<DownloadOverlay store={store} handlers={handlers} />);
45+
history.pushState({}, '/overlay/download');
6246
break;
6347
case PROJECTS_OVERLAY:
64-
renderOverlay(<ProjectOverlay workspace={workspace} handlers={handlers} />);
48+
history.pushState({}, '/overlay/project');
6549
break;
6650
case DELETE_FILE_OVERLAY:
67-
renderOverlay(<DeleteFileOverlay workspace={workspace} handlers={handlers} />);
51+
history.pushState({}, '/overlay/deletefile');
6852
break;
6953
case DELETE_PROJECT_OVERLAY:
70-
renderOverlay(<DeleteProjectOverlay store={store} handlers={handlers} />);
54+
history.pushState({}, '/overlay/deleteproject');
7155
break;
7256
case NO_OVERLAY:
73-
overlay.hide();
57+
history.pushState({}, '/');
7458
break;
7559
}
7660
}

src/plugins/sidebar.js

Lines changed: 0 additions & 32 deletions
This file was deleted.

src/plugins/terminal.js

Lines changed: 0 additions & 32 deletions
This file was deleted.

src/views/editor.js

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
'use strict';
2+
3+
const React = require('react');
4+
5+
const cm = require('../code-mirror');
6+
7+
class Editor extends React.Component {
8+
9+
componentDidMount(){
10+
const container = React.findDOMNode(this);
11+
const { handleInput } = this.props.handlers;
12+
container.style.display = 'flex';
13+
container.style.flex = '1';
14+
container.style.flexDirection = 'column';
15+
container.setAttribute('id', 'editorContainer');
16+
17+
container.appendChild(cm.getWrapperElement());
18+
19+
cm.on('change', handleInput);
20+
}
21+
22+
componentWillUnmount(){
23+
const container = React.findDOMNode(this);
24+
container.removeAll();
25+
}
26+
27+
28+
shouldComponentUpdate(){
29+
return false;
30+
}
31+
32+
render(){
33+
34+
return (
35+
<div />
36+
);
37+
}
38+
39+
}
40+
41+
module.exports = Editor;

0 commit comments

Comments
 (0)