Browse Source

fix: disable global editing bindings when in block component editing

for example, codemirror, excalidraw modes
Tienson Qin 4 years ago
parent
commit
c9943eb680

+ 6 - 8
src/main/frontend/components/block.cljs

@@ -2193,14 +2193,12 @@
 
               :else
               (let [language (if (contains? #{"edn" "clj" "cljc" "cljs" "clojure"} language) "text/x-clojure" language)]
-                (highlight/highlight (str (medley/random-uuid)) {:data-lang language} code)
-               ;; (if (:slide? config)
-               ;;   (highlight/highlight (str (medley/random-uuid)) {:data-lang language} code)
-               ;;   [:div
-               ;;    (lazy-editor/editor config (str (dc/squuid)) attr code pos_meta)
-               ;;    (when (and (= language "text/x-clojure") (contains? (set options) ":results"))
-               ;;      (sci/eval-result code))])
-                ))))
+                (if (:slide? config)
+                 (highlight/highlight (str (medley/random-uuid)) {:data-lang language} code)
+                 [:div
+                  (lazy-editor/editor config (str (dc/squuid)) attr code pos_meta)
+                  (when (and (= language "text/x-clojure") (contains? (set options) ":results"))
+                    (sci/eval-result code))])))))
 
         :else
         "")

+ 4 - 1
src/main/frontend/extensions/code.cljs

@@ -178,7 +178,10 @@
                   state)}
   [state config id attr code pos-meta]
   [:div.extensions__code
-   {:on-mouse-down (fn [e] (util/stop e))}
+   {:on-mouse-down (fn [e]
+                     (util/stop e)
+                     (state/set-block-component-editing-mode! true))
+    :on-blur #(state/set-block-component-editing-mode! false)}
    [:div.extensions__code-lang
     (let [mode (string/lower-case (get attr :data-lang "javascript"))]
       (if (= mode "text/x-clojure")

+ 4 - 0
src/main/frontend/extensions/excalidraw.cljs

@@ -80,6 +80,10 @@
         [:a.mr-2 {:on-click #(swap! *view-mode? not)}
          (util/format "View Mode (%s)" (if @*view-mode? "ON" "OFF"))]]
        [:div.draw-wrap
+        {:on-mouse-down (fn [e]
+                          (util/stop e)
+                          (state/set-block-component-editing-mode! true))
+         :on-blur #(state/set-block-component-editing-mode! false)}
         (excalidraw
          (merge
           {:on-change (fn [elements state]

+ 7 - 0
src/main/frontend/modules/shortcut/before.cljs

@@ -27,6 +27,13 @@
       (util/stop e)
       (f e))))
 
+(defn enable-when-not-component-editing!
+  [f]
+  (fn [e]
+    (when-not (state/block-component-editing?)
+      (util/stop e)
+      (f e))))
+
 (defn only-enable-when-dev!
   [_]
   (boolean config/dev?))

+ 1 - 0
src/main/frontend/modules/shortcut/config.cljs

@@ -164,6 +164,7 @@
      :fn      editor-handler/backward-kill-word}}
 
    :shortcut.handler/editor-global
+   ^{:before m/enable-when-not-component-editing!}
    {:editor/up
     {:desc    "Move cursor up / Select up"
      :binding "up"

+ 7 - 6
src/main/frontend/state.cljs

@@ -67,7 +67,8 @@
 
     :github/contents {}
     :config {}
-    :editor/code-mode? false
+    :block/component-editing-mode? false
+    :editor/draw-mode? false
     :editor/show-page-search? false
     :editor/show-page-search-hashtag? false
     :editor/show-date-picker? false
@@ -1203,13 +1204,13 @@
   [args]
   (set-state! :editor/args args))
 
-(defn code-mode?
+(defn block-component-editing?
   []
-  (:editor/code-mode? @state))
+  (:block/component-editing-mode? @state))
 
-(defn go-to-code-mode!
-  []
-  (set-state! :editor/code-mode? true))
+(defn set-block-component-editing-mode!
+  [value]
+  (set-state! :block/component-editing-mode? value))
 
 (defn get-editor-args
   []

+ 3 - 3
yarn.lock

@@ -200,9 +200,9 @@
     global-tunnel-ng "^2.7.1"
 
 "@excalidraw/excalidraw@^0.4.2":
-  version "0.4.2"
-  resolved "https://registry.yarnpkg.com/@excalidraw/excalidraw/-/excalidraw-0.4.2.tgz"
-  integrity sha512-2vX/P9/p+gBvdUsqAbHSiV1yO2sLtG6fqvzWjlWYzRb6AkeNvpe2Wp7UfJOGb+VQmhymBE07be9ACzyA9ib2jw==
+  version "0.4.3"
+  resolved "https://registry.yarnpkg.com/@excalidraw/excalidraw/-/excalidraw-0.4.3.tgz#e1b2cfbafe405a5b0504c5f631b0857e61d5a5de"
+  integrity sha512-AAQ87Q2VFojcBJjOp/Sc2F/y4s9Hb1sB/YmEo4QwKnZUnB3cnn8hPpBIMIIi9z7090pOLunC5ewaiQAirWcCKw==
 
 "@fullhuman/postcss-purgecss@^3.1.3":
   version "3.1.3"