Created
September 20, 2014 00:39
-
-
Save mattdeboard/e4e49fd5bada14d0f1da to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns chestnut.core | |
(:require [clojure.browser.repl] | |
[om.core :as om :include-macros true] | |
[om.dom :as dom :include-macros true] | |
[figwheel.client :as fw :include-macros true])) | |
(enable-console-print!) | |
(defonce app-state (atom {:text "Hello world!"})) | |
(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)))) | |
(defn app-div [app owner] | |
(reify | |
om/IRender | |
(render [this] | |
(dom/div #js {:id "app" :key "app"} nil)))) | |
(defn repl-app-div | |
"Add app div to target with `om/root'." | |
[] (let [body js/document.body | |
app-div (. js/document (createElement "div"))] | |
(set! (.-id app-div) "app") | |
(. body (appendChild app-div)))) | |
(om/root | |
(fn [app owner] | |
(reify | |
om/IRender | |
(render [_] | |
(dom/h1 nil (:text app))))) | |
app-state | |
{:target js/document.body}) | |
(fw/watch-and-reload | |
:websocket-url "ws://localhost:3449/figwheel-ws" | |
:jsload-callback (fn [] (print "reloaded"))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment