1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.parseConfig = parseConfig;
|
7 |
|
8 | var _slug = require('slug');
|
9 |
|
10 | var _slug2 = _interopRequireDefault(_slug);
|
11 |
|
12 | var _Wallboard = require('./components/Wallboard');
|
13 |
|
14 | var _Widget = require('./components/Widget');
|
15 |
|
16 | var _react = require('react');
|
17 |
|
18 | var _react2 = _interopRequireDefault(_react);
|
19 |
|
20 | var _invariant = require('invariant');
|
21 |
|
22 | var _invariant2 = _interopRequireDefault(_invariant);
|
23 |
|
24 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
25 |
|
26 | function createWidgetFromReactElement(element, board) {
|
27 | var type = element.type;
|
28 | var widget = Object.assign({}, type.defaultProps, element.props);
|
29 | var idx = board.children.indexOf(element);
|
30 |
|
31 | widget.id = board.slug + '-' + idx;
|
32 |
|
33 | if (widget.children) {
|
34 | widget.render = widget.children;
|
35 | delete widget.children;
|
36 | }
|
37 |
|
38 | return widget;
|
39 | }
|
40 |
|
41 | function createWidgetsFromReactChildren(children, board) {
|
42 | var widgets = [];
|
43 |
|
44 | _react2.default.Children.forEach(children, function (element) {
|
45 | if (_react2.default.isValidElement(element)) {
|
46 | widgets.push(createWidgetFromReactElement(element, board));
|
47 | }
|
48 | });
|
49 |
|
50 | return widgets;
|
51 | }
|
52 |
|
53 | function createBoardFromReactElement(element) {
|
54 | var type = element.type;
|
55 | var board = Object.assign({}, type.defaultProps, element.props);
|
56 |
|
57 | board.slug = (0, _slug2.default)(board.name, { lower: true });
|
58 |
|
59 | if (board.children) {
|
60 | var widgets = createWidgetsFromReactChildren(board.children, board);
|
61 |
|
62 | if (widgets.length) {
|
63 | board.widgets = widgets;
|
64 | }
|
65 |
|
66 | delete board.children;
|
67 | }
|
68 |
|
69 | return board;
|
70 | }
|
71 |
|
72 | function createBoardsFromReactChildren(children) {
|
73 | var boards = [];
|
74 |
|
75 | _react2.default.Children.forEach(children, function (element) {
|
76 | if (_react2.default.isValidElement(element)) {
|
77 | boards.push(createBoardFromReactElement(element));
|
78 | }
|
79 | });
|
80 |
|
81 | return boards;
|
82 | }
|
83 |
|
84 | function parseConfig(config) {
|
85 | var result = {};
|
86 |
|
87 | if (process.env.NODE_ENV !== 'production') {
|
88 | if (!_react2.default.isValidElement(config)) {
|
89 | (0, _invariant2.default)(false, 'Cyboard config need to be a react element of <Cyboard /> component.');
|
90 | }
|
91 | }
|
92 |
|
93 | var boards = createBoardsFromReactChildren(config.props.children);
|
94 |
|
95 | boards.forEach(function (board) {
|
96 | result[board.slug] = board;
|
97 | });
|
98 |
|
99 | return result;
|
100 | } |
\ | No newline at end of file |