Skip to content

Commit e6d8e20

Browse files
committed
refactor SidePanel, update Quit component
1 parent 2f329ba commit e6d8e20

File tree

19 files changed

+104
-144
lines changed

19 files changed

+104
-144
lines changed

lib/actions.js

+1
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,4 @@ exports.editorSave = core_coderoad_1.editorSave;
3030
exports.editorSet = core_coderoad_1.editorSet;
3131
exports.routeSet = core_coderoad_1.routeSet;
3232
exports.windowToggle = core_coderoad_1.windowToggle;
33+
exports.quit = core_coderoad_1.quit;

lib/components/Alert/index.js

-47
This file was deleted.

lib/components/AppMenu/Quit/index.js

+34-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,41 @@
11
"use strict";
2+
var __extends = (this && this.__extends) || function (d, b) {
3+
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
4+
function __() { this.constructor = d; }
5+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
6+
};
7+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
8+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
9+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
10+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
11+
return c > 3 && r && Object.defineProperty(target, key, r), r;
12+
};
13+
var __metadata = (this && this.__metadata) || function (k, v) {
14+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
15+
};
216
var React = require('react');
3-
var subscriptions_1 = require('../../../subscriptions');
17+
var react_redux_1 = require('react-redux');
418
var MenuItem_1 = require('material-ui/MenuItem');
19+
var actions_1 = require('../../../actions');
520
var styles = {
6-
textAlign: 'center',
7-
padding: '0px 2px',
21+
menuItem: {
22+
textAlign: 'center',
23+
padding: '0px 2px',
24+
},
825
};
9-
var Quit = function () { return (React.createElement(MenuItem_1.default, {style: styles, key: 'quit', onClick: subscriptions_1.onDeactivate}, "quit")); };
26+
var Quit = (function (_super) {
27+
__extends(Quit, _super);
28+
function Quit() {
29+
_super.apply(this, arguments);
30+
}
31+
Quit.prototype.render = function () {
32+
return (React.createElement(MenuItem_1.default, {style: styles.menuItem, key: 'quit', onClick: this.props.quit}, "quit"));
33+
};
34+
Quit = __decorate([
35+
react_redux_1.connect(null, { quit: actions_1.quit }),
36+
__metadata('design:paramtypes', [])
37+
], Quit);
38+
return Quit;
39+
}(React.Component));
1040
Object.defineProperty(exports, "__esModule", { value: true });
1141
exports.default = Quit;

lib/components/SidePanel/index.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
"use strict";
2+
var SideRoot_1 = require('./SideRoot');
3+
exports.SideRoot = SideRoot_1.default;
4+
var sideElement_1 = require('./sideElement');
5+
exports.sideElement = sideElement_1.default;

