From 5ba2ae163b0995bb8c29b417d19869904775aa5e Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Sun, 21 Jun 2026 17:48:06 +0800 Subject: [PATCH] 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. --- Sources/SwiftBricks/Renderer/ControlRenderer.swift | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Sources/SwiftBricks/Renderer/ControlRenderer.swift b/Sources/SwiftBricks/Renderer/ControlRenderer.swift index 116ff6d..058ebfd 100644 --- a/Sources/SwiftBricks/Renderer/ControlRenderer.swift +++ b/Sources/SwiftBricks/Renderer/ControlRenderer.swift @@ -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":