|
|
@@ -2,9 +2,8 @@
|
|
|
(:require ["/tldraw-logseq" :as TldrawLogseq]
|
|
|
[frontend.components.block :as block]
|
|
|
[frontend.components.page :as page]
|
|
|
- [frontend.handler.whiteboard :refer [page-name->tldr!
|
|
|
- transact-tldr!
|
|
|
- add-new-block-shape!]]
|
|
|
+ [frontend.handler.whiteboard :refer [add-new-block-shape!
|
|
|
+ page-name->tldr! transact-tldr!]]
|
|
|
[frontend.rum :as r]
|
|
|
[frontend.search :as search]
|
|
|
[frontend.state :as state]
|
|
|
@@ -35,10 +34,19 @@
|
|
|
client-y (gobj/get e "clientY")]
|
|
|
(add-new-block-shape! uuid client-x client-y))))
|
|
|
|
|
|
-(rum/defcs tldraw-app < rum/reactive
|
|
|
- (rum/local false ::view-mode?)
|
|
|
- [state name block-id]
|
|
|
- (let [data (page-name->tldr! name block-id)]
|
|
|
+(rum/defc tldraw-app
|
|
|
+ [name block-id]
|
|
|
+ (let [data (page-name->tldr! name block-id)
|
|
|
+ [tln set-tln] (rum/use-state nil)]
|
|
|
+ (rum/use-effect!
|
|
|
+ (fn []
|
|
|
+ (when (and tln name)
|
|
|
+ (when-let [^js api (gobj/get tln "api")]
|
|
|
+ (if (empty? block-id)
|
|
|
+ (. api zoomToFit)
|
|
|
+ (do (. api selectShapes block-id)
|
|
|
+ (. api zoomToSelection)))))
|
|
|
+ nil) [name block-id tln])
|
|
|
(when (and name (not-empty (gobj/get data "currentPageId")))
|
|
|
[:div.draw.tldraw.whiteboard.relative.w-full.h-full
|
|
|
{:style {:overscroll-behavior "none"}
|
|
|
@@ -51,8 +59,8 @@
|
|
|
:Breadcrumb breadcrumb
|
|
|
:PageNameLink page-name-link}
|
|
|
:searchHandler (comp clj->js vec search/page-search)
|
|
|
+ :onMount (fn [app] (set-tln ^js app))
|
|
|
:onPersist (fn [app]
|
|
|
(let [document (gobj/get app "serialized")]
|
|
|
(transact-tldr! name document)))
|
|
|
:model data})])))
|
|
|
-
|