mirror of
https://github.com/logseq/logseq.git
synced 2026-05-02 09:56:31 +00:00
fix(mobile): format only selected string as page reference
This commit is contained in:
@@ -70,26 +70,29 @@
|
||||
(when (:block/uuid block)
|
||||
(when-let [edit-id (state/get-edit-input-id)]
|
||||
(when-let [input (gdom/getElement edit-id)]
|
||||
{:selection-start (util/get-selection-start input)
|
||||
:selection-end (util/get-selection-end input)
|
||||
:format (:block/format block)
|
||||
:value (gobj/get input "value")
|
||||
:block block
|
||||
:edit-id edit-id
|
||||
:input input})))))
|
||||
|
||||
(defn- format-new-selection
|
||||
[{:keys [selection-start selection-end value]}]
|
||||
(let [selected (subs value selection-start selection-end)]
|
||||
[(+ selection-start (count (take-while #(= " " %) selected)))
|
||||
(- selection-end (count (take-while #(= " " %) (reverse selected))))]))
|
||||
(let [selection-start (util/get-selection-start input)
|
||||
selection-end (util/get-selection-end input)
|
||||
value (gobj/get input "value")
|
||||
selection (when (not= selection-start selection-end)
|
||||
(subs value selection-start selection-end))
|
||||
selection-start (+ selection-start
|
||||
(count (take-while #(= " " %) selection)))
|
||||
selection-end (- selection-end
|
||||
(count (take-while #(= " " %) (reverse selection))))]
|
||||
{:selection-start selection-start
|
||||
:selection-end selection-end
|
||||
:selection (some-> selection
|
||||
string/trim)
|
||||
:format (:block/format block)
|
||||
:value value
|
||||
:block block
|
||||
:edit-id edit-id
|
||||
:input input}))))))
|
||||
|
||||
(defn- format-text!
|
||||
[pattern-fn]
|
||||
(when-let [m (get-selection-and-format)]
|
||||
(let [{:keys [format value edit-id input]} m
|
||||
[selection-start selection-end] (format-new-selection m)
|
||||
empty-selection? (= selection-start selection-end)
|
||||
(let [{:keys [selection-start selection-end format selection value edit-id input]} m
|
||||
pattern (pattern-fn format)
|
||||
pattern-count (count pattern)
|
||||
pattern-prefix (subs value (max 0 (- selection-start pattern-count)) selection-start)
|
||||
@@ -101,14 +104,14 @@
|
||||
postfix (if already-wrapped?
|
||||
(subs value (+ selection-end pattern-count))
|
||||
(subs value selection-end))
|
||||
inner-value (cond-> (subs value selection-start selection-end)
|
||||
inner-value (cond-> selection
|
||||
(not already-wrapped?)
|
||||
(#(str pattern % pattern)))
|
||||
new-value (str prefix inner-value postfix)]
|
||||
(state/set-edit-content! edit-id new-value)
|
||||
(cond
|
||||
already-wrapped? (cursor/set-selection-to input (- selection-start pattern-count) (- selection-end pattern-count))
|
||||
empty-selection? (cursor/move-cursor-to input (+ selection-end pattern-count))
|
||||
selection (cursor/move-cursor-to input (+ selection-end pattern-count))
|
||||
:else (cursor/set-selection-to input (+ selection-start pattern-count) (+ selection-end pattern-count))))))
|
||||
|
||||
(defn bold-format! []
|
||||
@@ -130,10 +133,9 @@
|
||||
(html-link-format! nil))
|
||||
([link]
|
||||
(when-let [m (get-selection-and-format)]
|
||||
(let [{:keys [selection-start selection-end format value edit-id input]} m
|
||||
(let [{:keys [selection-start selection-end format selection value edit-id input]} m
|
||||
cur-pos (cursor/pos input)
|
||||
empty-selection? (= selection-start selection-end)
|
||||
selection (subs value selection-start selection-end)
|
||||
selection-link? (and selection (or (util/starts-with? selection "http://")
|
||||
(util/starts-with? selection "https://")))
|
||||
[content forward-pos] (cond
|
||||
@@ -2511,10 +2513,10 @@
|
||||
(commands/handle-step [:editor/search-page]))}))]
|
||||
(state/set-editor-show-page-search! false)
|
||||
(let [selection (get-selection-and-format)
|
||||
{:keys [selection-start selection-end value]} selection]
|
||||
(if (not= selection-start selection-end)
|
||||
{:keys [selection-start selection-end selection]} selection]
|
||||
(if selection
|
||||
(do (delete-and-update input selection-start selection-end)
|
||||
(insert (util/format "[[%s]]" value)))
|
||||
(insert (util/format "[[%s]]" selection)))
|
||||
(if-let [embed-ref (thingatpt/embed-macro-at-point input)]
|
||||
(let [{:keys [raw-content start end]} embed-ref]
|
||||
(delete-and-update input start end)
|
||||
|
||||
Reference in New Issue
Block a user