             [sablono.util :refer [normalize-element react-symbol]])
   (:import cljs.tagged_literals.JSValue))
 
-(defprotocol HtmlRenderer
-  (render-html [this] "Compile a Clojure data structure into a React fn call."))
+(defprotocol ICompile
+  (compile-react [this] "Compile a Clojure data structure into a React fn call."))
 
 (defprotocol IJSValue
   (to-js [x]))

  (.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]


(defmethod compile-element ::all-literal
  [element]
  (compile-react-element (eval element)))

(defmethod compile-element ::literal-tag-and-attributes
  [[tag attrs & content]]
