Skip to content

Commit 8a79282

Browse files
committed
refactor tree module
1 parent e9f242d commit 8a79282

File tree

2 files changed

+26
-38
lines changed

2 files changed

+26
-38
lines changed

src/renderer/tree/events.cljs

+22-9
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
(ns renderer.tree.events
22
(:require
3-
[re-frame.core :as rf]))
3+
[re-frame.core :as rf]
4+
[renderer.document.events :as-alias document.e]
5+
[renderer.element.events :as-alias element.e]))
46

57
(rf/reg-fx
6-
::focus
8+
::focus-item
79
(fn [[k direction]]
810
(let [list-elements (.from js/Array (.querySelectorAll js/document ".tree-sidebar .list-item-button"))
911
current-el (first (.querySelectorAll js/document (str ".tree-sidebar [data-id='" (name k) "']")))
@@ -16,11 +18,22 @@
1618
(.focus element))))
1719

1820
(rf/reg-event-fx
19-
::focus-up
20-
(fn [_ [_ k]]
21-
{::focus [k :up]}))
21+
::key-down
22+
(fn [_ [_ key el-k multi?]]
23+
(case key
24+
"ArrowUp"
25+
{::focus-item [el-k :up]}
2226

23-
(rf/reg-event-fx
24-
::focus-down
25-
(fn [_ [_ k]]
26-
{::focus [k :down]}))
27+
"ArrowDown"
28+
{::focus-item [el-k :down]}
29+
30+
"ArrowLeft"
31+
{:dispatch [::document.e/collapse-el el-k]}
32+
33+
"ArrowRight"
34+
{:dispatch [::document.e/expand-el el-k]}
35+
36+
"Enter"
37+
{:dispatch [::element.e/select el-k multi?]}
38+
39+
nil)))

src/renderer/tree/views.cljs

+4-29
Original file line numberDiff line numberDiff line change
@@ -73,31 +73,6 @@
7373
(- (* depth collapse-button-width)
7474
(if children? collapse-button-width 0))))
7575

76-
(defn key-down-handler
77-
[e k]
78-
(case (.-key e)
79-
"ArrowUp"
80-
(do (.stopPropagation e)
81-
(rf/dispatch [::e/focus-up k]))
82-
83-
"ArrowDown"
84-
(do (.stopPropagation e)
85-
(rf/dispatch [::e/focus-down k]))
86-
87-
"ArrowLeft"
88-
(do (.stopPropagation e)
89-
(rf/dispatch [::document.e/collapse-el k]))
90-
91-
"ArrowRight"
92-
(do (.stopPropagation e)
93-
(rf/dispatch [::document.e/expand-el k]))
94-
95-
"Enter"
96-
(do (.stopPropagation e)
97-
(rf/dispatch [::element.e/select k (.-ctrlKey e)]))
98-
99-
nil))
100-
10176
(defn list-item-button
10277
[{:keys [key selected? children] :as el} depth hovered? collapsed?]
10378
(let [multiple-selected? @(rf/subscribe [::element.s/multiple-selected?])]
@@ -112,16 +87,16 @@
11287
:ref (fn [this]
11388
(when (and this selected? hovered? (not multiple-selected?))
11489
(dom/scroll-into-view! this)))
115-
:on-key-down #(key-down-handler % key)
90+
:on-key-down #(do (.stopPropagation %)
91+
(rf/dispatch [::e/key-down (.-key %) key (.-ctrlKey %)]))
11692
:draggable true
11793
:on-drag-start #(-> (.-dataTransfer %)
11894
(.setData "key" (name key)))
11995
:on-drag-enter #(rf/dispatch [::document.e/set-hovered-keys #{key}])
12096
:on-drag-over #(.preventDefault %)
12197
:on-drop #(drop-handler % key)
122-
:on-pointer-down (fn [e]
123-
(when (= (.-button e) 2)
124-
(rf/dispatch [::element.e/select key (.-ctrlKey e)])))
98+
:on-pointer-down #(when (= (.-button %) 2)
99+
(rf/dispatch [::element.e/select key (.-ctrlKey %)]))
125100
:on-pointer-up (fn [e]
126101
(.stopPropagation e)
127102
(rf/dispatch [::element.e/select key (.-ctrlKey e)]))

0 commit comments

Comments
 (0)