Browse Source

Merge branch 'master' of github.com:logseq/logseq into master

Tienson Qin 5 năm trước cách đây
mục cha
commit
b6d6d42476
2 tập tin đã thay đổi với 26 bổ sung21 xóa
  1. 0 1
      README.md
  2. 26 20
      src/main/frontend/extensions/code.cljs

+ 0 - 1
README.md

@@ -116,7 +116,6 @@ yarn watch
 2.  Run jar
 
     ``` bash
-    cd resources
     java -Duser.timezone=UTC -jar logseq.jar
     ```
 

+ 26 - 20
src/main/frontend/extensions/code.cljs

@@ -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