       (apply
        dom/div nil
        (om/build-all row grid {:init-state state})))))
+
+(defn table-cell [ctx owner]
+  (reify
+    om/IRenderState
+    (render-state [this state]
+      (dom/td nil
+              (om/build editable-input ctx))
+  )))
+
+(defn table-row [row owner]
+  (reify
+    om/IRenderState
+    (render-state [this state]
+      (apply
+       dom/tr nil
+       (om/build-all table-cell row)))))
+
+(defn grid-table [grid owner]
+  (reify
+    om/IRenderState
+    (render-state [this state]
+      (dom/table #js {:className "grid-table"}
+                 (apply
+                  dom/tbody nil
+                  (om/build-all table-row grid)
+                  )
+                            ))
+    ))
+
+(defn design-view [app owner]
+  (reify
+    om/IRenderState
+    (render-state [this state]
+      (om/build grid-table (:grid app))
+      )))
 
 (defn status-bar [app owner]
   (reify


(defn hero-position [app]
  #js {:bottom (get-in app [:hero :position :bottom])
       :left (get-in app [:hero :position :left])})

(defn hero-feet-coords [position]
  (let [bottom (position :bottom)

      (dom/div #js {:className "status-bar"}
               (dom/span #js {:className "life"} (str "Leben: " (get-in app [:hero :life]) "%"))
               (dom/button #js {:onClick (fn [e] (do
                                                   (om/transact! app [:hero] (fn [_] default-hero))
                                                   (.. js/document (querySelector ".grid") (focus))
                                                   false))
                                }
