fix: slide reactive blocks

pull/3924/head
Tienson Qin 2022-01-16 17:44:27 +08:00
parent 06299bb8b9
commit 7b7e2e16b0
2 changed files with 36 additions and 27 deletions

View File

@ -14,7 +14,6 @@
[frontend.state :as state]
[frontend.ui :as ui]
[frontend.util :as util]
[frontend.modules.outliner.tree :as outliner-tree]
[goog.object :as gobj]
[medley.core :as medley]
[reitit.frontend.easy :as rfe]
@ -100,21 +99,11 @@
(page-cp repo page-name)]])
: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})}
(db-model/get-page-original-name page-name)]
[: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]]))

View File

@ -6,7 +6,11 @@
[frontend.ui :as ui]
[frontend.config :as config]
[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? []
js/window.Reveal)
@ -43,15 +47,20 @@
[config block level]
(let [deep-level? (>= level 2)
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
[loading? style config blocks]
@ -66,7 +75,7 @@
[:div.slides
(map #(block-container config % 1) blocks)]]])
(rum/defc slide < rum/reactive
(rum/defc slide < rum/reactive db-mixins/query
{:did-mount (fn [state]
(if (loaded?)
(do
@ -80,7 +89,18 @@
(reset! *loading? false)
(render!)))))
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)))