diff --git a/frontend/src/app/main/rasterizer.cljs b/frontend/src/app/main/rasterizer.cljs index b89ab399c..eea5fe39b 100644 --- a/frontend/src/app/main/rasterizer.cljs +++ b/frontend/src/app/main/rasterizer.cljs @@ -61,7 +61,7 @@ (.push ^js queue message)) (defn render - "Renders a thumbnail." + "Renders an SVG" [{:keys [data styles width] :as params}] (let [id (dm/str (uuid/next)) payload #js {:data data :styles styles :width width} @@ -81,6 +81,14 @@ "failure" (rx/throw (js/Error. (unchecked-get msg "payload")))))) (rx/take 1)))) +(defn render-node + "Renders an SVG using a node" + [{:keys [node styles width] :as params}] + (let [width (or width (dom/get-attribute node "width")) + styles (or styles "") + data (dom/node->xml node)] + (render {:data data :styles styles :width width}))) + (defn init! "Initializes the thumbnail renderer." [] diff --git a/frontend/src/app/main/ui/workspace/viewport/pixel_overlay.cljs b/frontend/src/app/main/ui/workspace/viewport/pixel_overlay.cljs index be6c30f88..6567db364 100644 --- a/frontend/src/app/main/ui/workspace/viewport/pixel_overlay.cljs +++ b/frontend/src/app/main/ui/workspace/viewport/pixel_overlay.cljs @@ -12,6 +12,7 @@ [app.main.data.modal :as modal] [app.main.data.workspace.colors :as dwc] [app.main.data.workspace.undo :as dwu] + [app.main.rasterizer :as thr] [app.main.refs :as refs] [app.main.store :as st] [app.main.ui.css-cursors :as cur] @@ -166,9 +167,12 @@ (fn [] (let [img-node (mf/ref-val img-ref) svg-node (dom/get-element "render")] - (->> (svg-as-data-url svg-node) + (->> (rx/of {:node svg-node}) + (rx/mapcat thr/render-node) + (rx/map wapi/create-uri) + (rx/tap #(js/console.log %)) (rx/subs (fn [uri] - (obj/set! img-node "src" uri))))))) + (obj/set! img-node "src" uri))))))) handle-svg-change (mf/use-callback