 ;; transient docs
 ;;**********************************************************
 
-(defui open-input [this]
-  [:input {:type "file"}]
-  :change (fn []
-            (this-as me
-                     (when-not (empty? (dom/val me))
-                       (object/raise this :open! (dom/val me))))))
+(defn open-input [this & [ev dir?]]
+  (ipc/call this (or ev :open!)
+            :dialog.showOpenDialog ipc/win {:properties [(if dir? :openDirectory :openFile)
+                                                         :multiSelections]}))
 
 (defn save-input [this path]
   (ipc/call this :save-as!

(cmd/command {:command :open-file
              :desc "File: Open file"
              :exec (fn []
                      (dialogs/file opener :open!))})

(cmd/command {:command :open-path
              :desc "File: Open path"

          :reaction (fn [this bool]
                      (object/merge! this {:open-linked-doc bool})))

(behavior ::open-dialog
          :triggers #{:open-dialog!}
          :reaction (fn [opener paths]
                      (doseq [path paths :when path]
                        (object/raise opener :open! path))))

(behavior ::open-standard-editor
                  :triggers #{:open!}
                  :reaction (fn [obj path]
