Skip to content

Commit 1cdfc77

Browse files
committed
Fix notebook
1 parent 3382fd3 commit 1cdfc77

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

dev/nextjournal/markdown/render.cljs

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
syntaxHighlighting]]
66
["@codemirror/state" :refer [EditorState]]
77
["@codemirror/view" :refer [EditorView keymap]]
8-
["katex" :as katex]
98
["react" :as react]
109
[clojure.string :as str]
1110
[nextjournal.clerk.render :as render]
@@ -76,33 +75,41 @@
7675
(react/isValidElement result) result
7776
:else [render/inspect result]))]]))
7877

79-
(def renderers
78+
(defn renderers [katex]
8079
(assoc md.transform/default-hiccup-renderers
8180
:code (fn [_ctx node] [clojure-editor {:doc (md.transform/->text node)}])
8281
:todo-item (fn [ctx {:as node :keys [attrs]}]
8382
(md.transform/into-markup [:li [:input {:type "checkbox" :default-checked (:checked attrs)}]] ctx node))
8483
:formula (fn [_ctx node]
85-
[:span {:dangerouslySetInnerHTML {:__html (.renderToString katex (md.transform/->text node))}}])
84+
[:span {:dangerouslySetInnerHTML (r/unsafe-html (.renderToString katex (md.transform/->text node)))}])
8685
:block-formula (fn [_ctx node]
87-
[:div {:dangerouslySetInnerHTML {:__html (.renderToString katex (md.transform/->text node) #js {:displayMode true})}}])))
86+
[:div {:dangerouslySetInnerHTML (r/unsafe-html (.renderToString katex (md.transform/->text node) #js {:displayMode true}))}])))
8887

8988
(defn inspect-expanded [x]
9089
(r/with-let [expanded-at (r/atom {:hover-path [] :prompt-multi-expand? false})]
9190
(render/inspect-presented {:!expanded-at expanded-at}
9291
(v/present x))))
9392

94-
(defn try-markdown [init-text]
95-
(let [text->state (fn [text]
93+
94+
95+
(defn try-markdown* [{:keys [init-text katex]}]
96+
(let [text->state (fn [katex text]
9697
(let [parsed (md/parse text)]
9798
{:parsed parsed
98-
:hiccup (nextjournal.markdown.transform/->hiccup renderers parsed)}))
99-
!state (hooks/use-state (text->state init-text))]
99+
:hiccup (nextjournal.markdown.transform/->hiccup (renderers katex) parsed)}))
100+
!state (hooks/use-state (text->state katex init-text))]
100101
[:div.grid.grid-cols-2.m-10
101102
[:div.m-2.p-2.text-xl.border-2.overflow-y-scroll.bg-slate-100 {:style {:height "20rem"}}
102-
[editor {:doc init-text :on-change #(reset! !state (text->state %)) :lang :markdown}]]
103+
[editor {:doc init-text :on-change #(reset! !state (text->state katex %)) :lang :markdown}]]
103104
[:div.m-2.p-2.font-medium.overflow-y-scroll {:style {:height "20rem"}}
104105
[inspect-expanded (:parsed @!state)]]
105106
[:div.m-2.p-2.overflow-x-scroll
106107
[inspect-expanded (:hiccup @!state)]]
107108
[:div.m-2.p-2.bg-slate-50.viewer-markdown
108109
[v/html (:hiccup @!state)]]]))
110+
111+
(defn try-markdown [init-text]
112+
(let [katex (hooks/use-d3-require "[email protected]")]
113+
(when katex
114+
[try-markdown* {:init-text init-text
115+
:katex katex}])))

0 commit comments

Comments
 (0)