aboutsummaryrefslogtreecommitdiffstats
path: root/web_src/js
diff options
context:
space:
mode:
authorsilverwind <me@silverwind.io>2023-05-29 14:10:00 +0200
committerGitHub <noreply@github.com>2023-05-29 12:10:00 +0000
commite4e98979fff54564f20e451bfdf7b05a7da4f11a (patch)
tree07cd409f5454f81abf19f0dfe6fa9f60ecb8bc04 /web_src/js
parent35ce7ca25b5756441949312d79aa6382f98ce8d6 (diff)
downloadgitea-e4e98979fff54564f20e451bfdf7b05a7da4f11a.tar.gz
gitea-e4e98979fff54564f20e451bfdf7b05a7da4f11a.zip
Add PDF rendering via PDFObject (#24086)
Use [PDFObject](https://pdfobject.com/) to embed PDFs, replacing our outdated PDF.js copy we vendor (the last non-webpack vendoring). [Commit 1](https://github.com/go-gitea/gitea/pull/24086/commits/673e0263da64b72565ff59b990ab1b8e87271872) is the PDFObject integration [Commit 2](https://github.com/go-gitea/gitea/pull/24086/commits/9336f5769d54445bba0e16776164f6a2fe2c32ac) is the removal of PDF.js <img width="1251" alt="Screenshot 2023-05-27 at 09 57 52" src="https://github.com/go-gitea/gitea/assets/115237/169ce50c-bd1d-4bb0-86e5-1710bd0400a9"> <img width="1257" alt="Screenshot 2023-05-27 at 10 12 50" src="https://github.com/go-gitea/gitea/assets/115237/318f7ee9-fb11-4093-83e7-17475aa70629"> Fallback for unsupporting browsers (most mobile ones, except Firefox Mobile): <img width="358" alt="Screenshot 2023-05-27 at 09 43 34" src="https://github.com/go-gitea/gitea/assets/115237/8c12d7ba-57d6-4228-89a0-5fef9fad0cbb"> --------- Co-authored-by: Giteabot <teabot@gitea.io>
Diffstat (limited to 'web_src/js')
-rw-r--r--web_src/js/index.js2
-rw-r--r--web_src/js/render/pdf.js19
2 files changed, 21 insertions, 0 deletions
diff --git a/web_src/js/index.js b/web_src/js/index.js
index a837375b4e..8f4d379893 100644
--- a/web_src/js/index.js
+++ b/web_src/js/index.js
@@ -21,6 +21,7 @@ import {initRepoIssueContentHistory} from './features/repo-issue-content.js';
import {initStopwatch} from './features/stopwatch.js';
import {initFindFileInRepo} from './features/repo-findfile.js';
import {initCommentContent, initMarkupContent} from './markup/content.js';
+import {initPdfViewer} from './render/pdf.js';
import {initUserAuthLinkAccountView, initUserAuthOauth2} from './features/user-auth.js';
import {
@@ -177,4 +178,5 @@ onDomReady(() => {
initUserAuthWebAuthnRegister();
initUserSettings();
initRepoDiffView();
+ initPdfViewer();
});
diff --git a/web_src/js/render/pdf.js b/web_src/js/render/pdf.js
new file mode 100644
index 0000000000..f31f161e6e
--- /dev/null
+++ b/web_src/js/render/pdf.js
@@ -0,0 +1,19 @@
+import {htmlEscape} from 'escape-goat';
+
+export async function initPdfViewer() {
+ const els = document.querySelectorAll('.pdf-content');
+ if (!els.length) return;
+
+ const pdfobject = await import(/* webpackChunkName: "pdfobject" */'pdfobject');
+
+ for (const el of els) {
+ const src = el.getAttribute('data-src');
+ const fallbackText = el.getAttribute('data-fallback-button-text');
+ pdfobject.embed(src, el, {
+ fallbackLink: htmlEscape`
+ <a role="button" class="ui basic button pdf-fallback-button" href="[url]">${fallbackText}</a>
+ `,
+ });
+ el.classList.remove('is-loading');
+ }
+}