|
|
@@ -1,7 +1,9 @@
|
|
|
(ns frontend.components.whiteboard
|
|
|
- (:require [frontend.components.page :as page]
|
|
|
+ (:require [datascript.core :as d]
|
|
|
+ [frontend.components.page :as page]
|
|
|
[frontend.db.model :as model]
|
|
|
[frontend.handler.route :as route-handler]
|
|
|
+ [frontend.handler.whiteboard :refer [create-new-whiteboard-page!]]
|
|
|
[frontend.state :as state]
|
|
|
[frontend.ui :as ui]
|
|
|
[frontend.util :as util]
|
|
|
@@ -22,16 +24,10 @@
|
|
|
(when draw-component
|
|
|
(draw-component name))))
|
|
|
|
|
|
-(defn- get-whiteboard-name-from-route
|
|
|
- [state]
|
|
|
- (let [route-match (first (:rum/args state))]
|
|
|
- (get-in route-match [:parameters :path :name])))
|
|
|
-
|
|
|
(rum/defc dashboard-card
|
|
|
[page-name]
|
|
|
[:a.border.p-4.rounded.text-xl
|
|
|
- {:key page-name
|
|
|
- :on-mouse-down
|
|
|
+ {:on-mouse-down
|
|
|
(fn [e]
|
|
|
(util/stop e)
|
|
|
(route-handler/redirect-to-whiteboard! page-name))} page-name])
|
|
|
@@ -44,27 +40,34 @@
|
|
|
:small? true
|
|
|
:on-click (fn [e]
|
|
|
(util/stop e)
|
|
|
- (route-handler/redirect-to-whiteboard! "new whiteboard")))
|
|
|
+ (route-handler/redirect-to-whiteboard! (d/squuid) true)))
|
|
|
[:div.flex.flex-col.gap-4.py-2
|
|
|
(for [whiteboard-name whiteboard-names]
|
|
|
- (dashboard-card whiteboard-name))]]))
|
|
|
+ [:<> {:key whiteboard-name} (dashboard-card whiteboard-name)])]]))
|
|
|
+
|
|
|
+(rum/defc whiteboard
|
|
|
+ [route-match]
|
|
|
+ (let [name (get-in route-match [:parameters :path :name])
|
|
|
+ new? (get-in route-match [:parameters :query :new?])]
|
|
|
+
|
|
|
+ (rum/use-effect! (fn [_]
|
|
|
+ (when new? (create-new-whiteboard-page! name))
|
|
|
+ nil)
|
|
|
+ [name])
|
|
|
|
|
|
-(rum/defcs whiteboard < rum/reactive
|
|
|
- [state]
|
|
|
- (let [name (get-whiteboard-name-from-route state)]
|
|
|
[:div.absolute.w-full.h-full
|
|
|
|
|
|
;; makes sure the whiteboard will not cover the borders
|
|
|
{:key name
|
|
|
:style {:padding "0.5px" :z-index 0}}
|
|
|
|
|
|
- [:span.inline-flex.absolute.color-level.m-2.px-2
|
|
|
+ [:span.inline-flex.absolute.color-level.text-xl.m-2.px-2
|
|
|
{:key name
|
|
|
- :style {:z-index 2000}}
|
|
|
-
|
|
|
- (page/page-title name
|
|
|
- [:span.text-gray-500.ti.ti-artboard
|
|
|
- {:style {:vertical-align "middle" :font-size "0.9em"}}]
|
|
|
+ :style {:z-index 2000 :color "var(--ls-title-text-color, #222)"}}
|
|
|
+
|
|
|
+ (page/page-title name [:<>
|
|
|
+ [:span.text-gray-500.ti.ti-artboard.mr-1
|
|
|
+ {:style {:font-size "0.9em"}}]]
|
|
|
name nil false)]
|
|
|
|
|
|
(tldraw-app name)]))
|