Skip to content

Commit d6da1a9

Browse files
committed
Add functor mapping to lazy node creation
1 parent 2d2323e commit d6da1a9

File tree

3 files changed

+22
-10
lines changed

3 files changed

+22
-10
lines changed

package-lock.json

Lines changed: 2 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Flame/Renderer/Internal/Dom.js

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,8 @@ function shallowCopy(origin) {
127127
nodeData: origin.nodeData,
128128
render: origin.render,
129129
arg: origin.arg,
130-
rendered: undefined
130+
rendered: undefined,
131+
messageMapper: origin.messageMapper
131132
};
132133
case managedNode:
133134
return {
@@ -162,6 +163,9 @@ F.prototype.createAllNodes = function (parent, html, referenceNode) {
162163
if (html.children !== undefined)
163164
this.createChildrenNodes(node, html.children);
164165
else if (html.rendered !== undefined) {
166+
if (html.messageMapper !== undefined)
167+
html.rendered.messageMapper = html.messageMapper;
168+
165169
if (html.rendered.text !== undefined) {
166170
node.textContent = html.rendered.text;
167171
}
@@ -196,8 +200,18 @@ F.prototype.createChildrenNodes = function (parent, children) {
196200
else {
197201
if (c.children !== undefined)
198202
this.createChildrenNodes(node, c.children);
199-
if (c.rendered !== undefined && c.rendered.children !== undefined)
200-
this.createChildrenNodes(node, c.rendered.children);
203+
if (c.rendered !== undefined) {
204+
if (c.messageMapper !== undefined) {
205+
c.rendered.messageMapper = c.messageMapper;
206+
207+
if (c.rendered.children !== undefined)
208+
for (let i = 0; i < c.rendered.children.length; ++i)
209+
c.rendered.children[i].messageMapper = c.rendered.messageMapper;
210+
}
211+
212+
if (c.rendered.children !== undefined)
213+
this.createChildrenNodes(node, c.rendered.children);
214+
}
201215
}
202216

203217
parent.appendChild(node);
@@ -367,7 +381,6 @@ F.prototype.runHandlers = function (handlers, messageMapper, event) {
367381
maybeMessage = typeof h === "function" ? h(event)() : this.eventWrapper(h);
368382

369383
//handler can be just a message or a function that takes an event
370-
// a
371384
this.updater(messageMapper === undefined ? maybeMessage : messageMapper(maybeMessage))();
372385
}
373386
event.stopPropagation();
@@ -970,6 +983,7 @@ F.prototype.removeEvent = function (node, name) {
970983
this.applicationEvents.delete(name);
971984
}
972985
}
973-
986+
//functor mapping
987+
node[eventKey + eventPostfix] = undefined;
974988
node[eventKey] = undefined;
975989
};

src/Flame/Types.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ exports.messageMapper = function (mapper) {
55
};
66

77
function addMessageMapper(html, mapper) {
8-
if (html.nodeData !== undefined && html.nodeData.events !== undefined)
8+
if (html.nodeType !== 1 && html.nodeType !== 4)
99
mapHtml(html, mapper);
1010

1111
if (html.children !== undefined && html.children.length > 0)

0 commit comments

Comments
 (0)