                :value       @val
                :style       {:margin 7}
                :auto-focus  true
-               :on-change   #(reset! val (-> % .-target .-value))
+               :on-change   #(do (reset! val (-> % .-target .-value))
+                                 (on-change %))
                :on-key-down #(case (.-which %)
                                13 (do
                                     (save)

            filter-msg           (if (and (str/blank? @filter-input) (str/blank? @slower-than-ms))
                                   (str "Filter " (count @traces) " events: ")
                                   (str "Filtering " (count showing-traces) " of " (count @traces) " events:"))
            padding              {:padding "0px 5px 0px 5px"}]
        [:div
         {:style {:padding "10px"}}
         [:h1 "TRACES"]
         [:span filter-msg [:button {:on-click #(do (trace/reset-tracing!) (reset! traces []))} " Clear traces"]] [:br]
         [:span "Filter events " [search-input {:value @filter-input
                                                :on-save (fn [query]
                                                           (do
                                                             (reset! filter-input "")
                                                             (swap! filter-items conj {:id (random-uuid)
                                                                                       :query (str/lower-case query)
                                                                                       :filter-type "contains"})))}]
          [:button "+"]
          ;; [:button {:style {:background "#aae0ec"
          ;;                   :padding 7
          ;;                   :margin 5}}
          ;;  "-"]]
          [:br]]
         [:div.filter-items
          (for [item @filter-items]
            ^{:key (:id item)}
            [:span [:div.filter-item {:style {:paddingLeft 90}} (:query item)
                    [:button {:on-click (fn [event] (swap! filter-items #(remove (comp (partial = (:query item)) :query) %)))}
                     "-"]]])]

         [:table
          {:cell-spacing "0" :width "100%"}
          [:thead>tr


(defn render-traces []
  (let [filter-input     (r/atom "")
        filter-items     (r/atom [])
        slower-than-ms   (r/atom "")
        slower-than-bold (r/atom "")
        filter-type      (r/atom "contains")]
    (fn []
      (let [slower-than-ms-int   (js/parseInt @slower-than-ms)
            slower-than-bold-int (js/parseInt @slower-than-bold)
