0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-04-06 20:11:29 -05:00

🐛 Fixed problem with old svgs

This commit is contained in:
alonso.torres 2021-01-29 11:50:49 +01:00
parent 17d28ed9bc
commit bb04181abf
3 changed files with 49 additions and 35 deletions

View file

@ -18,7 +18,7 @@
[beicon.core :as rx]
[cuerdas.core :as str]
[potok.core :as ptk]
[app.util.svg :as usvg]
[app.util.geom.path :as ugp]))
(defn- svg-dimensions [data]
@ -30,37 +30,6 @@
height (d/parse-integer height-str)]
[width height]))
(defn clean-attrs
"Transforms attributes to their react equivalent"
[attrs]
(letfn [(transform-key [key]
(-> (name key)
(str/replace ":" "-")
(str/camel)
(keyword)))
(format-styles [style-str]
(->> (str/split style-str ";")
(map str/trim)
(map #(str/split % ":"))
(group-by first)
(map (fn [[key val]]
(vector
(transform-key key)
(second (first val)))))
(into {})))
(map-fn [[key val]]
(cond
(= key :class) [:className val]
(= key :style) [key (format-styles val)]
:else (vector (transform-key key) val)))]
(->> attrs
(map map-fn)
(into {}))))
(defn tag-name [{:keys [tag]}]
(cond (string? tag) tag
(keyword? tag) (name tag)
@ -103,7 +72,7 @@
:height height
:x x
:y y
:content (if (map? data) (update data :attrs clean-attrs) data)}
:content (if (map? data) (update data :attrs usvg/clean-attrs) data)}
(gsh/setup-selrect)))
(defn parse-path [name frame-id {:keys [attrs] :as data}]

View file

@ -9,14 +9,15 @@
(ns app.main.ui.shapes.svg-raw
(:require
[app.common.data :as cd]
[app.common.geom.matrix :as gmt]
[app.common.geom.point :as gpt]
[app.common.geom.shapes :as gsh]
[app.common.uuid :as uuid]
[app.main.ui.shapes.attrs :as usa]
[app.util.data :as ud]
[app.common.data :as cd]
[app.common.uuid :as uuid]
[app.util.object :as obj]
[app.util.svg :as usvg]
[cuerdas.core :as str]
[rumext.alpha :as mf]))
@ -49,6 +50,8 @@
(defn set-styles [attrs shape]
(let [custom-attrs (usa/extract-style-attrs shape)
attrs (cond-> attrs
(string? (:style attrs)) usvg/clean-attrs)
style (obj/merge! (clj->js (:style attrs {}))
(obj/get custom-attrs "style"))]
(-> (clj->js attrs)

View file

@ -0,0 +1,42 @@
;; 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/.
;;
;; This Source Code Form is "Incompatible With Secondary Licenses", as
;; defined by the Mozilla Public License, v. 2.0.
;;
;; Copyright (c) 2020-2021 UXBOX Labs SL
(ns app.util.svg
(:require
[cuerdas.core :as str]))
(defn clean-attrs
"Transforms attributes to their react equivalent"
[attrs]
(letfn [(transform-key [key]
(-> (name key)
(str/replace ":" "-")
(str/camel)
(keyword)))
(format-styles [style-str]
(->> (str/split style-str ";")
(map str/trim)
(map #(str/split % ":"))
(group-by first)
(map (fn [[key val]]
(vector
(transform-key key)
(second (first val)))))
(into {})))
(map-fn [[key val]]
(cond
(= key :class) [:className val]
(and (= key :style) (string? val)) [key (format-styles val)]
:else (vector (transform-key key) val)))]
(->> attrs
(map map-fn)
(into {}))))