lib/components/SidePanel/element.js renamed to lib/components/SidePanel/sideElement.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"use strict";
22
var ReactDOM = require('react-dom');
3-
var sidePanelElement = {
3+
var sideElement = {
44
root: null,
55
init: function () {
66
this.root = document.createElement('div');
@@ -12,4 +12,4 @@ var sidePanelElement = {
1212
}
1313
};
1414
Object.defineProperty(exports, "__esModule", { value: true });
15-
exports.default = sidePanelElement;
15+
exports.default = sideElement;

lib/components/common/Markdown.js

-27
This file was deleted.

lib/components/remove-later.js

-3
This file was deleted.

lib/components/render.js

-9
This file was deleted.

lib/index.js

+8-7
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"use strict";
2-
var render_1 = require('./components/render');
3-
var element_1 = require('./components/SidePanel/element');
2+
var ReactDOM = require('react-dom');
3+
var SidePanel_1 = require('./components/SidePanel');
44
var core_coderoad_1 = require('core-coderoad');
55
var subscriptions_1 = require('./subscriptions');
66
var store_1 = require('./store');
@@ -11,15 +11,15 @@ var Main = (function () {
1111
injectTapEventPlugin();
1212
core_coderoad_1.loadPolyfills();
1313
store_1.default.dispatch(setup_1.setupVerify());
14-
this.root = element_1.default.init();
14+
this.side = SidePanel_1.sideElement.init();
1515
}
1616
Main.prototype.activate = function () {
1717
atom.workspace.addRightPanel({
18-
item: this.root,
18+
item: this.side,
1919
priority: 0,
2020
});
21-
subscriptions_1.onActivate();
22-
render_1.default(this.root);
21+
subscriptions_1.onActivate(store_1.default);
22+
ReactDOM.render(SidePanel_1.SideRoot(store_1.default), this.side);
2323
};
2424
Main.prototype.consumeStatusBar = function (statusBar) {
2525
this.statusBarTile = subscriptions_1.addToStatusBar(statusBar);
@@ -29,7 +29,8 @@ var Main = (function () {
2929
this.statusBarTile.destroy();
3030
this.statusBarTile = null;
3131
}
32-
subscriptions_1.onDeactivate();
32+
subscriptions_1.onDeactivate(store_1.default);
33+
SidePanel_1.sideElement.unmount();
3334
};
3435
return Main;
3536
}());

lib/subscriptions.js

+7-9
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,21 @@
11
"use strict";
2-
var CompositeDisposable = require('atom').CompositeDisposable;
2+
var atom_1 = require('atom');
33
var store_1 = require('./store');
44
var actions_1 = require('./actions');
5-
var element_1 = require('./components/SidePanel/element');
65
var subscriptions = null;
7-
function onActivate() {
8-
subscriptions = new CompositeDisposable;
6+
function onActivate(store) {
7+
subscriptions = new atom_1.CompositeDisposable;
98
subscriptions.add(atom.commands.add('atom-workspace', {
10-
'cr-viewer:toggle': function () { return store_1.default.dispatch({ type: 'WINDOW_TOGGLE' }); }
9+
'cr-viewer:toggle': function () { return store.dispatch(actions_1.windowToggle()); }
1110
}));
1211
atom.workspace.observeTextEditors(function (editor) {
13-
subscriptions.add(editor.onDidSave(function () { return store_1.default.dispatch(actions_1.testRun()); }));
12+
subscriptions.add(editor.onDidSave(function () { return store.dispatch(actions_1.testRun()); }));
1413
});
1514
return subscriptions;
1615
}
1716
exports.onActivate = onActivate;
18-
function onDeactivate() {
19-
element_1.default.unmount();
20-
store_1.default.subscribe(function () { return null; });
17+
function onDeactivate(store) {
18+
store.subscribe(function () { return null; });
2119
subscriptions.dispose();
2220
}
2321
exports.onDeactivate = onDeactivate;

src/actions.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@ export {
1111
editorDevToolsToggle, editorOpen, editorInsert,
1212
editorSave, editorSet,
1313
routeSet,
14-
windowToggle
14+
windowToggle, quit
1515
} from 'core-coderoad';

src/components/AppMenu/Quit/index.tsx

+21-14
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,28 @@
11
import * as React from 'react';
22
import {connect} from 'react-redux';
3-
import {quit} from 'core-coderoad';
4-
import {onDeactivate} from '../../../subscriptions';
53
import MenuItem from 'material-ui/MenuItem';
4+
import {quit} from '../../../actions';
65

76
const styles = {
8-
textAlign: 'center',
9-
padding: '0px 2px',
7+
menuItem: {
8+
textAlign: 'center',
9+
padding: '0px 2px',
10+
},
1011
};
1112

12-
const Quit = () => (
13-
<MenuItem
14-
style={styles}
15-
key='quit'
16-
onClick={onDeactivate}
17-
>
18-
quit
19-
</MenuItem>
20-
);
21-
export default Quit;
13+
@connect(null, {quit})
14+
export default class Quit extends React.Component<{
15+
quit?: () => Redux.ActionCreator
16+
}, {}> {
17+
render() {
18+
return (
19+
<MenuItem
20+
style={styles.menuItem}
21+
key='quit'
22+
onClick={this.props.quit}
23+
>
24+
quit
25+
</MenuItem>
26+
);
27+
}
28+
}

src/components/SidePanel/index.ts

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export {default as SideRoot} from './SideRoot';
2+
export {default as sideElement} from './sideElement';

src/components/SidePanel/element.ts renamed to src/components/SidePanel/sideElement.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as ReactDOM from 'react-dom';
22

3-
const sidePanelElement = {
3+
const sideElement = {
44
root: null,
55
init() {
66
this.root = document.createElement('div');
@@ -11,4 +11,4 @@ const sidePanelElement = {
1111
ReactDOM.unmountComponentAtNode(this.root);
1212
}
1313
};
14-
export default sidePanelElement;
14+
export default sideElement;

src/index.ts

+13-8
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as React from 'react';
2-
import sidePanelElement from './components/SidePanel/element';
3-
import sidePanelRoot from './components/SidePanel/root';
2+
import * as ReactDOM from 'react-dom';
3+
import {sideElement, SideRoot} from './components/SidePanel';
44
import {loadPolyfills, render} from 'core-coderoad';
55
import {onActivate, onDeactivate, addToStatusBar} from './subscriptions';
66
// activate Redux
@@ -9,24 +9,27 @@ import {setupVerify} from './modules/setup';
99
import * as injectTapEventPlugin from 'react-tap-event-plugin';
1010

1111
class Main {
12-
root: HTMLElement;
12+
side: HTMLElement;
1313
statusBarTile: StatusBar.IStatusBarView;
1414
constructor() {
1515
injectTapEventPlugin(); // remove later
1616
loadPolyfills();
1717
// run startup checks
1818
store.dispatch(setupVerify());
19-
this.root = sidePanelElement.init();
19+
this.side = sideElement.init();
2020
}
2121
activate(): void {
2222
// create atom panel
2323
atom.workspace.addRightPanel({
24-
item: this.root,
24+
item: this.side,
2525
priority: 0,
2626
});
27-
onActivate();
27+
28+
// activate subscriptions
29+
onActivate(store);
30+
2831
// render React component
29-
render(this.root, sidePanelRoot(store));
32+
ReactDOM.render(SideRoot(store), this.side);
3033
}
3134
consumeStatusBar(statusBar) {
3235
this.statusBarTile = addToStatusBar(statusBar);
@@ -38,7 +41,9 @@ class Main {
3841
this.statusBarTile = null;
3942
}
4043
// remove subscriptions & unmount react app
41-
onDeactivate();
44+
onDeactivate(store);
45+
// unmount React
46+
sideElement.unmount();
4247
}
4348
};
4449
export = new Main();

src/subscriptions.ts

+5-8
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
1-
const CompositeDisposable = require('atom').CompositeDisposable;
1+
import {CompositeDisposable} from 'atom';
22
import store from './store';
3-
import {testRun, alertReplay} from './actions';
4-
import sidePanelElement from './components/SidePanel/element';
3+
import {testRun, alertReplay, windowToggle} from './actions';
54

65
let subscriptions = null;
76

8-
export function onActivate(): AtomCore.Disposable {
7+
export function onActivate(store: Redux.Store): AtomCore.Disposable {
98
// Atom Listeners
109
subscriptions = new CompositeDisposable;
1110

1211
subscriptions.add(
1312
atom.commands.add('atom-workspace', {
14-
'cr-viewer:toggle': () => store.dispatch({ type: 'WINDOW_TOGGLE'})
13+
'cr-viewer:toggle': () => store.dispatch(windowToggle())
1514
})
1615
);
1716

@@ -23,9 +22,7 @@ export function onActivate(): AtomCore.Disposable {
2322
return subscriptions;
2423
}
2524

26-
export function onDeactivate(): void {
27-
// unmount React
28-
sidePanelElement.unmount();
25+
export function onDeactivate(store: Redux.Store): void {
2926
// unsubscribe from Redux store
3027
store.subscribe(() => null);
3128
// cleanup subscriptions

0 commit comments

Comments
 (0)