mirror of
https://github.com/penpot/penpot.git
synced 2025-05-10 19:46:37 +02:00
🐛 Small fixes for guides
This commit is contained in:
parent
663358bdae
commit
8833e19c7f
6 changed files with 20 additions and 26 deletions
|
@ -70,12 +70,12 @@
|
||||||
:origin it}))))))
|
:origin it}))))))
|
||||||
|
|
||||||
(defn move-frame-guides
|
(defn move-frame-guides
|
||||||
|
"Move guides that are inside a frame when that frame is moved"
|
||||||
[ids]
|
[ids]
|
||||||
(us/verify (s/coll-of uuid?) ids)
|
(us/verify (s/coll-of uuid?) ids)
|
||||||
|
|
||||||
(ptk/reify ::move-frame-guides
|
(ptk/reify ::move-frame-guides
|
||||||
ptk/WatchEvent
|
ptk/WatchEvent
|
||||||
|
|
||||||
(watch [_ state _]
|
(watch [_ state _]
|
||||||
(let [objects (wsh/lookup-page-objects state)
|
(let [objects (wsh/lookup-page-objects state)
|
||||||
frame-ids? (->> ids (filter #(= :frame (get-in objects [% :type]))) (into #{}))
|
frame-ids? (->> ids (filter #(= :frame (get-in objects [% :type]))) (into #{}))
|
||||||
|
|
|
@ -157,7 +157,6 @@
|
||||||
show-artboard-names? (contains? layout :display-artboard-names)
|
show-artboard-names? (contains? layout :display-artboard-names)
|
||||||
show-rules? (contains? layout :rules)
|
show-rules? (contains? layout :rules)
|
||||||
|
|
||||||
;; TODO
|
|
||||||
disabled-guides? (or drawing-tool transform)]
|
disabled-guides? (or drawing-tool transform)]
|
||||||
|
|
||||||
(hooks/setup-dom-events viewport-ref zoom disable-paste in-viewport?)
|
(hooks/setup-dom-events viewport-ref zoom disable-paste in-viewport?)
|
||||||
|
|
|
@ -97,7 +97,6 @@
|
||||||
;; TODO: Change when pixel-grid flag exists
|
;; TODO: Change when pixel-grid flag exists
|
||||||
new-position (mth/round new-position)
|
new-position (mth/round new-position)
|
||||||
new-frame-id (:id (get-hover-frame))]
|
new-frame-id (:id (get-hover-frame))]
|
||||||
#_(prn ">>" new-position new-frame-id)
|
|
||||||
(swap! state assoc
|
(swap! state assoc
|
||||||
:new-position new-position
|
:new-position new-position
|
||||||
:new-frame-id new-frame-id)))))]
|
:new-frame-id new-frame-id)))))]
|
||||||
|
@ -276,7 +275,7 @@
|
||||||
(when (or (nil? frame)
|
(when (or (nil? frame)
|
||||||
(is-guide-inside-frame? (assoc guide :position pos) frame)
|
(is-guide-inside-frame? (assoc guide :position pos) frame)
|
||||||
(:hover @state true))
|
(:hover @state true))
|
||||||
[:g.guide-area {:data-guide-frame-id (when (some? frame) (str (:id frame)))}
|
[:g.guide-area
|
||||||
(when-not disabled-guides?
|
(when-not disabled-guides?
|
||||||
(let [{:keys [x y width height]} (guide-area-axis pos vbox zoom frame axis)]
|
(let [{:keys [x y width height]} (guide-area-axis pos vbox zoom frame axis)]
|
||||||
[:rect {:x x
|
[:rect {:x x
|
||||||
|
|
|
@ -85,16 +85,13 @@
|
||||||
mask? (and group? masked-group?)
|
mask? (and group? masked-group?)
|
||||||
|
|
||||||
;; When the shape is a frame we maybe need to move its thumbnail
|
;; When the shape is a frame we maybe need to move its thumbnail
|
||||||
thumb-node (when frame? (dom/get-element (str "thumbnail-" id)))
|
thumb-node (when frame? (dom/get-element (str "thumbnail-" id)))]
|
||||||
|
|
||||||
]
|
|
||||||
|
|
||||||
(cond
|
(cond
|
||||||
frame?
|
frame?
|
||||||
(into [thumb-node
|
[thumb-node
|
||||||
(dom/query shape-node ".frame-background")
|
(dom/query shape-node ".frame-background")
|
||||||
(dom/query shape-node ".frame-clip")]
|
(dom/query shape-node ".frame-clip")]
|
||||||
(dom/query-all (str "[data-guide-frame-id='" id "']")))
|
|
||||||
|
|
||||||
;; For groups we don't want to transform the whole group but only
|
;; For groups we don't want to transform the whole group but only
|
||||||
;; its filters/masks
|
;; its filters/masks
|
||||||
|
|
|
@ -31,9 +31,6 @@
|
||||||
|
|
||||||
(defn guide-snap-points
|
(defn guide-snap-points
|
||||||
[guide]
|
[guide]
|
||||||
|
|
||||||
;; TODO: The line will be displayed from the position to the axis. Maybe
|
|
||||||
;; revisit this
|
|
||||||
(if (= :x (:axis guide))
|
(if (= :x (:axis guide))
|
||||||
#{(gpt/point (:position guide) 0)}
|
#{(gpt/point (:position guide) 0)}
|
||||||
#{(gpt/point 0 (:position guide))}))
|
#{(gpt/point 0 (:position guide))}))
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
|
|
||||||
;; PRIVATE FUNCTIONS
|
;; PRIVATE FUNCTIONS
|
||||||
|
|
||||||
(defn make-insert-tree-data
|
(defn- make-insert-tree-data
|
||||||
[shape-data axis]
|
[shape-data axis]
|
||||||
(fn [tree]
|
(fn [tree]
|
||||||
(let [tree (or tree (rt/make-tree))]
|
(let [tree (or tree (rt/make-tree))]
|
||||||
|
@ -30,7 +30,7 @@
|
||||||
(rt/insert tree (get-in data [:pt axis]) data))
|
(rt/insert tree (get-in data [:pt axis]) data))
|
||||||
$ shape-data)))))
|
$ shape-data)))))
|
||||||
|
|
||||||
(defn make-delete-tree-data
|
(defn- make-delete-tree-data
|
||||||
[shape-data axis]
|
[shape-data axis]
|
||||||
(fn [tree]
|
(fn [tree]
|
||||||
(let [tree (or tree (rt/make-tree))]
|
(let [tree (or tree (rt/make-tree))]
|
||||||
|
@ -39,7 +39,7 @@
|
||||||
(rt/remove tree (get-in data [:pt axis]) data))
|
(rt/remove tree (get-in data [:pt axis]) data))
|
||||||
$ shape-data)))))
|
$ shape-data)))))
|
||||||
|
|
||||||
(defn add-root-frame
|
(defn- add-root-frame
|
||||||
[page-data]
|
[page-data]
|
||||||
(let [frame-id uuid/zero]
|
(let [frame-id uuid/zero]
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@
|
||||||
(assoc-in [frame-id :x] (rt/make-tree))
|
(assoc-in [frame-id :x] (rt/make-tree))
|
||||||
(assoc-in [frame-id :y] (rt/make-tree)))))
|
(assoc-in [frame-id :y] (rt/make-tree)))))
|
||||||
|
|
||||||
(defn add-frame
|
(defn- add-frame
|
||||||
[page-data frame]
|
[page-data frame]
|
||||||
(let [frame-id (:id frame)
|
(let [frame-id (:id frame)
|
||||||
parent-id (:parent-id frame)
|
parent-id (:parent-id frame)
|
||||||
|
@ -79,7 +79,7 @@
|
||||||
(update-in [frame-id :x] (make-insert-tree-data (d/concat-vec frame-data grid-x-data) :x))
|
(update-in [frame-id :x] (make-insert-tree-data (d/concat-vec frame-data grid-x-data) :x))
|
||||||
(update-in [frame-id :y] (make-insert-tree-data (d/concat-vec frame-data grid-y-data) :y)))))
|
(update-in [frame-id :y] (make-insert-tree-data (d/concat-vec frame-data grid-y-data) :y)))))
|
||||||
|
|
||||||
(defn add-shape
|
(defn- add-shape
|
||||||
[page-data shape]
|
[page-data shape]
|
||||||
(let [frame-id (:frame-id shape)
|
(let [frame-id (:frame-id shape)
|
||||||
snap-points (snap/shape-snap-points shape)
|
snap-points (snap/shape-snap-points shape)
|
||||||
|
@ -94,7 +94,7 @@
|
||||||
(update-in [frame-id :y] (make-insert-tree-data shape-data :y)))))
|
(update-in [frame-id :y] (make-insert-tree-data shape-data :y)))))
|
||||||
|
|
||||||
|
|
||||||
(defn add-guide
|
(defn- add-guide
|
||||||
[page-data guide]
|
[page-data guide]
|
||||||
|
|
||||||
(let [guide-data (->> (snap/guide-snap-points guide)
|
(let [guide-data (->> (snap/guide-snap-points guide)
|
||||||
|
@ -113,7 +113,7 @@
|
||||||
(assoc-in [:guides :objects-data (:id guide)] guide-data)
|
(assoc-in [:guides :objects-data (:id guide)] guide-data)
|
||||||
(update-in [:guides (:axis guide)] (make-insert-tree-data guide-data (:axis guide)))))))
|
(update-in [:guides (:axis guide)] (make-insert-tree-data guide-data (:axis guide)))))))
|
||||||
|
|
||||||
(defn remove-frame
|
(defn- remove-frame
|
||||||
[page-data frame]
|
[page-data frame]
|
||||||
(let [frame-id (:id frame)
|
(let [frame-id (:id frame)
|
||||||
root-data (get-in page-data [uuid/zero :objects-data frame-id])]
|
root-data (get-in page-data [uuid/zero :objects-data frame-id])]
|
||||||
|
@ -123,7 +123,7 @@
|
||||||
(update-in [uuid/zero :y] (make-delete-tree-data root-data :y))
|
(update-in [uuid/zero :y] (make-delete-tree-data root-data :y))
|
||||||
(dissoc frame-id))))
|
(dissoc frame-id))))
|
||||||
|
|
||||||
(defn remove-shape
|
(defn- remove-shape
|
||||||
[page-data shape]
|
[page-data shape]
|
||||||
|
|
||||||
(let [frame-id (:frame-id shape)
|
(let [frame-id (:frame-id shape)
|
||||||
|
@ -133,7 +133,7 @@
|
||||||
(update-in [frame-id :x] (make-delete-tree-data shape-data :x))
|
(update-in [frame-id :x] (make-delete-tree-data shape-data :x))
|
||||||
(update-in [frame-id :y] (make-delete-tree-data shape-data :y)))))
|
(update-in [frame-id :y] (make-delete-tree-data shape-data :y)))))
|
||||||
|
|
||||||
(defn remove-guide
|
(defn- remove-guide
|
||||||
[page-data guide]
|
[page-data guide]
|
||||||
(if-let [frame-id (:frame-id guide)]
|
(if-let [frame-id (:frame-id guide)]
|
||||||
(let [guide-data (get-in page-data [frame-id :objects-data (:id guide)])]
|
(let [guide-data (get-in page-data [frame-id :objects-data (:id guide)])]
|
||||||
|
@ -147,7 +147,7 @@
|
||||||
(d/dissoc-in [:guides :objects-data (:id guide)])
|
(d/dissoc-in [:guides :objects-data (:id guide)])
|
||||||
(update-in [:guides (:axis guide)] (make-delete-tree-data guide-data (:axis guide)))))))
|
(update-in [:guides (:axis guide)] (make-delete-tree-data guide-data (:axis guide)))))))
|
||||||
|
|
||||||
(defn update-frame
|
(defn- update-frame
|
||||||
[page-data [_ new-frame]]
|
[page-data [_ new-frame]]
|
||||||
(let [frame-id (:id new-frame)
|
(let [frame-id (:id new-frame)
|
||||||
root-data (get-in page-data [uuid/zero :objects-data frame-id])
|
root-data (get-in page-data [uuid/zero :objects-data frame-id])
|
||||||
|
@ -159,19 +159,20 @@
|
||||||
(update-in [frame-id :y] (make-delete-tree-data frame-data :y))
|
(update-in [frame-id :y] (make-delete-tree-data frame-data :y))
|
||||||
(add-frame new-frame))))
|
(add-frame new-frame))))
|
||||||
|
|
||||||
(defn update-shape
|
(defn- update-shape
|
||||||
[page-data [old-shape new-shape]]
|
[page-data [old-shape new-shape]]
|
||||||
(-> page-data
|
(-> page-data
|
||||||
(remove-shape old-shape)
|
(remove-shape old-shape)
|
||||||
(add-shape new-shape)))
|
(add-shape new-shape)))
|
||||||
|
|
||||||
(defn update-guide
|
(defn- update-guide
|
||||||
[page-data [old-guide new-guide]]
|
[page-data [old-guide new-guide]]
|
||||||
(-> page-data
|
(-> page-data
|
||||||
(remove-guide old-guide)
|
(remove-guide old-guide)
|
||||||
(add-guide new-guide)))
|
(add-guide new-guide)))
|
||||||
|
|
||||||
;; PUBLIC API
|
;; PUBLIC API
|
||||||
|
|
||||||
(defn make-snap-data
|
(defn make-snap-data
|
||||||
"Creates an empty snap index"
|
"Creates an empty snap index"
|
||||||
[]
|
[]
|
||||||
|
@ -231,6 +232,7 @@
|
||||||
(add-page snap-data page)))
|
(add-page snap-data page)))
|
||||||
|
|
||||||
(defn query
|
(defn query
|
||||||
|
"Retrieve the shape data for the snaps in that range"
|
||||||
[snap-data page-id frame-id axis [from to]]
|
[snap-data page-id frame-id axis [from to]]
|
||||||
|
|
||||||
(d/concat-vec
|
(d/concat-vec
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue