mirror of
https://github.com/penpot/penpot.git
synced 2025-05-30 01:56:10 +02:00
Merge pull request #3248 from penpot/azazeln28-refactor-unnecessary-encode-decode
♻️ Refactor svg to data-uri code
This commit is contained in:
commit
3106058637
2 changed files with 13 additions and 15 deletions
|
@ -7,7 +7,6 @@
|
||||||
(ns app.main.ui.workspace.viewport.pixel-overlay
|
(ns app.main.ui.workspace.viewport.pixel-overlay
|
||||||
(:require
|
(:require
|
||||||
[app.common.data :as d]
|
[app.common.data :as d]
|
||||||
[app.common.data.macros :as dm]
|
|
||||||
[app.common.pages.helpers :as cph]
|
[app.common.pages.helpers :as cph]
|
||||||
[app.common.uuid :as uuid]
|
[app.common.uuid :as uuid]
|
||||||
[app.main.data.modal :as modal]
|
[app.main.data.modal :as modal]
|
||||||
|
@ -50,13 +49,7 @@
|
||||||
[svg]
|
[svg]
|
||||||
(let [svg-clone (.cloneNode svg true)]
|
(let [svg-clone (.cloneNode svg true)]
|
||||||
(->> (resolve-svg-images! svg-clone)
|
(->> (resolve-svg-images! svg-clone)
|
||||||
(rx/map (fn [_]
|
(rx/map (fn [_] (dom/svg-node->data-uri svg-clone))))))
|
||||||
(let [xml (-> (js/XMLSerializer.)
|
|
||||||
(.serializeToString ^js svg-clone)
|
|
||||||
(js/encodeURIComponent)
|
|
||||||
(js/unescape)
|
|
||||||
(js/btoa))]
|
|
||||||
(dm/str "data:image/svg+xml;base64," xml)))))))
|
|
||||||
|
|
||||||
(defn format-viewbox [vbox]
|
(defn format-viewbox [vbox]
|
||||||
(str/join " " [(:x vbox 0)
|
(str/join " " [(:x vbox 0)
|
||||||
|
|
|
@ -410,14 +410,19 @@
|
||||||
(-> (js/XMLSerializer.)
|
(-> (js/XMLSerializer.)
|
||||||
(.serializeToString node))))
|
(.serializeToString node))))
|
||||||
|
|
||||||
(defn svg->data-uri
|
(defn str->data-uri
|
||||||
[svg]
|
[str type]
|
||||||
(assert (string? svg))
|
(assert (string? str))
|
||||||
(let [b64 (-> svg
|
(let [b64 (-> str
|
||||||
js/encodeURIComponent
|
|
||||||
js/unescape
|
|
||||||
js/btoa)]
|
js/btoa)]
|
||||||
(dm/str "data:image/svg+xml;base64," b64)))
|
(dm/str "data:" type ";base64," b64)))
|
||||||
|
|
||||||
|
(defn svg-node->data-uri
|
||||||
|
[svg-node]
|
||||||
|
(let [xml (-> (js/XMLSerializer.)
|
||||||
|
(.serializeToString svg-node))
|
||||||
|
data-uri (str->data-uri xml "image/svg+xml")]
|
||||||
|
data-uri))
|
||||||
|
|
||||||
(defn set-property! [^js node property value]
|
(defn set-property! [^js node property value]
|
||||||
(when (some? node)
|
(when (some? node)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue