
struct PartialSvgImage: HtmlProducer {

    let imagePath: String

    let altText: String?

    let x: Int

    let y: Int

    let width: Int

    let height: Int

    private var aspectRatio: Double {
        guard height > 1 else {
            return 1
        }
        return Double(width) / Double(height)
    }

    private var imageAltText: String {
        guard let altText else {
            return ""
        }
        return " alt='\(altText.htmlEscaped())'"
    }

    func populate(_ result: inout String) {
        result += "<span class='content-image svg-image'>"
        result += "<img src='\(imagePath)#svgView(viewBox(\(x), \(y), \(width), \(height)))' loading='lazy' style='aspect-ratio:\(aspectRatio)'\(imageAltText)/>"
        result += "</span>"
    }
}
