|
15 | 15 |
|
16 | 16 | :author "Bobby Calderwood and Alex Redington"}
|
17 | 17 | clojure.browser.repl
|
18 |
| - (:require [clojure.browser.net :as net] |
| 18 | + (:require [goog.dom :as gdom] |
| 19 | + [clojure.browser.net :as net] |
19 | 20 | [clojure.browser.event :as event]
|
20 | 21 | ;; repl-connection callback will receive goog.require('cljs.repl')
|
21 | 22 | ;; and monkey-patched require expects to be able to derive it
|
|
115 | 116 | "none")))
|
116 | 117 | ;; Monkey-patch goog.provide if running under optimizations :none - David
|
117 | 118 | (when-not js/COMPILED
|
118 |
| - (set! (.-provide__ js/goog) js/goog.provide) |
119 |
| - (set! (.-isProvided___ js/goog) js/goog.isProvided_) |
120 |
| - (set! (.-provide js/goog) |
121 |
| - (fn [name] |
122 |
| - (set! (.-isProvided_ js/goog) (fn [name] false)) |
123 |
| - (.provide__ js/goog name) |
124 |
| - (set! (.-isProvided_ js/goog) js/goog.isProvided___))) |
| 119 | + (set! (.-require__ js/goog) js/goog.require) |
| 120 | + ;; suppress useless Google Closure error about duplicate provides |
| 121 | + (set! (.-isProvided_ js/goog) (fn [name] false)) |
125 | 122 | (set! (.-writeScriptTag_ js/goog)
|
126 | 123 | (fn [src opt_sourceText]
|
127 |
| - (let [doc js/goog.global.document] |
128 |
| - (if (nil? opt_sourceText) |
129 |
| - (.write doc |
130 |
| - (str "<script type=\"text/javascript\" src=\"" src "\"></script>")) |
131 |
| - (.write doc |
132 |
| - (str "<script type=\"text/javascript\">" opt_sourceText "</script>"))))))))) |
| 124 | + (.appendChild js/document.body |
| 125 | + (as-> (.createElement js/document "script") script |
| 126 | + (doto script (aset "type" "text/javascript")) |
| 127 | + (if (nil? opt_sourceText) |
| 128 | + (doto script (aset "src" src)) |
| 129 | + (doto script (gdom/setTextContext opt_sourceText))))))) |
| 130 | + (set! (.-require js/goog) |
| 131 | + (fn [src reload] |
| 132 | + (when (= reload "reload-all") |
| 133 | + (set! (.-cljsReloadAll_ js/goog) true)) |
| 134 | + (let [reload? (or reload (.-cljsReloadAll__ js/goog))] |
| 135 | + (when reload? |
| 136 | + (let [path (aget js/goog.dependencies_.nameToPath src)] |
| 137 | + (js-delete js/goog.dependencies_.visited path) |
| 138 | + (js-delete js/goog.dependencies_.written |
| 139 | + (str js/goog.basePath path)))) |
| 140 | + (let [ret (.require__ js/goog src)] |
| 141 | + (when (= reload "reload-all") |
| 142 | + (set! (.-cljsReloadAll_ js/goog) false)) |
| 143 | + ret))))) |
| 144 | + repl-connection)) |
0 commit comments