File tree Expand file tree Collapse file tree 2 files changed +29
-1
lines changed Expand file tree Collapse file tree 2 files changed +29
-1
lines changed Original file line number Diff line number Diff line change 196196
197197#_(deref nextjournal.clerk.webserver/!doc)
198198
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 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
You can’t perform that action at this time.
0 commit comments