浏览代码

fix: undo/redo debugger ui

Tienson Qin 2 年之前
父节点
当前提交
b514dbe4f7
共有 2 个文件被更改,包括 104 次插入99 次删除
  1. 95 94
      src/main/frontend/components/page.cljs
  2. 9 5
      src/main/frontend/components/right_sidebar.cljs

+ 95 - 94
src/main/frontend/components/page.cljs

@@ -330,100 +330,101 @@
   (when page-name
   (when page-name
     (let [page (when page-name (db/entity [:block/name page-name]))
     (let [page (when page-name (db/entity [:block/name page-name]))
           page (db/sub-block (:db/id page))
           page (db/sub-block (:db/id page))
-          title (or (:block/original-name page) page-name)
-          icon (pu/lookup (:block/properties page) :icon)
-          *hover? (::hover? state)
-          *title-value (get state ::title-value)
-          *edit? (get state ::edit?)
-          *configuring? (::configuring? state)
-          *input-value (get state ::input-value)
-          repo (state/get-current-repo)
-          hls-page? (pdf-utils/hls-file? title)
-          whiteboard-page? (model/whiteboard-page? page-name)
-          untitled? (and whiteboard-page? (parse-uuid page-name)) ;; normal page cannot be untitled right?
-          title (if hls-page?
-                  [:a.asset-ref (pdf-utils/fix-local-asset-pagename title)]
-                  (if fmt-journal?
-                    (date/journal-title->custom-format title)
-                    title))
-          old-name (or title page-name)
-          db-based? (config/db-based-graph? repo)
-          tags-property (db/entity [:block/name "tags"])]
-      [:div.ls-page-title.flex.flex-1.flex-row.flex-wrap.w-full.relative.items-center.gap-2
-       {:on-mouse-over #(reset! *hover? true)
-        :on-mouse-out #(when-not @*configuring?
-                         (reset! *hover? false))}
-       (when icon
-         [:div.page-icon {:on-mouse-down util/stop-propagation}
-          (if (and (map? icon) db-based?)
-            (icon-component/icon-picker icon
-                                        {:on-chosen (fn [_e icon]
-                                                      (let [icon-property-id (db-pu/get-built-in-property-uuid :icon)]
-                                                        (db-property-handler/update-property!
-                                                         repo
-                                                         (:block/uuid page)
-                                                         {:properties {icon-property-id icon}})))})
-            icon)])
-       [:div.flex.flex-1.flex-row.flex-wrap.items-center.gap-4
-        [:h1.page-title.flex-1.cursor-pointer.gap-1
-         {:class (when-not whiteboard-page? "title")
-          :on-mouse-down (fn [e]
-                           (when (util/right-click? e)
-                             (state/set-state! :page-title/context {:page page-name})))
-          :on-click (fn [e]
-                      (when-not (= (.-nodeName (.-target e)) "INPUT")
-                        (.preventDefault e)
-                        (if (gobj/get e "shiftKey")
-                          (when-let [page (db/pull repo '[*] [:block/name page-name])]
-                            (state/sidebar-add-block!
-                             repo
-                             (:db/id page)
-                             :page))
-                          (when (and (not hls-page?)
-                                     (not fmt-journal?)
-                                     (not config/publishing?)
-                                     (not (and (contains? (:block/type page) "property")
-                                               (contains? db-property/built-in-properties-keys-str page-name))))
-                            (reset! *input-value (if untitled? "" old-name))
-                            (reset! *edit? true)))))}
-
-         (if @*edit?
-           (page-title-editor page {:*title-value *title-value
-                                    :*edit? *edit?
-                                    :*input-value *input-value
-                                    :page-name page-name
-                                    :old-name old-name
-                                    :untitled? untitled?
-                                    :whiteboard-page? whiteboard-page?
-                                    :preview? preview?})
-           [:span.title.block
-            {:on-click (fn []
-                         (when (and (state/home?) (not preview?))
-                           (route-handler/redirect-to-page! page-name)))
-             :data-value @*input-value
-             :data-ref   page-name
-             :style      {:opacity (when @*edit? 0)}}
-            (let [nested? (and (string/includes? title page-ref/left-brackets)
-                               (string/includes? title page-ref/right-brackets))]
-              (cond untitled? [:span.opacity-50 (t :untitled)]
-                    nested? (component-block/map-inline {} (gp-mldoc/inline->edn title (mldoc/get-default-config
-                                                                                        (:block/format page))))
-                    :else title))])]
-        (when (and db-based? (seq (:block/tags page)))
-          [:div.page-tags.ml-4
-           (pv/property-value page tags-property (map :block/uuid (:block/tags page))
-                              {:page-cp (fn [config page]
-                                          (component-block/page-cp (assoc config :tag? true) page))})])]
-
-       (when (and db-based? (not whiteboard-page?))
-         [:div.absolute.bottom-2.left-0
-          [:div.page-add-tags.flex.flex-row.items-center.flex-wrap.gap-2.ml-2
-           (when (and (empty? (:block/tags page)) @*hover? (not config/publishing?))
-             (db-page/page-tags page tags-property *hover? *configuring?))
-
-           (when (or (some #(contains? #{"class" "property"} %) (:block/type page))
-                     (not (db-property-handler/block-has-viewable-properties? page)))
-             (db-page/page-configure page *hover? *configuring?))]])])))
+          title (:block/original-name page)]
+      (when title
+        (let [icon (pu/lookup (:block/properties page) :icon)
+              *hover? (::hover? state)
+              *title-value (get state ::title-value)
+              *edit? (get state ::edit?)
+              *configuring? (::configuring? state)
+              *input-value (get state ::input-value)
+              repo (state/get-current-repo)
+              hls-page? (pdf-utils/hls-file? title)
+              whiteboard-page? (model/whiteboard-page? page-name)
+              untitled? (and whiteboard-page? (parse-uuid page-name)) ;; normal page cannot be untitled right?
+              title (if hls-page?
+                      [:a.asset-ref (pdf-utils/fix-local-asset-pagename title)]
+                      (if fmt-journal?
+                        (date/journal-title->custom-format title)
+                        title))
+              old-name (or title page-name)
+              db-based? (config/db-based-graph? repo)
+              tags-property (db/entity [:block/name "tags"])]
+          [:div.ls-page-title.flex.flex-1.flex-row.flex-wrap.w-full.relative.items-center.gap-2
+           {:on-mouse-over #(reset! *hover? true)
+            :on-mouse-out #(when-not @*configuring?
+                             (reset! *hover? false))}
+           (when icon
+             [:div.page-icon {:on-mouse-down util/stop-propagation}
+              (if (and (map? icon) db-based?)
+                (icon-component/icon-picker icon
+                                            {:on-chosen (fn [_e icon]
+                                                          (let [icon-property-id (db-pu/get-built-in-property-uuid :icon)]
+                                                            (db-property-handler/update-property!
+                                                             repo
+                                                             (:block/uuid page)
+                                                             {:properties {icon-property-id icon}})))})
+                icon)])
+           [:div.flex.flex-1.flex-row.flex-wrap.items-center.gap-4
+            [:h1.page-title.flex-1.cursor-pointer.gap-1
+             {:class (when-not whiteboard-page? "title")
+              :on-mouse-down (fn [e]
+                               (when (util/right-click? e)
+                                 (state/set-state! :page-title/context {:page page-name})))
+              :on-click (fn [e]
+                          (when-not (= (.-nodeName (.-target e)) "INPUT")
+                            (.preventDefault e)
+                            (if (gobj/get e "shiftKey")
+                              (when-let [page (db/pull repo '[*] [:block/name page-name])]
+                                (state/sidebar-add-block!
+                                 repo
+                                 (:db/id page)
+                                 :page))
+                              (when (and (not hls-page?)
+                                         (not fmt-journal?)
+                                         (not config/publishing?)
+                                         (not (and (contains? (:block/type page) "property")
+                                                   (contains? db-property/built-in-properties-keys-str page-name))))
+                                (reset! *input-value (if untitled? "" old-name))
+                                (reset! *edit? true)))))}
+
+             (if @*edit?
+               (page-title-editor page {:*title-value *title-value
+                                        :*edit? *edit?
+                                        :*input-value *input-value
+                                        :page-name page-name
+                                        :old-name old-name
+                                        :untitled? untitled?
+                                        :whiteboard-page? whiteboard-page?
+                                        :preview? preview?})
+               [:span.title.block
+                {:on-click (fn []
+                             (when (and (state/home?) (not preview?))
+                               (route-handler/redirect-to-page! page-name)))
+                 :data-value @*input-value
+                 :data-ref   page-name
+                 :style      {:opacity (when @*edit? 0)}}
+                (let [nested? (and (string/includes? title page-ref/left-brackets)
+                                   (string/includes? title page-ref/right-brackets))]
+                  (cond untitled? [:span.opacity-50 (t :untitled)]
+                        nested? (component-block/map-inline {} (gp-mldoc/inline->edn title (mldoc/get-default-config
+                                                                                            (:block/format page))))
+                        :else title))])]
+            (when (and db-based? (seq (:block/tags page)))
+              [:div.page-tags.ml-4
+               (pv/property-value page tags-property (map :block/uuid (:block/tags page))
+                                  {:page-cp (fn [config page]
+                                              (component-block/page-cp (assoc config :tag? true) page))})])]
+
+           (when (and db-based? (not whiteboard-page?))
+             [:div.absolute.bottom-2.left-0
+              [:div.page-add-tags.flex.flex-row.items-center.flex-wrap.gap-2.ml-2
+               (when (and (empty? (:block/tags page)) @*hover? (not config/publishing?))
+                 (db-page/page-tags page tags-property *hover? *configuring?))
+
+               (when (or (some #(contains? #{"class" "property"} %) (:block/type page))
+                         (not (db-property-handler/block-has-viewable-properties? page)))
+                 (db-page/page-configure page *hover? *configuring?))]])])))))
 
 
 (defn- page-mouse-over
 (defn- page-mouse-over
   [e *control-show? *all-collapsed?]
   [e *control-show? *all-collapsed?]

+ 9 - 5
src/main/frontend/components/right_sidebar.cljs

@@ -73,7 +73,7 @@
 (rum/defc history-action-info
 (rum/defc history-action-info
   [[k v]]
   [[k v]]
   (when v [:.ml-4 (ui/foldable
   (when v [:.ml-4 (ui/foldable
-                   [:div (str k)]
+                   [:div (str k v)]
                    [:.ml-4 (case k
                    [:.ml-4 (case k
                              :blocks
                              :blocks
                              (map (fn [block]
                              (map (fn [block]
@@ -85,10 +85,14 @@
                                       [:pre.code.pre-wrap-white-space.bg-base-4
                                       [:pre.code.pre-wrap-white-space.bg-base-4
                                        [:span.font-bold (str key) " "] (str val)])) v)
                                        [:span.font-bold (str key) " "] (str val)])) v)
 
 
-                             (map (fn [[key val]]
-                                    (when val
-                                      [:pre.code.pre-wrap-white-space.bg-base-4
-                                       [:span.font-bold (str key) " "] (str val)])) v))]
+                             (if (coll? v)
+                               (map (fn [[key val]]
+                                      (when val
+                                        [:pre.code.pre-wrap-white-space.bg-base-4
+                                         [:span.font-bold (str key) " "] (str val)])) v)
+                               (when v
+                                 [:pre.code.pre-wrap-white-space.bg-base-4
+                                  [:span.font-bold (str key) " "] (str v)])))]
                    {:default-collapsed? true})]))
                    {:default-collapsed? true})]))
 
 
 (rum/defc history-stack
 (rum/defc history-stack