       (go
         (if (<! (accept-drop! target state pages target-idx))
           (do
-            (println "Target saved. Removing from source...")
-            (<! (remove-pages! source state page-ids))
+            ;; TODO: Handle copy instead of move
+            (println "Target saved.")
+            (when-not copy?
+              (println "Removing from source...")
+              (<! (remove-pages! source state page-ids)))
             (println "Drop saved!"))
           (js/console.warn "`accept-drop!' returned non-truthy value. Aborting drop."))))))
 

                   :on-drop (fn [e]
                              (println "[new-document-ui] on-drop")
                              (let [source-column (get-transfer-data e "application/x-pepa-column")
                                    page-ids (get-transfer-data e "application/x-pepa-pages")]
                                ;; Delegate to `inbox'
                                (handle-drop! (:id column)
                                              source-column
                                              page-ids
                                              0)))}
     [:header nil]
     [:.center
      "Drag pages here or press \"Open\" to open a document"

            [pepa.components.page :as page]

            [cljs.reader :refer [read-string]]
            [goog.string :as gstring]
            goog.events.KeyCodes)
  (:require-macros [cljs.core.async.macros :refer [go go-loop]]
                   [cljs.core.match.macros :refer [match]])
  (:import [cljs.core.ExceptionInfo]
