|
@@ -695,7 +695,6 @@
|
|
|
|
|
|
|
|
(rum/defcs ^:large-vars/cleanup-todo page-inner <
|
|
(rum/defcs ^:large-vars/cleanup-todo page-inner <
|
|
|
(rum/local false ::mouse-down?)
|
|
(rum/local false ::mouse-down?)
|
|
|
- (rum/local false ::hover?)
|
|
|
|
|
"The inner div of page reference component
|
|
"The inner div of page reference component
|
|
|
|
|
|
|
|
page-name-in-block is the overridable name of the page (legacy)
|
|
page-name-in-block is the overridable name of the page (legacy)
|
|
@@ -707,8 +706,7 @@
|
|
|
:or {with-parent? true}
|
|
:or {with-parent? true}
|
|
|
:as config}
|
|
:as config}
|
|
|
page-entity children label]
|
|
page-entity children label]
|
|
|
- (let [*hover? (::hover? state)
|
|
|
|
|
- *mouse-down? (::mouse-down? state)
|
|
|
|
|
|
|
+ (let [*mouse-down? (::mouse-down? state)
|
|
|
tag? (:tag? config)
|
|
tag? (:tag? config)
|
|
|
page-name (when (:block/title page-entity)
|
|
page-name (when (:block/title page-entity)
|
|
|
(util/page-name-sanity-lc (:block/title page-entity)))
|
|
(util/page-name-sanity-lc (:block/title page-entity)))
|
|
@@ -728,8 +726,6 @@
|
|
|
:draggable true
|
|
:draggable true
|
|
|
:on-drag-start (fn [e]
|
|
:on-drag-start (fn [e]
|
|
|
(editor-handler/block->data-transfer! page-name e true))
|
|
(editor-handler/block->data-transfer! page-name e true))
|
|
|
- :on-mouse-over #(reset! *hover? true)
|
|
|
|
|
- :on-mouse-leave #(reset! *hover? false)
|
|
|
|
|
:on-pointer-down (fn [^js e]
|
|
:on-pointer-down (fn [^js e]
|
|
|
(cond
|
|
(cond
|
|
|
(util/link? (.-target e))
|
|
(util/link? (.-target e))
|
|
@@ -833,26 +829,18 @@
|
|
|
(let [*el-trigger (hooks/use-ref nil)]
|
|
(let [*el-trigger (hooks/use-ref nil)]
|
|
|
(hooks/use-effect!
|
|
(hooks/use-effect!
|
|
|
(fn []
|
|
(fn []
|
|
|
- (when-not (state/editing?)
|
|
|
|
|
- (when (true? visible?)
|
|
|
|
|
- (shui/popup-show!
|
|
|
|
|
- (hooks/deref *el-trigger) render
|
|
|
|
|
- {:root-props {:onOpenChange (fn [v] (set-visible! v))
|
|
|
|
|
- :modal false}
|
|
|
|
|
- :content-props {:class "ls-preview-popup"
|
|
|
|
|
- :onInteractOutside (fn [^js e] (.preventDefault e))
|
|
|
|
|
- :onEscapeKeyDown (fn [^js e]
|
|
|
|
|
- (when (state/editing?)
|
|
|
|
|
- (.preventDefault e)
|
|
|
|
|
- (some-> (hooks/deref *el-popup) (.focus))))}
|
|
|
|
|
- :as-dropdown? false}))
|
|
|
|
|
-
|
|
|
|
|
- (when (false? visible?)
|
|
|
|
|
- (shui/popup-hide!)
|
|
|
|
|
- (when (state/get-edit-block)
|
|
|
|
|
- (state/clear-edit!)))
|
|
|
|
|
- (hooks/set-ref! *timer nil)
|
|
|
|
|
- (hooks/set-ref! *timer1 nil))
|
|
|
|
|
|
|
+ (when (true? visible?)
|
|
|
|
|
+ (shui/popup-show!
|
|
|
|
|
+ (hooks/deref *el-trigger) render
|
|
|
|
|
+ {:root-props {:onOpenChange (fn [v] (set-visible! v))
|
|
|
|
|
+ :modal false}
|
|
|
|
|
+ :content-props {:class "ls-preview-popup"
|
|
|
|
|
+ :onInteractOutside (fn [^js e] (.preventDefault e))
|
|
|
|
|
+ :onEscapeKeyDown (fn [^js e]
|
|
|
|
|
+ (when (state/editing?)
|
|
|
|
|
+ (.preventDefault e)
|
|
|
|
|
+ (some-> (hooks/deref *el-popup) (.focus))))}
|
|
|
|
|
+ :as-dropdown? false}))
|
|
|
|
|
|
|
|
;; teardown
|
|
;; teardown
|
|
|
(fn []
|
|
(fn []
|
|
@@ -862,17 +850,17 @@
|
|
|
|
|
|
|
|
[:span.preview-ref-link
|
|
[:span.preview-ref-link
|
|
|
{:ref *el-trigger
|
|
{:ref *el-trigger
|
|
|
- :on-mouse-enter (fn [^js e]
|
|
|
|
|
- (when (= (some-> (.-target e) (.closest ".preview-ref-link"))
|
|
|
|
|
- (hooks/deref *el-trigger))
|
|
|
|
|
- (let [timer (hooks/deref *timer)
|
|
|
|
|
- timer1 (hooks/deref *timer1)]
|
|
|
|
|
- (when-not timer
|
|
|
|
|
- (hooks/set-ref! *timer
|
|
|
|
|
- (js/setTimeout #(set-visible! true) 1000)))
|
|
|
|
|
- (when timer1
|
|
|
|
|
- (js/clearTimeout timer1)
|
|
|
|
|
- (hooks/set-ref! *timer1 nil)))))
|
|
|
|
|
|
|
+ :on-mouse-move (fn [^js e]
|
|
|
|
|
+ (when (= (some-> (.-target e) (.closest ".preview-ref-link"))
|
|
|
|
|
+ (hooks/deref *el-trigger))
|
|
|
|
|
+ (let [timer (hooks/deref *timer)
|
|
|
|
|
+ timer1 (hooks/deref *timer1)]
|
|
|
|
|
+ (when-not timer
|
|
|
|
|
+ (hooks/set-ref! *timer
|
|
|
|
|
+ (js/setTimeout #(set-visible! true) 1000)))
|
|
|
|
|
+ (when timer1
|
|
|
|
|
+ (js/clearTimeout timer1)
|
|
|
|
|
+ (hooks/set-ref! *timer1 nil)))))
|
|
|
:on-mouse-leave (fn []
|
|
:on-mouse-leave (fn []
|
|
|
(let [timer (hooks/deref *timer)
|
|
(let [timer (hooks/deref *timer)
|
|
|
timer1 (hooks/deref *timer1)]
|
|
timer1 (hooks/deref *timer1)]
|
|
@@ -941,8 +929,7 @@
|
|
|
(if (boolean? in-popup?)
|
|
(if (boolean? in-popup?)
|
|
|
(if (and (not (:preview? config))
|
|
(if (and (not (:preview? config))
|
|
|
(not in-popup?)
|
|
(not in-popup?)
|
|
|
- (or (not manual?) open?)
|
|
|
|
|
- (not (state/editing?)))
|
|
|
|
|
|
|
+ (or (not manual?) open?))
|
|
|
(popup-preview-impl children
|
|
(popup-preview-impl children
|
|
|
{:visible? visible? :set-visible! set-visible!
|
|
{:visible? visible? :set-visible! set-visible!
|
|
|
:*timer *timer :*timer1 *timer1
|
|
:*timer *timer :*timer1 *timer1
|