Skip to content

Commit 00ac235

Browse files
committed
app structure refactor
1 parent b7108e7 commit 00ac235

File tree

18 files changed

+141
-55
lines changed

18 files changed

+141
-55
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,6 @@ This project adheres to [Semantic Versioning](http://semver.org/).
2121
## [0.5.3] - 2016-03-07
2222
- fix tutorial progress issues
2323
- use `::>` to set cursor position
24+
25+
## [0.5.4] - 2016-03
26+
- fix bug that prevented scroll in Atom 1.6+

lib/atom/subscriptions.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ function onActivateSubscriptions() {
2525
}
2626
exports.onActivateSubscriptions = onActivateSubscriptions;
2727
function onDeactivateSubscriptionsAndUnmount() {
28+
window.onresize = null;
2829
render_1.unmount(document.getElementById('crv'));
2930
subscriptions.dispose();
3031
}

lib/components/_components.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
"use strict";
2-
var app_1 = require('./app/app');
2+
var app_1 = require('./app');
33
exports.App = app_1.default;
4-
var router_1 = require('./app/router');
5-
exports.Router = router_1.default;
4+
var theme_1 = require('./theme/theme');
5+
exports.Theme = theme_1.default;
6+
var routes_1 = require('./routes/routes');
7+
exports.Routes = routes_1.default;
68
var page_1 = require('./page/page');
79
exports.Page = page_1.default;
810
var chapter_1 = require('./page/chapter');

lib/components/app.js

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
"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+
};
16+
var React = require('react');
17+
var react_redux_1 = require('react-redux');
18+
var _components_1 = require('./_components');
19+
var ThemeDecorator = require('material-ui/lib/styles/theme-decorator');
20+
var ThemeManager = require('material-ui/lib/styles/theme-manager');
21+
var height = atom.getSize().height;
22+
window.onresize = function () {
23+
height = atom.getSize().height;
24+
};
25+
var default_1 = (function (_super) {
26+
__extends(default_1, _super);
27+
function default_1() {
28+
_super.apply(this, arguments);
29+
}
30+
default_1.prototype.render = function () {
31+
var state = this.props.state;
32+
return (React.createElement("section", {className: 'cr', key: 'main', style: { height: height }}, React.createElement(_components_1.Menu, {route: state.route, position: state.position}), React.createElement(_components_1.Routes, {state: state, ref: 'route'}), React.createElement(_components_1.Alert, {alert: state.alert})));
33+
};
34+
default_1 = __decorate([
35+
ThemeDecorator(ThemeManager.getMuiTheme(_components_1.Theme)),
36+
react_redux_1.connect(function (state) {
37+
return { state: state };
38+
}),
39+
__metadata('design:paramtypes', [])
40+
], default_1);
41+
return default_1;
42+
}(React.Component));
43+
Object.defineProperty(exports, "__esModule", { value: true });
44+
exports.default = default_1;
45+
;

lib/components/render.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ var React = require('react');
33
var ReactDOM = require('react-dom');
44
var react_redux_1 = require('react-redux');
55
var _base_1 = require('../_base');
6-
var app_1 = require('./app/app');
6+
var app_1 = require('./app');
77
require('./remove-later');
88
var rootName = 'crv';
99
function render(target) {

lib/components/routes/routes.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
"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 React = require('react');
8+
var _components_1 = require('../_components');
9+
var default_1 = (function (_super) {
10+
__extends(default_1, _super);
11+
function default_1() {
12+
_super.apply(this, arguments);
13+
}
14+
default_1.prototype.chooseRoute = function (state) {
15+
switch (state.route) {
16+
case 'page':
17+
return React.createElement(_components_1.Page, {page: state.page, tasks: state.tasks, taskPosition: state.taskPosition, hintPosition: state.hintPosition, editorActions: state.editorActions, runTests: state.runTests, log: state.log});
18+
case 'progress':
19+
return React.createElement(_components_1.Progress, {progress: state.progress, position: state.position});
20+
case 'projects':
21+
return React.createElement(_components_1.Start, {tutorials: state.tutorials, warning: state.warning});
22+
case 'final':
23+
return React.createElement(_components_1.FinalPage, null);
24+
default:
25+
throw 'Error: Route not found.';
26+
}
27+
};
28+
default_1.prototype.render = function () {
29+
var state = this.props.state;
30+
return (React.createElement("div", null, this.chooseRoute(state)));
31+
};
32+
return default_1;
33+
}(React.Component));
34+
Object.defineProperty(exports, "__esModule", { value: true });
35+
exports.default = default_1;

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
},
5656
"scripts": {
5757
"test": "ava",
58-
"styles": "lessc src/components/_index.less styles/styles.css",
58+
"styles": "lessc src/components/_app.less styles/styles.css",
5959
"compile": "tsc",
6060
"build": "npm run styles && npm run compile"
6161
}

src/atom/subscriptions.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ export function onActivateSubscriptions() {
4141
export function onDeactivateSubscriptionsAndUnmount() {
4242
// unmount React
4343
// TODO: animate close first
44+
window.onresize = null;
4445
unmount(document.getElementById('crv'));
4546
// cleanup subscriptions
4647
subscriptions.dispose();

src/components/_index.less renamed to src/components/_app.less

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,30 @@
1-
@import './app/_app';
2-
@import './app/_route';
1+
@import './routes/_routes';
32
@import './menu/_menu';
43
@import './page/_chapter';
54
@import './page/_page';
65
@import './progress/_progress';
76
@import './alert/_alert';
87
@import './start/_start';
98

9+
atom-panel-container > atom-panel > #crv {
10+
animation: slide 0.3s forwards;
11+
animation-timing-function: ease-in-out;
12+
}
13+
14+
@keyframes slide {
15+
0% { width: 0px; }
16+
}
17+
@keyframes slide {
18+
100% { width: 400px; }
19+
}
20+
1021
#crv {
1122
position: relative;
1223
overflow-y: scroll;
24+
25+
code {
26+
background-color: rgb(22, 23, 25);
27+
}
1328
}
1429

1530
#crv a, #crv a:hover, #crv a:visited {

src/components/_components.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
/**
2-
* Component List
3-
*/
41
// Root App
5-
export {default as App} from './app/app';
2+
export {default as App} from './app';
3+
export {default as Theme} from './theme/theme';
64

75
// Router
8-
export {default as Router} from './app/router';
6+
export {default as Routes} from './routes/routes';
97

108
// Components
119
export {default as Page} from './page/page';

0 commit comments

Comments
 (0)