|
6 | 6 | [nextjournal.clerk.viewer :as viewer]
|
7 | 7 | [nextjournal.markdown.transform :as md.transform]))
|
8 | 8 |
|
| 9 | +(clerk/eval-cljs |
| 10 | + '(defn handle-click [{:keys [label var ns]} e] |
| 11 | + (.stopPropagation e) |
| 12 | + (.preventDefault e) |
| 13 | + (when (resolve '!active-ns) |
| 14 | + (let [scroll-to-target (fn [] |
| 15 | + (if var |
| 16 | + (when-some [el (js/document.getElementById (name var))] |
| 17 | + (.scrollIntoView el)) |
| 18 | + (when ns |
| 19 | + (when-some [page (js/document.getElementById "main-column")] |
| 20 | + (.scroll page (applied-science.js-interop/obj :top 0))))))] |
| 21 | + (when ns |
| 22 | + (if (not= @!active-ns (str ns)) |
| 23 | + (do (reset! !active-ns (str ns)) |
| 24 | + ;; TODO: smarter |
| 25 | + (js/setTimeout scroll-to-target 500)) |
| 26 | + (scroll-to-target))))))) |
| 27 | + |
| 28 | +(clerk/eval-cljs |
| 29 | + '(defn render-link [{:as info :keys [label]} _] |
| 30 | + [:a {:href "#" :on-click (partial handle-click info)} label])) |
| 31 | + |
9 | 32 | (def render-input
|
10 | 33 | '(fn [!query]
|
11 | 34 | (nextjournal.clerk.render.hooks/use-effect
|
|
203 | 226 | (not (qualified-symbol? (symbol link))))
|
204 | 227 | (str @!active-ns "/"))))
|
205 | 228 |
|
206 |
| -^::clerk/no-cache |
207 |
| -(clerk/eval-cljs |
208 |
| - '(defn handle-click [{:keys [label var ns]} e] |
209 |
| - (js/console.log :handle-click/ns ns :var var) |
210 |
| - (.stopPropagation e) (.preventDefault e) |
211 |
| - (when (resolve '!active-ns) |
212 |
| - (let [scroll-to-target (fn [] |
213 |
| - (if var |
214 |
| - (when-some [el (js/document.getElementById (name var))] |
215 |
| - (.scrollIntoView el)) |
216 |
| - (when ns |
217 |
| - (when-some [page (js/document.getElementById "main-column")] |
218 |
| - (.scroll page (applied-science.js-interop/obj :top 0))))))] |
219 |
| - (when ns |
220 |
| - (if (not= @!active-ns (str ns)) |
221 |
| - (do (reset! !active-ns (str ns)) |
222 |
| - (js/setTimeout scroll-to-target 500)) ;; TODO: smarter |
223 |
| - (scroll-to-target))))))) |
224 |
| - |
225 |
| -^::clerk/no-cache |
226 |
| -(clerk/eval-cljs |
227 |
| - '(defn render-link [{:as info :keys [label]} _] |
228 |
| - [:a {:href "#" :on-click (partial handle-click info)} label])) |
229 |
| - |
230 | 229 | (def get-info
|
231 | 230 | (comp clerk/mark-presented
|
232 | 231 | (fn [wv]
|
|
242 | 241 |
|
243 | 242 | (def custom-markdown-viewers
|
244 | 243 | [{:name :nextjournal.markdown/internal-link
|
245 |
| - :render-fn 'render-link |
| 244 | + :render-fn 'nextjournal.clerk.doc/render-link |
246 | 245 | :transform-fn get-info}
|
247 | 246 | {:name :nextjournal.markdown/link
|
248 |
| - :render-fn 'render-link |
| 247 | + :render-fn 'nextjournal.clerk.doc/render-link |
249 | 248 | :transform-fn get-info}])
|
250 | 249 |
|
251 | 250 | (def markdown-viewer
|
|
0 commit comments