diff --git a/modern/src/App.js b/modern/src/App.js
index 88b5ddd0..37ec5641 100644
--- a/modern/src/App.js
+++ b/modern/src/App.js
@@ -609,12 +609,9 @@ function DummyComponent({ makiObject }) {
}
function MakiChildren({ makiObject }) {
- if (makiObject.children == null) {
- return null;
- }
- return makiObject.children.map((childMakiObject, i) => (
-
- ));
+ return makiObject
+ .js_getChildren()
+ .map((childMakiObject, i) => );
}
// Given a skin XML node, pick which component to use, and render it.
diff --git a/modern/src/initialize.js b/modern/src/initialize.js
index 7424c397..d09c6a2c 100644
--- a/modern/src/initialize.js
+++ b/modern/src/initialize.js
@@ -175,6 +175,7 @@ async function parseChildren(node, children, zip, store) {
childParser = noop;
}
const parsedChild = await childParser(child, node, zip, store);
+ child.maki = parsedChild;
if (child.children != null && child.children.length > 0) {
await parseChildren(parsedChild, child.children, zip, store);
}
diff --git a/modern/src/runtime/Container.ts b/modern/src/runtime/Container.ts
index 6d6c1e35..6be157f6 100644
--- a/modern/src/runtime/Container.ts
+++ b/modern/src/runtime/Container.ts
@@ -92,7 +92,7 @@ class Container extends MakiObject {
getcurlayout() {
unimplementedWarning("getcurlayout");
// TODO: For now we just always show the first layout. I think that's the default.
- return this.children.find(childNode => {
+ return this.js_getChildren().find(childNode => {
return childNode.getclassname() === "Layout";
});
}
diff --git a/modern/src/runtime/MakiObject.ts b/modern/src/runtime/MakiObject.ts
index 072b0be6..8ce92a0b 100644
--- a/modern/src/runtime/MakiObject.ts
+++ b/modern/src/runtime/MakiObject.ts
@@ -1,8 +1,9 @@
import Emitter from "../Emitter";
import * as Utils from "../utils";
-import { ModernStore, ResolvedXmlNode } from "../types";
+import { ModernStore, XmlNode } from "../types";
class MakiObject {
+ _node: XmlNode;
name: string;
_uid: number;
_store: ModernStore;
@@ -13,11 +14,12 @@ class MakiObject {
js_annotations: Object;
constructor(
- node: ResolvedXmlNode,
+ node: XmlNode,
parent: MakiObject,
annotations: Object = {},
store: ModernStore
) {
+ this._node = node;
this._store = store;
if (node) {
this._uid = node.uid;
@@ -47,6 +49,10 @@ class MakiObject {
this.children = this.children.filter(item => item !== child);
}
+ js_getChildren(): MakiObject[] {
+ return this.children;
+ }
+
js_delete() {
this.parent.js_removeChild(this);
this.parent.js_trigger("js_update");