File tree 2 files changed +29
-1
lines changed 2 files changed +29
-1
lines changed Original file line number Diff line number Diff line change 196
196
197
197
#_(deref nextjournal.clerk.webserver/!doc)
198
198
199
+ (defn resolve-internal-link [link]
200
+ (viewer/resolve-internal-link (cond->> link
201
+ (and (not (qualified-symbol? (symbol link))) @!active-ns)
202
+ (str @!active-ns " /" ))))
203
+
204
+ (def custom-markdown-viewers
205
+ [{:name :nextjournal.markdown/internal-link
206
+ :transform-fn (comp clerk/mark-presented
207
+ (fn [wv]
208
+ (when-some [info (-> wv :nextjournal/value :text resolve-internal-link)]
209
+ (-> info
210
+ (viewer/update-if :var symbol)
211
+ (viewer/update-if :ns ns-name)))))
212
+ :render-fn '(fn [{:keys [var ns ]} _]
213
+ [:a {:href (str " #" var)
214
+ :on-click (fn [e] (.stopPropagation e) (.preventDefault e)
215
+ (when (and var ns )
216
+ (let [scroll-to-target #(when-some [el (js/document.getElementById (name var))]
217
+ (.scrollIntoView el))]
218
+ (if (not= @!active-ns (str ns ))
219
+ (do (reset! !active-ns (str ns ))
220
+ (js/setTimeout scroll-to-target 500 )) ; ; TODO: smarter
221
+ (scroll-to-target )))))} (str var)])}])
222
+
223
+ (def custom-internal-links
224
+ (update viewer/markdown-viewer :add-viewers viewer/add-viewers custom-markdown-viewers))
225
+
226
+ (viewer/add-viewers! [custom-internal-links])
Original file line number Diff line number Diff line change 1333
1333
hide-result-viewer])
1334
1334
1335
1335
(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]]. " }
1337
1337
!viewers
1338
1338
(#?(:clj atom :cljs ratom/atom) {}))
1339
1339
You can’t perform that action at this time.
0 commit comments