Skip to content

Commit 6fd8d16

Browse files
committed
Add an implementation of StyleSheet to the React library
1 parent 06380ee commit 6fd8d16

File tree

4 files changed

+40
-1
lines changed

4 files changed

+40
-1
lines changed

lib/react.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@
77
*/
88
library react;
99

10+
import "dart:js";
11+
12+
part 'src/stylesheet.dart';
13+
part 'src/utils.dart';
14+
1015
abstract class Component {
1116
Map props;
1217

lib/react_client.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,8 @@ ReactComponentFactory _registerComponent(String componentName, ComponentFactory
271271
dynamic _reactDom(String name) {
272272
return (Map props, [dynamic children]) {
273273
if (props.containsKey('style')) {
274-
props['style'] = new JsObject.jsify(props['style']);
274+
if (props['style'].runtimeType is Map)
275+
props['style'] = new JsObject.jsify(props['style']);
275276
}
276277
if (children is Iterable) {
277278
children = new JsArray.from(children);

lib/src/stylesheet.dart

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
part of react;
2+
3+
class StyleSheet {
4+
static JsObject create(Map stylesheet) {
5+
JsObject jsStyleSheet = new JsObject.jsify(stylesheet);
6+
JsObject registeredStyleSheet = _StyleSheet.callMethod('create', [jsStyleSheet]);
7+
return registeredStyleSheet;
8+
}
9+
}

lib/src/utils.dart

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
part of react;
2+
3+
JsObject _React = context['React'];
4+
JsObject _StyleSheet = _React['StyleSheet'];
5+
var _AppRegistry = _React['AppRegistry'];
6+
var _Object = context['Object'];
7+
8+
JsObject newJsObjectEmpty() {
9+
return new JsObject(_Object);
10+
}
11+
12+
final emptyJsMap = newJsObjectEmpty();
13+
14+
JsObject newJsMap(Map map) {
15+
JsObject JsMap = newJsObjectEmpty();
16+
for (var key in map.keys) {
17+
if(map[key] is Map) {
18+
JsMap[key] = newJsMap(map[key]);
19+
} else {
20+
JsMap[key] = map[key];
21+
}
22+
}
23+
return JsMap;
24+
}

0 commit comments

Comments
 (0)