UNPKG

2.9 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.render = undefined;
7
8var _ReactInstanceHandles = require('react/lib/ReactInstanceHandles');
9
10var _ReactInstanceHandles2 = _interopRequireDefault(_ReactInstanceHandles);
11
12var _ReactElement = require('react/lib/ReactElement');
13
14var _ReactElement2 = _interopRequireDefault(_ReactElement);
15
16var _ReactUpdates = require('react/lib/ReactUpdates');
17
18var _ReactUpdates2 = _interopRequireDefault(_ReactUpdates);
19
20var _ReactBlessedIDOperations = require('./ReactBlessedIDOperations');
21
22var _ReactBlessedIDOperations2 = _interopRequireDefault(_ReactBlessedIDOperations);
23
24var _invariant = require('invariant');
25
26var _invariant2 = _interopRequireDefault(_invariant);
27
28var _instantiateReactComponent = require('react/lib/instantiateReactComponent');
29
30var _instantiateReactComponent2 = _interopRequireDefault(_instantiateReactComponent);
31
32var _ReactBlessedInjection = require('./ReactBlessedInjection');
33
34var _ReactBlessedInjection2 = _interopRequireDefault(_ReactBlessedInjection);
35
36var _blessed = require('blessed');
37
38function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
39
40/**
41 * Injecting dependencies.
42 */
43/**
44 * React Blessed
45 * ==============
46 *
47 * Exposing the renderer's API.
48 */
49(0, _ReactBlessedInjection2.default)();
50
51/**
52 * Renders the given react element with blessed.
53 *
54 * @param {ReactElement} element - Node to update.
55 * @param {BlessedScreen} screen - The screen used to render the app.
56 * @return {ReactComponent} - The rendered component instance.
57 */
58function render(element, screen) {
59
60 // Is the given element valid?
61 (0, _invariant2.default)(_ReactElement2.default.isValidElement(element), 'render(): You must pass a valid ReactElement.');
62
63 // Is the given screen valid?
64 (0, _invariant2.default)(screen instanceof _blessed.Screen, 'render(): You must pass a valid BlessedScreen.');
65
66 // Creating a root id & creating the screen
67 var id = _ReactInstanceHandles2.default.createReactRootID();
68
69 // Mounting the app
70 var component = (0, _instantiateReactComponent2.default)(element);
71
72 // Injecting the screen
73 _ReactBlessedIDOperations2.default.setScreen(screen);
74
75 // The initial render is synchronous but any updates that happen during
76 // rendering, in componentWillMount or componentDidMount, will be batched
77 // according to the current batching strategy.
78 _ReactUpdates2.default.batchedUpdates(function () {
79 // Batched mount component
80 var transaction = _ReactUpdates2.default.ReactReconcileTransaction.getPooled();
81 transaction.perform(function () {
82 component.mountComponent(id, transaction, {});
83 });
84 _ReactUpdates2.default.ReactReconcileTransaction.release(transaction);
85 });
86
87 // Returning the screen so the user can attach listeners etc.
88 return component._instance;
89}
90
91exports.render = render;
\No newline at end of file