        (filter #(string/blank? ((keyword (:name %)) outputs))
                (:outputs inputs-outputs))))
    :-add-default-outputs
-   (fn [{:keys [props state this]}]
+   (fn [{:keys [after-update props locals state this]}]
      (let [{:keys [begin-editing]} props
-           {:keys [outputs editing?]} @state
+           {:keys [editing?]} @state
            new-outputs (->> (this :-get-defaultable-outputs)
                             (map (fn [{:keys [name]}] [(keyword name) (str "this." (-> name (string/split ".") last))]))
-                            (into {})
-                            (merge outputs))]
+                            (into {}))]
        (when-not editing? (begin-editing))
+       (after-update #(doseq [[k v] (vec new-outputs)] ((k @locals) :set-value v)))
        (swap! state update :outputs merge new-outputs)))
    :component-will-mount
    (fn [{:keys [props state]}]
      (swap! state utils/deep-merge (:values props)))
    :render
-   (fn [{:keys [props state this]}]
+   (fn [{:keys [after-update locals props state this]}]
      (let [{:keys [default-hidden? entity-type? style can-edit? begin-editing]} props
            {:keys [editing?]} @state
            id (gensym "io-table-")]

                                    [:div {:style (clip table-style/default-cell-left)}
                                     (if editing?
                                       [Autosuggest
                                        {:key name
                                         :value value
                                         :caching? false
                                         :data data
                                         :shouldRenderSuggestions (constantly true)
                                         :inputProps {:data-test-id (str name "-text-input")

                          (let [uploaded-inputs (utils/parse-json-string file-contents true)
                                new-inputs (merge (:inputs @state) uploaded-inputs)]
                            (when-not editing? (begin-editing))
                            (after-update #(doseq [[k v] (vec new-inputs)] ((k @locals) :set-value v)))
                            (swap! state assoc :inputs new-inputs)
                            (swap! state dissoc :show-upload?)))}]]}])
        [Collapse {:title "Inputs"
