Skip to content

Commit dad02ff

Browse files
Change to Nord-based theme and fix ergonomics of epoch navigation
Significant refactor of all views, subs, events and styling. Probably a breaking change for any code depending on internal namespace structure or APIs. Some risk of uncaught regressions. Co-Authored-By: Mike Thompson <[email protected]>
1 parent d8dcb17 commit dad02ff

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

76 files changed

+5869
-4978
lines changed

examples/todomvc/package-lock.json

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/todomvc/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"karma-chrome-launcher": "3.1.0",
66
"karma-cljs-test": "0.1.0",
77
"karma-junit-reporter": "2.0.1",
8-
"shadow-cljs": "2.12.0"
8+
"shadow-cljs": "2.12.2"
99
},
1010
"dependencies": {
1111
"highlight.js": "10.7.1",

examples/todomvc/shadow-cljs.edn

+4-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
[zprint "1.0.1"]
88
[superstructor/re-highlight "0.0.1"]
99
[secretary "1.2.3"]
10-
[binaryage/devtools "1.0.2"]]
10+
[binaryage/devtools "1.0.3"]]
1111

1212
:source-paths ["src" "../../src" "../../gen-src"]
1313

@@ -23,7 +23,8 @@
2323
:preloads [day8.re-frame-10x.preload]}}
2424
:dev
2525
{:compiler-options
26-
{:closure-defines
26+
{:infer-externs false
27+
:closure-defines
2728
{re-frame.trace.trace-enabled? true
2829
day8.re-frame-10x.debug? true
2930
day8.re-frame.tracing.trace-enabled? true}
@@ -33,4 +34,4 @@
3334
[:formatters :hints]}}}}
3435
:devtools
3536
{:http-root "resources/public"
36-
:http-port 8280}}}}
37+
:http-port 8280}}}}

project.clj

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
:min-lein-version "2.9.1"
77

88
:dependencies [[org.clojure/clojure "1.10.3" :scope "provided"]
9+
[org.clojure/clojurescript "1.10.773"]
910
[binaryage/devtools "1.0.2"]
1011
[com.yahoo.platform.yui/yuicompressor "2.4.8"
1112
:exclusions [rhino/js]]

src/day8/re_frame_10x.cljs

+50-34
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,23 @@
11
(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]))
1314

1415
(goog-define debug? false)
1516

1617
#_(defonce real-schedule reagent.impl.batching/schedule)
1718
#_(defonce do-after-render-trace-scheduled? (atom false))
1819

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+
2521

2622

2723
(defn resizer-style [draggable-area]
@@ -34,25 +30,25 @@
3430
;; Add clear button
3531
;; Filter out different trace types
3632
(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?])
3935
dragging? (r/atom false)
4036
pin-to-bottom? (r/atom true)
41-
selected-tab (rf/subscribe [:settings/selected-tab])
37+
selected-tab (rf/subscribe [::settings.subs/selected-tab])
4238
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
4440
(fn [e]
4541
;; N.B. I don't think this should be a perf bottleneck.
4642
(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])
4844
(reset! window-width window-width-val))))
4945
handle-keys (fn [e]
5046
(let [tag-name (.-tagName (.-target e))
5147
entering-input? (contains? #{"INPUT" "SELECT" "TEXTAREA"} tag-name)]
5248
(when (and (not entering-input?)
5349
(= (.-key e) "h")
5450
(.-ctrlKey e))
55-
(rf/dispatch [:settings/user-toggle-panel])
51+
(rf/dispatch [::settings.events/user-toggle-panel])
5652
(.preventDefault e))))
5753
handle-mousemove (fn [e]
5854
(when @dragging?
@@ -62,7 +58,7 @@
6258
(.preventDefault e)
6359
(let [width% (/ (- new-window-width x) new-window-width)]
6460
(when (<= width% 0.9)
65-
(rf/dispatch [:settings/panel-width% width%])))
61+
(rf/dispatch [::settings.events/panel-width% width%])))
6662
(reset! window-width new-window-width))))
6763
handle-mouse-up (fn [e] (reset! dragging? false))]
6864
(r/create-class
@@ -115,25 +111,45 @@
115111
panel
116112
(let [new-panel (.createElement js/document "div")]
117113
(.setAttribute new-panel "id" id)
114+
(.setAttribute new-panel "class" (str
115+
#_(styles/unset) " "
116+
(styles/normalize)))
118117
(.appendChild (.-body js/document) new-panel)
119118
(js/window.focus new-panel)
120119
new-panel))))
121120

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+
126122

127123
(defn traced-result [trace-id fragment-id]
128124
;; 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])))]
130126
(get-in trace [:tags :code fragment-id :result])))
131127

132-
(defn init-db! []
133-
(trace.db/init-db debug?))
134-
135128
(defn ^:export factory-reset! []
136-
(rf/dispatch [:settings/factory-reset]))
129+
(rf/dispatch [::settings.events/factory-reset]))
137130

138131
(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

Comments
 (0)