using System;

namespace Unity.VisualScripting
{
    public class WidgetProvider : SingleDecoratorProvider<IGraphItem, IWidget, WidgetAttribute>
    {
        public ICanvas canvas { get; }

        public WidgetProvider(ICanvas canvas)
        {
            Ensure.That(nameof(canvas)).IsNotNull(canvas);

            this.canvas = canvas;
        }

        protected override bool cache => true;

        public override bool IsValid(IGraphItem item)
        {
            return item.graph == canvas.graph;
        }

        protected override IWidget CreateDecorator(Type widgetType, IGraphItem item)
        {
            return (IWidget)widgetType.Instantiate(false, canvas, item);
        }
    }
}