mirror of
https://github.com/logseq/logseq.git
synced 2026-04-27 15:45:00 +00:00
@@ -3,6 +3,7 @@
|
||||
[frontend.util :as util]
|
||||
[goog.dom :as gdom]
|
||||
[goog.object :as gobj]
|
||||
[medley.core :as medley]
|
||||
[frontend.db :as db]
|
||||
[frontend.state :as state]
|
||||
[frontend.handler.editor :as editor-handler]
|
||||
@@ -53,7 +54,7 @@
|
||||
(let [block (db/pull [:block/uuid (:block/uuid config)])
|
||||
format (:block/format block)
|
||||
;; Get newest state
|
||||
pos-meta (::pos-meta state)
|
||||
pos-meta (:pos-meta state)
|
||||
{:keys [start_pos end_pos]} @pos-meta
|
||||
value (str "\n" (string/trimr value) "\n")
|
||||
content (:block/content block)
|
||||
@@ -105,34 +106,39 @@
|
||||
(if changed?
|
||||
(save!)
|
||||
(editor-handler/edit-block! block :max (:block/format block) block-id)))
|
||||
(save!))))}})
|
||||
element (.getWrapperElement editor)]
|
||||
(.on editor "blur" (fn []
|
||||
(save-file-or-block-when-blur-or-esc! editor textarea config state)))
|
||||
(.addEventListener element "click"
|
||||
(fn [e]
|
||||
(util/stop e)))
|
||||
(.save editor)
|
||||
(.refresh editor)
|
||||
;; (when clojure?
|
||||
;; (par-cm/init editor))
|
||||
(save!))))}})]
|
||||
(let [element (.getWrapperElement editor)]
|
||||
(.on editor "blur" (fn []
|
||||
(save-file-or-block-when-blur-or-esc! editor textarea config state)))
|
||||
(.addEventListener element "click"
|
||||
(fn [e]
|
||||
(util/stop e)))
|
||||
(.save editor)
|
||||
(.refresh editor))
|
||||
editor))
|
||||
|
||||
(defn- load-and-render!
|
||||
[state]
|
||||
(let [editor (render! state)]
|
||||
(assoc state ::editor editor)))
|
||||
(let [editor-atom (:editor-atom state)]
|
||||
(js/setTimeout (fn []
|
||||
(let [editor (render! state)]
|
||||
(reset! editor-atom editor))) 10)))
|
||||
|
||||
(rum/defcs editor < rum/reactive
|
||||
{:init (fn [state]
|
||||
(assoc state ::pos-meta (atom (last (:rum/args state)))))
|
||||
(assoc state
|
||||
:pos-meta (atom (last (:rum/args state)))
|
||||
:editor-atom (atom nil)))
|
||||
:did-mount (fn [state]
|
||||
(load-and-render! state))
|
||||
(load-and-render! state)
|
||||
state)
|
||||
:did-update (fn [state]
|
||||
(when-let [editor (::editor state)]
|
||||
(let [code (nth (:rum/args state) 3)]
|
||||
(.setValue (.getDoc editor) code)))
|
||||
(when-let [pos-meta (::pos-meta state)]
|
||||
(when-let [editor-atom (:editor-atom state)]
|
||||
(let [editor @editor-atom
|
||||
code (nth (:rum/args state) 3)]
|
||||
(when editor
|
||||
(.setValue (.getDoc editor) code))))
|
||||
(when-let [pos-meta (:pos-meta state)]
|
||||
(reset! pos-meta (last (:rum/args state)))))}
|
||||
[state config id attr code pos_meta]
|
||||
[:div.extensions__code
|
||||
|
||||
Reference in New Issue
Block a user