-
Notifications
You must be signed in to change notification settings - Fork 3
/
SlackRenderer.js
90 lines (70 loc) · 2.07 KB
/
SlackRenderer.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
const Reconciler = require("react-reconciler");
const { createElement, getHostContextNode } = require("../utils/createElement");
const noop = () => {};
const SlackRenderer = Reconciler({
appendInitialChild: function appendInitialChild(parentInstance, child) {
parentInstance.appendChild(child);
child.parent = parentInstance;
},
createInstance: function createInstance(type, props) {
return createElement(type, props);
},
createTextInstance: function createTextInstance(
text,
rootContainerInstance,
internalInstanceHandle
) {
return text;
},
finalizeInitialChildren: function finalizeInitialChildren(element, type, props) {
return false;
},
getPublicInstance: function getPublicInstance(instance) {
return instance;
},
prepareForCommit: noop,
prepareUpdate: function prepareUpdate(element, type, oldProps, newProps) {
return true;
},
resetAfterCommit: noop,
resetTextContent: noop,
getRootHostContext: function getRootHostContext(rootInstance) {
return getHostContextNode(rootInstance);
},
getChildHostContext: function getChildHostContext() {
return {};
},
shouldSetTextContent: function shouldSetTextContent(type, props) {
return false;
},
now: Date.now,
useSyncScheduling: true,
mutation: {
appendChild: function appendChild(parentInstance, child) {
parentInstance.appendChild(child);
child.parent = parentInstance;
},
appendChildToContainer: function appendChildToContainer(parentInstance, child) {
parentInstance.appendChild(child);
child.parent = parentInstance;
},
removeChild: noop,
removeChildFromContainer: noop,
insertBefore: noop,
commitUpdate: noop,
commitMount: noop,
commitTextUpdate: noop
}
});
module.exports = {
/**
* @param {ReactElement} element
* @return {Object}
*/
render: function render(element) {
const container = createElement("ROOT");
const node = SlackRenderer.createContainer(container);
SlackRenderer.updateContainer(element, node, null);
return container.render();
}
};