    :starting-width (or (:starting-width props) 200)
    :as-text #(common/format-date % (:format props))})
 
+(declare initial-table-state render-table refresh-table-rows)
 
 ;; Table component with specifiable style and column behaviors.
 ;;

   (fn [{:keys [this]}]
     (.removeEventListener js/window "mousemove" (.-onMouseMoveHandler this))
     (.removeEventListener js/window "mouseup" (.-onMouseUpHandler this)))})

              (persistence/try-restore
               {:key (:state-key props)
                :validator (fn [stored-value] (= (set (keys stored-value)) persistence-keys))
                :initial #(initial-table-state props)}))))
   :render render-table
   :get-ordered-columns
   (fn [{:keys [state]}]
     (->> (:column-meta @state)
          (map (fn [{:keys [header] :as column-meta}]
                 (merge column-meta (get (:given-columns-by-header @state) header))))
          vec))
   :refresh-rows refresh-table-rows
   :component-did-mount
   (fn [{:keys [this state locals]}]
     (swap! locals assoc :initial-state (select-keys @state persistence-keys))
