Просмотр исходного кода

Make all dev menu items into commands

Also add clear all notifications cmd
Gabriel Horner 2 лет назад
Родитель
Сommit
92bec506ec

+ 5 - 28
src/main/frontend/components/content.cljs

@@ -1,6 +1,5 @@
 (ns frontend.components.content
-  (:require [cljs.pprint :as pprint]
-            [clojure.string :as string]
+  (:require [clojure.string :as string]
             [dommy.core :as d]
             [frontend.commands :as commands]
             [frontend.components.editor :as editor]
@@ -20,7 +19,6 @@
             [frontend.util :as util]
             [logseq.graph-parser.util :as gp-util]
             [logseq.graph-parser.util.block-ref :as block-ref]
-            [logseq.graph-parser.mldoc :as gp-mldoc]
             [frontend.util.url :as url-util]
             [goog.dom :as gdom]
             [goog.object :as gobj]
@@ -295,37 +293,16 @@
            (ui/menu-link
             {:key      "(Dev) Show block data"
              :on-click (fn []
-                         (let [block-data (with-out-str (pprint/pprint (db/pull [:block/uuid block-id])))]
-                           (println block-data)
-                           (notification/show!
-                            [:div
-                             [:pre.code block-data]
-                             [:br]
-                             (ui/button "Copy to clipboard"
-                                        :on-click #(.writeText js/navigator.clipboard block-data))]
-                            :success
-                            false)))}
+                         (state/pub-event! [:dev/show-entity-data [:block/uuid block-id]]))}
             "(Dev) Show block data"
             nil))
-  
+
          (when (state/sub [:ui/developer-mode?])
            (ui/menu-link
             {:key      "(Dev) Show block AST"
              :on-click (fn []
-                         (let [block (db/pull [:block/uuid block-id])
-                               block-data (-> (gp-mldoc/->edn (:block/content block)
-                                                              (gp-mldoc/default-config (:block/format block)))
-                                              pprint/pprint
-                                              with-out-str)]
-                           (println block-data)
-                           (notification/show!
-                            [:div
-                             [:pre.code block-data]
-                             [:br]
-                             (ui/button "Copy to clipboard"
-                                        :on-click #(.writeText js/navigator.clipboard block-data))]
-                            :success
-                            false)))}
+                         (let [block (db/pull [:block/uuid block-id])]
+                           (state/pub-event! [:dev/show-content-ast (:block/content block) (:block/format block)])))}
             "(Dev) Show block AST"
             nil))])))
 

+ 6 - 30
src/main/frontend/components/page_menu.cljs

@@ -1,6 +1,5 @@
 (ns frontend.components.page-menu
-  (:require [cljs.pprint :as pprint]
-            [frontend.commands :as commands]
+  (:require [frontend.commands :as commands]
             [frontend.components.export :as export]
             [frontend.context.i18n :refer [t]]
             [frontend.db :as db]
@@ -16,8 +15,7 @@
             [electron.ipc :as ipc]
             [frontend.config :as config]
             [frontend.handler.user :as user-handler]
-            [frontend.handler.file-sync :as file-sync-handler]
-            [logseq.graph-parser.mldoc :as gp-mldoc]))
+            [frontend.handler.file-sync :as file-sync-handler]))
 
 (defn- delete-page!
   [page-name]
@@ -164,35 +162,13 @@
           (when developer-mode?
             {:title   "(Dev) Show page data"
              :options {:on-click (fn []
-                                   (let [page-data (with-out-str (pprint/pprint (db/pull (:db/id page))))]
-                                     (println page-data)
-                                     (notification/show!
-                                      [:div
-                                       [:pre.code page-data]
-                                       [:br]
-                                       (ui/button
-                                        "Copy to clipboard"
-                                        :on-click #(.writeText js/navigator.clipboard page-data))]
-                                      :success
-                                      false)))}})
+                                   (state/pub-event! [:dev/show-entity-data (:db/id page)]))}})
 
           (when developer-mode?
             {:title   "(Dev) Show page AST"
              :options {:on-click (fn []
-                                   (let [page (db/pull '[:block/format {:block/file [:file/content]}] (:db/id page))
-                                         page-data (-> (gp-mldoc/->edn (get-in page [:block/file :file/content])
-                                                                       (gp-mldoc/default-config (:block/format page)))
-                                                       pprint/pprint
-                                                       with-out-str)]
-                                     (println page-data)
-                                     (notification/show!
-                                      [:div
-                                       (ui/button
-                                        "Copy to clipboard"
-                                        :on-click #(.writeText js/navigator.clipboard page-data))
-                                       [:br]
-                                       [:pre.code page-data]]
-                                      :success
-                                      false)))}})]
+                                   (let [page (db/pull '[:block/format {:block/file [:file/content]}] (:db/id page))]
+                                     (state/pub-event! [:dev/show-content-ast (get-in page [:block/file :file/content])
+                                                        (:block/format page)])))}})]
          (flatten)
          (remove nil?))))))

