;; 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.components.shape-icon
  (:require
   [app.common.types.component :as ctk]
   [app.common.types.shape :as cts]
   [app.common.types.shape.layout :as ctl]
   [app.main.ui.icons :as i]
   [rumext.v2 :as mf]))


(mf/defc element-icon
  [{:keys [shape main-instance?] :as props}]
  (if (ctk/instance-head? shape)
    (if main-instance?
      i/component
      i/component-copy)
    (case (:type shape)
      :frame (cond
               (and (ctl/flex-layout? shape) (ctl/col? shape))
               i/layout-columns

               (and (ctl/flex-layout? shape) (ctl/row? shape))
               i/layout-rows

               (ctl/grid-layout? shape)
               i/grid-layout-mode

               :else
               i/artboard)
      :image i/image
      :line (if (cts/has-images? shape) i/image i/line)
      :circle (if (cts/has-images? shape) i/image i/circle)
      :path (if (cts/has-images? shape) i/image i/curve)
      :rect (if (cts/has-images? shape) i/image i/box)
      :text i/text
      :group (if (:masked-group shape)
               i/mask
               i/folder)
      :bool (case (:bool-type shape)
              :difference   i/bool-difference
              :exclude      i/bool-exclude
              :intersection i/bool-intersection
              #_:default    i/bool-union)
      :svg-raw i/file-svg
      nil)))
