mirror of
https://github.com/penpot/penpot.git
synced 2025-06-02 19:11:38 +02:00
Minor refactor on shapes data events.
Adding more asserts and more specs.
This commit is contained in:
parent
fdf3f1b6f0
commit
b3a2ae3eb2
8 changed files with 281 additions and 205 deletions
|
@ -121,7 +121,7 @@
|
|||
props {:x x1 :y y1 :width width :height height}]
|
||||
(letfn [(on-input [ev]
|
||||
(let [content (dom/event->inner-text ev)]
|
||||
(st/emit! (uds/update-text id {:content content}))))]
|
||||
(st/emit! (uds/update-text id content))))]
|
||||
[:foreignObject props
|
||||
[:div {:style style
|
||||
:ref "container"
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
(defonce +shortcuts+
|
||||
{:shift+g #(st/emit! (dw/toggle-flag :grid))
|
||||
:ctrl+g #(st/emit! (uds/group-selected))
|
||||
:ctrl+shift+g #(st/emit! (uds/degroup-selected))
|
||||
:ctrl+shift+g #(st/emit! (uds/ungroup-selected))
|
||||
:ctrl+shift+m #(st/emit! (dw/toggle-flag :sitemap))
|
||||
:ctrl+shift+f #(st/emit! (dw/toggle-flag :drawtools))
|
||||
:ctrl+shift+i #(st/emit! (dw/toggle-flag :icons))
|
||||
|
|
|
@ -92,14 +92,13 @@
|
|||
"A generic component that displays the shape name
|
||||
if it is available and allows inline edition of it."
|
||||
{:mixins [mx/static (mx/local)]}
|
||||
[{:keys [rum/local]} shape]
|
||||
[{:keys [rum/local]} {:keys [id] :as shape}]
|
||||
(letfn [(on-blur [event]
|
||||
(let [target (dom/event->target event)
|
||||
parent (.-parentNode target)
|
||||
data {:id (:id shape)
|
||||
:name (dom/get-value target)}]
|
||||
name (dom/get-value target)]
|
||||
(set! (.-draggable parent) true)
|
||||
(st/emit! (uds/update-shape data))
|
||||
(st/emit! (uds/rename-shape id name))
|
||||
(swap! local assoc :edition false)))
|
||||
(on-key-down [event]
|
||||
(js/console.log event)
|
||||
|
@ -295,8 +294,8 @@
|
|||
groups (into #{} xform selected)]
|
||||
(= 1 (count groups))))
|
||||
|
||||
(defn- allow-degrouping?
|
||||
"Check if the current situation allows degrouping
|
||||
(defn- allow-ungrouping?
|
||||
"Check if the current situation allows ungrouping
|
||||
of the currently selected shapes."
|
||||
[selected shapes-map]
|
||||
(let [xform (comp (map shapes-map)
|
||||
|
@ -310,11 +309,11 @@
|
|||
[selected shapes-map]
|
||||
(let [duplicate #(st/emit! (uds/duplicate-selected))
|
||||
group #(st/emit! (uds/group-selected))
|
||||
degroup #(st/emit! (uds/degroup-selected))
|
||||
ungroup #(st/emit! (uds/ungroup-selected))
|
||||
delete #(st/emit! (uds/delete-selected))
|
||||
|
||||
allow-grouping? (allow-grouping? selected shapes-map)
|
||||
allow-degrouping? (allow-degrouping? selected shapes-map)
|
||||
allow-ungrouping? (allow-ungrouping? selected shapes-map)
|
||||
allow-duplicate? (= 1 (count selected))
|
||||
allow-deletion? (pos? (count selected))]
|
||||
[:div.layers-tools
|
||||
|
@ -331,8 +330,8 @@
|
|||
i/folder]
|
||||
[:li.degroup-layer.tooltip.tooltip-top
|
||||
{:alt "Ungroup"
|
||||
:class (when-not allow-degrouping? "disable")
|
||||
:on-click degroup}
|
||||
:class (when-not allow-ungrouping? "disable")
|
||||
:on-click ungroup}
|
||||
i/ungroup]
|
||||
[:li.delete-layer.tooltip.tooltip-top
|
||||
{:alt "Delete"
|
||||
|
|
|
@ -19,8 +19,9 @@
|
|||
[uxbox.util.mixins :as mx :include-macros true]
|
||||
[uxbox.main.geom :as geom]
|
||||
[uxbox.util.dom :as dom]
|
||||
[uxbox.util.math :refer (precision-or-0)]
|
||||
[uxbox.util.data :refer (parse-int parse-float read-string)]))
|
||||
[uxbox.util.geom.point :as gpt]
|
||||
[uxbox.util.data :refer (parse-int parse-float read-string)]
|
||||
[uxbox.util.math :refer (precision-or-0)]))
|
||||
|
||||
(mx/defc circle-measures-menu
|
||||
{:mixins [mx/static]}
|
||||
|
@ -30,7 +31,7 @@
|
|||
value (parse-int value 0)
|
||||
sid (:id shape)
|
||||
props {attr value}]
|
||||
(st/emit! (uds/update-size sid props))))
|
||||
(st/emit! (uds/update-dimensions sid props))))
|
||||
(on-rotation-change [event]
|
||||
(let [value (dom/event->value event)
|
||||
value (parse-int value 0)
|
||||
|
@ -40,8 +41,8 @@
|
|||
(let [value (dom/event->value event)
|
||||
value (parse-int value nil)
|
||||
sid (:id shape)
|
||||
props {attr value}]
|
||||
(st/emit! (uds/update-position sid props))))
|
||||
point (gpt/point {attr value})]
|
||||
(st/emit! (uds/update-position sid point))))
|
||||
(on-proportion-lock-change [event]
|
||||
(if (:proportion-lock shape)
|
||||
(st/emit! (uds/unlock-proportions id))
|
||||
|
|
|
@ -19,8 +19,9 @@
|
|||
[uxbox.util.mixins :as mx :include-macros true]
|
||||
[uxbox.main.geom :as geom]
|
||||
[uxbox.util.dom :as dom]
|
||||
[uxbox.util.math :refer (precision-or-0)]
|
||||
[uxbox.util.data :refer (parse-int parse-float read-string)]))
|
||||
[uxbox.util.geom.point :as gpt]
|
||||
[uxbox.util.data :refer (parse-int parse-float read-string)]
|
||||
[uxbox.util.math :refer (precision-or-0)]))
|
||||
|
||||
(defn- icon-measures-menu-render
|
||||
[own menu shape]
|
||||
|
@ -29,7 +30,7 @@
|
|||
value (parse-int value 0)
|
||||
sid (:id shape)
|
||||
props {attr value}]
|
||||
(st/emit! (uds/update-size sid props))))
|
||||
(st/emit! (uds/update-dimensions sid props))))
|
||||
(on-rotation-change [event]
|
||||
(let [value (dom/event->value event)
|
||||
value (parse-int value 0)
|
||||
|
@ -39,8 +40,8 @@
|
|||
(let [value (dom/event->value event)
|
||||
value (parse-int value nil)
|
||||
sid (:id shape)
|
||||
props {attr value}]
|
||||
(st/emit! (uds/update-position sid props))))
|
||||
point (gpt/point {attr value})]
|
||||
(st/emit! (uds/update-position sid point))))
|
||||
(on-proportion-lock-change [event]
|
||||
(if (:proportion-lock shape)
|
||||
(st/emit! (uds/unlock-proportions (:id shape)))
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
(ns uxbox.main.ui.workspace.sidebar.options.rect-measures
|
||||
(:require [lentes.core :as l]
|
||||
[uxbox.util.i18n :refer (tr)]
|
||||
[uxbox.util.i18n :refer [tr]]
|
||||
[uxbox.util.router :as r]
|
||||
[potok.core :as ptk]
|
||||
[uxbox.main.store :as st]
|
||||
|
@ -17,8 +17,9 @@
|
|||
[uxbox.util.mixins :as mx :include-macros true]
|
||||
[uxbox.main.geom :as geom]
|
||||
[uxbox.util.dom :as dom]
|
||||
[uxbox.util.math :refer (precision-or-0)]
|
||||
[uxbox.util.data :refer (parse-int parse-float read-string)]))
|
||||
[uxbox.util.geom.point :as gpt]
|
||||
[uxbox.util.data :refer [parse-int parse-float read-string]]
|
||||
[uxbox.util.math :refer [precision-or-0]]))
|
||||
|
||||
(mx/defc rect-measures-menu
|
||||
{:mixins [mx/static]}
|
||||
|
@ -26,15 +27,16 @@
|
|||
(letfn [(on-size-change [event attr]
|
||||
(let [value (-> (dom/event->value event)
|
||||
(parse-int 0))]
|
||||
(st/emit! (uds/update-size id {attr value}))))
|
||||
(st/emit! (uds/update-dimensions id {attr value}))))
|
||||
(on-rotation-change [event]
|
||||
(let [value (-> (dom/event->value event)
|
||||
(parse-int 0))]
|
||||
(st/emit! (uds/update-rotation id value))))
|
||||
(on-pos-change [event attr]
|
||||
(let [value (-> (dom/event->value event)
|
||||
(parse-int nil))]
|
||||
(st/emit! (uds/update-position id {attr value}))))
|
||||
(parse-int nil))
|
||||
point (gpt/point {attr value})]
|
||||
(st/emit! (uds/update-position id point))))
|
||||
(on-proportion-lock-change [event]
|
||||
(if (:proportion-lock shape)
|
||||
(st/emit! (uds/unlock-proportions id))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue