fix(pdf): add extern hints for pdfjs apis

This commit is contained in:
charlie
2025-12-15 18:05:32 +08:00
parent 98fad292eb
commit b107535024
3 changed files with 6 additions and 14 deletions

View File

@@ -116,6 +116,8 @@ dummy.bounding = function() {};
dummy.getPageView = function() {}; dummy.getPageView = function() {};
dummy.convertToPdfPoint = function() {}; dummy.convertToPdfPoint = function() {};
dummy.scrollPageIntoView = function() {}; dummy.scrollPageIntoView = function() {};
dummy.textLayer = function() {};
dummy.viewport = function() {};
dummy.convertToViewportRectangle = function() {}; dummy.convertToViewportRectangle = function() {};
dummy.init = function() {}; dummy.init = function() {};
dummy.commit = function() {}; dummy.commit = function() {};

View File

@@ -125,11 +125,6 @@
#(.removeEventListener doc "click" cb))) #(.removeEventListener doc "click" cb)))
[]) [])
;; TODO: precise position
;;(when-let [
;;page-bounding (and highlight (pdf-utils/get-page-bounding viewer (:page highlight)))
;;])
(let [*el (rum/use-ref nil) (let [*el (rum/use-ref nil)
^js cnt (.-container viewer) ^js cnt (.-container viewer)
^js body (some-> (.-ownerDocument cnt) (.-body)) ^js body (some-> (.-ownerDocument cnt) (.-body))

View File

@@ -32,27 +32,22 @@
(defn vw-to-scaled-pos (defn vw-to-scaled-pos
[^js viewer {:keys [page bounding rects]}] [^js viewer {:keys [page bounding rects]}]
(when-let [^js viewport (some-> viewer (.getPageView (dec page)) (.-viewport))] (when-let [^js viewport (some-> viewer ^js (.getPageView (dec page)) (.-viewport))]
{:bounding (viewport-to-scaled bounding viewport) {:bounding (viewport-to-scaled bounding viewport)
:rects (for [rect rects] (viewport-to-scaled rect viewport)) :rects (for [rect rects] (viewport-to-scaled rect viewport))
:page page})) :page page}))
(defn scaled-to-vw-pos (defn scaled-to-vw-pos
[^js viewer {:keys [page bounding rects]}] [^js viewer {:keys [page bounding rects]}]
(when-let [^js viewport (some-> viewer (.getPageView (dec page)) (.-viewport))] (when-let [^js viewport (some-> viewer ^js (.getPageView (dec page)) (.-viewport))]
{:bounding (scaled-to-viewport bounding viewport) {:bounding (scaled-to-viewport bounding viewport)
:rects (for [rect rects] (scaled-to-viewport rect viewport)) :rects (for [rect rects] (scaled-to-viewport rect viewport))
:page page})) :page page}))
(defn get-page-bounding
[^js viewer page-number]
(when-let [^js el (and page-number (.. viewer (getPageView (dec page-number)) -div))]
(bean/->clj (.toJSON (.getBoundingClientRect el)))))
(defn resolve-hls-layer! (defn resolve-hls-layer!
[^js viewer page] [^js viewer page]
(when-let [^js text-layer (some-> viewer (.getPageView (dec page)) (.-textLayer))] (when-let [^js text-layer (some-> viewer ^js (.getPageView (dec page)) (.-textLayer))]
(let [cnt (.-div text-layer) (let [^js cnt (.-div text-layer)
cls "extensions__pdf-hls-layer" cls "extensions__pdf-hls-layer"
doc js/document doc js/document
layer (.querySelector cnt (str "." cls))] layer (.querySelector cnt (str "." cls))]