@@ -25,6 +25,8 @@ SPDX-License-Identifier: AGPL-3.0-or-later
2525 class =" overlay"
2626 @mousemove =" handleMouseMove"
2727 @touchmove =" handleMouseMove"
28+ @click =" handleOverlayClick(docIndex, pIndex, $event)"
29+ @touchend =" handleOverlayClick(docIndex, pIndex, $event)"
2830 >
2931 <div
3032 v-if =" isAddingMode && previewPageDocIndex === docIndex && previewPageIndex === pIndex && previewElement && previewVisible"
@@ -194,6 +196,10 @@ export default {
194196 type: Boolean ,
195197 default: false ,
196198 },
199+ emitObjectClick: {
200+ type: Boolean ,
201+ default: false ,
202+ },
197203 ignoreClickOutsideSelectors: {
198204 type: Array ,
199205 default : () => [],
@@ -651,6 +657,48 @@ export default {
651657 this .previewVisible = true
652658 })
653659 },
660+ handleOverlayClick (docIndex , pageIndex , event ) {
661+ if (! this .emitObjectClick ) return
662+
663+ const { x: clientX , y: clientY } = this .getPointerPosition (event )
664+ if (! Number .isFinite (clientX) || ! Number .isFinite (clientY)) return
665+
666+ this .cachePageBoundsForPage (docIndex, pageIndex)
667+ const pageRect = this .getPageRect (docIndex, pageIndex)
668+ if (! pageRect) return
669+
670+ const pagesScale = this .getDisplayedPageScale (docIndex, pageIndex) || 1
671+ const relX = (clientX - pageRect .left ) / pagesScale
672+ const relY = (clientY - pageRect .top ) / pagesScale
673+
674+ const doc = this .pdfDocuments ? .[docIndex]
675+ const pageObjects = doc? .allObjects ? .[pageIndex] || []
676+ let hitObject = null
677+
678+ for (let i = pageObjects .length - 1 ; i >= 0 ; i-- ) {
679+ const object = pageObjects[i]
680+ const x = Number (object .x )
681+ const y = Number (object .y )
682+ const width = Number (object .width )
683+ const height = Number (object .height )
684+ if (! [x, y, width, height].every (Number .isFinite )) {
685+ continue
686+ }
687+ if (relX >= x && relX <= x + width && relY >= y && relY <= y + height) {
688+ hitObject = object
689+ break
690+ }
691+ }
692+
693+ if (! hitObject) return
694+
695+ this .$emit (' pdf-elements:object-click' , {
696+ docIndex,
697+ pageIndex,
698+ object: hitObject,
699+ event ,
700+ })
701+ },
654702
655703 handleKeyDown (event ) {
656704 if (event .key === ' Escape' && this .isAddingMode ) {
0 commit comments