extends Node class_name ProxyDelegate @export var delegate_scene: PackedScene @export var model: Node: set(val): model = val model.connect("child_entered_tree", source_item_added) model.connect("child_exiting_tree", source_item_removed) model.connect("child_order_changed", source_items_reordered) var item_map: Dictionary = {} func source_item_added(node: Node): var delegate: Node = delegate_scene.instantiate() item_map[node] = delegate add_child(delegate) delegate.item = node func source_item_removed(node: Node): var delegate: Node = item_map[node] if delegate != null: remove_child(delegate) item_map.erase(node) func source_items_reordered(): pass