        [:p "Here's an example: "]
 
        [demo-component {:comp name-list
-                        :src (s/src-of [:app-state
-                                        :people
-                                        :person-keys
-                                        :person
-                                        :name-comp
-                                        :name-list])}]
+                        :src [:pre ns-src
+                              (s/src-of [:app-state
+                                         :people
+                                         :person-keys
+                                         :person
+                                         :name-comp
+                                         :name-list])]}]
 
        [:p "Here, the " [:code "name-list"] " component will only be
        re-rendered if the keys of the " [:code ":people"] " map

        function, consisting of a trivial application
        of "[:code "rswap!"]" and some optional logging. This is the
        only place where application state actually changes – the rest
        is pure functions all the way."]

        [:p "The actual event handling is done
        in "[:code "event-handler"]", which takes state and event as


(defn cursor-example []
  (let [first-person (r/cursor app-state [:people 1])]
    [:p "A person: " (:name @first-person)]))


