penpot/frontend/src/app/util/code_gen/markup_svg.cljs
2026-08-25 11:55:10 +02:00

45 lines
1.1 KiB
Clojure

;; 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 SUBSIDIARY SL
(ns app.util.code-gen.markup-svg
(:require
["react-dom/server" :as rds]
[app.main.render :as render]
[app.util.code-beautify :as cb]
[rumext.v2 :as mf]))
(defn- generate-single-svg
[objects shape]
(rds/renderToStaticMarkup
(mf/element
render/object-svg
#js {:objects objects
:object-id (-> shape :id)})))
(defn- generate-multi-svg
[objects shapes]
(rds/renderToStaticMarkup
(mf/element
render/objects-svg
#js {:objects objects
:object-ids (mapv :id shapes)})))
(defn generate-svg
[objects shape]
(generate-single-svg objects shape))
(defn generate-markup
[objects shapes]
(case (count shapes)
0 ""
1 (generate-single-svg objects (first shapes))
(generate-multi-svg objects shapes)))
(defn generate-formatted-markup
[objects shapes]
(-> (generate-markup objects shapes)
(cb/format-code "svg")))