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?
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?]
(toggle "enable_tooltip"
(t :settings-page/enable-tooltip)
@ -555,6 +561,7 @@
enable-timetracking? (state/enable-timetracking?)
enable-all-pages-public? (state/all-pages-public?)
logical-outdenting? (state/logical-outdenting?)
perferred-pasting-file? (state/perferred-pasting-file?)
enable-tooltip? (state/enable-tooltip?)
enable-shortcut-tooltip? (state/sub :ui/shortcut-tooltip?)
show-brackets? (state/show-brackets?)
@ -568,6 +575,7 @@
(show-brackets-row t show-brackets?)
(when (util/electron?) (switch-spell-check-row t))
(outdenting-row t logical-outdenting?)
(perferred-pasting-file t perferred-pasting-file?)
(when-not (or (util/mobile?) (mobile-util/native-platform?))
(shortcut-tooltip-row t enable-shortcut-tooltip?))
(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/preferred-file-format "Preferred file format"
: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-timetracking "Timetracking"
:settings-page/enable-tooltip "Tooltips"

View File

@ -47,3 +47,7 @@
(defn toggle-ui-enable-tooltip! []
(let [enable-tooltip? (state/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)
(let [input (state/get-input)]
(if raw-paste?
(utils/getClipText
(fn [clipboard-data]
(when-let [_ (state/get-input)]
(let [text (or (when (gp-util/url? clipboard-data)
(wrap-macro-url clipboard-data))
clipboard-data)]
(paste-text-or-blocks-aux input e text nil))))
(fn [error]
(js/console.error error)))
(let [clipboard-data (gobj/get e "clipboardData")
html (when-not raw-paste? (.getData clipboard-data "text/html"))
text (.getData clipboard-data "text")]
(if-not (and (string/blank? text) (string/blank? html))
(paste-text-or-blocks-aux input e text html)
(when id
(let [_handled
(let [clipboard-data (gobj/get e "clipboardData")
files (.-files clipboard-data)]
(when-let [file (first files)]
(when-let [block (state/get-edit-block)]
(editor-handler/upload-asset id #js[file] (:block/format block)
editor-handler/*asset-uploading? true))))]
(util/stop e))))))))))
(utils/getClipText
(fn [clipboard-data]
(when-let [_ (state/get-input)]
(let [text (or (when (gp-util/url? clipboard-data)
(wrap-macro-url clipboard-data))
clipboard-data)]
(paste-text-or-blocks-aux input e text nil))))
(fn [error]
(js/console.error error)))
(let [clipboard-data (gobj/get e "clipboardData")
html (when-not raw-paste? (.getData clipboard-data "text/html"))
text (.getData clipboard-data "text")
files (.-files clipboard-data)
paste-file-if-exiist (fn []
(when id
(let [_handled
(let [clipboard-data (gobj/get e "clipboardData")
files (.-files clipboard-data)]
(when-let [file (first files)]
(when-let [block (state/get-edit-block)]
(editor-handler/upload-asset id #js[file] (:block/format block)
editor-handler/*asset-uploading? true))))]
(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)))
(defn perferred-pasting-file?
[]
(:editor/perferred-pasting-file? (sub-config)))
(defn doc-mode-enter-for-new-line?
[]
(and (document-mode?)