mirror of
https://github.com/overleaf/overleaf.git
synced 2024-09-16 02:52:31 -04:00
7b997f3946
* updated pdf.js to 2.5.207, and added worker-loader as a devDependency * updated pdf.js loaded to load ES5 build instead of the default one * replaced imports with named imports due to changes on pdf.js worker loading There are some hash downgrades in the lockfile. Running the commands through the appropriate methods yields the same result consistency GitOrigin-RevId: 37be3901abf1044d93d83cb684e4e32721550d5a
61 lines
1.7 KiB
JavaScript
61 lines
1.7 KiB
JavaScript
import App from '../../../base'
|
|
import { Util } from './pdfJsLoader'
|
|
const EXTERNAL_LINK_TARGET = '_blank'
|
|
const REL_NOOPENER = 'noreferrer noopener'
|
|
|
|
App.factory('pdfAnnotations', function() {
|
|
class pdfAnnotations {
|
|
constructor(options) {
|
|
this.annotationsLayerDiv = options.annotations
|
|
this.viewport = options.viewport
|
|
this.navigateFn = options.navigateFn
|
|
}
|
|
|
|
setAnnotations(annotations) {
|
|
const result = []
|
|
for (let annotation of annotations) {
|
|
switch (annotation.subtype) {
|
|
case 'Link':
|
|
result.push(this.addLink(annotation))
|
|
break
|
|
case 'Text':
|
|
continue
|
|
default:
|
|
result.push(undefined)
|
|
}
|
|
}
|
|
}
|
|
|
|
addLink(link) {
|
|
const element = this.buildLinkElementFromRect(link.rect)
|
|
this.setLinkTarget(element, link)
|
|
this.annotationsLayerDiv.appendChild(element)
|
|
}
|
|
|
|
buildLinkElementFromRect(rect) {
|
|
rect = this.viewport.convertToViewportRectangle(rect)
|
|
rect = Util.normalizeRect(rect)
|
|
const element = document.createElement('a')
|
|
element.style.left = Math.floor(rect[0]) + 'px'
|
|
element.style.top = Math.floor(rect[1]) + 'px'
|
|
element.style.width = Math.ceil(rect[2] - rect[0]) + 'px'
|
|
element.style.height = Math.ceil(rect[3] - rect[1]) + 'px'
|
|
return element
|
|
}
|
|
|
|
setLinkTarget(element, link) {
|
|
if (link.url) {
|
|
element.href = link.url
|
|
element.target = EXTERNAL_LINK_TARGET
|
|
element.rel = REL_NOOPENER
|
|
} else if (link.dest) {
|
|
element.href = `#${link.dest}`
|
|
element.onclick = () => {
|
|
this.navigateFn(link)
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return pdfAnnotations
|
|
})
|