mirror of https://github.com/logseq/logseq
add and fix some util fns
parent
da09487775
commit
a1822eb02b
|
@ -630,21 +630,20 @@
|
||||||
res)))))
|
res)))))
|
||||||
|
|
||||||
#?(:cljs
|
#?(:cljs
|
||||||
(defn cursor-move-back [input n]
|
(defn cursor-move-back [input n]
|
||||||
(let [{:keys [pos]} (get-caret-pos input)]
|
(let [{:keys [pos]} (get-caret-pos input)
|
||||||
(set! (.-selectionStart input) (- pos n))
|
pos (- pos n)]
|
||||||
(set! (.-selectionEnd input) (- pos n)))))
|
(.setSelectionRange input pos pos))))
|
||||||
|
|
||||||
#?(:cljs
|
#?(:cljs
|
||||||
(defn cursor-move-forward [input n]
|
(defn cursor-move-forward [input n]
|
||||||
(let [{:keys [pos]} (get-caret-pos input)]
|
(let [{:keys [pos]} (get-caret-pos input)
|
||||||
(set! (.-selectionStart input) (+ pos n))
|
pos (+ pos n)]
|
||||||
(set! (.-selectionEnd input) (+ pos n)))))
|
(.setSelectionRange input pos pos))))
|
||||||
|
|
||||||
#?(:cljs
|
#?(:cljs
|
||||||
(defn move-cursor-to [input n]
|
(defn move-cursor-to [input n]
|
||||||
(set! (.-selectionStart input) n)
|
(.setSelectionRange input n n)))
|
||||||
(set! (.-selectionEnd input) n)))
|
|
||||||
|
|
||||||
#?(:cljs
|
#?(:cljs
|
||||||
(defn move-cursor-to-end
|
(defn move-cursor-to-end
|
||||||
|
@ -652,6 +651,33 @@
|
||||||
(let [pos (count (gobj/get input "value"))]
|
(let [pos (count (gobj/get input "value"))]
|
||||||
(move-cursor-to input pos))))
|
(move-cursor-to input pos))))
|
||||||
|
|
||||||
|
#?(:cljs
|
||||||
|
(defn move-cursor-up
|
||||||
|
"Move cursor up. If EOL, always move cursor to previous EOL."
|
||||||
|
[input]
|
||||||
|
(let [val (gobj/get input "value")
|
||||||
|
{:keys [pos]} (get-caret-pos input)
|
||||||
|
prev-idx (string/last-index-of val \newline pos)
|
||||||
|
pprev-idx (or (string/last-index-of val \newline (dec prev-idx)) -1)
|
||||||
|
cal-idx (+ pprev-idx pos (- prev-idx))]
|
||||||
|
(if (or (== pos (count val))
|
||||||
|
(> (- pos prev-idx) (- prev-idx pprev-idx)))
|
||||||
|
(move-cursor-to input prev-idx)
|
||||||
|
(move-cursor-to input cal-idx)))))
|
||||||
|
|
||||||
|
#?(:cljs
|
||||||
|
(defn move-cursor-down
|
||||||
|
"Move cursor down by calculating current cursor line pos.
|
||||||
|
If EOL, always move cursor to next EOL."
|
||||||
|
[input]
|
||||||
|
(let [val (gobj/get input "value")
|
||||||
|
{:keys [pos]} (get-caret-pos input)
|
||||||
|
prev-idx (or (string/last-index-of val \newline pos) -1)
|
||||||
|
next-idx (or (string/index-of val \newline (inc pos))
|
||||||
|
(count val))
|
||||||
|
cal-idx (+ next-idx pos (- prev-idx))]
|
||||||
|
(move-cursor-to input cal-idx))))
|
||||||
|
|
||||||
;; copied from re_com
|
;; copied from re_com
|
||||||
#?(:cljs
|
#?(:cljs
|
||||||
(defn deref-or-value
|
(defn deref-or-value
|
||||||
|
@ -703,6 +729,18 @@
|
||||||
end (inc (max idx-1 idx-2))]
|
end (inc (max idx-1 idx-2))]
|
||||||
(safe-subvec (vec nodes) start end)))))
|
(safe-subvec (vec nodes) start end)))))
|
||||||
|
|
||||||
|
#?(:cljs
|
||||||
|
(defn get-direction-between-two-nodes
|
||||||
|
[id1 id2 class]
|
||||||
|
(when-let [nodes (array-seq (js/document.getElementsByClassName class))]
|
||||||
|
(let [node-1 (gdom/getElement id1)
|
||||||
|
node-2 (gdom/getElement id2)
|
||||||
|
idx-1 (.indexOf nodes node-1)
|
||||||
|
idx-2 (.indexOf nodes node-2)]
|
||||||
|
(if (>= idx-1 idx-2)
|
||||||
|
:up
|
||||||
|
:down)))))
|
||||||
|
|
||||||
#?(:cljs
|
#?(:cljs
|
||||||
(defn rec-get-block-node
|
(defn rec-get-block-node
|
||||||
[node]
|
[node]
|
||||||
|
@ -1180,3 +1218,11 @@
|
||||||
|
|
||||||
(= (get-relative-path "a/b/c/d/g.org" "a/b/c/e/f.org")
|
(= (get-relative-path "a/b/c/d/g.org" "a/b/c/e/f.org")
|
||||||
"../e/f.org"))
|
"../e/f.org"))
|
||||||
|
|
||||||
|
#?(:cljs
|
||||||
|
(defn select-highlight!
|
||||||
|
[blocks]
|
||||||
|
(doseq [block blocks]
|
||||||
|
(d/add-class! block "selected noselect"))))
|
||||||
|
|
||||||
|
(defn keyname [key] (str (namespace key) "/" (name key)))
|
||||||
|
|
Loading…
Reference in New Issue