mirror of https://github.com/logseq/logseq
fix: slide reactive blocks
parent
06299bb8b9
commit
7b7e2e16b0
|
@ -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])
|
(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)]
|
|
||||||
[[: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/slide page-name)]])
|
||||||
:slide? true
|
|
||||||
:sidebar? true
|
|
||||||
:page-name page-name}
|
|
||||||
blocks)]])
|
|
||||||
|
|
||||||
["" [:span]]))
|
["" [:span]]))
|
||||||
|
|
||||||
|
|
|
@ -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)]
|
has-children? (seq children)
|
||||||
[:section (with-properties {:key (str "slide-block-" (:block/uuid block))} block)
|
children (when (and has-children? (not deep-level?))
|
||||||
[:section.relative
|
(map (fn [block]
|
||||||
(block/block-container config (dissoc block :block/children))
|
(block-container config block (inc level))) children))
|
||||||
(when (and has-children? deep-level?)
|
block-el (block/block-container config (dissoc block :block/children))
|
||||||
[:span.opacity-30.text-xl "Hidden children"])]
|
dom-attrs (with-properties {:key (str "slide-block-" (:block/uuid block))} block)]
|
||||||
(when (and has-children? (not deep-level?))
|
(if has-children?
|
||||||
(map (fn [block]
|
[:section dom-attrs
|
||||||
(block-container config block (inc level))) children))]))
|
[: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]
|
[page-name]
|
||||||
(def blocks blocks)
|
(let [loading? (rum/react *loading?)
|
||||||
(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)))
|
||||||
|
|
Loading…
Reference in New Issue