+ 29 - 0
src/main/frontend/handler/events.cljs

@@ -8,6 +8,7 @@
             [clojure.core.async.interop :refer [p->c]]
             [clojure.set :as set]
             [clojure.string :as string]
+            [cljs.pprint :as pprint]
             [datascript.core :as d]
             [frontend.commands :as commands]
             [frontend.components.diff :as diff]
@@ -65,6 +66,7 @@
             [promesa.core :as p]
             [rum.core :as rum]
             [logseq.graph-parser.config :as gp-config]
+            [logseq.graph-parser.mldoc :as gp-mldoc]
             [cljs-bean.core :as bean]
             ["@sentry/react" :as Sentry]
             [frontend.modules.instrumentation.sentry :as sentry-event]))
@@ -919,6 +921,33 @@
   (when (and command (not (string/blank? content)))
     (shell-handler/run-cli-command-wrapper! command content)))
 
+(defmethod handle :dev/show-entity-data [[_ & pull-args]]
+  (let [pull-data (with-out-str (pprint/pprint (apply db/pull pull-args)))]
+    (println pull-data)
+    (notification/show!
+     [:div
+      [:pre.code pull-data]
+      [:br]
+      (ui/button "Copy to clipboard"
+                 :on-click #(.writeText js/navigator.clipboard pull-data))]
+     :success
+     false)))
+
+(defmethod handle :dev/show-content-ast [[_ content format]]
+  (let [ast-data (-> (gp-mldoc/->edn content (gp-mldoc/default-config format))
+                       pprint/pprint
+                       with-out-str)]
+    (println ast-data)
+    (notification/show!
+     [:div
+      ;; Show clipboard at top since content is really long for pages
+      (ui/button "Copy to clipboard"
+                 :on-click #(.writeText js/navigator.clipboard ast-data))
+      [:br]
+      [:pre.code ast-data]]
+     :success
+     false)))
+
 (defn run!
   []
   (let [chan (state/get-events-chan)]

+ 53 - 4
src/main/frontend/modules/shortcut/config.cljs

@@ -1,5 +1,6 @@
 (ns frontend.modules.shortcut.config
   (:require [frontend.components.commit :as commit]
+            [frontend.handler.notification :as notification]
             [frontend.extensions.srs.handler :as srs]
             [frontend.extensions.pdf.utils :as pdf-utils]
             [frontend.handler.config :as config-handler]
@@ -18,6 +19,7 @@
             [frontend.modules.shortcut.dicts :as dicts]
             [frontend.modules.shortcut.before :as m]
             [frontend.state :as state]
+            [frontend.db :as db]
             [frontend.util :refer [mac?] :as util]
             [frontend.commands :as commands]
             [frontend.config :as config]
@@ -331,7 +333,7 @@
 
    :graph/re-index                 {:fn (fn []
                                           (p/let [multiple-windows? (ipc/ipc "graphHasMultipleWindows" (state/get-current-repo))]
-                                            (state/pub-event! [:graph/ask-for-re-index (atom multiple-windows?) nil])))
+                                                 (state/pub-event! [:graph/ask-for-re-index (atom multiple-windows?) nil])))
                                     :binding false}
 
    :command/run                    {:binding "mod+shift+1"
@@ -423,6 +425,9 @@
                                      :inactive (not (config/plugin-config-enabled?))
                                      :fn       plugin-config-handler/open-replace-plugins-modal}
 
+   :ui/clear-all-notifications      {:binding false
+                                     :fn       notification/clear-all!}
+
    :editor/toggle-open-blocks       {:binding "t o"
                                      :fn      editor-handler/toggle-open!}
 
@@ -430,7 +435,42 @@
                                      :fn      ui-handler/toggle-cards!}
 
    :git/commit                      {:binding "mod+g c"
-                                     :fn      commit/show-commit-modal!}})
+                                     :fn      commit/show-commit-modal!}
+
+   :dev/show-block-data            {:binding false
+                                    :inactive (not (state/developer-mode?))
+                                    :fn (fn []
+                                          ;; Use editor state to locate most recent block
+                                          (if-let [block-uuid (:block-id (first (state/get-editor-args)))]
+                                            (state/pub-event! [:dev/show-entity-data [:block/uuid block-uuid]])
+                                            (notification/show! "No block found" :error)))}
+
+   :dev/show-block-ast             {:binding false
+                                    :inactive (not (state/developer-mode?))
+                                    :fn (fn []
+                                          (if-let [{:block/keys [content format]} (:block (first (state/get-editor-args)))]
+                                            (state/pub-event! [:dev/show-content-ast content format])
+                                            (notification/show! "No block found" :error)))}
+
+   :dev/show-page-data             {:binding false
+                                    :inactive (not (state/developer-mode?))
+                                    :fn (fn []
+                                          ;; Use editor state to locate most recent page.
+                                          ;; Consider replacing with navigation history if it's more useful
+                                          (if-let [page-id (get-in (first (state/get-editor-args))
+                                                                   [:block :block/page :db/id])]
+                                            (state/pub-event! [:dev/show-entity-data page-id])
+                                            (notification/show! "No page found" :error)))}
+
+   :dev/show-page-ast              {:binding false
+                                    :inactive (not (state/developer-mode?))
+                                    :fn (fn []
+                                          (let [page-data (db/pull '[:block/format {:block/file [:file/content]}]
+                                                                   (get-in (first (state/get-editor-args))
+                                                                           [:block :block/page :db/id]))]
+                                            (if (seq page-data)
+                                              (state/pub-event! [:dev/show-content-ast (get-in page-data [:block/file :file/content]) (:block/format page-data)])
+                                              (notification/show! "No page found" :error))))}})
 
 (let [keyboard-shortcuts
       {::keyboard-shortcuts (set (keys all-default-keyboard-shortcuts))
@@ -593,9 +633,13 @@
                           :ui/install-plugins-from-file
                           :editor/toggle-open-blocks
                           :ui/toggle-cards
+                          :ui/clear-all-notifications
                           :git/commit
                           :sidebar/close-top
-                          ])
+                          :dev/show-block-data
+                          :dev/show-block-ast
+                          :dev/show-page-data
+                          :dev/show-page-ast])
      (with-meta {:before m/enable-when-not-editing-mode!}))}))
 
 ;; To add a new entry to this map, first add it here and then
