Skip to content

Commit 943237c

Browse files
committed
Persist taps window view choice
1 parent c490f3e commit 943237c

File tree

1 file changed

+21
-18
lines changed

1 file changed

+21
-18
lines changed

src/nextjournal/clerk/window.clj

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,33 @@
33
[nextjournal.clerk.viewer :as v]
44
[nextjournal.clerk.webserver :as webserver]))
55

6+
(declare open!)
7+
(defonce !taps-view (atom :stream))
8+
(defn set-view! [x] (reset! !taps-view x) (open! ::taps))
9+
610
(def taps-viewer
7-
{:render-fn '(fn [taps opts]
8-
(let [!view (nextjournal.clerk.render.hooks/use-state :stream)]
9-
[:div
10-
[:div.flex.justify-between.items-center
11-
(into [:div.flex.items-center.font-sans.text-xs.mb-3 [:span.text-slate-500.mr-2 "View-as:"]]
12-
(map (fn [choice]
13-
[:button.px-3.py-1.font-medium.hover:bg-indigo-50.rounded-full.hover:text-indigo-600.transition
14-
{:class (if (= @!view choice) "bg-indigo-100 text-indigo-600" "text-slate-500")
15-
:on-click #(reset! !view choice)}
16-
choice]) [:stream :latest]))
17-
[:button.text-xs.rounded-full.px-3.py-1.border-2.font-sans.hover:bg-slate-100.cursor-pointer
18-
{:on-click #(nextjournal.clerk.render/clerk-eval `(tap/reset-taps!))} "Clear"]]
19-
(into [:div]
20-
(nextjournal.clerk.viewer/inspect-children opts)
21-
(cond->> taps (= :latest @!view) (take 1)))]))})
11+
{:render-fn '(fn [taps {:as opts :keys [taps-view]}]
12+
[:div
13+
[:div.flex.justify-between.items-center
14+
(into [:div.flex.items-center.font-sans.text-xs.mb-3 [:span.text-slate-500.mr-2 "View-as:"]]
15+
(map (fn [choice]
16+
[:button.px-3.py-1.font-medium.hover:bg-indigo-50.rounded-full.hover:text-indigo-600.transition
17+
{:class (if (= taps-view choice) "bg-indigo-100 text-indigo-600" "text-slate-500")
18+
:on-click #(nextjournal.clerk.render/clerk-eval `(set-view! ~choice))}
19+
choice]) [:stream :latest]))
20+
[:button.text-xs.rounded-full.px-3.py-1.border-2.font-sans.hover:bg-slate-100.cursor-pointer
21+
{:on-click #(nextjournal.clerk.render/clerk-eval `(tap/reset-taps!))} "Clear"]]
22+
(into [:div]
23+
(nextjournal.clerk.viewer/inspect-children opts)
24+
(cond->> taps (= :latest taps-view) (take 1)))])})
2225

2326
(defn open!
2427
([id]
2528
(case id
2629
::taps (open! id {:title "🚰 Taps" :css-class "p-0"}
2730
(v/with-viewers (v/add-viewers [tap/tap-viewer])
28-
(v/with-viewer taps-viewer @tap/!taps)))))
31+
(v/with-viewer taps-viewer {:nextjournal/opts {:taps-view @!taps-view}}
32+
@tap/!taps)))))
2933
([id content] (open! id {} content))
3034
([id opts content]
3135
;; TODO: consider calling v/transform-result
@@ -44,10 +48,9 @@
4448

4549
#_(open! ::taps)
4650
#_(doseq [f @@(resolve 'clojure.core/tapset)] (remove-tap f))
47-
#_(reset! !taps ())
4851
#_(tap> (range 30))
4952
#_(destroy! ::taps)
50-
#_(tap> (v/html [:h1 "Ahoi"]))
53+
#_(tap> (v/plotly {:data [{:y [1 2 3]}]}))
5154
#_(tap> (v/table [[1 2] [3 4]]))
5255
#_(open! ::my-window {:title "🔭 Rear Window"} (v/table [[1 2] [3 4]]))
5356
#_(open! ::my-window {:title "🔭 Rear Window"} (range 30))

0 commit comments

Comments
 (0)