Skip to content

Commit 0ffc51d

Browse files
authored
Drop katex dep (#53)
1 parent 4a0073f commit 0ffc51d

File tree

9 files changed

+399
-37
lines changed

9 files changed

+399
-37
lines changed

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## Unreleased
44

5-
...
5+
* Make `katex` dependency optional by inlining copy of [markdown-it-texmath](https://github.com/goessner/markdown-it-texmath) (see [#15](https://github.com/nextjournal/markdown/issues/15))
66

77
## 0.7.186
88

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ A cross-platform clojure library for [Markdown](https://en.wikipedia.org/wiki/Ma
99
## Features
1010

1111
* _Focus on data_: parsing yields an AST ([à la Pandoc](https://nextjournal.github.io/markdown/notebooks/pandoc)) of nested data representing a structured document.
12-
* _Cross Platform_: using [commonmark-java](https://github.com/commonmark/commonmark-java) on the JVM and [markdown-it](https://github.com/markdown-it/markdown-it) for clojurescript
12+
* _Cross Platform_: using [commonmark-java](https://github.com/commonmark/commonmark-java) on the JVM and [markdown-it](https://github.com/markdown-it/markdown-it) for ClojureScript.
1313
* _Configurable [Hiccup](https://github.com/weavejester/hiccup) conversion_.
1414

1515
## Try

deps.edn

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
:aliases
1010
{:nextjournal/clerk
1111
{:extra-paths ["notebooks" "dev"]
12-
:extra-deps {io.github.nextjournal/clerk {:mvn/version "0.17.1102"
12+
:extra-deps {io.github.nextjournal/clerk {:git/sha "39b73a0acf0b29ff8fef70ff462f170c21026a3f"
13+
;; :mvn/version "0.17.1102"
1314
:exclusions [io.github.nextjournal/markdown]}}
1415
:jvm-opts ["-Dclojure.main.report=stderr"
1516
#_"-Dclerk.resource_manifest={\"/js/viewer.js\" \"js/viewer.js\"}"] ;;
@@ -28,7 +29,7 @@
2829
org.babashka/http-client {:mvn/version "0.3.11"}
2930
org.clojure/data.json {:mvn/version "2.4.0"}
3031
org.clojure/test.check {:mvn/version "1.1.1"}
31-
io.github.nextjournal/clerk {:git/sha "f4c5488e36c8df11fe352889544e7deb9af73cb7"
32+
io.github.nextjournal/clerk {:git/sha "39b73a0acf0b29ff8fef70ff462f170c21026a3f"
3233
:exclusions [io.github.nextjournal/markdown]}
3334
nubank/matcher-combinators {:mvn/version "3.8.3"}
3435
hiccup/hiccup {:mvn/version "2.0.0-RC5"}}}

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

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
"d3-require": "^1.2.4",
1919
"emoji-regex": "^10.0.0",
2020
"framer-motion": "^6.2.8",
21-
"katex": "^0.12.0",
2221
"lezer-clojure": "1.0.0-rc.0",
2322
"markdown-it": "^14.1.0",
2423
"markdown-it-block-image": "^0.0.3",

src/deps.cljs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
{:npm-deps
2-
{"katex" "^0.12.0"
3-
"markdown-it" "^14.1.0"
2+
{"markdown-it" "^14.1.0"
43
"markdown-it-block-image" "^0.0.3"
54
"markdown-it-footnote" "^3.0.3"
65
"markdown-it-texmath" "^1.0.0"

0 commit comments

Comments
 (0)