module Panda
  module CMS
    module EditorJs
      module Blocks
        class Image < Base
          def render
            url = data["url"]
            caption = sanitize(data["caption"])
            with_border = data["withBorder"]
            with_background = data["withBackground"]
            stretched = data["stretched"]

            css_classes = ["prose"]
            css_classes << "border" if with_border
            css_classes << "bg-gray-100" if with_background
            css_classes << "w-full" if stretched

            html_safe(<<~HTML)
              <figure class="#{css_classes.join(" ")}">
                <img src="#{url}" alt="#{caption}" />
                #{caption_element(caption)}
              </figure>
            HTML
          end

          private

          def caption_element(caption)
            return "" if caption.blank?
            "<figcaption>#{caption}</figcaption>"
          end
        end
      end
    end
  end
end