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 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])
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