diff --git a/src/main/frontend/handler/editor.cljs b/src/main/frontend/handler/editor.cljs index f9015e06c..4ebc8a3af 100644 --- a/src/main/frontend/handler/editor.cljs +++ b/src/main/frontend/handler/editor.cljs @@ -2604,7 +2604,7 @@ (cursor/move-cursor-forward input)))))) (defn- delete-and-update [^js input start end] - (.setRangeText input "" start end) + (util/safe-set-range-text! input "" start end) (state/set-edit-content! (state/get-edit-input-id) (.-value input))) (defn- delete-concat [current-block] diff --git a/src/main/frontend/util.cljc b/src/main/frontend/util.cljc index 9a1f1d7fe..1d5473ffb 100644 --- a/src/main/frontend/util.cljc +++ b/src/main/frontend/util.cljc @@ -652,6 +652,19 @@ (recur (conj res [(.-index m) (first m)])) res))))) +#?(:cljs + (defn safe-set-range-text! + ([input text start end] + (try + (.setRangeText input "" start end) + (catch js/Error _e + nil))) + ([input text start end select-mode] + (try + (.setRangeText input "" start end select-mode) + (catch js/Error _e + nil))))) + #?(:cljs (defn kill-line-before! [input] @@ -659,7 +672,7 @@ end (.-selectionStart input) n-pos (string/last-index-of val \newline (dec end)) start (if n-pos (inc n-pos) 0)] - (.setRangeText input "" start end)))) + (safe-set-range-text! input "" start end)))) #?(:cljs (defn kill-line-after! @@ -668,14 +681,14 @@ start (.-selectionStart input) end (or (string/index-of val \newline start) (count val))] - (.setRangeText input "" start end)))) + (safe-set-range-text! input "" start end)))) #?(:cljs (defn insert-at-current-position! [input text] (let [start (.-selectionStart input) end (.-selectionEnd input)] - (.setRangeText input text start end "end")))) + (safe-set-range-text! input text start end "end")))) ;; copied from re_com #?(:cljs @@ -1323,7 +1336,7 @@ (recur (dec idx)) idx)) inc))] - (.setRangeText input "" idx current)))) + (safe-set-range-text! input "" idx current)))) #?(:cljs (defn forward-kill-word @@ -1339,7 +1352,7 @@ (remove nil?) (apply min)) (count val))] - (.setRangeText input "" current (inc idx))))) + (safe-set-range-text! input "" current (inc idx))))) #?(:cljs (defn fix-open-external-with-shift! @@ -1476,4 +1489,4 @@ #?(:cljs (defn sm-breakpoint? [] - (< (.-offsetWidth js/document.documentElement) 640))) \ No newline at end of file + (< (.-offsetWidth js/document.documentElement) 640)))