Skip to content

Commit 12d42ad

Browse files
committed
First take at wikilink interations
1 parent c3a2cba commit 12d42ad

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

src/nextjournal/clerk/doc.clj

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,3 +195,31 @@
195195

196196
#_(deref nextjournal.clerk.webserver/!doc)
197197

198+
(defn resolve-internal-link [link]
199+
(viewer/resolve-internal-link (cond->> link
200+
(and (not (qualified-symbol? (symbol link))) @!active-ns)
201+
(str @!active-ns "/"))))
202+
203+
(def custom-markdown-viewers
204+
[{:name :nextjournal.markdown/internal-link
205+
:transform-fn (comp clerk/mark-presented
206+
(fn [wv]
207+
(when-some [info (-> wv :nextjournal/value :text resolve-internal-link)]
208+
(-> info
209+
(viewer/update-if :var symbol)
210+
(viewer/update-if :ns ns-name)))))
211+
:render-fn '(fn [{:keys [var ns]} _]
212+
[:a {:href (str "#" var)
213+
:on-click (fn [e] (.stopPropagation e) (.preventDefault e)
214+
(when (and var ns)
215+
(let [scroll-to-target #(when-some [el (js/document.getElementById (name var))]
216+
(.scrollIntoView el))]
217+
(if (not= @!active-ns (str ns))
218+
(do (reset! !active-ns (str ns))
219+
(js/setTimeout scroll-to-target 500)) ;; TODO: smarter
220+
(scroll-to-target)))))} (str var)])}])
221+
222+
(def custom-internal-links
223+
(update viewer/markdown-viewer :add-viewers viewer/add-viewers custom-markdown-viewers))
224+
225+
(viewer/add-viewers! [custom-internal-links])

src/nextjournal/clerk/viewer.cljc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1333,7 +1333,7 @@
13331333
hide-result-viewer])
13341334

13351335
(defonce
1336-
^{:doc "atom containing a map of and per-namespace viewers or `:defaults` overridden viewers."}
1336+
^{:doc "atom containing a map of and per-namespace viewers or `:defaults` overridden viewers. See also [[get-default-viewers]]."}
13371337
!viewers
13381338
(#?(:clj atom :cljs ratom/atom) {}))
13391339

0 commit comments

Comments
 (0)