Browse Source

fix: slide reactive blocks

Tienson Qin 4 years ago
parent
commit
7b7e2e16b0

+ 2 - 13
src/main/frontend/components/right_sidebar.cljs

@@ -14,7 +14,6 @@
             [frontend.state :as state]
             [frontend.state :as state]
             [frontend.ui :as ui]
             [frontend.ui :as ui]
             [frontend.util :as util]
             [frontend.util :as util]
-            [frontend.modules.outliner.tree :as outliner-tree]
             [goog.object :as gobj]
             [goog.object :as gobj]
             [medley.core :as medley]
             [medley.core :as medley]
             [reitit.frontend.easy :as rfe]
             [reitit.frontend.easy :as rfe]
@@ -100,21 +99,11 @@
         (page-cp repo page-name)]])
         (page-cp repo page-name)]])
 
 
     :page-presentation
     :page-presentation
-    (let [page-name (get-in block-data [:page :block/name])
-          journal? (:journal? block-data)
-          blocks (-> (db/get-page-blocks repo page-name)
-                     (outliner-tree/blocks->vec-tree page-name))
-          blocks (if journal?
-                   (rest blocks)
-                   blocks)]
+    (let [page-name (get-in block-data [:page :block/name])]
       [[:a {:href (rfe/href :page {:name page-name})}
       [[:a {:href (rfe/href :page {:name page-name})}
         (db-model/get-page-original-name page-name)]
         (db-model/get-page-original-name page-name)]
        [:div.ml-2.slide.mt-2
        [:div.ml-2.slide.mt-2
-        (slide/slide {:id          "slide-reveal-js"
-                      :slide?      true
-                      :sidebar?    true
-                      :page-name   page-name}
-                     blocks)]])
+        (slide/slide page-name)]])
 
 
     ["" [:span]]))
     ["" [:span]]))
 
 

+ 34 - 14
src/main/frontend/extensions/slide.cljs

@@ -6,7 +6,11 @@
             [frontend.ui :as ui]
             [frontend.ui :as ui]
             [frontend.config :as config]
             [frontend.config :as config]
             [frontend.components.block :as block]
             [frontend.components.block :as block]
-            [clojure.string :as string]))
+            [clojure.string :as string]
+            [frontend.db-mixins :as db-mixins]
+            [frontend.db :as db]
+            [frontend.modules.outliner.tree :as outliner-tree]
+            [frontend.state :as state]))
 
 
 (defn loaded? []
 (defn loaded? []
   js/window.Reveal)
   js/window.Reveal)
@@ -43,15 +47,20 @@
   [config block level]
   [config block level]
   (let [deep-level? (>= level 2)
   (let [deep-level? (>= level 2)
         children (:block/children block)
         children (:block/children block)
-        has-children? (seq children)]
-    [:section (with-properties {:key (str "slide-block-" (:block/uuid block))} block)
-     [:section.relative
-      (block/block-container config (dissoc block :block/children))
-      (when (and has-children? deep-level?)
-        [:span.opacity-30.text-xl "Hidden children"])]
-     (when (and has-children? (not deep-level?))
-       (map (fn [block]
-              (block-container config block (inc level))) children))]))
+        has-children? (seq children)
+        children (when (and has-children? (not deep-level?))
+                   (map (fn [block]
+                          (block-container config block (inc level))) children))
+        block-el (block/block-container config (dissoc block :block/children))
+        dom-attrs (with-properties {:key (str "slide-block-" (:block/uuid block))} block)]
+    (if has-children?
+      [:section dom-attrs
+       [:section.relative
+        block-el
+        (when deep-level?
+          [:span.opacity-30.text-xl "Hidden children"])]
+       children]
+      [:section dom-attrs block-el])))
 
 
 (defn slide-content
 (defn slide-content
   [loading? style config blocks]
   [loading? style config blocks]
@@ -66,7 +75,7 @@
     [:div.slides
     [:div.slides
      (map #(block-container config % 1) blocks)]]])
      (map #(block-container config % 1) blocks)]]])
 
 
-(rum/defc slide < rum/reactive
+(rum/defc slide < rum/reactive db-mixins/query
   {:did-mount (fn [state]
   {:did-mount (fn [state]
                 (if (loaded?)
                 (if (loaded?)
                   (do
                   (do
@@ -80,7 +89,18 @@
                        (reset! *loading? false)
                        (reset! *loading? false)
                        (render!)))))
                        (render!)))))
                 state)}
                 state)}
-  [config blocks]
-  (def blocks blocks)
-  (let [loading? (rum/react *loading?)]
+  [page-name]
+  (let [loading? (rum/react *loading?)
+        page (db/entity [:block/name page-name])
+        journal? (:journal? page)
+        repo (state/get-current-repo)
+        blocks (-> (db/get-page-blocks repo page-name)
+                   (outliner-tree/blocks->vec-tree page-name))
+        blocks (if journal?
+                 (rest blocks)
+                 blocks)
+        config {:id          "slide-reveal-js"
+                :slide?      true
+                :sidebar?    true
+                :page-name   page-name}]
     (slide-content loading? {:height 400} config blocks)))
     (slide-content loading? {:height 400} config blocks)))