File tree Expand file tree Collapse file tree 7 files changed +17
-307
lines changed
.clj-kondo/metosin/malli-types-cljs Expand file tree Collapse file tree 7 files changed +17
-307
lines changed Load Diff Large diffs are not rendered by default.
Original file line number Diff line number Diff line change 79
79
[:copied-elements {:optional true } [:* Element]]
80
80
[:kdtree {:optional true } any?]
81
81
[:viewbox-kdtree {:optional true } any?]
82
- [:snapping-points {:optional true } [:vector Vec2D]]
83
82
[:re-pressed.core/keydown {:optional true } map?]])
84
83
85
84
(def valid? (m/validator App))
Original file line number Diff line number Diff line change 8
8
[renderer.frame.handlers :as frame.h]
9
9
[renderer.notification.handlers :as notification.h]
10
10
[renderer.notification.views :as notification.v]
11
+ [renderer.snap.handlers :as snap.h]
11
12
[renderer.utils.vec :as vec]))
12
13
13
14
(defn path
22
23
(m/=> set-active [:-> App uuid? App])
23
24
(defn set-active
24
25
[db id]
25
- (assoc db :active-document id))
26
+ (cond-> db
27
+ id
28
+ (-> (assoc :active-document id)
29
+ (snap.h/rebuild-tree ))))
26
30
27
31
(m/=> persisted-format [:function
28
32
[:-> App PersistedDocument]
Original file line number Diff line number Diff line change 42
42
snap-active @(rf/subscribe [::snap.s/active ])
43
43
nearest-neighbor @(rf/subscribe [::snap.s/nearest-neighbor ])
44
44
snapped-el-id (-> nearest-neighbor meta :id )
45
- snapped-el (when snapped-el-id @(rf/subscribe [::s/entity snapped-el-id]))
46
- snapping-points @(rf/subscribe [::snap.s/points ])
47
- debug @(rf/subscribe [::app.s/debug-info ])]
45
+ snapped-el (when snapped-el-id @(rf/subscribe [::s/entity snapped-el-id]))]
48
46
[:svg#canvas {:on-pointer-up pointer-handler
49
47
:on-pointer-down pointer-handler
50
48
:on-pointer-move pointer-handler
72
70
[tool.hierarchy/render (or primary-tool active-tool)]
73
71
[hierarchy/render temp-element]])
74
72
75
- (when debug
76
- [into [:g ]
77
- (for [snapping-point snapping-points]
78
- [overlay/point-of-interest snapping-point])])
79
-
80
73
(when snap-active
81
74
[:<>
82
75
(when snapped-el
Original file line number Diff line number Diff line change 58
58
points (cond-> points
59
59
(contains? (-> db :snap :options ) :grid )
60
60
(into (ruler.h/steps-intersections db)))]
61
- (-> (assoc db
62
- :snapping-points points
63
- :kdtree (kdtree/build-tree points))
61
+ (-> (assoc db :kdtree (kdtree/build-tree points))
64
62
(update-viewbox-tree )))
65
- (dissoc db :kdtree :viewbox-kdtree :snapping-points )))
63
+ (dissoc db :kdtree :viewbox-kdtree )))
66
64
67
65
(defn update-tree
68
66
[db f points]
69
- (cond-> db
70
- (not-empty points)
71
- (-> (update :snapping-points conj points
72
- :kdtree f points)
73
- (update-viewbox-tree ))))
67
+ (if (:kdtree db)
68
+ (if (empty? points)
69
+ db
70
+ (-> (reduce #(update %1 :kdtree f %2 ) db points)
71
+ (update-viewbox-tree )))
72
+ (rebuild-tree db)))
74
73
75
74
(m/=> insert-to-tree [:-> App [:set uuid?] App])
76
75
(defn insert-to-tree
77
76
[db ids]
78
- (let [points (->> (element.h/entities db ids)
77
+ (let [points (->> (vals ( element.h/entities db ids) )
79
78
(element.h/snapping-points db))]
80
79
(update-tree db kdtree/insert points)))
81
80
82
81
(m/=> delete-from-tree [:-> App [:set uuid?] App])
83
82
(defn delete-from-tree
84
83
[db ids]
85
- (let [points (->> (element.h/entities db ids)
84
+ (let [points (->> (vals ( element.h/entities db ids) )
86
85
(element.h/snapping-points db))]
87
86
(update-tree db kdtree/delete points)))
88
87
Original file line number Diff line number Diff line change 8
8
::snap
9
9
:-> :snap )
10
10
11
- (rf/reg-sub
12
- ::points
13
- :-> :snapping-points )
14
-
15
11
(rf/reg-sub
16
12
::active
17
13
:<- [::snap ]
Original file line number Diff line number Diff line change 264
264
(element.h/clear-hovered ))
265
265
(selectable? clicked-element)
266
266
(-> (element.h/select (-> db :clicked-element :id ) (pointer/shift? e))
267
- (snap.h/rebuild- tree )))))
267
+ (snap.h/delete-from- tree #{( -> db :clicked-element :id )} )))))
268
268
269
269
(defmethod hierarchy /drag :transform
270
270
[db e]
You can’t perform that action at this time.
0 commit comments