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