mirror of https://github.com/logseq/logseq
improve(pdf): display pdf meta info
parent
f288a1a9c3
commit
80ad5949d2
|
@ -468,6 +468,18 @@
|
|||
outline-data)]
|
||||
[:section.is-empty "No outlines"])]])))
|
||||
|
||||
(rum/defc docinfo-display
|
||||
[info]
|
||||
[:div.extensions__pdf-doc-info
|
||||
(for [[k v] info
|
||||
:let [k (pr-str k)]]
|
||||
[:p {:key k} [:strong k] " " [:i (pr-str v)]])])
|
||||
|
||||
(defn make-docinfo-in-modal
|
||||
[info]
|
||||
(fn [close-fn]
|
||||
(docinfo-display info)))
|
||||
|
||||
(rum/defc pdf-toolbar
|
||||
[^js viewer]
|
||||
(let [[outline-visible?, set-outline-visible!] (rum/use-state false)
|
||||
|
@ -508,12 +520,20 @@
|
|||
{:on-click #(set-outline-visible! (not outline-visible?))}
|
||||
(svg/view-list 16)]
|
||||
|
||||
;; metadata
|
||||
[:a.button.is-info
|
||||
{:on-click #(do
|
||||
(p/let [ret (pdf-utils/get-meta-data$ viewer)]
|
||||
(state/set-modal! (make-docinfo-in-modal ret))))}
|
||||
(svg/info)]
|
||||
|
||||
[:a.button
|
||||
{:on-click #(state/set-state! :pdf/current nil)}
|
||||
(t :close)]]]
|
||||
|
||||
;; contents outline
|
||||
(pdf-outline viewer outline-visible? #(set-outline-visible! false))
|
||||
|
||||
;; settings
|
||||
(and settings-visible? (pdf-settings
|
||||
viewer
|
||||
|
|
|
@ -60,7 +60,7 @@
|
|||
height: 42px;
|
||||
z-index: 5;
|
||||
background: linear-gradient(0deg, rgba(255, 255, 255, 0) 3%, rgba(255, 255, 255, 1) 100%);
|
||||
padding: 5px 20px;
|
||||
padding: 8px 20px;
|
||||
|
||||
> .inner {
|
||||
display: flex;
|
||||
|
@ -75,6 +75,10 @@
|
|||
margin-left: 8px;
|
||||
padding: 4px 6px;
|
||||
color: var(--ls-icon-color);
|
||||
|
||||
&.is-info {
|
||||
opacity: .3;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -80,6 +80,21 @@
|
|||
|
||||
(set! (.-currentScale viewer) new-scale)))))
|
||||
|
||||
(defn get-meta-data$
|
||||
[^js viewer]
|
||||
(when-let [^js doc (and viewer (.-pdfDocument viewer))]
|
||||
(p/create
|
||||
(fn [resolve]
|
||||
(p/catch
|
||||
(p/then (.getMetadata doc)
|
||||
(fn [^js r]
|
||||
(js/console.debug "[metadata] " r)
|
||||
(when-let [^js info (and r (.-info r))]
|
||||
(resolve (bean/->clj info)))))
|
||||
(fn [e]
|
||||
(resolve nil)
|
||||
(js/console.error e)))))))
|
||||
|
||||
(defn clear-all-selection
|
||||
[]
|
||||
(.removeAllRanges (js/window.getSelection)))
|
||||
|
|
Loading…
Reference in New Issue