            (assoc attrs :className)
            (to-js)))))
 
-(defn render-element
+(defn compile-react-element
   "Render an element vector as a HTML element."
   [element]
   (let [[tag attrs content] (normalize-element element)]
     (if content
-      `(~(react-symbol tag) ~(compile-attrs attrs) ~@(render-html content))
+      `(~(react-symbol tag) ~(compile-attrs attrs) ~@(compile-react content))
       `(~(react-symbol tag) ~(compile-attrs attrs)))))
 
 (defn- unevaluated?

  (.write w "#js ")
  (.write w (pr-str (.val v))))

(defn- render-seq [s]
  (into-array (map render-html s)))

(extend-protocol HtmlRenderer
  clojure.lang.IPersistentVector
  (render-html [this]
    (render-element this))
  clojure.lang.ISeq
  (render-html [this]
    (map render-html this))
  Object
  (render-html [this]
    this)
  nil
  (render-html [this]
    nil))

(defn- to-js-map [x]

            [sablono.util :refer [normalize-element react-symbol]])
  (:import cljs.tagged_literals.JSValue))

(defprotocol ICompile
  (compile-react [this] "Compile a Clojure data structure into a React fn call."))

(defprotocol IJSValue
  (to-js [x]))
