|
1 | 1 | ;; # 🚰 Tap Inspector
|
2 | 2 | (ns nextjournal.clerk.tap
|
3 | 3 | {:nextjournal.clerk/visibility {:code :hide :result :hide}}
|
4 |
| - (:require [nextjournal.clerk :as clerk] |
5 |
| - [nextjournal.clerk.viewer :as v]) |
| 4 | + (:require [nextjournal.clerk.viewer :as v]) |
6 | 5 | (:import (java.time Instant LocalTime ZoneId)))
|
7 | 6 |
|
8 | 7 | (defn inst->local-time-str [inst] (str (LocalTime/ofInstant inst (ZoneId/systemDefault))))
|
|
24 | 23 | [:button.text-xs.rounded-full.px-3.py-1.border-2.font-sans.hover:bg-slate-100.cursor-pointer
|
25 | 24 | {:on-click #(nextjournal.clerk.render/clerk-eval `(reset-taps!))} "Clear"]]))))
|
26 | 25 |
|
27 |
| -^{::clerk/sync true ::clerk/viewer switch-view ::clerk/visibility {:result :show}} |
| 26 | +^{:nextjournal.clerk/sync true :nextjournal.clerk/viewer switch-view :nextjournal.clerk/visibility {:result :show}} |
28 | 27 | (defonce !view (atom :stream))
|
29 | 28 |
|
30 | 29 | (defonce !taps (atom ()))
|
31 | 30 |
|
32 | 31 | (defn reset-taps! []
|
33 | 32 | (reset! !taps ())
|
34 |
| - (clerk/recompute!)) |
| 33 | + ((resolve 'nextjournal.clerk/recompute!))) |
35 | 34 |
|
36 | 35 | (defn tapped [x]
|
37 | 36 | (swap! !taps conj (record-tap x))
|
38 |
| - (clerk/recompute!)) |
| 37 | + ((resolve 'nextjournal.clerk/recompute!))) |
39 | 38 |
|
40 | 39 | (defonce tap-setup
|
41 | 40 | (add-tap (fn [x] ((resolve `tapped) x))))
|
|
57 | 56 | (update-in [:nextjournal/value ::tapped-at] inst->local-time-str)))})
|
58 | 57 |
|
59 | 58 |
|
60 |
| -^{::clerk/visibility {:result :show} |
61 |
| - ::clerk/viewers (v/add-viewers [tap-viewer])} |
62 |
| -(clerk/fragment (cond->> @!taps |
63 |
| - (= :latest @!view) (take 1))) |
| 59 | +^{:nextjournal.clerk/visibility {:result :show} |
| 60 | + :nextjournal.clerk/viewers (v/add-viewers [tap-viewer])} |
| 61 | +(v/fragment (cond->> @!taps |
| 62 | + (= :latest @!view) (take 1))) |
64 | 63 |
|
65 | 64 | (comment
|
66 | 65 | (last @!taps)
|
67 | 66 | (dotimes [_i 5]
|
68 | 67 | (tap> (rand-int 1000)))
|
69 | 68 | (tap> (shuffle (range (+ 20 (rand-int 200)))))
|
70 |
| - (tap> (clerk/md "> The purpose of visualization is **insight**, not pictures.")) |
| 69 | + (tap> (v/md "> The purpose of visualization is **insight**, not pictures.")) |
71 | 70 | (tap> (v/plotly {:data [{:z [[1 2 3] [3 2 1]] :type "surface"}]}))
|
72 |
| - (tap> (clerk/html {::clerk/width :full} [:h1.w-full.border-2.border-amber-500.bg-amber-500.h-10])) |
73 |
| - (tap> (clerk/table {::clerk/width :full} [[1 2] [3 4]])) |
74 |
| - (tap> (clerk/plotly {::clerk/width :full} {:data [{:y [3 1 2]}]})) |
75 |
| - (tap> (clerk/image "trees.png")) |
| 71 | + (tap> (v/html {:nextjournal.clerk/width :full} [:h1.w-full.border-2.border-amber-500.bg-amber-500.h-10])) |
| 72 | + (tap> (v/table {:nextjournal.clerk/width :full} [[1 2] [3 4]])) |
| 73 | + (tap> (v/plotly {:nextjournal.clerk/width :full} {:data [{:y [3 1 2]}]})) |
| 74 | + (tap> (v/image "trees.png")) |
76 | 75 | (do (require 'rule-30)
|
77 |
| - (tap> (clerk/with-viewers (clerk/add-viewers rule-30/viewers) rule-30/rule-30))) |
78 |
| - (tap> (clerk/with-viewers (clerk/add-viewers rule-30/viewers) rule-30/board)) |
79 |
| - (tap> (clerk/html [:h1 "Fin. 👋"])) |
| 76 | + (tap> (v/with-viewers (v/add-viewers rule-30/viewers) rule-30/rule-30))) |
| 77 | + (tap> (v/with-viewers (v/add-viewers rule-30/viewers) rule-30/board)) |
| 78 | + (tap> (v/html [:h1 "Fin. 👋"])) |
80 | 79 | (tap> (reduce (fn [acc _] (vector acc)) :fin (range 200)))
|
81 | 80 | (reset-taps!))
|
0 commit comments