Improve shape rendering function signature.

This commit is contained in:
Andrey Antukh 2016-01-22 19:37:20 +02:00
parent d73781f51c
commit 46bc9930f7

View file

@ -2,6 +2,7 @@
"A ui related implementation for uxbox.shapes ns." "A ui related implementation for uxbox.shapes ns."
(:require [sablono.core :refer-macros [html]] (:require [sablono.core :refer-macros [html]]
[cuerdas.core :as str] [cuerdas.core :as str]
[rum.core :as rum]
[uxbox.state :as st] [uxbox.state :as st]
[uxbox.shapes :as shapes] [uxbox.shapes :as shapes]
[uxbox.util.svg :as svg] [uxbox.util.svg :as svg]
@ -28,21 +29,19 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defmethod shapes/-render :builtin/icon (defmethod shapes/-render :builtin/icon
[{:keys [data id] :as shape} attrs] [{:keys [data id] :as shape} _]
(let [key (str "use-" id) (let [key (str id)
transform (-> (merge shape attrs) rfm (svg/calculate-transform shape)
(svg/calculate-transform)) attrs (merge {:id key :key key :transform rfm}
attrs (merge {:id key :key key :transform transform}
(extract-attrs shape) (extract-attrs shape)
(make-debug-attrs shape))] (make-debug-attrs shape))]
(html (html
[:g attrs data]))) [:g attrs data])))
(defmethod shapes/-render :builtin/group (defmethod shapes/-render :builtin/group
[{:keys [items id] :as shape} attrs] [{:keys [items id] :as shape} factory]
(let [key (str "group-" id) (let [key (str "group-" id)
tfm (-> (merge shape attrs) tfm (svg/calculate-transform shape)
(svg/calculate-transform))
attrs (merge {:id key :key key :transform tfm} attrs (merge {:id key :key key :transform tfm}
(make-debug-attrs shape)) (make-debug-attrs shape))
shapes-by-id (get @st/state :shapes-by-id)] shapes-by-id (get @st/state :shapes-by-id)]
@ -51,7 +50,8 @@
(for [item (->> items (for [item (->> items
(map #(get shapes-by-id %)) (map #(get shapes-by-id %))
(remove :hidden))] (remove :hidden))]
(shapes/-render item nil))]))) (-> (factory item)
(rum/with-key (str (:id item)))))])))
(defmethod shapes/-render-svg :builtin/icon (defmethod shapes/-render-svg :builtin/icon
[{:keys [data id view-box] :as shape} attrs] [{:keys [data id view-box] :as shape} attrs]