;; This Source Code Form is subject to the terms of the Mozilla Public
;; License, v. 2.0. If a copy of the MPL was not distributed with this
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
;;
;; Copyright (c) KALEIDOS INC

(ns app.main.ui.viewer.inspect.attributes.image
  (:require-macros [app.main.style :as stl])
  (:require
   [app.common.files.helpers :as cfh]
   [app.common.media :as cm]
   [app.config :as cf]
   [app.main.ui.components.copy-button :refer [copy-button]]
   [app.util.code-gen.style-css :as css]
   [app.util.i18n :refer [tr]]
   [cuerdas.core :as str]
   [rumext.v2 :as mf]))

(defn has-image? [shape]
  (= (:type shape) :image))

(mf/defc image-panel
  [{:keys [objects shapes]}]
  (for [shape (filter cfh/image-shape? shapes)]
    [:div {:class (stl/css :attributes-block)
           :key   (str "image-" (:id shape))}
     [:div {:class (stl/css :image-wrapper)}
      [:img {:src (cf/resolve-file-media (-> shape :metadata))}]]

     [:div {:class (stl/css :image-row)}
      [:div {:class (stl/css :global/attr-label)}
       (tr "inspect.attributes.image.width")]
      [:div {:class (stl/css :global/attr-value)}
       [:& copy-button {:data (css/get-css-property objects (:metadata shape) :width)}
        [:div {:class (stl/css :button-children)} (css/get-css-value objects (:metadata shape) :width)]]]]

     [:div {:class (stl/css :image-row)}
      [:div {:class (stl/css :global/attr-label)}
       (tr "inspect.attributes.image.height")]
      [:div {:class (stl/css :global/attr-value)}
       [:& copy-button {:data (css/get-css-property objects (:metadata shape) :height)}
        [:div {:class (stl/css :button-children)} (css/get-css-value objects (:metadata shape) :height)]]]]

     (let [mtype     (-> shape :metadata :mtype)
           name      (:name shape)
           extension (cm/mtype->extension mtype)]
       [:a   {:class (stl/css :download-button)
              :target "_blank"
              :download (cond-> name extension (str/concat extension))
              :href (cf/resolve-file-media (-> shape :metadata))}
        (tr "inspect.attributes.image.download")])]))
