Kaynağa Gözat

added support for __content__

Nicolas Cannasse 5 ay önce
ebeveyn
işleme
2b4cdad6b5
2 değiştirilmiş dosya ile 17 ekleme ve 1 silme
  1. 6 0
      hide/comp/DomkitEditor.hx
  2. 11 1
      hrt/impl/DomkitViewer.hx

+ 6 - 0
hide/comp/DomkitEditor.hx

@@ -663,6 +663,12 @@ class DomkitChecker extends ScriptEditor.ScriptChecker {
 						domkitError("Not constant id is not allowed",a.pmin,a.pmax);
 						domkitError("Not constant id is not allowed",a.pmin,a.pmax);
 					}
 					}
 					continue;
 					continue;
+				case "__content__":
+					switch( a.value ) {
+					case RawValue("true"):
+						continue;
+					default:
+					}
 				default:
 				default:
 				}
 				}
 				var p = resolveProperty(c, pname);
 				var p = resolveProperty(c, pname);

+ 11 - 1
hrt/impl/DomkitViewer.hx

@@ -240,6 +240,7 @@ class DomkitViewer extends h2d.Object {
 	var style : DomkitStyle;
 	var style : DomkitStyle;
 	var current : h2d.Object;
 	var current : h2d.Object;
 	var currentObj : h2d.Object;
 	var currentObj : h2d.Object;
+	var currentRoot : h2d.Object;
 	var contexts : Array<Dynamic> = [];
 	var contexts : Array<Dynamic> = [];
 	var variables : Map<String,Dynamic> = [];
 	var variables : Map<String,Dynamic> = [];
 	var rebuilding = false;
 	var rebuilding = false;
@@ -577,10 +578,15 @@ class DomkitViewer extends h2d.Object {
 							if( inst != null )
 							if( inst != null )
 								inst.dom = obj.dom;
 								inst.dom = obj.dom;
 						});
 						});
+						var prevRoot = currentRoot;
+						currentRoot = obj;
 						for( c in m.children )
 						for( c in m.children )
 							handleErrors(res, () -> addRec(c, interp, obj));
 							handleErrors(res, () -> addRec(c, interp, obj));
 						interp.variables = prev;
 						interp.variables = prev;
-						inst.dom = null;
+						@:privateAccess obj.dom.contentRoot = currentRoot;
+						currentRoot = prevRoot;
+						if( inst != null )
+							inst.dom = null;
 						return obj;
 						return obj;
 					}
 					}
 
 
@@ -705,6 +711,10 @@ class DomkitViewer extends h2d.Object {
 						(attributes:Dynamic).id = objId;
 						(attributes:Dynamic).id = objId;
 					continue;
 					continue;
 				}
 				}
+				if( a.name == "__content__" ) {
+					currentRoot = obj;
+					continue;
+				}
 				switch( a.value ) {
 				switch( a.value ) {
 				case RawValue(v):
 				case RawValue(v):
 					Reflect.setField(attributes,a.name,v);
 					Reflect.setField(attributes,a.name,v);