feat(paste): toggle between pasting text or file when they both exist (#7198)

* feat(paste): toggle between pasting text or file when they both exist
pull/7279/head
situ2001 2022-11-09 11:15:41 +08:00 committed by GitHub
parent e326e39576
commit 1a216aa1aa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 44 additions and 23 deletions

View File

@ -346,6 +346,12 @@
logical-outdenting? logical-outdenting?
config-handler/toggle-logical-outdenting!)) config-handler/toggle-logical-outdenting!))
(defn perferred-pasting-file [t perferred-pasting-file?]
(toggle "preferred_pasting_file"
(t :settings-page/preferred-pasting-file)
perferred-pasting-file?
config-handler/toggle-perferred-pasting-file!))
(defn tooltip-row [t enable-tooltip?] (defn tooltip-row [t enable-tooltip?]
(toggle "enable_tooltip" (toggle "enable_tooltip"
(t :settings-page/enable-tooltip) (t :settings-page/enable-tooltip)
@ -555,6 +561,7 @@
enable-timetracking? (state/enable-timetracking?) enable-timetracking? (state/enable-timetracking?)
enable-all-pages-public? (state/all-pages-public?) enable-all-pages-public? (state/all-pages-public?)
logical-outdenting? (state/logical-outdenting?) logical-outdenting? (state/logical-outdenting?)
perferred-pasting-file? (state/perferred-pasting-file?)
enable-tooltip? (state/enable-tooltip?) enable-tooltip? (state/enable-tooltip?)
enable-shortcut-tooltip? (state/sub :ui/shortcut-tooltip?) enable-shortcut-tooltip? (state/sub :ui/shortcut-tooltip?)
show-brackets? (state/show-brackets?) show-brackets? (state/show-brackets?)
@ -568,6 +575,7 @@
(show-brackets-row t show-brackets?) (show-brackets-row t show-brackets?)
(when (util/electron?) (switch-spell-check-row t)) (when (util/electron?) (switch-spell-check-row t))
(outdenting-row t logical-outdenting?) (outdenting-row t logical-outdenting?)
(perferred-pasting-file t perferred-pasting-file?)
(when-not (or (util/mobile?) (mobile-util/native-platform?)) (when-not (or (util/mobile?) (mobile-util/native-platform?))
(shortcut-tooltip-row t enable-shortcut-tooltip?)) (shortcut-tooltip-row t enable-shortcut-tooltip?))
(when-not (or (util/mobile?) (mobile-util/native-platform?)) (when-not (or (util/mobile?) (mobile-util/native-platform?))

View File

@ -213,6 +213,7 @@
:settings-page/custom-date-format "Preferred date format" :settings-page/custom-date-format "Preferred date format"
:settings-page/preferred-file-format "Preferred file format" :settings-page/preferred-file-format "Preferred file format"
:settings-page/preferred-workflow "Preferred workflow" :settings-page/preferred-workflow "Preferred workflow"
:settings-page/preferred-pasting-file "Preferred pasting file"
:settings-page/enable-shortcut-tooltip "Enable shortcut tooltip" :settings-page/enable-shortcut-tooltip "Enable shortcut tooltip"
:settings-page/enable-timetracking "Timetracking" :settings-page/enable-timetracking "Timetracking"
:settings-page/enable-tooltip "Tooltips" :settings-page/enable-tooltip "Tooltips"

View File

@ -47,3 +47,7 @@
(defn toggle-ui-enable-tooltip! [] (defn toggle-ui-enable-tooltip! []
(let [enable-tooltip? (state/enable-tooltip?)] (let [enable-tooltip? (state/enable-tooltip?)]
(set-config! :ui/enable-tooltip? (not enable-tooltip?)))) (set-config! :ui/enable-tooltip? (not enable-tooltip?))))
(defn toggle-perferred-pasting-file! []
(let [perferred-pasting-file? (state/perferred-pasting-file?)]
(set-config! :editor/perferred-pasting-file? (not perferred-pasting-file?))))

View File

@ -178,26 +178,30 @@
(state/set-state! :editor/on-paste? true) (state/set-state! :editor/on-paste? true)
(let [input (state/get-input)] (let [input (state/get-input)]
(if raw-paste? (if raw-paste?
(utils/getClipText (utils/getClipText
(fn [clipboard-data] (fn [clipboard-data]
(when-let [_ (state/get-input)] (when-let [_ (state/get-input)]
(let [text (or (when (gp-util/url? clipboard-data) (let [text (or (when (gp-util/url? clipboard-data)
(wrap-macro-url clipboard-data)) (wrap-macro-url clipboard-data))
clipboard-data)] clipboard-data)]
(paste-text-or-blocks-aux input e text nil)))) (paste-text-or-blocks-aux input e text nil))))
(fn [error] (fn [error]
(js/console.error error))) (js/console.error error)))
(let [clipboard-data (gobj/get e "clipboardData") (let [clipboard-data (gobj/get e "clipboardData")
html (when-not raw-paste? (.getData clipboard-data "text/html")) html (when-not raw-paste? (.getData clipboard-data "text/html"))
text (.getData clipboard-data "text")] text (.getData clipboard-data "text")
(if-not (and (string/blank? text) (string/blank? html)) files (.-files clipboard-data)
(paste-text-or-blocks-aux input e text html) paste-file-if-exiist (fn []
(when id (when id
(let [_handled (let [_handled
(let [clipboard-data (gobj/get e "clipboardData") (let [clipboard-data (gobj/get e "clipboardData")
files (.-files clipboard-data)] files (.-files clipboard-data)]
(when-let [file (first files)] (when-let [file (first files)]
(when-let [block (state/get-edit-block)] (when-let [block (state/get-edit-block)]
(editor-handler/upload-asset id #js[file] (:block/format block) (editor-handler/upload-asset id #js[file] (:block/format block)
editor-handler/*asset-uploading? true))))] editor-handler/*asset-uploading? true))))]
(util/stop e)))))))))) (util/stop e))))]
(cond
(and (string/blank? text) (string/blank? html)) (paste-file-if-exiist)
(and (seq files) (state/perferred-pasting-file?)) (paste-file-if-exiist)
:else (paste-text-or-blocks-aux input e text html))))))))

View File

@ -649,6 +649,10 @@ Similar to re-frame subscriptions"
[] []
(:editor/logical-outdenting? (sub-config))) (:editor/logical-outdenting? (sub-config)))
(defn perferred-pasting-file?
[]
(:editor/perferred-pasting-file? (sub-config)))
(defn doc-mode-enter-for-new-line? (defn doc-mode-enter-for-new-line?
[] []
(and (document-mode?) (and (document-mode?)