@@ -736,7 +780,12 @@
     :date-picker/prev-week
     :date-picker/next-week
     :date-picker/complete
-    :git/commit]})
+    :git/commit
+    :dev/show-block-data
+    :dev/show-block-ast
+    :dev/show-page-data
+    :dev/show-page-ast
+    :ui/clear-all-notifications]})
 
 (let [category-maps {::category (set (keys category*))
                      ::dicts/category (set (keys dicts/category))}]

+ 7 - 2
src/main/frontend/modules/shortcut/dicts.cljc

@@ -128,7 +128,12 @@
    :ui/install-plugins-from-file    "Install plugins from plugins.edn"
    :editor/toggle-open-blocks       "Toggle open blocks (collapse or expand all blocks)"
    :ui/toggle-cards                 "Toggle cards"
-   :git/commit                      "Create git commit with message"})
+   :ui/clear-all-notifications      "Clear all notifications"
+   :git/commit                      "Create git commit with message"
+   :dev/show-block-data             "(Dev) Show block data"
+   :dev/show-block-ast              "(Dev) Show block AST"
+   :dev/show-page-data              "(Dev) Show page data"
+   :dev/show-page-ast               "(Dev) Show page AST"})
 
 (def category
   {:shortcut.category/basics "Basics"
@@ -1154,7 +1159,7 @@
              :command.go/electron-jump-to-the-next    "Ir para a próxima correspondência da sua pesquisa"
              :command.go/electron-jump-to-the-previous "Voltar para a correspondência anterior da sua pesquisa"
              :command.graph/re-index                  "Reindexar o grafo atual"
-             
+
              :command.editor/new-whiteboard           "Novo quadro branco"
              :command.editor/select-parent            "Selecione o bloco pai"
              :command.go/whiteboards                  "Ir para os quadros brancos"