 ; -------------------------------------------------------------------
 
 (defn on-prog-frame-focus [prog-frame]
-  (let [[addrs h] (cbfg.world.net/render-net-html (:net prog-frame) {})]
-    (set-el-innerHTML "net-hover" (apply str (flatten h)))
-    (.add gdom/classes (gdom/getElement "net-container") "hover")))
+  (render-net "net-hover" (:net prog-frame) {})
+  (.add gdom/classes (gdom/getElement "net-container") "hover"))
 
 (defn on-prog-frame-blur []
   (set-el-innerHTML "net-hover" "")

    (ago-restore (actx-agw (:world @prog-base)) ago-ss)
    (reset! prog-curr prog-frame)
    (swap! prog-evts #(vec (filter (fn [[s & _]] (<= s ts)) %)))
    (swap! prog-ss #(into {} (filter (fn [[s _]] (<= s ts)) %)))))

; -------------------------------------------------------------------


                     :reqs    {}   ; { opaque-ts => [req, [[reply-ts reply] ...] }.
                     :net     {}}) ; The :loop-state of the net-actx.
  (reset! prog-evts []))

; ------------------------------------------------

(defn render-net [target-el-id net prev-addrs]
  (let [[addrs h] (cbfg.world.net/render-net-html net prev-addrs)]
    (set-el-innerHTML target-el-id (apply str (flatten h)))
    addrs))

; -------------------------------------------------------------------

