extends Container
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