extends PanelBase class_name ModuleBase signal module_ready @export var module_title: String = "Module" var _initialized: bool = false func _ready() -> void: # Don't intercept mouse events — DashboardGrid handles drag-and-drop _set_mouse_ignore(self) if not _initialized: _initialize() func initialize() -> void: pass func refresh(data: Dictionary) -> void: pass func get_module_title() -> String: return module_title func _initialize() -> void: _initialized = true initialize() module_ready.emit() func _set_mouse_ignore(node: Node) -> void: if node is Control: node.mouse_filter = Control.MOUSE_FILTER_IGNORE for child in node.get_children(): _set_mouse_ignore(child)