Skip to content

Commit 25cf8b6

Browse files
Naming: close-window, close-all-windows, ::clerk/taps; use clerk-eval to close
1 parent 34fc068 commit 25cf8b6

File tree

6 files changed

+59
-20
lines changed

6 files changed

+59
-20
lines changed

notebooks/tap_window.clj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
#_(clerk/window! :my-window (clerk/html [:div.w-8.h-8.bg-green-500]))
1010

1111
#_(comment
12-
(clerk/destroy-window! :my-window)
13-
(clerk/destroy-all-windows!)
14-
(clerk/window! ::window/taps)
12+
(clerk/close-window! :my-window)
13+
(clerk/close-all-windows!)
14+
(clerk/window! ::clerk/taps)
1515
(tap> (clerk/html [:div.w-8.h-8.bg-green-500]))
1616
(tap> (clerk/plotly {:data [{:x [1 2 3 4]}]}))
1717
(tap/reset-taps!))

scratch_window.clj

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
;; # 🪲Debug
2+
(ns scratch-window
3+
{:nextjournal.clerk/visibility {:code :hide :result :hide}
4+
:nextjournal.clerk/no-cache true}
5+
(:require [nextjournal.clerk :as clerk]
6+
[nextjournal.clerk.viewer :as v]))
7+
8+
(def window-viewer
9+
{:render-fn '(fn [{:keys [vals]} opts]
10+
[nextjournal.clerk.render.window/show
11+
(into [:div]
12+
(map (fn [v]
13+
[:div.mb-4.pb-4.border-b
14+
[nextjournal.clerk.render/inspect-presented v]]))
15+
(:nextjournal/value vals))])
16+
:transform-fn v/mark-preserve-keys})
17+
18+
(defonce !taps (atom '()))
19+
20+
(defonce taps-setup (add-tap (fn [x]
21+
(swap! !taps conj x)
22+
(clerk/recompute!))))
23+
24+
^{::clerk/visibility {:result :show}}
25+
(clerk/with-viewer window-viewer
26+
{:vals @!taps})
27+
28+
(comment
29+
(tap> (clerk/html [:div.w-8.h-8.bg-green-500]))
30+
(tap> (clerk/plotly {:data [{:x [1 2 3 4]}]})))
31+
32+
(clerk/window! ::clerk/taps)
33+
(clerk/destroy-window ::clerk/taps)
34+
(clerk/list-windows)
35+
36+
(clerk/window! :test (range 100))

src/nextjournal/clerk.clj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@
7171
#_(show! (java.io.StringReader. ";; # In Memory Notebook 👋\n(+ 41 1)"))
7272

7373
(defn window! "todo" [& args] (apply (requiring-resolve 'nextjournal.clerk.window/open!) args))
74-
(defn destroy-window! "todo" [id] ((requiring-resolve 'nextjournal.clerk.window/destroy!) id))
75-
(defn destroy-all-windows! "todo" [] ((requiring-resolve 'nextjournal.clerk.window/destroy-all!)))
74+
(defn close-window! "todo" [id] ((requiring-resolve 'nextjournal.clerk.window/close!) id))
75+
(defn close-all-windows! "todo" [] ((requiring-resolve 'nextjournal.clerk.window/close-all!)))
7676

7777
(defn recompute!
7878
"Recomputes the currently visible doc, without parsing it."

src/nextjournal/clerk/render.cljs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -600,6 +600,8 @@
600600
(swap! !state update :desc viewer/merge-presentations more fetch-opts))))}
601601
[inspect-presented (:desc @!state)]]))
602602

603+
(declare clerk-eval)
604+
603605
(defn root []
604606
[:<>
605607
[inspect-presented @!doc]
@@ -616,7 +618,7 @@
616618
[window/show
617619
[render-result state {}]
618620
(-> state
619-
(assoc :id id :on-close #(swap! !windows dissoc id))
621+
(assoc :id id :on-close #(clerk-eval `(nextjournal.clerk.window/close! ~id)))
620622
(dissoc :nextjournal/presented))]))
621623
@!windows)])
622624

@@ -711,13 +713,13 @@
711713
(js/console.warn :process-eval-reply!/not-found :eval-id eval-id :keys (keys @!pending-clerk-eval-replies))))
712714

713715
(defn set-window-state! [{:keys [id state]}] (swap! !windows assoc id state))
714-
(defn destroy-window! [{:keys [id]}] (swap! !windows dissoc id))
716+
(defn close-window! [{:keys [id]}] (swap! !windows dissoc id))
715717

716718
(defn ^:export dispatch [{:as msg :keys [type]}]
717719
(let [dispatch-fn (get {:patch-state! patch-state!
718720
:set-state! set-state!
719721
:set-window-state! set-window-state!
720-
:destroy-window! destroy-window!
722+
:close-window! close-window!
721723
:eval-reply process-eval-reply!}
722724
type
723725
(fn [_]

src/nextjournal/clerk/webserver.clj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,9 +197,9 @@
197197
(swap! !windows assoc id state)
198198
(broadcast! {:type :set-window-state! :id id :state state}))
199199

200-
(defn destroy-window! [id]
200+
(defn close-window! [id]
201201
(swap! !windows dissoc id)
202-
(broadcast! {:type :destroy-window! :id id}))
202+
(broadcast! {:type :close-window! :id id}))
203203

204204

205205
(defn broadcast-status! [status]

src/nextjournal/clerk/window.clj

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
(ns nextjournal.clerk.window
2-
(:require [nextjournal.clerk.tap :as tap]
2+
(:require [nextjournal.clerk :as clerk]
3+
[nextjournal.clerk.tap :as tap]
34
[nextjournal.clerk.viewer :as v]
45
[nextjournal.clerk.webserver :as webserver]))
56

@@ -33,7 +34,7 @@
3334
(defn open!
3435
([id]
3536
(case id
36-
::taps (open! id {:title "🚰 Taps" :css-class "p-0 relative overflow-auto"}
37+
::clerk/taps (open! id {:title "🚰 Taps" :css-class "p-0 relative overflow-auto"}
3738
(v/with-viewers (v/add-viewers [tap/tap-viewer])
3839
(v/with-viewer taps-viewer {:nextjournal/opts {:taps-view @!taps-view}}
3940
@tap/!taps)))))
@@ -45,23 +46,23 @@
4546
:nextjournal/fetch-opts {:blob-id (str id)}
4647
:nextjournal/blob-id (str id)}))))
4748

48-
(add-watch tap/!taps ::tap-watcher (fn [_ _ _ _] (open! ::taps)))
49+
(add-watch tap/!taps ::tap-watcher (fn [_ _ _ _] (open! ::clerk/taps)))
4950

50-
(defn destroy! [id] (webserver/destroy-window! id))
51+
(defn close! [id] (webserver/close-window! id))
5152

52-
(defn destroy-all! []
53+
(defn close-all! []
5354
(doseq [w (keys @webserver/!windows)]
54-
(destroy! w)))
55+
(close! w)))
5556

56-
#_(open! ::taps)
57+
#_(open! ::clerk/taps)
5758
#_(doseq [f @@(resolve 'clojure.core/tapset)] (remove-tap f))
5859
#_(tap> (range 30))
59-
#_(destroy! ::taps)
60+
#_(close! ::clerk/taps)
6061
#_(tap> (v/plotly {:data [{:y [1 2 3]}]}))
6162
#_(tap> (v/table [[1 2] [3 4]]))
6263
#_(open! ::my-window {:title "🔭 Rear Window"} (v/table [[1 2] [3 4]]))
6364
#_(open! ::my-window {:title "🔭 Rear Window"} (range 30))
6465
#_(open! ::my-window {:title "🔭 Rear Window"} (v/plotly {:data [{:y [1 2 3]}]}))
6566
#_(open! ::my-window-2 {:title "🪟"} (range 100))
66-
#_(destroy! ::my-window)
67-
#_(destroy-all!)
67+
#_(close! ::my-window)
68+
#_(close-all!)

0 commit comments

Comments
 (0)