codemirror

This commit is contained in:
Michiel Borkent 2022-10-10 14:44:10 +02:00
parent 7eec6ef0aa
commit 5cd791e09f

View file

@ -2,7 +2,7 @@
<head> <head>
<script async src="https://ga.jspm.io/npm:es-module-shims@1.6.1/dist/es-module-shims.js"></script> <script async src="https://ga.jspm.io/npm:es-module-shims@1.6.1/dist/es-module-shims.js"></script>
<script src="https://cdn.jsdelivr.net/npm/scittle@0.3.10/dist/scittle.js"></script> <script src="https://cdn.jsdelivr.net/npm/scittle@0.3.10/dist/scittle.js"></script>
<script>scittle.core.disable_auto_eval(); console.log('yolo!')</script> <script>scittle.core.disable_auto_eval();</script>
<script src="https://unpkg.com/react@17/umd/react.production.min.js"></script> <script src="https://unpkg.com/react@17/umd/react.production.min.js"></script>
<script src="https://unpkg.com/react-dom@17/umd/react-dom.production.min.js"></script> <script src="https://unpkg.com/react-dom@17/umd/react-dom.production.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/scittle@0.3.10/dist/scittle.reagent.js"> </script> <script src="https://cdn.jsdelivr.net/npm/scittle@0.3.10/dist/scittle.reagent.js"> </script>
@ -31,28 +31,18 @@
<script type="module" type="application/javascript"> <script type="module" type="application/javascript">
globalThis.cm = await import('codemirror'); globalThis.cm = await import('codemirror');
globalThis.lc = await import('@nextjournal/lang-clojure'); globalThis.lc = await import('@nextjournal/lang-clojure');
globalThis.cv = await import('@codemirror/view');
globalThis.cs = await import('@codemirror/state')
scittle.core.eval_script_tags(); scittle.core.eval_script_tags();
</script> </script>
<script type="application/x-scittle"> <script type="application/x-scittle" src="codemirror.cljs"></script>
(require (quote [clojure.string :as str]))
(def cm
(let [doc (str/trim "
(defn foo [x] (js/alert x))
(foo \"hello\")")]
(js/cm.EditorView. #js {:doc doc
:extensions #js [js/cm.basicSetup, (js/lc.clojure)]
:parent (js/document.querySelector "#app")
})))
(set! (.-cm_instance js/globalThis) cm)
(defn eval-me []
(load-string (-> cm .-state .-doc .toString)))
(set! (.-eval_me js/globalThis) eval-me)
</script>
</head> </head>
<body> <body>
<div id="app"> <div id="app">
</div> </div>
<button onClick="eval_me()">Eval</button> <div id="reagent">
</div>
<button id="evalMe" onClick="eval_me()">Eval</button>
</body> </body>
</html> </html>