1
1
(ns day8.re-frame-10x
2
- (:require [day8.re-frame-10x.utils.re-com :as rc]
3
- [day8.re-frame-10x.styles :as styles]
4
- [day8.re-frame-10x.view.container :as container]
5
- [day8.re-frame-10x.subs]
6
- [day8.re-frame-10x.events]
7
- [day8.re-frame-10x.db :as trace.db]
8
- [day8.reagent.impl.component :refer [patch-wrap-funs patch-custom-wrapper]]
9
- [day8.reagent.impl.batching :refer [patch-next-tick]]
10
- [day8.re-frame-10x.inlined-deps.re-frame.v1v1v2.re-frame.core :as rf]
11
- [day8.re-frame-10x.inlined-deps.reagent.v1v0v0.reagent.core :as r]
12
- [day8.re-frame-10x.inlined-deps.reagent.v1v0v0.reagent.dom :as rdom]))
2
+ (:require
3
+ [day8.re-frame-10x.inlined-deps.reagent.v1v0v0.reagent.core :as r]
4
+ [day8.re-frame-10x.inlined-deps.reagent.v1v0v0.reagent.dom :as rdom]
5
+ [day8.re-frame-10x.inlined-deps.re-frame.v1v1v2.re-frame.core :as rf]
6
+ [day8.reagent.impl.batching :refer [patch-next-tick]]
7
+ [day8.reagent.impl.component :refer [patch-wrap-funs patch-custom-wrapper]]
8
+ [day8.re-frame-10x.events :as events]
9
+ [day8.re-frame-10x.components.re-com :as rc]
10
+ [day8.re-frame-10x.navigation.views :as container]
11
+ [day8.re-frame-10x.panels.settings.subs :as settings.subs]
12
+ [day8.re-frame-10x.panels.settings.events :as settings.events]
13
+ [day8.re-frame-10x.styles :as styles]))
13
14
14
15
(goog-define debug? false )
15
16
16
17
#_(defonce real-schedule reagent.impl.batching /schedule )
17
18
#_(defonce do-after-render-trace-scheduled? (atom false ))
18
19
19
- (defn init-tracing!
20
- " Sets up any initial state that needs to be there for tracing. Does not enable tracing."
21
- []
22
- (patch-custom-wrapper )
23
- (patch-wrap-funs )
24
- (patch-next-tick ))
20
+
25
21
26
22
27
23
(defn resizer-style [draggable-area]
34
30
; ; Add clear button
35
31
; ; Filter out different trace types
36
32
(let [position (r/atom :right )
37
- panel-width% (rf/subscribe [:settings/panel-width%])
38
- showing? (rf/subscribe [:settings/show-panel? ])
33
+ panel-width% (rf/subscribe [:: settings.subs /panel-width%])
34
+ showing? (rf/subscribe [:: settings.subs /show-panel? ])
39
35
dragging? (r/atom false )
40
36
pin-to-bottom? (r/atom true )
41
- selected-tab (rf/subscribe [:settings/selected-tab ])
37
+ selected-tab (rf/subscribe [:: settings.subs /selected-tab ])
42
38
window-width (r/atom js/window.innerWidth)
43
- handle-window-resize (do (rf/dispatch [:settings/window-width js/window.innerWidth]) ; ; Set initial
39
+ handle-window-resize (do (rf/dispatch [:: settings.events /window-width js/window.innerWidth]) ; ; Set initial
44
40
(fn [e]
45
41
; ; N.B. I don't think this should be a perf bottleneck.
46
42
(let [window-width-val js/window.innerWidth]
47
- (rf/dispatch [:settings/window-width window-width-val])
43
+ (rf/dispatch [:: settings.events /window-width window-width-val])
48
44
(reset! window-width window-width-val))))
49
45
handle-keys (fn [e]
50
46
(let [tag-name (.-tagName (.-target e))
51
47
entering-input? (contains? #{" INPUT" " SELECT" " TEXTAREA" } tag-name)]
52
48
(when (and (not entering-input?)
53
49
(= (.-key e) " h" )
54
50
(.-ctrlKey e))
55
- (rf/dispatch [:settings/user-toggle-panel ])
51
+ (rf/dispatch [:: settings.events /user-toggle-panel ])
56
52
(.preventDefault e))))
57
53
handle-mousemove (fn [e]
58
54
(when @dragging?
62
58
(.preventDefault e)
63
59
(let [width% (/ (- new-window-width x) new-window-width)]
64
60
(when (<= width% 0.9 )
65
- (rf/dispatch [:settings/panel-width% width%])))
61
+ (rf/dispatch [:: settings.events /panel-width% width%])))
66
62
(reset! window-width new-window-width))))
67
63
handle-mouse-up (fn [e] (reset! dragging? false ))]
68
64
(r/create-class
115
111
panel
116
112
(let [new-panel (.createElement js/document " div" )]
117
113
(.setAttribute new-panel " id" id)
114
+ (.setAttribute new-panel " class" (str
115
+ #_(styles/unset ) " "
116
+ (styles/normalize )))
118
117
(.appendChild (.-body js/document) new-panel)
119
118
(js/window.focus new-panel)
120
119
new-panel))))
121
120
122
- (defn inject-devtools! []
123
- (styles/inject-trace-styles js/document)
124
- (rdom/render [devtools-outer {:panel-type :inline
125
- :debug? debug?}] (panel-div )))
121
+
126
122
127
123
(defn traced-result [trace-id fragment-id]
128
124
; ; TODO: this is not terribly efficient, figure out how to get the index of the trace directly.
129
- (let [trace (first (filter #(= trace-id (:id %)) (get-in @day8.re-frame-10x.inlined-deps.re-frame.v1v1v2.re-frame.db/app-db [:traces :all-traces ])))]
125
+ (let [trace (first (filter #(= trace-id (:id %)) (get-in @day8.re-frame-10x.inlined-deps.re-frame.v1v1v2.re-frame.db/app-db [:traces :all ])))]
130
126
(get-in trace [:tags :code fragment-id :result ])))
131
127
132
- (defn init-db! []
133
- (trace.db/init-db debug?))
134
-
135
128
(defn ^:export factory-reset! []
136
- (rf/dispatch [:settings/factory-reset ]))
129
+ (rf/dispatch [:: settings.events /factory-reset ]))
137
130
138
131
(defn ^:export show-panel! [show-panel?]
139
- (rf/dispatch [:settings/show-panel? show-panel?]))
132
+ (rf/dispatch [::settings.events/show-panel? show-panel?]))
133
+
134
+ ; ; --- NEW ---
135
+
136
+ (defn patch!
137
+ " Sets up any initial state that needs to be there for tracing. Does not enable tracing."
138
+ []
139
+ (patch-custom-wrapper )
140
+ (patch-wrap-funs )
141
+ (patch-next-tick ))
142
+
143
+ (defn inject!
144
+ []
145
+ (rf/clear-subscription-cache! )
146
+ (rdom/render
147
+ [devtools-outer
148
+ {:panel-type :inline
149
+ :debug? debug?}] (panel-div )))
150
+
151
+ (defn init!
152
+ []
153
+ (patch! )
154
+ (rf/dispatch-sync [::events/init {:debug? debug?}])
155
+ (inject! ))
0 commit comments