austin icon indicating copy to clipboard operation
austin copied to clipboard

Add support for adding JS dependencies.

Open mattdeboard opened this issue 11 years ago • 1 comments

When using a browser-connected REPL for Om, I'd love to be able to invoke Om functions to investigate their outputs and so forth. However this would require having the React object from react.js avaliable in the page. The default HTML generated by send-repl-index however is pretty minimal (by design).

I can think of a few ways to accomplish this:

  • have some kind of additional config/hook in profiles.clj to specify additional URLs (http or file system) for libs to include;
  • read from :preamble and add the paths specified there as <script> tags;
  • same as above but just add those libs to the client.js

mattdeboard avatar Sep 19 '14 21:09 mattdeboard

I "hacked in" a manner of doing this with this here:

(extend-type js/HTMLCollection
  ISeqable
  (-seq [array] (array-seq array 0)))

;; Bootstrap the DOM in a browser-connected REPL so ReactJS is available
(defn repl-react-js
  "Add ReactJS to browser-connected REPl session."
  [] (let [head (first (. js/document (getElementsByTagName "head")))
           script (. js/document (createElement "script"))]
       (set! (.-type script) "text/javascript")
       (set! (.-src script) "http://fb.me/react-0.11.2.js")
       (. head (appendChild script))))

I'm sure it's super-naive but it worked.

mattdeboard avatar Sep 20 '14 00:09 mattdeboard