feat: ControlRenderer checks widget registry for custom widgets

Added registry lookup at top of renderWidget() before hardcoded switch.
Custom widgets registered via engine.registerWidget(type:factory) are
now rendered by the factory closure, enabling app-level extensions.
This commit is contained in:
Hermes Agent 2026-06-21 17:48:06 +08:00
parent 36967370fd
commit 5ba2ae163b

View File

@ -26,6 +26,16 @@ public struct ControlRenderer: View {
func renderWidget(_ schema: ControlSchema) -> some View {
let type = schema.widgettype
// widget
if let factory = engine.getWidgetFactory(type: type) {
factory(schema, engine)
} else {
renderKnownWidget(schema, type: type)
}
}
@ViewBuilder
func renderKnownWidget(_ schema: ControlSchema, type: String) -> some View {
switch type {
//
case "Text":