public function tag(SizeRange $range, Size $defaultSize, array $attributes = []): string
    {
        $attributes = new Map($attributes);
        $attributes['alt'] = $attributes['alt'] ?? '';
        $attributes['sizes'] = $attributes['sizes'] ?? '100vw';
        $attributes['src'] = $this->source($defaultSize);
        $attributes['srcset'] = $this->sourceSet($range);

        $attributeString = $attributes
            ->ksorted()
            ->map(function ($key, $value) {
                return "$key='$value'";
            })
            ->values()
            ->join(' ');

        return "<img $attributeString>";
    }